"use strict";

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; };

/*!
 * jQuery JavaScript Library v2.2.4
 * http://jquery.com/
 *
 * Includes Sizzle.js
 * http://sizzlejs.com/
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license
 * http://jquery.org/license
 *
 * Date: 2016-05-20T17:23Z
 */

(function (global, factory) {

	if ((typeof module === "undefined" ? "undefined" : _typeof(module)) === "object" && _typeof(module.exports) === "object") {
		// For CommonJS and CommonJS-like environments where a proper `window`
		// is present, execute the factory and get jQuery.
		// For environments that do not have a `window` with a `document`
		// (such as Node.js), expose a factory as module.exports.
		// This accentuates the need for the creation of a real `window`.
		// e.g. var jQuery = require("jquery")(window);
		// See ticket #14549 for more info.
		module.exports = global.document ? factory(global, true) : function (w) {
			if (!w.document) {
				throw new Error("jQuery requires a window with a document");
			}
			return factory(w);
		};
	} else {
		factory(global);
	}

	// Pass this if window is not defined yet
})(typeof window !== "undefined" ? window : undefined, function (window, noGlobal) {

	// Support: Firefox 18+
	// Can't be in strict mode, several libs including ASP.NET trace
	// the stack via arguments.caller.callee and Firefox dies if
	// you try to trace through "use strict" call chains. (#13335)
	//"use strict";
	var arr = [];

	var document = window.document;

	var _slice = arr.slice;

	var concat = arr.concat;

	var push = arr.push;

	var indexOf = arr.indexOf;

	var class2type = {};

	var toString = class2type.toString;

	var hasOwn = class2type.hasOwnProperty;

	var support = {};

	var version = "2.2.4",


	// Define a local copy of jQuery
	jQuery = function jQuery(selector, context) {

		// The jQuery object is actually just the init constructor 'enhanced'
		// Need init if jQuery is called (just allow error to be thrown if not included)
		return new jQuery.fn.init(selector, context);
	},


	// Support: Android<4.1
	// Make sure we trim BOM and NBSP
	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,


	// Matches dashed string for camelizing
	rmsPrefix = /^-ms-/,
	    rdashAlpha = /-([\da-z])/gi,


	// Used by jQuery.camelCase as callback to replace()
	fcamelCase = function fcamelCase(all, letter) {
		return letter.toUpperCase();
	};

	jQuery.fn = jQuery.prototype = {

		// The current version of jQuery being used
		jquery: version,

		constructor: jQuery,

		// Start with an empty selector
		selector: "",

		// The default length of a jQuery object is 0
		length: 0,

		toArray: function toArray() {
			return _slice.call(this);
		},

		// Get the Nth element in the matched element set OR
		// Get the whole matched element set as a clean array
		get: function get(num) {
			return num != null ?

			// Return just the one element from the set
			num < 0 ? this[num + this.length] : this[num] :

			// Return all the elements in a clean array
			_slice.call(this);
		},

		// Take an array of elements and push it onto the stack
		// (returning the new matched element set)
		pushStack: function pushStack(elems) {

			// Build a new jQuery matched element set
			var ret = jQuery.merge(this.constructor(), elems);

			// Add the old object onto the stack (as a reference)
			ret.prevObject = this;
			ret.context = this.context;

			// Return the newly-formed element set
			return ret;
		},

		// Execute a callback for every element in the matched set.
		each: function each(callback) {
			return jQuery.each(this, callback);
		},

		map: function map(callback) {
			return this.pushStack(jQuery.map(this, function (elem, i) {
				return callback.call(elem, i, elem);
			}));
		},

		slice: function slice() {
			return this.pushStack(_slice.apply(this, arguments));
		},

		first: function first() {
			return this.eq(0);
		},

		last: function last() {
			return this.eq(-1);
		},

		eq: function eq(i) {
			var len = this.length,
			    j = +i + (i < 0 ? len : 0);
			return this.pushStack(j >= 0 && j < len ? [this[j]] : []);
		},

		end: function end() {
			return this.prevObject || this.constructor();
		},

		// For internal use only.
		// Behaves like an Array's method, not like a jQuery method.
		push: push,
		sort: arr.sort,
		splice: arr.splice
	};

	jQuery.extend = jQuery.fn.extend = function () {
		var options,
		    name,
		    src,
		    copy,
		    copyIsArray,
		    clone,
		    target = arguments[0] || {},
		    i = 1,
		    length = arguments.length,
		    deep = false;

		// Handle a deep copy situation
		if (typeof target === "boolean") {
			deep = target;

			// Skip the boolean and the target
			target = arguments[i] || {};
			i++;
		}

		// Handle case when target is a string or something (possible in deep copy)
		if ((typeof target === "undefined" ? "undefined" : _typeof(target)) !== "object" && !jQuery.isFunction(target)) {
			target = {};
		}

		// Extend jQuery itself if only one argument is passed
		if (i === length) {
			target = this;
			i--;
		}

		for (; i < length; i++) {

			// Only deal with non-null/undefined values
			if ((options = arguments[i]) != null) {

				// Extend the base object
				for (name in options) {
					src = target[name];
					copy = options[name];

					// Prevent never-ending loop
					if (target === copy) {
						continue;
					}

					// Recurse if we're merging plain objects or arrays
					if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)))) {

						if (copyIsArray) {
							copyIsArray = false;
							clone = src && jQuery.isArray(src) ? src : [];
						} else {
							clone = src && jQuery.isPlainObject(src) ? src : {};
						}

						// Never move original objects, clone them
						target[name] = jQuery.extend(deep, clone, copy);

						// Don't bring in undefined values
					} else if (copy !== undefined) {
						target[name] = copy;
					}
				}
			}
		}

		// Return the modified object
		return target;
	};

	jQuery.extend({

		// Unique for each copy of jQuery on the page
		expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""),

		// Assume jQuery is ready without the ready module
		isReady: true,

		error: function error(msg) {
			throw new Error(msg);
		},

		noop: function noop() {},

		isFunction: function isFunction(obj) {
			return jQuery.type(obj) === "function";
		},

		isArray: Array.isArray,

		isWindow: function isWindow(obj) {
			return obj != null && obj === obj.window;
		},

		isNumeric: function isNumeric(obj) {

			// parseFloat NaNs numeric-cast false positives (null|true|false|"")
			// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
			// subtraction forces infinities to NaN
			// adding 1 corrects loss of precision from parseFloat (#15100)
			var realStringObj = obj && obj.toString();
			return !jQuery.isArray(obj) && realStringObj - parseFloat(realStringObj) + 1 >= 0;
		},

		isPlainObject: function isPlainObject(obj) {
			var key;

			// Not plain objects:
			// - Any object or value whose internal [[Class]] property is not "[object Object]"
			// - DOM nodes
			// - window
			if (jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow(obj)) {
				return false;
			}

			// Not own constructor property must be Object
			if (obj.constructor && !hasOwn.call(obj, "constructor") && !hasOwn.call(obj.constructor.prototype || {}, "isPrototypeOf")) {
				return false;
			}

			// Own properties are enumerated firstly, so to speed up,
			// if last one is own, then all properties are own
			for (key in obj) {}

			return key === undefined || hasOwn.call(obj, key);
		},

		isEmptyObject: function isEmptyObject(obj) {
			var name;
			for (name in obj) {
				return false;
			}
			return true;
		},

		type: function type(obj) {
			if (obj == null) {
				return obj + "";
			}

			// Support: Android<4.0, iOS<6 (functionish RegExp)
			return (typeof obj === "undefined" ? "undefined" : _typeof(obj)) === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : typeof obj === "undefined" ? "undefined" : _typeof(obj);
		},

		// Evaluates a script in a global context
		globalEval: function globalEval(code) {
			var script,
			    indirect = eval;

			code = jQuery.trim(code);

			if (code) {

				// If the code includes a valid, prologue position
				// strict mode pragma, execute code by injecting a
				// script tag into the document.
				if (code.indexOf("use strict") === 1) {
					script = document.createElement("script");
					script.text = code;
					document.head.appendChild(script).parentNode.removeChild(script);
				} else {

					// Otherwise, avoid the DOM node creation, insertion
					// and removal by using an indirect global eval

					indirect(code);
				}
			}
		},

		// Convert dashed to camelCase; used by the css and data modules
		// Support: IE9-11+
		// Microsoft forgot to hump their vendor prefix (#9572)
		camelCase: function camelCase(string) {
			return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
		},

		nodeName: function nodeName(elem, name) {
			return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
		},

		each: function each(obj, callback) {
			var length,
			    i = 0;

			if (isArrayLike(obj)) {
				length = obj.length;
				for (; i < length; i++) {
					if (callback.call(obj[i], i, obj[i]) === false) {
						break;
					}
				}
			} else {
				for (i in obj) {
					if (callback.call(obj[i], i, obj[i]) === false) {
						break;
					}
				}
			}

			return obj;
		},

		// Support: Android<4.1
		trim: function trim(text) {
			return text == null ? "" : (text + "").replace(rtrim, "");
		},

		// results is for internal usage only
		makeArray: function makeArray(arr, results) {
			var ret = results || [];

			if (arr != null) {
				if (isArrayLike(Object(arr))) {
					jQuery.merge(ret, typeof arr === "string" ? [arr] : arr);
				} else {
					push.call(ret, arr);
				}
			}

			return ret;
		},

		inArray: function inArray(elem, arr, i) {
			return arr == null ? -1 : indexOf.call(arr, elem, i);
		},

		merge: function merge(first, second) {
			var len = +second.length,
			    j = 0,
			    i = first.length;

			for (; j < len; j++) {
				first[i++] = second[j];
			}

			first.length = i;

			return first;
		},

		grep: function grep(elems, callback, invert) {
			var callbackInverse,
			    matches = [],
			    i = 0,
			    length = elems.length,
			    callbackExpect = !invert;

			// Go through the array, only saving the items
			// that pass the validator function
			for (; i < length; i++) {
				callbackInverse = !callback(elems[i], i);
				if (callbackInverse !== callbackExpect) {
					matches.push(elems[i]);
				}
			}

			return matches;
		},

		// arg is for internal usage only
		map: function map(elems, callback, arg) {
			var length,
			    value,
			    i = 0,
			    ret = [];

			// Go through the array, translating each of the items to their new values
			if (isArrayLike(elems)) {
				length = elems.length;
				for (; i < length; i++) {
					value = callback(elems[i], i, arg);

					if (value != null) {
						ret.push(value);
					}
				}

				// Go through every key on the object,
			} else {
				for (i in elems) {
					value = callback(elems[i], i, arg);

					if (value != null) {
						ret.push(value);
					}
				}
			}

			// Flatten any nested arrays
			return concat.apply([], ret);
		},

		// A global GUID counter for objects
		guid: 1,

		// Bind a function to a context, optionally partially applying any
		// arguments.
		proxy: function proxy(fn, context) {
			var tmp, args, proxy;

			if (typeof context === "string") {
				tmp = fn[context];
				context = fn;
				fn = tmp;
			}

			// Quick check to determine if target is callable, in the spec
			// this throws a TypeError, but we will just return undefined.
			if (!jQuery.isFunction(fn)) {
				return undefined;
			}

			// Simulated bind
			args = _slice.call(arguments, 2);
			proxy = function proxy() {
				return fn.apply(context || this, args.concat(_slice.call(arguments)));
			};

			// Set the guid of unique handler to the same of original handler, so it can be removed
			proxy.guid = fn.guid = fn.guid || jQuery.guid++;

			return proxy;
		},

		now: Date.now,

		// jQuery.support is not used in Core but other projects attach their
		// properties to it so it needs to exist.
		support: support
	});

	// JSHint would error on this code due to the Symbol not being defined in ES5.
	// Defining this global in .jshintrc would create a danger of using the global
	// unguarded in another place, it seems safer to just disable JSHint for these
	// three lines.
	/* jshint ignore: start */
	if (typeof Symbol === "function") {
		jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];
	}
	/* jshint ignore: end */

	// Populate the class2type map
	jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (i, name) {
		class2type["[object " + name + "]"] = name.toLowerCase();
	});

	function isArrayLike(obj) {

		// Support: iOS 8.2 (not reproducible in simulator)
		// `in` check used to prevent JIT error (gh-2145)
		// hasOwn isn't used here due to false negatives
		// regarding Nodelist length in IE
		var length = !!obj && "length" in obj && obj.length,
		    type = jQuery.type(obj);

		if (type === "function" || jQuery.isWindow(obj)) {
			return false;
		}

		return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj;
	}
	var Sizzle =
	/*!
  * Sizzle CSS Selector Engine v2.2.1
  * http://sizzlejs.com/
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license
  * http://jquery.org/license
  *
  * Date: 2015-10-17
  */
	function (window) {

		var i,
		    support,
		    Expr,
		    getText,
		    isXML,
		    tokenize,
		    compile,
		    select,
		    outermostContext,
		    sortInput,
		    hasDuplicate,


		// Local document vars
		setDocument,
		    document,
		    docElem,
		    documentIsHTML,
		    rbuggyQSA,
		    rbuggyMatches,
		    matches,
		    contains,


		// Instance-specific data
		expando = "sizzle" + 1 * new Date(),
		    preferredDoc = window.document,
		    dirruns = 0,
		    done = 0,
		    classCache = createCache(),
		    tokenCache = createCache(),
		    compilerCache = createCache(),
		    sortOrder = function sortOrder(a, b) {
			if (a === b) {
				hasDuplicate = true;
			}
			return 0;
		},


		// General-purpose constants
		MAX_NEGATIVE = 1 << 31,


		// Instance methods
		hasOwn = {}.hasOwnProperty,
		    arr = [],
		    pop = arr.pop,
		    push_native = arr.push,
		    push = arr.push,
		    slice = arr.slice,

		// Use a stripped-down indexOf as it's faster than native
		// http://jsperf.com/thor-indexof-vs-for/5
		indexOf = function indexOf(list, elem) {
			var i = 0,
			    len = list.length;
			for (; i < len; i++) {
				if (list[i] === elem) {
					return i;
				}
			}
			return -1;
		},
		    booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",


		// Regular expressions

		// http://www.w3.org/TR/css3-selectors/#whitespace
		whitespace = "[\\x20\\t\\r\\n\\f]",


		// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
		identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",


		// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
		attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
		// Operator (capture 2)
		"*([*^$|!~]?=)" + whitespace +
		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]",
		    pseudos = ":(" + identifier + ")(?:\\((" +
		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
		// 1. quoted (capture 3; capture 4 or capture 5)
		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
		// 2. simple (capture 6)
		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
		// 3. anything else (capture 2)
		".*" + ")\\)|)",


		// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
		rwhitespace = new RegExp(whitespace + "+", "g"),
		    rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"),
		    rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"),
		    rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"),
		    rattributeQuotes = new RegExp("=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g"),
		    rpseudo = new RegExp(pseudos),
		    ridentifier = new RegExp("^" + identifier + "$"),
		    matchExpr = {
			"ID": new RegExp("^#(" + identifier + ")"),
			"CLASS": new RegExp("^\\.(" + identifier + ")"),
			"TAG": new RegExp("^(" + identifier + "|[*])"),
			"ATTR": new RegExp("^" + attributes),
			"PSEUDO": new RegExp("^" + pseudos),
			"CHILD": new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"),
			"bool": new RegExp("^(?:" + booleans + ")$", "i"),
			// For use in libraries implementing .is()
			// We use this for POS matching in `select`
			"needsContext": new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
		},
		    rinputs = /^(?:input|select|textarea|button)$/i,
		    rheader = /^h\d$/i,
		    rnative = /^[^{]+\{\s*\[native \w/,


		// Easily-parseable/retrievable ID or TAG or CLASS selectors
		rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
		    rsibling = /[+~]/,
		    rescape = /'|\\/g,


		// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
		runescape = new RegExp("\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig"),
		    funescape = function funescape(_, escaped, escapedWhitespace) {
			var high = "0x" + escaped - 0x10000;
			// NaN means non-codepoint
			// Support: Firefox<24
			// Workaround erroneous numeric interpretation of +"0x"
			return high !== high || escapedWhitespace ? escaped : high < 0 ?
			// BMP codepoint
			String.fromCharCode(high + 0x10000) :
			// Supplemental Plane codepoint (surrogate pair)
			String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);
		},


		// Used for iframes
		// See setDocument()
		// Removing the function wrapper causes a "Permission Denied"
		// error in IE
		unloadHandler = function unloadHandler() {
			setDocument();
		};

		// Optimize for push.apply( _, NodeList )
		try {
			push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes);
			// Support: Android<4.0
			// Detect silently failing push.apply
			arr[preferredDoc.childNodes.length].nodeType;
		} catch (e) {
			push = { apply: arr.length ?

				// Leverage slice if possible
				function (target, els) {
					push_native.apply(target, slice.call(els));
				} :

				// Support: IE<9
				// Otherwise append directly
				function (target, els) {
					var j = target.length,
					    i = 0;
					// Can't trust NodeList.length
					while (target[j++] = els[i++]) {}
					target.length = j - 1;
				}
			};
		}

		function Sizzle(selector, context, results, seed) {
			var m,
			    i,
			    elem,
			    nid,
			    nidselect,
			    match,
			    groups,
			    newSelector,
			    newContext = context && context.ownerDocument,


			// nodeType defaults to 9, since context defaults to document
			nodeType = context ? context.nodeType : 9;

			results = results || [];

			// Return early from calls with invalid selector or context
			if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {

				return results;
			}

			// Try to shortcut find operations (as opposed to filters) in HTML documents
			if (!seed) {

				if ((context ? context.ownerDocument || context : preferredDoc) !== document) {
					setDocument(context);
				}
				context = context || document;

				if (documentIsHTML) {

					// If the selector is sufficiently simple, try using a "get*By*" DOM method
					// (excepting DocumentFragment context, where the methods don't exist)
					if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {

						// ID selector
						if (m = match[1]) {

							// Document context
							if (nodeType === 9) {
								if (elem = context.getElementById(m)) {

									// Support: IE, Opera, Webkit
									// TODO: identify versions
									// getElementById can match elements by name instead of ID
									if (elem.id === m) {
										results.push(elem);
										return results;
									}
								} else {
									return results;
								}

								// Element context
							} else {

								// Support: IE, Opera, Webkit
								// TODO: identify versions
								// getElementById can match elements by name instead of ID
								if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {

									results.push(elem);
									return results;
								}
							}

							// Type selector
						} else if (match[2]) {
							push.apply(results, context.getElementsByTagName(selector));
							return results;

							// Class selector
						} else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {

							push.apply(results, context.getElementsByClassName(m));
							return results;
						}
					}

					// Take advantage of querySelectorAll
					if (support.qsa && !compilerCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {

						if (nodeType !== 1) {
							newContext = context;
							newSelector = selector;

							// qSA looks outside Element context, which is not what we want
							// Thanks to Andrew Dupont for this workaround technique
							// Support: IE <=8
							// Exclude object elements
						} else if (context.nodeName.toLowerCase() !== "object") {

							// Capture the context ID, setting it first if necessary
							if (nid = context.getAttribute("id")) {
								nid = nid.replace(rescape, "\\$&");
							} else {
								context.setAttribute("id", nid = expando);
							}

							// Prefix every selector in the list
							groups = tokenize(selector);
							i = groups.length;
							nidselect = ridentifier.test(nid) ? "#" + nid : "[id='" + nid + "']";
							while (i--) {
								groups[i] = nidselect + " " + toSelector(groups[i]);
							}
							newSelector = groups.join(",");

							// Expand context for sibling selectors
							newContext = rsibling.test(selector) && testContext(context.parentNode) || context;
						}

						if (newSelector) {
							try {
								push.apply(results, newContext.querySelectorAll(newSelector));
								return results;
							} catch (qsaError) {} finally {
								if (nid === expando) {
									context.removeAttribute("id");
								}
							}
						}
					}
				}
			}

			// All others
			return select(selector.replace(rtrim, "$1"), context, results, seed);
		}

		/**
   * Create key-value caches of limited size
   * @returns {function(string, object)} Returns the Object data after storing it on itself with
   *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
   *	deleting the oldest entry
   */
		function createCache() {
			var keys = [];

			function cache(key, value) {
				// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
				if (keys.push(key + " ") > Expr.cacheLength) {
					// Only keep the most recent entries
					delete cache[keys.shift()];
				}
				return cache[key + " "] = value;
			}
			return cache;
		}

		/**
   * Mark a function for special use by Sizzle
   * @param {Function} fn The function to mark
   */
		function markFunction(fn) {
			fn[expando] = true;
			return fn;
		}

		/**
   * Support testing using an element
   * @param {Function} fn Passed the created div and expects a boolean result
   */
		function assert(fn) {
			var div = document.createElement("div");

			try {
				return !!fn(div);
			} catch (e) {
				return false;
			} finally {
				// Remove from its parent by default
				if (div.parentNode) {
					div.parentNode.removeChild(div);
				}
				// release memory in IE
				div = null;
			}
		}

		/**
   * Adds the same handler for all of the specified attrs
   * @param {String} attrs Pipe-separated list of attributes
   * @param {Function} handler The method that will be applied
   */
		function addHandle(attrs, handler) {
			var arr = attrs.split("|"),
			    i = arr.length;

			while (i--) {
				Expr.attrHandle[arr[i]] = handler;
			}
		}

		/**
   * Checks document order of two siblings
   * @param {Element} a
   * @param {Element} b
   * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
   */
		function siblingCheck(a, b) {
			var cur = b && a,
			    diff = cur && a.nodeType === 1 && b.nodeType === 1 && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE);

			// Use IE sourceIndex if available on both nodes
			if (diff) {
				return diff;
			}

			// Check if b follows a
			if (cur) {
				while (cur = cur.nextSibling) {
					if (cur === b) {
						return -1;
					}
				}
			}

			return a ? 1 : -1;
		}

		/**
   * Returns a function to use in pseudos for input types
   * @param {String} type
   */
		function createInputPseudo(type) {
			return function (elem) {
				var name = elem.nodeName.toLowerCase();
				return name === "input" && elem.type === type;
			};
		}

		/**
   * Returns a function to use in pseudos for buttons
   * @param {String} type
   */
		function createButtonPseudo(type) {
			return function (elem) {
				var name = elem.nodeName.toLowerCase();
				return (name === "input" || name === "button") && elem.type === type;
			};
		}

		/**
   * Returns a function to use in pseudos for positionals
   * @param {Function} fn
   */
		function createPositionalPseudo(fn) {
			return markFunction(function (argument) {
				argument = +argument;
				return markFunction(function (seed, matches) {
					var j,
					    matchIndexes = fn([], seed.length, argument),
					    i = matchIndexes.length;

					// Match elements found at the specified indexes
					while (i--) {
						if (seed[j = matchIndexes[i]]) {
							seed[j] = !(matches[j] = seed[j]);
						}
					}
				});
			});
		}

		/**
   * Checks a node for validity as a Sizzle context
   * @param {Element|Object=} context
   * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
   */
		function testContext(context) {
			return context && typeof context.getElementsByTagName !== "undefined" && context;
		}

		// Expose support vars for convenience
		support = Sizzle.support = {};

		/**
   * Detects XML nodes
   * @param {Element|Object} elem An element or a document
   * @returns {Boolean} True iff elem is a non-HTML XML node
   */
		isXML = Sizzle.isXML = function (elem) {
			// documentElement is verified for cases where it doesn't yet exist
			// (such as loading iframes in IE - #4833)
			var documentElement = elem && (elem.ownerDocument || elem).documentElement;
			return documentElement ? documentElement.nodeName !== "HTML" : false;
		};

		/**
   * Sets document-related variables once based on the current document
   * @param {Element|Object} [doc] An element or document object to use to set the document
   * @returns {Object} Returns the current document
   */
		setDocument = Sizzle.setDocument = function (node) {
			var hasCompare,
			    parent,
			    doc = node ? node.ownerDocument || node : preferredDoc;

			// Return early if doc is invalid or already selected
			if (doc === document || doc.nodeType !== 9 || !doc.documentElement) {
				return document;
			}

			// Update global variables
			document = doc;
			docElem = document.documentElement;
			documentIsHTML = !isXML(document);

			// Support: IE 9-11, Edge
			// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
			if ((parent = document.defaultView) && parent.top !== parent) {
				// Support: IE 11
				if (parent.addEventListener) {
					parent.addEventListener("unload", unloadHandler, false);

					// Support: IE 9 - 10 only
				} else if (parent.attachEvent) {
					parent.attachEvent("onunload", unloadHandler);
				}
			}

			/* Attributes
   ---------------------------------------------------------------------- */

			// Support: IE<8
			// Verify that getAttribute really returns attributes and not properties
			// (excepting IE8 booleans)
			support.attributes = assert(function (div) {
				div.className = "i";
				return !div.getAttribute("className");
			});

			/* getElement(s)By*
   ---------------------------------------------------------------------- */

			// Check if getElementsByTagName("*") returns only elements
			support.getElementsByTagName = assert(function (div) {
				div.appendChild(document.createComment(""));
				return !div.getElementsByTagName("*").length;
			});

			// Support: IE<9
			support.getElementsByClassName = rnative.test(document.getElementsByClassName);

			// Support: IE<10
			// Check if getElementById returns elements by name
			// The broken getElementById methods don't pick up programatically-set names,
			// so use a roundabout getElementsByName test
			support.getById = assert(function (div) {
				docElem.appendChild(div).id = expando;
				return !document.getElementsByName || !document.getElementsByName(expando).length;
			});

			// ID find and filter
			if (support.getById) {
				Expr.find["ID"] = function (id, context) {
					if (typeof context.getElementById !== "undefined" && documentIsHTML) {
						var m = context.getElementById(id);
						return m ? [m] : [];
					}
				};
				Expr.filter["ID"] = function (id) {
					var attrId = id.replace(runescape, funescape);
					return function (elem) {
						return elem.getAttribute("id") === attrId;
					};
				};
			} else {
				// Support: IE6/7
				// getElementById is not reliable as a find shortcut
				delete Expr.find["ID"];

				Expr.filter["ID"] = function (id) {
					var attrId = id.replace(runescape, funescape);
					return function (elem) {
						var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
						return node && node.value === attrId;
					};
				};
			}

			// Tag
			Expr.find["TAG"] = support.getElementsByTagName ? function (tag, context) {
				if (typeof context.getElementsByTagName !== "undefined") {
					return context.getElementsByTagName(tag);

					// DocumentFragment nodes don't have gEBTN
				} else if (support.qsa) {
					return context.querySelectorAll(tag);
				}
			} : function (tag, context) {
				var elem,
				    tmp = [],
				    i = 0,

				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
				results = context.getElementsByTagName(tag);

				// Filter out possible comments
				if (tag === "*") {
					while (elem = results[i++]) {
						if (elem.nodeType === 1) {
							tmp.push(elem);
						}
					}

					return tmp;
				}
				return results;
			};

			// Class
			Expr.find["CLASS"] = support.getElementsByClassName && function (className, context) {
				if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) {
					return context.getElementsByClassName(className);
				}
			};

			/* QSA/matchesSelector
   ---------------------------------------------------------------------- */

			// QSA and matchesSelector support

			// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
			rbuggyMatches = [];

			// qSa(:focus) reports false when true (Chrome 21)
			// We allow this because of a bug in IE8/9 that throws an error
			// whenever `document.activeElement` is accessed on an iframe
			// So, we allow :focus to pass through QSA all the time to avoid the IE error
			// See http://bugs.jquery.com/ticket/13378
			rbuggyQSA = [];

			if (support.qsa = rnative.test(document.querySelectorAll)) {
				// Build QSA regex
				// Regex strategy adopted from Diego Perini
				assert(function (div) {
					// Select is set to empty string on purpose
					// This is to test IE's treatment of not explicitly
					// setting a boolean content attribute,
					// since its presence should be enough
					// http://bugs.jquery.com/ticket/12359
					docElem.appendChild(div).innerHTML = "<a id='" + expando + "'></a>" + "<select id='" + expando + "-\r\\' msallowcapture=''>" + "<option selected=''></option></select>";

					// Support: IE8, Opera 11-12.16
					// Nothing should be selected when empty strings follow ^= or $= or *=
					// The test attribute must be unknown in Opera but "safe" for WinRT
					// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
					if (div.querySelectorAll("[msallowcapture^='']").length) {
						rbuggyQSA.push("[*^$]=" + whitespace + "*(?:''|\"\")");
					}

					// Support: IE8
					// Boolean attributes and "value" are not treated correctly
					if (!div.querySelectorAll("[selected]").length) {
						rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")");
					}

					// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
					if (!div.querySelectorAll("[id~=" + expando + "-]").length) {
						rbuggyQSA.push("~=");
					}

					// Webkit/Opera - :checked should return selected option elements
					// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
					// IE8 throws error here and will not see later tests
					if (!div.querySelectorAll(":checked").length) {
						rbuggyQSA.push(":checked");
					}

					// Support: Safari 8+, iOS 8+
					// https://bugs.webkit.org/show_bug.cgi?id=136851
					// In-page `selector#id sibing-combinator selector` fails
					if (!div.querySelectorAll("a#" + expando + "+*").length) {
						rbuggyQSA.push(".#.+[+~]");
					}
				});

				assert(function (div) {
					// Support: Windows 8 Native Apps
					// The type and name attributes are restricted during .innerHTML assignment
					var input = document.createElement("input");
					input.setAttribute("type", "hidden");
					div.appendChild(input).setAttribute("name", "D");

					// Support: IE8
					// Enforce case-sensitivity of name attribute
					if (div.querySelectorAll("[name=d]").length) {
						rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?=");
					}

					// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
					// IE8 throws error here and will not see later tests
					if (!div.querySelectorAll(":enabled").length) {
						rbuggyQSA.push(":enabled", ":disabled");
					}

					// Opera 10-11 does not throw on post-comma invalid pseudos
					div.querySelectorAll("*,:x");
					rbuggyQSA.push(",.*:");
				});
			}

			if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {

				assert(function (div) {
					// Check to see if it's possible to do matchesSelector
					// on a disconnected node (IE 9)
					support.disconnectedMatch = matches.call(div, "div");

					// This should fail with an exception
					// Gecko does not error, returns false instead
					matches.call(div, "[s!='']:x");
					rbuggyMatches.push("!=", pseudos);
				});
			}

			rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|"));
			rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|"));

			/* Contains
   ---------------------------------------------------------------------- */
			hasCompare = rnative.test(docElem.compareDocumentPosition);

			// Element contains another
			// Purposefully self-exclusive
			// As in, an element does not contain itself
			contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {
				var adown = a.nodeType === 9 ? a.documentElement : a,
				    bup = b && b.parentNode;
				return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));
			} : function (a, b) {
				if (b) {
					while (b = b.parentNode) {
						if (b === a) {
							return true;
						}
					}
				}
				return false;
			};

			/* Sorting
   ---------------------------------------------------------------------- */

			// Document order sorting
			sortOrder = hasCompare ? function (a, b) {

				// Flag for duplicate removal
				if (a === b) {
					hasDuplicate = true;
					return 0;
				}

				// Sort on method existence if only one input has compareDocumentPosition
				var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
				if (compare) {
					return compare;
				}

				// Calculate position if both inputs belong to the same document
				compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) :

				// Otherwise we know they are disconnected
				1;

				// Disconnected nodes
				if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {

					// Choose the first element that is related to our preferred document
					if (a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a)) {
						return -1;
					}
					if (b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b)) {
						return 1;
					}

					// Maintain original order
					return sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;
				}

				return compare & 4 ? -1 : 1;
			} : function (a, b) {
				// Exit early if the nodes are identical
				if (a === b) {
					hasDuplicate = true;
					return 0;
				}

				var cur,
				    i = 0,
				    aup = a.parentNode,
				    bup = b.parentNode,
				    ap = [a],
				    bp = [b];

				// Parentless nodes are either documents or disconnected
				if (!aup || !bup) {
					return a === document ? -1 : b === document ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;

					// If the nodes are siblings, we can do a quick check
				} else if (aup === bup) {
					return siblingCheck(a, b);
				}

				// Otherwise we need full lists of their ancestors for comparison
				cur = a;
				while (cur = cur.parentNode) {
					ap.unshift(cur);
				}
				cur = b;
				while (cur = cur.parentNode) {
					bp.unshift(cur);
				}

				// Walk down the tree looking for a discrepancy
				while (ap[i] === bp[i]) {
					i++;
				}

				return i ?
				// Do a sibling check if the nodes have a common ancestor
				siblingCheck(ap[i], bp[i]) :

				// Otherwise nodes in our document sort first
				ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0;
			};

			return document;
		};

		Sizzle.matches = function (expr, elements) {
			return Sizzle(expr, null, null, elements);
		};

		Sizzle.matchesSelector = function (elem, expr) {
			// Set document vars if needed
			if ((elem.ownerDocument || elem) !== document) {
				setDocument(elem);
			}

			// Make sure that attribute selectors are quoted
			expr = expr.replace(rattributeQuotes, "='$1']");

			if (support.matchesSelector && documentIsHTML && !compilerCache[expr + " "] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {

				try {
					var ret = matches.call(elem, expr);

					// IE 9's matchesSelector returns false on disconnected nodes
					if (ret || support.disconnectedMatch ||
					// As well, disconnected nodes are said to be in a document
					// fragment in IE 9
					elem.document && elem.document.nodeType !== 11) {
						return ret;
					}
				} catch (e) {}
			}

			return Sizzle(expr, document, null, [elem]).length > 0;
		};

		Sizzle.contains = function (context, elem) {
			// Set document vars if needed
			if ((context.ownerDocument || context) !== document) {
				setDocument(context);
			}
			return contains(context, elem);
		};

		Sizzle.attr = function (elem, name) {
			// Set document vars if needed
			if ((elem.ownerDocument || elem) !== document) {
				setDocument(elem);
			}

			var fn = Expr.attrHandle[name.toLowerCase()],

			// Don't get fooled by Object.prototype properties (jQuery #13807)
			val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;

			return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
		};

		Sizzle.error = function (msg) {
			throw new Error("Syntax error, unrecognized expression: " + msg);
		};

		/**
   * Document sorting and removing duplicates
   * @param {ArrayLike} results
   */
		Sizzle.uniqueSort = function (results) {
			var elem,
			    duplicates = [],
			    j = 0,
			    i = 0;

			// Unless we *know* we can detect duplicates, assume their presence
			hasDuplicate = !support.detectDuplicates;
			sortInput = !support.sortStable && results.slice(0);
			results.sort(sortOrder);

			if (hasDuplicate) {
				while (elem = results[i++]) {
					if (elem === results[i]) {
						j = duplicates.push(i);
					}
				}
				while (j--) {
					results.splice(duplicates[j], 1);
				}
			}

			// Clear input after sorting to release objects
			// See https://github.com/jquery/sizzle/pull/225
			sortInput = null;

			return results;
		};

		/**
   * Utility function for retrieving the text value of an array of DOM nodes
   * @param {Array|Element} elem
   */
		getText = Sizzle.getText = function (elem) {
			var node,
			    ret = "",
			    i = 0,
			    nodeType = elem.nodeType;

			if (!nodeType) {
				// If no nodeType, this is expected to be an array
				while (node = elem[i++]) {
					// Do not traverse comment nodes
					ret += getText(node);
				}
			} else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {
				// Use textContent for elements
				// innerText usage removed for consistency of new lines (jQuery #11153)
				if (typeof elem.textContent === "string") {
					return elem.textContent;
				} else {
					// Traverse its children
					for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
						ret += getText(elem);
					}
				}
			} else if (nodeType === 3 || nodeType === 4) {
				return elem.nodeValue;
			}
			// Do not include comment or processing instruction nodes

			return ret;
		};

		Expr = Sizzle.selectors = {

			// Can be adjusted by the user
			cacheLength: 50,

			createPseudo: markFunction,

			match: matchExpr,

			attrHandle: {},

			find: {},

			relative: {
				">": { dir: "parentNode", first: true },
				" ": { dir: "parentNode" },
				"+": { dir: "previousSibling", first: true },
				"~": { dir: "previousSibling" }
			},

			preFilter: {
				"ATTR": function ATTR(match) {
					match[1] = match[1].replace(runescape, funescape);

					// Move the given value to match[3] whether quoted or unquoted
					match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape);

					if (match[2] === "~=") {
						match[3] = " " + match[3] + " ";
					}

					return match.slice(0, 4);
				},

				"CHILD": function CHILD(match) {
					/* matches from matchExpr["CHILD"]
     	1 type (only|nth|...)
     	2 what (child|of-type)
     	3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
     	4 xn-component of xn+y argument ([+-]?\d*n|)
     	5 sign of xn-component
     	6 x of xn-component
     	7 sign of y-component
     	8 y of y-component
     */
					match[1] = match[1].toLowerCase();

					if (match[1].slice(0, 3) === "nth") {
						// nth-* requires argument
						if (!match[3]) {
							Sizzle.error(match[0]);
						}

						// numeric x and y parameters for Expr.filter.CHILD
						// remember that false/true cast respectively to 0/1
						match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd"));
						match[5] = +(match[7] + match[8] || match[3] === "odd");

						// other types prohibit arguments
					} else if (match[3]) {
						Sizzle.error(match[0]);
					}

					return match;
				},

				"PSEUDO": function PSEUDO(match) {
					var excess,
					    unquoted = !match[6] && match[2];

					if (matchExpr["CHILD"].test(match[0])) {
						return null;
					}

					// Accept quoted arguments as-is
					if (match[3]) {
						match[2] = match[4] || match[5] || "";

						// Strip excess characters from unquoted arguments
					} else if (unquoted && rpseudo.test(unquoted) && (
					// Get excess from tokenize (recursively)
					excess = tokenize(unquoted, true)) && (
					// advance to the next closing parenthesis
					excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) {

						// excess is a negative index
						match[0] = match[0].slice(0, excess);
						match[2] = unquoted.slice(0, excess);
					}

					// Return only captures needed by the pseudo filter method (type and argument)
					return match.slice(0, 3);
				}
			},

			filter: {

				"TAG": function TAG(nodeNameSelector) {
					var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
					return nodeNameSelector === "*" ? function () {
						return true;
					} : function (elem) {
						return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
					};
				},

				"CLASS": function CLASS(className) {
					var pattern = classCache[className + " "];

					return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function (elem) {
						return pattern.test(typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "");
					});
				},

				"ATTR": function ATTR(name, operator, check) {
					return function (elem) {
						var result = Sizzle.attr(elem, name);

						if (result == null) {
							return operator === "!=";
						}
						if (!operator) {
							return true;
						}

						result += "";

						return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf(check) === 0 : operator === "*=" ? check && result.indexOf(check) > -1 : operator === "$=" ? check && result.slice(-check.length) === check : operator === "~=" ? (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1 : operator === "|=" ? result === check || result.slice(0, check.length + 1) === check + "-" : false;
					};
				},

				"CHILD": function CHILD(type, what, argument, first, last) {
					var simple = type.slice(0, 3) !== "nth",
					    forward = type.slice(-4) !== "last",
					    ofType = what === "of-type";

					return first === 1 && last === 0 ?

					// Shortcut for :nth-*(n)
					function (elem) {
						return !!elem.parentNode;
					} : function (elem, context, xml) {
						var cache,
						    uniqueCache,
						    outerCache,
						    node,
						    nodeIndex,
						    start,
						    dir = simple !== forward ? "nextSibling" : "previousSibling",
						    parent = elem.parentNode,
						    name = ofType && elem.nodeName.toLowerCase(),
						    useCache = !xml && !ofType,
						    diff = false;

						if (parent) {

							// :(first|last|only)-(child|of-type)
							if (simple) {
								while (dir) {
									node = elem;
									while (node = node[dir]) {
										if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {

											return false;
										}
									}
									// Reverse direction for :only-* (if we haven't yet done so)
									start = dir = type === "only" && !start && "nextSibling";
								}
								return true;
							}

							start = [forward ? parent.firstChild : parent.lastChild];

							// non-xml :nth-child(...) stores cache data on `parent`
							if (forward && useCache) {

								// Seek `elem` from a previously-cached index

								// ...in a gzip-friendly way
								node = parent;
								outerCache = node[expando] || (node[expando] = {});

								// Support: IE <9 only
								// Defend against cloned attroperties (jQuery gh-1709)
								uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});

								cache = uniqueCache[type] || [];
								nodeIndex = cache[0] === dirruns && cache[1];
								diff = nodeIndex && cache[2];
								node = nodeIndex && parent.childNodes[nodeIndex];

								while (node = ++nodeIndex && node && node[dir] || (

								// Fallback to seeking `elem` from the start
								diff = nodeIndex = 0) || start.pop()) {

									// When found, cache indexes on `parent` and break
									if (node.nodeType === 1 && ++diff && node === elem) {
										uniqueCache[type] = [dirruns, nodeIndex, diff];
										break;
									}
								}
							} else {
								// Use previously-cached element index if available
								if (useCache) {
									// ...in a gzip-friendly way
									node = elem;
									outerCache = node[expando] || (node[expando] = {});

									// Support: IE <9 only
									// Defend against cloned attroperties (jQuery gh-1709)
									uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});

									cache = uniqueCache[type] || [];
									nodeIndex = cache[0] === dirruns && cache[1];
									diff = nodeIndex;
								}

								// xml :nth-child(...)
								// or :nth-last-child(...) or :nth(-last)?-of-type(...)
								if (diff === false) {
									// Use the same loop as above to seek `elem` from the start
									while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {

										if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {

											// Cache the index of each encountered element
											if (useCache) {
												outerCache = node[expando] || (node[expando] = {});

												// Support: IE <9 only
												// Defend against cloned attroperties (jQuery gh-1709)
												uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});

												uniqueCache[type] = [dirruns, diff];
											}

											if (node === elem) {
												break;
											}
										}
									}
								}
							}

							// Incorporate the offset, then check against cycle size
							diff -= last;
							return diff === first || diff % first === 0 && diff / first >= 0;
						}
					};
				},

				"PSEUDO": function PSEUDO(pseudo, argument) {
					// pseudo-class names are case-insensitive
					// http://www.w3.org/TR/selectors/#pseudo-classes
					// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
					// Remember that setFilters inherits from pseudos
					var args,
					    fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error("unsupported pseudo: " + pseudo);

					// The user may use createPseudo to indicate that
					// arguments are needed to create the filter function
					// just as Sizzle does
					if (fn[expando]) {
						return fn(argument);
					}

					// But maintain support for old signatures
					if (fn.length > 1) {
						args = [pseudo, pseudo, "", argument];
						return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {
							var idx,
							    matched = fn(seed, argument),
							    i = matched.length;
							while (i--) {
								idx = indexOf(seed, matched[i]);
								seed[idx] = !(matches[idx] = matched[i]);
							}
						}) : function (elem) {
							return fn(elem, 0, args);
						};
					}

					return fn;
				}
			},

			pseudos: {
				// Potentially complex pseudos
				"not": markFunction(function (selector) {
					// Trim the selector passed to compile
					// to avoid treating leading and trailing
					// spaces as combinators
					var input = [],
					    results = [],
					    matcher = compile(selector.replace(rtrim, "$1"));

					return matcher[expando] ? markFunction(function (seed, matches, context, xml) {
						var elem,
						    unmatched = matcher(seed, null, xml, []),
						    i = seed.length;

						// Match elements unmatched by `matcher`
						while (i--) {
							if (elem = unmatched[i]) {
								seed[i] = !(matches[i] = elem);
							}
						}
					}) : function (elem, context, xml) {
						input[0] = elem;
						matcher(input, null, xml, results);
						// Don't keep the element (issue #299)
						input[0] = null;
						return !results.pop();
					};
				}),

				"has": markFunction(function (selector) {
					return function (elem) {
						return Sizzle(selector, elem).length > 0;
					};
				}),

				"contains": markFunction(function (text) {
					text = text.replace(runescape, funescape);
					return function (elem) {
						return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1;
					};
				}),

				// "Whether an element is represented by a :lang() selector
				// is based solely on the element's language value
				// being equal to the identifier C,
				// or beginning with the identifier C immediately followed by "-".
				// The matching of C against the element's language value is performed case-insensitively.
				// The identifier C does not have to be a valid language name."
				// http://www.w3.org/TR/selectors/#lang-pseudo
				"lang": markFunction(function (lang) {
					// lang value must be a valid identifier
					if (!ridentifier.test(lang || "")) {
						Sizzle.error("unsupported lang: " + lang);
					}
					lang = lang.replace(runescape, funescape).toLowerCase();
					return function (elem) {
						var elemLang;
						do {
							if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) {

								elemLang = elemLang.toLowerCase();
								return elemLang === lang || elemLang.indexOf(lang + "-") === 0;
							}
						} while ((elem = elem.parentNode) && elem.nodeType === 1);
						return false;
					};
				}),

				// Miscellaneous
				"target": function target(elem) {
					var hash = window.location && window.location.hash;
					return hash && hash.slice(1) === elem.id;
				},

				"root": function root(elem) {
					return elem === docElem;
				},

				"focus": function focus(elem) {
					return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
				},

				// Boolean properties
				"enabled": function enabled(elem) {
					return elem.disabled === false;
				},

				"disabled": function disabled(elem) {
					return elem.disabled === true;
				},

				"checked": function checked(elem) {
					// In CSS3, :checked should return both checked and selected elements
					// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
					var nodeName = elem.nodeName.toLowerCase();
					return nodeName === "input" && !!elem.checked || nodeName === "option" && !!elem.selected;
				},

				"selected": function selected(elem) {
					// Accessing this property makes selected-by-default
					// options in Safari work properly
					if (elem.parentNode) {
						elem.parentNode.selectedIndex;
					}

					return elem.selected === true;
				},

				// Contents
				"empty": function empty(elem) {
					// http://www.w3.org/TR/selectors/#empty-pseudo
					// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
					//   but not by others (comment: 8; processing instruction: 7; etc.)
					// nodeType < 6 works because attributes (2) do not appear as children
					for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
						if (elem.nodeType < 6) {
							return false;
						}
					}
					return true;
				},

				"parent": function parent(elem) {
					return !Expr.pseudos["empty"](elem);
				},

				// Element/input types
				"header": function header(elem) {
					return rheader.test(elem.nodeName);
				},

				"input": function input(elem) {
					return rinputs.test(elem.nodeName);
				},

				"button": function button(elem) {
					var name = elem.nodeName.toLowerCase();
					return name === "input" && elem.type === "button" || name === "button";
				},

				"text": function text(elem) {
					var attr;
					return elem.nodeName.toLowerCase() === "input" && elem.type === "text" && (

					// Support: IE<8
					// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
					(attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text");
				},

				// Position-in-collection
				"first": createPositionalPseudo(function () {
					return [0];
				}),

				"last": createPositionalPseudo(function (matchIndexes, length) {
					return [length - 1];
				}),

				"eq": createPositionalPseudo(function (matchIndexes, length, argument) {
					return [argument < 0 ? argument + length : argument];
				}),

				"even": createPositionalPseudo(function (matchIndexes, length) {
					var i = 0;
					for (; i < length; i += 2) {
						matchIndexes.push(i);
					}
					return matchIndexes;
				}),

				"odd": createPositionalPseudo(function (matchIndexes, length) {
					var i = 1;
					for (; i < length; i += 2) {
						matchIndexes.push(i);
					}
					return matchIndexes;
				}),

				"lt": createPositionalPseudo(function (matchIndexes, length, argument) {
					var i = argument < 0 ? argument + length : argument;
					for (; --i >= 0;) {
						matchIndexes.push(i);
					}
					return matchIndexes;
				}),

				"gt": createPositionalPseudo(function (matchIndexes, length, argument) {
					var i = argument < 0 ? argument + length : argument;
					for (; ++i < length;) {
						matchIndexes.push(i);
					}
					return matchIndexes;
				})
			}
		};

		Expr.pseudos["nth"] = Expr.pseudos["eq"];

		// Add button/input type pseudos
		for (i in { radio: true, checkbox: true, file: true, password: true, image: true }) {
			Expr.pseudos[i] = createInputPseudo(i);
		}
		for (i in { submit: true, reset: true }) {
			Expr.pseudos[i] = createButtonPseudo(i);
		}

		// Easy API for creating new setFilters
		function setFilters() {}
		setFilters.prototype = Expr.filters = Expr.pseudos;
		Expr.setFilters = new setFilters();

		tokenize = Sizzle.tokenize = function (selector, parseOnly) {
			var matched,
			    match,
			    tokens,
			    type,
			    soFar,
			    groups,
			    preFilters,
			    cached = tokenCache[selector + " "];

			if (cached) {
				return parseOnly ? 0 : cached.slice(0);
			}

			soFar = selector;
			groups = [];
			preFilters = Expr.preFilter;

			while (soFar) {

				// Comma and first run
				if (!matched || (match = rcomma.exec(soFar))) {
					if (match) {
						// Don't consume trailing commas as valid
						soFar = soFar.slice(match[0].length) || soFar;
					}
					groups.push(tokens = []);
				}

				matched = false;

				// Combinators
				if (match = rcombinators.exec(soFar)) {
					matched = match.shift();
					tokens.push({
						value: matched,
						// Cast descendant combinators to space
						type: match[0].replace(rtrim, " ")
					});
					soFar = soFar.slice(matched.length);
				}

				// Filters
				for (type in Expr.filter) {
					if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {
						matched = match.shift();
						tokens.push({
							value: matched,
							type: type,
							matches: match
						});
						soFar = soFar.slice(matched.length);
					}
				}

				if (!matched) {
					break;
				}
			}

			// Return the length of the invalid excess
			// if we're just parsing
			// Otherwise, throw an error or return tokens
			return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) :
			// Cache the tokens
			tokenCache(selector, groups).slice(0);
		};

		function toSelector(tokens) {
			var i = 0,
			    len = tokens.length,
			    selector = "";
			for (; i < len; i++) {
				selector += tokens[i].value;
			}
			return selector;
		}

		function addCombinator(matcher, combinator, base) {
			var dir = combinator.dir,
			    checkNonElements = base && dir === "parentNode",
			    doneName = done++;

			return combinator.first ?
			// Check against closest ancestor/preceding element
			function (elem, context, xml) {
				while (elem = elem[dir]) {
					if (elem.nodeType === 1 || checkNonElements) {
						return matcher(elem, context, xml);
					}
				}
			} :

			// Check against all ancestor/preceding elements
			function (elem, context, xml) {
				var oldCache,
				    uniqueCache,
				    outerCache,
				    newCache = [dirruns, doneName];

				// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
				if (xml) {
					while (elem = elem[dir]) {
						if (elem.nodeType === 1 || checkNonElements) {
							if (matcher(elem, context, xml)) {
								return true;
							}
						}
					}
				} else {
					while (elem = elem[dir]) {
						if (elem.nodeType === 1 || checkNonElements) {
							outerCache = elem[expando] || (elem[expando] = {});

							// Support: IE <9 only
							// Defend against cloned attroperties (jQuery gh-1709)
							uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});

							if ((oldCache = uniqueCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) {

								// Assign to newCache so results back-propagate to previous elements
								return newCache[2] = oldCache[2];
							} else {
								// Reuse newcache so results back-propagate to previous elements
								uniqueCache[dir] = newCache;

								// A match means we're done; a fail means we have to keep checking
								if (newCache[2] = matcher(elem, context, xml)) {
									return true;
								}
							}
						}
					}
				}
			};
		}

		function elementMatcher(matchers) {
			return matchers.length > 1 ? function (elem, context, xml) {
				var i = matchers.length;
				while (i--) {
					if (!matchers[i](elem, context, xml)) {
						return false;
					}
				}
				return true;
			} : matchers[0];
		}

		function multipleContexts(selector, contexts, results) {
			var i = 0,
			    len = contexts.length;
			for (; i < len; i++) {
				Sizzle(selector, contexts[i], results);
			}
			return results;
		}

		function condense(unmatched, map, filter, context, xml) {
			var elem,
			    newUnmatched = [],
			    i = 0,
			    len = unmatched.length,
			    mapped = map != null;

			for (; i < len; i++) {
				if (elem = unmatched[i]) {
					if (!filter || filter(elem, context, xml)) {
						newUnmatched.push(elem);
						if (mapped) {
							map.push(i);
						}
					}
				}
			}

			return newUnmatched;
		}

		function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
			if (postFilter && !postFilter[expando]) {
				postFilter = setMatcher(postFilter);
			}
			if (postFinder && !postFinder[expando]) {
				postFinder = setMatcher(postFinder, postSelector);
			}
			return markFunction(function (seed, results, context, xml) {
				var temp,
				    i,
				    elem,
				    preMap = [],
				    postMap = [],
				    preexisting = results.length,


				// Get initial elements from seed or context
				elems = seed || multipleContexts(selector || "*", context.nodeType ? [context] : context, []),


				// Prefilter to get matcher input, preserving a map for seed-results synchronization
				matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems,
				    matcherOut = matcher ?
				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
				postFinder || (seed ? preFilter : preexisting || postFilter) ?

				// ...intermediate processing is necessary
				[] :

				// ...otherwise use results directly
				results : matcherIn;

				// Find primary matches
				if (matcher) {
					matcher(matcherIn, matcherOut, context, xml);
				}

				// Apply postFilter
				if (postFilter) {
					temp = condense(matcherOut, postMap);
					postFilter(temp, [], context, xml);

					// Un-match failing elements by moving them back to matcherIn
					i = temp.length;
					while (i--) {
						if (elem = temp[i]) {
							matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);
						}
					}
				}

				if (seed) {
					if (postFinder || preFilter) {
						if (postFinder) {
							// Get the final matcherOut by condensing this intermediate into postFinder contexts
							temp = [];
							i = matcherOut.length;
							while (i--) {
								if (elem = matcherOut[i]) {
									// Restore matcherIn since elem is not yet a final match
									temp.push(matcherIn[i] = elem);
								}
							}
							postFinder(null, matcherOut = [], temp, xml);
						}

						// Move matched elements from seed to results to keep them synchronized
						i = matcherOut.length;
						while (i--) {
							if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) {

								seed[temp] = !(results[temp] = elem);
							}
						}
					}

					// Add elements to results, through postFinder if defined
				} else {
					matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);
					if (postFinder) {
						postFinder(null, results, matcherOut, xml);
					} else {
						push.apply(results, matcherOut);
					}
				}
			});
		}

		function matcherFromTokens(tokens) {
			var checkContext,
			    matcher,
			    j,
			    len = tokens.length,
			    leadingRelative = Expr.relative[tokens[0].type],
			    implicitRelative = leadingRelative || Expr.relative[" "],
			    i = leadingRelative ? 1 : 0,


			// The foundational matcher ensures that elements are reachable from top-level context(s)
			matchContext = addCombinator(function (elem) {
				return elem === checkContext;
			}, implicitRelative, true),
			    matchAnyContext = addCombinator(function (elem) {
				return indexOf(checkContext, elem) > -1;
			}, implicitRelative, true),
			    matchers = [function (elem, context, xml) {
				var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
				// Avoid hanging onto element (issue #299)
				checkContext = null;
				return ret;
			}];

			for (; i < len; i++) {
				if (matcher = Expr.relative[tokens[i].type]) {
					matchers = [addCombinator(elementMatcher(matchers), matcher)];
				} else {
					matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);

					// Return special upon seeing a positional matcher
					if (matcher[expando]) {
						// Find the next relative operator (if any) for proper handling
						j = ++i;
						for (; j < len; j++) {
							if (Expr.relative[tokens[j].type]) {
								break;
							}
						}
						return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(
						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
						tokens.slice(0, i - 1).concat({ value: tokens[i - 2].type === " " ? "*" : "" })).replace(rtrim, "$1"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));
					}
					matchers.push(matcher);
				}
			}

			return elementMatcher(matchers);
		}

		function matcherFromGroupMatchers(elementMatchers, setMatchers) {
			var bySet = setMatchers.length > 0,
			    byElement = elementMatchers.length > 0,
			    superMatcher = function superMatcher(seed, context, xml, results, outermost) {
				var elem,
				    j,
				    matcher,
				    matchedCount = 0,
				    i = "0",
				    unmatched = seed && [],
				    setMatched = [],
				    contextBackup = outermostContext,

				// We must always have either seed elements or outermost context
				elems = seed || byElement && Expr.find["TAG"]("*", outermost),

				// Use integer dirruns iff this is the outermost matcher
				dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,
				    len = elems.length;

				if (outermost) {
					outermostContext = context === document || context || outermost;
				}

				// Add elements passing elementMatchers directly to results
				// Support: IE<9, Safari
				// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
				for (; i !== len && (elem = elems[i]) != null; i++) {
					if (byElement && elem) {
						j = 0;
						if (!context && elem.ownerDocument !== document) {
							setDocument(elem);
							xml = !documentIsHTML;
						}
						while (matcher = elementMatchers[j++]) {
							if (matcher(elem, context || document, xml)) {
								results.push(elem);
								break;
							}
						}
						if (outermost) {
							dirruns = dirrunsUnique;
						}
					}

					// Track unmatched elements for set filters
					if (bySet) {
						// They will have gone through all possible matchers
						if (elem = !matcher && elem) {
							matchedCount--;
						}

						// Lengthen the array for every element, matched or not
						if (seed) {
							unmatched.push(elem);
						}
					}
				}

				// `i` is now the count of elements visited above, and adding it to `matchedCount`
				// makes the latter nonnegative.
				matchedCount += i;

				// Apply set filters to unmatched elements
				// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
				// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
				// no element matchers and no seed.
				// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
				// case, which will result in a "00" `matchedCount` that differs from `i` but is also
				// numerically zero.
				if (bySet && i !== matchedCount) {
					j = 0;
					while (matcher = setMatchers[j++]) {
						matcher(unmatched, setMatched, context, xml);
					}

					if (seed) {
						// Reintegrate element matches to eliminate the need for sorting
						if (matchedCount > 0) {
							while (i--) {
								if (!(unmatched[i] || setMatched[i])) {
									setMatched[i] = pop.call(results);
								}
							}
						}

						// Discard index placeholder values to get only actual matches
						setMatched = condense(setMatched);
					}

					// Add matches to results
					push.apply(results, setMatched);

					// Seedless set matches succeeding multiple successful matchers stipulate sorting
					if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {

						Sizzle.uniqueSort(results);
					}
				}

				// Override manipulation of globals by nested matchers
				if (outermost) {
					dirruns = dirrunsUnique;
					outermostContext = contextBackup;
				}

				return unmatched;
			};

			return bySet ? markFunction(superMatcher) : superMatcher;
		}

		compile = Sizzle.compile = function (selector, match /* Internal Use Only */) {
			var i,
			    setMatchers = [],
			    elementMatchers = [],
			    cached = compilerCache[selector + " "];

			if (!cached) {
				// Generate a function of recursive functions that can be used to check each element
				if (!match) {
					match = tokenize(selector);
				}
				i = match.length;
				while (i--) {
					cached = matcherFromTokens(match[i]);
					if (cached[expando]) {
						setMatchers.push(cached);
					} else {
						elementMatchers.push(cached);
					}
				}

				// Cache the compiled function
				cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));

				// Save selector and tokenization
				cached.selector = selector;
			}
			return cached;
		};

		/**
   * A low-level selection function that works with Sizzle's compiled
   *  selector functions
   * @param {String|Function} selector A selector or a pre-compiled
   *  selector function built with Sizzle.compile
   * @param {Element} context
   * @param {Array} [results]
   * @param {Array} [seed] A set of elements to match against
   */
		select = Sizzle.select = function (selector, context, results, seed) {
			var i,
			    tokens,
			    token,
			    type,
			    find,
			    compiled = typeof selector === "function" && selector,
			    match = !seed && tokenize(selector = compiled.selector || selector);

			results = results || [];

			// Try to minimize operations if there is only one selector in the list and no seed
			// (the latter of which guarantees us context)
			if (match.length === 1) {

				// Reduce context if the leading compound selector is an ID
				tokens = match[0] = match[0].slice(0);
				if (tokens.length > 2 && (token = tokens[0]).type === "ID" && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {

					context = (Expr.find["ID"](token.matches[0].replace(runescape, funescape), context) || [])[0];
					if (!context) {
						return results;

						// Precompiled matchers will still verify ancestry, so step up a level
					} else if (compiled) {
						context = context.parentNode;
					}

					selector = selector.slice(tokens.shift().value.length);
				}

				// Fetch a seed set for right-to-left matching
				i = matchExpr["needsContext"].test(selector) ? 0 : tokens.length;
				while (i--) {
					token = tokens[i];

					// Abort if we hit a combinator
					if (Expr.relative[type = token.type]) {
						break;
					}
					if (find = Expr.find[type]) {
						// Search, expanding context for leading sibling combinators
						if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {

							// If seed is empty or no tokens remain, we can return early
							tokens.splice(i, 1);
							selector = seed.length && toSelector(tokens);
							if (!selector) {
								push.apply(results, seed);
								return results;
							}

							break;
						}
					}
				}
			}

			// Compile and execute a filtering function if one is not provided
			// Provide `match` to avoid retokenization if we modified the selector above
			(compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);
			return results;
		};

		// One-time assignments

		// Sort stability
		support.sortStable = expando.split("").sort(sortOrder).join("") === expando;

		// Support: Chrome 14-35+
		// Always assume duplicates if they aren't passed to the comparison function
		support.detectDuplicates = !!hasDuplicate;

		// Initialize against the default document
		setDocument();

		// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
		// Detached nodes confoundingly follow *each other*
		support.sortDetached = assert(function (div1) {
			// Should return 1, but returns 4 (following)
			return div1.compareDocumentPosition(document.createElement("div")) & 1;
		});

		// Support: IE<8
		// Prevent attribute/property "interpolation"
		// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
		if (!assert(function (div) {
			div.innerHTML = "<a href='#'></a>";
			return div.firstChild.getAttribute("href") === "#";
		})) {
			addHandle("type|href|height|width", function (elem, name, isXML) {
				if (!isXML) {
					return elem.getAttribute(name, name.toLowerCase() === "type" ? 1 : 2);
				}
			});
		}

		// Support: IE<9
		// Use defaultValue in place of getAttribute("value")
		if (!support.attributes || !assert(function (div) {
			div.innerHTML = "<input/>";
			div.firstChild.setAttribute("value", "");
			return div.firstChild.getAttribute("value") === "";
		})) {
			addHandle("value", function (elem, name, isXML) {
				if (!isXML && elem.nodeName.toLowerCase() === "input") {
					return elem.defaultValue;
				}
			});
		}

		// Support: IE<9
		// Use getAttributeNode to fetch booleans when getAttribute lies
		if (!assert(function (div) {
			return div.getAttribute("disabled") == null;
		})) {
			addHandle(booleans, function (elem, name, isXML) {
				var val;
				if (!isXML) {
					return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
				}
			});
		}

		return Sizzle;
	}(window);

	jQuery.find = Sizzle;
	jQuery.expr = Sizzle.selectors;
	jQuery.expr[":"] = jQuery.expr.pseudos;
	jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
	jQuery.text = Sizzle.getText;
	jQuery.isXMLDoc = Sizzle.isXML;
	jQuery.contains = Sizzle.contains;

	var dir = function dir(elem, _dir, until) {
		var matched = [],
		    truncate = until !== undefined;

		while ((elem = elem[_dir]) && elem.nodeType !== 9) {
			if (elem.nodeType === 1) {
				if (truncate && jQuery(elem).is(until)) {
					break;
				}
				matched.push(elem);
			}
		}
		return matched;
	};

	var _siblings = function _siblings(n, elem) {
		var matched = [];

		for (; n; n = n.nextSibling) {
			if (n.nodeType === 1 && n !== elem) {
				matched.push(n);
			}
		}

		return matched;
	};

	var rneedsContext = jQuery.expr.match.needsContext;

	var rsingleTag = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/;

	var risSimple = /^.[^:#\[\.,]*$/;

	// Implement the identical functionality for filter and not
	function winnow(elements, qualifier, not) {
		if (jQuery.isFunction(qualifier)) {
			return jQuery.grep(elements, function (elem, i) {
				/* jshint -W018 */
				return !!qualifier.call(elem, i, elem) !== not;
			});
		}

		if (qualifier.nodeType) {
			return jQuery.grep(elements, function (elem) {
				return elem === qualifier !== not;
			});
		}

		if (typeof qualifier === "string") {
			if (risSimple.test(qualifier)) {
				return jQuery.filter(qualifier, elements, not);
			}

			qualifier = jQuery.filter(qualifier, elements);
		}

		return jQuery.grep(elements, function (elem) {
			return indexOf.call(qualifier, elem) > -1 !== not;
		});
	}

	jQuery.filter = function (expr, elems, not) {
		var elem = elems[0];

		if (not) {
			expr = ":not(" + expr + ")";
		}

		return elems.length === 1 && elem.nodeType === 1 ? jQuery.find.matchesSelector(elem, expr) ? [elem] : [] : jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {
			return elem.nodeType === 1;
		}));
	};

	jQuery.fn.extend({
		find: function find(selector) {
			var i,
			    len = this.length,
			    ret = [],
			    self = this;

			if (typeof selector !== "string") {
				return this.pushStack(jQuery(selector).filter(function () {
					for (i = 0; i < len; i++) {
						if (jQuery.contains(self[i], this)) {
							return true;
						}
					}
				}));
			}

			for (i = 0; i < len; i++) {
				jQuery.find(selector, self[i], ret);
			}

			// Needed because $( selector, context ) becomes $( context ).find( selector )
			ret = this.pushStack(len > 1 ? jQuery.unique(ret) : ret);
			ret.selector = this.selector ? this.selector + " " + selector : selector;
			return ret;
		},
		filter: function filter(selector) {
			return this.pushStack(winnow(this, selector || [], false));
		},
		not: function not(selector) {
			return this.pushStack(winnow(this, selector || [], true));
		},
		is: function is(selector) {
			return !!winnow(this,

			// If this is a positional/relative selector, check membership in the returned set
			// so $("p:first").is("p:last") won't return true for a doc with two "p".
			typeof selector === "string" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;
		}
	});

	// Initialize a jQuery object


	// A central reference to the root jQuery(document)
	var rootjQuery,


	// A simple way to check for HTML strings
	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
	// Strict HTML recognition (#11290: must start with <)
	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
	    init = jQuery.fn.init = function (selector, context, root) {
		var match, elem;

		// HANDLE: $(""), $(null), $(undefined), $(false)
		if (!selector) {
			return this;
		}

		// Method init() accepts an alternate rootjQuery
		// so migrate can support jQuery.sub (gh-2101)
		root = root || rootjQuery;

		// Handle HTML strings
		if (typeof selector === "string") {
			if (selector[0] === "<" && selector[selector.length - 1] === ">" && selector.length >= 3) {

				// Assume that strings that start and end with <> are HTML and skip the regex check
				match = [null, selector, null];
			} else {
				match = rquickExpr.exec(selector);
			}

			// Match html or make sure no context is specified for #id
			if (match && (match[1] || !context)) {

				// HANDLE: $(html) -> $(array)
				if (match[1]) {
					context = context instanceof jQuery ? context[0] : context;

					// Option to run scripts is true for back-compat
					// Intentionally let the error be thrown if parseHTML is not present
					jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true));

					// HANDLE: $(html, props)
					if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {
						for (match in context) {

							// Properties of context are called as methods if possible
							if (jQuery.isFunction(this[match])) {
								this[match](context[match]);

								// ...and otherwise set as attributes
							} else {
								this.attr(match, context[match]);
							}
						}
					}

					return this;

					// HANDLE: $(#id)
				} else {
					elem = document.getElementById(match[2]);

					// Support: Blackberry 4.6
					// gEBID returns nodes no longer in the document (#6963)
					if (elem && elem.parentNode) {

						// Inject the element directly into the jQuery object
						this.length = 1;
						this[0] = elem;
					}

					this.context = document;
					this.selector = selector;
					return this;
				}

				// HANDLE: $(expr, $(...))
			} else if (!context || context.jquery) {
				return (context || root).find(selector);

				// HANDLE: $(expr, context)
				// (which is just equivalent to: $(context).find(expr)
			} else {
				return this.constructor(context).find(selector);
			}

			// HANDLE: $(DOMElement)
		} else if (selector.nodeType) {
			this.context = this[0] = selector;
			this.length = 1;
			return this;

			// HANDLE: $(function)
			// Shortcut for document ready
		} else if (jQuery.isFunction(selector)) {
			return root.ready !== undefined ? root.ready(selector) :

			// Execute immediately if ready is not present
			selector(jQuery);
		}

		if (selector.selector !== undefined) {
			this.selector = selector.selector;
			this.context = selector.context;
		}

		return jQuery.makeArray(selector, this);
	};

	// Give the init function the jQuery prototype for later instantiation
	init.prototype = jQuery.fn;

	// Initialize central reference
	rootjQuery = jQuery(document);

	var rparentsprev = /^(?:parents|prev(?:Until|All))/,


	// Methods guaranteed to produce a unique set when starting from a unique set
	guaranteedUnique = {
		children: true,
		contents: true,
		next: true,
		prev: true
	};

	jQuery.fn.extend({
		has: function has(target) {
			var targets = jQuery(target, this),
			    l = targets.length;

			return this.filter(function () {
				var i = 0;
				for (; i < l; i++) {
					if (jQuery.contains(this, targets[i])) {
						return true;
					}
				}
			});
		},

		closest: function closest(selectors, context) {
			var cur,
			    i = 0,
			    l = this.length,
			    matched = [],
			    pos = rneedsContext.test(selectors) || typeof selectors !== "string" ? jQuery(selectors, context || this.context) : 0;

			for (; i < l; i++) {
				for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {

					// Always skip document fragments
					if (cur.nodeType < 11 && (pos ? pos.index(cur) > -1 :

					// Don't pass non-elements to Sizzle
					cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {

						matched.push(cur);
						break;
					}
				}
			}

			return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);
		},

		// Determine the position of an element within the set
		index: function index(elem) {

			// No argument, return index in parent
			if (!elem) {
				return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
			}

			// Index in selector
			if (typeof elem === "string") {
				return indexOf.call(jQuery(elem), this[0]);
			}

			// Locate the position of the desired element
			return indexOf.call(this,

			// If it receives a jQuery object, the first element is used
			elem.jquery ? elem[0] : elem);
		},

		add: function add(selector, context) {
			return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));
		},

		addBack: function addBack(selector) {
			return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));
		}
	});

	function sibling(cur, dir) {
		while ((cur = cur[dir]) && cur.nodeType !== 1) {}
		return cur;
	}

	jQuery.each({
		parent: function parent(elem) {
			var parent = elem.parentNode;
			return parent && parent.nodeType !== 11 ? parent : null;
		},
		parents: function parents(elem) {
			return dir(elem, "parentNode");
		},
		parentsUntil: function parentsUntil(elem, i, until) {
			return dir(elem, "parentNode", until);
		},
		next: function next(elem) {
			return sibling(elem, "nextSibling");
		},
		prev: function prev(elem) {
			return sibling(elem, "previousSibling");
		},
		nextAll: function nextAll(elem) {
			return dir(elem, "nextSibling");
		},
		prevAll: function prevAll(elem) {
			return dir(elem, "previousSibling");
		},
		nextUntil: function nextUntil(elem, i, until) {
			return dir(elem, "nextSibling", until);
		},
		prevUntil: function prevUntil(elem, i, until) {
			return dir(elem, "previousSibling", until);
		},
		siblings: function siblings(elem) {
			return _siblings((elem.parentNode || {}).firstChild, elem);
		},
		children: function children(elem) {
			return _siblings(elem.firstChild);
		},
		contents: function contents(elem) {
			return elem.contentDocument || jQuery.merge([], elem.childNodes);
		}
	}, function (name, fn) {
		jQuery.fn[name] = function (until, selector) {
			var matched = jQuery.map(this, fn, until);

			if (name.slice(-5) !== "Until") {
				selector = until;
			}

			if (selector && typeof selector === "string") {
				matched = jQuery.filter(selector, matched);
			}

			if (this.length > 1) {

				// Remove duplicates
				if (!guaranteedUnique[name]) {
					jQuery.uniqueSort(matched);
				}

				// Reverse order for parents* and prev-derivatives
				if (rparentsprev.test(name)) {
					matched.reverse();
				}
			}

			return this.pushStack(matched);
		};
	});
	var rnotwhite = /\S+/g;

	// Convert String-formatted options into Object-formatted ones
	function createOptions(options) {
		var object = {};
		jQuery.each(options.match(rnotwhite) || [], function (_, flag) {
			object[flag] = true;
		});
		return object;
	}

	/*
  * Create a callback list using the following parameters:
  *
  *	options: an optional list of space-separated options that will change how
  *			the callback list behaves or a more traditional option object
  *
  * By default a callback list will act like an event callback list and can be
  * "fired" multiple times.
  *
  * Possible options:
  *
  *	once:			will ensure the callback list can only be fired once (like a Deferred)
  *
  *	memory:			will keep track of previous values and will call any callback added
  *					after the list has been fired right away with the latest "memorized"
  *					values (like a Deferred)
  *
  *	unique:			will ensure a callback can only be added once (no duplicate in the list)
  *
  *	stopOnFalse:	interrupt callings when a callback returns false
  *
  */
	jQuery.Callbacks = function (options) {

		// Convert options from String-formatted to Object-formatted if needed
		// (we check in cache first)
		options = typeof options === "string" ? createOptions(options) : jQuery.extend({}, options);

		var // Flag to know if list is currently firing
		firing,


		// Last fire value for non-forgettable lists
		memory,


		// Flag to know if list was already fired
		_fired,


		// Flag to prevent firing
		_locked,


		// Actual callback list
		list = [],


		// Queue of execution data for repeatable lists
		queue = [],


		// Index of currently firing callback (modified by add/remove as needed)
		firingIndex = -1,


		// Fire callbacks
		fire = function fire() {

			// Enforce single-firing
			_locked = options.once;

			// Execute callbacks for all pending executions,
			// respecting firingIndex overrides and runtime changes
			_fired = firing = true;
			for (; queue.length; firingIndex = -1) {
				memory = queue.shift();
				while (++firingIndex < list.length) {

					// Run callback and check for early termination
					if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {

						// Jump to end and forget the data so .add doesn't re-fire
						firingIndex = list.length;
						memory = false;
					}
				}
			}

			// Forget the data if we're done with it
			if (!options.memory) {
				memory = false;
			}

			firing = false;

			// Clean up if we're done firing for good
			if (_locked) {

				// Keep an empty list if we have data for future add calls
				if (memory) {
					list = [];

					// Otherwise, this object is spent
				} else {
					list = "";
				}
			}
		},


		// Actual Callbacks object
		self = {

			// Add a callback or a collection of callbacks to the list
			add: function add() {
				if (list) {

					// If we have memory from a past run, we should fire after adding
					if (memory && !firing) {
						firingIndex = list.length - 1;
						queue.push(memory);
					}

					(function add(args) {
						jQuery.each(args, function (_, arg) {
							if (jQuery.isFunction(arg)) {
								if (!options.unique || !self.has(arg)) {
									list.push(arg);
								}
							} else if (arg && arg.length && jQuery.type(arg) !== "string") {

								// Inspect recursively
								add(arg);
							}
						});
					})(arguments);

					if (memory && !firing) {
						fire();
					}
				}
				return this;
			},

			// Remove a callback from the list
			remove: function remove() {
				jQuery.each(arguments, function (_, arg) {
					var index;
					while ((index = jQuery.inArray(arg, list, index)) > -1) {
						list.splice(index, 1);

						// Handle firing indexes
						if (index <= firingIndex) {
							firingIndex--;
						}
					}
				});
				return this;
			},

			// Check if a given callback is in the list.
			// If no argument is given, return whether or not list has callbacks attached.
			has: function has(fn) {
				return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;
			},

			// Remove all callbacks from the list
			empty: function empty() {
				if (list) {
					list = [];
				}
				return this;
			},

			// Disable .fire and .add
			// Abort any current/pending executions
			// Clear all callbacks and values
			disable: function disable() {
				_locked = queue = [];
				list = memory = "";
				return this;
			},
			disabled: function disabled() {
				return !list;
			},

			// Disable .fire
			// Also disable .add unless we have memory (since it would have no effect)
			// Abort any pending executions
			lock: function lock() {
				_locked = queue = [];
				if (!memory) {
					list = memory = "";
				}
				return this;
			},
			locked: function locked() {
				return !!_locked;
			},

			// Call all callbacks with the given context and arguments
			fireWith: function fireWith(context, args) {
				if (!_locked) {
					args = args || [];
					args = [context, args.slice ? args.slice() : args];
					queue.push(args);
					if (!firing) {
						fire();
					}
				}
				return this;
			},

			// Call all the callbacks with the given arguments
			fire: function fire() {
				self.fireWith(this, arguments);
				return this;
			},

			// To know if the callbacks have already been called at least once
			fired: function fired() {
				return !!_fired;
			}
		};

		return self;
	};

	jQuery.extend({

		Deferred: function Deferred(func) {
			var tuples = [

			// action, add listener, listener list, final state
			["resolve", "done", jQuery.Callbacks("once memory"), "resolved"], ["reject", "fail", jQuery.Callbacks("once memory"), "rejected"], ["notify", "progress", jQuery.Callbacks("memory")]],
			    _state = "pending",
			    _promise = {
				state: function state() {
					return _state;
				},
				always: function always() {
					deferred.done(arguments).fail(arguments);
					return this;
				},
				then: function then() /* fnDone, fnFail, fnProgress */{
					var fns = arguments;
					return jQuery.Deferred(function (newDefer) {
						jQuery.each(tuples, function (i, tuple) {
							var fn = jQuery.isFunction(fns[i]) && fns[i];

							// deferred[ done | fail | progress ] for forwarding actions to newDefer
							deferred[tuple[1]](function () {
								var returned = fn && fn.apply(this, arguments);
								if (returned && jQuery.isFunction(returned.promise)) {
									returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);
								} else {
									newDefer[tuple[0] + "With"](this === _promise ? newDefer.promise() : this, fn ? [returned] : arguments);
								}
							});
						});
						fns = null;
					}).promise();
				},

				// Get a promise for this deferred
				// If obj is provided, the promise aspect is added to the object
				promise: function promise(obj) {
					return obj != null ? jQuery.extend(obj, _promise) : _promise;
				}
			},
			    deferred = {};

			// Keep pipe for back-compat
			_promise.pipe = _promise.then;

			// Add list-specific methods
			jQuery.each(tuples, function (i, tuple) {
				var list = tuple[2],
				    stateString = tuple[3];

				// promise[ done | fail | progress ] = list.add
				_promise[tuple[1]] = list.add;

				// Handle state
				if (stateString) {
					list.add(function () {

						// state = [ resolved | rejected ]
						_state = stateString;

						// [ reject_list | resolve_list ].disable; progress_list.lock
					}, tuples[i ^ 1][2].disable, tuples[2][2].lock);
				}

				// deferred[ resolve | reject | notify ]
				deferred[tuple[0]] = function () {
					deferred[tuple[0] + "With"](this === deferred ? _promise : this, arguments);
					return this;
				};
				deferred[tuple[0] + "With"] = list.fireWith;
			});

			// Make the deferred a promise
			_promise.promise(deferred);

			// Call given func if any
			if (func) {
				func.call(deferred, deferred);
			}

			// All done!
			return deferred;
		},

		// Deferred helper
		when: function when(subordinate /* , ..., subordinateN */) {
			var i = 0,
			    resolveValues = _slice.call(arguments),
			    length = resolveValues.length,


			// the count of uncompleted subordinates
			remaining = length !== 1 || subordinate && jQuery.isFunction(subordinate.promise) ? length : 0,


			// the master Deferred.
			// If resolveValues consist of only a single Deferred, just use that.
			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),


			// Update function for both resolve and progress values
			updateFunc = function updateFunc(i, contexts, values) {
				return function (value) {
					contexts[i] = this;
					values[i] = arguments.length > 1 ? _slice.call(arguments) : value;
					if (values === progressValues) {
						deferred.notifyWith(contexts, values);
					} else if (! --remaining) {
						deferred.resolveWith(contexts, values);
					}
				};
			},
			    progressValues,
			    progressContexts,
			    resolveContexts;

			// Add listeners to Deferred subordinates; treat others as resolved
			if (length > 1) {
				progressValues = new Array(length);
				progressContexts = new Array(length);
				resolveContexts = new Array(length);
				for (; i < length; i++) {
					if (resolveValues[i] && jQuery.isFunction(resolveValues[i].promise)) {
						resolveValues[i].promise().progress(updateFunc(i, progressContexts, progressValues)).done(updateFunc(i, resolveContexts, resolveValues)).fail(deferred.reject);
					} else {
						--remaining;
					}
				}
			}

			// If we're not waiting on anything, resolve the master
			if (!remaining) {
				deferred.resolveWith(resolveContexts, resolveValues);
			}

			return deferred.promise();
		}
	});

	// The deferred used on DOM ready
	var readyList;

	jQuery.fn.ready = function (fn) {

		// Add the callback
		jQuery.ready.promise().done(fn);

		return this;
	};

	jQuery.extend({

		// Is the DOM ready to be used? Set to true once it occurs.
		isReady: false,

		// A counter to track how many items to wait for before
		// the ready event fires. See #6781
		readyWait: 1,

		// Hold (or release) the ready event
		holdReady: function holdReady(hold) {
			if (hold) {
				jQuery.readyWait++;
			} else {
				jQuery.ready(true);
			}
		},

		// Handle when the DOM is ready
		ready: function ready(wait) {

			// Abort if there are pending holds or we're already ready
			if (wait === true ? --jQuery.readyWait : jQuery.isReady) {
				return;
			}

			// Remember that the DOM is ready
			jQuery.isReady = true;

			// If a normal DOM Ready event fired, decrement, and wait if need be
			if (wait !== true && --jQuery.readyWait > 0) {
				return;
			}

			// If there are functions bound, to execute
			readyList.resolveWith(document, [jQuery]);

			// Trigger any bound ready events
			if (jQuery.fn.triggerHandler) {
				jQuery(document).triggerHandler("ready");
				jQuery(document).off("ready");
			}
		}
	});

	/**
  * The ready event handler and self cleanup method
  */
	function completed() {
		document.removeEventListener("DOMContentLoaded", completed);
		window.removeEventListener("load", completed);
		jQuery.ready();
	}

	jQuery.ready.promise = function (obj) {
		if (!readyList) {

			readyList = jQuery.Deferred();

			// Catch cases where $(document).ready() is called
			// after the browser event has already occurred.
			// Support: IE9-10 only
			// Older IE sometimes signals "interactive" too soon
			if (document.readyState === "complete" || document.readyState !== "loading" && !document.documentElement.doScroll) {

				// Handle it asynchronously to allow scripts the opportunity to delay ready
				window.setTimeout(jQuery.ready);
			} else {

				// Use the handy event callback
				document.addEventListener("DOMContentLoaded", completed);

				// A fallback to window.onload, that will always work
				window.addEventListener("load", completed);
			}
		}
		return readyList.promise(obj);
	};

	// Kick off the DOM ready check even if the user does not
	jQuery.ready.promise();

	// Multifunctional method to get and set values of a collection
	// The value/s can optionally be executed if it's a function
	var access = function access(elems, fn, key, value, chainable, emptyGet, raw) {
		var i = 0,
		    len = elems.length,
		    bulk = key == null;

		// Sets many values
		if (jQuery.type(key) === "object") {
			chainable = true;
			for (i in key) {
				access(elems, fn, i, key[i], true, emptyGet, raw);
			}

			// Sets one value
		} else if (value !== undefined) {
			chainable = true;

			if (!jQuery.isFunction(value)) {
				raw = true;
			}

			if (bulk) {

				// Bulk operations run against the entire set
				if (raw) {
					fn.call(elems, value);
					fn = null;

					// ...except when executing function values
				} else {
					bulk = fn;
					fn = function fn(elem, key, value) {
						return bulk.call(jQuery(elem), value);
					};
				}
			}

			if (fn) {
				for (; i < len; i++) {
					fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));
				}
			}
		}

		return chainable ? elems :

		// Gets
		bulk ? fn.call(elems) : len ? fn(elems[0], key) : emptyGet;
	};
	var acceptData = function acceptData(owner) {

		// Accepts only:
		//  - Node
		//    - Node.ELEMENT_NODE
		//    - Node.DOCUMENT_NODE
		//  - Object
		//    - Any
		/* jshint -W018 */
		return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;
	};

	function Data() {
		this.expando = jQuery.expando + Data.uid++;
	}

	Data.uid = 1;

	Data.prototype = {

		register: function register(owner, initial) {
			var value = initial || {};

			// If it is a node unlikely to be stringify-ed or looped over
			// use plain assignment
			if (owner.nodeType) {
				owner[this.expando] = value;

				// Otherwise secure it in a non-enumerable, non-writable property
				// configurability must be true to allow the property to be
				// deleted with the delete operator
			} else {
				Object.defineProperty(owner, this.expando, {
					value: value,
					writable: true,
					configurable: true
				});
			}
			return owner[this.expando];
		},
		cache: function cache(owner) {

			// We can accept data for non-element nodes in modern browsers,
			// but we should not, see #8335.
			// Always return an empty object.
			if (!acceptData(owner)) {
				return {};
			}

			// Check if the owner object already has a cache
			var value = owner[this.expando];

			// If not, create one
			if (!value) {
				value = {};

				// We can accept data for non-element nodes in modern browsers,
				// but we should not, see #8335.
				// Always return an empty object.
				if (acceptData(owner)) {

					// If it is a node unlikely to be stringify-ed or looped over
					// use plain assignment
					if (owner.nodeType) {
						owner[this.expando] = value;

						// Otherwise secure it in a non-enumerable property
						// configurable must be true to allow the property to be
						// deleted when data is removed
					} else {
						Object.defineProperty(owner, this.expando, {
							value: value,
							configurable: true
						});
					}
				}
			}

			return value;
		},
		set: function set(owner, data, value) {
			var prop,
			    cache = this.cache(owner);

			// Handle: [ owner, key, value ] args
			if (typeof data === "string") {
				cache[data] = value;

				// Handle: [ owner, { properties } ] args
			} else {

				// Copy the properties one-by-one to the cache object
				for (prop in data) {
					cache[prop] = data[prop];
				}
			}
			return cache;
		},
		get: function get(owner, key) {
			return key === undefined ? this.cache(owner) : owner[this.expando] && owner[this.expando][key];
		},
		access: function access(owner, key, value) {
			var stored;

			// In cases where either:
			//
			//   1. No key was specified
			//   2. A string key was specified, but no value provided
			//
			// Take the "read" path and allow the get method to determine
			// which value to return, respectively either:
			//
			//   1. The entire cache object
			//   2. The data stored at the key
			//
			if (key === undefined || key && typeof key === "string" && value === undefined) {

				stored = this.get(owner, key);

				return stored !== undefined ? stored : this.get(owner, jQuery.camelCase(key));
			}

			// When the key is not a string, or both a key and value
			// are specified, set or extend (existing objects) with either:
			//
			//   1. An object of properties
			//   2. A key and value
			//
			this.set(owner, key, value);

			// Since the "set" path can have two possible entry points
			// return the expected data based on which path was taken[*]
			return value !== undefined ? value : key;
		},
		remove: function remove(owner, key) {
			var i,
			    name,
			    camel,
			    cache = owner[this.expando];

			if (cache === undefined) {
				return;
			}

			if (key === undefined) {
				this.register(owner);
			} else {

				// Support array or space separated string of keys
				if (jQuery.isArray(key)) {

					// If "name" is an array of keys...
					// When data is initially created, via ("key", "val") signature,
					// keys will be converted to camelCase.
					// Since there is no way to tell _how_ a key was added, remove
					// both plain key and camelCase key. #12786
					// This will only penalize the array argument path.
					name = key.concat(key.map(jQuery.camelCase));
				} else {
					camel = jQuery.camelCase(key);

					// Try the string as a key before any manipulation
					if (key in cache) {
						name = [key, camel];
					} else {

						// If a key with the spaces exists, use it.
						// Otherwise, create an array by matching non-whitespace
						name = camel;
						name = name in cache ? [name] : name.match(rnotwhite) || [];
					}
				}

				i = name.length;

				while (i--) {
					delete cache[name[i]];
				}
			}

			// Remove the expando if there's no more data
			if (key === undefined || jQuery.isEmptyObject(cache)) {

				// Support: Chrome <= 35-45+
				// Webkit & Blink performance suffers when deleting properties
				// from DOM nodes, so set to undefined instead
				// https://code.google.com/p/chromium/issues/detail?id=378607
				if (owner.nodeType) {
					owner[this.expando] = undefined;
				} else {
					delete owner[this.expando];
				}
			}
		},
		hasData: function hasData(owner) {
			var cache = owner[this.expando];
			return cache !== undefined && !jQuery.isEmptyObject(cache);
		}
	};
	var dataPriv = new Data();

	var dataUser = new Data();

	//	Implementation Summary
	//
	//	1. Enforce API surface and semantic compatibility with 1.9.x branch
	//	2. Improve the module's maintainability by reducing the storage
	//		paths to a single mechanism.
	//	3. Use the same single mechanism to support "private" and "user" data.
	//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
	//	5. Avoid exposing implementation details on user objects (eg. expando properties)
	//	6. Provide a clear path for implementation upgrade to WeakMap in 2014

	var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
	    rmultiDash = /[A-Z]/g;

	function dataAttr(elem, key, data) {
		var name;

		// If nothing was found internally, try to fetch any
		// data from the HTML5 data-* attribute
		if (data === undefined && elem.nodeType === 1) {
			name = "data-" + key.replace(rmultiDash, "-$&").toLowerCase();
			data = elem.getAttribute(name);

			if (typeof data === "string") {
				try {
					data = data === "true" ? true : data === "false" ? false : data === "null" ? null :

					// Only convert to a number if it doesn't change the string
					+data + "" === data ? +data : rbrace.test(data) ? jQuery.parseJSON(data) : data;
				} catch (e) {}

				// Make sure we set the data so it isn't changed later
				dataUser.set(elem, key, data);
			} else {
				data = undefined;
			}
		}
		return data;
	}

	jQuery.extend({
		hasData: function hasData(elem) {
			return dataUser.hasData(elem) || dataPriv.hasData(elem);
		},

		data: function data(elem, name, _data) {
			return dataUser.access(elem, name, _data);
		},

		removeData: function removeData(elem, name) {
			dataUser.remove(elem, name);
		},

		// TODO: Now that all calls to _data and _removeData have been replaced
		// with direct calls to dataPriv methods, these can be deprecated.
		_data: function _data(elem, name, data) {
			return dataPriv.access(elem, name, data);
		},

		_removeData: function _removeData(elem, name) {
			dataPriv.remove(elem, name);
		}
	});

	jQuery.fn.extend({
		data: function data(key, value) {
			var i,
			    name,
			    data,
			    elem = this[0],
			    attrs = elem && elem.attributes;

			// Gets all values
			if (key === undefined) {
				if (this.length) {
					data = dataUser.get(elem);

					if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) {
						i = attrs.length;
						while (i--) {

							// Support: IE11+
							// The attrs elements can be null (#14894)
							if (attrs[i]) {
								name = attrs[i].name;
								if (name.indexOf("data-") === 0) {
									name = jQuery.camelCase(name.slice(5));
									dataAttr(elem, name, data[name]);
								}
							}
						}
						dataPriv.set(elem, "hasDataAttrs", true);
					}
				}

				return data;
			}

			// Sets multiple values
			if ((typeof key === "undefined" ? "undefined" : _typeof(key)) === "object") {
				return this.each(function () {
					dataUser.set(this, key);
				});
			}

			return access(this, function (value) {
				var data, camelKey;

				// The calling jQuery object (element matches) is not empty
				// (and therefore has an element appears at this[ 0 ]) and the
				// `value` parameter was not undefined. An empty jQuery object
				// will result in `undefined` for elem = this[ 0 ] which will
				// throw an exception if an attempt to read a data cache is made.
				if (elem && value === undefined) {

					// Attempt to get data from the cache
					// with the key as-is
					data = dataUser.get(elem, key) ||

					// Try to find dashed key if it exists (gh-2779)
					// This is for 2.2.x only
					dataUser.get(elem, key.replace(rmultiDash, "-$&").toLowerCase());

					if (data !== undefined) {
						return data;
					}

					camelKey = jQuery.camelCase(key);

					// Attempt to get data from the cache
					// with the key camelized
					data = dataUser.get(elem, camelKey);
					if (data !== undefined) {
						return data;
					}

					// Attempt to "discover" the data in
					// HTML5 custom data-* attrs
					data = dataAttr(elem, camelKey, undefined);
					if (data !== undefined) {
						return data;
					}

					// We tried really hard, but the data doesn't exist.
					return;
				}

				// Set the data...
				camelKey = jQuery.camelCase(key);
				this.each(function () {

					// First, attempt to store a copy or reference of any
					// data that might've been store with a camelCased key.
					var data = dataUser.get(this, camelKey);

					// For HTML5 data-* attribute interop, we have to
					// store property names with dashes in a camelCase form.
					// This might not apply to all properties...*
					dataUser.set(this, camelKey, value);

					// *... In the case of properties that might _actually_
					// have dashes, we need to also store a copy of that
					// unchanged property.
					if (key.indexOf("-") > -1 && data !== undefined) {
						dataUser.set(this, key, value);
					}
				});
			}, null, value, arguments.length > 1, null, true);
		},

		removeData: function removeData(key) {
			return this.each(function () {
				dataUser.remove(this, key);
			});
		}
	});

	jQuery.extend({
		queue: function queue(elem, type, data) {
			var queue;

			if (elem) {
				type = (type || "fx") + "queue";
				queue = dataPriv.get(elem, type);

				// Speed up dequeue by getting out quickly if this is just a lookup
				if (data) {
					if (!queue || jQuery.isArray(data)) {
						queue = dataPriv.access(elem, type, jQuery.makeArray(data));
					} else {
						queue.push(data);
					}
				}
				return queue || [];
			}
		},

		dequeue: function dequeue(elem, type) {
			type = type || "fx";

			var queue = jQuery.queue(elem, type),
			    startLength = queue.length,
			    fn = queue.shift(),
			    hooks = jQuery._queueHooks(elem, type),
			    next = function next() {
				jQuery.dequeue(elem, type);
			};

			// If the fx queue is dequeued, always remove the progress sentinel
			if (fn === "inprogress") {
				fn = queue.shift();
				startLength--;
			}

			if (fn) {

				// Add a progress sentinel to prevent the fx queue from being
				// automatically dequeued
				if (type === "fx") {
					queue.unshift("inprogress");
				}

				// Clear up the last queue stop function
				delete hooks.stop;
				fn.call(elem, next, hooks);
			}

			if (!startLength && hooks) {
				hooks.empty.fire();
			}
		},

		// Not public - generate a queueHooks object, or return the current one
		_queueHooks: function _queueHooks(elem, type) {
			var key = type + "queueHooks";
			return dataPriv.get(elem, key) || dataPriv.access(elem, key, {
				empty: jQuery.Callbacks("once memory").add(function () {
					dataPriv.remove(elem, [type + "queue", key]);
				})
			});
		}
	});

	jQuery.fn.extend({
		queue: function queue(type, data) {
			var setter = 2;

			if (typeof type !== "string") {
				data = type;
				type = "fx";
				setter--;
			}

			if (arguments.length < setter) {
				return jQuery.queue(this[0], type);
			}

			return data === undefined ? this : this.each(function () {
				var queue = jQuery.queue(this, type, data);

				// Ensure a hooks for this queue
				jQuery._queueHooks(this, type);

				if (type === "fx" && queue[0] !== "inprogress") {
					jQuery.dequeue(this, type);
				}
			});
		},
		dequeue: function dequeue(type) {
			return this.each(function () {
				jQuery.dequeue(this, type);
			});
		},
		clearQueue: function clearQueue(type) {
			return this.queue(type || "fx", []);
		},

		// Get a promise resolved when queues of a certain type
		// are emptied (fx is the type by default)
		promise: function promise(type, obj) {
			var tmp,
			    count = 1,
			    defer = jQuery.Deferred(),
			    elements = this,
			    i = this.length,
			    resolve = function resolve() {
				if (! --count) {
					defer.resolveWith(elements, [elements]);
				}
			};

			if (typeof type !== "string") {
				obj = type;
				type = undefined;
			}
			type = type || "fx";

			while (i--) {
				tmp = dataPriv.get(elements[i], type + "queueHooks");
				if (tmp && tmp.empty) {
					count++;
					tmp.empty.add(resolve);
				}
			}
			resolve();
			return defer.promise(obj);
		}
	});
	var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;

	var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i");

	var cssExpand = ["Top", "Right", "Bottom", "Left"];

	var isHidden = function isHidden(elem, el) {

		// isHidden might be called from jQuery#filter function;
		// in that case, element will be second argument
		elem = el || elem;
		return jQuery.css(elem, "display") === "none" || !jQuery.contains(elem.ownerDocument, elem);
	};

	function adjustCSS(elem, prop, valueParts, tween) {
		var adjusted,
		    scale = 1,
		    maxIterations = 20,
		    currentValue = tween ? function () {
			return tween.cur();
		} : function () {
			return jQuery.css(elem, prop, "");
		},
		    initial = currentValue(),
		    unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? "" : "px"),


		// Starting value computation is required for potential unit mismatches
		initialInUnit = (jQuery.cssNumber[prop] || unit !== "px" && +initial) && rcssNum.exec(jQuery.css(elem, prop));

		if (initialInUnit && initialInUnit[3] !== unit) {

			// Trust units reported by jQuery.css
			unit = unit || initialInUnit[3];

			// Make sure we update the tween properties later on
			valueParts = valueParts || [];

			// Iteratively approximate from a nonzero starting point
			initialInUnit = +initial || 1;

			do {

				// If previous iteration zeroed out, double until we get *something*.
				// Use string for doubling so we don't accidentally see scale as unchanged below
				scale = scale || ".5";

				// Adjust and apply
				initialInUnit = initialInUnit / scale;
				jQuery.style(elem, prop, initialInUnit + unit);

				// Update scale, tolerating zero or NaN from tween.cur()
				// Break the loop if scale is unchanged or perfect, or if we've just had enough.
			} while (scale !== (scale = currentValue() / initial) && scale !== 1 && --maxIterations);
		}

		if (valueParts) {
			initialInUnit = +initialInUnit || +initial || 0;

			// Apply relative offset (+=/-=) if specified
			adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];
			if (tween) {
				tween.unit = unit;
				tween.start = initialInUnit;
				tween.end = adjusted;
			}
		}
		return adjusted;
	}
	var rcheckableType = /^(?:checkbox|radio)$/i;

	var rtagName = /<([\w:-]+)/;

	var rscriptType = /^$|\/(?:java|ecma)script/i;

	// We have to close these tags to support XHTML (#13200)
	var wrapMap = {

		// Support: IE9
		option: [1, "<select multiple='multiple'>", "</select>"],

		// XHTML parsers do not magically insert elements in the
		// same way that tag soup parsers do. So we cannot shorten
		// this by omitting <tbody> or other required elements.
		thead: [1, "<table>", "</table>"],
		col: [2, "<table><colgroup>", "</colgroup></table>"],
		tr: [2, "<table><tbody>", "</tbody></table>"],
		td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],

		_default: [0, "", ""]
	};

	// Support: IE9
	wrapMap.optgroup = wrapMap.option;

	wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
	wrapMap.th = wrapMap.td;

	function getAll(context, tag) {

		// Support: IE9-11+
		// Use typeof to avoid zero-argument method invocation on host objects (#15151)
		var ret = typeof context.getElementsByTagName !== "undefined" ? context.getElementsByTagName(tag || "*") : typeof context.querySelectorAll !== "undefined" ? context.querySelectorAll(tag || "*") : [];

		return tag === undefined || tag && jQuery.nodeName(context, tag) ? jQuery.merge([context], ret) : ret;
	}

	// Mark scripts as having already been evaluated
	function setGlobalEval(elems, refElements) {
		var i = 0,
		    l = elems.length;

		for (; i < l; i++) {
			dataPriv.set(elems[i], "globalEval", !refElements || dataPriv.get(refElements[i], "globalEval"));
		}
	}

	var rhtml = /<|&#?\w+;/;

	function buildFragment(elems, context, scripts, selection, ignored) {
		var elem,
		    tmp,
		    tag,
		    wrap,
		    contains,
		    j,
		    fragment = context.createDocumentFragment(),
		    nodes = [],
		    i = 0,
		    l = elems.length;

		for (; i < l; i++) {
			elem = elems[i];

			if (elem || elem === 0) {

				// Add nodes directly
				if (jQuery.type(elem) === "object") {

					// Support: Android<4.1, PhantomJS<2
					// push.apply(_, arraylike) throws on ancient WebKit
					jQuery.merge(nodes, elem.nodeType ? [elem] : elem);

					// Convert non-html into a text node
				} else if (!rhtml.test(elem)) {
					nodes.push(context.createTextNode(elem));

					// Convert html into DOM nodes
				} else {
					tmp = tmp || fragment.appendChild(context.createElement("div"));

					// Deserialize a standard representation
					tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase();
					wrap = wrapMap[tag] || wrapMap._default;
					tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];

					// Descend through wrappers to the right content
					j = wrap[0];
					while (j--) {
						tmp = tmp.lastChild;
					}

					// Support: Android<4.1, PhantomJS<2
					// push.apply(_, arraylike) throws on ancient WebKit
					jQuery.merge(nodes, tmp.childNodes);

					// Remember the top-level container
					tmp = fragment.firstChild;

					// Ensure the created nodes are orphaned (#12392)
					tmp.textContent = "";
				}
			}
		}

		// Remove wrapper from fragment
		fragment.textContent = "";

		i = 0;
		while (elem = nodes[i++]) {

			// Skip elements already in the context collection (trac-4087)
			if (selection && jQuery.inArray(elem, selection) > -1) {
				if (ignored) {
					ignored.push(elem);
				}
				continue;
			}

			contains = jQuery.contains(elem.ownerDocument, elem);

			// Append to fragment
			tmp = getAll(fragment.appendChild(elem), "script");

			// Preserve script evaluation history
			if (contains) {
				setGlobalEval(tmp);
			}

			// Capture executables
			if (scripts) {
				j = 0;
				while (elem = tmp[j++]) {
					if (rscriptType.test(elem.type || "")) {
						scripts.push(elem);
					}
				}
			}
		}

		return fragment;
	}

	(function () {
		var fragment = document.createDocumentFragment(),
		    div = fragment.appendChild(document.createElement("div")),
		    input = document.createElement("input");

		// Support: Android 4.0-4.3, Safari<=5.1
		// Check state lost if the name is set (#11217)
		// Support: Windows Web Apps (WWA)
		// `name` and `type` must use .setAttribute for WWA (#14901)
		input.setAttribute("type", "radio");
		input.setAttribute("checked", "checked");
		input.setAttribute("name", "t");

		div.appendChild(input);

		// Support: Safari<=5.1, Android<4.2
		// Older WebKit doesn't clone checked state correctly in fragments
		support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;

		// Support: IE<=11+
		// Make sure textarea (and checkbox) defaultValue is properly cloned
		div.innerHTML = "<textarea>x</textarea>";
		support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;
	})();

	var rkeyEvent = /^key/,
	    rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
	    rtypenamespace = /^([^.]*)(?:\.(.+)|)/;

	function returnTrue() {
		return true;
	}

	function returnFalse() {
		return false;
	}

	// Support: IE9
	// See #13393 for more info
	function safeActiveElement() {
		try {
			return document.activeElement;
		} catch (err) {}
	}

	function _on(elem, types, selector, data, fn, one) {
		var origFn, type;

		// Types can be a map of types/handlers
		if ((typeof types === "undefined" ? "undefined" : _typeof(types)) === "object") {

			// ( types-Object, selector, data )
			if (typeof selector !== "string") {

				// ( types-Object, data )
				data = data || selector;
				selector = undefined;
			}
			for (type in types) {
				_on(elem, type, selector, data, types[type], one);
			}
			return elem;
		}

		if (data == null && fn == null) {

			// ( types, fn )
			fn = selector;
			data = selector = undefined;
		} else if (fn == null) {
			if (typeof selector === "string") {

				// ( types, selector, fn )
				fn = data;
				data = undefined;
			} else {

				// ( types, data, fn )
				fn = data;
				data = selector;
				selector = undefined;
			}
		}
		if (fn === false) {
			fn = returnFalse;
		} else if (!fn) {
			return elem;
		}

		if (one === 1) {
			origFn = fn;
			fn = function fn(event) {

				// Can use an empty set, since event contains the info
				jQuery().off(event);
				return origFn.apply(this, arguments);
			};

			// Use same guid so caller can remove using origFn
			fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);
		}
		return elem.each(function () {
			jQuery.event.add(this, types, fn, data, selector);
		});
	}

	/*
  * Helper functions for managing events -- not part of the public interface.
  * Props to Dean Edwards' addEvent library for many of the ideas.
  */
	jQuery.event = {

		global: {},

		add: function add(elem, types, handler, data, selector) {

			var handleObjIn,
			    eventHandle,
			    tmp,
			    events,
			    t,
			    handleObj,
			    special,
			    handlers,
			    type,
			    namespaces,
			    origType,
			    elemData = dataPriv.get(elem);

			// Don't attach events to noData or text/comment nodes (but allow plain objects)
			if (!elemData) {
				return;
			}

			// Caller can pass in an object of custom data in lieu of the handler
			if (handler.handler) {
				handleObjIn = handler;
				handler = handleObjIn.handler;
				selector = handleObjIn.selector;
			}

			// Make sure that the handler has a unique ID, used to find/remove it later
			if (!handler.guid) {
				handler.guid = jQuery.guid++;
			}

			// Init the element's event structure and main handler, if this is the first
			if (!(events = elemData.events)) {
				events = elemData.events = {};
			}
			if (!(eventHandle = elemData.handle)) {
				eventHandle = elemData.handle = function (e) {

					// Discard the second event of a jQuery.event.trigger() and
					// when an event is called after a page has unloaded
					return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;
				};
			}

			// Handle multiple events separated by a space
			types = (types || "").match(rnotwhite) || [""];
			t = types.length;
			while (t--) {
				tmp = rtypenamespace.exec(types[t]) || [];
				type = origType = tmp[1];
				namespaces = (tmp[2] || "").split(".").sort();

				// There *must* be a type, no attaching namespace-only handlers
				if (!type) {
					continue;
				}

				// If event changes its type, use the special event handlers for the changed type
				special = jQuery.event.special[type] || {};

				// If selector defined, determine special event api type, otherwise given type
				type = (selector ? special.delegateType : special.bindType) || type;

				// Update special based on newly reset type
				special = jQuery.event.special[type] || {};

				// handleObj is passed to all event handlers
				handleObj = jQuery.extend({
					type: type,
					origType: origType,
					data: data,
					handler: handler,
					guid: handler.guid,
					selector: selector,
					needsContext: selector && jQuery.expr.match.needsContext.test(selector),
					namespace: namespaces.join(".")
				}, handleObjIn);

				// Init the event handler queue if we're the first
				if (!(handlers = events[type])) {
					handlers = events[type] = [];
					handlers.delegateCount = 0;

					// Only use addEventListener if the special events handler returns false
					if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {

						if (elem.addEventListener) {
							elem.addEventListener(type, eventHandle);
						}
					}
				}

				if (special.add) {
					special.add.call(elem, handleObj);

					if (!handleObj.handler.guid) {
						handleObj.handler.guid = handler.guid;
					}
				}

				// Add to the element's handler list, delegates in front
				if (selector) {
					handlers.splice(handlers.delegateCount++, 0, handleObj);
				} else {
					handlers.push(handleObj);
				}

				// Keep track of which events have ever been used, for event optimization
				jQuery.event.global[type] = true;
			}
		},

		// Detach an event or set of events from an element
		remove: function remove(elem, types, handler, selector, mappedTypes) {

			var j,
			    origCount,
			    tmp,
			    events,
			    t,
			    handleObj,
			    special,
			    handlers,
			    type,
			    namespaces,
			    origType,
			    elemData = dataPriv.hasData(elem) && dataPriv.get(elem);

			if (!elemData || !(events = elemData.events)) {
				return;
			}

			// Once for each type.namespace in types; type may be omitted
			types = (types || "").match(rnotwhite) || [""];
			t = types.length;
			while (t--) {
				tmp = rtypenamespace.exec(types[t]) || [];
				type = origType = tmp[1];
				namespaces = (tmp[2] || "").split(".").sort();

				// Unbind all events (on this namespace, if provided) for the element
				if (!type) {
					for (type in events) {
						jQuery.event.remove(elem, type + types[t], handler, selector, true);
					}
					continue;
				}

				special = jQuery.event.special[type] || {};
				type = (selector ? special.delegateType : special.bindType) || type;
				handlers = events[type] || [];
				tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)");

				// Remove matching events
				origCount = j = handlers.length;
				while (j--) {
					handleObj = handlers[j];

					if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === "**" && handleObj.selector)) {
						handlers.splice(j, 1);

						if (handleObj.selector) {
							handlers.delegateCount--;
						}
						if (special.remove) {
							special.remove.call(elem, handleObj);
						}
					}
				}

				// Remove generic event handler if we removed something and no more handlers exist
				// (avoids potential for endless recursion during removal of special event handlers)
				if (origCount && !handlers.length) {
					if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {

						jQuery.removeEvent(elem, type, elemData.handle);
					}

					delete events[type];
				}
			}

			// Remove data and the expando if it's no longer used
			if (jQuery.isEmptyObject(events)) {
				dataPriv.remove(elem, "handle events");
			}
		},

		dispatch: function dispatch(event) {

			// Make a writable jQuery.Event from the native event object
			event = jQuery.event.fix(event);

			var i,
			    j,
			    ret,
			    matched,
			    handleObj,
			    handlerQueue = [],
			    args = _slice.call(arguments),
			    handlers = (dataPriv.get(this, "events") || {})[event.type] || [],
			    special = jQuery.event.special[event.type] || {};

			// Use the fix-ed jQuery.Event rather than the (read-only) native event
			args[0] = event;
			event.delegateTarget = this;

			// Call the preDispatch hook for the mapped type, and let it bail if desired
			if (special.preDispatch && special.preDispatch.call(this, event) === false) {
				return;
			}

			// Determine handlers
			handlerQueue = jQuery.event.handlers.call(this, event, handlers);

			// Run delegates first; they may want to stop propagation beneath us
			i = 0;
			while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {
				event.currentTarget = matched.elem;

				j = 0;
				while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {

					// Triggered event must either 1) have no namespace, or 2) have namespace(s)
					// a subset or equal to those in the bound event (both can have no namespace).
					if (!event.rnamespace || event.rnamespace.test(handleObj.namespace)) {

						event.handleObj = handleObj;
						event.data = handleObj.data;

						ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);

						if (ret !== undefined) {
							if ((event.result = ret) === false) {
								event.preventDefault();
								event.stopPropagation();
							}
						}
					}
				}
			}

			// Call the postDispatch hook for the mapped type
			if (special.postDispatch) {
				special.postDispatch.call(this, event);
			}

			return event.result;
		},

		handlers: function handlers(event, _handlers) {
			var i,
			    matches,
			    sel,
			    handleObj,
			    handlerQueue = [],
			    delegateCount = _handlers.delegateCount,
			    cur = event.target;

			// Support (at least): Chrome, IE9
			// Find delegate handlers
			// Black-hole SVG <use> instance trees (#13180)
			//
			// Support: Firefox<=42+
			// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
			if (delegateCount && cur.nodeType && (event.type !== "click" || isNaN(event.button) || event.button < 1)) {

				for (; cur !== this; cur = cur.parentNode || this) {

					// Don't check non-elements (#13208)
					// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
					if (cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click")) {
						matches = [];
						for (i = 0; i < delegateCount; i++) {
							handleObj = _handlers[i];

							// Don't conflict with Object.prototype properties (#13203)
							sel = handleObj.selector + " ";

							if (matches[sel] === undefined) {
								matches[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;
							}
							if (matches[sel]) {
								matches.push(handleObj);
							}
						}
						if (matches.length) {
							handlerQueue.push({ elem: cur, handlers: matches });
						}
					}
				}
			}

			// Add the remaining (directly-bound) handlers
			if (delegateCount < _handlers.length) {
				handlerQueue.push({ elem: this, handlers: _handlers.slice(delegateCount) });
			}

			return handlerQueue;
		},

		// Includes some event props shared by KeyEvent and MouseEvent
		props: ("altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + "metaKey relatedTarget shiftKey target timeStamp view which").split(" "),

		fixHooks: {},

		keyHooks: {
			props: "char charCode key keyCode".split(" "),
			filter: function filter(event, original) {

				// Add which for key events
				if (event.which == null) {
					event.which = original.charCode != null ? original.charCode : original.keyCode;
				}

				return event;
			}
		},

		mouseHooks: {
			props: ("button buttons clientX clientY offsetX offsetY pageX pageY " + "screenX screenY toElement").split(" "),
			filter: function filter(event, original) {
				var eventDoc,
				    doc,
				    body,
				    button = original.button;

				// Calculate pageX/Y if missing and clientX/Y available
				if (event.pageX == null && original.clientX != null) {
					eventDoc = event.target.ownerDocument || document;
					doc = eventDoc.documentElement;
					body = eventDoc.body;

					event.pageX = original.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
					event.pageY = original.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
				}

				// Add which for click: 1 === left; 2 === middle; 3 === right
				// Note: button is not normalized, so don't use it
				if (!event.which && button !== undefined) {
					event.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0;
				}

				return event;
			}
		},

		fix: function fix(event) {
			if (event[jQuery.expando]) {
				return event;
			}

			// Create a writable copy of the event object and normalize some properties
			var i,
			    prop,
			    copy,
			    type = event.type,
			    originalEvent = event,
			    fixHook = this.fixHooks[type];

			if (!fixHook) {
				this.fixHooks[type] = fixHook = rmouseEvent.test(type) ? this.mouseHooks : rkeyEvent.test(type) ? this.keyHooks : {};
			}
			copy = fixHook.props ? this.props.concat(fixHook.props) : this.props;

			event = new jQuery.Event(originalEvent);

			i = copy.length;
			while (i--) {
				prop = copy[i];
				event[prop] = originalEvent[prop];
			}

			// Support: Cordova 2.5 (WebKit) (#13255)
			// All events should have a target; Cordova deviceready doesn't
			if (!event.target) {
				event.target = document;
			}

			// Support: Safari 6.0+, Chrome<28
			// Target should not be a text node (#504, #13143)
			if (event.target.nodeType === 3) {
				event.target = event.target.parentNode;
			}

			return fixHook.filter ? fixHook.filter(event, originalEvent) : event;
		},

		special: {
			load: {

				// Prevent triggered image.load events from bubbling to window.load
				noBubble: true
			},
			focus: {

				// Fire native event if possible so blur/focus sequence is correct
				trigger: function trigger() {
					if (this !== safeActiveElement() && this.focus) {
						this.focus();
						return false;
					}
				},
				delegateType: "focusin"
			},
			blur: {
				trigger: function trigger() {
					if (this === safeActiveElement() && this.blur) {
						this.blur();
						return false;
					}
				},
				delegateType: "focusout"
			},
			click: {

				// For checkbox, fire native event so checked state will be right
				trigger: function trigger() {
					if (this.type === "checkbox" && this.click && jQuery.nodeName(this, "input")) {
						this.click();
						return false;
					}
				},

				// For cross-browser consistency, don't fire native .click() on links
				_default: function _default(event) {
					return jQuery.nodeName(event.target, "a");
				}
			},

			beforeunload: {
				postDispatch: function postDispatch(event) {

					// Support: Firefox 20+
					// Firefox doesn't alert if the returnValue field is not set.
					if (event.result !== undefined && event.originalEvent) {
						event.originalEvent.returnValue = event.result;
					}
				}
			}
		}
	};

	jQuery.removeEvent = function (elem, type, handle) {

		// This "if" is needed for plain objects
		if (elem.removeEventListener) {
			elem.removeEventListener(type, handle);
		}
	};

	jQuery.Event = function (src, props) {

		// Allow instantiation without the 'new' keyword
		if (!(this instanceof jQuery.Event)) {
			return new jQuery.Event(src, props);
		}

		// Event object
		if (src && src.type) {
			this.originalEvent = src;
			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 || src.defaultPrevented === undefined &&

			// Support: Android<4.0
			src.returnValue === false ? returnTrue : returnFalse;

			// Event type
		} else {
			this.type = src;
		}

		// Put explicitly provided properties onto the event object
		if (props) {
			jQuery.extend(this, props);
		}

		// Create a timestamp if incoming event doesn't have one
		this.timeStamp = src && src.timeStamp || jQuery.now();

		// Mark it as fixed
		this[jQuery.expando] = true;
	};

	// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
	// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
	jQuery.Event.prototype = {
		constructor: jQuery.Event,
		isDefaultPrevented: returnFalse,
		isPropagationStopped: returnFalse,
		isImmediatePropagationStopped: returnFalse,
		isSimulated: false,

		preventDefault: function preventDefault() {
			var e = this.originalEvent;

			this.isDefaultPrevented = returnTrue;

			if (e && !this.isSimulated) {
				e.preventDefault();
			}
		},
		stopPropagation: function stopPropagation() {
			var e = this.originalEvent;

			this.isPropagationStopped = returnTrue;

			if (e && !this.isSimulated) {
				e.stopPropagation();
			}
		},
		stopImmediatePropagation: function stopImmediatePropagation() {
			var e = this.originalEvent;

			this.isImmediatePropagationStopped = returnTrue;

			if (e && !this.isSimulated) {
				e.stopImmediatePropagation();
			}

			this.stopPropagation();
		}
	};

	// Create mouseenter/leave events using mouseover/out and event-time checks
	// so that event delegation works in jQuery.
	// Do the same for pointerenter/pointerleave and pointerover/pointerout
	//
	// Support: Safari 7 only
	// Safari sends mouseenter too often; see:
	// https://code.google.com/p/chromium/issues/detail?id=470258
	// for the description of the bug (it existed in older Chrome versions as well).
	jQuery.each({
		mouseenter: "mouseover",
		mouseleave: "mouseout",
		pointerenter: "pointerover",
		pointerleave: "pointerout"
	}, function (orig, fix) {
		jQuery.event.special[orig] = {
			delegateType: fix,
			bindType: fix,

			handle: function handle(event) {
				var ret,
				    target = this,
				    related = event.relatedTarget,
				    handleObj = event.handleObj;

				// For mouseenter/leave call the handler if related is outside the target.
				// NB: No relatedTarget if the mouse left/entered the browser window
				if (!related || related !== target && !jQuery.contains(target, related)) {
					event.type = handleObj.origType;
					ret = handleObj.handler.apply(this, arguments);
					event.type = fix;
				}
				return ret;
			}
		};
	});

	jQuery.fn.extend({
		on: function on(types, selector, data, fn) {
			return _on(this, types, selector, data, fn);
		},
		one: function one(types, selector, data, fn) {
			return _on(this, types, selector, data, fn, 1);
		},
		off: function off(types, selector, fn) {
			var handleObj, type;
			if (types && types.preventDefault && types.handleObj) {

				// ( event )  dispatched jQuery.Event
				handleObj = types.handleObj;
				jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);
				return this;
			}
			if ((typeof types === "undefined" ? "undefined" : _typeof(types)) === "object") {

				// ( types-object [, selector] )
				for (type in types) {
					this.off(type, selector, types[type]);
				}
				return this;
			}
			if (selector === false || typeof selector === "function") {

				// ( types [, fn] )
				fn = selector;
				selector = undefined;
			}
			if (fn === false) {
				fn = returnFalse;
			}
			return this.each(function () {
				jQuery.event.remove(this, types, fn, selector);
			});
		}
	});

	var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,


	// Support: IE 10-11, Edge 10240+
	// In IE/Edge using regex groups here causes severe slowdowns.
	// See https://connect.microsoft.com/IE/feedback/details/1736512/
	rnoInnerhtml = /<script|<style|<link/i,


	// checked="checked" or checked
	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
	    rscriptTypeMasked = /^true\/(.*)/,
	    rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;

	// Manipulating tables requires a tbody
	function manipulationTarget(elem, content) {
		return jQuery.nodeName(elem, "table") && jQuery.nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr") ? elem.getElementsByTagName("tbody")[0] || elem.appendChild(elem.ownerDocument.createElement("tbody")) : elem;
	}

	// Replace/restore the type attribute of script elements for safe DOM manipulation
	function disableScript(elem) {
		elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
		return elem;
	}
	function restoreScript(elem) {
		var match = rscriptTypeMasked.exec(elem.type);

		if (match) {
			elem.type = match[1];
		} else {
			elem.removeAttribute("type");
		}

		return elem;
	}

	function cloneCopyEvent(src, dest) {
		var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;

		if (dest.nodeType !== 1) {
			return;
		}

		// 1. Copy private data: events, handlers, etc.
		if (dataPriv.hasData(src)) {
			pdataOld = dataPriv.access(src);
			pdataCur = dataPriv.set(dest, pdataOld);
			events = pdataOld.events;

			if (events) {
				delete pdataCur.handle;
				pdataCur.events = {};

				for (type in events) {
					for (i = 0, l = events[type].length; i < l; i++) {
						jQuery.event.add(dest, type, events[type][i]);
					}
				}
			}
		}

		// 2. Copy user data
		if (dataUser.hasData(src)) {
			udataOld = dataUser.access(src);
			udataCur = jQuery.extend({}, udataOld);

			dataUser.set(dest, udataCur);
		}
	}

	// Fix IE bugs, see support tests
	function fixInput(src, dest) {
		var nodeName = dest.nodeName.toLowerCase();

		// Fails to persist the checked state of a cloned checkbox or radio button.
		if (nodeName === "input" && rcheckableType.test(src.type)) {
			dest.checked = src.checked;

			// Fails to return the selected option to the default selected state when cloning options
		} else if (nodeName === "input" || nodeName === "textarea") {
			dest.defaultValue = src.defaultValue;
		}
	}

	function domManip(collection, args, callback, ignored) {

		// Flatten any nested arrays
		args = concat.apply([], args);

		var fragment,
		    first,
		    scripts,
		    hasScripts,
		    node,
		    doc,
		    i = 0,
		    l = collection.length,
		    iNoClone = l - 1,
		    value = args[0],
		    isFunction = jQuery.isFunction(value);

		// We can't cloneNode fragments that contain checked, in WebKit
		if (isFunction || l > 1 && typeof value === "string" && !support.checkClone && rchecked.test(value)) {
			return collection.each(function (index) {
				var self = collection.eq(index);
				if (isFunction) {
					args[0] = value.call(this, index, self.html());
				}
				domManip(self, args, callback, ignored);
			});
		}

		if (l) {
			fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);
			first = fragment.firstChild;

			if (fragment.childNodes.length === 1) {
				fragment = first;
			}

			// Require either new content or an interest in ignored elements to invoke the callback
			if (first || ignored) {
				scripts = jQuery.map(getAll(fragment, "script"), disableScript);
				hasScripts = scripts.length;

				// Use the original fragment for the last item
				// instead of the first because it can end up
				// being emptied incorrectly in certain situations (#8070).
				for (; i < l; i++) {
					node = fragment;

					if (i !== iNoClone) {
						node = jQuery.clone(node, true, true);

						// Keep references to cloned scripts for later restoration
						if (hasScripts) {

							// Support: Android<4.1, PhantomJS<2
							// push.apply(_, arraylike) throws on ancient WebKit
							jQuery.merge(scripts, getAll(node, "script"));
						}
					}

					callback.call(collection[i], node, i);
				}

				if (hasScripts) {
					doc = scripts[scripts.length - 1].ownerDocument;

					// Reenable scripts
					jQuery.map(scripts, restoreScript);

					// Evaluate executable scripts on first document insertion
					for (i = 0; i < hasScripts; i++) {
						node = scripts[i];
						if (rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery.contains(doc, node)) {

							if (node.src) {

								// Optional AJAX dependency, but won't run scripts if not present
								if (jQuery._evalUrl) {
									jQuery._evalUrl(node.src);
								}
							} else {
								jQuery.globalEval(node.textContent.replace(rcleanScript, ""));
							}
						}
					}
				}
			}
		}

		return collection;
	}

	function _remove(elem, selector, keepData) {
		var node,
		    nodes = selector ? jQuery.filter(selector, elem) : elem,
		    i = 0;

		for (; (node = nodes[i]) != null; i++) {
			if (!keepData && node.nodeType === 1) {
				jQuery.cleanData(getAll(node));
			}

			if (node.parentNode) {
				if (keepData && jQuery.contains(node.ownerDocument, node)) {
					setGlobalEval(getAll(node, "script"));
				}
				node.parentNode.removeChild(node);
			}
		}

		return elem;
	}

	jQuery.extend({
		htmlPrefilter: function htmlPrefilter(html) {
			return html.replace(rxhtmlTag, "<$1></$2>");
		},

		clone: function clone(elem, dataAndEvents, deepDataAndEvents) {
			var i,
			    l,
			    srcElements,
			    destElements,
			    clone = elem.cloneNode(true),
			    inPage = jQuery.contains(elem.ownerDocument, elem);

			// Fix IE cloning issues
			if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {

				// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
				destElements = getAll(clone);
				srcElements = getAll(elem);

				for (i = 0, l = srcElements.length; i < l; i++) {
					fixInput(srcElements[i], destElements[i]);
				}
			}

			// Copy the events from the original to the clone
			if (dataAndEvents) {
				if (deepDataAndEvents) {
					srcElements = srcElements || getAll(elem);
					destElements = destElements || getAll(clone);

					for (i = 0, l = srcElements.length; i < l; i++) {
						cloneCopyEvent(srcElements[i], destElements[i]);
					}
				} else {
					cloneCopyEvent(elem, clone);
				}
			}

			// Preserve script evaluation history
			destElements = getAll(clone, "script");
			if (destElements.length > 0) {
				setGlobalEval(destElements, !inPage && getAll(elem, "script"));
			}

			// Return the cloned set
			return clone;
		},

		cleanData: function cleanData(elems) {
			var data,
			    elem,
			    type,
			    special = jQuery.event.special,
			    i = 0;

			for (; (elem = elems[i]) !== undefined; i++) {
				if (acceptData(elem)) {
					if (data = elem[dataPriv.expando]) {
						if (data.events) {
							for (type in data.events) {
								if (special[type]) {
									jQuery.event.remove(elem, type);

									// This is a shortcut to avoid jQuery.event.remove's overhead
								} else {
									jQuery.removeEvent(elem, type, data.handle);
								}
							}
						}

						// Support: Chrome <= 35-45+
						// Assign undefined instead of using delete, see Data#remove
						elem[dataPriv.expando] = undefined;
					}
					if (elem[dataUser.expando]) {

						// Support: Chrome <= 35-45+
						// Assign undefined instead of using delete, see Data#remove
						elem[dataUser.expando] = undefined;
					}
				}
			}
		}
	});

	jQuery.fn.extend({

		// Keep domManip exposed until 3.0 (gh-2225)
		domManip: domManip,

		detach: function detach(selector) {
			return _remove(this, selector, true);
		},

		remove: function remove(selector) {
			return _remove(this, selector);
		},

		text: function text(value) {
			return access(this, function (value) {
				return value === undefined ? jQuery.text(this) : this.empty().each(function () {
					if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
						this.textContent = value;
					}
				});
			}, null, value, arguments.length);
		},

		append: function append() {
			return domManip(this, arguments, function (elem) {
				if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
					var target = manipulationTarget(this, elem);
					target.appendChild(elem);
				}
			});
		},

		prepend: function prepend() {
			return domManip(this, arguments, function (elem) {
				if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
					var target = manipulationTarget(this, elem);
					target.insertBefore(elem, target.firstChild);
				}
			});
		},

		before: function before() {
			return domManip(this, arguments, function (elem) {
				if (this.parentNode) {
					this.parentNode.insertBefore(elem, this);
				}
			});
		},

		after: function after() {
			return domManip(this, arguments, function (elem) {
				if (this.parentNode) {
					this.parentNode.insertBefore(elem, this.nextSibling);
				}
			});
		},

		empty: function empty() {
			var elem,
			    i = 0;

			for (; (elem = this[i]) != null; i++) {
				if (elem.nodeType === 1) {

					// Prevent memory leaks
					jQuery.cleanData(getAll(elem, false));

					// Remove any remaining nodes
					elem.textContent = "";
				}
			}

			return this;
		},

		clone: function clone(dataAndEvents, deepDataAndEvents) {
			dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
			deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;

			return this.map(function () {
				return jQuery.clone(this, dataAndEvents, deepDataAndEvents);
			});
		},

		html: function html(value) {
			return access(this, function (value) {
				var elem = this[0] || {},
				    i = 0,
				    l = this.length;

				if (value === undefined && elem.nodeType === 1) {
					return elem.innerHTML;
				}

				// See if we can take a shortcut and just use innerHTML
				if (typeof value === "string" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || ["", ""])[1].toLowerCase()]) {

					value = jQuery.htmlPrefilter(value);

					try {
						for (; i < l; i++) {
							elem = this[i] || {};

							// Remove element nodes and prevent memory leaks
							if (elem.nodeType === 1) {
								jQuery.cleanData(getAll(elem, false));
								elem.innerHTML = value;
							}
						}

						elem = 0;

						// If using innerHTML throws an exception, use the fallback method
					} catch (e) {}
				}

				if (elem) {
					this.empty().append(value);
				}
			}, null, value, arguments.length);
		},

		replaceWith: function replaceWith() {
			var ignored = [];

			// Make the changes, replacing each non-ignored context element with the new content
			return domManip(this, arguments, function (elem) {
				var parent = this.parentNode;

				if (jQuery.inArray(this, ignored) < 0) {
					jQuery.cleanData(getAll(this));
					if (parent) {
						parent.replaceChild(elem, this);
					}
				}

				// Force callback invocation
			}, ignored);
		}
	});

	jQuery.each({
		appendTo: "append",
		prependTo: "prepend",
		insertBefore: "before",
		insertAfter: "after",
		replaceAll: "replaceWith"
	}, function (name, original) {
		jQuery.fn[name] = function (selector) {
			var elems,
			    ret = [],
			    insert = jQuery(selector),
			    last = insert.length - 1,
			    i = 0;

			for (; i <= last; i++) {
				elems = i === last ? this : this.clone(true);
				jQuery(insert[i])[original](elems);

				// Support: QtWebKit
				// .get() because push.apply(_, arraylike) throws
				push.apply(ret, elems.get());
			}

			return this.pushStack(ret);
		};
	});

	var iframe,
	    elemdisplay = {

		// Support: Firefox
		// We have to pre-define these values for FF (#10227)
		HTML: "block",
		BODY: "block"
	};

	/**
  * Retrieve the actual display of a element
  * @param {String} name nodeName of the element
  * @param {Object} doc Document object
  */

	// Called only from within defaultDisplay
	function actualDisplay(name, doc) {
		var elem = jQuery(doc.createElement(name)).appendTo(doc.body),
		    display = jQuery.css(elem[0], "display");

		// We don't have any data stored on the element,
		// so use "detach" method as fast way to get rid of the element
		elem.detach();

		return display;
	}

	/**
  * Try to determine the default display value of an element
  * @param {String} nodeName
  */
	function defaultDisplay(nodeName) {
		var doc = document,
		    display = elemdisplay[nodeName];

		if (!display) {
			display = actualDisplay(nodeName, doc);

			// If the simple way fails, read from inside an iframe
			if (display === "none" || !display) {

				// Use the already-created iframe if possible
				iframe = (iframe || jQuery("<iframe frameborder='0' width='0' height='0'/>")).appendTo(doc.documentElement);

				// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
				doc = iframe[0].contentDocument;

				// Support: IE
				doc.write();
				doc.close();

				display = actualDisplay(nodeName, doc);
				iframe.detach();
			}

			// Store the correct default display
			elemdisplay[nodeName] = display;
		}

		return display;
	}
	var rmargin = /^margin/;

	var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i");

	var getStyles = function getStyles(elem) {

		// Support: IE<=11+, Firefox<=30+ (#15098, #14150)
		// IE throws on elements created in popups
		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
		var view = elem.ownerDocument.defaultView;

		if (!view || !view.opener) {
			view = window;
		}

		return view.getComputedStyle(elem);
	};

	var swap = function swap(elem, options, callback, args) {
		var ret,
		    name,
		    old = {};

		// Remember the old values, and insert the new ones
		for (name in options) {
			old[name] = elem.style[name];
			elem.style[name] = options[name];
		}

		ret = callback.apply(elem, args || []);

		// Revert the old values
		for (name in options) {
			elem.style[name] = old[name];
		}

		return ret;
	};

	var documentElement = document.documentElement;

	(function () {
		var pixelPositionVal,
		    boxSizingReliableVal,
		    pixelMarginRightVal,
		    reliableMarginLeftVal,
		    container = document.createElement("div"),
		    div = document.createElement("div");

		// Finish early in limited (non-browser) environments
		if (!div.style) {
			return;
		}

		// Support: IE9-11+
		// Style of cloned element affects source element cloned (#8908)
		div.style.backgroundClip = "content-box";
		div.cloneNode(true).style.backgroundClip = "";
		support.clearCloneStyle = div.style.backgroundClip === "content-box";

		container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + "padding:0;margin-top:1px;position:absolute";
		container.appendChild(div);

		// Executing both pixelPosition & boxSizingReliable tests require only one layout
		// so they're executed at the same time to save the second computation.
		function computeStyleTests() {
			div.style.cssText =

			// Support: Firefox<29, Android 2.3
			// Vendor-prefix box-sizing
			"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;" + "position:relative;display:block;" + "margin:auto;border:1px;padding:1px;" + "top:1%;width:50%";
			div.innerHTML = "";
			documentElement.appendChild(container);

			var divStyle = window.getComputedStyle(div);
			pixelPositionVal = divStyle.top !== "1%";
			reliableMarginLeftVal = divStyle.marginLeft === "2px";
			boxSizingReliableVal = divStyle.width === "4px";

			// Support: Android 4.0 - 4.3 only
			// Some styles come back with percentage values, even though they shouldn't
			div.style.marginRight = "50%";
			pixelMarginRightVal = divStyle.marginRight === "4px";

			documentElement.removeChild(container);
		}

		jQuery.extend(support, {
			pixelPosition: function pixelPosition() {

				// This test is executed only once but we still do memoizing
				// since we can use the boxSizingReliable pre-computing.
				// No need to check if the test was already performed, though.
				computeStyleTests();
				return pixelPositionVal;
			},
			boxSizingReliable: function boxSizingReliable() {
				if (boxSizingReliableVal == null) {
					computeStyleTests();
				}
				return boxSizingReliableVal;
			},
			pixelMarginRight: function pixelMarginRight() {

				// Support: Android 4.0-4.3
				// We're checking for boxSizingReliableVal here instead of pixelMarginRightVal
				// since that compresses better and they're computed together anyway.
				if (boxSizingReliableVal == null) {
					computeStyleTests();
				}
				return pixelMarginRightVal;
			},
			reliableMarginLeft: function reliableMarginLeft() {

				// Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37
				if (boxSizingReliableVal == null) {
					computeStyleTests();
				}
				return reliableMarginLeftVal;
			},
			reliableMarginRight: function reliableMarginRight() {

				// Support: Android 2.3
				// Check if div with explicit width and no margin-right incorrectly
				// gets computed margin-right based on width of container. (#3333)
				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
				// This support function is only executed once so no memoizing is needed.
				var ret,
				    marginDiv = div.appendChild(document.createElement("div"));

				// Reset CSS: box-sizing; display; margin; border; padding
				marginDiv.style.cssText = div.style.cssText =

				// Support: Android 2.3
				// Vendor-prefix box-sizing
				"-webkit-box-sizing:content-box;box-sizing:content-box;" + "display:block;margin:0;border:0;padding:0";
				marginDiv.style.marginRight = marginDiv.style.width = "0";
				div.style.width = "1px";
				documentElement.appendChild(container);

				ret = !parseFloat(window.getComputedStyle(marginDiv).marginRight);

				documentElement.removeChild(container);
				div.removeChild(marginDiv);

				return ret;
			}
		});
	})();

	function curCSS(elem, name, computed) {
		var width,
		    minWidth,
		    maxWidth,
		    ret,
		    style = elem.style;

		computed = computed || getStyles(elem);
		ret = computed ? computed.getPropertyValue(name) || computed[name] : undefined;

		// Support: Opera 12.1x only
		// Fall back to style even without computed
		// computed is undefined for elems on document fragments
		if ((ret === "" || ret === undefined) && !jQuery.contains(elem.ownerDocument, elem)) {
			ret = jQuery.style(elem, name);
		}

		// Support: IE9
		// getPropertyValue is only needed for .css('filter') (#12537)
		if (computed) {

			// A tribute to the "awesome hack by Dean Edwards"
			// Android Browser returns percentage for some values,
			// but width seems to be reliably pixels.
			// This is against the CSSOM draft spec:
			// http://dev.w3.org/csswg/cssom/#resolved-values
			if (!support.pixelMarginRight() && rnumnonpx.test(ret) && rmargin.test(name)) {

				// Remember the original values
				width = style.width;
				minWidth = style.minWidth;
				maxWidth = style.maxWidth;

				// Put in the new values to get a computed value out
				style.minWidth = style.maxWidth = style.width = ret;
				ret = computed.width;

				// Revert the changed values
				style.width = width;
				style.minWidth = minWidth;
				style.maxWidth = maxWidth;
			}
		}

		return ret !== undefined ?

		// Support: IE9-11+
		// IE returns zIndex value as an integer.
		ret + "" : ret;
	}

	function addGetHookIf(conditionFn, hookFn) {

		// Define the hook, we'll check on the first run if it's really needed.
		return {
			get: function get() {
				if (conditionFn()) {

					// Hook not needed (or it's not possible to use it due
					// to missing dependency), remove it.
					delete this.get;
					return;
				}

				// Hook needed; redefine it so that the support test is not executed again.
				return (this.get = hookFn).apply(this, arguments);
			}
		};
	}

	var

	// Swappable if display is none or starts with table
	// except "table", "table-cell", or "table-caption"
	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
	    cssShow = { position: "absolute", visibility: "hidden", display: "block" },
	    cssNormalTransform = {
		letterSpacing: "0",
		fontWeight: "400"
	},
	    cssPrefixes = ["Webkit", "O", "Moz", "ms"],
	    emptyStyle = document.createElement("div").style;

	// Return a css property mapped to a potentially vendor prefixed property
	function vendorPropName(name) {

		// Shortcut for names that are not vendor prefixed
		if (name in emptyStyle) {
			return name;
		}

		// Check for vendor prefixed names
		var capName = name[0].toUpperCase() + name.slice(1),
		    i = cssPrefixes.length;

		while (i--) {
			name = cssPrefixes[i] + capName;
			if (name in emptyStyle) {
				return name;
			}
		}
	}

	function setPositiveNumber(elem, value, subtract) {

		// Any relative (+/-) values have already been
		// normalized at this point
		var matches = rcssNum.exec(value);
		return matches ?

		// Guard against undefined "subtract", e.g., when used as in cssHooks
		Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px") : value;
	}

	function augmentWidthOrHeight(elem, name, extra, isBorderBox, styles) {
		var i = extra === (isBorderBox ? "border" : "content") ?

		// If we already have the right measurement, avoid augmentation
		4 :

		// Otherwise initialize for horizontal or vertical properties
		name === "width" ? 1 : 0,
		    val = 0;

		for (; i < 4; i += 2) {

			// Both box models exclude margin, so add it if we want it
			if (extra === "margin") {
				val += jQuery.css(elem, extra + cssExpand[i], true, styles);
			}

			if (isBorderBox) {

				// border-box includes padding, so remove it if we want content
				if (extra === "content") {
					val -= jQuery.css(elem, "padding" + cssExpand[i], true, styles);
				}

				// At this point, extra isn't border nor margin, so remove border
				if (extra !== "margin") {
					val -= jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
				}
			} else {

				// At this point, extra isn't content, so add padding
				val += jQuery.css(elem, "padding" + cssExpand[i], true, styles);

				// At this point, extra isn't content nor padding, so add border
				if (extra !== "padding") {
					val += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
				}
			}
		}

		return val;
	}

	function getWidthOrHeight(elem, name, extra) {

		// Start with offset property, which is equivalent to the border-box value
		var valueIsBorderBox = true,
		    val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
		    styles = getStyles(elem),
		    isBorderBox = jQuery.css(elem, "boxSizing", false, styles) === "border-box";

		// Some non-html elements return undefined for offsetWidth, so check for null/undefined
		// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
		// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
		if (val <= 0 || val == null) {

			// Fall back to computed then uncomputed css if necessary
			val = curCSS(elem, name, styles);
			if (val < 0 || val == null) {
				val = elem.style[name];
			}

			// Computed unit is not pixels. Stop here and return.
			if (rnumnonpx.test(val)) {
				return val;
			}

			// Check for style in case a browser which returns unreliable values
			// for getComputedStyle silently falls back to the reliable elem.style
			valueIsBorderBox = isBorderBox && (support.boxSizingReliable() || val === elem.style[name]);

			// Normalize "", auto, and prepare for extra
			val = parseFloat(val) || 0;
		}

		// Use the active box-sizing model to add/subtract irrelevant styles
		return val + augmentWidthOrHeight(elem, name, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles) + "px";
	}

	function showHide(elements, show) {
		var display,
		    elem,
		    hidden,
		    values = [],
		    index = 0,
		    length = elements.length;

		for (; index < length; index++) {
			elem = elements[index];
			if (!elem.style) {
				continue;
			}

			values[index] = dataPriv.get(elem, "olddisplay");
			display = elem.style.display;
			if (show) {

				// Reset the inline display of this element to learn if it is
				// being hidden by cascaded rules or not
				if (!values[index] && display === "none") {
					elem.style.display = "";
				}

				// Set elements which have been overridden with display: none
				// in a stylesheet to whatever the default browser style is
				// for such an element
				if (elem.style.display === "" && isHidden(elem)) {
					values[index] = dataPriv.access(elem, "olddisplay", defaultDisplay(elem.nodeName));
				}
			} else {
				hidden = isHidden(elem);

				if (display !== "none" || !hidden) {
					dataPriv.set(elem, "olddisplay", hidden ? display : jQuery.css(elem, "display"));
				}
			}
		}

		// Set the display of most of the elements in a second loop
		// to avoid the constant reflow
		for (index = 0; index < length; index++) {
			elem = elements[index];
			if (!elem.style) {
				continue;
			}
			if (!show || elem.style.display === "none" || elem.style.display === "") {
				elem.style.display = show ? values[index] || "" : "none";
			}
		}

		return elements;
	}

	jQuery.extend({

		// Add in style property hooks for overriding the default
		// behavior of getting and setting a style property
		cssHooks: {
			opacity: {
				get: function get(elem, computed) {
					if (computed) {

						// We should always get a number back from opacity
						var ret = curCSS(elem, "opacity");
						return ret === "" ? "1" : ret;
					}
				}
			}
		},

		// Don't automatically add "px" to these possibly-unitless properties
		cssNumber: {
			"animationIterationCount": true,
			"columnCount": true,
			"fillOpacity": true,
			"flexGrow": true,
			"flexShrink": true,
			"fontWeight": true,
			"lineHeight": true,
			"opacity": true,
			"order": true,
			"orphans": true,
			"widows": true,
			"zIndex": true,
			"zoom": true
		},

		// Add in properties whose names you wish to fix before
		// setting or getting the value
		cssProps: {
			"float": "cssFloat"
		},

		// Get and set the style property on a DOM Node
		style: function style(elem, name, value, extra) {

			// Don't set styles on text and comment nodes
			if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {
				return;
			}

			// Make sure that we're working with the right name
			var ret,
			    type,
			    hooks,
			    origName = jQuery.camelCase(name),
			    style = elem.style;

			name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(origName) || origName);

			// Gets hook for the prefixed version, then unprefixed version
			hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];

			// Check if we're setting a value
			if (value !== undefined) {
				type = typeof value === "undefined" ? "undefined" : _typeof(value);

				// Convert "+=" or "-=" to relative numbers (#7345)
				if (type === "string" && (ret = rcssNum.exec(value)) && ret[1]) {
					value = adjustCSS(elem, name, ret);

					// Fixes bug #9237
					type = "number";
				}

				// Make sure that null and NaN values aren't set (#7116)
				if (value == null || value !== value) {
					return;
				}

				// If a number was passed in, add the unit (except for certain CSS properties)
				if (type === "number") {
					value += ret && ret[3] || (jQuery.cssNumber[origName] ? "" : "px");
				}

				// Support: IE9-11+
				// background-* props affect original clone's values
				if (!support.clearCloneStyle && value === "" && name.indexOf("background") === 0) {
					style[name] = "inherit";
				}

				// If a hook was provided, use that value, otherwise just set the specified value
				if (!hooks || !("set" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {

					style[name] = value;
				}
			} else {

				// If a hook was provided get the non-computed value from there
				if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {

					return ret;
				}

				// Otherwise just get the value from the style object
				return style[name];
			}
		},

		css: function css(elem, name, extra, styles) {
			var val,
			    num,
			    hooks,
			    origName = jQuery.camelCase(name);

			// Make sure that we're working with the right name
			name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(origName) || origName);

			// Try prefixed name followed by the unprefixed name
			hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];

			// If a hook was provided get the computed value from there
			if (hooks && "get" in hooks) {
				val = hooks.get(elem, true, extra);
			}

			// Otherwise, if a way to get the computed value exists, use that
			if (val === undefined) {
				val = curCSS(elem, name, styles);
			}

			// Convert "normal" to computed value
			if (val === "normal" && name in cssNormalTransform) {
				val = cssNormalTransform[name];
			}

			// Make numeric if forced or a qualifier was provided and val looks numeric
			if (extra === "" || extra) {
				num = parseFloat(val);
				return extra === true || isFinite(num) ? num || 0 : val;
			}
			return val;
		}
	});

	jQuery.each(["height", "width"], function (i, name) {
		jQuery.cssHooks[name] = {
			get: function get(elem, computed, extra) {
				if (computed) {

					// Certain elements can have dimension info if we invisibly show them
					// but it must have a current display style that would benefit
					return rdisplayswap.test(jQuery.css(elem, "display")) && elem.offsetWidth === 0 ? swap(elem, cssShow, function () {
						return getWidthOrHeight(elem, name, extra);
					}) : getWidthOrHeight(elem, name, extra);
				}
			},

			set: function set(elem, value, extra) {
				var matches,
				    styles = extra && getStyles(elem),
				    subtract = extra && augmentWidthOrHeight(elem, name, extra, jQuery.css(elem, "boxSizing", false, styles) === "border-box", styles);

				// Convert to pixels if value adjustment is needed
				if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || "px") !== "px") {

					elem.style[name] = value;
					value = jQuery.css(elem, name);
				}

				return setPositiveNumber(elem, value, subtract);
			}
		};
	});

	jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {
		if (computed) {
			return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, { marginLeft: 0 }, function () {
				return elem.getBoundingClientRect().left;
			})) + "px";
		}
	});

	// Support: Android 2.3
	jQuery.cssHooks.marginRight = addGetHookIf(support.reliableMarginRight, function (elem, computed) {
		if (computed) {
			return swap(elem, { "display": "inline-block" }, curCSS, [elem, "marginRight"]);
		}
	});

	// These hooks are used by animate to expand properties
	jQuery.each({
		margin: "",
		padding: "",
		border: "Width"
	}, function (prefix, suffix) {
		jQuery.cssHooks[prefix + suffix] = {
			expand: function expand(value) {
				var i = 0,
				    expanded = {},


				// Assumes a single number if not a string
				parts = typeof value === "string" ? value.split(" ") : [value];

				for (; i < 4; i++) {
					expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];
				}

				return expanded;
			}
		};

		if (!rmargin.test(prefix)) {
			jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;
		}
	});

	jQuery.fn.extend({
		css: function css(name, value) {
			return access(this, function (elem, name, value) {
				var styles,
				    len,
				    map = {},
				    i = 0;

				if (jQuery.isArray(name)) {
					styles = getStyles(elem);
					len = name.length;

					for (; i < len; i++) {
						map[name[i]] = jQuery.css(elem, name[i], false, styles);
					}

					return map;
				}

				return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);
			}, name, value, arguments.length > 1);
		},
		show: function show() {
			return showHide(this, true);
		},
		hide: function hide() {
			return showHide(this);
		},
		toggle: function toggle(state) {
			if (typeof state === "boolean") {
				return state ? this.show() : this.hide();
			}

			return this.each(function () {
				if (isHidden(this)) {
					jQuery(this).show();
				} else {
					jQuery(this).hide();
				}
			});
		}
	});

	function Tween(elem, options, prop, end, easing) {
		return new Tween.prototype.init(elem, options, prop, end, easing);
	}
	jQuery.Tween = Tween;

	Tween.prototype = {
		constructor: Tween,
		init: function init(elem, options, prop, end, easing, unit) {
			this.elem = elem;
			this.prop = prop;
			this.easing = easing || jQuery.easing._default;
			this.options = options;
			this.start = this.now = this.cur();
			this.end = end;
			this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px");
		},
		cur: function cur() {
			var hooks = Tween.propHooks[this.prop];

			return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);
		},
		run: function run(percent) {
			var eased,
			    hooks = Tween.propHooks[this.prop];

			if (this.options.duration) {
				this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);
			} else {
				this.pos = eased = percent;
			}
			this.now = (this.end - this.start) * eased + this.start;

			if (this.options.step) {
				this.options.step.call(this.elem, this.now, this);
			}

			if (hooks && hooks.set) {
				hooks.set(this);
			} else {
				Tween.propHooks._default.set(this);
			}
			return this;
		}
	};

	Tween.prototype.init.prototype = Tween.prototype;

	Tween.propHooks = {
		_default: {
			get: function get(tween) {
				var result;

				// Use a property on the element directly when it is not a DOM element,
				// or when there is no matching style property that exists.
				if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {
					return tween.elem[tween.prop];
				}

				// Passing an empty string as a 3rd parameter to .css will automatically
				// attempt a parseFloat and fallback to a string if the parse fails.
				// Simple values such as "10px" are parsed to Float;
				// complex values such as "rotate(1rad)" are returned as-is.
				result = jQuery.css(tween.elem, tween.prop, "");

				// Empty strings, null, undefined and "auto" are converted to 0.
				return !result || result === "auto" ? 0 : result;
			},
			set: function set(tween) {

				// Use step hook for back compat.
				// Use cssHook if its there.
				// Use .style if available and use plain properties where available.
				if (jQuery.fx.step[tween.prop]) {
					jQuery.fx.step[tween.prop](tween);
				} else if (tween.elem.nodeType === 1 && (tween.elem.style[jQuery.cssProps[tween.prop]] != null || jQuery.cssHooks[tween.prop])) {
					jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);
				} else {
					tween.elem[tween.prop] = tween.now;
				}
			}
		}
	};

	// Support: IE9
	// Panic based approach to setting things on disconnected nodes
	Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
		set: function set(tween) {
			if (tween.elem.nodeType && tween.elem.parentNode) {
				tween.elem[tween.prop] = tween.now;
			}
		}
	};

	jQuery.easing = {
		linear: function linear(p) {
			return p;
		},
		swing: function swing(p) {
			return 0.5 - Math.cos(p * Math.PI) / 2;
		},
		_default: "swing"
	};

	jQuery.fx = Tween.prototype.init;

	// Back Compat <1.8 extension point
	jQuery.fx.step = {};

	var fxNow,
	    timerId,
	    rfxtypes = /^(?:toggle|show|hide)$/,
	    rrun = /queueHooks$/;

	// Animations created synchronously will run synchronously
	function createFxNow() {
		window.setTimeout(function () {
			fxNow = undefined;
		});
		return fxNow = jQuery.now();
	}

	// Generate parameters to create a standard animation
	function genFx(type, includeWidth) {
		var which,
		    i = 0,
		    attrs = { height: type };

		// If we include width, step value is 1 to do all cssExpand values,
		// otherwise step value is 2 to skip over Left and Right
		includeWidth = includeWidth ? 1 : 0;
		for (; i < 4; i += 2 - includeWidth) {
			which = cssExpand[i];
			attrs["margin" + which] = attrs["padding" + which] = type;
		}

		if (includeWidth) {
			attrs.opacity = attrs.width = type;
		}

		return attrs;
	}

	function createTween(value, prop, animation) {
		var tween,
		    collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]),
		    index = 0,
		    length = collection.length;
		for (; index < length; index++) {
			if (tween = collection[index].call(animation, prop, value)) {

				// We're done with this property
				return tween;
			}
		}
	}

	function defaultPrefilter(elem, props, opts) {
		/* jshint validthis: true */
		var prop,
		    value,
		    toggle,
		    tween,
		    hooks,
		    oldfire,
		    display,
		    checkDisplay,
		    anim = this,
		    orig = {},
		    style = elem.style,
		    hidden = elem.nodeType && isHidden(elem),
		    dataShow = dataPriv.get(elem, "fxshow");

		// Handle queue: false promises
		if (!opts.queue) {
			hooks = jQuery._queueHooks(elem, "fx");
			if (hooks.unqueued == null) {
				hooks.unqueued = 0;
				oldfire = hooks.empty.fire;
				hooks.empty.fire = function () {
					if (!hooks.unqueued) {
						oldfire();
					}
				};
			}
			hooks.unqueued++;

			anim.always(function () {

				// Ensure the complete handler is called before this completes
				anim.always(function () {
					hooks.unqueued--;
					if (!jQuery.queue(elem, "fx").length) {
						hooks.empty.fire();
					}
				});
			});
		}

		// Height/width overflow pass
		if (elem.nodeType === 1 && ("height" in props || "width" in props)) {

			// Make sure that nothing sneaks out
			// Record all 3 overflow attributes because IE9-10 do not
			// change the overflow attribute when overflowX and
			// overflowY are set to the same value
			opts.overflow = [style.overflow, style.overflowX, style.overflowY];

			// Set display property to inline-block for height/width
			// animations on inline elements that are having width/height animated
			display = jQuery.css(elem, "display");

			// Test default display if display is currently "none"
			checkDisplay = display === "none" ? dataPriv.get(elem, "olddisplay") || defaultDisplay(elem.nodeName) : display;

			if (checkDisplay === "inline" && jQuery.css(elem, "float") === "none") {
				style.display = "inline-block";
			}
		}

		if (opts.overflow) {
			style.overflow = "hidden";
			anim.always(function () {
				style.overflow = opts.overflow[0];
				style.overflowX = opts.overflow[1];
				style.overflowY = opts.overflow[2];
			});
		}

		// show/hide pass
		for (prop in props) {
			value = props[prop];
			if (rfxtypes.exec(value)) {
				delete props[prop];
				toggle = toggle || value === "toggle";
				if (value === (hidden ? "hide" : "show")) {

					// If there is dataShow left over from a stopped hide or show
					// and we are going to proceed with show, we should pretend to be hidden
					if (value === "show" && dataShow && dataShow[prop] !== undefined) {
						hidden = true;
					} else {
						continue;
					}
				}
				orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);

				// Any non-fx value stops us from restoring the original display value
			} else {
				display = undefined;
			}
		}

		if (!jQuery.isEmptyObject(orig)) {
			if (dataShow) {
				if ("hidden" in dataShow) {
					hidden = dataShow.hidden;
				}
			} else {
				dataShow = dataPriv.access(elem, "fxshow", {});
			}

			// Store state if its toggle - enables .stop().toggle() to "reverse"
			if (toggle) {
				dataShow.hidden = !hidden;
			}
			if (hidden) {
				jQuery(elem).show();
			} else {
				anim.done(function () {
					jQuery(elem).hide();
				});
			}
			anim.done(function () {
				var prop;

				dataPriv.remove(elem, "fxshow");
				for (prop in orig) {
					jQuery.style(elem, prop, orig[prop]);
				}
			});
			for (prop in orig) {
				tween = createTween(hidden ? dataShow[prop] : 0, prop, anim);

				if (!(prop in dataShow)) {
					dataShow[prop] = tween.start;
					if (hidden) {
						tween.end = tween.start;
						tween.start = prop === "width" || prop === "height" ? 1 : 0;
					}
				}
			}

			// If this is a noop like .hide().hide(), restore an overwritten display value
		} else if ((display === "none" ? defaultDisplay(elem.nodeName) : display) === "inline") {
			style.display = display;
		}
	}

	function propFilter(props, specialEasing) {
		var index, name, easing, value, hooks;

		// camelCase, specialEasing and expand cssHook pass
		for (index in props) {
			name = jQuery.camelCase(index);
			easing = specialEasing[name];
			value = props[index];
			if (jQuery.isArray(value)) {
				easing = value[1];
				value = props[index] = value[0];
			}

			if (index !== name) {
				props[name] = value;
				delete props[index];
			}

			hooks = jQuery.cssHooks[name];
			if (hooks && "expand" in hooks) {
				value = hooks.expand(value);
				delete props[name];

				// Not quite $.extend, this won't overwrite existing keys.
				// Reusing 'index' because we have the correct "name"
				for (index in value) {
					if (!(index in props)) {
						props[index] = value[index];
						specialEasing[index] = easing;
					}
				}
			} else {
				specialEasing[name] = easing;
			}
		}
	}

	function Animation(elem, properties, options) {
		var result,
		    stopped,
		    index = 0,
		    length = Animation.prefilters.length,
		    deferred = jQuery.Deferred().always(function () {

			// Don't match elem in the :animated selector
			delete tick.elem;
		}),
		    tick = function tick() {
			if (stopped) {
				return false;
			}
			var currentTime = fxNow || createFxNow(),
			    remaining = Math.max(0, animation.startTime + animation.duration - currentTime),


			// Support: Android 2.3
			// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
			temp = remaining / animation.duration || 0,
			    percent = 1 - temp,
			    index = 0,
			    length = animation.tweens.length;

			for (; index < length; index++) {
				animation.tweens[index].run(percent);
			}

			deferred.notifyWith(elem, [animation, percent, remaining]);

			if (percent < 1 && length) {
				return remaining;
			} else {
				deferred.resolveWith(elem, [animation]);
				return false;
			}
		},
		    animation = deferred.promise({
			elem: elem,
			props: jQuery.extend({}, properties),
			opts: jQuery.extend(true, {
				specialEasing: {},
				easing: jQuery.easing._default
			}, options),
			originalProperties: properties,
			originalOptions: options,
			startTime: fxNow || createFxNow(),
			duration: options.duration,
			tweens: [],
			createTween: function createTween(prop, end) {
				var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);
				animation.tweens.push(tween);
				return tween;
			},
			stop: function stop(gotoEnd) {
				var index = 0,


				// If we are going to the end, we want to run all the tweens
				// otherwise we skip this part
				length = gotoEnd ? animation.tweens.length : 0;
				if (stopped) {
					return this;
				}
				stopped = true;
				for (; index < length; index++) {
					animation.tweens[index].run(1);
				}

				// Resolve when we played the last frame; otherwise, reject
				if (gotoEnd) {
					deferred.notifyWith(elem, [animation, 1, 0]);
					deferred.resolveWith(elem, [animation, gotoEnd]);
				} else {
					deferred.rejectWith(elem, [animation, gotoEnd]);
				}
				return this;
			}
		}),
		    props = animation.props;

		propFilter(props, animation.opts.specialEasing);

		for (; index < length; index++) {
			result = Animation.prefilters[index].call(animation, elem, props, animation.opts);
			if (result) {
				if (jQuery.isFunction(result.stop)) {
					jQuery._queueHooks(animation.elem, animation.opts.queue).stop = jQuery.proxy(result.stop, result);
				}
				return result;
			}
		}

		jQuery.map(props, createTween, animation);

		if (jQuery.isFunction(animation.opts.start)) {
			animation.opts.start.call(elem, animation);
		}

		jQuery.fx.timer(jQuery.extend(tick, {
			elem: elem,
			anim: animation,
			queue: animation.opts.queue
		}));

		// attach callbacks from options
		return animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);
	}

	jQuery.Animation = jQuery.extend(Animation, {
		tweeners: {
			"*": [function (prop, value) {
				var tween = this.createTween(prop, value);
				adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);
				return tween;
			}]
		},

		tweener: function tweener(props, callback) {
			if (jQuery.isFunction(props)) {
				callback = props;
				props = ["*"];
			} else {
				props = props.match(rnotwhite);
			}

			var prop,
			    index = 0,
			    length = props.length;

			for (; index < length; index++) {
				prop = props[index];
				Animation.tweeners[prop] = Animation.tweeners[prop] || [];
				Animation.tweeners[prop].unshift(callback);
			}
		},

		prefilters: [defaultPrefilter],

		prefilter: function prefilter(callback, prepend) {
			if (prepend) {
				Animation.prefilters.unshift(callback);
			} else {
				Animation.prefilters.push(callback);
			}
		}
	});

	jQuery.speed = function (speed, easing, fn) {
		var opt = speed && (typeof speed === "undefined" ? "undefined" : _typeof(speed)) === "object" ? jQuery.extend({}, speed) : {
			complete: fn || !fn && easing || jQuery.isFunction(speed) && speed,
			duration: speed,
			easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
		};

		opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;

		// Normalize opt.queue - true/undefined/null -> "fx"
		if (opt.queue == null || opt.queue === true) {
			opt.queue = "fx";
		}

		// Queueing
		opt.old = opt.complete;

		opt.complete = function () {
			if (jQuery.isFunction(opt.old)) {
				opt.old.call(this);
			}

			if (opt.queue) {
				jQuery.dequeue(this, opt.queue);
			}
		};

		return opt;
	};

	jQuery.fn.extend({
		fadeTo: function fadeTo(speed, to, easing, callback) {

			// Show any hidden elements after setting opacity to 0
			return this.filter(isHidden).css("opacity", 0).show()

			// Animate to the value specified
			.end().animate({ opacity: to }, speed, easing, callback);
		},
		animate: function animate(prop, speed, easing, callback) {
			var empty = jQuery.isEmptyObject(prop),
			    optall = jQuery.speed(speed, easing, callback),
			    doAnimation = function doAnimation() {

				// Operate on a copy of prop so per-property easing won't be lost
				var anim = Animation(this, jQuery.extend({}, prop), optall);

				// Empty animations, or finishing resolves immediately
				if (empty || dataPriv.get(this, "finish")) {
					anim.stop(true);
				}
			};
			doAnimation.finish = doAnimation;

			return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
		},
		stop: function stop(type, clearQueue, gotoEnd) {
			var stopQueue = function stopQueue(hooks) {
				var stop = hooks.stop;
				delete hooks.stop;
				stop(gotoEnd);
			};

			if (typeof type !== "string") {
				gotoEnd = clearQueue;
				clearQueue = type;
				type = undefined;
			}
			if (clearQueue && type !== false) {
				this.queue(type || "fx", []);
			}

			return this.each(function () {
				var dequeue = true,
				    index = type != null && type + "queueHooks",
				    timers = jQuery.timers,
				    data = dataPriv.get(this);

				if (index) {
					if (data[index] && data[index].stop) {
						stopQueue(data[index]);
					}
				} else {
					for (index in data) {
						if (data[index] && data[index].stop && rrun.test(index)) {
							stopQueue(data[index]);
						}
					}
				}

				for (index = timers.length; index--;) {
					if (timers[index].elem === this && (type == null || timers[index].queue === type)) {

						timers[index].anim.stop(gotoEnd);
						dequeue = false;
						timers.splice(index, 1);
					}
				}

				// Start the next in the queue if the last step wasn't forced.
				// Timers currently will call their complete callbacks, which
				// will dequeue but only if they were gotoEnd.
				if (dequeue || !gotoEnd) {
					jQuery.dequeue(this, type);
				}
			});
		},
		finish: function finish(type) {
			if (type !== false) {
				type = type || "fx";
			}
			return this.each(function () {
				var index,
				    data = dataPriv.get(this),
				    queue = data[type + "queue"],
				    hooks = data[type + "queueHooks"],
				    timers = jQuery.timers,
				    length = queue ? queue.length : 0;

				// Enable finishing flag on private data
				data.finish = true;

				// Empty the queue first
				jQuery.queue(this, type, []);

				if (hooks && hooks.stop) {
					hooks.stop.call(this, true);
				}

				// Look for any active animations, and finish them
				for (index = timers.length; index--;) {
					if (timers[index].elem === this && timers[index].queue === type) {
						timers[index].anim.stop(true);
						timers.splice(index, 1);
					}
				}

				// Look for any animations in the old queue and finish them
				for (index = 0; index < length; index++) {
					if (queue[index] && queue[index].finish) {
						queue[index].finish.call(this);
					}
				}

				// Turn off finishing flag
				delete data.finish;
			});
		}
	});

	jQuery.each(["toggle", "show", "hide"], function (i, name) {
		var cssFn = jQuery.fn[name];
		jQuery.fn[name] = function (speed, easing, callback) {
			return speed == null || typeof speed === "boolean" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);
		};
	});

	// Generate shortcuts for custom animations
	jQuery.each({
		slideDown: genFx("show"),
		slideUp: genFx("hide"),
		slideToggle: genFx("toggle"),
		fadeIn: { opacity: "show" },
		fadeOut: { opacity: "hide" },
		fadeToggle: { opacity: "toggle" }
	}, function (name, props) {
		jQuery.fn[name] = function (speed, easing, callback) {
			return this.animate(props, speed, easing, callback);
		};
	});

	jQuery.timers = [];
	jQuery.fx.tick = function () {
		var timer,
		    i = 0,
		    timers = jQuery.timers;

		fxNow = jQuery.now();

		for (; i < timers.length; i++) {
			timer = timers[i];

			// Checks the timer has not already been removed
			if (!timer() && timers[i] === timer) {
				timers.splice(i--, 1);
			}
		}

		if (!timers.length) {
			jQuery.fx.stop();
		}
		fxNow = undefined;
	};

	jQuery.fx.timer = function (timer) {
		jQuery.timers.push(timer);
		if (timer()) {
			jQuery.fx.start();
		} else {
			jQuery.timers.pop();
		}
	};

	jQuery.fx.interval = 13;
	jQuery.fx.start = function () {
		if (!timerId) {
			timerId = window.setInterval(jQuery.fx.tick, jQuery.fx.interval);
		}
	};

	jQuery.fx.stop = function () {
		window.clearInterval(timerId);

		timerId = null;
	};

	jQuery.fx.speeds = {
		slow: 600,
		fast: 200,

		// Default speed
		_default: 400
	};

	// Based off of the plugin by Clint Helfers, with permission.
	// http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
	jQuery.fn.delay = function (time, type) {
		time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
		type = type || "fx";

		return this.queue(type, function (next, hooks) {
			var timeout = window.setTimeout(next, time);
			hooks.stop = function () {
				window.clearTimeout(timeout);
			};
		});
	};

	(function () {
		var input = document.createElement("input"),
		    select = document.createElement("select"),
		    opt = select.appendChild(document.createElement("option"));

		input.type = "checkbox";

		// Support: iOS<=5.1, Android<=4.2+
		// Default value for a checkbox should be "on"
		support.checkOn = input.value !== "";

		// Support: IE<=11+
		// Must access selectedIndex to make default options select
		support.optSelected = opt.selected;

		// Support: Android<=2.3
		// Options inside disabled selects are incorrectly marked as disabled
		select.disabled = true;
		support.optDisabled = !opt.disabled;

		// Support: IE<=11+
		// An input loses its value after becoming a radio
		input = document.createElement("input");
		input.value = "t";
		input.type = "radio";
		support.radioValue = input.value === "t";
	})();

	var boolHook,
	    attrHandle = jQuery.expr.attrHandle;

	jQuery.fn.extend({
		attr: function attr(name, value) {
			return access(this, jQuery.attr, name, value, arguments.length > 1);
		},

		removeAttr: function removeAttr(name) {
			return this.each(function () {
				jQuery.removeAttr(this, name);
			});
		}
	});

	jQuery.extend({
		attr: function attr(elem, name, value) {
			var ret,
			    hooks,
			    nType = elem.nodeType;

			// Don't get/set attributes on text, comment and attribute nodes
			if (nType === 3 || nType === 8 || nType === 2) {
				return;
			}

			// Fallback to prop when attributes are not supported
			if (typeof elem.getAttribute === "undefined") {
				return jQuery.prop(elem, name, value);
			}

			// All attributes are lowercase
			// Grab necessary hook if one is defined
			if (nType !== 1 || !jQuery.isXMLDoc(elem)) {
				name = name.toLowerCase();
				hooks = jQuery.attrHooks[name] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);
			}

			if (value !== undefined) {
				if (value === null) {
					jQuery.removeAttr(elem, name);
					return;
				}

				if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {
					return ret;
				}

				elem.setAttribute(name, value + "");
				return value;
			}

			if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
				return ret;
			}

			ret = jQuery.find.attr(elem, name);

			// Non-existent attributes return null, we normalize to undefined
			return ret == null ? undefined : ret;
		},

		attrHooks: {
			type: {
				set: function set(elem, value) {
					if (!support.radioValue && value === "radio" && jQuery.nodeName(elem, "input")) {
						var val = elem.value;
						elem.setAttribute("type", value);
						if (val) {
							elem.value = val;
						}
						return value;
					}
				}
			}
		},

		removeAttr: function removeAttr(elem, value) {
			var name,
			    propName,
			    i = 0,
			    attrNames = value && value.match(rnotwhite);

			if (attrNames && elem.nodeType === 1) {
				while (name = attrNames[i++]) {
					propName = jQuery.propFix[name] || name;

					// Boolean attributes get special treatment (#10870)
					if (jQuery.expr.match.bool.test(name)) {

						// Set corresponding property to false
						elem[propName] = false;
					}

					elem.removeAttribute(name);
				}
			}
		}
	});

	// Hooks for boolean attributes
	boolHook = {
		set: function set(elem, value, name) {
			if (value === false) {

				// Remove boolean attributes when set to false
				jQuery.removeAttr(elem, name);
			} else {
				elem.setAttribute(name, name);
			}
			return name;
		}
	};
	jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function (i, name) {
		var getter = attrHandle[name] || jQuery.find.attr;

		attrHandle[name] = function (elem, name, isXML) {
			var ret, handle;
			if (!isXML) {

				// Avoid an infinite loop by temporarily removing this function from the getter
				handle = attrHandle[name];
				attrHandle[name] = ret;
				ret = getter(elem, name, isXML) != null ? name.toLowerCase() : null;
				attrHandle[name] = handle;
			}
			return ret;
		};
	});

	var rfocusable = /^(?:input|select|textarea|button)$/i,
	    rclickable = /^(?:a|area)$/i;

	jQuery.fn.extend({
		prop: function prop(name, value) {
			return access(this, jQuery.prop, name, value, arguments.length > 1);
		},

		removeProp: function removeProp(name) {
			return this.each(function () {
				delete this[jQuery.propFix[name] || name];
			});
		}
	});

	jQuery.extend({
		prop: function prop(elem, name, value) {
			var ret,
			    hooks,
			    nType = elem.nodeType;

			// Don't get/set properties on text, comment and attribute nodes
			if (nType === 3 || nType === 8 || nType === 2) {
				return;
			}

			if (nType !== 1 || !jQuery.isXMLDoc(elem)) {

				// Fix name and attach hooks
				name = jQuery.propFix[name] || name;
				hooks = jQuery.propHooks[name];
			}

			if (value !== undefined) {
				if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {
					return ret;
				}

				return elem[name] = value;
			}

			if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
				return ret;
			}

			return elem[name];
		},

		propHooks: {
			tabIndex: {
				get: function get(elem) {

					// elem.tabIndex doesn't always return the
					// correct value when it hasn't been explicitly set
					// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
					// Use proper attribute retrieval(#12072)
					var tabindex = jQuery.find.attr(elem, "tabindex");

					return tabindex ? parseInt(tabindex, 10) : rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href ? 0 : -1;
				}
			}
		},

		propFix: {
			"for": "htmlFor",
			"class": "className"
		}
	});

	// Support: IE <=11 only
	// Accessing the selectedIndex property
	// forces the browser to respect setting selected
	// on the option
	// The getter ensures a default option is selected
	// when in an optgroup
	if (!support.optSelected) {
		jQuery.propHooks.selected = {
			get: function get(elem) {
				var parent = elem.parentNode;
				if (parent && parent.parentNode) {
					parent.parentNode.selectedIndex;
				}
				return null;
			},
			set: function set(elem) {
				var parent = elem.parentNode;
				if (parent) {
					parent.selectedIndex;

					if (parent.parentNode) {
						parent.parentNode.selectedIndex;
					}
				}
			}
		};
	}

	jQuery.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () {
		jQuery.propFix[this.toLowerCase()] = this;
	});

	var rclass = /[\t\r\n\f]/g;

	function getClass(elem) {
		return elem.getAttribute && elem.getAttribute("class") || "";
	}

	jQuery.fn.extend({
		addClass: function addClass(value) {
			var classes,
			    elem,
			    cur,
			    curValue,
			    clazz,
			    j,
			    finalValue,
			    i = 0;

			if (jQuery.isFunction(value)) {
				return this.each(function (j) {
					jQuery(this).addClass(value.call(this, j, getClass(this)));
				});
			}

			if (typeof value === "string" && value) {
				classes = value.match(rnotwhite) || [];

				while (elem = this[i++]) {
					curValue = getClass(elem);
					cur = elem.nodeType === 1 && (" " + curValue + " ").replace(rclass, " ");

					if (cur) {
						j = 0;
						while (clazz = classes[j++]) {
							if (cur.indexOf(" " + clazz + " ") < 0) {
								cur += clazz + " ";
							}
						}

						// Only assign if different to avoid unneeded rendering.
						finalValue = jQuery.trim(cur);
						if (curValue !== finalValue) {
							elem.setAttribute("class", finalValue);
						}
					}
				}
			}

			return this;
		},

		removeClass: function removeClass(value) {
			var classes,
			    elem,
			    cur,
			    curValue,
			    clazz,
			    j,
			    finalValue,
			    i = 0;

			if (jQuery.isFunction(value)) {
				return this.each(function (j) {
					jQuery(this).removeClass(value.call(this, j, getClass(this)));
				});
			}

			if (!arguments.length) {
				return this.attr("class", "");
			}

			if (typeof value === "string" && value) {
				classes = value.match(rnotwhite) || [];

				while (elem = this[i++]) {
					curValue = getClass(elem);

					// This expression is here for better compressibility (see addClass)
					cur = elem.nodeType === 1 && (" " + curValue + " ").replace(rclass, " ");

					if (cur) {
						j = 0;
						while (clazz = classes[j++]) {

							// Remove *all* instances
							while (cur.indexOf(" " + clazz + " ") > -1) {
								cur = cur.replace(" " + clazz + " ", " ");
							}
						}

						// Only assign if different to avoid unneeded rendering.
						finalValue = jQuery.trim(cur);
						if (curValue !== finalValue) {
							elem.setAttribute("class", finalValue);
						}
					}
				}
			}

			return this;
		},

		toggleClass: function toggleClass(value, stateVal) {
			var type = typeof value === "undefined" ? "undefined" : _typeof(value);

			if (typeof stateVal === "boolean" && type === "string") {
				return stateVal ? this.addClass(value) : this.removeClass(value);
			}

			if (jQuery.isFunction(value)) {
				return this.each(function (i) {
					jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);
				});
			}

			return this.each(function () {
				var className, i, self, classNames;

				if (type === "string") {

					// Toggle individual class names
					i = 0;
					self = jQuery(this);
					classNames = value.match(rnotwhite) || [];

					while (className = classNames[i++]) {

						// Check each className given, space separated list
						if (self.hasClass(className)) {
							self.removeClass(className);
						} else {
							self.addClass(className);
						}
					}

					// Toggle whole class name
				} else if (value === undefined || type === "boolean") {
					className = getClass(this);
					if (className) {

						// Store className if set
						dataPriv.set(this, "__className__", className);
					}

					// If the element has a class name or if we're passed `false`,
					// then remove the whole classname (if there was one, the above saved it).
					// Otherwise bring back whatever was previously saved (if anything),
					// falling back to the empty string if nothing was stored.
					if (this.setAttribute) {
						this.setAttribute("class", className || value === false ? "" : dataPriv.get(this, "__className__") || "");
					}
				}
			});
		},

		hasClass: function hasClass(selector) {
			var className,
			    elem,
			    i = 0;

			className = " " + selector + " ";
			while (elem = this[i++]) {
				if (elem.nodeType === 1 && (" " + getClass(elem) + " ").replace(rclass, " ").indexOf(className) > -1) {
					return true;
				}
			}

			return false;
		}
	});

	var rreturn = /\r/g,
	    rspaces = /[\x20\t\r\n\f]+/g;

	jQuery.fn.extend({
		val: function val(value) {
			var hooks,
			    ret,
			    isFunction,
			    elem = this[0];

			if (!arguments.length) {
				if (elem) {
					hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];

					if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== undefined) {
						return ret;
					}

					ret = elem.value;

					return typeof ret === "string" ?

					// Handle most common string cases
					ret.replace(rreturn, "") :

					// Handle cases where value is null/undef or number
					ret == null ? "" : ret;
				}

				return;
			}

			isFunction = jQuery.isFunction(value);

			return this.each(function (i) {
				var val;

				if (this.nodeType !== 1) {
					return;
				}

				if (isFunction) {
					val = value.call(this, i, jQuery(this).val());
				} else {
					val = value;
				}

				// Treat null/undefined as ""; convert numbers to string
				if (val == null) {
					val = "";
				} else if (typeof val === "number") {
					val += "";
				} else if (jQuery.isArray(val)) {
					val = jQuery.map(val, function (value) {
						return value == null ? "" : value + "";
					});
				}

				hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()];

				// If set returns undefined, fall back to normal setting
				if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === undefined) {
					this.value = val;
				}
			});
		}
	});

	jQuery.extend({
		valHooks: {
			option: {
				get: function get(elem) {

					var val = jQuery.find.attr(elem, "value");
					return val != null ? val :

					// Support: IE10-11+
					// option.text throws exceptions (#14686, #14858)
					// Strip and collapse whitespace
					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
					jQuery.trim(jQuery.text(elem)).replace(rspaces, " ");
				}
			},
			select: {
				get: function get(elem) {
					var value,
					    option,
					    options = elem.options,
					    index = elem.selectedIndex,
					    one = elem.type === "select-one" || index < 0,
					    values = one ? null : [],
					    max = one ? index + 1 : options.length,
					    i = index < 0 ? max : one ? index : 0;

					// Loop through all the selected options
					for (; i < max; i++) {
						option = options[i];

						// IE8-9 doesn't update selected after form reset (#2551)
						if ((option.selected || i === index) && (

						// Don't return options that are disabled or in a disabled optgroup
						support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && (!option.parentNode.disabled || !jQuery.nodeName(option.parentNode, "optgroup"))) {

							// Get the specific value for the option
							value = jQuery(option).val();

							// We don't need an array for one selects
							if (one) {
								return value;
							}

							// Multi-Selects return an array
							values.push(value);
						}
					}

					return values;
				},

				set: function set(elem, value) {
					var optionSet,
					    option,
					    options = elem.options,
					    values = jQuery.makeArray(value),
					    i = options.length;

					while (i--) {
						option = options[i];
						if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {
							optionSet = true;
						}
					}

					// Force browsers to behave consistently when non-matching value is set
					if (!optionSet) {
						elem.selectedIndex = -1;
					}
					return values;
				}
			}
		}
	});

	// Radios and checkboxes getter/setter
	jQuery.each(["radio", "checkbox"], function () {
		jQuery.valHooks[this] = {
			set: function set(elem, value) {
				if (jQuery.isArray(value)) {
					return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;
				}
			}
		};
		if (!support.checkOn) {
			jQuery.valHooks[this].get = function (elem) {
				return elem.getAttribute("value") === null ? "on" : elem.value;
			};
		}
	});

	// Return jQuery for attributes-only inclusion


	var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;

	jQuery.extend(jQuery.event, {

		trigger: function trigger(event, data, elem, onlyHandlers) {

			var i,
			    cur,
			    tmp,
			    bubbleType,
			    ontype,
			    handle,
			    special,
			    eventPath = [elem || document],
			    type = hasOwn.call(event, "type") ? event.type : event,
			    namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];

			cur = tmp = elem = elem || document;

			// Don't do events on text and comment nodes
			if (elem.nodeType === 3 || elem.nodeType === 8) {
				return;
			}

			// focus/blur morphs to focusin/out; ensure we're not firing them right now
			if (rfocusMorph.test(type + jQuery.event.triggered)) {
				return;
			}

			if (type.indexOf(".") > -1) {

				// Namespaced trigger; create a regexp to match event type in handle()
				namespaces = type.split(".");
				type = namespaces.shift();
				namespaces.sort();
			}
			ontype = type.indexOf(":") < 0 && "on" + type;

			// Caller can pass in a jQuery.Event object, Object, or just an event type string
			event = event[jQuery.expando] ? event : new jQuery.Event(type, (typeof event === "undefined" ? "undefined" : _typeof(event)) === "object" && event);

			// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
			event.isTrigger = onlyHandlers ? 2 : 3;
			event.namespace = namespaces.join(".");
			event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null;

			// Clean up the event in case it is being reused
			event.result = undefined;
			if (!event.target) {
				event.target = elem;
			}

			// Clone any incoming data and prepend the event, creating the handler arg list
			data = data == null ? [event] : jQuery.makeArray(data, [event]);

			// Allow special events to draw outside the lines
			special = jQuery.event.special[type] || {};
			if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {
				return;
			}

			// Determine event propagation path in advance, per W3C events spec (#9951)
			// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
			if (!onlyHandlers && !special.noBubble && !jQuery.isWindow(elem)) {

				bubbleType = special.delegateType || type;
				if (!rfocusMorph.test(bubbleType + type)) {
					cur = cur.parentNode;
				}
				for (; cur; cur = cur.parentNode) {
					eventPath.push(cur);
					tmp = cur;
				}

				// Only add window if we got to document (e.g., not plain obj or detached DOM)
				if (tmp === (elem.ownerDocument || document)) {
					eventPath.push(tmp.defaultView || tmp.parentWindow || window);
				}
			}

			// Fire handlers on the event path
			i = 0;
			while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {

				event.type = i > 1 ? bubbleType : special.bindType || type;

				// jQuery handler
				handle = (dataPriv.get(cur, "events") || {})[event.type] && dataPriv.get(cur, "handle");
				if (handle) {
					handle.apply(cur, data);
				}

				// Native handler
				handle = ontype && cur[ontype];
				if (handle && handle.apply && acceptData(cur)) {
					event.result = handle.apply(cur, data);
					if (event.result === false) {
						event.preventDefault();
					}
				}
			}
			event.type = type;

			// If nobody prevented the default action, do it now
			if (!onlyHandlers && !event.isDefaultPrevented()) {

				if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {

					// Call a native DOM method on the target with the same name name as the event.
					// Don't do default actions on window, that's where global variables be (#6170)
					if (ontype && jQuery.isFunction(elem[type]) && !jQuery.isWindow(elem)) {

						// Don't re-trigger an onFOO event when we call its FOO() method
						tmp = elem[ontype];

						if (tmp) {
							elem[ontype] = null;
						}

						// Prevent re-triggering of the same event, since we already bubbled it above
						jQuery.event.triggered = type;
						elem[type]();
						jQuery.event.triggered = undefined;

						if (tmp) {
							elem[ontype] = tmp;
						}
					}
				}
			}

			return event.result;
		},

		// Piggyback on a donor event to simulate a different one
		// Used only for `focus(in | out)` events
		simulate: function simulate(type, elem, event) {
			var e = jQuery.extend(new jQuery.Event(), event, {
				type: type,
				isSimulated: true
			});

			jQuery.event.trigger(e, null, elem);
		}

	});

	jQuery.fn.extend({

		trigger: function trigger(type, data) {
			return this.each(function () {
				jQuery.event.trigger(type, data, this);
			});
		},
		triggerHandler: function triggerHandler(type, data) {
			var elem = this[0];
			if (elem) {
				return jQuery.event.trigger(type, data, elem, true);
			}
		}
	});

	jQuery.each(("blur focus focusin focusout load resize scroll unload click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup error contextmenu").split(" "), function (i, name) {

		// Handle event binding
		jQuery.fn[name] = function (data, fn) {
			return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);
		};
	});

	jQuery.fn.extend({
		hover: function hover(fnOver, fnOut) {
			return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
		}
	});

	support.focusin = "onfocusin" in window;

	// Support: Firefox
	// Firefox doesn't have focus(in | out) events
	// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
	//
	// Support: Chrome, Safari
	// focus(in | out) events fire after focus & blur events,
	// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
	// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857
	if (!support.focusin) {
		jQuery.each({ focus: "focusin", blur: "focusout" }, function (orig, fix) {

			// Attach a single capturing handler on the document while someone wants focusin/focusout
			var handler = function handler(event) {
				jQuery.event.simulate(fix, event.target, jQuery.event.fix(event));
			};

			jQuery.event.special[fix] = {
				setup: function setup() {
					var doc = this.ownerDocument || this,
					    attaches = dataPriv.access(doc, fix);

					if (!attaches) {
						doc.addEventListener(orig, handler, true);
					}
					dataPriv.access(doc, fix, (attaches || 0) + 1);
				},
				teardown: function teardown() {
					var doc = this.ownerDocument || this,
					    attaches = dataPriv.access(doc, fix) - 1;

					if (!attaches) {
						doc.removeEventListener(orig, handler, true);
						dataPriv.remove(doc, fix);
					} else {
						dataPriv.access(doc, fix, attaches);
					}
				}
			};
		});
	}
	var location = window.location;

	var nonce = jQuery.now();

	var rquery = /\?/;

	// Support: Android 2.3
	// Workaround failure to string-cast null input
	jQuery.parseJSON = function (data) {
		return JSON.parse(data + "");
	};

	// Cross-browser xml parsing
	jQuery.parseXML = function (data) {
		var xml;
		if (!data || typeof data !== "string") {
			return null;
		}

		// Support: IE9
		try {
			xml = new window.DOMParser().parseFromString(data, "text/xml");
		} catch (e) {
			xml = undefined;
		}

		if (!xml || xml.getElementsByTagName("parsererror").length) {
			jQuery.error("Invalid XML: " + data);
		}
		return xml;
	};

	var rhash = /#.*$/,
	    rts = /([?&])_=[^&]*/,
	    rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,


	// #7653, #8125, #8152: local protocol detection
	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
	    rnoContent = /^(?:GET|HEAD)$/,
	    rprotocol = /^\/\//,


	/* Prefilters
  * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
  * 2) These are called:
  *    - BEFORE asking for a transport
  *    - AFTER param serialization (s.data is a string if s.processData is true)
  * 3) key is the dataType
  * 4) the catchall symbol "*" can be used
  * 5) execution will start with transport dataType and THEN continue down to "*" if needed
  */
	prefilters = {},


	/* Transports bindings
  * 1) key is the dataType
  * 2) the catchall symbol "*" can be used
  * 3) selection will start with transport dataType and THEN go to "*" if needed
  */
	transports = {},


	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
	allTypes = "*/".concat("*"),


	// Anchor tag for parsing the document origin
	originAnchor = document.createElement("a");
	originAnchor.href = location.href;

	// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
	function addToPrefiltersOrTransports(structure) {

		// dataTypeExpression is optional and defaults to "*"
		return function (dataTypeExpression, func) {

			if (typeof dataTypeExpression !== "string") {
				func = dataTypeExpression;
				dataTypeExpression = "*";
			}

			var dataType,
			    i = 0,
			    dataTypes = dataTypeExpression.toLowerCase().match(rnotwhite) || [];

			if (jQuery.isFunction(func)) {

				// For each dataType in the dataTypeExpression
				while (dataType = dataTypes[i++]) {

					// Prepend if requested
					if (dataType[0] === "+") {
						dataType = dataType.slice(1) || "*";
						(structure[dataType] = structure[dataType] || []).unshift(func);

						// Otherwise append
					} else {
						(structure[dataType] = structure[dataType] || []).push(func);
					}
				}
			}
		};
	}

	// Base inspection function for prefilters and transports
	function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {

		var inspected = {},
		    seekingTransport = structure === transports;

		function inspect(dataType) {
			var selected;
			inspected[dataType] = true;
			jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {
				var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
				if (typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[dataTypeOrTransport]) {

					options.dataTypes.unshift(dataTypeOrTransport);
					inspect(dataTypeOrTransport);
					return false;
				} else if (seekingTransport) {
					return !(selected = dataTypeOrTransport);
				}
			});
			return selected;
		}

		return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*");
	}

	// A special extend for ajax options
	// that takes "flat" options (not to be deep extended)
	// Fixes #9887
	function ajaxExtend(target, src) {
		var key,
		    deep,
		    flatOptions = jQuery.ajaxSettings.flatOptions || {};

		for (key in src) {
			if (src[key] !== undefined) {
				(flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];
			}
		}
		if (deep) {
			jQuery.extend(true, target, deep);
		}

		return target;
	}

	/* Handles responses to an ajax request:
  * - finds the right dataType (mediates between content-type and expected dataType)
  * - returns the corresponding response
  */
	function ajaxHandleResponses(s, jqXHR, responses) {

		var ct,
		    type,
		    finalDataType,
		    firstDataType,
		    contents = s.contents,
		    dataTypes = s.dataTypes;

		// Remove auto dataType and get content-type in the process
		while (dataTypes[0] === "*") {
			dataTypes.shift();
			if (ct === undefined) {
				ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
			}
		}

		// Check if we're dealing with a known content-type
		if (ct) {
			for (type in contents) {
				if (contents[type] && contents[type].test(ct)) {
					dataTypes.unshift(type);
					break;
				}
			}
		}

		// Check to see if we have a response for the expected dataType
		if (dataTypes[0] in responses) {
			finalDataType = dataTypes[0];
		} else {

			// Try convertible dataTypes
			for (type in responses) {
				if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
					finalDataType = type;
					break;
				}
				if (!firstDataType) {
					firstDataType = type;
				}
			}

			// Or just use first one
			finalDataType = finalDataType || firstDataType;
		}

		// If we found a dataType
		// We add the dataType to the list if needed
		// and return the corresponding response
		if (finalDataType) {
			if (finalDataType !== dataTypes[0]) {
				dataTypes.unshift(finalDataType);
			}
			return responses[finalDataType];
		}
	}

	/* Chain conversions given the request and the original response
  * Also sets the responseXXX fields on the jqXHR instance
  */
	function ajaxConvert(s, response, jqXHR, isSuccess) {
		var conv2,
		    current,
		    conv,
		    tmp,
		    prev,
		    converters = {},


		// Work with a copy of dataTypes in case we need to modify it for conversion
		dataTypes = s.dataTypes.slice();

		// Create converters map with lowercased keys
		if (dataTypes[1]) {
			for (conv in s.converters) {
				converters[conv.toLowerCase()] = s.converters[conv];
			}
		}

		current = dataTypes.shift();

		// Convert to each sequential dataType
		while (current) {

			if (s.responseFields[current]) {
				jqXHR[s.responseFields[current]] = response;
			}

			// Apply the dataFilter if provided
			if (!prev && isSuccess && s.dataFilter) {
				response = s.dataFilter(response, s.dataType);
			}

			prev = current;
			current = dataTypes.shift();

			if (current) {

				// There's only work to do if current dataType is non-auto
				if (current === "*") {

					current = prev;

					// Convert response if prev dataType is non-auto and differs from current
				} else if (prev !== "*" && prev !== current) {

					// Seek a direct converter
					conv = converters[prev + " " + current] || converters["* " + current];

					// If none found, seek a pair
					if (!conv) {
						for (conv2 in converters) {

							// If conv2 outputs current
							tmp = conv2.split(" ");
							if (tmp[1] === current) {

								// If prev can be converted to accepted input
								conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]];
								if (conv) {

									// Condense equivalence converters
									if (conv === true) {
										conv = converters[conv2];

										// Otherwise, insert the intermediate dataType
									} else if (converters[conv2] !== true) {
										current = tmp[0];
										dataTypes.unshift(tmp[1]);
									}
									break;
								}
							}
						}
					}

					// Apply converter (if not an equivalence)
					if (conv !== true) {

						// Unless errors are allowed to bubble, catch and return them
						if (conv && s.throws) {
							response = conv(response);
						} else {
							try {
								response = conv(response);
							} catch (e) {
								return {
									state: "parsererror",
									error: conv ? e : "No conversion from " + prev + " to " + current
								};
							}
						}
					}
				}
			}
		}

		return { state: "success", data: response };
	}

	jQuery.extend({

		// Counter for holding the number of active queries
		active: 0,

		// Last-Modified header cache for next request
		lastModified: {},
		etag: {},

		ajaxSettings: {
			url: location.href,
			type: "GET",
			isLocal: rlocalProtocol.test(location.protocol),
			global: true,
			processData: true,
			async: true,
			contentType: "application/x-www-form-urlencoded; charset=UTF-8",
			/*
   timeout: 0,
   data: null,
   dataType: null,
   username: null,
   password: null,
   cache: null,
   throws: false,
   traditional: false,
   headers: {},
   */

			accepts: {
				"*": allTypes,
				text: "text/plain",
				html: "text/html",
				xml: "application/xml, text/xml",
				json: "application/json, text/javascript"
			},

			contents: {
				xml: /\bxml\b/,
				html: /\bhtml/,
				json: /\bjson\b/
			},

			responseFields: {
				xml: "responseXML",
				text: "responseText",
				json: "responseJSON"
			},

			// Data converters
			// Keys separate source (or catchall "*") and destination types with a single space
			converters: {

				// Convert anything to text
				"* text": String,

				// Text to html (true = no transformation)
				"text html": true,

				// Evaluate text as a json expression
				"text json": jQuery.parseJSON,

				// Parse text as xml
				"text xml": jQuery.parseXML
			},

			// For options that shouldn't be deep extended:
			// you can add your own custom options here if
			// and when you create one that shouldn't be
			// deep extended (see ajaxExtend)
			flatOptions: {
				url: true,
				context: true
			}
		},

		// Creates a full fledged settings object into target
		// with both ajaxSettings and settings fields.
		// If target is omitted, writes into ajaxSettings.
		ajaxSetup: function ajaxSetup(target, settings) {
			return settings ?

			// Building a settings object
			ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) :

			// Extending ajaxSettings
			ajaxExtend(jQuery.ajaxSettings, target);
		},

		ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
		ajaxTransport: addToPrefiltersOrTransports(transports),

		// Main method
		ajax: function ajax(url, options) {

			// If url is an object, simulate pre-1.5 signature
			if ((typeof url === "undefined" ? "undefined" : _typeof(url)) === "object") {
				options = url;
				url = undefined;
			}

			// Force options to be an object
			options = options || {};

			var transport,


			// URL without anti-cache param
			cacheURL,


			// Response headers
			responseHeadersString,
			    responseHeaders,


			// timeout handle
			timeoutTimer,


			// Url cleanup var
			urlAnchor,


			// To know if global events are to be dispatched
			fireGlobals,


			// Loop variable
			i,


			// Create the final options object
			s = jQuery.ajaxSetup({}, options),


			// Callbacks context
			callbackContext = s.context || s,


			// Context for global events is callbackContext if it is a DOM node or jQuery collection
			globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,


			// Deferreds
			deferred = jQuery.Deferred(),
			    completeDeferred = jQuery.Callbacks("once memory"),


			// Status-dependent callbacks
			_statusCode = s.statusCode || {},


			// Headers (they are sent all at once)
			requestHeaders = {},
			    requestHeadersNames = {},


			// The jqXHR state
			state = 0,


			// Default abort message
			strAbort = "canceled",


			// Fake xhr
			jqXHR = {
				readyState: 0,

				// Builds headers hashtable if needed
				getResponseHeader: function getResponseHeader(key) {
					var match;
					if (state === 2) {
						if (!responseHeaders) {
							responseHeaders = {};
							while (match = rheaders.exec(responseHeadersString)) {
								responseHeaders[match[1].toLowerCase()] = match[2];
							}
						}
						match = responseHeaders[key.toLowerCase()];
					}
					return match == null ? null : match;
				},

				// Raw string
				getAllResponseHeaders: function getAllResponseHeaders() {
					return state === 2 ? responseHeadersString : null;
				},

				// Caches the header
				setRequestHeader: function setRequestHeader(name, value) {
					var lname = name.toLowerCase();
					if (!state) {
						name = requestHeadersNames[lname] = requestHeadersNames[lname] || name;
						requestHeaders[name] = value;
					}
					return this;
				},

				// Overrides response content-type header
				overrideMimeType: function overrideMimeType(type) {
					if (!state) {
						s.mimeType = type;
					}
					return this;
				},

				// Status-dependent callbacks
				statusCode: function statusCode(map) {
					var code;
					if (map) {
						if (state < 2) {
							for (code in map) {

								// Lazy-add the new callback in a way that preserves old ones
								_statusCode[code] = [_statusCode[code], map[code]];
							}
						} else {

							// Execute the appropriate callbacks
							jqXHR.always(map[jqXHR.status]);
						}
					}
					return this;
				},

				// Cancel the request
				abort: function abort(statusText) {
					var finalText = statusText || strAbort;
					if (transport) {
						transport.abort(finalText);
					}
					done(0, finalText);
					return this;
				}
			};

			// Attach deferreds
			deferred.promise(jqXHR).complete = completeDeferred.add;
			jqXHR.success = jqXHR.done;
			jqXHR.error = jqXHR.fail;

			// Remove hash character (#7531: and string promotion)
			// Add protocol if not provided (prefilters might expect it)
			// Handle falsy url in the settings object (#10093: consistency with old signature)
			// We also use the url parameter if available
			s.url = ((url || s.url || location.href) + "").replace(rhash, "").replace(rprotocol, location.protocol + "//");

			// Alias method option to type as per ticket #12004
			s.type = options.method || options.type || s.method || s.type;

			// Extract dataTypes list
			s.dataTypes = jQuery.trim(s.dataType || "*").toLowerCase().match(rnotwhite) || [""];

			// A cross-domain request is in order when the origin doesn't match the current origin.
			if (s.crossDomain == null) {
				urlAnchor = document.createElement("a");

				// Support: IE8-11+
				// IE throws exception if url is malformed, e.g. http://example.com:80x/
				try {
					urlAnchor.href = s.url;

					// Support: IE8-11+
					// Anchor's host property isn't correctly set when s.url is relative
					urlAnchor.href = urlAnchor.href;
					s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host;
				} catch (e) {

					// If there is an error parsing the URL, assume it is crossDomain,
					// it can be rejected by the transport if it is invalid
					s.crossDomain = true;
				}
			}

			// Convert data if not already a string
			if (s.data && s.processData && typeof s.data !== "string") {
				s.data = jQuery.param(s.data, s.traditional);
			}

			// Apply prefilters
			inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);

			// If request was aborted inside a prefilter, stop there
			if (state === 2) {
				return jqXHR;
			}

			// We can fire global events as of now if asked to
			// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
			fireGlobals = jQuery.event && s.global;

			// Watch for a new set of requests
			if (fireGlobals && jQuery.active++ === 0) {
				jQuery.event.trigger("ajaxStart");
			}

			// Uppercase the type
			s.type = s.type.toUpperCase();

			// Determine if request has content
			s.hasContent = !rnoContent.test(s.type);

			// Save the URL in case we're toying with the If-Modified-Since
			// and/or If-None-Match header later on
			cacheURL = s.url;

			// More options handling for requests with no content
			if (!s.hasContent) {

				// If data is available, append data to url
				if (s.data) {
					cacheURL = s.url += (rquery.test(cacheURL) ? "&" : "?") + s.data;

					// #9682: remove data so that it's not used in an eventual retry
					delete s.data;
				}

				// Add anti-cache in url if needed
				if (s.cache === false) {
					s.url = rts.test(cacheURL) ?

					// If there is already a '_' parameter, set its value
					cacheURL.replace(rts, "$1_=" + nonce++) :

					// Otherwise add one to the end
					cacheURL + (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce++;
				}
			}

			// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
			if (s.ifModified) {
				if (jQuery.lastModified[cacheURL]) {
					jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]);
				}
				if (jQuery.etag[cacheURL]) {
					jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL]);
				}
			}

			// Set the correct header, if data is being sent
			if (s.data && s.hasContent && s.contentType !== false || options.contentType) {
				jqXHR.setRequestHeader("Content-Type", s.contentType);
			}

			// Set the Accepts header for the server, depending on the dataType
			jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]);

			// Check for headers option
			for (i in s.headers) {
				jqXHR.setRequestHeader(i, s.headers[i]);
			}

			// Allow custom headers/mimetypes and early abort
			if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || state === 2)) {

				// Abort if not done already and return
				return jqXHR.abort();
			}

			// Aborting is no longer a cancellation
			strAbort = "abort";

			// Install callbacks on deferreds
			for (i in { success: 1, error: 1, complete: 1 }) {
				jqXHR[i](s[i]);
			}

			// Get transport
			transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);

			// If no transport, we auto-abort
			if (!transport) {
				done(-1, "No Transport");
			} else {
				jqXHR.readyState = 1;

				// Send global event
				if (fireGlobals) {
					globalEventContext.trigger("ajaxSend", [jqXHR, s]);
				}

				// If request was aborted inside ajaxSend, stop there
				if (state === 2) {
					return jqXHR;
				}

				// Timeout
				if (s.async && s.timeout > 0) {
					timeoutTimer = window.setTimeout(function () {
						jqXHR.abort("timeout");
					}, s.timeout);
				}

				try {
					state = 1;
					transport.send(requestHeaders, done);
				} catch (e) {

					// Propagate exception as error if not done
					if (state < 2) {
						done(-1, e);

						// Simply rethrow otherwise
					} else {
						throw e;
					}
				}
			}

			// Callback for when everything is done
			function done(status, nativeStatusText, responses, headers) {
				var isSuccess,
				    success,
				    error,
				    response,
				    modified,
				    statusText = nativeStatusText;

				// Called once
				if (state === 2) {
					return;
				}

				// State is "done" now
				state = 2;

				// Clear timeout if it exists
				if (timeoutTimer) {
					window.clearTimeout(timeoutTimer);
				}

				// Dereference transport for early garbage collection
				// (no matter how long the jqXHR object will be used)
				transport = undefined;

				// Cache response headers
				responseHeadersString = headers || "";

				// Set readyState
				jqXHR.readyState = status > 0 ? 4 : 0;

				// Determine if successful
				isSuccess = status >= 200 && status < 300 || status === 304;

				// Get response data
				if (responses) {
					response = ajaxHandleResponses(s, jqXHR, responses);
				}

				// Convert no matter what (that way responseXXX fields are always set)
				response = ajaxConvert(s, response, jqXHR, isSuccess);

				// If successful, handle type chaining
				if (isSuccess) {

					// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
					if (s.ifModified) {
						modified = jqXHR.getResponseHeader("Last-Modified");
						if (modified) {
							jQuery.lastModified[cacheURL] = modified;
						}
						modified = jqXHR.getResponseHeader("etag");
						if (modified) {
							jQuery.etag[cacheURL] = modified;
						}
					}

					// if no content
					if (status === 204 || s.type === "HEAD") {
						statusText = "nocontent";

						// if not modified
					} else if (status === 304) {
						statusText = "notmodified";

						// If we have data, let's convert it
					} else {
						statusText = response.state;
						success = response.data;
						error = response.error;
						isSuccess = !error;
					}
				} else {

					// Extract error from statusText and normalize for non-aborts
					error = statusText;
					if (status || !statusText) {
						statusText = "error";
						if (status < 0) {
							status = 0;
						}
					}
				}

				// Set data for the fake xhr object
				jqXHR.status = status;
				jqXHR.statusText = (nativeStatusText || statusText) + "";

				// Success/Error
				if (isSuccess) {
					deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);
				} else {
					deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);
				}

				// Status-dependent callbacks
				jqXHR.statusCode(_statusCode);
				_statusCode = undefined;

				if (fireGlobals) {
					globalEventContext.trigger(isSuccess ? "ajaxSuccess" : "ajaxError", [jqXHR, s, isSuccess ? success : error]);
				}

				// Complete
				completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);

				if (fireGlobals) {
					globalEventContext.trigger("ajaxComplete", [jqXHR, s]);

					// Handle the global AJAX counter
					if (! --jQuery.active) {
						jQuery.event.trigger("ajaxStop");
					}
				}
			}

			return jqXHR;
		},

		getJSON: function getJSON(url, data, callback) {
			return jQuery.get(url, data, callback, "json");
		},

		getScript: function getScript(url, callback) {
			return jQuery.get(url, undefined, callback, "script");
		}
	});

	jQuery.each(["get", "post"], function (i, method) {
		jQuery[method] = function (url, data, callback, type) {

			// Shift arguments if data argument was omitted
			if (jQuery.isFunction(data)) {
				type = type || callback;
				callback = data;
				data = undefined;
			}

			// The url can be an options object (which then must have .url)
			return jQuery.ajax(jQuery.extend({
				url: url,
				type: method,
				dataType: type,
				data: data,
				success: callback
			}, jQuery.isPlainObject(url) && url));
		};
	});

	jQuery._evalUrl = function (url) {
		return jQuery.ajax({
			url: url,

			// Make this explicit, since user can override this through ajaxSetup (#11264)
			type: "GET",
			dataType: "script",
			async: false,
			global: false,
			"throws": true
		});
	};

	jQuery.fn.extend({
		wrapAll: function wrapAll(html) {
			var wrap;

			if (jQuery.isFunction(html)) {
				return this.each(function (i) {
					jQuery(this).wrapAll(html.call(this, i));
				});
			}

			if (this[0]) {

				// The elements to wrap the target around
				wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);

				if (this[0].parentNode) {
					wrap.insertBefore(this[0]);
				}

				wrap.map(function () {
					var elem = this;

					while (elem.firstElementChild) {
						elem = elem.firstElementChild;
					}

					return elem;
				}).append(this);
			}

			return this;
		},

		wrapInner: function wrapInner(html) {
			if (jQuery.isFunction(html)) {
				return this.each(function (i) {
					jQuery(this).wrapInner(html.call(this, i));
				});
			}

			return this.each(function () {
				var self = jQuery(this),
				    contents = self.contents();

				if (contents.length) {
					contents.wrapAll(html);
				} else {
					self.append(html);
				}
			});
		},

		wrap: function wrap(html) {
			var isFunction = jQuery.isFunction(html);

			return this.each(function (i) {
				jQuery(this).wrapAll(isFunction ? html.call(this, i) : html);
			});
		},

		unwrap: function unwrap() {
			return this.parent().each(function () {
				if (!jQuery.nodeName(this, "body")) {
					jQuery(this).replaceWith(this.childNodes);
				}
			}).end();
		}
	});

	jQuery.expr.filters.hidden = function (elem) {
		return !jQuery.expr.filters.visible(elem);
	};
	jQuery.expr.filters.visible = function (elem) {

		// Support: Opera <= 12.12
		// Opera reports offsetWidths and offsetHeights less than zero on some elements
		// Use OR instead of AND as the element is not visible if either is true
		// See tickets #10406 and #13132
		return elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0;
	};

	var r20 = /%20/g,
	    rbracket = /\[\]$/,
	    rCRLF = /\r?\n/g,
	    rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
	    rsubmittable = /^(?:input|select|textarea|keygen)/i;

	function buildParams(prefix, obj, traditional, add) {
		var name;

		if (jQuery.isArray(obj)) {

			// Serialize array item.
			jQuery.each(obj, function (i, v) {
				if (traditional || rbracket.test(prefix)) {

					// Treat each array item as a scalar.
					add(prefix, v);
				} else {

					// Item is non-scalar (array or object), encode its numeric index.
					buildParams(prefix + "[" + ((typeof v === "undefined" ? "undefined" : _typeof(v)) === "object" && v != null ? i : "") + "]", v, traditional, add);
				}
			});
		} else if (!traditional && jQuery.type(obj) === "object") {

			// Serialize object item.
			for (name in obj) {
				buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
			}
		} else {

			// Serialize scalar item.
			add(prefix, obj);
		}
	}

	// Serialize an array of form elements or a set of
	// key/values into a query string
	jQuery.param = function (a, traditional) {
		var prefix,
		    s = [],
		    add = function add(key, value) {

			// If value is a function, invoke it and return its value
			value = jQuery.isFunction(value) ? value() : value == null ? "" : value;
			s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
		};

		// Set traditional to true for jQuery <= 1.3.2 behavior.
		if (traditional === undefined) {
			traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
		}

		// If an array was passed in, assume that it is an array of form elements.
		if (jQuery.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {

			// Serialize the form elements
			jQuery.each(a, function () {
				add(this.name, this.value);
			});
		} else {

			// If traditional, encode the "old" way (the way 1.3.2 or older
			// did it), otherwise encode params recursively.
			for (prefix in a) {
				buildParams(prefix, a[prefix], traditional, add);
			}
		}

		// Return the resulting serialization
		return s.join("&").replace(r20, "+");
	};

	jQuery.fn.extend({
		serialize: function serialize() {
			return jQuery.param(this.serializeArray());
		},
		serializeArray: function serializeArray() {
			return this.map(function () {

				// Can add propHook for "elements" to filter or add form elements
				var elements = jQuery.prop(this, "elements");
				return elements ? jQuery.makeArray(elements) : this;
			}).filter(function () {
				var type = this.type;

				// Use .is( ":disabled" ) so that fieldset[disabled] works
				return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));
			}).map(function (i, elem) {
				var val = jQuery(this).val();

				return val == null ? null : jQuery.isArray(val) ? jQuery.map(val, function (val) {
					return { name: elem.name, value: val.replace(rCRLF, "\r\n") };
				}) : { name: elem.name, value: val.replace(rCRLF, "\r\n") };
			}).get();
		}
	});

	jQuery.ajaxSettings.xhr = function () {
		try {
			return new window.XMLHttpRequest();
		} catch (e) {}
	};

	var xhrSuccessStatus = {

		// File protocol always yields status code 0, assume 200
		0: 200,

		// Support: IE9
		// #1450: sometimes IE returns 1223 when it should be 204
		1223: 204
	},
	    xhrSupported = jQuery.ajaxSettings.xhr();

	support.cors = !!xhrSupported && "withCredentials" in xhrSupported;
	support.ajax = xhrSupported = !!xhrSupported;

	jQuery.ajaxTransport(function (options) {
		var _callback, errorCallback;

		// Cross domain only allowed if supported through XMLHttpRequest
		if (support.cors || xhrSupported && !options.crossDomain) {
			return {
				send: function send(headers, complete) {
					var i,
					    xhr = options.xhr();

					xhr.open(options.type, options.url, options.async, options.username, options.password);

					// Apply custom fields if provided
					if (options.xhrFields) {
						for (i in options.xhrFields) {
							xhr[i] = options.xhrFields[i];
						}
					}

					// Override mime type if needed
					if (options.mimeType && xhr.overrideMimeType) {
						xhr.overrideMimeType(options.mimeType);
					}

					// X-Requested-With header
					// For cross-domain requests, seeing as conditions for a preflight are
					// akin to a jigsaw puzzle, we simply never set it to be sure.
					// (it can always be set on a per-request basis or even using ajaxSetup)
					// For same-domain requests, won't change header if already provided.
					if (!options.crossDomain && !headers["X-Requested-With"]) {
						headers["X-Requested-With"] = "XMLHttpRequest";
					}

					// Set headers
					for (i in headers) {
						xhr.setRequestHeader(i, headers[i]);
					}

					// Callback
					_callback = function callback(type) {
						return function () {
							if (_callback) {
								_callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;

								if (type === "abort") {
									xhr.abort();
								} else if (type === "error") {

									// Support: IE9
									// On a manual native abort, IE9 throws
									// errors on any property access that is not readyState
									if (typeof xhr.status !== "number") {
										complete(0, "error");
									} else {
										complete(

										// File: protocol always yields status 0; see #8605, #14207
										xhr.status, xhr.statusText);
									}
								} else {
									complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText,

									// Support: IE9 only
									// IE9 has no XHR2 but throws on binary (trac-11426)
									// For XHR2 non-text, let the caller handle it (gh-2498)
									(xhr.responseType || "text") !== "text" || typeof xhr.responseText !== "string" ? { binary: xhr.response } : { text: xhr.responseText }, xhr.getAllResponseHeaders());
								}
							}
						};
					};

					// Listen to events
					xhr.onload = _callback();
					errorCallback = xhr.onerror = _callback("error");

					// Support: IE9
					// Use onreadystatechange to replace onabort
					// to handle uncaught aborts
					if (xhr.onabort !== undefined) {
						xhr.onabort = errorCallback;
					} else {
						xhr.onreadystatechange = function () {

							// Check readyState before timeout as it changes
							if (xhr.readyState === 4) {

								// Allow onerror to be called first,
								// but that will not handle a native abort
								// Also, save errorCallback to a variable
								// as xhr.onerror cannot be accessed
								window.setTimeout(function () {
									if (_callback) {
										errorCallback();
									}
								});
							}
						};
					}

					// Create the abort callback
					_callback = _callback("abort");

					try {

						// Do send the request (this may raise an exception)
						xhr.send(options.hasContent && options.data || null);
					} catch (e) {

						// #14683: Only rethrow if this hasn't been notified as an error yet
						if (_callback) {
							throw e;
						}
					}
				},

				abort: function abort() {
					if (_callback) {
						_callback();
					}
				}
			};
		}
	});

	// Install script dataType
	jQuery.ajaxSetup({
		accepts: {
			script: "text/javascript, application/javascript, " + "application/ecmascript, application/x-ecmascript"
		},
		contents: {
			script: /\b(?:java|ecma)script\b/
		},
		converters: {
			"text script": function textScript(text) {
				jQuery.globalEval(text);
				return text;
			}
		}
	});

	// Handle cache's special case and crossDomain
	jQuery.ajaxPrefilter("script", function (s) {
		if (s.cache === undefined) {
			s.cache = false;
		}
		if (s.crossDomain) {
			s.type = "GET";
		}
	});

	// Bind script tag hack transport
	jQuery.ajaxTransport("script", function (s) {

		// This transport only deals with cross domain requests
		if (s.crossDomain) {
			var script, _callback2;
			return {
				send: function send(_, complete) {
					script = jQuery("<script>").prop({
						charset: s.scriptCharset,
						src: s.url
					}).on("load error", _callback2 = function callback(evt) {
						script.remove();
						_callback2 = null;
						if (evt) {
							complete(evt.type === "error" ? 404 : 200, evt.type);
						}
					});

					// Use native DOM manipulation to avoid our domManip AJAX trickery
					document.head.appendChild(script[0]);
				},
				abort: function abort() {
					if (_callback2) {
						_callback2();
					}
				}
			};
		}
	});

	var oldCallbacks = [],
	    rjsonp = /(=)\?(?=&|$)|\?\?/;

	// Default jsonp settings
	jQuery.ajaxSetup({
		jsonp: "callback",
		jsonpCallback: function jsonpCallback() {
			var callback = oldCallbacks.pop() || jQuery.expando + "_" + nonce++;
			this[callback] = true;
			return callback;
		}
	});

	// Detect, normalize options and install callbacks for jsonp requests
	jQuery.ajaxPrefilter("json jsonp", function (s, originalSettings, jqXHR) {

		var callbackName,
		    overwritten,
		    responseContainer,
		    jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? "url" : typeof s.data === "string" && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0 && rjsonp.test(s.data) && "data");

		// Handle iff the expected data type is "jsonp" or we have a parameter to set
		if (jsonProp || s.dataTypes[0] === "jsonp") {

			// Get callback name, remembering preexisting value associated with it
			callbackName = s.jsonpCallback = jQuery.isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;

			// Insert callback into url or form data
			if (jsonProp) {
				s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName);
			} else if (s.jsonp !== false) {
				s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName;
			}

			// Use data converter to retrieve json after script execution
			s.converters["script json"] = function () {
				if (!responseContainer) {
					jQuery.error(callbackName + " was not called");
				}
				return responseContainer[0];
			};

			// Force json dataType
			s.dataTypes[0] = "json";

			// Install callback
			overwritten = window[callbackName];
			window[callbackName] = function () {
				responseContainer = arguments;
			};

			// Clean-up function (fires after converters)
			jqXHR.always(function () {

				// If previous value didn't exist - remove it
				if (overwritten === undefined) {
					jQuery(window).removeProp(callbackName);

					// Otherwise restore preexisting value
				} else {
					window[callbackName] = overwritten;
				}

				// Save back as free
				if (s[callbackName]) {

					// Make sure that re-using the options doesn't screw things around
					s.jsonpCallback = originalSettings.jsonpCallback;

					// Save the callback name for future use
					oldCallbacks.push(callbackName);
				}

				// Call if it was a function and we have a response
				if (responseContainer && jQuery.isFunction(overwritten)) {
					overwritten(responseContainer[0]);
				}

				responseContainer = overwritten = undefined;
			});

			// Delegate to script
			return "script";
		}
	});

	// Argument "data" should be string of html
	// context (optional): If specified, the fragment will be created in this context,
	// defaults to document
	// keepScripts (optional): If true, will include scripts passed in the html string
	jQuery.parseHTML = function (data, context, keepScripts) {
		if (!data || typeof data !== "string") {
			return null;
		}
		if (typeof context === "boolean") {
			keepScripts = context;
			context = false;
		}
		context = context || document;

		var parsed = rsingleTag.exec(data),
		    scripts = !keepScripts && [];

		// Single tag
		if (parsed) {
			return [context.createElement(parsed[1])];
		}

		parsed = buildFragment([data], context, scripts);

		if (scripts && scripts.length) {
			jQuery(scripts).remove();
		}

		return jQuery.merge([], parsed.childNodes);
	};

	// Keep a copy of the old load method
	var _load = jQuery.fn.load;

	/**
  * Load a url into a page
  */
	jQuery.fn.load = function (url, params, callback) {
		if (typeof url !== "string" && _load) {
			return _load.apply(this, arguments);
		}

		var selector,
		    type,
		    response,
		    self = this,
		    off = url.indexOf(" ");

		if (off > -1) {
			selector = jQuery.trim(url.slice(off));
			url = url.slice(0, off);
		}

		// If it's a function
		if (jQuery.isFunction(params)) {

			// We assume that it's the callback
			callback = params;
			params = undefined;

			// Otherwise, build a param string
		} else if (params && (typeof params === "undefined" ? "undefined" : _typeof(params)) === "object") {
			type = "POST";
		}

		// If we have elements to modify, make the request
		if (self.length > 0) {
			jQuery.ajax({
				url: url,

				// If "type" variable is undefined, then "GET" method will be used.
				// Make value of this field explicit since
				// user can override it through ajaxSetup method
				type: type || "GET",
				dataType: "html",
				data: params
			}).done(function (responseText) {

				// Save response for use in complete callback
				response = arguments;

				self.html(selector ?

				// If a selector was specified, locate the right elements in a dummy div
				// Exclude scripts to avoid IE 'Permission Denied' errors
				jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector) :

				// Otherwise use the full result
				responseText);

				// If the request succeeds, this function gets "data", "status", "jqXHR"
				// but they are ignored because response was set above.
				// If it fails, this function gets "jqXHR", "status", "error"
			}).always(callback && function (jqXHR, status) {
				self.each(function () {
					callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);
				});
			});
		}

		return this;
	};

	// Attach a bunch of functions for handling common AJAX events
	jQuery.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (i, type) {
		jQuery.fn[type] = function (fn) {
			return this.on(type, fn);
		};
	});

	jQuery.expr.filters.animated = function (elem) {
		return jQuery.grep(jQuery.timers, function (fn) {
			return elem === fn.elem;
		}).length;
	};

	/**
  * Gets a window from an element
  */
	function getWindow(elem) {
		return jQuery.isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;
	}

	jQuery.offset = {
		setOffset: function setOffset(elem, options, i) {
			var curPosition,
			    curLeft,
			    curCSSTop,
			    curTop,
			    curOffset,
			    curCSSLeft,
			    calculatePosition,
			    position = jQuery.css(elem, "position"),
			    curElem = jQuery(elem),
			    props = {};

			// Set position first, in-case top/left are set even on static elem
			if (position === "static") {
				elem.style.position = "relative";
			}

			curOffset = curElem.offset();
			curCSSTop = jQuery.css(elem, "top");
			curCSSLeft = jQuery.css(elem, "left");
			calculatePosition = (position === "absolute" || position === "fixed") && (curCSSTop + curCSSLeft).indexOf("auto") > -1;

			// Need to be able to calculate position if either
			// top or left is auto and position is either absolute or fixed
			if (calculatePosition) {
				curPosition = curElem.position();
				curTop = curPosition.top;
				curLeft = curPosition.left;
			} else {
				curTop = parseFloat(curCSSTop) || 0;
				curLeft = parseFloat(curCSSLeft) || 0;
			}

			if (jQuery.isFunction(options)) {

				// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
				options = options.call(elem, i, jQuery.extend({}, curOffset));
			}

			if (options.top != null) {
				props.top = options.top - curOffset.top + curTop;
			}
			if (options.left != null) {
				props.left = options.left - curOffset.left + curLeft;
			}

			if ("using" in options) {
				options.using.call(elem, props);
			} else {
				curElem.css(props);
			}
		}
	};

	jQuery.fn.extend({
		offset: function offset(options) {
			if (arguments.length) {
				return options === undefined ? this : this.each(function (i) {
					jQuery.offset.setOffset(this, options, i);
				});
			}

			var docElem,
			    win,
			    elem = this[0],
			    box = { top: 0, left: 0 },
			    doc = elem && elem.ownerDocument;

			if (!doc) {
				return;
			}

			docElem = doc.documentElement;

			// Make sure it's not a disconnected DOM node
			if (!jQuery.contains(docElem, elem)) {
				return box;
			}

			box = elem.getBoundingClientRect();
			win = getWindow(doc);
			return {
				top: box.top + win.pageYOffset - docElem.clientTop,
				left: box.left + win.pageXOffset - docElem.clientLeft
			};
		},

		position: function position() {
			if (!this[0]) {
				return;
			}

			var offsetParent,
			    offset,
			    elem = this[0],
			    parentOffset = { top: 0, left: 0 };

			// Fixed elements are offset from window (parentOffset = {top:0, left: 0},
			// because it is its only offset parent
			if (jQuery.css(elem, "position") === "fixed") {

				// Assume getBoundingClientRect is there when computed position is fixed
				offset = elem.getBoundingClientRect();
			} else {

				// Get *real* offsetParent
				offsetParent = this.offsetParent();

				// Get correct offsets
				offset = this.offset();
				if (!jQuery.nodeName(offsetParent[0], "html")) {
					parentOffset = offsetParent.offset();
				}

				// Add offsetParent borders
				parentOffset.top += jQuery.css(offsetParent[0], "borderTopWidth", true);
				parentOffset.left += jQuery.css(offsetParent[0], "borderLeftWidth", true);
			}

			// Subtract parent offsets and element margins
			return {
				top: offset.top - parentOffset.top - jQuery.css(elem, "marginTop", true),
				left: offset.left - parentOffset.left - jQuery.css(elem, "marginLeft", true)
			};
		},

		// This method will return documentElement in the following cases:
		// 1) For the element inside the iframe without offsetParent, this method will return
		//    documentElement of the parent window
		// 2) For the hidden or detached element
		// 3) For body or html element, i.e. in case of the html node - it will return itself
		//
		// but those exceptions were never presented as a real life use-cases
		// and might be considered as more preferable results.
		//
		// This logic, however, is not guaranteed and can change at any point in the future
		offsetParent: function offsetParent() {
			return this.map(function () {
				var offsetParent = this.offsetParent;

				while (offsetParent && jQuery.css(offsetParent, "position") === "static") {
					offsetParent = offsetParent.offsetParent;
				}

				return offsetParent || documentElement;
			});
		}
	});

	// Create scrollLeft and scrollTop methods
	jQuery.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function (method, prop) {
		var top = "pageYOffset" === prop;

		jQuery.fn[method] = function (val) {
			return access(this, function (elem, method, val) {
				var win = getWindow(elem);

				if (val === undefined) {
					return win ? win[prop] : elem[method];
				}

				if (win) {
					win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset);
				} else {
					elem[method] = val;
				}
			}, method, val, arguments.length);
		};
	});

	// Support: Safari<7-8+, Chrome<37-44+
	// Add the top/left cssHooks using jQuery.fn.position
	// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
	// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
	// getComputedStyle returns percent when specified for top/left/bottom/right;
	// rather than make the css module depend on the offset module, just check for it here
	jQuery.each(["top", "left"], function (i, prop) {
		jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {
			if (computed) {
				computed = curCSS(elem, prop);

				// If curCSS returns percentage, fallback to offset
				return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + "px" : computed;
			}
		});
	});

	// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
	jQuery.each({ Height: "height", Width: "width" }, function (name, type) {
		jQuery.each({ padding: "inner" + name, content: type, "": "outer" + name }, function (defaultExtra, funcName) {

			// Margin is only for outerHeight, outerWidth
			jQuery.fn[funcName] = function (margin, value) {
				var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"),
				    extra = defaultExtra || (margin === true || value === true ? "margin" : "border");

				return access(this, function (elem, type, value) {
					var doc;

					if (jQuery.isWindow(elem)) {

						// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
						// isn't a whole lot we can do. See pull request at this URL for discussion:
						// https://github.com/jquery/jquery/pull/764
						return elem.document.documentElement["client" + name];
					}

					// Get document width or height
					if (elem.nodeType === 9) {
						doc = elem.documentElement;

						// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
						// whichever is greatest
						return Math.max(elem.body["scroll" + name], doc["scroll" + name], elem.body["offset" + name], doc["offset" + name], doc["client" + name]);
					}

					return value === undefined ?

					// Get width or height on the element, requesting but not forcing parseFloat
					jQuery.css(elem, type, extra) :

					// Set width or height on the element
					jQuery.style(elem, type, value, extra);
				}, type, chainable ? margin : undefined, chainable, null);
			};
		});
	});

	jQuery.fn.extend({

		bind: function bind(types, data, fn) {
			return this.on(types, null, data, fn);
		},
		unbind: function unbind(types, fn) {
			return this.off(types, null, fn);
		},

		delegate: function delegate(selector, types, data, fn) {
			return this.on(types, selector, data, fn);
		},
		undelegate: function undelegate(selector, types, fn) {

			// ( namespace ) or ( selector, types [, fn] )
			return arguments.length === 1 ? this.off(selector, "**") : this.off(types, selector || "**", fn);
		},
		size: function size() {
			return this.length;
		}
	});

	jQuery.fn.andSelf = jQuery.fn.addBack;

	// Register as a named AMD module, since jQuery can be concatenated with other
	// files that may use define, but not via a proper concatenation script that
	// understands anonymous AMD modules. A named AMD is safest and most robust
	// way to register. Lowercase jquery is used because AMD module names are
	// derived from file names, and jQuery is normally delivered in a lowercase
	// file name. Do this after creating the global so that if an AMD module wants
	// to call noConflict to hide this version of jQuery, it will work.

	// Note that for maximum portability, libraries that are not jQuery should
	// declare themselves as anonymous modules, and avoid setting a global if an
	// AMD loader is present. jQuery is a special case. For more information, see
	// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon

	if (typeof define === "function" && define.amd) {
		define("jquery", [], function () {
			return jQuery;
		});
	}

	var

	// Map over jQuery in case of overwrite
	_jQuery = window.jQuery,


	// Map over the $ in case of overwrite
	_$ = window.$;

	jQuery.noConflict = function (deep) {
		if (window.$ === jQuery) {
			window.$ = _$;
		}

		if (deep && window.jQuery === jQuery) {
			window.jQuery = _jQuery;
		}

		return jQuery;
	};

	// Expose jQuery and $ identifiers, even in AMD
	// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
	// and CommonJS for browser emulators (#13566)
	if (!noGlobal) {
		window.jQuery = window.$ = jQuery;
	}

	return jQuery;
});
/**
 * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).
 * @version v4.0.6
 * @link https://github.com/ten1seven/what-input
 * @license MIT
 */
(function webpackUniversalModuleDefinition(root, factory) {
	if(typeof exports === 'object' && typeof module === 'object')
		module.exports = factory();
	else if(typeof define === 'function' && define.amd)
		define("whatInput", [], factory);
	else if(typeof exports === 'object')
		exports["whatInput"] = factory();
	else
		root["whatInput"] = factory();
})(this, 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] = {
/******/ 			exports: {},
/******/ 			id: moduleId,
/******/ 			loaded: false
/******/ 		};

/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);

/******/ 		// Flag the module as loaded
/******/ 		module.loaded = 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;

/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";

/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports) {

	module.exports = (function() {

	  /*
	    ---------------
	    Variables
	    ---------------
	  */

	  // cache document.documentElement
	  var docElem = document.documentElement;

	  // last used input type
	  var currentInput = 'initial';

	  // last used input intent
	  var currentIntent = null;

	  // form input types
	  var formInputs = [
	    'input',
	    'select',
	    'textarea'
	  ];

	  // list of modifier keys commonly used with the mouse and
	  // can be safely ignored to prevent false keyboard detection
	  var ignoreMap = [
	    16, // shift
	    17, // control
	    18, // alt
	    91, // Windows key / left Apple cmd
	    93  // Windows menu / right Apple cmd
	  ];

	  // mapping of events to input types
	  var inputMap = {
	    'keyup': 'keyboard',
	    'mousedown': 'mouse',
	    'mousemove': 'mouse',
	    'MSPointerDown': 'pointer',
	    'MSPointerMove': 'pointer',
	    'pointerdown': 'pointer',
	    'pointermove': 'pointer',
	    'touchstart': 'touch'
	  };

	  // array of all used input types
	  var inputTypes = [];

	  // boolean: true if touch buffer timer is running
	  var isBuffering = false;

	  // map of IE 10 pointer events
	  var pointerMap = {
	    2: 'touch',
	    3: 'touch', // treat pen like touch
	    4: 'mouse'
	  };

	  // touch buffer timer
	  var touchTimer = null;


	  /*
	    ---------------
	    Set up
	    ---------------
	  */

	  var setUp = function() {

	    // add correct mouse wheel event mapping to `inputMap`
	    inputMap[detectWheel()] = 'mouse';

	    addListeners();
	    setInput();
	  };


	  /*
	    ---------------
	    Events
	    ---------------
	  */

	  var addListeners = function() {

	    // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding
	    // can only demonstrate potential, but not actual, interaction
	    // and are treated separately

	    // pointer events (mouse, pen, touch)
	    if (window.PointerEvent) {
	      docElem.addEventListener('pointerdown', updateInput);
	      docElem.addEventListener('pointermove', setIntent);
	    } else if (window.MSPointerEvent) {
	      docElem.addEventListener('MSPointerDown', updateInput);
	      docElem.addEventListener('MSPointerMove', setIntent);
	    } else {

	      // mouse events
	      docElem.addEventListener('mousedown', updateInput);
	      docElem.addEventListener('mousemove', setIntent);

	      // touch events
	      if ('ontouchstart' in window) {
	        docElem.addEventListener('touchstart', touchBuffer);
	      }
	    }

	    // mouse wheel
	    docElem.addEventListener(detectWheel(), setIntent);

	    // keyboard events
	    docElem.addEventListener('keydown', updateInput);
	    docElem.addEventListener('keyup', updateInput);
	  };

	  // checks conditions before updating new input
	  var updateInput = function(event) {

	    // only execute if the touch buffer timer isn't running
	    if (!isBuffering) {
	      var eventKey = event.which;
	      var value = inputMap[event.type];
	      if (value === 'pointer') value = pointerType(event);

	      if (
	        currentInput !== value ||
	        currentIntent !== value
	      ) {

	        var activeElem = document.activeElement;
	        var activeInput = (
	          activeElem &&
	          activeElem.nodeName &&
	          formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1
	        ) ? true : false;

	        if (
	          value === 'touch' ||

	          // ignore mouse modifier keys
	          (value === 'mouse' && ignoreMap.indexOf(eventKey) === -1) ||

	          // don't switch if the current element is a form input
	          (value === 'keyboard' && activeInput)
	        ) {

	          // set the current and catch-all variable
	          currentInput = currentIntent = value;

	          setInput();
	        }
	      }
	    }
	  };

	  // updates the doc and `inputTypes` array with new input
	  var setInput = function() {
	    docElem.setAttribute('data-whatinput', currentInput);
	    docElem.setAttribute('data-whatintent', currentInput);

	    if (inputTypes.indexOf(currentInput) === -1) {
	      inputTypes.push(currentInput);
	      docElem.className += ' whatinput-types-' + currentInput;
	    }
	  };

	  // updates input intent for `mousemove` and `pointermove`
	  var setIntent = function(event) {

	    // only execute if the touch buffer timer isn't running
	    if (!isBuffering) {
	      var value = inputMap[event.type];
	      if (value === 'pointer') value = pointerType(event);

	      if (currentIntent !== value) {
	        currentIntent = value;

	        docElem.setAttribute('data-whatintent', currentIntent);
	      }
	    }
	  };

	  // buffers touch events because they frequently also fire mouse events
	  var touchBuffer = function(event) {

	    // clear the timer if it happens to be running
	    window.clearTimeout(touchTimer);

	    // set the current input
	    updateInput(event);

	    // set the isBuffering to `true`
	    isBuffering = true;

	    // run the timer
	    touchTimer = window.setTimeout(function() {

	      // if the timer runs out, set isBuffering back to `false`
	      isBuffering = false;
	    }, 200);
	  };


	  /*
	    ---------------
	    Utilities
	    ---------------
	  */

	  var pointerType = function(event) {
	   if (typeof event.pointerType === 'number') {
	      return pointerMap[event.pointerType];
	   } else {
	      return (event.pointerType === 'pen') ? 'touch' : event.pointerType; // treat pen like touch
	   }
	  };

	  // detect version of mouse wheel event to use
	  // via https://developer.mozilla.org/en-US/docs/Web/Events/wheel
	  var detectWheel = function() {
	    return 'onwheel' in document.createElement('div') ?
	      'wheel' : // Modern browsers support "wheel"

	      document.onmousewheel !== undefined ?
	        'mousewheel' : // Webkit and IE support at least "mousewheel"
	        'DOMMouseScroll'; // let's assume that remaining browsers are older Firefox
	  };


	  /*
	    ---------------
	    Init

	    don't start script unless browser cuts the mustard
	    (also passes if polyfills are used)
	    ---------------
	  */

	  if (
	    'addEventListener' in window &&
	    Array.prototype.indexOf
	  ) {
	    setUp();
	  }


	  /*
	    ---------------
	    API
	    ---------------
	  */

	  return {

	    // returns string: the current input type
	    // opt: 'loose'|'strict'
	    // 'strict' (default): returns the same value as the `data-whatinput` attribute
	    // 'loose': includes `data-whatintent` value if it's more current than `data-whatinput`
	    ask: function(opt) { return (opt === 'loose') ? currentIntent : currentInput; },

	    // returns array: all the detected input types
	    types: function() { return inputTypes; }

	  };

	}());


/***/ }
/******/ ])
});
;
'use strict';

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 ($) {

  "use strict";

  var FOUNDATION_VERSION = '6.3.0';

  // Global Foundation object
  // This is attached to the window, or used as a module for AMD/Browserify
  var Foundation = {
    version: FOUNDATION_VERSION,

    /**
     * Stores initialized plugins.
     */
    _plugins: {},

    /**
     * Stores generated unique ids for plugin instances
     */
    _uuids: [],

    /**
     * Returns a boolean for RTL support
     */
    rtl: function rtl() {
      return $('html').attr('dir') === 'rtl';
    },
    /**
     * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.
     * @param {Object} plugin - The constructor of the plugin.
     */
    plugin: function plugin(_plugin, name) {
      // Object key to use when adding to global Foundation object
      // Examples: Foundation.Reveal, Foundation.OffCanvas
      var className = name || functionName(_plugin);
      // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin
      // Examples: data-reveal, data-off-canvas
      var attrName = hyphenate(className);

      // Add to the Foundation object and the plugins list (for reflowing)
      this._plugins[attrName] = this[className] = _plugin;
    },
    /**
     * @function
     * Populates the _uuids array with pointers to each individual plugin instance.
     * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.
     * Also fires the initialization event for each plugin, consolidating repetitive code.
     * @param {Object} plugin - an instance of a plugin, usually `this` in context.
     * @param {String} name - the name of the plugin, passed as a camelCased string.
     * @fires Plugin#init
     */
    registerPlugin: function registerPlugin(plugin, name) {
      var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();
      plugin.uuid = this.GetYoDigits(6, pluginName);

      if (!plugin.$element.attr('data-' + pluginName)) {
        plugin.$element.attr('data-' + pluginName, plugin.uuid);
      }
      if (!plugin.$element.data('zfPlugin')) {
        plugin.$element.data('zfPlugin', plugin);
      }
      /**
       * Fires when the plugin has initialized.
       * @event Plugin#init
       */
      plugin.$element.trigger('init.zf.' + pluginName);

      this._uuids.push(plugin.uuid);

      return;
    },
    /**
     * @function
     * Removes the plugins uuid from the _uuids array.
     * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.
     * Also fires the destroyed event for the plugin, consolidating repetitive code.
     * @param {Object} plugin - an instance of a plugin, usually `this` in context.
     * @fires Plugin#destroyed
     */
    unregisterPlugin: function unregisterPlugin(plugin) {
      var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));

      this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);
      plugin.$element.removeAttr('data-' + pluginName).removeData('zfPlugin')
      /**
       * Fires when the plugin has been destroyed.
       * @event Plugin#destroyed
       */
      .trigger('destroyed.zf.' + pluginName);
      for (var prop in plugin) {
        plugin[prop] = null; //clean up script to prep for garbage collection.
      }
      return;
    },

    /**
     * @function
     * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.
     * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'`
     * @default If no argument is passed, reflow all currently active plugins.
     */
    reInit: function reInit(plugins) {
      var isJQ = plugins instanceof $;
      try {
        if (isJQ) {
          plugins.each(function () {
            $(this).data('zfPlugin')._init();
          });
        } else {
          var type = typeof plugins === 'undefined' ? 'undefined' : _typeof(plugins),
              _this = this,
              fns = {
            'object': function object(plgs) {
              plgs.forEach(function (p) {
                p = hyphenate(p);
                $('[data-' + p + ']').foundation('_init');
              });
            },
            'string': function string() {
              plugins = hyphenate(plugins);
              $('[data-' + plugins + ']').foundation('_init');
            },
            'undefined': function undefined() {
              this['object'](Object.keys(_this._plugins));
            }
          };
          fns[type](plugins);
        }
      } catch (err) {
        console.error(err);
      } finally {
        return plugins;
      }
    },

    /**
     * returns a random base-36 uid with namespacing
     * @function
     * @param {Number} length - number of random base-36 digits desired. Increase for more random strings.
     * @param {String} namespace - name of plugin to be incorporated in uid, optional.
     * @default {String} '' - if no plugin name is provided, nothing is appended to the uid.
     * @returns {String} - unique id
     */
    GetYoDigits: function GetYoDigits(length, namespace) {
      length = length || 6;
      return Math.round(Math.pow(36, length + 1) - Math.random() * Math.pow(36, length)).toString(36).slice(1) + (namespace ? '-' + namespace : '');
    },
    /**
     * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.
     * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.
     * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.
     */
    reflow: function reflow(elem, plugins) {

      // If plugins is undefined, just grab everything
      if (typeof plugins === 'undefined') {
        plugins = Object.keys(this._plugins);
      }
      // If plugins is a string, convert it to an array with one item
      else if (typeof plugins === 'string') {
          plugins = [plugins];
        }

      var _this = this;

      // Iterate through each plugin
      $.each(plugins, function (i, name) {
        // Get the current plugin
        var plugin = _this._plugins[name];

        // Localize the search to all elements inside elem, as well as elem itself, unless elem === document
        var $elem = $(elem).find('[data-' + name + ']').addBack('[data-' + name + ']');

        // For each plugin found, initialize it
        $elem.each(function () {
          var $el = $(this),
              opts = {};
          // Don't double-dip on plugins
          if ($el.data('zfPlugin')) {
            console.warn("Tried to initialize " + name + " on an element that already has a Foundation plugin.");
            return;
          }

          if ($el.attr('data-options')) {
            var thing = $el.attr('data-options').split(';').forEach(function (e, i) {
              var opt = e.split(':').map(function (el) {
                return el.trim();
              });
              if (opt[0]) opts[opt[0]] = parseValue(opt[1]);
            });
          }
          try {
            $el.data('zfPlugin', new plugin($(this), opts));
          } catch (er) {
            console.error(er);
          } finally {
            return;
          }
        });
      });
    },
    getFnName: functionName,
    transitionend: function transitionend($elem) {
      var transitions = {
        'transition': 'transitionend',
        'WebkitTransition': 'webkitTransitionEnd',
        'MozTransition': 'transitionend',
        'OTransition': 'otransitionend'
      };
      var elem = document.createElement('div'),
          end;

      for (var t in transitions) {
        if (typeof elem.style[t] !== 'undefined') {
          end = transitions[t];
        }
      }
      if (end) {
        return end;
      } else {
        end = setTimeout(function () {
          $elem.triggerHandler('transitionend', [$elem]);
        }, 1);
        return 'transitionend';
      }
    }
  };

  Foundation.util = {
    /**
     * Function for applying a debounce effect to a function call.
     * @function
     * @param {Function} func - Function to be called at end of timeout.
     * @param {Number} delay - Time in ms to delay the call of `func`.
     * @returns function
     */
    throttle: function throttle(func, delay) {
      var timer = null;

      return function () {
        var context = this,
            args = arguments;

        if (timer === null) {
          timer = setTimeout(function () {
            func.apply(context, args);
            timer = null;
          }, delay);
        }
      };
    }
  };

  // TODO: consider not making this a jQuery function
  // TODO: need way to reflow vs. re-initialize
  /**
   * The Foundation jQuery method.
   * @param {String|Array} method - An action to perform on the current jQuery object.
   */
  var foundation = function foundation(method) {
    var type = typeof method === 'undefined' ? 'undefined' : _typeof(method),
        $meta = $('meta.foundation-mq'),
        $noJS = $('.no-js');

    if (!$meta.length) {
      $('<meta class="foundation-mq">').appendTo(document.head);
    }
    if ($noJS.length) {
      $noJS.removeClass('no-js');
    }

    if (type === 'undefined') {
      //needs to initialize the Foundation object, or an individual plugin.
      Foundation.MediaQuery._init();
      Foundation.reflow(this);
    } else if (type === 'string') {
      //an individual method to invoke on a plugin or group of plugins
      var args = Array.prototype.slice.call(arguments, 1); //collect all the arguments, if necessary
      var plugClass = this.data('zfPlugin'); //determine the class of plugin

      if (plugClass !== undefined && plugClass[method] !== undefined) {
        //make sure both the class and method exist
        if (this.length === 1) {
          //if there's only one, call it directly.
          plugClass[method].apply(plugClass, args);
        } else {
          this.each(function (i, el) {
            //otherwise loop through the jQuery collection and invoke the method on each
            plugClass[method].apply($(el).data('zfPlugin'), args);
          });
        }
      } else {
        //error for no class or no method
        throw new ReferenceError("We're sorry, '" + method + "' is not an available method for " + (plugClass ? functionName(plugClass) : 'this element') + '.');
      }
    } else {
      //error for invalid argument type
      throw new TypeError('We\'re sorry, ' + type + ' is not a valid parameter. You must use a string representing the method you wish to invoke.');
    }
    return this;
  };

  window.Foundation = Foundation;
  $.fn.foundation = foundation;

  // Polyfill for requestAnimationFrame
  (function () {
    if (!Date.now || !window.Date.now) window.Date.now = Date.now = function () {
      return new Date().getTime();
    };

    var vendors = ['webkit', 'moz'];
    for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
      var vp = vendors[i];
      window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];
      window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame'];
    }
    if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {
      var lastTime = 0;
      window.requestAnimationFrame = function (callback) {
        var now = Date.now();
        var nextTime = Math.max(lastTime + 16, now);
        return setTimeout(function () {
          callback(lastTime = nextTime);
        }, nextTime - now);
      };
      window.cancelAnimationFrame = clearTimeout;
    }
    /**
     * Polyfill for performance.now, required by rAF
     */
    if (!window.performance || !window.performance.now) {
      window.performance = {
        start: Date.now(),
        now: function now() {
          return Date.now() - this.start;
        }
      };
    }
  })();
  if (!Function.prototype.bind) {
    Function.prototype.bind = function (oThis) {
      if (typeof this !== 'function') {
        // closest thing possible to the ECMAScript 5
        // internal IsCallable function
        throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
      }

      var aArgs = Array.prototype.slice.call(arguments, 1),
          fToBind = this,
          fNOP = function fNOP() {},
          fBound = function fBound() {
        return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));
      };

      if (this.prototype) {
        // native functions don't have a prototype
        fNOP.prototype = this.prototype;
      }
      fBound.prototype = new fNOP();

      return fBound;
    };
  }
  // Polyfill to get the name of a function in IE9
  function functionName(fn) {
    if (Function.prototype.name === undefined) {
      var funcNameRegex = /function\s([^(]{1,})\(/;
      var results = funcNameRegex.exec(fn.toString());
      return results && results.length > 1 ? results[1].trim() : "";
    } else if (fn.prototype === undefined) {
      return fn.constructor.name;
    } else {
      return fn.prototype.constructor.name;
    }
  }
  function parseValue(str) {
    if ('true' === str) return true;else if ('false' === str) return false;else if (!isNaN(str * 1)) return parseFloat(str);
    return str;
  }
  // Convert PascalCase to kebab-case
  // Thank you: http://stackoverflow.com/a/8955580
  function hyphenate(str) {
    return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
  }
}(jQuery);
'use strict';

!function ($) {

  Foundation.Box = {
    ImNotTouchingYou: ImNotTouchingYou,
    GetDimensions: GetDimensions,
    GetOffsets: GetOffsets
  };

  /**
   * Compares the dimensions of an element to a container and determines collision events with container.
   * @function
   * @param {jQuery} element - jQuery object to test for collisions.
   * @param {jQuery} parent - jQuery object to use as bounding container.
   * @param {Boolean} lrOnly - set to true to check left and right values only.
   * @param {Boolean} tbOnly - set to true to check top and bottom values only.
   * @default if no parent object passed, detects collisions with `window`.
   * @returns {Boolean} - true if collision free, false if a collision in any direction.
   */
  function ImNotTouchingYou(element, parent, lrOnly, tbOnly) {
    var eleDims = GetDimensions(element),
        top,
        bottom,
        left,
        right;

    if (parent) {
      var parDims = GetDimensions(parent);

      bottom = eleDims.offset.top + eleDims.height <= parDims.height + parDims.offset.top;
      top = eleDims.offset.top >= parDims.offset.top;
      left = eleDims.offset.left >= parDims.offset.left;
      right = eleDims.offset.left + eleDims.width <= parDims.width + parDims.offset.left;
    } else {
      bottom = eleDims.offset.top + eleDims.height <= eleDims.windowDims.height + eleDims.windowDims.offset.top;
      top = eleDims.offset.top >= eleDims.windowDims.offset.top;
      left = eleDims.offset.left >= eleDims.windowDims.offset.left;
      right = eleDims.offset.left + eleDims.width <= eleDims.windowDims.width;
    }

    var allDirs = [bottom, top, left, right];

    if (lrOnly) {
      return left === right === true;
    }

    if (tbOnly) {
      return top === bottom === true;
    }

    return allDirs.indexOf(false) === -1;
  };

  /**
   * Uses native methods to return an object of dimension values.
   * @function
   * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window.
   * @returns {Object} - nested object of integer pixel values
   * TODO - if element is window, return only those values.
   */
  function GetDimensions(elem, test) {
    elem = elem.length ? elem[0] : elem;

    if (elem === window || elem === document) {
      throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");
    }

    var rect = elem.getBoundingClientRect(),
        parRect = elem.parentNode.getBoundingClientRect(),
        winRect = document.body.getBoundingClientRect(),
        winY = window.pageYOffset,
        winX = window.pageXOffset;

    return {
      width: rect.width,
      height: rect.height,
      offset: {
        top: rect.top + winY,
        left: rect.left + winX
      },
      parentDims: {
        width: parRect.width,
        height: parRect.height,
        offset: {
          top: parRect.top + winY,
          left: parRect.left + winX
        }
      },
      windowDims: {
        width: winRect.width,
        height: winRect.height,
        offset: {
          top: winY,
          left: winX
        }
      }
    };
  }

  /**
   * Returns an object of top and left integer pixel values for dynamically rendered elements,
   * such as: Tooltip, Reveal, and Dropdown
   * @function
   * @param {jQuery} element - jQuery object for the element being positioned.
   * @param {jQuery} anchor - jQuery object for the element's anchor point.
   * @param {String} position - a string relating to the desired position of the element, relative to it's anchor
   * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element.
   * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element.
   * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset.
   * TODO alter/rewrite to work with `em` values as well/instead of pixels
   */
  function GetOffsets(element, anchor, position, vOffset, hOffset, isOverflow) {
    var $eleDims = GetDimensions(element),
        $anchorDims = anchor ? GetDimensions(anchor) : null;

    switch (position) {
      case 'top':
        return {
          left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left,
          top: $anchorDims.offset.top - ($eleDims.height + vOffset)
        };
        break;
      case 'left':
        return {
          left: $anchorDims.offset.left - ($eleDims.width + hOffset),
          top: $anchorDims.offset.top
        };
        break;
      case 'right':
        return {
          left: $anchorDims.offset.left + $anchorDims.width + hOffset,
          top: $anchorDims.offset.top
        };
        break;
      case 'center top':
        return {
          left: $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2,
          top: $anchorDims.offset.top - ($eleDims.height + vOffset)
        };
        break;
      case 'center bottom':
        return {
          left: isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2,
          top: $anchorDims.offset.top + $anchorDims.height + vOffset
        };
        break;
      case 'center left':
        return {
          left: $anchorDims.offset.left - ($eleDims.width + hOffset),
          top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2
        };
        break;
      case 'center right':
        return {
          left: $anchorDims.offset.left + $anchorDims.width + hOffset + 1,
          top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2
        };
        break;
      case 'center':
        return {
          left: $eleDims.windowDims.offset.left + $eleDims.windowDims.width / 2 - $eleDims.width / 2,
          top: $eleDims.windowDims.offset.top + $eleDims.windowDims.height / 2 - $eleDims.height / 2
        };
        break;
      case 'reveal':
        return {
          left: ($eleDims.windowDims.width - $eleDims.width) / 2,
          top: $eleDims.windowDims.offset.top + vOffset
        };
      case 'reveal full':
        return {
          left: $eleDims.windowDims.offset.left,
          top: $eleDims.windowDims.offset.top
        };
        break;
      case 'left bottom':
        return {
          left: $anchorDims.offset.left,
          top: $anchorDims.offset.top + $anchorDims.height + vOffset
        };
        break;
      case 'right bottom':
        return {
          left: $anchorDims.offset.left + $anchorDims.width + hOffset - $eleDims.width,
          top: $anchorDims.offset.top + $anchorDims.height + vOffset
        };
        break;
      default:
        return {
          left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left + hOffset,
          top: $anchorDims.offset.top + $anchorDims.height + vOffset
        };
    }
  }
}(jQuery);
/*******************************************
 *                                         *
 * This util was created by Marius Olbertz *
 * Please thank Marius on GitHub /owlbertz *
 * or the web http://www.mariusolbertz.de/ *
 *                                         *
 ******************************************/

'use strict';

!function ($) {

  var keyCodes = {
    9: 'TAB',
    13: 'ENTER',
    27: 'ESCAPE',
    32: 'SPACE',
    37: 'ARROW_LEFT',
    38: 'ARROW_UP',
    39: 'ARROW_RIGHT',
    40: 'ARROW_DOWN'
  };

  var commands = {};

  var Keyboard = {
    keys: getKeyCodes(keyCodes),

    /**
     * Parses the (keyboard) event and returns a String that represents its key
     * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE
     * @param {Event} event - the event generated by the event handler
     * @return String key - String that represents the key pressed
     */
    parseKey: function parseKey(event) {
      var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase();

      // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events
      key = key.replace(/\W+/, '');

      if (event.shiftKey) key = 'SHIFT_' + key;
      if (event.ctrlKey) key = 'CTRL_' + key;
      if (event.altKey) key = 'ALT_' + key;

      // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)
      key = key.replace(/_$/, '');

      return key;
    },


    /**
     * Handles the given (keyboard) event
     * @param {Event} event - the event generated by the event handler
     * @param {String} component - Foundation component's name, e.g. Slider or Reveal
     * @param {Objects} functions - collection of functions that are to be executed
     */
    handleKey: function handleKey(event, component, functions) {
      var commandList = commands[component],
          keyCode = this.parseKey(event),
          cmds,
          command,
          fn;

      if (!commandList) return console.warn('Component not defined!');

      if (typeof commandList.ltr === 'undefined') {
        // this component does not differentiate between ltr and rtl
        cmds = commandList; // use plain list
      } else {
        // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa
        if (Foundation.rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl);else cmds = $.extend({}, commandList.rtl, commandList.ltr);
      }
      command = cmds[keyCode];

      fn = functions[command];
      if (fn && typeof fn === 'function') {
        // execute function  if exists
        var returnValue = fn.apply();
        if (functions.handled || typeof functions.handled === 'function') {
          // execute function when event was handled
          functions.handled(returnValue);
        }
      } else {
        if (functions.unhandled || typeof functions.unhandled === 'function') {
          // execute function when event was not handled
          functions.unhandled();
        }
      }
    },


    /**
     * Finds all focusable elements within the given `$element`
     * @param {jQuery} $element - jQuery object to search within
     * @return {jQuery} $focusable - all focusable elements within `$element`
     */
    findFocusable: function findFocusable($element) {
      if (!$element) {
        return false;
      }
      return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function () {
        if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) {
          return false;
        } //only have visible elements and those that have a tabindex greater or equal 0
        return true;
      });
    },


    /**
     * Returns the component name name
     * @param {Object} component - Foundation component, e.g. Slider or Reveal
     * @return String componentName
     */

    register: function register(componentName, cmds) {
      commands[componentName] = cmds;
    },


    /**
     * Traps the focus in the given element.
     * @param  {jQuery} $element  jQuery object to trap the foucs into.
     */
    trapFocus: function trapFocus($element) {
      var $focusable = Foundation.Keyboard.findFocusable($element),
          $firstFocusable = $focusable.eq(0),
          $lastFocusable = $focusable.eq(-1);

      $element.on('keydown.zf.trapfocus', function (event) {
        if (event.target === $lastFocusable[0] && Foundation.Keyboard.parseKey(event) === 'TAB') {
          event.preventDefault();
          $firstFocusable.focus();
        } else if (event.target === $firstFocusable[0] && Foundation.Keyboard.parseKey(event) === 'SHIFT_TAB') {
          event.preventDefault();
          $lastFocusable.focus();
        }
      });
    },

    /**
     * Releases the trapped focus from the given element.
     * @param  {jQuery} $element  jQuery object to release the focus for.
     */
    releaseFocus: function releaseFocus($element) {
      $element.off('keydown.zf.trapfocus');
    }
  };

  /*
   * Constants for easier comparing.
   * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE
   */
  function getKeyCodes(kcs) {
    var k = {};
    for (var kc in kcs) {
      k[kcs[kc]] = kcs[kc];
    }return k;
  }

  Foundation.Keyboard = Keyboard;
}(jQuery);
'use strict';

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 ($) {

  // Default set of media queries
  var defaultQueries = {
    'default': 'only screen',
    landscape: 'only screen and (orientation: landscape)',
    portrait: 'only screen and (orientation: portrait)',
    retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)'
  };

  var MediaQuery = {
    queries: [],

    current: '',

    /**
     * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.
     * @function
     * @private
     */
    _init: function _init() {
      var self = this;
      var extractedStyles = $('.foundation-mq').css('font-family');
      var namedQueries;

      namedQueries = parseStyleToObject(extractedStyles);

      for (var key in namedQueries) {
        if (namedQueries.hasOwnProperty(key)) {
          self.queries.push({
            name: key,
            value: 'only screen and (min-width: ' + namedQueries[key] + ')'
          });
        }
      }

      this.current = this._getCurrentSize();

      this._watcher();
    },


    /**
     * Checks if the screen is at least as wide as a breakpoint.
     * @function
     * @param {String} size - Name of the breakpoint to check.
     * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.
     */
    atLeast: function atLeast(size) {
      var query = this.get(size);

      if (query) {
        return window.matchMedia(query).matches;
      }

      return false;
    },


    /**
     * Checks if the screen matches to a breakpoint.
     * @function
     * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.
     * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.
     */
    is: function is(size) {
      size = size.trim().split(' ');
      if (size.length > 1 && size[1] === 'only') {
        if (size[0] === this._getCurrentSize()) return true;
      } else {
        return this.atLeast(size[0]);
      }
      return false;
    },


    /**
     * Gets the media query of a breakpoint.
     * @function
     * @param {String} size - Name of the breakpoint to get.
     * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.
     */
    get: function get(size) {
      for (var i in this.queries) {
        if (this.queries.hasOwnProperty(i)) {
          var query = this.queries[i];
          if (size === query.name) return query.value;
        }
      }

      return null;
    },


    /**
     * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).
     * @function
     * @private
     * @returns {String} Name of the current breakpoint.
     */
    _getCurrentSize: function _getCurrentSize() {
      var matched;

      for (var i = 0; i < this.queries.length; i++) {
        var query = this.queries[i];

        if (window.matchMedia(query.value).matches) {
          matched = query;
        }
      }

      if ((typeof matched === 'undefined' ? 'undefined' : _typeof(matched)) === 'object') {
        return matched.name;
      } else {
        return matched;
      }
    },


    /**
     * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.
     * @function
     * @private
     */
    _watcher: function _watcher() {
      var _this = this;

      $(window).on('resize.zf.mediaquery', function () {
        var newSize = _this._getCurrentSize(),
            currentSize = _this.current;

        if (newSize !== currentSize) {
          // Change the current media query
          _this.current = newSize;

          // Broadcast the media query change on the window
          $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);
        }
      });
    }
  };

  Foundation.MediaQuery = MediaQuery;

  // matchMedia() polyfill - Test a CSS media type/query in JS.
  // Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license
  window.matchMedia || (window.matchMedia = function () {
    'use strict';

    // For browsers that support matchMedium api such as IE 9 and webkit

    var styleMedia = window.styleMedia || window.media;

    // For those that don't support matchMedium
    if (!styleMedia) {
      var style = document.createElement('style'),
          script = document.getElementsByTagName('script')[0],
          info = null;

      style.type = 'text/css';
      style.id = 'matchmediajs-test';

      script && script.parentNode && script.parentNode.insertBefore(style, script);

      // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers
      info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle;

      styleMedia = {
        matchMedium: function matchMedium(media) {
          var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';

          // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers
          if (style.styleSheet) {
            style.styleSheet.cssText = text;
          } else {
            style.textContent = text;
          }

          // Test if media query is true or false
          return info.width === '1px';
        }
      };
    }

    return function (media) {
      return {
        matches: styleMedia.matchMedium(media || 'all'),
        media: media || 'all'
      };
    };
  }());

  // Thank you: https://github.com/sindresorhus/query-string
  function parseStyleToObject(str) {
    var styleObject = {};

    if (typeof str !== 'string') {
      return styleObject;
    }

    str = str.trim().slice(1, -1); // browsers re-quote string style values

    if (!str) {
      return styleObject;
    }

    styleObject = str.split('&').reduce(function (ret, param) {
      var parts = param.replace(/\+/g, ' ').split('=');
      var key = parts[0];
      var val = parts[1];
      key = decodeURIComponent(key);

      // missing `=` should be `null`:
      // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
      val = val === undefined ? null : decodeURIComponent(val);

      if (!ret.hasOwnProperty(key)) {
        ret[key] = val;
      } else if (Array.isArray(ret[key])) {
        ret[key].push(val);
      } else {
        ret[key] = [ret[key], val];
      }
      return ret;
    }, {});

    return styleObject;
  }

  Foundation.MediaQuery = MediaQuery;
}(jQuery);
'use strict';

!function ($) {

  /**
   * Motion module.
   * @module foundation.motion
   */

  var initClasses = ['mui-enter', 'mui-leave'];
  var activeClasses = ['mui-enter-active', 'mui-leave-active'];

  var Motion = {
    animateIn: function animateIn(element, animation, cb) {
      animate(true, element, animation, cb);
    },

    animateOut: function animateOut(element, animation, cb) {
      animate(false, element, animation, cb);
    }
  };

  function Move(duration, elem, fn) {
    var anim,
        prog,
        start = null;
    // console.log('called');

    if (duration === 0) {
      fn.apply(elem);
      elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);
      return;
    }

    function move(ts) {
      if (!start) start = ts;
      // console.log(start, ts);
      prog = ts - start;
      fn.apply(elem);

      if (prog < duration) {
        anim = window.requestAnimationFrame(move, elem);
      } else {
        window.cancelAnimationFrame(anim);
        elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);
      }
    }
    anim = window.requestAnimationFrame(move);
  }

  /**
   * Animates an element in or out using a CSS transition class.
   * @function
   * @private
   * @param {Boolean} isIn - Defines if the animation is in or out.
   * @param {Object} element - jQuery or HTML object to animate.
   * @param {String} animation - CSS class to use.
   * @param {Function} cb - Callback to run when animation is finished.
   */
  function animate(isIn, element, animation, cb) {
    element = $(element).eq(0);

    if (!element.length) return;

    var initClass = isIn ? initClasses[0] : initClasses[1];
    var activeClass = isIn ? activeClasses[0] : activeClasses[1];

    // Set up the animation
    reset();

    element.addClass(animation).css('transition', 'none');

    requestAnimationFrame(function () {
      element.addClass(initClass);
      if (isIn) element.show();
    });

    // Start the animation
    requestAnimationFrame(function () {
      element[0].offsetWidth;
      element.css('transition', '').addClass(activeClass);
    });

    // Clean up the animation when it finishes
    element.one(Foundation.transitionend(element), finish);

    // Hides the element (for out animations), resets the element, and runs a callback
    function finish() {
      if (!isIn) element.hide();
      reset();
      if (cb) cb.apply(element);
    }

    // Resets transitions and removes motion-specific classes
    function reset() {
      element[0].style.transitionDuration = 0;
      element.removeClass(initClass + ' ' + activeClass + ' ' + animation);
    }
  }

  Foundation.Move = Move;
  Foundation.Motion = Motion;
}(jQuery);
'use strict';

!function ($) {

  var Nest = {
    Feather: function Feather(menu) {
      var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'zf';

      menu.attr('role', 'menubar');

      var items = menu.find('li').attr({ 'role': 'menuitem' }),
          subMenuClass = 'is-' + type + '-submenu',
          subItemClass = subMenuClass + '-item',
          hasSubClass = 'is-' + type + '-submenu-parent';

      items.each(function () {
        var $item = $(this),
            $sub = $item.children('ul');

        if ($sub.length) {
          $item.addClass(hasSubClass).attr({
            'aria-haspopup': true,
            'aria-label': $item.children('a:first').text()
          });
          // Note:  Drilldowns behave differently in how they hide, and so need
          // additional attributes.  We should look if this possibly over-generalized
          // utility (Nest) is appropriate when we rework menus in 6.4
          if (type === 'drilldown') {
            $item.attr({ 'aria-expanded': false });
          }

          $sub.addClass('submenu ' + subMenuClass).attr({
            'data-submenu': '',
            'role': 'menu'
          });
          if (type === 'drilldown') {
            $sub.attr({ 'aria-hidden': true });
          }
        }

        if ($item.parent('[data-submenu]').length) {
          $item.addClass('is-submenu-item ' + subItemClass);
        }
      });

      return;
    },
    Burn: function Burn(menu, type) {
      var //items = menu.find('li'),
      subMenuClass = 'is-' + type + '-submenu',
          subItemClass = subMenuClass + '-item',
          hasSubClass = 'is-' + type + '-submenu-parent';

      menu.find('>li, .menu, .menu > li').removeClass(subMenuClass + ' ' + subItemClass + ' ' + hasSubClass + ' is-submenu-item submenu is-active').removeAttr('data-submenu').css('display', '');

      // console.log(      menu.find('.' + subMenuClass + ', .' + subItemClass + ', .has-submenu, .is-submenu-item, .submenu, [data-submenu]')
      //           .removeClass(subMenuClass + ' ' + subItemClass + ' has-submenu is-submenu-item submenu')
      //           .removeAttr('data-submenu'));
      // items.each(function(){
      //   var $item = $(this),
      //       $sub = $item.children('ul');
      //   if($item.parent('[data-submenu]').length){
      //     $item.removeClass('is-submenu-item ' + subItemClass);
      //   }
      //   if($sub.length){
      //     $item.removeClass('has-submenu');
      //     $sub.removeClass('submenu ' + subMenuClass).removeAttr('data-submenu');
      //   }
      // });
    }
  };

  Foundation.Nest = Nest;
}(jQuery);
'use strict';

!function ($) {

  function Timer(elem, options, cb) {
    var _this = this,
        duration = options.duration,
        //options is an object for easily adding features later.
    nameSpace = Object.keys(elem.data())[0] || 'timer',
        remain = -1,
        start,
        timer;

    this.isPaused = false;

    this.restart = function () {
      remain = -1;
      clearTimeout(timer);
      this.start();
    };

    this.start = function () {
      this.isPaused = false;
      // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.
      clearTimeout(timer);
      remain = remain <= 0 ? duration : remain;
      elem.data('paused', false);
      start = Date.now();
      timer = setTimeout(function () {
        if (options.infinite) {
          _this.restart(); //rerun the timer.
        }
        if (cb && typeof cb === 'function') {
          cb();
        }
      }, remain);
      elem.trigger('timerstart.zf.' + nameSpace);
    };

    this.pause = function () {
      this.isPaused = true;
      //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.
      clearTimeout(timer);
      elem.data('paused', true);
      var end = Date.now();
      remain = remain - (end - start);
      elem.trigger('timerpaused.zf.' + nameSpace);
    };
  }

  /**
   * Runs a callback function when images are fully loaded.
   * @param {Object} images - Image(s) to check if loaded.
   * @param {Func} callback - Function to execute when image is fully loaded.
   */
  function onImagesLoaded(images, callback) {
    var self = this,
        unloaded = images.length;

    if (unloaded === 0) {
      callback();
    }

    images.each(function () {
      // Check if image is loaded
      if (this.complete || this.readyState === 4 || this.readyState === 'complete') {
        singleImageLoaded();
      }
      // Force load the image
      else {
          // fix for IE. See https://css-tricks.com/snippets/jquery/fixing-load-in-ie-for-cached-images/
          var src = $(this).attr('src');
          $(this).attr('src', src + '?' + new Date().getTime());
          $(this).one('load', function () {
            singleImageLoaded();
          });
        }
    });

    function singleImageLoaded() {
      unloaded--;
      if (unloaded === 0) {
        callback();
      }
    }
  }

  Foundation.Timer = Timer;
  Foundation.onImagesLoaded = onImagesLoaded;
}(jQuery);
'use strict';

//**************************************************
//**Work inspired by multiple jquery swipe plugins**
//**Done by Yohai Ararat ***************************
//**************************************************
(function ($) {

	$.spotSwipe = {
		version: '1.0.0',
		enabled: 'ontouchstart' in document.documentElement,
		preventDefault: false,
		moveThreshold: 75,
		timeThreshold: 200
	};

	var startPosX,
	    startPosY,
	    startTime,
	    elapsedTime,
	    isMoving = false;

	function onTouchEnd() {
		//  alert(this);
		this.removeEventListener('touchmove', onTouchMove);
		this.removeEventListener('touchend', onTouchEnd);
		isMoving = false;
	}

	function onTouchMove(e) {
		if ($.spotSwipe.preventDefault) {
			e.preventDefault();
		}
		if (isMoving) {
			var x = e.touches[0].pageX;
			var y = e.touches[0].pageY;
			var dx = startPosX - x;
			var dy = startPosY - y;
			var dir;
			elapsedTime = new Date().getTime() - startTime;
			if (Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {
				dir = dx > 0 ? 'left' : 'right';
			}
			// else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {
			//   dir = dy > 0 ? 'down' : 'up';
			// }
			if (dir) {
				e.preventDefault();
				onTouchEnd.call(this);
				$(this).trigger('swipe', dir).trigger('swipe' + dir);
			}
		}
	}

	function onTouchStart(e) {
		if (e.touches.length == 1) {
			startPosX = e.touches[0].pageX;
			startPosY = e.touches[0].pageY;
			isMoving = true;
			startTime = new Date().getTime();
			this.addEventListener('touchmove', onTouchMove, false);
			this.addEventListener('touchend', onTouchEnd, false);
		}
	}

	function init() {
		this.addEventListener && this.addEventListener('touchstart', onTouchStart, false);
	}

	function teardown() {
		this.removeEventListener('touchstart', onTouchStart);
	}

	$.event.special.swipe = { setup: init };

	$.each(['left', 'up', 'down', 'right'], function () {
		$.event.special['swipe' + this] = { setup: function setup() {
				$(this).on('swipe', $.noop);
			} };
	});
})(jQuery);
/****************************************************
 * Method for adding psuedo drag events to elements *
 ***************************************************/
!function ($) {
	$.fn.addTouch = function () {
		this.each(function (i, el) {
			$(el).bind('touchstart touchmove touchend touchcancel', function () {
				//we pass the original event object because the jQuery event
				//object is normalized to w3c specs and does not provide the TouchList
				handleTouch(event);
			});
		});

		var handleTouch = function handleTouch(event) {
			var touches = event.changedTouches,
			    first = touches[0],
			    eventTypes = {
				touchstart: 'mousedown',
				touchmove: 'mousemove',
				touchend: 'mouseup'
			},
			    type = eventTypes[event.type],
			    simulatedEvent;

			if ('MouseEvent' in window && typeof window.MouseEvent === 'function') {
				simulatedEvent = new window.MouseEvent(type, {
					'bubbles': true,
					'cancelable': true,
					'screenX': first.screenX,
					'screenY': first.screenY,
					'clientX': first.clientX,
					'clientY': first.clientY
				});
			} else {
				simulatedEvent = document.createEvent('MouseEvent');
				simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0 /*left*/, null);
			}
			first.target.dispatchEvent(simulatedEvent);
		};
	};
}(jQuery);

//**********************************
//**From the jQuery Mobile Library**
//**need to recreate functionality**
//**and try to improve if possible**
//**********************************

/* Removing the jQuery function ****
************************************

(function( $, window, undefined ) {

	var $document = $( document ),
		// supportTouch = $.mobile.support.touch,
		touchStartEvent = 'touchstart'//supportTouch ? "touchstart" : "mousedown",
		touchStopEvent = 'touchend'//supportTouch ? "touchend" : "mouseup",
		touchMoveEvent = 'touchmove'//supportTouch ? "touchmove" : "mousemove";

	// setup new event shortcuts
	$.each( ( "touchstart touchmove touchend " +
		"swipe swipeleft swiperight" ).split( " " ), function( i, name ) {

		$.fn[ name ] = function( fn ) {
			return fn ? this.bind( name, fn ) : this.trigger( name );
		};

		// jQuery < 1.8
		if ( $.attrFn ) {
			$.attrFn[ name ] = true;
		}
	});

	function triggerCustomEvent( obj, eventType, event, bubble ) {
		var originalType = event.type;
		event.type = eventType;
		if ( bubble ) {
			$.event.trigger( event, undefined, obj );
		} else {
			$.event.dispatch.call( obj, event );
		}
		event.type = originalType;
	}

	// also handles taphold

	// Also handles swipeleft, swiperight
	$.event.special.swipe = {

		// More than this horizontal displacement, and we will suppress scrolling.
		scrollSupressionThreshold: 30,

		// More time than this, and it isn't a swipe.
		durationThreshold: 1000,

		// Swipe horizontal displacement must be more than this.
		horizontalDistanceThreshold: window.devicePixelRatio >= 2 ? 15 : 30,

		// Swipe vertical displacement must be less than this.
		verticalDistanceThreshold: window.devicePixelRatio >= 2 ? 15 : 30,

		getLocation: function ( event ) {
			var winPageX = window.pageXOffset,
				winPageY = window.pageYOffset,
				x = event.clientX,
				y = event.clientY;

			if ( event.pageY === 0 && Math.floor( y ) > Math.floor( event.pageY ) ||
				event.pageX === 0 && Math.floor( x ) > Math.floor( event.pageX ) ) {

				// iOS4 clientX/clientY have the value that should have been
				// in pageX/pageY. While pageX/page/ have the value 0
				x = x - winPageX;
				y = y - winPageY;
			} else if ( y < ( event.pageY - winPageY) || x < ( event.pageX - winPageX ) ) {

				// Some Android browsers have totally bogus values for clientX/Y
				// when scrolling/zooming a page. Detectable since clientX/clientY
				// should never be smaller than pageX/pageY minus page scroll
				x = event.pageX - winPageX;
				y = event.pageY - winPageY;
			}

			return {
				x: x,
				y: y
			};
		},

		start: function( event ) {
			var data = event.originalEvent.touches ?
					event.originalEvent.touches[ 0 ] : event,
				location = $.event.special.swipe.getLocation( data );
			return {
						time: ( new Date() ).getTime(),
						coords: [ location.x, location.y ],
						origin: $( event.target )
					};
		},

		stop: function( event ) {
			var data = event.originalEvent.touches ?
					event.originalEvent.touches[ 0 ] : event,
				location = $.event.special.swipe.getLocation( data );
			return {
						time: ( new Date() ).getTime(),
						coords: [ location.x, location.y ]
					};
		},

		handleSwipe: function( start, stop, thisObject, origTarget ) {
			if ( stop.time - start.time < $.event.special.swipe.durationThreshold &&
				Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold &&
				Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) {
				var direction = start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight";

				triggerCustomEvent( thisObject, "swipe", $.Event( "swipe", { target: origTarget, swipestart: start, swipestop: stop }), true );
				triggerCustomEvent( thisObject, direction,$.Event( direction, { target: origTarget, swipestart: start, swipestop: stop } ), true );
				return true;
			}
			return false;

		},

		// This serves as a flag to ensure that at most one swipe event event is
		// in work at any given time
		eventInProgress: false,

		setup: function() {
			var events,
				thisObject = this,
				$this = $( thisObject ),
				context = {};

			// Retrieve the events data for this element and add the swipe context
			events = $.data( this, "mobile-events" );
			if ( !events ) {
				events = { length: 0 };
				$.data( this, "mobile-events", events );
			}
			events.length++;
			events.swipe = context;

			context.start = function( event ) {

				// Bail if we're already working on a swipe event
				if ( $.event.special.swipe.eventInProgress ) {
					return;
				}
				$.event.special.swipe.eventInProgress = true;

				var stop,
					start = $.event.special.swipe.start( event ),
					origTarget = event.target,
					emitted = false;

				context.move = function( event ) {
					if ( !start || event.isDefaultPrevented() ) {
						return;
					}

					stop = $.event.special.swipe.stop( event );
					if ( !emitted ) {
						emitted = $.event.special.swipe.handleSwipe( start, stop, thisObject, origTarget );
						if ( emitted ) {

							// Reset the context to make way for the next swipe event
							$.event.special.swipe.eventInProgress = false;
						}
					}
					// prevent scrolling
					if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) {
						event.preventDefault();
					}
				};

				context.stop = function() {
						emitted = true;

						// Reset the context to make way for the next swipe event
						$.event.special.swipe.eventInProgress = false;
						$document.off( touchMoveEvent, context.move );
						context.move = null;
				};

				$document.on( touchMoveEvent, context.move )
					.one( touchStopEvent, context.stop );
			};
			$this.on( touchStartEvent, context.start );
		},

		teardown: function() {
			var events, context;

			events = $.data( this, "mobile-events" );
			if ( events ) {
				context = events.swipe;
				delete events.swipe;
				events.length--;
				if ( events.length === 0 ) {
					$.removeData( this, "mobile-events" );
				}
			}

			if ( context ) {
				if ( context.start ) {
					$( this ).off( touchStartEvent, context.start );
				}
				if ( context.move ) {
					$document.off( touchMoveEvent, context.move );
				}
				if ( context.stop ) {
					$document.off( touchStopEvent, context.stop );
				}
			}
		}
	};
	$.each({
		swipeleft: "swipe.left",
		swiperight: "swipe.right"
	}, function( event, sourceEvent ) {

		$.event.special[ event ] = {
			setup: function() {
				$( this ).bind( sourceEvent, $.noop );
			},
			teardown: function() {
				$( this ).unbind( sourceEvent );
			}
		};
	});
})( jQuery, this );
*/
'use strict';

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 ($) {

  var MutationObserver = function () {
    var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
    for (var i = 0; i < prefixes.length; i++) {
      if (prefixes[i] + 'MutationObserver' in window) {
        return window[prefixes[i] + 'MutationObserver'];
      }
    }
    return false;
  }();

  var triggers = function triggers(el, type) {
    el.data(type).split(' ').forEach(function (id) {
      $('#' + id)[type === 'close' ? 'trigger' : 'triggerHandler'](type + '.zf.trigger', [el]);
    });
  };
  // Elements with [data-open] will reveal a plugin that supports it when clicked.
  $(document).on('click.zf.trigger', '[data-open]', function () {
    triggers($(this), 'open');
  });

  // Elements with [data-close] will close a plugin that supports it when clicked.
  // If used without a value on [data-close], the event will bubble, allowing it to close a parent component.
  $(document).on('click.zf.trigger', '[data-close]', function () {
    var id = $(this).data('close');
    if (id) {
      triggers($(this), 'close');
    } else {
      $(this).trigger('close.zf.trigger');
    }
  });

  // Elements with [data-toggle] will toggle a plugin that supports it when clicked.
  $(document).on('click.zf.trigger', '[data-toggle]', function () {
    var id = $(this).data('toggle');
    if (id) {
      triggers($(this), 'toggle');
    } else {
      $(this).trigger('toggle.zf.trigger');
    }
  });

  // Elements with [data-closable] will respond to close.zf.trigger events.
  $(document).on('close.zf.trigger', '[data-closable]', function (e) {
    e.stopPropagation();
    var animation = $(this).data('closable');

    if (animation !== '') {
      Foundation.Motion.animateOut($(this), animation, function () {
        $(this).trigger('closed.zf');
      });
    } else {
      $(this).fadeOut().trigger('closed.zf');
    }
  });

  $(document).on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', function () {
    var id = $(this).data('toggle-focus');
    $('#' + id).triggerHandler('toggle.zf.trigger', [$(this)]);
  });

  /**
  * Fires once after all other scripts have loaded
  * @function
  * @private
  */
  $(window).on('load', function () {
    checkListeners();
  });

  function checkListeners() {
    eventsListener();
    resizeListener();
    scrollListener();
    mutateListener();
    closemeListener();
  }

  //******** only fires this function once on load, if there's something to watch ********
  function closemeListener(pluginName) {
    var yetiBoxes = $('[data-yeti-box]'),
        plugNames = ['dropdown', 'tooltip', 'reveal'];

    if (pluginName) {
      if (typeof pluginName === 'string') {
        plugNames.push(pluginName);
      } else if ((typeof pluginName === 'undefined' ? 'undefined' : _typeof(pluginName)) === 'object' && typeof pluginName[0] === 'string') {
        plugNames.concat(pluginName);
      } else {
        console.error('Plugin names must be strings');
      }
    }
    if (yetiBoxes.length) {
      var listeners = plugNames.map(function (name) {
        return 'closeme.zf.' + name;
      }).join(' ');

      $(window).off(listeners).on(listeners, function (e, pluginId) {
        var plugin = e.namespace.split('.')[0];
        var plugins = $('[data-' + plugin + ']').not('[data-yeti-box="' + pluginId + '"]');

        plugins.each(function () {
          var _this = $(this);

          _this.triggerHandler('close.zf.trigger', [_this]);
        });
      });
    }
  }

  function resizeListener(debounce) {
    var timer = void 0,
        $nodes = $('[data-resize]');
    if ($nodes.length) {
      $(window).off('resize.zf.trigger').on('resize.zf.trigger', function (e) {
        if (timer) {
          clearTimeout(timer);
        }

        timer = setTimeout(function () {

          if (!MutationObserver) {
            //fallback for IE 9
            $nodes.each(function () {
              $(this).triggerHandler('resizeme.zf.trigger');
            });
          }
          //trigger all listening elements and signal a resize event
          $nodes.attr('data-events', "resize");
        }, debounce || 10); //default time to emit resize event
      });
    }
  }

  function scrollListener(debounce) {
    var timer = void 0,
        $nodes = $('[data-scroll]');
    if ($nodes.length) {
      $(window).off('scroll.zf.trigger').on('scroll.zf.trigger', function (e) {
        if (timer) {
          clearTimeout(timer);
        }

        timer = setTimeout(function () {

          if (!MutationObserver) {
            //fallback for IE 9
            $nodes.each(function () {
              $(this).triggerHandler('scrollme.zf.trigger');
            });
          }
          //trigger all listening elements and signal a scroll event
          $nodes.attr('data-events', "scroll");
        }, debounce || 10); //default time to emit scroll event
      });
    }
  }

  function mutateListener(debounce) {
    var $nodes = $('[data-mutate]');
    if ($nodes.length && MutationObserver) {
      //trigger all listening elements and signal a mutate event
      //no IE 9 or 10
      $nodes.each(function () {
        $(this).triggerHandler('mutateme.zf.trigger');
      });
    }
  }

  function eventsListener() {
    if (!MutationObserver) {
      return false;
    }
    var nodes = document.querySelectorAll('[data-resize], [data-scroll], [data-mutate]');

    //element callback
    var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) {
      var $target = $(mutationRecordsList[0].target);

      //trigger the event handler for the element depending on type
      switch (mutationRecordsList[0].type) {

        case "attributes":
          if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") {
            $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);
          }
          if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") {
            $target.triggerHandler('resizeme.zf.trigger', [$target]);
          }
          if (mutationRecordsList[0].attributeName === "style") {
            $target.closest("[data-mutate]").attr("data-events", "mutate");
            $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
          }
          break;

        case "childList":
          $target.closest("[data-mutate]").attr("data-events", "mutate");
          $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
          break;

        default:
          return false;
        //nothing
      }
    };

    if (nodes.length) {
      //for each element that needs to listen for resizing, scrolling, or mutation add a single observer
      for (var i = 0; i <= nodes.length - 1; i++) {
        var elementObserver = new MutationObserver(listeningElementsMutation);
        elementObserver.observe(nodes[i], { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: ["data-events", "style"] });
      }
    }
  }

  // ------------------------------------

  // [PH]
  // Foundation.CheckWatchers = checkWatchers;
  Foundation.IHearYou = checkListeners;
  // Foundation.ISeeYou = scrollListener;
  // Foundation.IFeelYou = closemeListener;
}(jQuery);

// function domMutationObserver(debounce) {
//   // !!! This is coming soon and needs more work; not active  !!! //
//   var timer,
//   nodes = document.querySelectorAll('[data-mutate]');
//   //
//   if (nodes.length) {
//     // var MutationObserver = (function () {
//     //   var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
//     //   for (var i=0; i < prefixes.length; i++) {
//     //     if (prefixes[i] + 'MutationObserver' in window) {
//     //       return window[prefixes[i] + 'MutationObserver'];
//     //     }
//     //   }
//     //   return false;
//     // }());
//
//
//     //for the body, we need to listen for all changes effecting the style and class attributes
//     var bodyObserver = new MutationObserver(bodyMutation);
//     bodyObserver.observe(document.body, { attributes: true, childList: true, characterData: false, subtree:true, attributeFilter:["style", "class"]});
//
//
//     //body callback
//     function bodyMutation(mutate) {
//       //trigger all listening elements and signal a mutation event
//       if (timer) { clearTimeout(timer); }
//
//       timer = setTimeout(function() {
//         bodyObserver.disconnect();
//         $('[data-mutate]').attr('data-events',"mutate");
//       }, debounce || 150);
//     }
//   }
// }
'use strict';

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"); } }

!function ($) {

  /**
   * Abide module.
   * @module foundation.abide
   */

  var Abide = function () {
    /**
     * Creates a new instance of Abide.
     * @class
     * @fires Abide#init
     * @param {Object} element - jQuery object to add the trigger to.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function Abide(element) {
      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};

      _classCallCheck(this, Abide);

      this.$element = element;
      this.options = $.extend({}, Abide.defaults, this.$element.data(), options);

      this._init();

      Foundation.registerPlugin(this, 'Abide');
    }

    /**
     * Initializes the Abide plugin and calls functions to get Abide functioning on load.
     * @private
     */


    _createClass(Abide, [{
      key: '_init',
      value: function _init() {
        this.$inputs = this.$element.find('input, textarea, select');

        this._events();
      }

      /**
       * Initializes events for Abide.
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        var _this2 = this;

        this.$element.off('.abide').on('reset.zf.abide', function () {
          _this2.resetForm();
        }).on('submit.zf.abide', function () {
          return _this2.validateForm();
        });

        if (this.options.validateOn === 'fieldChange') {
          this.$inputs.off('change.zf.abide').on('change.zf.abide', function (e) {
            _this2.validateInput($(e.target));
          });
        }

        if (this.options.liveValidate) {
          this.$inputs.off('input.zf.abide').on('input.zf.abide', function (e) {
            _this2.validateInput($(e.target));
          });
        }

        if (this.options.validateOnBlur) {
          this.$inputs.off('blur.zf.abide').on('blur.zf.abide', function (e) {
            _this2.validateInput($(e.target));
          });
        }
      }

      /**
       * Calls necessary functions to update Abide upon DOM change
       * @private
       */

    }, {
      key: '_reflow',
      value: function _reflow() {
        this._init();
      }

      /**
       * Checks whether or not a form element has the required attribute and if it's checked or not
       * @param {Object} element - jQuery object to check for required attribute
       * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
       */

    }, {
      key: 'requiredCheck',
      value: function requiredCheck($el) {
        if (!$el.attr('required')) return true;

        var isGood = true;

        switch ($el[0].type) {
          case 'checkbox':
            isGood = $el[0].checked;
            break;

          case 'select':
          case 'select-one':
          case 'select-multiple':
            var opt = $el.find('option:selected');
            if (!opt.length || !opt.val()) isGood = false;
            break;

          default:
            if (!$el.val() || !$el.val().length) isGood = false;
        }

        return isGood;
      }

      /**
       * Based on $el, get the first element with selector in this order:
       * 1. The element's direct sibling('s).
       * 3. The element's parent's children.
       *
       * This allows for multiple form errors per input, though if none are found, no form errors will be shown.
       *
       * @param {Object} $el - jQuery object to use as reference to find the form error selector.
       * @returns {Object} jQuery object with the selector.
       */

    }, {
      key: 'findFormError',
      value: function findFormError($el) {
        var $error = $el.siblings(this.options.formErrorSelector);

        if (!$error.length) {
          $error = $el.parent().find(this.options.formErrorSelector);
        }

        return $error;
      }

      /**
       * Get the first element in this order:
       * 2. The <label> with the attribute `[for="someInputId"]`
       * 3. The `.closest()` <label>
       *
       * @param {Object} $el - jQuery object to check for required attribute
       * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
       */

    }, {
      key: 'findLabel',
      value: function findLabel($el) {
        var id = $el[0].id;
        var $label = this.$element.find('label[for="' + id + '"]');

        if (!$label.length) {
          return $el.closest('label');
        }

        return $label;
      }

      /**
       * Get the set of labels associated with a set of radio els in this order
       * 2. The <label> with the attribute `[for="someInputId"]`
       * 3. The `.closest()` <label>
       *
       * @param {Object} $el - jQuery object to check for required attribute
       * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
       */

    }, {
      key: 'findRadioLabels',
      value: function findRadioLabels($els) {
        var _this3 = this;

        var labels = $els.map(function (i, el) {
          var id = el.id;
          var $label = _this3.$element.find('label[for="' + id + '"]');

          if (!$label.length) {
            $label = $(el).closest('label');
          }
          return $label[0];
        });

        return $(labels);
      }

      /**
       * Adds the CSS error class as specified by the Abide settings to the label, input, and the form
       * @param {Object} $el - jQuery object to add the class to
       */

    }, {
      key: 'addErrorClasses',
      value: function addErrorClasses($el) {
        var $label = this.findLabel($el);
        var $formError = this.findFormError($el);

        if ($label.length) {
          $label.addClass(this.options.labelErrorClass);
        }

        if ($formError.length) {
          $formError.addClass(this.options.formErrorClass);
        }

        $el.addClass(this.options.inputErrorClass).attr('data-invalid', '');
      }

      /**
       * Remove CSS error classes etc from an entire radio button group
       * @param {String} groupName - A string that specifies the name of a radio button group
       *
       */

    }, {
      key: 'removeRadioErrorClasses',
      value: function removeRadioErrorClasses(groupName) {
        var $els = this.$element.find(':radio[name="' + groupName + '"]');
        var $labels = this.findRadioLabels($els);
        var $formErrors = this.findFormError($els);

        if ($labels.length) {
          $labels.removeClass(this.options.labelErrorClass);
        }

        if ($formErrors.length) {
          $formErrors.removeClass(this.options.formErrorClass);
        }

        $els.removeClass(this.options.inputErrorClass).removeAttr('data-invalid');
      }

      /**
       * Removes CSS error class as specified by the Abide settings from the label, input, and the form
       * @param {Object} $el - jQuery object to remove the class from
       */

    }, {
      key: 'removeErrorClasses',
      value: function removeErrorClasses($el) {
        // radios need to clear all of the els
        if ($el[0].type == 'radio') {
          return this.removeRadioErrorClasses($el.attr('name'));
        }

        var $label = this.findLabel($el);
        var $formError = this.findFormError($el);

        if ($label.length) {
          $label.removeClass(this.options.labelErrorClass);
        }

        if ($formError.length) {
          $formError.removeClass(this.options.formErrorClass);
        }

        $el.removeClass(this.options.inputErrorClass).removeAttr('data-invalid');
      }

      /**
       * Goes through a form to find inputs and proceeds to validate them in ways specific to their type
       * @fires Abide#invalid
       * @fires Abide#valid
       * @param {Object} element - jQuery object to validate, should be an HTML input
       * @returns {Boolean} goodToGo - If the input is valid or not.
       */

    }, {
      key: 'validateInput',
      value: function validateInput($el) {
        var _this4 = this;

        var clearRequire = this.requiredCheck($el),
            validated = false,
            customValidator = true,
            validator = $el.attr('data-validator'),
            equalTo = true;

        // don't validate ignored inputs or hidden inputs
        if ($el.is('[data-abide-ignore]') || $el.is('[type="hidden"]')) {
          return true;
        }

        switch ($el[0].type) {
          case 'radio':
            validated = this.validateRadio($el.attr('name'));
            break;

          case 'checkbox':
            validated = clearRequire;
            break;

          case 'select':
          case 'select-one':
          case 'select-multiple':
            validated = clearRequire;
            break;

          default:
            validated = this.validateText($el);
        }

        if (validator) {
          customValidator = this.matchValidation($el, validator, $el.attr('required'));
        }

        if ($el.attr('data-equalto')) {
          equalTo = this.options.validators.equalTo($el);
        }

        var goodToGo = [clearRequire, validated, customValidator, equalTo].indexOf(false) === -1;
        var message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide';

        if (goodToGo) {
          // Re-validate inputs that depend on this one with equalto
          var dependentElements = this.$element.find('[data-equalto="' + $el.attr('id') + '"]');
          if (dependentElements.length) {
            (function () {
              var _this = _this4;
              dependentElements.each(function () {
                if ($(this).val()) {
                  _this.validateInput($(this));
                }
              });
            })();
          }
        }

        this[goodToGo ? 'removeErrorClasses' : 'addErrorClasses']($el);

        /**
         * Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide`
         * Trigger includes the DOM element of the input.
         * @event Abide#valid
         * @event Abide#invalid
         */
        $el.trigger(message, [$el]);

        return goodToGo;
      }

      /**
       * Goes through a form and if there are any invalid inputs, it will display the form error element
       * @returns {Boolean} noError - true if no errors were detected...
       * @fires Abide#formvalid
       * @fires Abide#forminvalid
       */

    }, {
      key: 'validateForm',
      value: function validateForm() {
        var acc = [];
        var _this = this;

        this.$inputs.each(function () {
          acc.push(_this.validateInput($(this)));
        });

        var noError = acc.indexOf(false) === -1;

        this.$element.find('[data-abide-error]').css('display', noError ? 'none' : 'block');

        /**
         * Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`.
         * Trigger includes the element of the form.
         * @event Abide#formvalid
         * @event Abide#forminvalid
         */
        this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]);

        return noError;
      }

      /**
       * Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true.
       * @param {Object} $el - jQuery object to validate, should be a text input HTML element
       * @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns
       * @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified
       */

    }, {
      key: 'validateText',
      value: function validateText($el, pattern) {
        // A pattern can be passed to this function, or it will be infered from the input's "pattern" attribute, or it's "type" attribute
        pattern = pattern || $el.attr('pattern') || $el.attr('type');
        var inputText = $el.val();
        var valid = false;

        if (inputText.length) {
          // If the pattern attribute on the element is in Abide's list of patterns, then test that regexp
          if (this.options.patterns.hasOwnProperty(pattern)) {
            valid = this.options.patterns[pattern].test(inputText);
          }
          // If the pattern name isn't also the type attribute of the field, then test it as a regexp
          else if (pattern !== $el.attr('type')) {
              valid = new RegExp(pattern).test(inputText);
            } else {
              valid = true;
            }
        }
        // An empty field is valid if it's not required
        else if (!$el.prop('required')) {
            valid = true;
          }

        return valid;
      }

      /**
       * Determines whether or a not a radio input is valid based on whether or not it is required and selected. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all radio buttons in its group.
       * @param {String} groupName - A string that specifies the name of a radio button group
       * @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required)
       */

    }, {
      key: 'validateRadio',
      value: function validateRadio(groupName) {
        // If at least one radio in the group has the `required` attribute, the group is considered required
        // Per W3C spec, all radio buttons in a group should have `required`, but we're being nice
        var $group = this.$element.find(':radio[name="' + groupName + '"]');
        var valid = false,
            required = false;

        // For the group to be required, at least one radio needs to be required
        $group.each(function (i, e) {
          if ($(e).attr('required')) {
            required = true;
          }
        });
        if (!required) valid = true;

        if (!valid) {
          // For the group to be valid, at least one radio needs to be checked
          $group.each(function (i, e) {
            if ($(e).prop('checked')) {
              valid = true;
            }
          });
        };

        return valid;
      }

      /**
       * Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator="foo bar baz"` in a space separated listed.
       * @param {Object} $el - jQuery input element.
       * @param {String} validators - a string of function names matching functions in the Abide.options.validators object.
       * @param {Boolean} required - self explanatory?
       * @returns {Boolean} - true if validations passed.
       */

    }, {
      key: 'matchValidation',
      value: function matchValidation($el, validators, required) {
        var _this5 = this;

        required = required ? true : false;

        var clear = validators.split(' ').map(function (v) {
          return _this5.options.validators[v]($el, required, $el.parent());
        });
        return clear.indexOf(false) === -1;
      }

      /**
       * Resets form inputs and styles
       * @fires Abide#formreset
       */

    }, {
      key: 'resetForm',
      value: function resetForm() {
        var $form = this.$element,
            opts = this.options;

        $('.' + opts.labelErrorClass, $form).not('small').removeClass(opts.labelErrorClass);
        $('.' + opts.inputErrorClass, $form).not('small').removeClass(opts.inputErrorClass);
        $(opts.formErrorSelector + '.' + opts.formErrorClass).removeClass(opts.formErrorClass);
        $form.find('[data-abide-error]').css('display', 'none');
        $(':input', $form).not(':button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]').val('').removeAttr('data-invalid');
        $(':input:radio', $form).not('[data-abide-ignore]').prop('checked', false).removeAttr('data-invalid');
        $(':input:checkbox', $form).not('[data-abide-ignore]').prop('checked', false).removeAttr('data-invalid');
        /**
         * Fires when the form has been reset.
         * @event Abide#formreset
         */
        $form.trigger('formreset.zf.abide', [$form]);
      }

      /**
       * Destroys an instance of Abide.
       * Removes error styles and classes from elements, without resetting their values.
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        var _this = this;
        this.$element.off('.abide').find('[data-abide-error]').css('display', 'none');

        this.$inputs.off('.abide').each(function () {
          _this.removeErrorClasses($(this));
        });

        Foundation.unregisterPlugin(this);
      }
    }]);

    return Abide;
  }();

  /**
   * Default settings for plugin
   */


  Abide.defaults = {
    /**
     * The default event to validate inputs. Checkboxes and radios validate immediately.
     * Remove or change this value for manual validation.
     * @option
     * @example 'fieldChange'
     */
    validateOn: 'fieldChange',

    /**
     * Class to be applied to input labels on failed validation.
     * @option
     * @example 'is-invalid-label'
     */
    labelErrorClass: 'is-invalid-label',

    /**
     * Class to be applied to inputs on failed validation.
     * @option
     * @example 'is-invalid-input'
     */
    inputErrorClass: 'is-invalid-input',

    /**
     * Class selector to use to target Form Errors for show/hide.
     * @option
     * @example '.form-error'
     */
    formErrorSelector: '.form-error',

    /**
     * Class added to Form Errors on failed validation.
     * @option
     * @example 'is-visible'
     */
    formErrorClass: 'is-visible',

    /**
     * Set to true to validate text inputs on any value change.
     * @option
     * @example false
     */
    liveValidate: false,

    /**
     * Set to true to validate inputs on blur.
     * @option
     * @example false
     */
    validateOnBlur: false,

    patterns: {
      alpha: /^[a-zA-Z]+$/,
      alpha_numeric: /^[a-zA-Z0-9]+$/,
      integer: /^[-+]?\d+$/,
      number: /^[-+]?\d*(?:[\.\,]\d+)?$/,

      // amex, visa, diners
      card: /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
      cvv: /^([0-9]){3,4}$/,

      // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
      email: /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,

      url: /^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/,
      // abc.de
      domain: /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,

      datetime: /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
      // YYYY-MM-DD
      date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
      // HH:MM:SS
      time: /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
      dateISO: /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
      // MM/DD/YYYY
      month_day_year: /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,
      // DD/MM/YYYY
      day_month_year: /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,

      // #FFF or #FFFFFF
      color: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
    },

    /**
     * Optional validation functions to be used. `equalTo` being the only default included function.
     * Functions should return only a boolean if the input is valid or not. Functions are given the following arguments:
     * el : The jQuery element to validate.
     * required : Boolean value of the required attribute be present or not.
     * parent : The direct parent of the input.
     * @option
     */
    validators: {
      equalTo: function equalTo(el, required, parent) {
        return $('#' + el.attr('data-equalto')).val() === el.val();
      }
    }
  };

  // Window exports
  Foundation.plugin(Abide, 'Abide');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * Accordion module.
   * @module foundation.accordion
   * @requires foundation.util.keyboard
   * @requires foundation.util.motion
   */

  var Accordion = function () {
    /**
     * Creates a new instance of an accordion.
     * @class
     * @fires Accordion#init
     * @param {jQuery} element - jQuery object to make into an accordion.
     * @param {Object} options - a plain object with settings to override the default options.
     */
    function Accordion(element, options) {
      _classCallCheck(this, Accordion);

      this.$element = element;
      this.options = $.extend({}, Accordion.defaults, this.$element.data(), options);

      this._init();

      Foundation.registerPlugin(this, 'Accordion');
      Foundation.Keyboard.register('Accordion', {
        'ENTER': 'toggle',
        'SPACE': 'toggle',
        'ARROW_DOWN': 'next',
        'ARROW_UP': 'previous'
      });
    }

    /**
     * Initializes the accordion by animating the preset active pane(s).
     * @private
     */


    _createClass(Accordion, [{
      key: '_init',
      value: function _init() {
        this.$element.attr('role', 'tablist');
        this.$tabs = this.$element.children('[data-accordion-item]');

        this.$tabs.each(function (idx, el) {
          var $el = $(el),
              $content = $el.children('[data-tab-content]'),
              id = $content[0].id || Foundation.GetYoDigits(6, 'accordion'),
              linkId = el.id || id + '-label';

          $el.find('a:first').attr({
            'aria-controls': id,
            'role': 'tab',
            'id': linkId,
            'aria-expanded': false,
            'aria-selected': false
          });

          $content.attr({ 'role': 'tabpanel', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id });
        });
        var $initActive = this.$element.find('.is-active').children('[data-tab-content]');
        if ($initActive.length) {
          this.down($initActive, true);
        }
        this._events();
      }

      /**
       * Adds event handlers for items within the accordion.
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        var _this = this;

        this.$tabs.each(function () {
          var $elem = $(this);
          var $tabContent = $elem.children('[data-tab-content]');
          if ($tabContent.length) {
            $elem.children('a').off('click.zf.accordion keydown.zf.accordion').on('click.zf.accordion', function (e) {
              e.preventDefault();
              _this.toggle($tabContent);
            }).on('keydown.zf.accordion', function (e) {
              Foundation.Keyboard.handleKey(e, 'Accordion', {
                toggle: function toggle() {
                  _this.toggle($tabContent);
                },
                next: function next() {
                  var $a = $elem.next().find('a').focus();
                  if (!_this.options.multiExpand) {
                    $a.trigger('click.zf.accordion');
                  }
                },
                previous: function previous() {
                  var $a = $elem.prev().find('a').focus();
                  if (!_this.options.multiExpand) {
                    $a.trigger('click.zf.accordion');
                  }
                },
                handled: function handled() {
                  e.preventDefault();
                  e.stopPropagation();
                }
              });
            });
          }
        });
      }

      /**
       * Toggles the selected content pane's open/close state.
       * @param {jQuery} $target - jQuery object of the pane to toggle (`.accordion-content`).
       * @function
       */

    }, {
      key: 'toggle',
      value: function toggle($target) {
        if ($target.parent().hasClass('is-active')) {
          this.up($target);
        } else {
          this.down($target);
        }
      }

      /**
       * Opens the accordion tab defined by `$target`.
       * @param {jQuery} $target - Accordion pane to open (`.accordion-content`).
       * @param {Boolean} firstTime - flag to determine if reflow should happen.
       * @fires Accordion#down
       * @function
       */

    }, {
      key: 'down',
      value: function down($target, firstTime) {
        var _this2 = this;

        $target.attr('aria-hidden', false).parent('[data-tab-content]').addBack().parent().addClass('is-active');

        if (!this.options.multiExpand && !firstTime) {
          var $currentActive = this.$element.children('.is-active').children('[data-tab-content]');
          if ($currentActive.length) {
            this.up($currentActive.not($target));
          }
        }

        $target.slideDown(this.options.slideSpeed, function () {
          /**
           * Fires when the tab is done opening.
           * @event Accordion#down
           */
          _this2.$element.trigger('down.zf.accordion', [$target]);
        });

        $('#' + $target.attr('aria-labelledby')).attr({
          'aria-expanded': true,
          'aria-selected': true
        });
      }

      /**
       * Closes the tab defined by `$target`.
       * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).
       * @fires Accordion#up
       * @function
       */

    }, {
      key: 'up',
      value: function up($target) {
        var $aunts = $target.parent().siblings(),
            _this = this;

        if (!this.options.allowAllClosed && !$aunts.hasClass('is-active') || !$target.parent().hasClass('is-active')) {
          return;
        }

        // Foundation.Move(this.options.slideSpeed, $target, function(){
        $target.slideUp(_this.options.slideSpeed, function () {
          /**
           * Fires when the tab is done collapsing up.
           * @event Accordion#up
           */
          _this.$element.trigger('up.zf.accordion', [$target]);
        });
        // });

        $target.attr('aria-hidden', true).parent().removeClass('is-active');

        $('#' + $target.attr('aria-labelledby')).attr({
          'aria-expanded': false,
          'aria-selected': false
        });
      }

      /**
       * Destroys an instance of an accordion.
       * @fires Accordion#destroyed
       * @function
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', '');
        this.$element.find('a').off('.zf.accordion');

        Foundation.unregisterPlugin(this);
      }
    }]);

    return Accordion;
  }();

  Accordion.defaults = {
    /**
     * Amount of time to animate the opening of an accordion pane.
     * @option
     * @example 250
     */
    slideSpeed: 250,
    /**
     * Allow the accordion to have multiple open panes.
     * @option
     * @example false
     */
    multiExpand: false,
    /**
     * Allow the accordion to close all panes.
     * @option
     * @example false
     */
    allowAllClosed: false
  };

  // Window exports
  Foundation.plugin(Accordion, 'Accordion');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * AccordionMenu module.
   * @module foundation.accordionMenu
   * @requires foundation.util.keyboard
   * @requires foundation.util.motion
   * @requires foundation.util.nest
   */

  var AccordionMenu = function () {
    /**
     * Creates a new instance of an accordion menu.
     * @class
     * @fires AccordionMenu#init
     * @param {jQuery} element - jQuery object to make into an accordion menu.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function AccordionMenu(element, options) {
      _classCallCheck(this, AccordionMenu);

      this.$element = element;
      this.options = $.extend({}, AccordionMenu.defaults, this.$element.data(), options);

      Foundation.Nest.Feather(this.$element, 'accordion');

      this._init();

      Foundation.registerPlugin(this, 'AccordionMenu');
      Foundation.Keyboard.register('AccordionMenu', {
        'ENTER': 'toggle',
        'SPACE': 'toggle',
        'ARROW_RIGHT': 'open',
        'ARROW_UP': 'up',
        'ARROW_DOWN': 'down',
        'ARROW_LEFT': 'close',
        'ESCAPE': 'closeAll'
      });
    }

    /**
     * Initializes the accordion menu by hiding all nested menus.
     * @private
     */


    _createClass(AccordionMenu, [{
      key: '_init',
      value: function _init() {
        this.$element.find('[data-submenu]').not('.is-active').slideUp(0); //.find('a').css('padding-left', '1rem');
        this.$element.attr({
          'role': 'menu',
          'aria-multiselectable': this.options.multiOpen
        });

        this.$menuLinks = this.$element.find('.is-accordion-submenu-parent');
        this.$menuLinks.each(function () {
          var linkId = this.id || Foundation.GetYoDigits(6, 'acc-menu-link'),
              $elem = $(this),
              $sub = $elem.children('[data-submenu]'),
              subId = $sub[0].id || Foundation.GetYoDigits(6, 'acc-menu'),
              isActive = $sub.hasClass('is-active');
          $elem.attr({
            'aria-controls': subId,
            'aria-expanded': isActive,
            'role': 'menuitem',
            'id': linkId
          });
          $sub.attr({
            'aria-labelledby': linkId,
            'aria-hidden': !isActive,
            'role': 'menu',
            'id': subId
          });
        });
        var initPanes = this.$element.find('.is-active');
        if (initPanes.length) {
          var _this = this;
          initPanes.each(function () {
            _this.down($(this));
          });
        }
        this._events();
      }

      /**
       * Adds event handlers for items within the menu.
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        var _this = this;

        this.$element.find('li').each(function () {
          var $submenu = $(this).children('[data-submenu]');

          if ($submenu.length) {
            $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function (e) {
              e.preventDefault();

              _this.toggle($submenu);
            });
          }
        }).on('keydown.zf.accordionmenu', function (e) {
          var $element = $(this),
              $elements = $element.parent('ul').children('li'),
              $prevElement,
              $nextElement,
              $target = $element.children('[data-submenu]');

          $elements.each(function (i) {
            if ($(this).is($element)) {
              $prevElement = $elements.eq(Math.max(0, i - 1)).find('a').first();
              $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)).find('a').first();

              if ($(this).children('[data-submenu]:visible').length) {
                // has open sub menu
                $nextElement = $element.find('li:first-child').find('a').first();
              }
              if ($(this).is(':first-child')) {
                // is first element of sub menu
                $prevElement = $element.parents('li').first().find('a').first();
              } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) {
                // if previous element has open sub menu
                $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first();
              }
              if ($(this).is(':last-child')) {
                // is last element of sub menu
                $nextElement = $element.parents('li').first().next('li').find('a').first();
              }

              return;
            }
          });

          Foundation.Keyboard.handleKey(e, 'AccordionMenu', {
            open: function open() {
              if ($target.is(':hidden')) {
                _this.down($target);
                $target.find('li').first().find('a').first().focus();
              }
            },
            close: function close() {
              if ($target.length && !$target.is(':hidden')) {
                // close active sub of this item
                _this.up($target);
              } else if ($element.parent('[data-submenu]').length) {
                // close currently open sub
                _this.up($element.parent('[data-submenu]'));
                $element.parents('li').first().find('a').first().focus();
              }
            },
            up: function up() {
              $prevElement.focus();
              return true;
            },
            down: function down() {
              $nextElement.focus();
              return true;
            },
            toggle: function toggle() {
              if ($element.children('[data-submenu]').length) {
                _this.toggle($element.children('[data-submenu]'));
              }
            },
            closeAll: function closeAll() {
              _this.hideAll();
            },
            handled: function handled(preventDefault) {
              if (preventDefault) {
                e.preventDefault();
              }
              e.stopImmediatePropagation();
            }
          });
        }); //.attr('tabindex', 0);
      }

      /**
       * Closes all panes of the menu.
       * @function
       */

    }, {
      key: 'hideAll',
      value: function hideAll() {
        this.up(this.$element.find('[data-submenu]'));
      }

      /**
       * Opens all panes of the menu.
       * @function
       */

    }, {
      key: 'showAll',
      value: function showAll() {
        this.down(this.$element.find('[data-submenu]'));
      }

      /**
       * Toggles the open/close state of a submenu.
       * @function
       * @param {jQuery} $target - the submenu to toggle
       */

    }, {
      key: 'toggle',
      value: function toggle($target) {
        if (!$target.is(':animated')) {
          if (!$target.is(':hidden')) {
            this.up($target);
          } else {
            this.down($target);
          }
        }
      }

      /**
       * Opens the sub-menu defined by `$target`.
       * @param {jQuery} $target - Sub-menu to open.
       * @fires AccordionMenu#down
       */

    }, {
      key: 'down',
      value: function down($target) {
        var _this = this;

        if (!this.options.multiOpen) {
          this.up(this.$element.find('.is-active').not($target.parentsUntil(this.$element).add($target)));
        }

        $target.addClass('is-active').attr({ 'aria-hidden': false }).parent('.is-accordion-submenu-parent').attr({ 'aria-expanded': true });

        //Foundation.Move(this.options.slideSpeed, $target, function() {
        $target.slideDown(_this.options.slideSpeed, function () {
          /**
           * Fires when the menu is done opening.
           * @event AccordionMenu#down
           */
          _this.$element.trigger('down.zf.accordionMenu', [$target]);
        });
        //});
      }

      /**
       * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.
       * @param {jQuery} $target - Sub-menu to close.
       * @fires AccordionMenu#up
       */

    }, {
      key: 'up',
      value: function up($target) {
        var _this = this;
        //Foundation.Move(this.options.slideSpeed, $target, function(){
        $target.slideUp(_this.options.slideSpeed, function () {
          /**
           * Fires when the menu is done collapsing up.
           * @event AccordionMenu#up
           */
          _this.$element.trigger('up.zf.accordionMenu', [$target]);
        });
        //});

        var $menus = $target.find('[data-submenu]').slideUp(0).addBack().attr('aria-hidden', true);

        $menus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);
      }

      /**
       * Destroys an instance of accordion menu.
       * @fires AccordionMenu#destroyed
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        this.$element.find('[data-submenu]').slideDown(0).css('display', '');
        this.$element.find('a').off('click.zf.accordionMenu');

        Foundation.Nest.Burn(this.$element, 'accordion');
        Foundation.unregisterPlugin(this);
      }
    }]);

    return AccordionMenu;
  }();

  AccordionMenu.defaults = {
    /**
     * Amount of time to animate the opening of a submenu in ms.
     * @option
     * @example 250
     */
    slideSpeed: 250,
    /**
     * Allow the menu to have multiple open panes.
     * @option
     * @example true
     */
    multiOpen: true
  };

  // Window exports
  Foundation.plugin(AccordionMenu, 'AccordionMenu');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * Drilldown module.
   * @module foundation.drilldown
   * @requires foundation.util.keyboard
   * @requires foundation.util.motion
   * @requires foundation.util.nest
   */

  var Drilldown = function () {
    /**
     * Creates a new instance of a drilldown menu.
     * @class
     * @param {jQuery} element - jQuery object to make into an accordion menu.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function Drilldown(element, options) {
      _classCallCheck(this, Drilldown);

      this.$element = element;
      this.options = $.extend({}, Drilldown.defaults, this.$element.data(), options);

      Foundation.Nest.Feather(this.$element, 'drilldown');

      this._init();

      Foundation.registerPlugin(this, 'Drilldown');
      Foundation.Keyboard.register('Drilldown', {
        'ENTER': 'open',
        'SPACE': 'open',
        'ARROW_RIGHT': 'next',
        'ARROW_UP': 'up',
        'ARROW_DOWN': 'down',
        'ARROW_LEFT': 'previous',
        'ESCAPE': 'close',
        'TAB': 'down',
        'SHIFT_TAB': 'up'
      });
    }

    /**
     * Initializes the drilldown by creating jQuery collections of elements
     * @private
     */


    _createClass(Drilldown, [{
      key: '_init',
      value: function _init() {
        this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a');
        this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]');
        this.$menuItems = this.$element.find('li').not('.js-drilldown-back').attr('role', 'menuitem').find('a');
        this.$element.attr('data-mutate', this.$element.attr('data-drilldown') || Foundation.GetYoDigits(6, 'drilldown'));

        this._prepareMenu();
        this._registerEvents();

        this._keyboardEvents();
      }

      /**
       * prepares drilldown menu by setting attributes to links and elements
       * sets a min height to prevent content jumping
       * wraps the element if not already wrapped
       * @private
       * @function
       */

    }, {
      key: '_prepareMenu',
      value: function _prepareMenu() {
        var _this = this;
        // if(!this.options.holdOpen){
        //   this._menuLinkEvents();
        // }
        this.$submenuAnchors.each(function () {
          var $link = $(this);
          var $sub = $link.parent();
          if (_this.options.parentLink) {
            $link.clone().prependTo($sub.children('[data-submenu]')).wrap('<li class="is-submenu-parent-item is-submenu-item is-drilldown-submenu-item" role="menu-item"></li>');
          }
          $link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0);
          $link.children('[data-submenu]').attr({
            'aria-hidden': true,
            'tabindex': 0,
            'role': 'menu'
          });
          _this._events($link);
        });
        this.$submenus.each(function () {
          var $menu = $(this),
              $back = $menu.find('.js-drilldown-back');
          if (!$back.length) {
            switch (_this.options.backButtonPosition) {
              case "bottom":
                $menu.append(_this.options.backButton);
                break;
              case "top":
                $menu.prepend(_this.options.backButton);
                break;
              default:
                console.error("Unsupported backButtonPosition value '" + _this.options.backButtonPosition + "'");
            }
          }
          _this._back($menu);
        });

        if (!this.options.autoHeight) {
          this.$submenus.addClass('drilldown-submenu-cover-previous');
        }

        if (!this.$element.parent().hasClass('is-drilldown')) {
          this.$wrapper = $(this.options.wrapper).addClass('is-drilldown');
          if (this.options.animateHeight) this.$wrapper.addClass('animate-height');
          this.$wrapper = this.$element.wrap(this.$wrapper).parent().css(this._getMaxDims());
        }
      }
    }, {
      key: '_resize',
      value: function _resize() {
        this.$wrapper.css({ 'max-width': 'none', 'min-height': 'none' });
        // _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths
        this.$wrapper.css(this._getMaxDims());
      }

      /**
       * Adds event handlers to elements in the menu.
       * @function
       * @private
       * @param {jQuery} $elem - the current menu item to add handlers to.
       */

    }, {
      key: '_events',
      value: function _events($elem) {
        var _this = this;

        $elem.off('click.zf.drilldown').on('click.zf.drilldown', function (e) {
          if ($(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')) {
            e.stopImmediatePropagation();
            e.preventDefault();
          }

          // if(e.target !== e.currentTarget.firstElementChild){
          //   return false;
          // }
          _this._show($elem.parent('li'));

          if (_this.options.closeOnClick) {
            var $body = $('body');
            $body.off('.zf.drilldown').on('click.zf.drilldown', function (e) {
              if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)) {
                return;
              }
              e.preventDefault();
              _this._hideAll();
              $body.off('.zf.drilldown');
            });
          }
        });
        this.$element.on('mutateme.zf.trigger', this._resize.bind(this));
      }

      /**
       * Adds event handlers to the menu element.
       * @function
       * @private
       */

    }, {
      key: '_registerEvents',
      value: function _registerEvents() {
        if (this.options.scrollTop) {
          this._bindHandler = this._scrollTop.bind(this);
          this.$element.on('open.zf.drilldown hide.zf.drilldown closed.zf.drilldown', this._bindHandler);
        }
      }

      /**
       * Scroll to Top of Element or data-scroll-top-element
       * @function
       * @fires Drilldown#scrollme
       */

    }, {
      key: '_scrollTop',
      value: function _scrollTop() {
        var _this = this;
        var $scrollTopElement = _this.options.scrollTopElement != '' ? $(_this.options.scrollTopElement) : _this.$element,
            scrollPos = parseInt($scrollTopElement.offset().top + _this.options.scrollTopOffset);
        $('html, body').stop(true).animate({ scrollTop: scrollPos }, _this.options.animationDuration, _this.options.animationEasing, function () {
          /**
            * Fires after the menu has scrolled
            * @event Drilldown#scrollme
            */
          if (this === $('html')[0]) _this.$element.trigger('scrollme.zf.drilldown');
        });
      }

      /**
       * Adds keydown event listener to `li`'s in the menu.
       * @private
       */

    }, {
      key: '_keyboardEvents',
      value: function _keyboardEvents() {
        var _this = this;

        this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function (e) {
          var $element = $(this),
              $elements = $element.parent('li').parent('ul').children('li').children('a'),
              $prevElement,
              $nextElement;

          $elements.each(function (i) {
            if ($(this).is($element)) {
              $prevElement = $elements.eq(Math.max(0, i - 1));
              $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1));
              return;
            }
          });

          Foundation.Keyboard.handleKey(e, 'Drilldown', {
            next: function next() {
              if ($element.is(_this.$submenuAnchors)) {
                _this._show($element.parent('li'));
                $element.parent('li').one(Foundation.transitionend($element), function () {
                  $element.parent('li').find('ul li a').filter(_this.$menuItems).first().focus();
                });
                return true;
              }
            },
            previous: function previous() {
              _this._hide($element.parent('li').parent('ul'));
              $element.parent('li').parent('ul').one(Foundation.transitionend($element), function () {
                setTimeout(function () {
                  $element.parent('li').parent('ul').parent('li').children('a').first().focus();
                }, 1);
              });
              return true;
            },
            up: function up() {
              $prevElement.focus();
              return true;
            },
            down: function down() {
              $nextElement.focus();
              return true;
            },
            close: function close() {
              _this._back();
              //_this.$menuItems.first().focus(); // focus to first element
            },
            open: function open() {
              if (!$element.is(_this.$menuItems)) {
                // not menu item means back button
                _this._hide($element.parent('li').parent('ul'));
                $element.parent('li').parent('ul').one(Foundation.transitionend($element), function () {
                  setTimeout(function () {
                    $element.parent('li').parent('ul').parent('li').children('a').first().focus();
                  }, 1);
                });
                return true;
              } else if ($element.is(_this.$submenuAnchors)) {
                _this._show($element.parent('li'));
                $element.parent('li').one(Foundation.transitionend($element), function () {
                  $element.parent('li').find('ul li a').filter(_this.$menuItems).first().focus();
                });
                return true;
              }
            },
            handled: function handled(preventDefault) {
              if (preventDefault) {
                e.preventDefault();
              }
              e.stopImmediatePropagation();
            }
          });
        }); // end keyboardAccess
      }

      /**
       * Closes all open elements, and returns to root menu.
       * @function
       * @fires Drilldown#closed
       */

    }, {
      key: '_hideAll',
      value: function _hideAll() {
        var $elem = this.$element.find('.is-drilldown-submenu.is-active').addClass('is-closing');
        if (this.options.autoHeight) this.$wrapper.css({ height: $elem.parent().closest('ul').data('calcHeight') });
        $elem.one(Foundation.transitionend($elem), function (e) {
          $elem.removeClass('is-active is-closing');
        });
        /**
         * Fires when the menu is fully closed.
         * @event Drilldown#closed
         */
        this.$element.trigger('closed.zf.drilldown');
      }

      /**
       * Adds event listener for each `back` button, and closes open menus.
       * @function
       * @fires Drilldown#back
       * @param {jQuery} $elem - the current sub-menu to add `back` event.
       */

    }, {
      key: '_back',
      value: function _back($elem) {
        var _this = this;
        $elem.off('click.zf.drilldown');
        $elem.children('.js-drilldown-back').on('click.zf.drilldown', function (e) {
          e.stopImmediatePropagation();
          // console.log('mouseup on back');
          _this._hide($elem);

          // If there is a parent submenu, call show
          var parentSubMenu = $elem.parent('li').parent('ul').parent('li');
          if (parentSubMenu.length) {
            _this._show(parentSubMenu);
          }
        });
      }

      /**
       * Adds event listener to menu items w/o submenus to close open menus on click.
       * @function
       * @private
       */

    }, {
      key: '_menuLinkEvents',
      value: function _menuLinkEvents() {
        var _this = this;
        this.$menuItems.not('.is-drilldown-submenu-parent').off('click.zf.drilldown').on('click.zf.drilldown', function (e) {
          // e.stopImmediatePropagation();
          setTimeout(function () {
            _this._hideAll();
          }, 0);
        });
      }

      /**
       * Opens a submenu.
       * @function
       * @fires Drilldown#open
       * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag.
       */

    }, {
      key: '_show',
      value: function _show($elem) {
        if (this.options.autoHeight) this.$wrapper.css({ height: $elem.children('[data-submenu]').data('calcHeight') });
        $elem.attr('aria-expanded', true);
        $elem.children('[data-submenu]').addClass('is-active').attr('aria-hidden', false);
        /**
         * Fires when the submenu has opened.
         * @event Drilldown#open
         */
        this.$element.trigger('open.zf.drilldown', [$elem]);
      }
    }, {
      key: '_hide',


      /**
       * Hides a submenu
       * @function
       * @fires Drilldown#hide
       * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag.
       */
      value: function _hide($elem) {
        if (this.options.autoHeight) this.$wrapper.css({ height: $elem.parent().closest('ul').data('calcHeight') });
        var _this = this;
        $elem.parent('li').attr('aria-expanded', false);
        $elem.attr('aria-hidden', true).addClass('is-closing');
        $elem.addClass('is-closing').one(Foundation.transitionend($elem), function () {
          $elem.removeClass('is-active is-closing');
          $elem.blur();
        });
        /**
         * Fires when the submenu has closed.
         * @event Drilldown#hide
         */
        $elem.trigger('hide.zf.drilldown', [$elem]);
      }

      /**
       * Iterates through the nested menus to calculate the min-height, and max-width for the menu.
       * Prevents content jumping.
       * @function
       * @private
       */

    }, {
      key: '_getMaxDims',
      value: function _getMaxDims() {
        var maxHeight = 0,
            result = {},
            _this = this;
        this.$submenus.add(this.$element).each(function () {
          var numOfElems = $(this).children('li').length;
          var height = Foundation.Box.GetDimensions(this).height;
          maxHeight = height > maxHeight ? height : maxHeight;
          if (_this.options.autoHeight) {
            $(this).data('calcHeight', height);
            if (!$(this).hasClass('is-drilldown-submenu')) result['height'] = height;
          }
        });

        if (!this.options.autoHeight) result['min-height'] = maxHeight + 'px';

        result['max-width'] = this.$element[0].getBoundingClientRect().width + 'px';

        return result;
      }

      /**
       * Destroys the Drilldown Menu
       * @function
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        if (this.options.scrollTop) this.$element.off('.zf.drilldown', this._bindHandler);
        this._hideAll();
        this.$element.off('mutateme.zf.trigger');
        Foundation.Nest.Burn(this.$element, 'drilldown');
        this.$element.unwrap().find('.js-drilldown-back, .is-submenu-parent-item').remove().end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');
        this.$submenuAnchors.each(function () {
          $(this).off('.zf.drilldown');
        });

        this.$submenus.removeClass('drilldown-submenu-cover-previous');

        this.$element.find('a').each(function () {
          var $link = $(this);
          $link.removeAttr('tabindex');
          if ($link.data('savedHref')) {
            $link.attr('href', $link.data('savedHref')).removeData('savedHref');
          } else {
            return;
          }
        });
        Foundation.unregisterPlugin(this);
      }
    }]);

    return Drilldown;
  }();

  Drilldown.defaults = {
    /**
     * Markup used for JS generated back button. Prepended  or appended (see backButtonPosition) to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\`) if copy and pasting.
     * @option
     * @example '<\li><\a>Back<\/a><\/li>'
     */
    backButton: '<li class="js-drilldown-back"><a tabindex="0">Back</a></li>',
    /**
     * Position the back button either at the top or bottom of drilldown submenus.
     * @option
     * @example bottom
     */
    backButtonPosition: 'top',
    /**
     * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\`) if copy and pasting.
     * @option
     * @example '<\div class="is-drilldown"><\/div>'
     */
    wrapper: '<div></div>',
    /**
     * Adds the parent link to the submenu.
     * @option
     * @example false
     */
    parentLink: false,
    /**
     * Allow the menu to return to root list on body click.
     * @option
     * @example false
     */
    closeOnClick: false,
    /**
     * Allow the menu to auto adjust height.
     * @option
     * @example false
     */
    autoHeight: false,
    /**
     * Animate the auto adjust height.
     * @option
     * @example false
     */
    animateHeight: false,
    /**
     * Scroll to the top of the menu after opening a submenu or navigating back using the menu back button
     * @option
     * @example false
     */
    scrollTop: false,
    /**
     * String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken
     * @option
     * @example ''
     */
    scrollTopElement: '',
    /**
     * ScrollTop offset
     * @option
     * @example 100
     */
    scrollTopOffset: 0,
    /**
     * Scroll animation duration
     * @option
     * @example 500
     */
    animationDuration: 500,
    /**
     * Scroll animation easing
     * @option
     * @example 'swing'
     */
    animationEasing: 'swing'
    // holdOpen: false
  };

  // Window exports
  Foundation.plugin(Drilldown, 'Drilldown');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * Dropdown module.
   * @module foundation.dropdown
   * @requires foundation.util.keyboard
   * @requires foundation.util.box
   * @requires foundation.util.triggers
   */

  var Dropdown = function () {
    /**
     * Creates a new instance of a dropdown.
     * @class
     * @param {jQuery} element - jQuery object to make into a dropdown.
     *        Object should be of the dropdown panel, rather than its anchor.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function Dropdown(element, options) {
      _classCallCheck(this, Dropdown);

      this.$element = element;
      this.options = $.extend({}, Dropdown.defaults, this.$element.data(), options);
      this._init();

      Foundation.registerPlugin(this, 'Dropdown');
      Foundation.Keyboard.register('Dropdown', {
        'ENTER': 'open',
        'SPACE': 'open',
        'ESCAPE': 'close'
      });
    }

    /**
     * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor.
     * @function
     * @private
     */


    _createClass(Dropdown, [{
      key: '_init',
      value: function _init() {
        var $id = this.$element.attr('id');

        this.$anchor = $('[data-toggle="' + $id + '"]').length ? $('[data-toggle="' + $id + '"]') : $('[data-open="' + $id + '"]');
        this.$anchor.attr({
          'aria-controls': $id,
          'data-is-focus': false,
          'data-yeti-box': $id,
          'aria-haspopup': true,
          'aria-expanded': false

        });

        if (this.options.parentClass) {
          this.$parent = this.$element.parents('.' + this.options.parentClass);
        } else {
          this.$parent = null;
        }
        this.options.positionClass = this.getPositionClass();
        this.counter = 4;
        this.usedPositions = [];
        this.$element.attr({
          'aria-hidden': 'true',
          'data-yeti-box': $id,
          'data-resize': $id,
          'aria-labelledby': this.$anchor[0].id || Foundation.GetYoDigits(6, 'dd-anchor')
        });
        this._events();
      }

      /**
       * Helper function to determine current orientation of dropdown pane.
       * @function
       * @returns {String} position - string value of a position class.
       */

    }, {
      key: 'getPositionClass',
      value: function getPositionClass() {
        var verticalPosition = this.$element[0].className.match(/(top|left|right|bottom)/g);
        verticalPosition = verticalPosition ? verticalPosition[0] : '';
        var horizontalPosition = /float-(\S+)/.exec(this.$anchor[0].className);
        horizontalPosition = horizontalPosition ? horizontalPosition[1] : '';
        var position = horizontalPosition ? horizontalPosition + ' ' + verticalPosition : verticalPosition;

        return position;
      }

      /**
       * Adjusts the dropdown panes orientation by adding/removing positioning classes.
       * @function
       * @private
       * @param {String} position - position class to remove.
       */

    }, {
      key: '_reposition',
      value: function _reposition(position) {
        this.usedPositions.push(position ? position : 'bottom');
        //default, try switching to opposite side
        if (!position && this.usedPositions.indexOf('top') < 0) {
          this.$element.addClass('top');
        } else if (position === 'top' && this.usedPositions.indexOf('bottom') < 0) {
          this.$element.removeClass(position);
        } else if (position === 'left' && this.usedPositions.indexOf('right') < 0) {
          this.$element.removeClass(position).addClass('right');
        } else if (position === 'right' && this.usedPositions.indexOf('left') < 0) {
          this.$element.removeClass(position).addClass('left');
        }

        //if default change didn't work, try bottom or left first
        else if (!position && this.usedPositions.indexOf('top') > -1 && this.usedPositions.indexOf('left') < 0) {
            this.$element.addClass('left');
          } else if (position === 'top' && this.usedPositions.indexOf('bottom') > -1 && this.usedPositions.indexOf('left') < 0) {
            this.$element.removeClass(position).addClass('left');
          } else if (position === 'left' && this.usedPositions.indexOf('right') > -1 && this.usedPositions.indexOf('bottom') < 0) {
            this.$element.removeClass(position);
          } else if (position === 'right' && this.usedPositions.indexOf('left') > -1 && this.usedPositions.indexOf('bottom') < 0) {
            this.$element.removeClass(position);
          }
          //if nothing cleared, set to bottom
          else {
              this.$element.removeClass(position);
            }
        this.classChanged = true;
        this.counter--;
      }

      /**
       * Sets the position and orientation of the dropdown pane, checks for collisions.
       * Recursively calls itself if a collision is detected, with a new position class.
       * @function
       * @private
       */

    }, {
      key: '_setPosition',
      value: function _setPosition() {
        if (this.$anchor.attr('aria-expanded') === 'false') {
          return false;
        }
        var position = this.getPositionClass(),
            $eleDims = Foundation.Box.GetDimensions(this.$element),
            $anchorDims = Foundation.Box.GetDimensions(this.$anchor),
            _this = this,
            direction = position === 'left' ? 'left' : position === 'right' ? 'left' : 'top',
            param = direction === 'top' ? 'height' : 'width',
            offset = param === 'height' ? this.options.vOffset : this.options.hOffset;

        if ($eleDims.width >= $eleDims.windowDims.width || !this.counter && !Foundation.Box.ImNotTouchingYou(this.$element, this.$parent)) {
          var newWidth = $eleDims.windowDims.width,
              parentHOffset = 0;
          if (this.$parent) {
            var $parentDims = Foundation.Box.GetDimensions(this.$parent),
                parentHOffset = $parentDims.offset.left;
            if ($parentDims.width < newWidth) {
              newWidth = $parentDims.width;
            }
          }

          this.$element.offset(Foundation.Box.GetOffsets(this.$element, this.$anchor, 'center bottom', this.options.vOffset, this.options.hOffset + parentHOffset, true)).css({
            'width': newWidth - this.options.hOffset * 2,
            'height': 'auto'
          });
          this.classChanged = true;
          return false;
        }

        this.$element.offset(Foundation.Box.GetOffsets(this.$element, this.$anchor, position, this.options.vOffset, this.options.hOffset));

        while (!Foundation.Box.ImNotTouchingYou(this.$element, this.$parent, true) && this.counter) {
          this._reposition(position);
          this._setPosition();
        }
      }

      /**
       * Adds event listeners to the element utilizing the triggers utility library.
       * @function
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        var _this = this;
        this.$element.on({
          'open.zf.trigger': this.open.bind(this),
          'close.zf.trigger': this.close.bind(this),
          'toggle.zf.trigger': this.toggle.bind(this),
          'resizeme.zf.trigger': this._setPosition.bind(this)
        });

        if (this.options.hover) {
          this.$anchor.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function () {
            var bodyData = $('body').data();
            if (typeof bodyData.whatinput === 'undefined' || bodyData.whatinput === 'mouse') {
              clearTimeout(_this.timeout);
              _this.timeout = setTimeout(function () {
                _this.open();
                _this.$anchor.data('hover', true);
              }, _this.options.hoverDelay);
            }
          }).on('mouseleave.zf.dropdown', function () {
            clearTimeout(_this.timeout);
            _this.timeout = setTimeout(function () {
              _this.close();
              _this.$anchor.data('hover', false);
            }, _this.options.hoverDelay);
          });
          if (this.options.hoverPane) {
            this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function () {
              clearTimeout(_this.timeout);
            }).on('mouseleave.zf.dropdown', function () {
              clearTimeout(_this.timeout);
              _this.timeout = setTimeout(function () {
                _this.close();
                _this.$anchor.data('hover', false);
              }, _this.options.hoverDelay);
            });
          }
        }
        this.$anchor.add(this.$element).on('keydown.zf.dropdown', function (e) {

          var $target = $(this),
              visibleFocusableElements = Foundation.Keyboard.findFocusable(_this.$element);

          Foundation.Keyboard.handleKey(e, 'Dropdown', {
            open: function open() {
              if ($target.is(_this.$anchor)) {
                _this.open();
                _this.$element.attr('tabindex', -1).focus();
                e.preventDefault();
              }
            },
            close: function close() {
              _this.close();
              _this.$anchor.focus();
            }
          });
        });
      }

      /**
       * Adds an event handler to the body to close any dropdowns on a click.
       * @function
       * @private
       */

    }, {
      key: '_addBodyHandler',
      value: function _addBodyHandler() {
        var $body = $(document.body).not(this.$element),
            _this = this;
        $body.off('click.zf.dropdown').on('click.zf.dropdown', function (e) {
          if (_this.$anchor.is(e.target) || _this.$anchor.find(e.target).length) {
            return;
          }
          if (_this.$element.find(e.target).length) {
            return;
          }
          _this.close();
          $body.off('click.zf.dropdown');
        });
      }

      /**
       * Opens the dropdown pane, and fires a bubbling event to close other dropdowns.
       * @function
       * @fires Dropdown#closeme
       * @fires Dropdown#show
       */

    }, {
      key: 'open',
      value: function open() {
        // var _this = this;
        /**
         * Fires to close other open dropdowns
         * @event Dropdown#closeme
         */
        this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id'));
        this.$anchor.addClass('hover').attr({ 'aria-expanded': true });
        // this.$element/*.show()*/;
        this._setPosition();
        this.$element.addClass('is-open').attr({ 'aria-hidden': false });

        if (this.options.autoFocus) {
          var $focusable = Foundation.Keyboard.findFocusable(this.$element);
          if ($focusable.length) {
            $focusable.eq(0).focus();
          }
        }

        if (this.options.closeOnClick) {
          this._addBodyHandler();
        }

        if (this.options.trapFocus) {
          Foundation.Keyboard.trapFocus(this.$element);
        }

        /**
         * Fires once the dropdown is visible.
         * @event Dropdown#show
         */
        this.$element.trigger('show.zf.dropdown', [this.$element]);
      }

      /**
       * Closes the open dropdown pane.
       * @function
       * @fires Dropdown#hide
       */

    }, {
      key: 'close',
      value: function close() {
        if (!this.$element.hasClass('is-open')) {
          return false;
        }
        this.$element.removeClass('is-open').attr({ 'aria-hidden': true });

        this.$anchor.removeClass('hover').attr('aria-expanded', false);

        if (this.classChanged) {
          var curPositionClass = this.getPositionClass();
          if (curPositionClass) {
            this.$element.removeClass(curPositionClass);
          }
          this.$element.addClass(this.options.positionClass)
          /*.hide()*/.css({ height: '', width: '' });
          this.classChanged = false;
          this.counter = 4;
          this.usedPositions.length = 0;
        }
        this.$element.trigger('hide.zf.dropdown', [this.$element]);

        if (this.options.trapFocus) {
          Foundation.Keyboard.releaseFocus(this.$element);
        }
      }

      /**
       * Toggles the dropdown pane's visibility.
       * @function
       */

    }, {
      key: 'toggle',
      value: function toggle() {
        if (this.$element.hasClass('is-open')) {
          if (this.$anchor.data('hover')) return;
          this.close();
        } else {
          this.open();
        }
      }

      /**
       * Destroys the dropdown.
       * @function
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        this.$element.off('.zf.trigger').hide();
        this.$anchor.off('.zf.dropdown');

        Foundation.unregisterPlugin(this);
      }
    }]);

    return Dropdown;
  }();

  Dropdown.defaults = {
    /**
     * Class that designates bounding container of Dropdown (Default: window)
     * @option
     * @example 'dropdown-parent'
     */
    parentClass: null,
    /**
     * Amount of time to delay opening a submenu on hover event.
     * @option
     * @example 250
     */
    hoverDelay: 250,
    /**
     * Allow submenus to open on hover events
     * @option
     * @example false
     */
    hover: false,
    /**
     * Don't close dropdown when hovering over dropdown pane
     * @option
     * @example true
     */
    hoverPane: false,
    /**
     * Number of pixels between the dropdown pane and the triggering element on open.
     * @option
     * @example 1
     */
    vOffset: 1,
    /**
     * Number of pixels between the dropdown pane and the triggering element on open.
     * @option
     * @example 1
     */
    hOffset: 1,
    /**
     * Class applied to adjust open position. JS will test and fill this in.
     * @option
     * @example 'top'
     */
    positionClass: '',
    /**
     * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands.
     * @option
     * @example false
     */
    trapFocus: false,
    /**
     * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening.
     * @option
     * @example true
     */
    autoFocus: false,
    /**
     * Allows a click on the body to close the dropdown.
     * @option
     * @example false
     */
    closeOnClick: false
  };

  // Window exports
  Foundation.plugin(Dropdown, 'Dropdown');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * DropdownMenu module.
   * @module foundation.dropdown-menu
   * @requires foundation.util.keyboard
   * @requires foundation.util.box
   * @requires foundation.util.nest
   */

  var DropdownMenu = function () {
    /**
     * Creates a new instance of DropdownMenu.
     * @class
     * @fires DropdownMenu#init
     * @param {jQuery} element - jQuery object to make into a dropdown menu.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function DropdownMenu(element, options) {
      _classCallCheck(this, DropdownMenu);

      this.$element = element;
      this.options = $.extend({}, DropdownMenu.defaults, this.$element.data(), options);

      Foundation.Nest.Feather(this.$element, 'dropdown');
      this._init();

      Foundation.registerPlugin(this, 'DropdownMenu');
      Foundation.Keyboard.register('DropdownMenu', {
        'ENTER': 'open',
        'SPACE': 'open',
        'ARROW_RIGHT': 'next',
        'ARROW_UP': 'up',
        'ARROW_DOWN': 'down',
        'ARROW_LEFT': 'previous',
        'ESCAPE': 'close'
      });
    }

    /**
     * Initializes the plugin, and calls _prepareMenu
     * @private
     * @function
     */


    _createClass(DropdownMenu, [{
      key: '_init',
      value: function _init() {
        var subs = this.$element.find('li.is-dropdown-submenu-parent');
        this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub');

        this.$menuItems = this.$element.find('[role="menuitem"]');
        this.$tabs = this.$element.children('[role="menuitem"]');
        this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);

        if (this.$element.hasClass(this.options.rightClass) || this.options.alignment === 'right' || Foundation.rtl() || this.$element.parents('.top-bar-right').is('*')) {
          this.options.alignment = 'right';
          subs.addClass('opens-left');
        } else {
          subs.addClass('opens-right');
        }
        this.changed = false;
        this._events();
      }
    }, {
      key: '_isVertical',
      value: function _isVertical() {
        return this.$tabs.css('display') === 'block';
      }

      /**
       * Adds event listeners to elements within the menu
       * @private
       * @function
       */

    }, {
      key: '_events',
      value: function _events() {
        var _this = this,
            hasTouch = 'ontouchstart' in window || typeof window.ontouchstart !== 'undefined',
            parClass = 'is-dropdown-submenu-parent';

        // used for onClick and in the keyboard handlers
        var handleClickFn = function handleClickFn(e) {
          var $elem = $(e.target).parentsUntil('ul', '.' + parClass),
              hasSub = $elem.hasClass(parClass),
              hasClicked = $elem.attr('data-is-click') === 'true',
              $sub = $elem.children('.is-dropdown-submenu');

          if (hasSub) {
            if (hasClicked) {
              if (!_this.options.closeOnClick || !_this.options.clickOpen && !hasTouch || _this.options.forceFollow && hasTouch) {
                return;
              } else {
                e.stopImmediatePropagation();
                e.preventDefault();
                _this._hide($elem);
              }
            } else {
              e.preventDefault();
              e.stopImmediatePropagation();
              _this._show($sub);
              $elem.add($elem.parentsUntil(_this.$element, '.' + parClass)).attr('data-is-click', true);
            }
          }
        };

        if (this.options.clickOpen || hasTouch) {
          this.$menuItems.on('click.zf.dropdownmenu touchstart.zf.dropdownmenu', handleClickFn);
        }

        // Handle Leaf element Clicks
        if (_this.options.closeOnClickInside) {
          this.$menuItems.on('click.zf.dropdownmenu touchend.zf.dropdownmenu', function (e) {
            var $elem = $(this),
                hasSub = $elem.hasClass(parClass);
            if (!hasSub) {
              _this._hide();
            }
          });
        }

        if (!this.options.disableHover) {
          this.$menuItems.on('mouseenter.zf.dropdownmenu', function (e) {
            var $elem = $(this),
                hasSub = $elem.hasClass(parClass);

            if (hasSub) {
              clearTimeout($elem.data('_delay'));
              $elem.data('_delay', setTimeout(function () {
                _this._show($elem.children('.is-dropdown-submenu'));
              }, _this.options.hoverDelay));
            }
          }).on('mouseleave.zf.dropdownmenu', function (e) {
            var $elem = $(this),
                hasSub = $elem.hasClass(parClass);
            if (hasSub && _this.options.autoclose) {
              if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) {
                return false;
              }

              clearTimeout($elem.data('_delay'));
              $elem.data('_delay', setTimeout(function () {
                _this._hide($elem);
              }, _this.options.closingTime));
            }
          });
        }
        this.$menuItems.on('keydown.zf.dropdownmenu', function (e) {
          var $element = $(e.target).parentsUntil('ul', '[role="menuitem"]'),
              isTab = _this.$tabs.index($element) > -1,
              $elements = isTab ? _this.$tabs : $element.siblings('li').add($element),
              $prevElement,
              $nextElement;

          $elements.each(function (i) {
            if ($(this).is($element)) {
              $prevElement = $elements.eq(i - 1);
              $nextElement = $elements.eq(i + 1);
              return;
            }
          });

          var nextSibling = function nextSibling() {
            if (!$element.is(':last-child')) {
              $nextElement.children('a:first').focus();
              e.preventDefault();
            }
          },
              prevSibling = function prevSibling() {
            $prevElement.children('a:first').focus();
            e.preventDefault();
          },
              openSub = function openSub() {
            var $sub = $element.children('ul.is-dropdown-submenu');
            if ($sub.length) {
              _this._show($sub);
              $element.find('li > a:first').focus();
              e.preventDefault();
            } else {
              return;
            }
          },
              closeSub = function closeSub() {
            //if ($element.is(':first-child')) {
            var close = $element.parent('ul').parent('li');
            close.children('a:first').focus();
            _this._hide(close);
            e.preventDefault();
            //}
          };
          var functions = {
            open: openSub,
            close: function close() {
              _this._hide(_this.$element);
              _this.$menuItems.find('a:first').focus(); // focus to first element
              e.preventDefault();
            },
            handled: function handled() {
              e.stopImmediatePropagation();
            }
          };

          if (isTab) {
            if (_this._isVertical()) {
              // vertical menu
              if (Foundation.rtl()) {
                // right aligned
                $.extend(functions, {
                  down: nextSibling,
                  up: prevSibling,
                  next: closeSub,
                  previous: openSub
                });
              } else {
                // left aligned
                $.extend(functions, {
                  down: nextSibling,
                  up: prevSibling,
                  next: openSub,
                  previous: closeSub
                });
              }
            } else {
              // horizontal menu
              if (Foundation.rtl()) {
                // right aligned
                $.extend(functions, {
                  next: prevSibling,
                  previous: nextSibling,
                  down: openSub,
                  up: closeSub
                });
              } else {
                // left aligned
                $.extend(functions, {
                  next: nextSibling,
                  previous: prevSibling,
                  down: openSub,
                  up: closeSub
                });
              }
            }
          } else {
            // not tabs -> one sub
            if (Foundation.rtl()) {
              // right aligned
              $.extend(functions, {
                next: closeSub,
                previous: openSub,
                down: nextSibling,
                up: prevSibling
              });
            } else {
              // left aligned
              $.extend(functions, {
                next: openSub,
                previous: closeSub,
                down: nextSibling,
                up: prevSibling
              });
            }
          }
          Foundation.Keyboard.handleKey(e, 'DropdownMenu', functions);
        });
      }

      /**
       * Adds an event handler to the body to close any dropdowns on a click.
       * @function
       * @private
       */

    }, {
      key: '_addBodyHandler',
      value: function _addBodyHandler() {
        var $body = $(document.body),
            _this = this;
        $body.off('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu').on('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu', function (e) {
          var $link = _this.$element.find(e.target);
          if ($link.length) {
            return;
          }

          _this._hide();
          $body.off('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu');
        });
      }

      /**
       * Opens a dropdown pane, and checks for collisions first.
       * @param {jQuery} $sub - ul element that is a submenu to show
       * @function
       * @private
       * @fires DropdownMenu#show
       */

    }, {
      key: '_show',
      value: function _show($sub) {
        var idx = this.$tabs.index(this.$tabs.filter(function (i, el) {
          return $(el).find($sub).length > 0;
        }));
        var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');
        this._hide($sibs, idx);
        $sub.css('visibility', 'hidden').addClass('js-dropdown-active').parent('li.is-dropdown-submenu-parent').addClass('is-active');
        var clear = Foundation.Box.ImNotTouchingYou($sub, null, true);
        if (!clear) {
          var oldClass = this.options.alignment === 'left' ? '-right' : '-left',
              $parentLi = $sub.parent('.is-dropdown-submenu-parent');
          $parentLi.removeClass('opens' + oldClass).addClass('opens-' + this.options.alignment);
          clear = Foundation.Box.ImNotTouchingYou($sub, null, true);
          if (!clear) {
            $parentLi.removeClass('opens-' + this.options.alignment).addClass('opens-inner');
          }
          this.changed = true;
        }
        $sub.css('visibility', '');
        if (this.options.closeOnClick) {
          this._addBodyHandler();
        }
        /**
         * Fires when the new dropdown pane is visible.
         * @event DropdownMenu#show
         */
        this.$element.trigger('show.zf.dropdownmenu', [$sub]);
      }

      /**
       * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything.
       * @function
       * @param {jQuery} $elem - element with a submenu to hide
       * @param {Number} idx - index of the $tabs collection to hide
       * @private
       */

    }, {
      key: '_hide',
      value: function _hide($elem, idx) {
        var $toClose;
        if ($elem && $elem.length) {
          $toClose = $elem;
        } else if (idx !== undefined) {
          $toClose = this.$tabs.not(function (i, el) {
            return i === idx;
          });
        } else {
          $toClose = this.$element;
        }
        var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0;

        if (somethingToClose) {
          $toClose.find('li.is-active').add($toClose).attr({
            'data-is-click': false
          }).removeClass('is-active');

          $toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active');

          if (this.changed || $toClose.find('opens-inner').length) {
            var oldClass = this.options.alignment === 'left' ? 'right' : 'left';
            $toClose.find('li.is-dropdown-submenu-parent').add($toClose).removeClass('opens-inner opens-' + this.options.alignment).addClass('opens-' + oldClass);
            this.changed = false;
          }
          /**
           * Fires when the open menus are closed.
           * @event DropdownMenu#hide
           */
          this.$element.trigger('hide.zf.dropdownmenu', [$toClose]);
        }
      }

      /**
       * Destroys the plugin.
       * @function
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        this.$menuItems.off('.zf.dropdownmenu').removeAttr('data-is-click').removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');
        $(document.body).off('.zf.dropdownmenu');
        Foundation.Nest.Burn(this.$element, 'dropdown');
        Foundation.unregisterPlugin(this);
      }
    }]);

    return DropdownMenu;
  }();

  /**
   * Default settings for plugin
   */


  DropdownMenu.defaults = {
    /**
     * Disallows hover events from opening submenus
     * @option
     * @example false
     */
    disableHover: false,
    /**
     * Allow a submenu to automatically close on a mouseleave event, if not clicked open.
     * @option
     * @example true
     */
    autoclose: true,
    /**
     * Amount of time to delay opening a submenu on hover event.
     * @option
     * @example 50
     */
    hoverDelay: 50,
    /**
     * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu.
     * @option
     * @example true
     */
    clickOpen: false,
    /**
     * Amount of time to delay closing a submenu on a mouseleave event.
     * @option
     * @example 500
     */

    closingTime: 500,
    /**
     * Position of the menu relative to what direction the submenus should open. Handled by JS.
     * @option
     * @example 'left'
     */
    alignment: 'left',
    /**
     * Allow clicks on the body to close any open submenus.
     * @option
     * @example true
     */
    closeOnClick: true,
    /**
     * Allow clicks on leaf anchor links to close any open submenus.
     * @option
     * @example true
     */
    closeOnClickInside: true,
    /**
     * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class.
     * @option
     * @example 'vertical'
     */
    verticalClass: 'vertical',
    /**
     * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class.
     * @option
     * @example 'align-right'
     */
    rightClass: 'align-right',
    /**
     * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile.
     * @option
     * @example false
     */
    forceFollow: true
  };

  // Window exports
  Foundation.plugin(DropdownMenu, 'DropdownMenu');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * Equalizer module.
   * @module foundation.equalizer
   * @requires foundation.util.mediaQuery
   * @requires foundation.util.timerAndImageLoader if equalizer contains images
   */

  var Equalizer = function () {
    /**
     * Creates a new instance of Equalizer.
     * @class
     * @fires Equalizer#init
     * @param {Object} element - jQuery object to add the trigger to.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function Equalizer(element, options) {
      _classCallCheck(this, Equalizer);

      this.$element = element;
      this.options = $.extend({}, Equalizer.defaults, this.$element.data(), options);

      this._init();

      Foundation.registerPlugin(this, 'Equalizer');
    }

    /**
     * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load.
     * @private
     */


    _createClass(Equalizer, [{
      key: '_init',
      value: function _init() {
        var eqId = this.$element.attr('data-equalizer') || '';
        var $watched = this.$element.find('[data-equalizer-watch="' + eqId + '"]');

        this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]');
        this.$element.attr('data-resize', eqId || Foundation.GetYoDigits(6, 'eq'));
        this.$element.attr('data-mutate', eqId || Foundation.GetYoDigits(6, 'eq'));

        this.hasNested = this.$element.find('[data-equalizer]').length > 0;
        this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0;
        this.isOn = false;
        this._bindHandler = {
          onResizeMeBound: this._onResizeMe.bind(this),
          onPostEqualizedBound: this._onPostEqualized.bind(this)
        };

        var imgs = this.$element.find('img');
        var tooSmall;
        if (this.options.equalizeOn) {
          tooSmall = this._checkMQ();
          $(window).on('changed.zf.mediaquery', this._checkMQ.bind(this));
        } else {
          this._events();
        }
        if (tooSmall !== undefined && tooSmall === false || tooSmall === undefined) {
          if (imgs.length) {
            Foundation.onImagesLoaded(imgs, this._reflow.bind(this));
          } else {
            this._reflow();
          }
        }
      }

      /**
       * Removes event listeners if the breakpoint is too small.
       * @private
       */

    }, {
      key: '_pauseEvents',
      value: function _pauseEvents() {
        this.isOn = false;
        this.$element.off({
          '.zf.equalizer': this._bindHandler.onPostEqualizedBound,
          'resizeme.zf.trigger': this._bindHandler.onResizeMeBound,
          'mutateme.zf.trigger': this._bindHandler.onResizeMeBound
        });
      }

      /**
       * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound
       * @private
       */

    }, {
      key: '_onResizeMe',
      value: function _onResizeMe(e) {
        this._reflow();
      }

      /**
       * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound
       * @private
       */

    }, {
      key: '_onPostEqualized',
      value: function _onPostEqualized(e) {
        if (e.target !== this.$element[0]) {
          this._reflow();
        }
      }

      /**
       * Initializes events for Equalizer.
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        var _this = this;
        this._pauseEvents();
        if (this.hasNested) {
          this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound);
        } else {
          this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound);
          this.$element.on('mutateme.zf.trigger', this._bindHandler.onResizeMeBound);
        }
        this.isOn = true;
      }

      /**
       * Checks the current breakpoint to the minimum required size.
       * @private
       */

    }, {
      key: '_checkMQ',
      value: function _checkMQ() {
        var tooSmall = !Foundation.MediaQuery.is(this.options.equalizeOn);
        if (tooSmall) {
          if (this.isOn) {
            this._pauseEvents();
            this.$watched.css('height', 'auto');
          }
        } else {
          if (!this.isOn) {
            this._events();
          }
        }
        return tooSmall;
      }

      /**
       * A noop version for the plugin
       * @private
       */

    }, {
      key: '_killswitch',
      value: function _killswitch() {
        return;
      }

      /**
       * Calls necessary functions to update Equalizer upon DOM change
       * @private
       */

    }, {
      key: '_reflow',
      value: function _reflow() {
        if (!this.options.equalizeOnStack) {
          if (this._isStacked()) {
            this.$watched.css('height', 'auto');
            return false;
          }
        }
        if (this.options.equalizeByRow) {
          this.getHeightsByRow(this.applyHeightByRow.bind(this));
        } else {
          this.getHeights(this.applyHeight.bind(this));
        }
      }

      /**
       * Manually determines if the first 2 elements are *NOT* stacked.
       * @private
       */

    }, {
      key: '_isStacked',
      value: function _isStacked() {
        if (!this.$watched[0] || !this.$watched[1]) {
          return true;
        }
        return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top;
      }

      /**
       * Finds the outer heights of children contained within an Equalizer parent and returns them in an array
       * @param {Function} cb - A non-optional callback to return the heights array to.
       * @returns {Array} heights - An array of heights of children within Equalizer container
       */

    }, {
      key: 'getHeights',
      value: function getHeights(cb) {
        var heights = [];
        for (var i = 0, len = this.$watched.length; i < len; i++) {
          this.$watched[i].style.height = 'auto';
          heights.push(this.$watched[i].offsetHeight);
        }
        cb(heights);
      }

      /**
       * Finds the outer heights of children contained within an Equalizer parent and returns them in an array
       * @param {Function} cb - A non-optional callback to return the heights array to.
       * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child
       */

    }, {
      key: 'getHeightsByRow',
      value: function getHeightsByRow(cb) {
        var lastElTopOffset = this.$watched.length ? this.$watched.first().offset().top : 0,
            groups = [],
            group = 0;
        //group by Row
        groups[group] = [];
        for (var i = 0, len = this.$watched.length; i < len; i++) {
          this.$watched[i].style.height = 'auto';
          //maybe could use this.$watched[i].offsetTop
          var elOffsetTop = $(this.$watched[i]).offset().top;
          if (elOffsetTop != lastElTopOffset) {
            group++;
            groups[group] = [];
            lastElTopOffset = elOffsetTop;
          }
          groups[group].push([this.$watched[i], this.$watched[i].offsetHeight]);
        }

        for (var j = 0, ln = groups.length; j < ln; j++) {
          var heights = $(groups[j]).map(function () {
            return this[1];
          }).get();
          var max = Math.max.apply(null, heights);
          groups[j].push(max);
        }
        cb(groups);
      }

      /**
       * Changes the CSS height property of each child in an Equalizer parent to match the tallest
       * @param {array} heights - An array of heights of children within Equalizer container
       * @fires Equalizer#preequalized
       * @fires Equalizer#postequalized
       */

    }, {
      key: 'applyHeight',
      value: function applyHeight(heights) {
        var max = Math.max.apply(null, heights);
        /**
         * Fires before the heights are applied
         * @event Equalizer#preequalized
         */
        this.$element.trigger('preequalized.zf.equalizer');

        this.$watched.css('height', max);

        /**
         * Fires when the heights have been applied
         * @event Equalizer#postequalized
         */
        this.$element.trigger('postequalized.zf.equalizer');
      }

      /**
       * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row
       * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child
       * @fires Equalizer#preequalized
       * @fires Equalizer#preequalizedrow
       * @fires Equalizer#postequalizedrow
       * @fires Equalizer#postequalized
       */

    }, {
      key: 'applyHeightByRow',
      value: function applyHeightByRow(groups) {
        /**
         * Fires before the heights are applied
         */
        this.$element.trigger('preequalized.zf.equalizer');
        for (var i = 0, len = groups.length; i < len; i++) {
          var groupsILength = groups[i].length,
              max = groups[i][groupsILength - 1];
          if (groupsILength <= 2) {
            $(groups[i][0][0]).css({ 'height': 'auto' });
            continue;
          }
          /**
            * Fires before the heights per row are applied
            * @event Equalizer#preequalizedrow
            */
          this.$element.trigger('preequalizedrow.zf.equalizer');
          for (var j = 0, lenJ = groupsILength - 1; j < lenJ; j++) {
            $(groups[i][j][0]).css({ 'height': max });
          }
          /**
            * Fires when the heights per row have been applied
            * @event Equalizer#postequalizedrow
            */
          this.$element.trigger('postequalizedrow.zf.equalizer');
        }
        /**
         * Fires when the heights have been applied
         */
        this.$element.trigger('postequalized.zf.equalizer');
      }

      /**
       * Destroys an instance of Equalizer.
       * @function
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        this._pauseEvents();
        this.$watched.css('height', 'auto');

        Foundation.unregisterPlugin(this);
      }
    }]);

    return Equalizer;
  }();

  /**
   * Default settings for plugin
   */


  Equalizer.defaults = {
    /**
     * Enable height equalization when stacked on smaller screens.
     * @option
     * @example true
     */
    equalizeOnStack: false,
    /**
     * Enable height equalization row by row.
     * @option
     * @example false
     */
    equalizeByRow: false,
    /**
     * String representing the minimum breakpoint size the plugin should equalize heights on.
     * @option
     * @example 'medium'
     */
    equalizeOn: ''
  };

  // Window exports
  Foundation.plugin(Equalizer, 'Equalizer');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * Interchange module.
   * @module foundation.interchange
   * @requires foundation.util.mediaQuery
   * @requires foundation.util.timerAndImageLoader
   */

  var Interchange = function () {
    /**
     * Creates a new instance of Interchange.
     * @class
     * @fires Interchange#init
     * @param {Object} element - jQuery object to add the trigger to.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function Interchange(element, options) {
      _classCallCheck(this, Interchange);

      this.$element = element;
      this.options = $.extend({}, Interchange.defaults, options);
      this.rules = [];
      this.currentPath = '';

      this._init();
      this._events();

      Foundation.registerPlugin(this, 'Interchange');
    }

    /**
     * Initializes the Interchange plugin and calls functions to get interchange functioning on load.
     * @function
     * @private
     */


    _createClass(Interchange, [{
      key: '_init',
      value: function _init() {
        this._addBreakpoints();
        this._generateRules();
        this._reflow();
      }

      /**
       * Initializes events for Interchange.
       * @function
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        var _this2 = this;

        $(window).on('resize.zf.interchange', Foundation.util.throttle(function () {
          _this2._reflow();
        }, 50));
      }

      /**
       * Calls necessary functions to update Interchange upon DOM change
       * @function
       * @private
       */

    }, {
      key: '_reflow',
      value: function _reflow() {
        var match;

        // Iterate through each rule, but only save the last match
        for (var i in this.rules) {
          if (this.rules.hasOwnProperty(i)) {
            var rule = this.rules[i];
            if (window.matchMedia(rule.query).matches) {
              match = rule;
            }
          }
        }

        if (match) {
          this.replace(match.path);
        }
      }

      /**
       * Gets the Foundation breakpoints and adds them to the Interchange.SPECIAL_QUERIES object.
       * @function
       * @private
       */

    }, {
      key: '_addBreakpoints',
      value: function _addBreakpoints() {
        for (var i in Foundation.MediaQuery.queries) {
          if (Foundation.MediaQuery.queries.hasOwnProperty(i)) {
            var query = Foundation.MediaQuery.queries[i];
            Interchange.SPECIAL_QUERIES[query.name] = query.value;
          }
        }
      }

      /**
       * Checks the Interchange element for the provided media query + content pairings
       * @function
       * @private
       * @param {Object} element - jQuery object that is an Interchange instance
       * @returns {Array} scenarios - Array of objects that have 'mq' and 'path' keys with corresponding keys
       */

    }, {
      key: '_generateRules',
      value: function _generateRules(element) {
        var rulesList = [];
        var rules;

        if (this.options.rules) {
          rules = this.options.rules;
        } else {
          rules = this.$element.data('interchange').match(/\[.*?\]/g);
        }

        for (var i in rules) {
          if (rules.hasOwnProperty(i)) {
            var rule = rules[i].slice(1, -1).split(', ');
            var path = rule.slice(0, -1).join('');
            var query = rule[rule.length - 1];

            if (Interchange.SPECIAL_QUERIES[query]) {
              query = Interchange.SPECIAL_QUERIES[query];
            }

            rulesList.push({
              path: path,
              query: query
            });
          }
        }

        this.rules = rulesList;
      }

      /**
       * Update the `src` property of an image, or change the HTML of a container, to the specified path.
       * @function
       * @param {String} path - Path to the image or HTML partial.
       * @fires Interchange#replaced
       */

    }, {
      key: 'replace',
      value: function replace(path) {
        if (this.currentPath === path) return;

        var _this = this,
            trigger = 'replaced.zf.interchange';

        // Replacing images
        if (this.$element[0].nodeName === 'IMG') {
          this.$element.attr('src', path).on('load', function () {
            _this.currentPath = path;
          }).trigger(trigger);
        }
        // Replacing background images
        else if (path.match(/\.(gif|jpg|jpeg|png|svg|tiff)([?#].*)?/i)) {
            this.$element.css({ 'background-image': 'url(' + path + ')' }).trigger(trigger);
          }
          // Replacing HTML
          else {
              $.get(path, function (response) {
                _this.$element.html(response).trigger(trigger);
                $(response).foundation();
                _this.currentPath = path;
              });
            }

        /**
         * Fires when content in an Interchange element is done being loaded.
         * @event Interchange#replaced
         */
        // this.$element.trigger('replaced.zf.interchange');
      }

      /**
       * Destroys an instance of interchange.
       * @function
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        //TODO this.
      }
    }]);

    return Interchange;
  }();

  /**
   * Default settings for plugin
   */


  Interchange.defaults = {
    /**
     * Rules to be applied to Interchange elements. Set with the `data-interchange` array notation.
     * @option
     */
    rules: null
  };

  Interchange.SPECIAL_QUERIES = {
    'landscape': 'screen and (orientation: landscape)',
    'portrait': 'screen and (orientation: portrait)',
    'retina': 'only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)'
  };

  // Window exports
  Foundation.plugin(Interchange, 'Interchange');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * Magellan module.
   * @module foundation.magellan
   */

  var Magellan = function () {
    /**
     * Creates a new instance of Magellan.
     * @class
     * @fires Magellan#init
     * @param {Object} element - jQuery object to add the trigger to.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function Magellan(element, options) {
      _classCallCheck(this, Magellan);

      this.$element = element;
      this.options = $.extend({}, Magellan.defaults, this.$element.data(), options);

      this._init();
      this.calcPoints();

      Foundation.registerPlugin(this, 'Magellan');
    }

    /**
     * Initializes the Magellan plugin and calls functions to get equalizer functioning on load.
     * @private
     */


    _createClass(Magellan, [{
      key: '_init',
      value: function _init() {
        var id = this.$element[0].id || Foundation.GetYoDigits(6, 'magellan');
        var _this = this;
        this.$targets = $('[data-magellan-target]');
        this.$links = this.$element.find('a');
        this.$element.attr({
          'data-resize': id,
          'data-scroll': id,
          'id': id
        });
        this.$active = $();
        this.scrollPos = parseInt(window.pageYOffset, 10);

        this._events();
      }

      /**
       * Calculates an array of pixel values that are the demarcation lines between locations on the page.
       * Can be invoked if new elements are added or the size of a location changes.
       * @function
       */

    }, {
      key: 'calcPoints',
      value: function calcPoints() {
        var _this = this,
            body = document.body,
            html = document.documentElement;

        this.points = [];
        this.winHeight = Math.round(Math.max(window.innerHeight, html.clientHeight));
        this.docHeight = Math.round(Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight));

        this.$targets.each(function () {
          var $tar = $(this),
              pt = Math.round($tar.offset().top - _this.options.threshold);
          $tar.targetPoint = pt;
          _this.points.push(pt);
        });
      }

      /**
       * Initializes events for Magellan.
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        var _this = this,
            $body = $('html, body'),
            opts = {
          duration: _this.options.animationDuration,
          easing: _this.options.animationEasing
        };
        $(window).one('load', function () {
          if (_this.options.deepLinking) {
            if (location.hash) {
              _this.scrollToLoc(location.hash);
            }
          }
          _this.calcPoints();
          _this._updateActive();
        });

        this.$element.on({
          'resizeme.zf.trigger': this.reflow.bind(this),
          'scrollme.zf.trigger': this._updateActive.bind(this)
        }).on('click.zf.magellan', 'a[href^="#"]', function (e) {
          e.preventDefault();
          var arrival = this.getAttribute('href');
          _this.scrollToLoc(arrival);
        });
        $(window).on('popstate', function (e) {
          if (_this.options.deepLinking) {
            _this.scrollToLoc(window.location.hash);
          }
        });
      }

      /**
       * Function to scroll to a given location on the page.
       * @param {String} loc - a properly formatted jQuery id selector. Example: '#foo'
       * @function
       */

    }, {
      key: 'scrollToLoc',
      value: function scrollToLoc(loc) {
        // Do nothing if target does not exist to prevent errors
        if (!$(loc).length) {
          return false;
        }
        this._inTransition = true;
        var _this = this,
            scrollPos = Math.round($(loc).offset().top - this.options.threshold / 2 - this.options.barOffset);

        $('html, body').stop(true).animate({ scrollTop: scrollPos }, this.options.animationDuration, this.options.animationEasing, function () {
          _this._inTransition = false;_this._updateActive();
        });
      }

      /**
       * Calls necessary functions to update Magellan upon DOM change
       * @function
       */

    }, {
      key: 'reflow',
      value: function reflow() {
        this.calcPoints();
        this._updateActive();
      }

      /**
       * Updates the visibility of an active location link, and updates the url hash for the page, if deepLinking enabled.
       * @private
       * @function
       * @fires Magellan#update
       */

    }, {
      key: '_updateActive',
      value: function _updateActive() /*evt, elem, scrollPos*/{
        if (this._inTransition) {
          return;
        }
        var winPos = /*scrollPos ||*/parseInt(window.pageYOffset, 10),
            curIdx;

        if (winPos + this.winHeight === this.docHeight) {
          curIdx = this.points.length - 1;
        } else if (winPos < this.points[0]) {
          curIdx = undefined;
        } else {
          var isDown = this.scrollPos < winPos,
              _this = this,
              curVisible = this.points.filter(function (p, i) {
            return isDown ? p - _this.options.barOffset <= winPos : p - _this.options.barOffset - _this.options.threshold <= winPos;
          });
          curIdx = curVisible.length ? curVisible.length - 1 : 0;
        }

        this.$active.removeClass(this.options.activeClass);
        this.$active = this.$links.filter('[href="#' + this.$targets.eq(curIdx).data('magellan-target') + '"]').addClass(this.options.activeClass);

        if (this.options.deepLinking) {
          var hash = "";
          if (curIdx != undefined) {
            hash = this.$active[0].getAttribute('href');
          }
          if (hash !== window.location.hash) {
            if (window.history.pushState) {
              window.history.pushState(null, null, hash);
            } else {
              window.location.hash = hash;
            }
          }
        }

        this.scrollPos = winPos;
        /**
         * Fires when magellan is finished updating to the new active element.
         * @event Magellan#update
         */
        this.$element.trigger('update.zf.magellan', [this.$active]);
      }

      /**
       * Destroys an instance of Magellan and resets the url of the window.
       * @function
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        this.$element.off('.zf.trigger .zf.magellan').find('.' + this.options.activeClass).removeClass(this.options.activeClass);

        if (this.options.deepLinking) {
          var hash = this.$active[0].getAttribute('href');
          window.location.hash.replace(hash, '');
        }

        Foundation.unregisterPlugin(this);
      }
    }]);

    return Magellan;
  }();

  /**
   * Default settings for plugin
   */


  Magellan.defaults = {
    /**
     * Amount of time, in ms, the animated scrolling should take between locations.
     * @option
     * @example 500
     */
    animationDuration: 500,
    /**
     * Animation style to use when scrolling between locations.
     * @option
     * @example 'ease-in-out'
     */
    animationEasing: 'linear',
    /**
     * Number of pixels to use as a marker for location changes.
     * @option
     * @example 50
     */
    threshold: 50,
    /**
     * Class applied to the active locations link on the magellan container.
     * @option
     * @example 'active'
     */
    activeClass: 'active',
    /**
     * Allows the script to manipulate the url of the current page, and if supported, alter the history.
     * @option
     * @example true
     */
    deepLinking: false,
    /**
     * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.
     * @option
     * @example 25
     */
    barOffset: 0
  };

  // Window exports
  Foundation.plugin(Magellan, 'Magellan');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * OffCanvas module.
   * @module foundation.offcanvas
   * @requires foundation.util.mediaQuery
   * @requires foundation.util.triggers
   * @requires foundation.util.motion
   */

  var OffCanvas = function () {
    /**
     * Creates a new instance of an off-canvas wrapper.
     * @class
     * @fires OffCanvas#init
     * @param {Object} element - jQuery object to initialize.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function OffCanvas(element, options) {
      _classCallCheck(this, OffCanvas);

      this.$element = element;
      this.options = $.extend({}, OffCanvas.defaults, this.$element.data(), options);
      this.$lastTrigger = $();
      this.$triggers = $();

      this._init();
      this._events();

      Foundation.registerPlugin(this, 'OffCanvas');
      Foundation.Keyboard.register('OffCanvas', {
        'ESCAPE': 'close'
      });
    }

    /**
     * Initializes the off-canvas wrapper by adding the exit overlay (if needed).
     * @function
     * @private
     */


    _createClass(OffCanvas, [{
      key: '_init',
      value: function _init() {
        var id = this.$element.attr('id');

        this.$element.attr('aria-hidden', 'true');

        this.$element.addClass('is-transition-' + this.options.transition);

        // Find triggers that affect this element and add aria-expanded to them
        this.$triggers = $(document).find('[data-open="' + id + '"], [data-close="' + id + '"], [data-toggle="' + id + '"]').attr('aria-expanded', 'false').attr('aria-controls', id);

        // Add an overlay over the content if necessary
        if (this.options.contentOverlay === true) {
          var overlay = document.createElement('div');
          var overlayPosition = $(this.$element).css("position") === 'fixed' ? 'is-overlay-fixed' : 'is-overlay-absolute';
          overlay.setAttribute('class', 'js-off-canvas-overlay ' + overlayPosition);
          this.$overlay = $(overlay);
          if (overlayPosition === 'is-overlay-fixed') {
            $('body').append(this.$overlay);
          } else {
            this.$element.siblings('[data-off-canvas-content]').append(this.$overlay);
          }
        }

        this.options.isRevealed = this.options.isRevealed || new RegExp(this.options.revealClass, 'g').test(this.$element[0].className);

        if (this.options.isRevealed === true) {
          this.options.revealOn = this.options.revealOn || this.$element[0].className.match(/(reveal-for-medium|reveal-for-large)/g)[0].split('-')[2];
          this._setMQChecker();
        }
        if (!this.options.transitionTime === true) {
          this.options.transitionTime = parseFloat(window.getComputedStyle($('[data-off-canvas]')[0]).transitionDuration) * 1000;
        }
      }

      /**
       * Adds event handlers to the off-canvas wrapper and the exit overlay.
       * @function
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        this.$element.off('.zf.trigger .zf.offcanvas').on({
          'open.zf.trigger': this.open.bind(this),
          'close.zf.trigger': this.close.bind(this),
          'toggle.zf.trigger': this.toggle.bind(this),
          'keydown.zf.offcanvas': this._handleKeyboard.bind(this)
        });

        if (this.options.closeOnClick === true) {
          var $target = this.options.contentOverlay ? this.$overlay : $('[data-off-canvas-content]');
          $target.on({ 'click.zf.offcanvas': this.close.bind(this) });
        }
      }

      /**
       * Applies event listener for elements that will reveal at certain breakpoints.
       * @private
       */

    }, {
      key: '_setMQChecker',
      value: function _setMQChecker() {
        var _this = this;

        $(window).on('changed.zf.mediaquery', function () {
          if (Foundation.MediaQuery.atLeast(_this.options.revealOn)) {
            _this.reveal(true);
          } else {
            _this.reveal(false);
          }
        }).one('load.zf.offcanvas', function () {
          if (Foundation.MediaQuery.atLeast(_this.options.revealOn)) {
            _this.reveal(true);
          }
        });
      }

      /**
       * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open.
       * @param {Boolean} isRevealed - true if element should be revealed.
       * @function
       */

    }, {
      key: 'reveal',
      value: function reveal(isRevealed) {
        var $closer = this.$element.find('[data-close]');
        if (isRevealed) {
          this.close();
          this.isRevealed = true;
          this.$element.attr('aria-hidden', 'false');
          this.$element.off('open.zf.trigger toggle.zf.trigger');
          if ($closer.length) {
            $closer.hide();
          }
        } else {
          this.isRevealed = false;
          this.$element.attr('aria-hidden', 'true');
          this.$element.on({
            'open.zf.trigger': this.open.bind(this),
            'toggle.zf.trigger': this.toggle.bind(this)
          });
          if ($closer.length) {
            $closer.show();
          }
        }
      }

      /**
       * Stops scrolling of the body when offcanvas is open on mobile Safari and other troublesome browsers.
       * @private
       */

    }, {
      key: '_stopScrolling',
      value: function _stopScrolling(event) {
        return false;
      }

      /**
       * Opens the off-canvas menu.
       * @function
       * @param {Object} event - Event object passed from listener.
       * @param {jQuery} trigger - element that triggered the off-canvas to open.
       * @fires OffCanvas#opened
       */

    }, {
      key: 'open',
      value: function open(event, trigger) {
        if (this.$element.hasClass('is-open') || this.isRevealed) {
          return;
        }
        var _this = this;

        if (trigger) {
          this.$lastTrigger = trigger;
        }

        if (this.options.forceTo === 'top') {
          window.scrollTo(0, 0);
        } else if (this.options.forceTo === 'bottom') {
          window.scrollTo(0, document.body.scrollHeight);
        }

        /**
         * Fires when the off-canvas menu opens.
         * @event OffCanvas#opened
         */
        _this.$element.addClass('is-open');

        this.$triggers.attr('aria-expanded', 'true');
        this.$element.attr('aria-hidden', 'false').trigger('opened.zf.offcanvas');

        // If `contentScroll` is set to false, add class and disable scrolling on touch devices.
        if (this.options.contentScroll === false) {
          $('body').addClass('is-off-canvas-open').on('touchmove', this._stopScrolling);
        }

        if (this.options.contentOverlay === true) {
          this.$overlay.addClass('is-visible');
        }

        if (this.options.closeOnClick === true && this.options.contentOverlay === true) {
          this.$overlay.addClass('is-closable');
        }

        if (this.options.autoFocus === true) {
          this.$element.one(Foundation.transitionend(this.$element), function () {
            _this.$element.find('a, button').eq(0).focus();
          });
        }

        if (this.options.trapFocus === true) {
          this.$element.siblings('[data-off-canvas-content]').attr('tabindex', '-1');
          Foundation.Keyboard.trapFocus(this.$element);
        }
      }

      /**
       * Closes the off-canvas menu.
       * @function
       * @param {Function} cb - optional cb to fire after closure.
       * @fires OffCanvas#closed
       */

    }, {
      key: 'close',
      value: function close(cb) {
        if (!this.$element.hasClass('is-open') || this.isRevealed) {
          return;
        }

        var _this = this;

        _this.$element.removeClass('is-open');

        this.$element.attr('aria-hidden', 'true')
        /**
         * Fires when the off-canvas menu opens.
         * @event OffCanvas#closed
         */
        .trigger('closed.zf.offcanvas');

        // If `contentScroll` is set to false, remove class and re-enable scrolling on touch devices.
        if (this.options.contentScroll === false) {
          $('body').removeClass('is-off-canvas-open').off('touchmove', this._stopScrolling);
        }

        if (this.options.contentOverlay === true) {
          this.$overlay.removeClass('is-visible');
        }

        if (this.options.closeOnClick === true && this.options.contentOverlay === true) {
          this.$overlay.removeClass('is-closable');
        }

        this.$triggers.attr('aria-expanded', 'false');

        if (this.options.trapFocus === true) {
          this.$element.siblings('[data-off-canvas-content]').removeAttr('tabindex');
          Foundation.Keyboard.releaseFocus(this.$element);
        }
      }

      /**
       * Toggles the off-canvas menu open or closed.
       * @function
       * @param {Object} event - Event object passed from listener.
       * @param {jQuery} trigger - element that triggered the off-canvas to open.
       */

    }, {
      key: 'toggle',
      value: function toggle(event, trigger) {
        if (this.$element.hasClass('is-open')) {
          this.close(event, trigger);
        } else {
          this.open(event, trigger);
        }
      }

      /**
       * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu.
       * @function
       * @private
       */

    }, {
      key: '_handleKeyboard',
      value: function _handleKeyboard(e) {
        var _this2 = this;

        Foundation.Keyboard.handleKey(e, 'OffCanvas', {
          close: function close() {
            _this2.close();
            _this2.$lastTrigger.focus();
            return true;
          },
          handled: function handled() {
            e.stopPropagation();
            e.preventDefault();
          }
        });
      }

      /**
       * Destroys the offcanvas plugin.
       * @function
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        this.close();
        this.$element.off('.zf.trigger .zf.offcanvas');
        this.$overlay.off('.zf.offcanvas');

        Foundation.unregisterPlugin(this);
      }
    }]);

    return OffCanvas;
  }();

  OffCanvas.defaults = {
    /**
     * Allow the user to click outside of the menu to close it.
     * @option
     * @example true
     */
    closeOnClick: true,

    /**
     * Adds an overlay on top of `[data-off-canvas-content]`.
     * @option
     * @example true
     */
    contentOverlay: true,

    /**
     * Enable/disable scrolling of the main content when an off canvas panel is open.
     * @option
     * @example true
     */
    contentScroll: true,

    /**
     * Amount of time in ms the open and close transition requires. If none selected, pulls from body style.
     * @option
     * @example 500
     */
    transitionTime: 0,

    /**
     * Type of transition for the offcanvas menu. Options are 'push', 'detached' or 'slide'.
     * @option
     * @example push
     */
    transition: 'push',

    /**
     * Force the page to scroll to top or bottom on open.
     * @option
     * @example top
     */
    forceTo: null,

    /**
     * Allow the offcanvas to remain open for certain breakpoints.
     * @option
     * @example false
     */
    isRevealed: false,

    /**
     * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option.
     * @option
     * @example reveal-for-large
     */
    revealOn: null,

    /**
     * Force focus to the offcanvas on open. If true, will focus the opening trigger on close.
     * @option
     * @example true
     */
    autoFocus: true,

    /**
     * Class used to force an offcanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`.
     * @option
     * TODO improve the regex testing for this.
     * @example reveal-for-large
     */
    revealClass: 'reveal-for-',

    /**
     * Triggers optional focus trapping when opening an offcanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes.
     * @option
     * @example true
     */
    trapFocus: false
  };

  // Window exports
  Foundation.plugin(OffCanvas, 'OffCanvas');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * Orbit module.
   * @module foundation.orbit
   * @requires foundation.util.keyboard
   * @requires foundation.util.motion
   * @requires foundation.util.timerAndImageLoader
   * @requires foundation.util.touch
   */

  var Orbit = function () {
    /**
    * Creates a new instance of an orbit carousel.
    * @class
    * @param {jQuery} element - jQuery object to make into an Orbit Carousel.
    * @param {Object} options - Overrides to the default plugin settings.
    */
    function Orbit(element, options) {
      _classCallCheck(this, Orbit);

      this.$element = element;
      this.options = $.extend({}, Orbit.defaults, this.$element.data(), options);

      this._init();

      Foundation.registerPlugin(this, 'Orbit');
      Foundation.Keyboard.register('Orbit', {
        'ltr': {
          'ARROW_RIGHT': 'next',
          'ARROW_LEFT': 'previous'
        },
        'rtl': {
          'ARROW_LEFT': 'next',
          'ARROW_RIGHT': 'previous'
        }
      });
    }

    /**
    * Initializes the plugin by creating jQuery collections, setting attributes, and starting the animation.
    * @function
    * @private
    */


    _createClass(Orbit, [{
      key: '_init',
      value: function _init() {
        // @TODO: consider discussion on PR #9278 about DOM pollution by changeSlide
        this._reset();

        this.$wrapper = this.$element.find('.' + this.options.containerClass);
        this.$slides = this.$element.find('.' + this.options.slideClass);

        var $images = this.$element.find('img'),
            initActive = this.$slides.filter('.is-active'),
            id = this.$element[0].id || Foundation.GetYoDigits(6, 'orbit');

        this.$element.attr({
          'data-resize': id,
          'id': id
        });

        if (!initActive.length) {
          this.$slides.eq(0).addClass('is-active');
        }

        if (!this.options.useMUI) {
          this.$slides.addClass('no-motionui');
        }

        if ($images.length) {
          Foundation.onImagesLoaded($images, this._prepareForOrbit.bind(this));
        } else {
          this._prepareForOrbit(); //hehe
        }

        if (this.options.bullets) {
          this._loadBullets();
        }

        this._events();

        if (this.options.autoPlay && this.$slides.length > 1) {
          this.geoSync();
        }

        if (this.options.accessible) {
          // allow wrapper to be focusable to enable arrow navigation
          this.$wrapper.attr('tabindex', 0);
        }
      }

      /**
      * Creates a jQuery collection of bullets, if they are being used.
      * @function
      * @private
      */

    }, {
      key: '_loadBullets',
      value: function _loadBullets() {
        this.$bullets = this.$element.find('.' + this.options.boxOfBullets).find('button');
      }

      /**
      * Sets a `timer` object on the orbit, and starts the counter for the next slide.
      * @function
      */

    }, {
      key: 'geoSync',
      value: function geoSync() {
        var _this = this;
        this.timer = new Foundation.Timer(this.$element, {
          duration: this.options.timerDelay,
          infinite: false
        }, function () {
          _this.changeSlide(true);
        });
        this.timer.start();
      }

      /**
      * Sets wrapper and slide heights for the orbit.
      * @function
      * @private
      */

    }, {
      key: '_prepareForOrbit',
      value: function _prepareForOrbit() {
        var _this = this;
        this._setWrapperHeight();
      }

      /**
      * Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height.
      * @function
      * @private
      * @param {Function} cb - a callback function to fire when complete.
      */

    }, {
      key: '_setWrapperHeight',
      value: function _setWrapperHeight(cb) {
        //rewrite this to `for` loop
        var max = 0,
            temp,
            counter = 0,
            _this = this;

        this.$slides.each(function () {
          temp = this.getBoundingClientRect().height;
          $(this).attr('data-slide', counter);

          if (_this.$slides.filter('.is-active')[0] !== _this.$slides.eq(counter)[0]) {
            //if not the active slide, set css position and display property
            $(this).css({ 'position': 'relative', 'display': 'none' });
          }
          max = temp > max ? temp : max;
          counter++;
        });

        if (counter === this.$slides.length) {
          this.$wrapper.css({ 'height': max }); //only change the wrapper height property once.
          if (cb) {
            cb(max);
          } //fire callback with max height dimension.
        }
      }

      /**
      * Sets the max-height of each slide.
      * @function
      * @private
      */

    }, {
      key: '_setSlideHeight',
      value: function _setSlideHeight(height) {
        this.$slides.each(function () {
          $(this).css('max-height', height);
        });
      }

      /**
      * Adds event listeners to basically everything within the element.
      * @function
      * @private
      */

    }, {
      key: '_events',
      value: function _events() {
        var _this = this;

        //***************************************
        //**Now using custom event - thanks to:**
        //**      Yohai Ararat of Toronto      **
        //***************************************
        //
        this.$element.off('.resizeme.zf.trigger').on({
          'resizeme.zf.trigger': this._prepareForOrbit.bind(this)
        });
        if (this.$slides.length > 1) {

          if (this.options.swipe) {
            this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit').on('swipeleft.zf.orbit', function (e) {
              e.preventDefault();
              _this.changeSlide(true);
            }).on('swiperight.zf.orbit', function (e) {
              e.preventDefault();
              _this.changeSlide(false);
            });
          }
          //***************************************

          if (this.options.autoPlay) {
            this.$slides.on('click.zf.orbit', function () {
              _this.$element.data('clickedOn', _this.$element.data('clickedOn') ? false : true);
              _this.timer[_this.$element.data('clickedOn') ? 'pause' : 'start']();
            });

            if (this.options.pauseOnHover) {
              this.$element.on('mouseenter.zf.orbit', function () {
                _this.timer.pause();
              }).on('mouseleave.zf.orbit', function () {
                if (!_this.$element.data('clickedOn')) {
                  _this.timer.start();
                }
              });
            }
          }

          if (this.options.navButtons) {
            var $controls = this.$element.find('.' + this.options.nextClass + ', .' + this.options.prevClass);
            $controls.attr('tabindex', 0)
            //also need to handle enter/return and spacebar key presses
            .on('click.zf.orbit touchend.zf.orbit', function (e) {
              e.preventDefault();
              _this.changeSlide($(this).hasClass(_this.options.nextClass));
            });
          }

          if (this.options.bullets) {
            this.$bullets.on('click.zf.orbit touchend.zf.orbit', function () {
              if (/is-active/g.test(this.className)) {
                return false;
              } //if this is active, kick out of function.
              var idx = $(this).data('slide'),
                  ltr = idx > _this.$slides.filter('.is-active').data('slide'),
                  $slide = _this.$slides.eq(idx);

              _this.changeSlide(ltr, $slide, idx);
            });
          }

          if (this.options.accessible) {
            this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function (e) {
              // handle keyboard event with keyboard util
              Foundation.Keyboard.handleKey(e, 'Orbit', {
                next: function next() {
                  _this.changeSlide(true);
                },
                previous: function previous() {
                  _this.changeSlide(false);
                },
                handled: function handled() {
                  // if bullet is focused, make sure focus moves
                  if ($(e.target).is(_this.$bullets)) {
                    _this.$bullets.filter('.is-active').focus();
                  }
                }
              });
            });
          }
        }
      }

      /**
       * Resets Orbit so it can be reinitialized
       */

    }, {
      key: '_reset',
      value: function _reset() {
        // Don't do anything if there are no slides (first run)
        if (typeof this.$slides == 'undefined') {
          return;
        }

        if (this.$slides.length > 1) {
          // Remove old events
          this.$element.off('.zf.orbit').find('*').off('.zf.orbit');

          // Restart timer if autoPlay is enabled
          if (this.options.autoPlay) {
            this.timer.restart();
          }

          // Reset all sliddes
          this.$slides.each(function (el) {
            $(el).removeClass('is-active is-active is-in').removeAttr('aria-live').hide();
          });

          // Show the first slide
          this.$slides.first().addClass('is-active').show();

          // Triggers when the slide has finished animating
          this.$element.trigger('slidechange.zf.orbit', [this.$slides.first()]);

          // Select first bullet if bullets are present
          if (this.options.bullets) {
            this._updateBullets(0);
          }
        }
      }

      /**
      * Changes the current slide to a new one.
      * @function
      * @param {Boolean} isLTR - flag if the slide should move left to right.
      * @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected.
      * @param {Number} idx - the index of the new slide in its collection, if one chosen.
      * @fires Orbit#slidechange
      */

    }, {
      key: 'changeSlide',
      value: function changeSlide(isLTR, chosenSlide, idx) {
        if (!this.$slides) {
          return;
        } // Don't freak out if we're in the middle of cleanup
        var $curSlide = this.$slides.filter('.is-active').eq(0);

        if (/mui/g.test($curSlide[0].className)) {
          return false;
        } //if the slide is currently animating, kick out of the function

        var $firstSlide = this.$slides.first(),
            $lastSlide = this.$slides.last(),
            dirIn = isLTR ? 'Right' : 'Left',
            dirOut = isLTR ? 'Left' : 'Right',
            _this = this,
            $newSlide;

        if (!chosenSlide) {
          //most of the time, this will be auto played or clicked from the navButtons.
          $newSlide = isLTR ? //if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!!
          this.options.infiniteWrap ? $curSlide.next('.' + this.options.slideClass).length ? $curSlide.next('.' + this.options.slideClass) : $firstSlide : $curSlide.next('.' + this.options.slideClass) : //pick next slide if moving left to right
          this.options.infiniteWrap ? $curSlide.prev('.' + this.options.slideClass).length ? $curSlide.prev('.' + this.options.slideClass) : $lastSlide : $curSlide.prev('.' + this.options.slideClass); //pick prev slide if moving right to left
        } else {
          $newSlide = chosenSlide;
        }

        if ($newSlide.length) {
          /**
          * Triggers before the next slide starts animating in and only if a next slide has been found.
          * @event Orbit#beforeslidechange
          */
          this.$element.trigger('beforeslidechange.zf.orbit', [$curSlide, $newSlide]);

          if (this.options.bullets) {
            idx = idx || this.$slides.index($newSlide); //grab index to update bullets
            this._updateBullets(idx);
          }

          if (this.options.useMUI && !this.$element.is(':hidden')) {
            Foundation.Motion.animateIn($newSlide.addClass('is-active').css({ 'position': 'absolute', 'top': 0 }), this.options['animInFrom' + dirIn], function () {
              $newSlide.css({ 'position': 'relative', 'display': 'block' }).attr('aria-live', 'polite');
            });

            Foundation.Motion.animateOut($curSlide.removeClass('is-active'), this.options['animOutTo' + dirOut], function () {
              $curSlide.removeAttr('aria-live');
              if (_this.options.autoPlay && !_this.timer.isPaused) {
                _this.timer.restart();
              }
              //do stuff?
            });
          } else {
            $curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide();
            $newSlide.addClass('is-active is-in').attr('aria-live', 'polite').show();
            if (this.options.autoPlay && !this.timer.isPaused) {
              this.timer.restart();
            }
          }
          /**
          * Triggers when the slide has finished animating in.
          * @event Orbit#slidechange
          */
          this.$element.trigger('slidechange.zf.orbit', [$newSlide]);
        }
      }

      /**
      * Updates the active state of the bullets, if displayed.
      * @function
      * @private
      * @param {Number} idx - the index of the current slide.
      */

    }, {
      key: '_updateBullets',
      value: function _updateBullets(idx) {
        var $oldBullet = this.$element.find('.' + this.options.boxOfBullets).find('.is-active').removeClass('is-active').blur(),
            span = $oldBullet.find('span:last').detach(),
            $newBullet = this.$bullets.eq(idx).addClass('is-active').append(span);
      }

      /**
      * Destroys the carousel and hides the element.
      * @function
      */

    }, {
      key: 'destroy',
      value: function destroy() {
        this.$element.off('.zf.orbit').find('*').off('.zf.orbit').end().hide();
        Foundation.unregisterPlugin(this);
      }
    }]);

    return Orbit;
  }();

  Orbit.defaults = {
    /**
    * Tells the JS to look for and loadBullets.
    * @option
    * @example true
    */
    bullets: true,
    /**
    * Tells the JS to apply event listeners to nav buttons
    * @option
    * @example true
    */
    navButtons: true,
    /**
    * motion-ui animation class to apply
    * @option
    * @example 'slide-in-right'
    */
    animInFromRight: 'slide-in-right',
    /**
    * motion-ui animation class to apply
    * @option
    * @example 'slide-out-right'
    */
    animOutToRight: 'slide-out-right',
    /**
    * motion-ui animation class to apply
    * @option
    * @example 'slide-in-left'
    *
    */
    animInFromLeft: 'slide-in-left',
    /**
    * motion-ui animation class to apply
    * @option
    * @example 'slide-out-left'
    */
    animOutToLeft: 'slide-out-left',
    /**
    * Allows Orbit to automatically animate on page load.
    * @option
    * @example true
    */
    autoPlay: true,
    /**
    * Amount of time, in ms, between slide transitions
    * @option
    * @example 5000
    */
    timerDelay: 5000,
    /**
    * Allows Orbit to infinitely loop through the slides
    * @option
    * @example true
    */
    infiniteWrap: true,
    /**
    * Allows the Orbit slides to bind to swipe events for mobile, requires an additional util library
    * @option
    * @example true
    */
    swipe: true,
    /**
    * Allows the timing function to pause animation on hover.
    * @option
    * @example true
    */
    pauseOnHover: true,
    /**
    * Allows Orbit to bind keyboard events to the slider, to animate frames with arrow keys
    * @option
    * @example true
    */
    accessible: true,
    /**
    * Class applied to the container of Orbit
    * @option
    * @example 'orbit-container'
    */
    containerClass: 'orbit-container',
    /**
    * Class applied to individual slides.
    * @option
    * @example 'orbit-slide'
    */
    slideClass: 'orbit-slide',
    /**
    * Class applied to the bullet container. You're welcome.
    * @option
    * @example 'orbit-bullets'
    */
    boxOfBullets: 'orbit-bullets',
    /**
    * Class applied to the `next` navigation button.
    * @option
    * @example 'orbit-next'
    */
    nextClass: 'orbit-next',
    /**
    * Class applied to the `previous` navigation button.
    * @option
    * @example 'orbit-previous'
    */
    prevClass: 'orbit-previous',
    /**
    * Boolean to flag the js to use motion ui classes or not. Default to true for backwards compatability.
    * @option
    * @example true
    */
    useMUI: true
  };

  // Window exports
  Foundation.plugin(Orbit, 'Orbit');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * ResponsiveMenu module.
   * @module foundation.responsiveMenu
   * @requires foundation.util.triggers
   * @requires foundation.util.mediaQuery
   * @requires foundation.util.accordionMenu
   * @requires foundation.util.drilldown
   * @requires foundation.util.dropdown-menu
   */

  var ResponsiveMenu = function () {
    /**
     * Creates a new instance of a responsive menu.
     * @class
     * @fires ResponsiveMenu#init
     * @param {jQuery} element - jQuery object to make into a dropdown menu.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function ResponsiveMenu(element, options) {
      _classCallCheck(this, ResponsiveMenu);

      this.$element = $(element);
      this.rules = this.$element.data('responsive-menu');
      this.currentMq = null;
      this.currentPlugin = null;

      this._init();
      this._events();

      Foundation.registerPlugin(this, 'ResponsiveMenu');
    }

    /**
     * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element.
     * @function
     * @private
     */


    _createClass(ResponsiveMenu, [{
      key: '_init',
      value: function _init() {
        // The first time an Interchange plugin is initialized, this.rules is converted from a string of "classes" to an object of rules
        if (typeof this.rules === 'string') {
          var rulesTree = {};

          // Parse rules from "classes" pulled from data attribute
          var rules = this.rules.split(' ');

          // Iterate through every rule found
          for (var i = 0; i < rules.length; i++) {
            var rule = rules[i].split('-');
            var ruleSize = rule.length > 1 ? rule[0] : 'small';
            var rulePlugin = rule.length > 1 ? rule[1] : rule[0];

            if (MenuPlugins[rulePlugin] !== null) {
              rulesTree[ruleSize] = MenuPlugins[rulePlugin];
            }
          }

          this.rules = rulesTree;
        }

        if (!$.isEmptyObject(this.rules)) {
          this._checkMediaQueries();
        }
        // Add data-mutate since children may need it.
        this.$element.attr('data-mutate', this.$element.attr('data-mutate') || Foundation.GetYoDigits(6, 'responsive-menu'));
      }

      /**
       * Initializes events for the Menu.
       * @function
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        var _this = this;

        $(window).on('changed.zf.mediaquery', function () {
          _this._checkMediaQueries();
        });
        // $(window).on('resize.zf.ResponsiveMenu', function() {
        //   _this._checkMediaQueries();
        // });
      }

      /**
       * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.
       * @function
       * @private
       */

    }, {
      key: '_checkMediaQueries',
      value: function _checkMediaQueries() {
        var matchedMq,
            _this = this;
        // Iterate through each rule and find the last matching rule
        $.each(this.rules, function (key) {
          if (Foundation.MediaQuery.atLeast(key)) {
            matchedMq = key;
          }
        });

        // No match? No dice
        if (!matchedMq) return;

        // Plugin already initialized? We good
        if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;

        // Remove existing plugin-specific CSS classes
        $.each(MenuPlugins, function (key, value) {
          _this.$element.removeClass(value.cssClass);
        });

        // Add the CSS class for the new plugin
        this.$element.addClass(this.rules[matchedMq].cssClass);

        // Create an instance of the new plugin
        if (this.currentPlugin) this.currentPlugin.destroy();
        this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});
      }

      /**
       * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.
       * @function
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        this.currentPlugin.destroy();
        $(window).off('.zf.ResponsiveMenu');
        Foundation.unregisterPlugin(this);
      }
    }]);

    return ResponsiveMenu;
  }();

  ResponsiveMenu.defaults = {};

  // The plugin matches the plugin classes with these plugin instances.
  var MenuPlugins = {
    dropdown: {
      cssClass: 'dropdown',
      plugin: Foundation._plugins['dropdown-menu'] || null
    },
    drilldown: {
      cssClass: 'drilldown',
      plugin: Foundation._plugins['drilldown'] || null
    },
    accordion: {
      cssClass: 'accordion-menu',
      plugin: Foundation._plugins['accordion-menu'] || null
    }
  };

  // Window exports
  Foundation.plugin(ResponsiveMenu, 'ResponsiveMenu');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * ResponsiveToggle module.
   * @module foundation.responsiveToggle
   * @requires foundation.util.mediaQuery
   */

  var ResponsiveToggle = function () {
    /**
     * Creates a new instance of Tab Bar.
     * @class
     * @fires ResponsiveToggle#init
     * @param {jQuery} element - jQuery object to attach tab bar functionality to.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function ResponsiveToggle(element, options) {
      _classCallCheck(this, ResponsiveToggle);

      this.$element = $(element);
      this.options = $.extend({}, ResponsiveToggle.defaults, this.$element.data(), options);

      this._init();
      this._events();

      Foundation.registerPlugin(this, 'ResponsiveToggle');
    }

    /**
     * Initializes the tab bar by finding the target element, toggling element, and running update().
     * @function
     * @private
     */


    _createClass(ResponsiveToggle, [{
      key: '_init',
      value: function _init() {
        var targetID = this.$element.data('responsive-toggle');
        if (!targetID) {
          console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.');
        }

        this.$targetMenu = $('#' + targetID);
        this.$toggler = this.$element.find('[data-toggle]');
        this.options = $.extend({}, this.options, this.$targetMenu.data());

        // If they were set, parse the animation classes
        if (this.options.animate) {
          var input = this.options.animate.split(' ');

          this.animationIn = input[0];
          this.animationOut = input[1] || null;
        }

        this._update();
      }

      /**
       * Adds necessary event handlers for the tab bar to work.
       * @function
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        var _this = this;

        this._updateMqHandler = this._update.bind(this);

        $(window).on('changed.zf.mediaquery', this._updateMqHandler);

        this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this));
      }

      /**
       * Checks the current media query to determine if the tab bar should be visible or hidden.
       * @function
       * @private
       */

    }, {
      key: '_update',
      value: function _update() {
        // Mobile
        if (!Foundation.MediaQuery.atLeast(this.options.hideFor)) {
          this.$element.show();
          this.$targetMenu.hide();
        }

        // Desktop
        else {
            this.$element.hide();
            this.$targetMenu.show();
          }
      }

      /**
       * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it.
       * @function
       * @fires ResponsiveToggle#toggled
       */

    }, {
      key: 'toggleMenu',
      value: function toggleMenu() {
        var _this2 = this;

        if (!Foundation.MediaQuery.atLeast(this.options.hideFor)) {
          if (this.options.animate) {
            if (this.$targetMenu.is(':hidden')) {
              Foundation.Motion.animateIn(this.$targetMenu, this.animationIn, function () {
                /**
                 * Fires when the element attached to the tab bar toggles.
                 * @event ResponsiveToggle#toggled
                 */
                _this2.$element.trigger('toggled.zf.responsiveToggle');
                _this2.$targetMenu.find('[data-mutate]').triggerHandler('mutateme.zf.trigger');
              });
            } else {
              Foundation.Motion.animateOut(this.$targetMenu, this.animationOut, function () {
                /**
                 * Fires when the element attached to the tab bar toggles.
                 * @event ResponsiveToggle#toggled
                 */
                _this2.$element.trigger('toggled.zf.responsiveToggle');
              });
            }
          } else {
            this.$targetMenu.toggle(0);
            this.$targetMenu.find('[data-mutate]').trigger('mutateme.zf.trigger');

            /**
             * Fires when the element attached to the tab bar toggles.
             * @event ResponsiveToggle#toggled
             */
            this.$element.trigger('toggled.zf.responsiveToggle');
          }
        }
      }
    }, {
      key: 'destroy',
      value: function destroy() {
        this.$element.off('.zf.responsiveToggle');
        this.$toggler.off('.zf.responsiveToggle');

        $(window).off('changed.zf.mediaquery', this._updateMqHandler);

        Foundation.unregisterPlugin(this);
      }
    }]);

    return ResponsiveToggle;
  }();

  ResponsiveToggle.defaults = {
    /**
     * The breakpoint after which the menu is always shown, and the tab bar is hidden.
     * @option
     * @example 'medium'
     */
    hideFor: 'medium',

    /**
     * To decide if the toggle should be animated or not.
     * @option
     * @example false
     */
    animate: false
  };

  // Window exports
  Foundation.plugin(ResponsiveToggle, 'ResponsiveToggle');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * Reveal module.
   * @module foundation.reveal
   * @requires foundation.util.keyboard
   * @requires foundation.util.box
   * @requires foundation.util.triggers
   * @requires foundation.util.mediaQuery
   * @requires foundation.util.motion if using animations
   */

  var Reveal = function () {
    /**
     * Creates a new instance of Reveal.
     * @class
     * @param {jQuery} element - jQuery object to use for the modal.
     * @param {Object} options - optional parameters.
     */
    function Reveal(element, options) {
      _classCallCheck(this, Reveal);

      this.$element = element;
      this.options = $.extend({}, Reveal.defaults, this.$element.data(), options);
      this._init();

      Foundation.registerPlugin(this, 'Reveal');
      Foundation.Keyboard.register('Reveal', {
        'ENTER': 'open',
        'SPACE': 'open',
        'ESCAPE': 'close'
      });
    }

    /**
     * Initializes the modal by adding the overlay and close buttons, (if selected).
     * @private
     */


    _createClass(Reveal, [{
      key: '_init',
      value: function _init() {
        this.id = this.$element.attr('id');
        this.isActive = false;
        this.cached = { mq: Foundation.MediaQuery.current };
        this.isMobile = mobileSniff();

        this.$anchor = $('[data-open="' + this.id + '"]').length ? $('[data-open="' + this.id + '"]') : $('[data-toggle="' + this.id + '"]');
        this.$anchor.attr({
          'aria-controls': this.id,
          'aria-haspopup': true,
          'tabindex': 0
        });

        if (this.options.fullScreen || this.$element.hasClass('full')) {
          this.options.fullScreen = true;
          this.options.overlay = false;
        }
        if (this.options.overlay && !this.$overlay) {
          this.$overlay = this._makeOverlay(this.id);
        }

        this.$element.attr({
          'role': 'dialog',
          'aria-hidden': true,
          'data-yeti-box': this.id,
          'data-resize': this.id
        });

        if (this.$overlay) {
          this.$element.detach().appendTo(this.$overlay);
        } else {
          this.$element.detach().appendTo($(this.options.appendTo));
          this.$element.addClass('without-overlay');
        }
        this._events();
        if (this.options.deepLink && window.location.hash === '#' + this.id) {
          $(window).one('load.zf.reveal', this.open.bind(this));
        }
      }

      /**
       * Creates an overlay div to display behind the modal.
       * @private
       */

    }, {
      key: '_makeOverlay',
      value: function _makeOverlay() {
        return $('<div></div>').addClass('reveal-overlay').appendTo(this.options.appendTo);
      }

      /**
       * Updates position of modal
       * TODO:  Figure out if we actually need to cache these values or if it doesn't matter
       * @private
       */

    }, {
      key: '_updatePosition',
      value: function _updatePosition() {
        var width = this.$element.outerWidth();
        var outerWidth = $(window).width();
        var height = this.$element.outerHeight();
        var outerHeight = $(window).height();
        var left, top;
        if (this.options.hOffset === 'auto') {
          left = parseInt((outerWidth - width) / 2, 10);
        } else {
          left = parseInt(this.options.hOffset, 10);
        }
        if (this.options.vOffset === 'auto') {
          if (height > outerHeight) {
            top = parseInt(Math.min(100, outerHeight / 10), 10);
          } else {
            top = parseInt((outerHeight - height) / 4, 10);
          }
        } else {
          top = parseInt(this.options.vOffset, 10);
        }
        this.$element.css({ top: top + 'px' });
        // only worry about left if we don't have an overlay or we havea  horizontal offset,
        // otherwise we're perfectly in the middle
        if (!this.$overlay || this.options.hOffset !== 'auto') {
          this.$element.css({ left: left + 'px' });
          this.$element.css({ margin: '0px' });
        }
      }

      /**
       * Adds event handlers for the modal.
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        var _this2 = this;

        var _this = this;

        this.$element.on({
          'open.zf.trigger': this.open.bind(this),
          'close.zf.trigger': function closeZfTrigger(event, $element) {
            if (event.target === _this.$element[0] || $(event.target).parents('[data-closable]')[0] === $element) {
              // only close reveal when it's explicitly called
              return _this2.close.apply(_this2);
            }
          },
          'toggle.zf.trigger': this.toggle.bind(this),
          'resizeme.zf.trigger': function resizemeZfTrigger() {
            _this._updatePosition();
          }
        });

        if (this.$anchor.length) {
          this.$anchor.on('keydown.zf.reveal', function (e) {
            if (e.which === 13 || e.which === 32) {
              e.stopPropagation();
              e.preventDefault();
              _this.open();
            }
          });
        }

        if (this.options.closeOnClick && this.options.overlay) {
          this.$overlay.off('.zf.reveal').on('click.zf.reveal', function (e) {
            if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target) || !$.contains(document, e.target)) {
              return;
            }
            _this.close();
          });
        }
        if (this.options.deepLink) {
          $(window).on('popstate.zf.reveal:' + this.id, this._handleState.bind(this));
        }
      }

      /**
       * Handles modal methods on back/forward button clicks or any other event that triggers popstate.
       * @private
       */

    }, {
      key: '_handleState',
      value: function _handleState(e) {
        if (window.location.hash === '#' + this.id && !this.isActive) {
          this.open();
        } else {
          this.close();
        }
      }

      /**
       * Opens the modal controlled by `this.$anchor`, and closes all others by default.
       * @function
       * @fires Reveal#closeme
       * @fires Reveal#open
       */

    }, {
      key: 'open',
      value: function open() {
        var _this3 = this;

        if (this.options.deepLink) {
          var hash = '#' + this.id;

          if (window.history.pushState) {
            window.history.pushState(null, null, hash);
          } else {
            window.location.hash = hash;
          }
        }

        this.isActive = true;

        // Make elements invisible, but remove display: none so we can get size and positioning
        this.$element.css({ 'visibility': 'hidden' }).show().scrollTop(0);
        if (this.options.overlay) {
          this.$overlay.css({ 'visibility': 'hidden' }).show();
        }

        this._updatePosition();

        this.$element.hide().css({ 'visibility': '' });

        if (this.$overlay) {
          this.$overlay.css({ 'visibility': '' }).hide();
          if (this.$element.hasClass('fast')) {
            this.$overlay.addClass('fast');
          } else if (this.$element.hasClass('slow')) {
            this.$overlay.addClass('slow');
          }
        }

        if (!this.options.multipleOpened) {
          /**
           * Fires immediately before the modal opens.
           * Closes any other modals that are currently open
           * @event Reveal#closeme
           */
          this.$element.trigger('closeme.zf.reveal', this.id);
        }

        var _this = this;

        function addRevealOpenClasses() {
          if (_this.isMobile) {
            if (!_this.originalScrollPos) {
              _this.originalScrollPos = window.pageYOffset;
            }
            $('html, body').addClass('is-reveal-open');
          } else {
            $('body').addClass('is-reveal-open');
          }
        }
        // Motion UI method of reveal
        if (this.options.animationIn) {
          (function () {
            var afterAnimation = function afterAnimation() {
              _this.$element.attr({
                'aria-hidden': false,
                'tabindex': -1
              }).focus();
              addRevealOpenClasses();
              Foundation.Keyboard.trapFocus(_this.$element);
            };

            if (_this3.options.overlay) {
              Foundation.Motion.animateIn(_this3.$overlay, 'fade-in');
            }
            Foundation.Motion.animateIn(_this3.$element, _this3.options.animationIn, function () {
              if (_this3.$element) {
                // protect against object having been removed
                _this3.focusableElements = Foundation.Keyboard.findFocusable(_this3.$element);
                afterAnimation();
              }
            });
          })();
        }
        // jQuery method of reveal
        else {
            if (this.options.overlay) {
              this.$overlay.show(0);
            }
            this.$element.show(this.options.showDelay);
          }

        // handle accessibility
        this.$element.attr({
          'aria-hidden': false,
          'tabindex': -1
        }).focus();
        Foundation.Keyboard.trapFocus(this.$element);

        /**
         * Fires when the modal has successfully opened.
         * @event Reveal#open
         */
        this.$element.trigger('open.zf.reveal');

        addRevealOpenClasses();

        setTimeout(function () {
          _this3._extraHandlers();
        }, 0);
      }

      /**
       * Adds extra event handlers for the body and window if necessary.
       * @private
       */

    }, {
      key: '_extraHandlers',
      value: function _extraHandlers() {
        var _this = this;
        if (!this.$element) {
          return;
        } // If we're in the middle of cleanup, don't freak out
        this.focusableElements = Foundation.Keyboard.findFocusable(this.$element);

        if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) {
          $('body').on('click.zf.reveal', function (e) {
            if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target) || !$.contains(document, e.target)) {
              return;
            }
            _this.close();
          });
        }

        if (this.options.closeOnEsc) {
          $(window).on('keydown.zf.reveal', function (e) {
            Foundation.Keyboard.handleKey(e, 'Reveal', {
              close: function close() {
                if (_this.options.closeOnEsc) {
                  _this.close();
                  _this.$anchor.focus();
                }
              }
            });
          });
        }

        // lock focus within modal while tabbing
        this.$element.on('keydown.zf.reveal', function (e) {
          var $target = $(this);
          // handle keyboard event with keyboard util
          Foundation.Keyboard.handleKey(e, 'Reveal', {
            open: function open() {
              if (_this.$element.find(':focus').is(_this.$element.find('[data-close]'))) {
                setTimeout(function () {
                  // set focus back to anchor if close button has been activated
                  _this.$anchor.focus();
                }, 1);
              } else if ($target.is(_this.focusableElements)) {
                // dont't trigger if acual element has focus (i.e. inputs, links, ...)
                _this.open();
              }
            },
            close: function close() {
              if (_this.options.closeOnEsc) {
                _this.close();
                _this.$anchor.focus();
              }
            },
            handled: function handled(preventDefault) {
              if (preventDefault) {
                e.preventDefault();
              }
            }
          });
        });
      }

      /**
       * Closes the modal.
       * @function
       * @fires Reveal#closed
       */

    }, {
      key: 'close',
      value: function close() {
        if (!this.isActive || !this.$element.is(':visible')) {
          return false;
        }
        var _this = this;

        // Motion UI method of hiding
        if (this.options.animationOut) {
          if (this.options.overlay) {
            Foundation.Motion.animateOut(this.$overlay, 'fade-out', finishUp);
          } else {
            finishUp();
          }

          Foundation.Motion.animateOut(this.$element, this.options.animationOut);
        }
        // jQuery method of hiding
        else {
            if (this.options.overlay) {
              this.$overlay.hide(0, finishUp);
            } else {
              finishUp();
            }

            this.$element.hide(this.options.hideDelay);
          }

        // Conditionals to remove extra event listeners added on open
        if (this.options.closeOnEsc) {
          $(window).off('keydown.zf.reveal');
        }

        if (!this.options.overlay && this.options.closeOnClick) {
          $('body').off('click.zf.reveal');
        }

        this.$element.off('keydown.zf.reveal');

        function finishUp() {
          if (_this.isMobile) {
            $('html, body').removeClass('is-reveal-open');
            if (_this.originalScrollPos) {
              $('body').scrollTop(_this.originalScrollPos);
              _this.originalScrollPos = null;
            }
          } else {
            $('body').removeClass('is-reveal-open');
          }

          Foundation.Keyboard.releaseFocus(_this.$element);

          _this.$element.attr('aria-hidden', true);

          /**
          * Fires when the modal is done closing.
          * @event Reveal#closed
          */
          _this.$element.trigger('closed.zf.reveal');
        }

        /**
        * Resets the modal content
        * This prevents a running video to keep going in the background
        */
        if (this.options.resetOnClose) {
          this.$element.html(this.$element.html());
        }

        this.isActive = false;
        if (_this.options.deepLink) {
          if (window.history.replaceState) {
            window.history.replaceState('', document.title, window.location.href.replace('#' + this.id, ''));
          } else {
            window.location.hash = '';
          }
        }
      }

      /**
       * Toggles the open/closed state of a modal.
       * @function
       */

    }, {
      key: 'toggle',
      value: function toggle() {
        if (this.isActive) {
          this.close();
        } else {
          this.open();
        }
      }
    }, {
      key: 'destroy',


      /**
       * Destroys an instance of a modal.
       * @function
       */
      value: function destroy() {
        if (this.options.overlay) {
          this.$element.appendTo($(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin()
          this.$overlay.hide().off().remove();
        }
        this.$element.hide().off();
        this.$anchor.off('.zf');
        $(window).off('.zf.reveal:' + this.id);

        Foundation.unregisterPlugin(this);
      }
    }]);

    return Reveal;
  }();

  Reveal.defaults = {
    /**
     * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.
     * @option
     * @example 'slide-in-left'
     */
    animationIn: '',
    /**
     * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.
     * @option
     * @example 'slide-out-right'
     */
    animationOut: '',
    /**
     * Time, in ms, to delay the opening of a modal after a click if no animation used.
     * @option
     * @example 10
     */
    showDelay: 0,
    /**
     * Time, in ms, to delay the closing of a modal after a click if no animation used.
     * @option
     * @example 10
     */
    hideDelay: 0,
    /**
     * Allows a click on the body/overlay to close the modal.
     * @option
     * @example true
     */
    closeOnClick: true,
    /**
     * Allows the modal to close if the user presses the `ESCAPE` key.
     * @option
     * @example true
     */
    closeOnEsc: true,
    /**
     * If true, allows multiple modals to be displayed at once.
     * @option
     * @example false
     */
    multipleOpened: false,
    /**
     * Distance, in pixels, the modal should push down from the top of the screen.
     * @option
     * @example auto
     */
    vOffset: 'auto',
    /**
     * Distance, in pixels, the modal should push in from the side of the screen.
     * @option
     * @example auto
     */
    hOffset: 'auto',
    /**
     * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.
     * @option
     * @example false
     */
    fullScreen: false,
    /**
     * Percentage of screen height the modal should push up from the bottom of the view.
     * @option
     * @example 10
     */
    btmOffsetPct: 10,
    /**
     * Allows the modal to generate an overlay div, which will cover the view when modal opens.
     * @option
     * @example true
     */
    overlay: true,
    /**
     * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.
     * @option
     * @example false
     */
    resetOnClose: false,
    /**
     * Allows the modal to alter the url on open/close, and allows the use of the `back` button to close modals. ALSO, allows a modal to auto-maniacally open on page load IF the hash === the modal's user-set id.
     * @option
     * @example false
     */
    deepLink: false,
    /**
    * Allows the modal to append to custom div.
    * @option
    * @example false
    */
    appendTo: "body"

  };

  // Window exports
  Foundation.plugin(Reveal, 'Reveal');

  function iPhoneSniff() {
    return (/iP(ad|hone|od).*OS/.test(window.navigator.userAgent)
    );
  }

  function androidSniff() {
    return (/Android/.test(window.navigator.userAgent)
    );
  }

  function mobileSniff() {
    return iPhoneSniff() || androidSniff();
  }
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * Slider module.
   * @module foundation.slider
   * @requires foundation.util.motion
   * @requires foundation.util.triggers
   * @requires foundation.util.keyboard
   * @requires foundation.util.touch
   */

  var Slider = function () {
    /**
     * Creates a new instance of a slider control.
     * @class
     * @param {jQuery} element - jQuery object to make into a slider control.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function Slider(element, options) {
      _classCallCheck(this, Slider);

      this.$element = element;
      this.options = $.extend({}, Slider.defaults, this.$element.data(), options);

      this._init();

      Foundation.registerPlugin(this, 'Slider');
      Foundation.Keyboard.register('Slider', {
        'ltr': {
          'ARROW_RIGHT': 'increase',
          'ARROW_UP': 'increase',
          'ARROW_DOWN': 'decrease',
          'ARROW_LEFT': 'decrease',
          'SHIFT_ARROW_RIGHT': 'increase_fast',
          'SHIFT_ARROW_UP': 'increase_fast',
          'SHIFT_ARROW_DOWN': 'decrease_fast',
          'SHIFT_ARROW_LEFT': 'decrease_fast'
        },
        'rtl': {
          'ARROW_LEFT': 'increase',
          'ARROW_RIGHT': 'decrease',
          'SHIFT_ARROW_LEFT': 'increase_fast',
          'SHIFT_ARROW_RIGHT': 'decrease_fast'
        }
      });
    }

    /**
     * Initilizes the plugin by reading/setting attributes, creating collections and setting the initial position of the handle(s).
     * @function
     * @private
     */


    _createClass(Slider, [{
      key: '_init',
      value: function _init() {
        this.inputs = this.$element.find('input');
        this.handles = this.$element.find('[data-slider-handle]');

        this.$handle = this.handles.eq(0);
        this.$input = this.inputs.length ? this.inputs.eq(0) : $('#' + this.$handle.attr('aria-controls'));
        this.$fill = this.$element.find('[data-slider-fill]').css(this.options.vertical ? 'height' : 'width', 0);

        var isDbl = false,
            _this = this;
        if (this.options.disabled || this.$element.hasClass(this.options.disabledClass)) {
          this.options.disabled = true;
          this.$element.addClass(this.options.disabledClass);
        }
        if (!this.inputs.length) {
          this.inputs = $().add(this.$input);
          this.options.binding = true;
        }

        this._setInitAttr(0);

        if (this.handles[1]) {
          this.options.doubleSided = true;
          this.$handle2 = this.handles.eq(1);
          this.$input2 = this.inputs.length > 1 ? this.inputs.eq(1) : $('#' + this.$handle2.attr('aria-controls'));

          if (!this.inputs[1]) {
            this.inputs = this.inputs.add(this.$input2);
          }
          isDbl = true;

          // this.$handle.triggerHandler('click.zf.slider');
          this._setInitAttr(1);
        }

        // Set handle positions
        this.setHandles();

        this._events();
      }
    }, {
      key: 'setHandles',
      value: function setHandles() {
        var _this2 = this;

        if (this.handles[1]) {
          this._setHandlePos(this.$handle, this.inputs.eq(0).val(), true, function () {
            _this2._setHandlePos(_this2.$handle2, _this2.inputs.eq(1).val(), true);
          });
        } else {
          this._setHandlePos(this.$handle, this.inputs.eq(0).val(), true);
        }
      }
    }, {
      key: '_reflow',
      value: function _reflow() {
        this.setHandles();
      }
      /**
      * @function
      * @private
      * @param {Number} value - floating point (the value) to be transformed using to a relative position on the slider (the inverse of _value)
      */

    }, {
      key: '_pctOfBar',
      value: function _pctOfBar(value) {
        var pctOfBar = percent(value - this.options.start, this.options.end - this.options.start);

        switch (this.options.positionValueFunction) {
          case "pow":
            pctOfBar = this._logTransform(pctOfBar);
            break;
          case "log":
            pctOfBar = this._powTransform(pctOfBar);
            break;
        }

        return pctOfBar.toFixed(2);
      }

      /**
      * @function
      * @private
      * @param {Number} pctOfBar - floating point, the relative position of the slider (typically between 0-1) to be transformed to a value
      */

    }, {
      key: '_value',
      value: function _value(pctOfBar) {
        switch (this.options.positionValueFunction) {
          case "pow":
            pctOfBar = this._powTransform(pctOfBar);
            break;
          case "log":
            pctOfBar = this._logTransform(pctOfBar);
            break;
        }
        var value = (this.options.end - this.options.start) * pctOfBar + this.options.start;

        return value;
      }

      /**
      * @function
      * @private
      * @param {Number} value - floating point (typically between 0-1) to be transformed using the log function
      */

    }, {
      key: '_logTransform',
      value: function _logTransform(value) {
        return baseLog(this.options.nonLinearBase, value * (this.options.nonLinearBase - 1) + 1);
      }

      /**
      * @function
      * @private
      * @param {Number} value - floating point (typically between 0-1) to be transformed using the power function
      */

    }, {
      key: '_powTransform',
      value: function _powTransform(value) {
        return (Math.pow(this.options.nonLinearBase, value) - 1) / (this.options.nonLinearBase - 1);
      }

      /**
       * Sets the position of the selected handle and fill bar.
       * @function
       * @private
       * @param {jQuery} $hndl - the selected handle to move.
       * @param {Number} location - floating point between the start and end values of the slider bar.
       * @param {Function} cb - callback function to fire on completion.
       * @fires Slider#moved
       * @fires Slider#changed
       */

    }, {
      key: '_setHandlePos',
      value: function _setHandlePos($hndl, location, noInvert, cb) {
        // don't move if the slider has been disabled since its initialization
        if (this.$element.hasClass(this.options.disabledClass)) {
          return;
        }
        //might need to alter that slightly for bars that will have odd number selections.
        location = parseFloat(location); //on input change events, convert string to number...grumble.

        // prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max
        if (location < this.options.start) {
          location = this.options.start;
        } else if (location > this.options.end) {
          location = this.options.end;
        }

        var isDbl = this.options.doubleSided;

        if (isDbl) {
          //this block is to prevent 2 handles from crossing eachother. Could/should be improved.
          if (this.handles.index($hndl) === 0) {
            var h2Val = parseFloat(this.$handle2.attr('aria-valuenow'));
            location = location >= h2Val ? h2Val - this.options.step : location;
          } else {
            var h1Val = parseFloat(this.$handle.attr('aria-valuenow'));
            location = location <= h1Val ? h1Val + this.options.step : location;
          }
        }

        //this is for single-handled vertical sliders, it adjusts the value to account for the slider being "upside-down"
        //for click and drag events, it's weird due to the scale(-1, 1) css property
        if (this.options.vertical && !noInvert) {
          location = this.options.end - location;
        }

        var _this = this,
            vert = this.options.vertical,
            hOrW = vert ? 'height' : 'width',
            lOrT = vert ? 'top' : 'left',
            handleDim = $hndl[0].getBoundingClientRect()[hOrW],
            elemDim = this.$element[0].getBoundingClientRect()[hOrW],

        //percentage of bar min/max value based on click or drag point
        pctOfBar = this._pctOfBar(location),

        //number of actual pixels to shift the handle, based on the percentage obtained above
        pxToMove = (elemDim - handleDim) * pctOfBar,

        //percentage of bar to shift the handle
        movement = (percent(pxToMove, elemDim) * 100).toFixed(this.options.decimal);
        //fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value
        location = parseFloat(location.toFixed(this.options.decimal));
        // declare empty object for css adjustments, only used with 2 handled-sliders
        var css = {};

        this._setValues($hndl, location);

        // TODO update to calculate based on values set to respective inputs??
        if (isDbl) {
          var isLeftHndl = this.handles.index($hndl) === 0,

          //empty variable, will be used for min-height/width for fill bar
          dim,

          //percentage w/h of the handle compared to the slider bar
          handlePct = ~~(percent(handleDim, elemDim) * 100);
          //if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar
          if (isLeftHndl) {
            //left or top percentage value to apply to the fill bar.
            css[lOrT] = movement + '%';
            //calculate the new min-height/width for the fill bar.
            dim = parseFloat(this.$handle2[0].style[lOrT]) - movement + handlePct;
            //this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider
            //plus, it means we don't care if 'dim' isNaN on init, it won't be in the future.
            if (cb && typeof cb === 'function') {
              cb();
            } //this is only needed for the initialization of 2 handled sliders
          } else {
            //just caching the value of the left/bottom handle's left/top property
            var handlePos = parseFloat(this.$handle[0].style[lOrT]);
            //calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0
            //based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself
            dim = movement - (isNaN(handlePos) ? (this.options.initialStart - this.options.start) / ((this.options.end - this.options.start) / 100) : handlePos) + handlePct;
          }
          // assign the min-height/width to our css object
          css['min-' + hOrW] = dim + '%';
        }

        this.$element.one('finished.zf.animate', function () {
          /**
           * Fires when the handle is done moving.
           * @event Slider#moved
           */
          _this.$element.trigger('moved.zf.slider', [$hndl]);
        });

        //because we don't know exactly how the handle will be moved, check the amount of time it should take to move.
        var moveTime = this.$element.data('dragging') ? 1000 / 60 : this.options.moveTime;

        Foundation.Move(moveTime, $hndl, function () {
          // adjusting the left/top property of the handle, based on the percentage calculated above
          // if movement isNaN, that is because the slider is hidden and we cannot determine handle width,
          // fall back to next best guess.
          if (isNaN(movement)) {
            $hndl.css(lOrT, pctOfBar * 100 + '%');
          } else {
            $hndl.css(lOrT, movement + '%');
          }

          if (!_this.options.doubleSided) {
            //if single-handled, a simple method to expand the fill bar
            _this.$fill.css(hOrW, pctOfBar * 100 + '%');
          } else {
            //otherwise, use the css object we created above
            _this.$fill.css(css);
          }
        });

        /**
         * Fires when the value has not been change for a given time.
         * @event Slider#changed
         */
        clearTimeout(_this.timeout);
        _this.timeout = setTimeout(function () {
          _this.$element.trigger('changed.zf.slider', [$hndl]);
        }, _this.options.changedDelay);
      }

      /**
       * Sets the initial attribute for the slider element.
       * @function
       * @private
       * @param {Number} idx - index of the current handle/input to use.
       */

    }, {
      key: '_setInitAttr',
      value: function _setInitAttr(idx) {
        var initVal = idx === 0 ? this.options.initialStart : this.options.initialEnd;
        var id = this.inputs.eq(idx).attr('id') || Foundation.GetYoDigits(6, 'slider');
        this.inputs.eq(idx).attr({
          'id': id,
          'max': this.options.end,
          'min': this.options.start,
          'step': this.options.step
        });
        this.inputs.eq(idx).val(initVal);
        this.handles.eq(idx).attr({
          'role': 'slider',
          'aria-controls': id,
          'aria-valuemax': this.options.end,
          'aria-valuemin': this.options.start,
          'aria-valuenow': initVal,
          'aria-orientation': this.options.vertical ? 'vertical' : 'horizontal',
          'tabindex': 0
        });
      }

      /**
       * Sets the input and `aria-valuenow` values for the slider element.
       * @function
       * @private
       * @param {jQuery} $handle - the currently selected handle.
       * @param {Number} val - floating point of the new value.
       */

    }, {
      key: '_setValues',
      value: function _setValues($handle, val) {
        var idx = this.options.doubleSided ? this.handles.index($handle) : 0;
        this.inputs.eq(idx).val(val);
        $handle.attr('aria-valuenow', val);
      }

      /**
       * Handles events on the slider element.
       * Calculates the new location of the current handle.
       * If there are two handles and the bar was clicked, it determines which handle to move.
       * @function
       * @private
       * @param {Object} e - the `event` object passed from the listener.
       * @param {jQuery} $handle - the current handle to calculate for, if selected.
       * @param {Number} val - floating point number for the new value of the slider.
       * TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn.
       */

    }, {
      key: '_handleEvent',
      value: function _handleEvent(e, $handle, val) {
        var value, hasVal;
        if (!val) {
          //click or drag events
          e.preventDefault();
          var _this = this,
              vertical = this.options.vertical,
              param = vertical ? 'height' : 'width',
              direction = vertical ? 'top' : 'left',
              eventOffset = vertical ? e.pageY : e.pageX,
              halfOfHandle = this.$handle[0].getBoundingClientRect()[param] / 2,
              barDim = this.$element[0].getBoundingClientRect()[param],
              windowScroll = vertical ? $(window).scrollTop() : $(window).scrollLeft();

          var elemOffset = this.$element.offset()[direction];

          // touch events emulated by the touch util give position relative to screen, add window.scroll to event coordinates...
          // best way to guess this is simulated is if clientY == pageY
          if (e.clientY === e.pageY) {
            eventOffset = eventOffset + windowScroll;
          }
          var eventFromBar = eventOffset - elemOffset;
          var barXY;
          if (eventFromBar < 0) {
            barXY = 0;
          } else if (eventFromBar > barDim) {
            barXY = barDim;
          } else {
            barXY = eventFromBar;
          }
          var offsetPct = percent(barXY, barDim);

          value = this._value(offsetPct);

          // turn everything around for RTL, yay math!
          if (Foundation.rtl() && !this.options.vertical) {
            value = this.options.end - value;
          }

          value = _this._adjustValue(null, value);
          //boolean flag for the setHandlePos fn, specifically for vertical sliders
          hasVal = false;

          if (!$handle) {
            //figure out which handle it is, pass it to the next function.
            var firstHndlPos = absPosition(this.$handle, direction, barXY, param),
                secndHndlPos = absPosition(this.$handle2, direction, barXY, param);
            $handle = firstHndlPos <= secndHndlPos ? this.$handle : this.$handle2;
          }
        } else {
          //change event on input
          value = this._adjustValue(null, val);
          hasVal = true;
        }

        this._setHandlePos($handle, value, hasVal);
      }

      /**
       * Adjustes value for handle in regard to step value. returns adjusted value
       * @function
       * @private
       * @param {jQuery} $handle - the selected handle.
       * @param {Number} value - value to adjust. used if $handle is falsy
       */

    }, {
      key: '_adjustValue',
      value: function _adjustValue($handle, value) {
        var val,
            step = this.options.step,
            div = parseFloat(step / 2),
            left,
            prev_val,
            next_val;
        if (!!$handle) {
          val = parseFloat($handle.attr('aria-valuenow'));
        } else {
          val = value;
        }
        left = val % step;
        prev_val = val - left;
        next_val = prev_val + step;
        if (left === 0) {
          return val;
        }
        val = val >= prev_val + div ? next_val : prev_val;
        return val;
      }

      /**
       * Adds event listeners to the slider elements.
       * @function
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        this._eventsForHandle(this.$handle);
        if (this.handles[1]) {
          this._eventsForHandle(this.$handle2);
        }
      }

      /**
       * Adds event listeners a particular handle
       * @function
       * @private
       * @param {jQuery} $handle - the current handle to apply listeners to.
       */

    }, {
      key: '_eventsForHandle',
      value: function _eventsForHandle($handle) {
        var _this = this,
            curHandle,
            timer;

        this.inputs.off('change.zf.slider').on('change.zf.slider', function (e) {
          var idx = _this.inputs.index($(this));
          _this._handleEvent(e, _this.handles.eq(idx), $(this).val());
        });

        if (this.options.clickSelect) {
          this.$element.off('click.zf.slider').on('click.zf.slider', function (e) {
            if (_this.$element.data('dragging')) {
              return false;
            }

            if (!$(e.target).is('[data-slider-handle]')) {
              if (_this.options.doubleSided) {
                _this._handleEvent(e);
              } else {
                _this._handleEvent(e, _this.$handle);
              }
            }
          });
        }

        if (this.options.draggable) {
          this.handles.addTouch();

          var $body = $('body');
          $handle.off('mousedown.zf.slider').on('mousedown.zf.slider', function (e) {
            $handle.addClass('is-dragging');
            _this.$fill.addClass('is-dragging'); //
            _this.$element.data('dragging', true);

            curHandle = $(e.currentTarget);

            $body.on('mousemove.zf.slider', function (e) {
              e.preventDefault();
              _this._handleEvent(e, curHandle);
            }).on('mouseup.zf.slider', function (e) {
              _this._handleEvent(e, curHandle);

              $handle.removeClass('is-dragging');
              _this.$fill.removeClass('is-dragging');
              _this.$element.data('dragging', false);

              $body.off('mousemove.zf.slider mouseup.zf.slider');
            });
          })
          // prevent events triggered by touch
          .on('selectstart.zf.slider touchmove.zf.slider', function (e) {
            e.preventDefault();
          });
        }

        $handle.off('keydown.zf.slider').on('keydown.zf.slider', function (e) {
          var _$handle = $(this),
              idx = _this.options.doubleSided ? _this.handles.index(_$handle) : 0,
              oldValue = parseFloat(_this.inputs.eq(idx).val()),
              newValue;

          // handle keyboard event with keyboard util
          Foundation.Keyboard.handleKey(e, 'Slider', {
            decrease: function decrease() {
              newValue = oldValue - _this.options.step;
            },
            increase: function increase() {
              newValue = oldValue + _this.options.step;
            },
            decrease_fast: function decrease_fast() {
              newValue = oldValue - _this.options.step * 10;
            },
            increase_fast: function increase_fast() {
              newValue = oldValue + _this.options.step * 10;
            },
            handled: function handled() {
              // only set handle pos when event was handled specially
              e.preventDefault();
              _this._setHandlePos(_$handle, newValue, true);
            }
          });
          /*if (newValue) { // if pressed key has special function, update value
            e.preventDefault();
            _this._setHandlePos(_$handle, newValue);
          }*/
        });
      }

      /**
       * Destroys the slider plugin.
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        this.handles.off('.zf.slider');
        this.inputs.off('.zf.slider');
        this.$element.off('.zf.slider');

        clearTimeout(this.timeout);

        Foundation.unregisterPlugin(this);
      }
    }]);

    return Slider;
  }();

  Slider.defaults = {
    /**
     * Minimum value for the slider scale.
     * @option
     * @example 0
     */
    start: 0,
    /**
     * Maximum value for the slider scale.
     * @option
     * @example 100
     */
    end: 100,
    /**
     * Minimum value change per change event.
     * @option
     * @example 1
     */
    step: 1,
    /**
     * Value at which the handle/input *(left handle/first input)* should be set to on initialization.
     * @option
     * @example 0
     */
    initialStart: 0,
    /**
     * Value at which the right handle/second input should be set to on initialization.
     * @option
     * @example 100
     */
    initialEnd: 100,
    /**
     * Allows the input to be located outside the container and visible. Set to by the JS
     * @option
     * @example false
     */
    binding: false,
    /**
     * Allows the user to click/tap on the slider bar to select a value.
     * @option
     * @example true
     */
    clickSelect: true,
    /**
     * Set to true and use the `vertical` class to change alignment to vertical.
     * @option
     * @example false
     */
    vertical: false,
    /**
     * Allows the user to drag the slider handle(s) to select a value.
     * @option
     * @example true
     */
    draggable: true,
    /**
     * Disables the slider and prevents event listeners from being applied. Double checked by JS with `disabledClass`.
     * @option
     * @example false
     */
    disabled: false,
    /**
     * Allows the use of two handles. Double checked by the JS. Changes some logic handling.
     * @option
     * @example false
     */
    doubleSided: false,
    /**
     * Potential future feature.
     */
    // steps: 100,
    /**
     * Number of decimal places the plugin should go to for floating point precision.
     * @option
     * @example 2
     */
    decimal: 2,
    /**
     * Time delay for dragged elements.
     */
    // dragDelay: 0,
    /**
     * Time, in ms, to animate the movement of a slider handle if user clicks/taps on the bar. Needs to be manually set if updating the transition time in the Sass settings.
     * @option
     * @example 200
     */
    moveTime: 200, //update this if changing the transition time in the sass
    /**
     * Class applied to disabled sliders.
     * @option
     * @example 'disabled'
     */
    disabledClass: 'disabled',
    /**
     * Will invert the default layout for a vertical<span data-tooltip title="who would do this???"> </span>slider.
     * @option
     * @example false
     */
    invertVertical: false,
    /**
     * Milliseconds before the `changed.zf-slider` event is triggered after value change.
     * @option
     * @example 500
     */
    changedDelay: 500,
    /**
    * Basevalue for non-linear sliders
    * @option
    * @example 5
    */
    nonLinearBase: 5,
    /**
    * Basevalue for non-linear sliders, possible values are: 'linear', 'pow' & 'log'. Pow and Log use the nonLinearBase setting.
    * @option
    * @example 'linear'
    */
    positionValueFunction: 'linear'
  };

  function percent(frac, num) {
    return frac / num;
  }
  function absPosition($handle, dir, clickPos, param) {
    return Math.abs($handle.position()[dir] + $handle[param]() / 2 - clickPos);
  }
  function baseLog(base, value) {
    return Math.log(value) / Math.log(base);
  }

  // Window exports
  Foundation.plugin(Slider, 'Slider');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * Sticky module.
   * @module foundation.sticky
   * @requires foundation.util.triggers
   * @requires foundation.util.mediaQuery
   */

  var Sticky = function () {
    /**
     * Creates a new instance of a sticky thing.
     * @class
     * @param {jQuery} element - jQuery object to make sticky.
     * @param {Object} options - options object passed when creating the element programmatically.
     */
    function Sticky(element, options) {
      _classCallCheck(this, Sticky);

      this.$element = element;
      this.options = $.extend({}, Sticky.defaults, this.$element.data(), options);

      this._init();

      Foundation.registerPlugin(this, 'Sticky');
    }

    /**
     * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes
     * @function
     * @private
     */


    _createClass(Sticky, [{
      key: '_init',
      value: function _init() {
        var $parent = this.$element.parent('[data-sticky-container]'),
            id = this.$element[0].id || Foundation.GetYoDigits(6, 'sticky'),
            _this = this;

        if (!$parent.length) {
          this.wasWrapped = true;
        }
        this.$container = $parent.length ? $parent : $(this.options.container).wrapInner(this.$element);
        this.$container.addClass(this.options.containerClass);

        this.$element.addClass(this.options.stickyClass).attr({ 'data-resize': id });

        this.scrollCount = this.options.checkEvery;
        this.isStuck = false;
        $(window).one('load.zf.sticky', function () {
          //We calculate the container height to have correct values for anchor points offset calculation.
          _this.containerHeight = _this.$element.css("display") == "none" ? 0 : _this.$element[0].getBoundingClientRect().height;
          _this.$container.css('height', _this.containerHeight);
          _this.elemHeight = _this.containerHeight;
          if (_this.options.anchor !== '') {
            _this.$anchor = $('#' + _this.options.anchor);
          } else {
            _this._parsePoints();
          }

          _this._setSizes(function () {
            var scroll = window.pageYOffset;
            _this._calc(false, scroll);
            //Unstick the element will ensure that proper classes are set.
            if (!_this.isStuck) {
              _this._removeSticky(scroll >= _this.topPoint ? false : true);
            }
          });
          _this._events(id.split('-').reverse().join('-'));
        });
      }

      /**
       * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.
       * @function
       * @private
       */

    }, {
      key: '_parsePoints',
      value: function _parsePoints() {
        var top = this.options.topAnchor == "" ? 1 : this.options.topAnchor,
            btm = this.options.btmAnchor == "" ? document.documentElement.scrollHeight : this.options.btmAnchor,
            pts = [top, btm],
            breaks = {};
        for (var i = 0, len = pts.length; i < len && pts[i]; i++) {
          var pt;
          if (typeof pts[i] === 'number') {
            pt = pts[i];
          } else {
            var place = pts[i].split(':'),
                anchor = $('#' + place[0]);

            pt = anchor.offset().top;
            if (place[1] && place[1].toLowerCase() === 'bottom') {
              pt += anchor[0].getBoundingClientRect().height;
            }
          }
          breaks[i] = pt;
        }

        this.points = breaks;
        return;
      }

      /**
       * Adds event handlers for the scrolling element.
       * @private
       * @param {String} id - psuedo-random id for unique scroll event listener.
       */

    }, {
      key: '_events',
      value: function _events(id) {
        var _this = this,
            scrollListener = this.scrollListener = 'scroll.zf.' + id;
        if (this.isOn) {
          return;
        }
        if (this.canStick) {
          this.isOn = true;
          $(window).off(scrollListener).on(scrollListener, function (e) {
            if (_this.scrollCount === 0) {
              _this.scrollCount = _this.options.checkEvery;
              _this._setSizes(function () {
                _this._calc(false, window.pageYOffset);
              });
            } else {
              _this.scrollCount--;
              _this._calc(false, window.pageYOffset);
            }
          });
        }

        this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', function (e, el) {
          _this._setSizes(function () {
            _this._calc(false);
            if (_this.canStick) {
              if (!_this.isOn) {
                _this._events(id);
              }
            } else if (_this.isOn) {
              _this._pauseListeners(scrollListener);
            }
          });
        });
      }

      /**
       * Removes event handlers for scroll and change events on anchor.
       * @fires Sticky#pause
       * @param {String} scrollListener - unique, namespaced scroll listener attached to `window`
       */

    }, {
      key: '_pauseListeners',
      value: function _pauseListeners(scrollListener) {
        this.isOn = false;
        $(window).off(scrollListener);

        /**
         * Fires when the plugin is paused due to resize event shrinking the view.
         * @event Sticky#pause
         * @private
         */
        this.$element.trigger('pause.zf.sticky');
      }

      /**
       * Called on every `scroll` event and on `_init`
       * fires functions based on booleans and cached values
       * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints.
       * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`.
       */

    }, {
      key: '_calc',
      value: function _calc(checkSizes, scroll) {
        if (checkSizes) {
          this._setSizes();
        }

        if (!this.canStick) {
          if (this.isStuck) {
            this._removeSticky(true);
          }
          return false;
        }

        if (!scroll) {
          scroll = window.pageYOffset;
        }

        if (scroll >= this.topPoint) {
          if (scroll <= this.bottomPoint) {
            if (!this.isStuck) {
              this._setSticky();
            }
          } else {
            if (this.isStuck) {
              this._removeSticky(false);
            }
          }
        } else {
          if (this.isStuck) {
            this._removeSticky(true);
          }
        }
      }

      /**
       * Causes the $element to become stuck.
       * Adds `position: fixed;`, and helper classes.
       * @fires Sticky#stuckto
       * @function
       * @private
       */

    }, {
      key: '_setSticky',
      value: function _setSticky() {
        var _this = this,
            stickTo = this.options.stickTo,
            mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',
            notStuckTo = stickTo === 'top' ? 'bottom' : 'top',
            css = {};

        css[mrgn] = this.options[mrgn] + 'em';
        css[stickTo] = 0;
        css[notStuckTo] = 'auto';
        this.isStuck = true;
        this.$element.removeClass('is-anchored is-at-' + notStuckTo).addClass('is-stuck is-at-' + stickTo).css(css)
        /**
         * Fires when the $element has become `position: fixed;`
         * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top`
         * @event Sticky#stuckto
         */
        .trigger('sticky.zf.stuckto:' + stickTo);
        this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd", function () {
          _this._setSizes();
        });
      }

      /**
       * Causes the $element to become unstuck.
       * Removes `position: fixed;`, and helper classes.
       * Adds other helper classes.
       * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.
       * @fires Sticky#unstuckfrom
       * @private
       */

    }, {
      key: '_removeSticky',
      value: function _removeSticky(isTop) {
        var stickTo = this.options.stickTo,
            stickToTop = stickTo === 'top',
            css = {},
            anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight,
            mrgn = stickToTop ? 'marginTop' : 'marginBottom',
            notStuckTo = stickToTop ? 'bottom' : 'top',
            topOrBottom = isTop ? 'top' : 'bottom';

        css[mrgn] = 0;

        css['bottom'] = 'auto';
        if (isTop) {
          css['top'] = 0;
        } else {
          css['top'] = anchorPt;
        }

        this.isStuck = false;
        this.$element.removeClass('is-stuck is-at-' + stickTo).addClass('is-anchored is-at-' + topOrBottom).css(css)
        /**
         * Fires when the $element has become anchored.
         * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom`
         * @event Sticky#unstuckfrom
         */
        .trigger('sticky.zf.unstuckfrom:' + topOrBottom);
      }

      /**
       * Sets the $element and $container sizes for plugin.
       * Calls `_setBreakPoints`.
       * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.
       * @private
       */

    }, {
      key: '_setSizes',
      value: function _setSizes(cb) {
        this.canStick = Foundation.MediaQuery.is(this.options.stickyOn);
        if (!this.canStick) {
          if (cb && typeof cb === 'function') {
            cb();
          }
        }
        var _this = this,
            newElemWidth = this.$container[0].getBoundingClientRect().width,
            comp = window.getComputedStyle(this.$container[0]),
            pdngl = parseInt(comp['padding-left'], 10),
            pdngr = parseInt(comp['padding-right'], 10);

        if (this.$anchor && this.$anchor.length) {
          this.anchorHeight = this.$anchor[0].getBoundingClientRect().height;
        } else {
          this._parsePoints();
        }

        this.$element.css({
          'max-width': newElemWidth - pdngl - pdngr + 'px'
        });

        var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;
        if (this.$element.css("display") == "none") {
          newContainerHeight = 0;
        }
        this.containerHeight = newContainerHeight;
        this.$container.css({
          height: newContainerHeight
        });
        this.elemHeight = newContainerHeight;

        if (!this.isStuck) {
          if (this.$element.hasClass('is-at-bottom')) {
            var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight;
            this.$element.css('top', anchorPt);
          }
        }

        this._setBreakPoints(newContainerHeight, function () {
          if (cb && typeof cb === 'function') {
            cb();
          }
        });
      }

      /**
       * Sets the upper and lower breakpoints for the element to become sticky/unsticky.
       * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.
       * @param {Function} cb - optional callback function to be called on completion.
       * @private
       */

    }, {
      key: '_setBreakPoints',
      value: function _setBreakPoints(elemHeight, cb) {
        if (!this.canStick) {
          if (cb && typeof cb === 'function') {
            cb();
          } else {
            return false;
          }
        }
        var mTop = emCalc(this.options.marginTop),
            mBtm = emCalc(this.options.marginBottom),
            topPoint = this.points ? this.points[0] : this.$anchor.offset().top,
            bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight,

        // topPoint = this.$anchor.offset().top || this.points[0],
        // bottomPoint = topPoint + this.anchorHeight || this.points[1],
        winHeight = window.innerHeight;

        if (this.options.stickTo === 'top') {
          topPoint -= mTop;
          bottomPoint -= elemHeight + mTop;
        } else if (this.options.stickTo === 'bottom') {
          topPoint -= winHeight - (elemHeight + mBtm);
          bottomPoint -= winHeight - mBtm;
        } else {
          //this would be the stickTo: both option... tricky
        }

        this.topPoint = topPoint;
        this.bottomPoint = bottomPoint;

        if (cb && typeof cb === 'function') {
          cb();
        }
      }

      /**
       * Destroys the current sticky element.
       * Resets the element to the top position first.
       * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.
       * @function
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        this._removeSticky(true);

        this.$element.removeClass(this.options.stickyClass + ' is-anchored is-at-top').css({
          height: '',
          top: '',
          bottom: '',
          'max-width': ''
        }).off('resizeme.zf.trigger');
        if (this.$anchor && this.$anchor.length) {
          this.$anchor.off('change.zf.sticky');
        }
        $(window).off(this.scrollListener);

        if (this.wasWrapped) {
          this.$element.unwrap();
        } else {
          this.$container.removeClass(this.options.containerClass).css({
            height: ''
          });
        }
        Foundation.unregisterPlugin(this);
      }
    }]);

    return Sticky;
  }();

  Sticky.defaults = {
    /**
     * Customizable container template. Add your own classes for styling and sizing.
     * @option
     * @example '&lt;div data-sticky-container class="small-6 columns"&gt;&lt;/div&gt;'
     */
    container: '<div data-sticky-container></div>',
    /**
     * Location in the view the element sticks to.
     * @option
     * @example 'top'
     */
    stickTo: 'top',
    /**
     * If anchored to a single element, the id of that element.
     * @option
     * @example 'exampleId'
     */
    anchor: '',
    /**
     * If using more than one element as anchor points, the id of the top anchor.
     * @option
     * @example 'exampleId:top'
     */
    topAnchor: '',
    /**
     * If using more than one element as anchor points, the id of the bottom anchor.
     * @option
     * @example 'exampleId:bottom'
     */
    btmAnchor: '',
    /**
     * Margin, in `em`'s to apply to the top of the element when it becomes sticky.
     * @option
     * @example 1
     */
    marginTop: 1,
    /**
     * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.
     * @option
     * @example 1
     */
    marginBottom: 1,
    /**
     * Breakpoint string that is the minimum screen size an element should become sticky.
     * @option
     * @example 'medium'
     */
    stickyOn: 'medium',
    /**
     * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.
     * @option
     * @example 'sticky'
     */
    stickyClass: 'sticky',
    /**
     * Class applied to sticky container. Foundation defaults to `sticky-container`.
     * @option
     * @example 'sticky-container'
     */
    containerClass: 'sticky-container',
    /**
     * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.
     * @option
     * @example 50
     */
    checkEvery: -1
  };

  /**
   * Helper function to calculate em values
   * @param Number {em} - number of em's to calculate into pixels
   */
  function emCalc(em) {
    return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em;
  }

  // Window exports
  Foundation.plugin(Sticky, 'Sticky');
}(jQuery);
'use strict';

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 _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"); } }

!function ($) {

  /**
   * Tabs module.
   * @module foundation.tabs
   * @requires foundation.util.keyboard
   * @requires foundation.util.timerAndImageLoader if tabs contain images
   */

  var Tabs = function () {
    /**
     * Creates a new instance of tabs.
     * @class
     * @fires Tabs#init
     * @param {jQuery} element - jQuery object to make into tabs.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function Tabs(element, options) {
      _classCallCheck(this, Tabs);

      this.$element = element;
      this.options = $.extend({}, Tabs.defaults, this.$element.data(), options);

      this._init();
      Foundation.registerPlugin(this, 'Tabs');
      Foundation.Keyboard.register('Tabs', {
        'ENTER': 'open',
        'SPACE': 'open',
        'ARROW_RIGHT': 'next',
        'ARROW_UP': 'previous',
        'ARROW_DOWN': 'next',
        'ARROW_LEFT': 'previous'
        // 'TAB': 'next',
        // 'SHIFT_TAB': 'previous'
      });
    }

    /**
     * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab.
     * @private
     */


    _createClass(Tabs, [{
      key: '_init',
      value: function _init() {
        var _this = this;

        this.$element.attr({ 'role': 'tablist' });
        this.$tabTitles = this.$element.find('.' + this.options.linkClass);
        this.$tabContent = $('[data-tabs-content="' + this.$element[0].id + '"]');

        this.$tabTitles.each(function () {
          var $elem = $(this),
              $link = $elem.find('a'),
              isActive = $elem.hasClass('' + _this.options.linkActiveClass),
              hash = $link[0].hash.slice(1),
              linkId = $link[0].id ? $link[0].id : hash + '-label',
              $tabContent = $('#' + hash);

          $elem.attr({ 'role': 'presentation' });

          $link.attr({
            'role': 'tab',
            'aria-controls': hash,
            'aria-selected': isActive,
            'id': linkId
          });

          $tabContent.attr({
            'role': 'tabpanel',
            'aria-hidden': !isActive,
            'aria-labelledby': linkId
          });

          if (isActive && _this.options.autoFocus) {
            $(window).load(function () {
              $('html, body').animate({ scrollTop: $elem.offset().top }, _this.options.deepLinkSmudgeDelay, function () {
                $link.focus();
              });
            });
          }

          //use browser to open a tab, if it exists in this tabset
          if (_this.options.deepLink) {
            var anchor = window.location.hash;
            //need a hash and a relevant anchor in this tabset
            if (anchor.length) {
              var $link = $elem.find('[href="' + anchor + '"]');
              if ($link.length) {
                _this.selectTab($(anchor));

                //roll up a little to show the titles
                if (_this.options.deepLinkSmudge) {
                  $(window).load(function () {
                    var offset = $elem.offset();
                    $('html, body').animate({ scrollTop: offset.top }, _this.options.deepLinkSmudgeDelay);
                  });
                }

                /**
                  * Fires when the zplugin has deeplinked at pageload
                  * @event Tabs#deeplink
                  */
                $elem.trigger('deeplink.zf.tabs', [$link, $(anchor)]);
              }
            }
          }
        });

        if (this.options.matchHeight) {
          var $images = this.$tabContent.find('img');

          if ($images.length) {
            Foundation.onImagesLoaded($images, this._setHeight.bind(this));
          } else {
            this._setHeight();
          }
        }

        this._events();
      }

      /**
       * Adds event handlers for items within the tabs.
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        this._addKeyHandler();
        this._addClickHandler();
        this._setHeightMqHandler = null;

        if (this.options.matchHeight) {
          this._setHeightMqHandler = this._setHeight.bind(this);

          $(window).on('changed.zf.mediaquery', this._setHeightMqHandler);
        }
      }

      /**
       * Adds click handlers for items within the tabs.
       * @private
       */

    }, {
      key: '_addClickHandler',
      value: function _addClickHandler() {
        var _this = this;

        this.$element.off('click.zf.tabs').on('click.zf.tabs', '.' + this.options.linkClass, function (e) {
          e.preventDefault();
          e.stopPropagation();
          _this._handleTabChange($(this));
        });
      }

      /**
       * Adds keyboard event handlers for items within the tabs.
       * @private
       */

    }, {
      key: '_addKeyHandler',
      value: function _addKeyHandler() {
        var _this = this;

        this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function (e) {
          if (e.which === 9) return;

          var $element = $(this),
              $elements = $element.parent('ul').children('li'),
              $prevElement,
              $nextElement;

          $elements.each(function (i) {
            if ($(this).is($element)) {
              if (_this.options.wrapOnKeys) {
                $prevElement = i === 0 ? $elements.last() : $elements.eq(i - 1);
                $nextElement = i === $elements.length - 1 ? $elements.first() : $elements.eq(i + 1);
              } else {
                $prevElement = $elements.eq(Math.max(0, i - 1));
                $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1));
              }
              return;
            }
          });

          // handle keyboard event with keyboard util
          Foundation.Keyboard.handleKey(e, 'Tabs', {
            open: function open() {
              $element.find('[role="tab"]').focus();
              _this._handleTabChange($element);
            },
            previous: function previous() {
              $prevElement.find('[role="tab"]').focus();
              _this._handleTabChange($prevElement);
            },
            next: function next() {
              $nextElement.find('[role="tab"]').focus();
              _this._handleTabChange($nextElement);
            },
            handled: function handled() {
              e.stopPropagation();
              e.preventDefault();
            }
          });
        });
      }

      /**
       * Opens the tab `$targetContent` defined by `$target`. Collapses active tab.
       * @param {jQuery} $target - Tab to open.
       * @fires Tabs#change
       * @function
       */

    }, {
      key: '_handleTabChange',
      value: function _handleTabChange($target) {

        /**
         * Check for active class on target. Collapse if exists.
         */
        if ($target.hasClass('' + this.options.linkActiveClass)) {
          if (this.options.activeCollapse) {
            this._collapseTab($target);

            /**
             * Fires when the zplugin has successfully collapsed tabs.
             * @event Tabs#collapse
             */
            this.$element.trigger('collapse.zf.tabs', [$target]);
          }
          return;
        }

        var $oldTab = this.$element.find('.' + this.options.linkClass + '.' + this.options.linkActiveClass),
            $tabLink = $target.find('[role="tab"]'),
            hash = $tabLink[0].hash,
            $targetContent = this.$tabContent.find(hash);

        //close old tab
        this._collapseTab($oldTab);

        //open new tab
        this._openTab($target);

        //either replace or update browser history
        if (this.options.deepLink) {
          var anchor = $target.find('a').attr('href');

          if (this.options.updateHistory) {
            history.pushState({}, '', anchor);
          } else {
            history.replaceState({}, '', anchor);
          }
        }

        /**
         * Fires when the plugin has successfully changed tabs.
         * @event Tabs#change
         */
        this.$element.trigger('change.zf.tabs', [$target, $targetContent]);

        //fire to children a mutation event
        $targetContent.find("[data-mutate]").trigger("mutateme.zf.trigger");
      }

      /**
       * Opens the tab `$targetContent` defined by `$target`.
       * @param {jQuery} $target - Tab to Open.
       * @function
       */

    }, {
      key: '_openTab',
      value: function _openTab($target) {
        var $tabLink = $target.find('[role="tab"]'),
            hash = $tabLink[0].hash,
            $targetContent = this.$tabContent.find(hash);

        $target.addClass('' + this.options.linkActiveClass);

        $tabLink.attr({ 'aria-selected': 'true' });

        $targetContent.addClass('' + this.options.panelActiveClass).attr({ 'aria-hidden': 'false' });
      }

      /**
       * Collapses `$targetContent` defined by `$target`.
       * @param {jQuery} $target - Tab to Open.
       * @function
       */

    }, {
      key: '_collapseTab',
      value: function _collapseTab($target) {
        var $target_anchor = $target.removeClass('' + this.options.linkActiveClass).find('[role="tab"]').attr({ 'aria-selected': 'false' });

        $('#' + $target_anchor.attr('aria-controls')).removeClass('' + this.options.panelActiveClass).attr({ 'aria-hidden': 'true' });
      }

      /**
       * Public method for selecting a content pane to display.
       * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display.
       * @function
       */

    }, {
      key: 'selectTab',
      value: function selectTab(elem) {
        var idStr;

        if ((typeof elem === 'undefined' ? 'undefined' : _typeof(elem)) === 'object') {
          idStr = elem[0].id;
        } else {
          idStr = elem;
        }

        if (idStr.indexOf('#') < 0) {
          idStr = '#' + idStr;
        }

        var $target = this.$tabTitles.find('[href="' + idStr + '"]').parent('.' + this.options.linkClass);

        this._handleTabChange($target);
      }
    }, {
      key: '_setHeight',

      /**
       * Sets the height of each panel to the height of the tallest panel.
       * If enabled in options, gets called on media query change.
       * If loading content via external source, can be called directly or with _reflow.
       * @function
       * @private
       */
      value: function _setHeight() {
        var max = 0;
        this.$tabContent.find('.' + this.options.panelClass).css('height', '').each(function () {
          var panel = $(this),
              isActive = panel.hasClass('' + this.options.panelActiveClass);

          if (!isActive) {
            panel.css({ 'visibility': 'hidden', 'display': 'block' });
          }

          var temp = this.getBoundingClientRect().height;

          if (!isActive) {
            panel.css({
              'visibility': '',
              'display': ''
            });
          }

          max = temp > max ? temp : max;
        }).css('height', max + 'px');
      }

      /**
       * Destroys an instance of an tabs.
       * @fires Tabs#destroyed
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        this.$element.find('.' + this.options.linkClass).off('.zf.tabs').hide().end().find('.' + this.options.panelClass).hide();

        if (this.options.matchHeight) {
          if (this._setHeightMqHandler != null) {
            $(window).off('changed.zf.mediaquery', this._setHeightMqHandler);
          }
        }

        Foundation.unregisterPlugin(this);
      }
    }]);

    return Tabs;
  }();

  Tabs.defaults = {
    /**
     * Allows the window to scroll to content of pane specified by hash anchor
     * @option
     * @example false
     */
    deepLink: false,

    /**
     * Adjust the deep link scroll to make sure the top of the tab panel is visible
     * @option
     * @example false
     */
    deepLinkSmudge: false,

    /**
     * Animation time (ms) for the deep link adjustment
     * @option
     * @example 300
     */
    deepLinkSmudgeDelay: 300,

    /**
     * Update the browser history with the open tab
     * @option
     * @example false
     */
    updateHistory: false,

    /**
     * Allows the window to scroll to content of active pane on load if set to true.
     * Not recommended if more than one tab panel per page.
     * @option
     * @example false
     */
    autoFocus: false,

    /**
     * Allows keyboard input to 'wrap' around the tab links.
     * @option
     * @example true
     */
    wrapOnKeys: true,

    /**
     * Allows the tab content panes to match heights if set to true.
     * @option
     * @example false
     */
    matchHeight: false,

    /**
     * Allows active tabs to collapse when clicked.
     * @option
     * @example false
     */
    activeCollapse: false,

    /**
     * Class applied to `li`'s in tab link list.
     * @option
     * @example 'tabs-title'
     */
    linkClass: 'tabs-title',

    /**
     * Class applied to the active `li` in tab link list.
     * @option
     * @example 'is-active'
     */
    linkActiveClass: 'is-active',

    /**
     * Class applied to the content containers.
     * @option
     * @example 'tabs-panel'
     */
    panelClass: 'tabs-panel',

    /**
     * Class applied to the active content container.
     * @option
     * @example 'is-active'
     */
    panelActiveClass: 'is-active'
  };

  // Window exports
  Foundation.plugin(Tabs, 'Tabs');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * Toggler module.
   * @module foundation.toggler
   * @requires foundation.util.motion
   * @requires foundation.util.triggers
   */

  var Toggler = function () {
    /**
     * Creates a new instance of Toggler.
     * @class
     * @fires Toggler#init
     * @param {Object} element - jQuery object to add the trigger to.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function Toggler(element, options) {
      _classCallCheck(this, Toggler);

      this.$element = element;
      this.options = $.extend({}, Toggler.defaults, element.data(), options);
      this.className = '';

      this._init();
      this._events();

      Foundation.registerPlugin(this, 'Toggler');
    }

    /**
     * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate.
     * @function
     * @private
     */


    _createClass(Toggler, [{
      key: '_init',
      value: function _init() {
        var input;
        // Parse animation classes if they were set
        if (this.options.animate) {
          input = this.options.animate.split(' ');

          this.animationIn = input[0];
          this.animationOut = input[1] || null;
        }
        // Otherwise, parse toggle class
        else {
            input = this.$element.data('toggler');
            // Allow for a . at the beginning of the string
            this.className = input[0] === '.' ? input.slice(1) : input;
          }

        // Add ARIA attributes to triggers
        var id = this.$element[0].id;
        $('[data-open="' + id + '"], [data-close="' + id + '"], [data-toggle="' + id + '"]').attr('aria-controls', id);
        // If the target is hidden, add aria-hidden
        this.$element.attr('aria-expanded', this.$element.is(':hidden') ? false : true);
      }

      /**
       * Initializes events for the toggle trigger.
       * @function
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this));
      }

      /**
       * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was "on" or "off".
       * @function
       * @fires Toggler#on
       * @fires Toggler#off
       */

    }, {
      key: 'toggle',
      value: function toggle() {
        this[this.options.animate ? '_toggleAnimate' : '_toggleClass']();
      }
    }, {
      key: '_toggleClass',
      value: function _toggleClass() {
        this.$element.toggleClass(this.className);

        var isOn = this.$element.hasClass(this.className);
        if (isOn) {
          /**
           * Fires if the target element has the class after a toggle.
           * @event Toggler#on
           */
          this.$element.trigger('on.zf.toggler');
        } else {
          /**
           * Fires if the target element does not have the class after a toggle.
           * @event Toggler#off
           */
          this.$element.trigger('off.zf.toggler');
        }

        this._updateARIA(isOn);
        this.$element.find('[data-mutate]').trigger('mutateme.zf.trigger');
      }
    }, {
      key: '_toggleAnimate',
      value: function _toggleAnimate() {
        var _this = this;

        if (this.$element.is(':hidden')) {
          Foundation.Motion.animateIn(this.$element, this.animationIn, function () {
            _this._updateARIA(true);
            this.trigger('on.zf.toggler');
            this.find('[data-mutate]').trigger('mutateme.zf.trigger');
          });
        } else {
          Foundation.Motion.animateOut(this.$element, this.animationOut, function () {
            _this._updateARIA(false);
            this.trigger('off.zf.toggler');
            this.find('[data-mutate]').trigger('mutateme.zf.trigger');
          });
        }
      }
    }, {
      key: '_updateARIA',
      value: function _updateARIA(isOn) {
        this.$element.attr('aria-expanded', isOn ? true : false);
      }

      /**
       * Destroys the instance of Toggler on the element.
       * @function
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        this.$element.off('.zf.toggler');
        Foundation.unregisterPlugin(this);
      }
    }]);

    return Toggler;
  }();

  Toggler.defaults = {
    /**
     * Tells the plugin if the element should animated when toggled.
     * @option
     * @example false
     */
    animate: false
  };

  // Window exports
  Foundation.plugin(Toggler, 'Toggler');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * Tooltip module.
   * @module foundation.tooltip
   * @requires foundation.util.box
   * @requires foundation.util.mediaQuery
   * @requires foundation.util.triggers
   */

  var Tooltip = function () {
    /**
     * Creates a new instance of a Tooltip.
     * @class
     * @fires Tooltip#init
     * @param {jQuery} element - jQuery object to attach a tooltip to.
     * @param {Object} options - object to extend the default configuration.
     */
    function Tooltip(element, options) {
      _classCallCheck(this, Tooltip);

      this.$element = element;
      this.options = $.extend({}, Tooltip.defaults, this.$element.data(), options);

      this.isActive = false;
      this.isClick = false;
      this._init();

      Foundation.registerPlugin(this, 'Tooltip');
    }

    /**
     * Initializes the tooltip by setting the creating the tip element, adding it's text, setting private variables and setting attributes on the anchor.
     * @private
     */


    _createClass(Tooltip, [{
      key: '_init',
      value: function _init() {
        var elemId = this.$element.attr('aria-describedby') || Foundation.GetYoDigits(6, 'tooltip');

        this.options.positionClass = this.options.positionClass || this._getPositionClass(this.$element);
        this.options.tipText = this.options.tipText || this.$element.attr('title');
        this.template = this.options.template ? $(this.options.template) : this._buildTemplate(elemId);

        if (this.options.allowHtml) {
          this.template.appendTo(document.body).html(this.options.tipText).hide();
        } else {
          this.template.appendTo(document.body).text(this.options.tipText).hide();
        }

        this.$element.attr({
          'title': '',
          'aria-describedby': elemId,
          'data-yeti-box': elemId,
          'data-toggle': elemId,
          'data-resize': elemId
        }).addClass(this.options.triggerClass);

        //helper variables to track movement on collisions
        this.usedPositions = [];
        this.counter = 4;
        this.classChanged = false;

        this._events();
      }

      /**
       * Grabs the current positioning class, if present, and returns the value or an empty string.
       * @private
       */

    }, {
      key: '_getPositionClass',
      value: function _getPositionClass(element) {
        if (!element) {
          return '';
        }
        // var position = element.attr('class').match(/top|left|right/g);
        var position = element[0].className.match(/\b(top|left|right)\b/g);
        position = position ? position[0] : '';
        return position;
      }
    }, {
      key: '_buildTemplate',

      /**
       * builds the tooltip element, adds attributes, and returns the template.
       * @private
       */
      value: function _buildTemplate(id) {
        var templateClasses = (this.options.tooltipClass + ' ' + this.options.positionClass + ' ' + this.options.templateClasses).trim();
        var $template = $('<div></div>').addClass(templateClasses).attr({
          'role': 'tooltip',
          'aria-hidden': true,
          'data-is-active': false,
          'data-is-focus': false,
          'id': id
        });
        return $template;
      }

      /**
       * Function that gets called if a collision event is detected.
       * @param {String} position - positioning class to try
       * @private
       */

    }, {
      key: '_reposition',
      value: function _reposition(position) {
        this.usedPositions.push(position ? position : 'bottom');

        //default, try switching to opposite side
        if (!position && this.usedPositions.indexOf('top') < 0) {
          this.template.addClass('top');
        } else if (position === 'top' && this.usedPositions.indexOf('bottom') < 0) {
          this.template.removeClass(position);
        } else if (position === 'left' && this.usedPositions.indexOf('right') < 0) {
          this.template.removeClass(position).addClass('right');
        } else if (position === 'right' && this.usedPositions.indexOf('left') < 0) {
          this.template.removeClass(position).addClass('left');
        }

        //if default change didn't work, try bottom or left first
        else if (!position && this.usedPositions.indexOf('top') > -1 && this.usedPositions.indexOf('left') < 0) {
            this.template.addClass('left');
          } else if (position === 'top' && this.usedPositions.indexOf('bottom') > -1 && this.usedPositions.indexOf('left') < 0) {
            this.template.removeClass(position).addClass('left');
          } else if (position === 'left' && this.usedPositions.indexOf('right') > -1 && this.usedPositions.indexOf('bottom') < 0) {
            this.template.removeClass(position);
          } else if (position === 'right' && this.usedPositions.indexOf('left') > -1 && this.usedPositions.indexOf('bottom') < 0) {
            this.template.removeClass(position);
          }
          //if nothing cleared, set to bottom
          else {
              this.template.removeClass(position);
            }
        this.classChanged = true;
        this.counter--;
      }

      /**
       * sets the position class of an element and recursively calls itself until there are no more possible positions to attempt, or the tooltip element is no longer colliding.
       * if the tooltip is larger than the screen width, default to full width - any user selected margin
       * @private
       */

    }, {
      key: '_setPosition',
      value: function _setPosition() {
        var position = this._getPositionClass(this.template),
            $tipDims = Foundation.Box.GetDimensions(this.template),
            $anchorDims = Foundation.Box.GetDimensions(this.$element),
            direction = position === 'left' ? 'left' : position === 'right' ? 'left' : 'top',
            param = direction === 'top' ? 'height' : 'width',
            offset = param === 'height' ? this.options.vOffset : this.options.hOffset,
            _this = this;

        if ($tipDims.width >= $tipDims.windowDims.width || !this.counter && !Foundation.Box.ImNotTouchingYou(this.template)) {
          this.template.offset(Foundation.Box.GetOffsets(this.template, this.$element, 'center bottom', this.options.vOffset, this.options.hOffset, true)).css({
            // this.$element.offset(Foundation.GetOffsets(this.template, this.$element, 'center bottom', this.options.vOffset, this.options.hOffset, true)).css({
            'width': $anchorDims.windowDims.width - this.options.hOffset * 2,
            'height': 'auto'
          });
          return false;
        }

        this.template.offset(Foundation.Box.GetOffsets(this.template, this.$element, 'center ' + (position || 'bottom'), this.options.vOffset, this.options.hOffset));

        while (!Foundation.Box.ImNotTouchingYou(this.template) && this.counter) {
          this._reposition(position);
          this._setPosition();
        }
      }

      /**
       * reveals the tooltip, and fires an event to close any other open tooltips on the page
       * @fires Tooltip#closeme
       * @fires Tooltip#show
       * @function
       */

    }, {
      key: 'show',
      value: function show() {
        if (this.options.showOn !== 'all' && !Foundation.MediaQuery.is(this.options.showOn)) {
          // console.error('The screen is too small to display this tooltip');
          return false;
        }

        var _this = this;
        this.template.css('visibility', 'hidden').show();
        this._setPosition();

        /**
         * Fires to close all other open tooltips on the page
         * @event Closeme#tooltip
         */
        this.$element.trigger('closeme.zf.tooltip', this.template.attr('id'));

        this.template.attr({
          'data-is-active': true,
          'aria-hidden': false
        });
        _this.isActive = true;
        // console.log(this.template);
        this.template.stop().hide().css('visibility', '').fadeIn(this.options.fadeInDuration, function () {
          //maybe do stuff?
        });
        /**
         * Fires when the tooltip is shown
         * @event Tooltip#show
         */
        this.$element.trigger('show.zf.tooltip');
      }

      /**
       * Hides the current tooltip, and resets the positioning class if it was changed due to collision
       * @fires Tooltip#hide
       * @function
       */

    }, {
      key: 'hide',
      value: function hide() {
        // console.log('hiding', this.$element.data('yeti-box'));
        var _this = this;
        this.template.stop().attr({
          'aria-hidden': true,
          'data-is-active': false
        }).fadeOut(this.options.fadeOutDuration, function () {
          _this.isActive = false;
          _this.isClick = false;
          if (_this.classChanged) {
            _this.template.removeClass(_this._getPositionClass(_this.template)).addClass(_this.options.positionClass);

            _this.usedPositions = [];
            _this.counter = 4;
            _this.classChanged = false;
          }
        });
        /**
         * fires when the tooltip is hidden
         * @event Tooltip#hide
         */
        this.$element.trigger('hide.zf.tooltip');
      }

      /**
       * adds event listeners for the tooltip and its anchor
       * TODO combine some of the listeners like focus and mouseenter, etc.
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        var _this = this;
        var $template = this.template;
        var isFocus = false;

        if (!this.options.disableHover) {

          this.$element.on('mouseenter.zf.tooltip', function (e) {
            if (!_this.isActive) {
              _this.timeout = setTimeout(function () {
                _this.show();
              }, _this.options.hoverDelay);
            }
          }).on('mouseleave.zf.tooltip', function (e) {
            clearTimeout(_this.timeout);
            if (!isFocus || _this.isClick && !_this.options.clickOpen) {
              _this.hide();
            }
          });
        }

        if (this.options.clickOpen) {
          this.$element.on('mousedown.zf.tooltip', function (e) {
            e.stopImmediatePropagation();
            if (_this.isClick) {
              //_this.hide();
              // _this.isClick = false;
            } else {
              _this.isClick = true;
              if ((_this.options.disableHover || !_this.$element.attr('tabindex')) && !_this.isActive) {
                _this.show();
              }
            }
          });
        } else {
          this.$element.on('mousedown.zf.tooltip', function (e) {
            e.stopImmediatePropagation();
            _this.isClick = true;
          });
        }

        if (!this.options.disableForTouch) {
          this.$element.on('tap.zf.tooltip touchend.zf.tooltip', function (e) {
            _this.isActive ? _this.hide() : _this.show();
          });
        }

        this.$element.on({
          // 'toggle.zf.trigger': this.toggle.bind(this),
          // 'close.zf.trigger': this.hide.bind(this)
          'close.zf.trigger': this.hide.bind(this)
        });

        this.$element.on('focus.zf.tooltip', function (e) {
          isFocus = true;
          if (_this.isClick) {
            // If we're not showing open on clicks, we need to pretend a click-launched focus isn't
            // a real focus, otherwise on hover and come back we get bad behavior
            if (!_this.options.clickOpen) {
              isFocus = false;
            }
            return false;
          } else {
            _this.show();
          }
        }).on('focusout.zf.tooltip', function (e) {
          isFocus = false;
          _this.isClick = false;
          _this.hide();
        }).on('resizeme.zf.trigger', function () {
          if (_this.isActive) {
            _this._setPosition();
          }
        });
      }

      /**
       * adds a toggle method, in addition to the static show() & hide() functions
       * @function
       */

    }, {
      key: 'toggle',
      value: function toggle() {
        if (this.isActive) {
          this.hide();
        } else {
          this.show();
        }
      }

      /**
       * Destroys an instance of tooltip, removes template element from the view.
       * @function
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        this.$element.attr('title', this.template.text()).off('.zf.trigger .zf.tooltip').removeClass('has-tip top right left').removeAttr('aria-describedby aria-haspopup data-disable-hover data-resize data-toggle data-tooltip data-yeti-box');

        this.template.remove();

        Foundation.unregisterPlugin(this);
      }
    }]);

    return Tooltip;
  }();

  Tooltip.defaults = {
    disableForTouch: false,
    /**
     * Time, in ms, before a tooltip should open on hover.
     * @option
     * @example 200
     */
    hoverDelay: 200,
    /**
     * Time, in ms, a tooltip should take to fade into view.
     * @option
     * @example 150
     */
    fadeInDuration: 150,
    /**
     * Time, in ms, a tooltip should take to fade out of view.
     * @option
     * @example 150
     */
    fadeOutDuration: 150,
    /**
     * Disables hover events from opening the tooltip if set to true
     * @option
     * @example false
     */
    disableHover: false,
    /**
     * Optional addtional classes to apply to the tooltip template on init.
     * @option
     * @example 'my-cool-tip-class'
     */
    templateClasses: '',
    /**
     * Non-optional class added to tooltip templates. Foundation default is 'tooltip'.
     * @option
     * @example 'tooltip'
     */
    tooltipClass: 'tooltip',
    /**
     * Class applied to the tooltip anchor element.
     * @option
     * @example 'has-tip'
     */
    triggerClass: 'has-tip',
    /**
     * Minimum breakpoint size at which to open the tooltip.
     * @option
     * @example 'small'
     */
    showOn: 'small',
    /**
     * Custom template to be used to generate markup for tooltip.
     * @option
     * @example '&lt;div class="tooltip"&gt;&lt;/div&gt;'
     */
    template: '',
    /**
     * Text displayed in the tooltip template on open.
     * @option
     * @example 'Some cool space fact here.'
     */
    tipText: '',
    touchCloseText: 'Tap to close.',
    /**
     * Allows the tooltip to remain open if triggered with a click or touch event.
     * @option
     * @example true
     */
    clickOpen: true,
    /**
     * Additional positioning classes, set by the JS
     * @option
     * @example 'top'
     */
    positionClass: '',
    /**
     * Distance, in pixels, the template should push away from the anchor on the Y axis.
     * @option
     * @example 10
     */
    vOffset: 10,
    /**
     * Distance, in pixels, the template should push away from the anchor on the X axis, if aligned to a side.
     * @option
     * @example 12
     */
    hOffset: 12,
    /**
    * Allow HTML in tooltip. Warning: If you are loading user-generated content into tooltips,
    * allowing HTML may open yourself up to XSS attacks.
    * @option
    * @example false
    */
    allowHtml: false
  };

  /**
   * TODO utilize resize event trigger
   */

  // Window exports
  Foundation.plugin(Tooltip, 'Tooltip');
}(jQuery);
'use strict';

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"); } }

!function ($) {

  /**
   * ResponsiveAccordionTabs module.
   * @module foundation.responsiveAccordionTabs
   * @requires foundation.util.keyboard
   * @requires foundation.util.timerAndImageLoader
   * @requires foundation.util.motion
   * @requires foundation.accordion
   * @requires foundation.tabs
   */

  var ResponsiveAccordionTabs = function () {
    /**
     * Creates a new instance of a responsive accordion tabs.
     * @class
     * @fires ResponsiveAccordionTabs#init
     * @param {jQuery} element - jQuery object to make into a dropdown menu.
     * @param {Object} options - Overrides to the default plugin settings.
     */
    function ResponsiveAccordionTabs(element, options) {
      _classCallCheck(this, ResponsiveAccordionTabs);

      this.$element = $(element);
      this.options = $.extend({}, this.$element.data(), options);
      this.rules = this.$element.data('responsive-accordion-tabs');
      this.currentMq = null;
      this.currentPlugin = null;
      if (!this.$element.attr('id')) {
        this.$element.attr('id', Foundation.GetYoDigits(6, 'responsiveaccordiontabs'));
      };

      this._init();
      this._events();

      Foundation.registerPlugin(this, 'ResponsiveAccordionTabs');
    }

    /**
     * Initializes the Menu by parsing the classes from the 'data-responsive-accordion-tabs' attribute on the element.
     * @function
     * @private
     */


    _createClass(ResponsiveAccordionTabs, [{
      key: '_init',
      value: function _init() {
        // The first time an Interchange plugin is initialized, this.rules is converted from a string of "classes" to an object of rules
        if (typeof this.rules === 'string') {
          var rulesTree = {};

          // Parse rules from "classes" pulled from data attribute
          var rules = this.rules.split(' ');

          // Iterate through every rule found
          for (var i = 0; i < rules.length; i++) {
            var rule = rules[i].split('-');
            var ruleSize = rule.length > 1 ? rule[0] : 'small';
            var rulePlugin = rule.length > 1 ? rule[1] : rule[0];

            if (MenuPlugins[rulePlugin] !== null) {
              rulesTree[ruleSize] = MenuPlugins[rulePlugin];
            }
          }

          this.rules = rulesTree;
        }

        this._getAllOptions();

        if (!$.isEmptyObject(this.rules)) {
          this._checkMediaQueries();
        }
      }
    }, {
      key: '_getAllOptions',
      value: function _getAllOptions() {
        //get all defaults and options
        var _this = this;
        _this.allOptions = {};
        for (var key in MenuPlugins) {
          if (MenuPlugins.hasOwnProperty(key)) {
            var obj = MenuPlugins[key];
            try {
              var dummyPlugin = $('<ul></ul>');
              var tmpPlugin = new obj.plugin(dummyPlugin, _this.options);
              for (var keyKey in tmpPlugin.options) {
                if (tmpPlugin.options.hasOwnProperty(keyKey) && keyKey !== 'zfPlugin') {
                  var objObj = tmpPlugin.options[keyKey];
                  _this.allOptions[keyKey] = objObj;
                }
              }
              tmpPlugin.destroy();
            } catch (e) {}
          }
        }
      }

      /**
       * Initializes events for the Menu.
       * @function
       * @private
       */

    }, {
      key: '_events',
      value: function _events() {
        var _this = this;

        $(window).on('changed.zf.mediaquery', function () {
          _this._checkMediaQueries();
        });
      }

      /**
       * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.
       * @function
       * @private
       */

    }, {
      key: '_checkMediaQueries',
      value: function _checkMediaQueries() {
        var matchedMq,
            _this = this;
        // Iterate through each rule and find the last matching rule
        $.each(this.rules, function (key) {
          if (Foundation.MediaQuery.atLeast(key)) {
            matchedMq = key;
          }
        });

        // No match? No dice
        if (!matchedMq) return;

        // Plugin already initialized? We good
        if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;

        // Remove existing plugin-specific CSS classes
        $.each(MenuPlugins, function (key, value) {
          _this.$element.removeClass(value.cssClass);
        });

        // Add the CSS class for the new plugin
        this.$element.addClass(this.rules[matchedMq].cssClass);

        // Create an instance of the new plugin
        if (this.currentPlugin) {
          //don't know why but on nested elements data zfPlugin get's lost
          if (!this.currentPlugin.$element.data('zfPlugin') && this.storezfData) this.currentPlugin.$element.data('zfPlugin', this.storezfData);
          this.currentPlugin.destroy();
        }
        this._handleMarkup(this.rules[matchedMq].cssClass);
        this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});
        this.storezfData = this.currentPlugin.$element.data('zfPlugin');
      }
    }, {
      key: '_handleMarkup',
      value: function _handleMarkup(toSet) {
        var _this = this,
            fromString = 'accordion';
        var $panels = $('[data-tabs-content=' + this.$element.attr('id') + ']');
        if ($panels.length) fromString = 'tabs';
        if (fromString === toSet) {
          return;
        };

        var tabsTitle = _this.allOptions.linkClass ? _this.allOptions.linkClass : 'tabs-title';
        var tabsPanel = _this.allOptions.panelClass ? _this.allOptions.panelClass : 'tabs-panel';

        this.$element.removeAttr('role');
        var $liHeads = this.$element.children('.' + tabsTitle + ',[data-accordion-item]').removeClass(tabsTitle).removeClass('accordion-item').removeAttr('data-accordion-item');
        var $liHeadsA = $liHeads.children('a').removeClass('accordion-title');

        if (fromString === 'tabs') {
          $panels = $panels.children('.' + tabsPanel).removeClass(tabsPanel).removeAttr('role').removeAttr('aria-hidden').removeAttr('aria-labelledby');
          $panels.children('a').removeAttr('role').removeAttr('aria-controls').removeAttr('aria-selected');
        } else {
          $panels = $liHeads.children('[data-tab-content]').removeClass('accordion-content');
        };

        $panels.css({ display: '', visibility: '' });
        $liHeads.css({ display: '', visibility: '' });
        if (toSet === 'accordion') {
          $panels.each(function (key, value) {
            $(value).appendTo($liHeads.get(key)).addClass('accordion-content').attr('data-tab-content', '').removeClass('is-active').css({ height: '' });
            $('[data-tabs-content=' + _this.$element.attr('id') + ']').after('<div id="tabs-placeholder-' + _this.$element.attr('id') + '"></div>').remove();
            $liHeads.addClass('accordion-item').attr('data-accordion-item', '');
            $liHeadsA.addClass('accordion-title');
          });
        } else if (toSet === 'tabs') {
          var $tabsContent = $('[data-tabs-content=' + _this.$element.attr('id') + ']');
          var $placeholder = $('#tabs-placeholder-' + _this.$element.attr('id'));
          if ($placeholder.length) {
            $tabsContent = $('<div class="tabs-content"></div>').insertAfter($placeholder).attr('data-tabs-content', _this.$element.attr('id'));
            $placeholder.remove();
          } else {
            $tabsContent = $('<div class="tabs-content"></div>').insertAfter(_this.$element).attr('data-tabs-content', _this.$element.attr('id'));
          };
          $panels.each(function (key, value) {
            var tempValue = $(value).appendTo($tabsContent).addClass(tabsPanel);
            var hash = $liHeadsA.get(key).hash.slice(1);
            var id = $(value).attr('id') || Foundation.GetYoDigits(6, 'accordion');
            if (hash !== id) {
              if (hash !== '') {
                $(value).attr('id', hash);
              } else {
                hash = id;
                $(value).attr('id', hash);
                $($liHeadsA.get(key)).attr('href', $($liHeadsA.get(key)).attr('href').replace('#', '') + '#' + hash);
              };
            };
            var isActive = $($liHeads.get(key)).hasClass('is-active');
            if (isActive) {
              tempValue.addClass('is-active');
            };
          });
          $liHeads.addClass(tabsTitle);
        };
      }

      /**
       * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.
       * @function
       */

    }, {
      key: 'destroy',
      value: function destroy() {
        if (this.currentPlugin) this.currentPlugin.destroy();
        $(window).off('.zf.ResponsiveAccordionTabs');
        Foundation.unregisterPlugin(this);
      }
    }]);

    return ResponsiveAccordionTabs;
  }();

  ResponsiveAccordionTabs.defaults = {};

  // The plugin matches the plugin classes with these plugin instances.
  var MenuPlugins = {
    tabs: {
      cssClass: 'tabs',
      plugin: Foundation._plugins.tabs || null
    },
    accordion: {
      cssClass: 'accordion',
      plugin: Foundation._plugins.accordion || null
    }
  };

  // Window exports
  Foundation.plugin(ResponsiveAccordionTabs, 'ResponsiveAccordionTabs');
}(jQuery);
"use strict";

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; };

/**
 * Created by jon on 12/12/16.
 */

!function (e, define) {
    define("kendo.core.min", ["jquery"], e);
}(function () {
    return function (e, t, n) {
        function r() {}function o(e, t) {
            if (t) return "'" + e.split("'").join("\\'").split('\\"').join('\\\\\\"').replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t") + "'";var n = e.charAt(0),
                r = e.substring(1);return "=" === n ? "+(" + r + ")+" : ":" === n ? "+$kendoHtmlEncode(" + r + ")+" : ";" + e + ";$kendoOutput+=";
        }function i(e, t, n) {
            return e += "", t = t || 2, n = t - e.length, n ? W[t].substring(0, n) + e : e;
        }function a(e) {
            var t = e.css(ye.support.transitions.css + "box-shadow") || e.css("box-shadow"),
                n = t ? t.match(De) || [0, 0, 0, 0, 0] : [0, 0, 0, 0, 0],
                r = Te.max(+n[3], +(n[4] || 0));return { left: -n[1] + r, right: +n[1] + r, bottom: +n[2] + r };
        }function s(t, n) {
            var r,
                o,
                i,
                a,
                s,
                u,
                l,
                c = ke.browser,
                d = ye._outerWidth,
                f = ye._outerHeight;return t.parent().hasClass("k-animation-container") ? (u = t.parent(".k-animation-container"), l = u[0].style, u.is(":hidden") && u.show(), r = Oe.test(l.width) || Oe.test(l.height), r || u.css({ width: d(t), height: f(t), boxSizing: "content-box", mozBoxSizing: "content-box", webkitBoxSizing: "content-box" })) : (o = t[0].style.width, i = t[0].style.height, a = Oe.test(o), s = Oe.test(i), r = a || s, !a && (!n || n && o) && (o = d(t)), !s && (!n || n && i) && (i = f(t)), t.wrap(e("<div/>").addClass("k-animation-container").css({ width: o, height: i })), r && t.css({ width: "100%", height: "100%", boxSizing: "border-box", mozBoxSizing: "border-box", webkitBoxSizing: "border-box" })), c.msie && Te.floor(c.version) <= 7 && (t.css({ zoom: 1 }), t.children(".k-menu").width(t.width())), t.parent();
        }function u(e) {
            var t = 1,
                n = arguments.length;for (t = 1; t < n; t++) {
                l(e, arguments[t]);
            }return e;
        }function l(e, t) {
            var n,
                r,
                o,
                i,
                a,
                s = ye.data.ObservableArray,
                u = ye.data.LazyObservableArray,
                c = ye.data.DataSource,
                d = ye.data.HierarchicalDataSource;for (n in t) {
                r = t[n], o = typeof r === "undefined" ? "undefined" : _typeof(r), i = o === Ae && null !== r ? r.constructor : null, i && i !== Array && i !== s && i !== u && i !== c && i !== d ? r instanceof Date ? e[n] = new Date(r.getTime()) : _(r.clone) ? e[n] = r.clone() : (a = e[n], e[n] = (typeof a === "undefined" ? "undefined" : _typeof(a)) === Ae ? a || {} : {}, l(e[n], r)) : o !== Fe && (e[n] = r);
            }return e;
        }function c(e, t, r) {
            for (var o in t) {
                if (t.hasOwnProperty(o) && t[o].test(e)) return o;
            }return r !== n ? r : e;
        }function d(e) {
            return e.replace(/([a-z][A-Z])/g, function (e) {
                return e.charAt(0) + "-" + e.charAt(1).toLowerCase();
            });
        }function f(e) {
            return e.replace(/\-(\w)/g, function (e, t) {
                return t.toUpperCase();
            });
        }function m(t, n) {
            var r,
                o = {};return document.defaultView && document.defaultView.getComputedStyle ? (r = document.defaultView.getComputedStyle(t, ""), n && e.each(n, function (e, t) {
                o[t] = r.getPropertyValue(t);
            })) : (r = t.currentStyle, n && e.each(n, function (e, t) {
                o[t] = r[f(t)];
            })), ye.size(o) || (o = r), o;
        }function p(e) {
            if (e && e.className && "string" == typeof e.className && e.className.indexOf("k-auto-scrollable") > -1) return !0;var t = m(e, ["overflow"]).overflow;return "auto" == t || "scroll" == t;
        }function h(t, r) {
            var o,
                i = ke.browser.webkit,
                a = ke.browser.mozilla,
                s = t instanceof e ? t[0] : t;if (t) return o = ke.isRtl(t), r === n ? o && i ? s.scrollWidth - s.clientWidth - s.scrollLeft : Math.abs(s.scrollLeft) : (s.scrollLeft = o && i ? s.scrollWidth - s.clientWidth - r : o && a ? -r : r, n);
        }function g(e) {
            var t,
                n = 0;for (t in e) {
                e.hasOwnProperty(t) && "toJSON" != t && n++;
            }return n;
        }function y(e, n, r) {
            var o, i, a;return n || (n = "offset"), o = e[n](), i = { top: o.top, right: o.right, bottom: o.bottom, left: o.left }, ke.browser.msie && (ke.pointers || ke.msPointers) && !r && (a = ke.isRtl(e) ? 1 : -1, i.top -= t.pageYOffset + a * document.documentElement.scrollTop, i.left -= t.pageXOffset + a * document.documentElement.scrollLeft), i;
        }function v(e) {
            var t = {};return be("string" == typeof e ? e.split(" ") : e, function (e) {
                t[e] = this;
            }), t;
        }function b(e) {
            return new ye.effects.Element(e);
        }function w(e, t, n, r) {
            return (typeof e === "undefined" ? "undefined" : _typeof(e)) === He && (_(t) && (r = t, t = 400, n = !1), _(n) && (r = n, n = !1), (typeof t === "undefined" ? "undefined" : _typeof(t)) === Pe && (n = t, t = 400), e = { effects: e, duration: t, reverse: n, complete: r }), ve({ effects: {}, duration: 400, reverse: !1, init: Se, teardown: Se, hide: !1 }, e, { completeCallback: e.complete, complete: Se });
        }function M(t, n, r, o, i) {
            for (var a, s = 0, u = t.length; s < u; s++) {
                a = e(t[s]), a.queue(function () {
                    B.promise(a, w(n, r, o, i));
                });
            }return t;
        }function S(e, t, n, r) {
            return t && (t = t.split(" "), be(t, function (t, n) {
                e.toggleClass(n, r);
            })), e;
        }function T(e) {
            return ("" + e).replace(J, "&amp;").replace(Y, "&lt;").replace(G, "&gt;").replace(q, "&quot;").replace(V, "&#39;");
        }function x(e, t) {
            var r;return 0 === t.indexOf("data") && (t = t.substring(4), t = t.charAt(0).toLowerCase() + t.substring(1)), t = t.replace(oe, "-$1"), r = e.getAttribute("data-" + ye.ns + t), null === r ? r = n : "null" === r ? r = null : "true" === r ? r = !0 : "false" === r ? r = !1 : Ce.test(r) ? r = parseFloat(r) : ne.test(r) && !re.test(r) && (r = Function("return (" + r + ")")()), r;
        }function k(t, r) {
            var o,
                i,
                a = {};for (o in r) {
                i = x(t, o), i !== n && (te.test(o) && (i = ye.template(e("#" + i).html())), a[o] = i);
            }return a;
        }function O(t, n) {
            return e.contains(t, n) ? -1 : 1;
        }function z() {
            var t = e(this);return e.inArray(t.attr("data-" + ye.ns + "role"), ["slider", "rangeslider"]) > -1 || t.is(":visible");
        }function D(e, t) {
            var n = e.nodeName.toLowerCase();return (/input|select|textarea|button|object/.test(n) ? !e.disabled : "a" === n ? e.href || t : t) && C(e);
        }function C(t) {
            return e.expr.filters.visible(t) && !e(t).parents().addBack().filter(function () {
                return "hidden" === e.css(this, "visibility");
            }).length;
        }function E(e, t) {
            return new E.fn.init(e, t);
        }var H,
            _,
            A,
            N,
            P,
            F,
            R,
            U,
            I,
            $,
            L,
            W,
            j,
            B,
            J,
            Y,
            q,
            V,
            G,
            K,
            Q,
            Z,
            X,
            ee,
            te,
            ne,
            re,
            oe,
            ie,
            ae,
            se,
            ue,
            le,
            ce,
            de,
            fe,
            me,
            pe,
            he,
            ge,
            ye = t.kendo = t.kendo || { cultures: {} },
            ve = e.extend,
            be = e.each,
            we = e.isArray,
            Me = e.proxy,
            Se = e.noop,
            Te = Math,
            xe = t.JSON || {},
            ke = {},
            Oe = /%/,
            ze = /\{(\d+)(:[^\}]+)?\}/g,
            De = /(\d+(?:\.?)\d*)px\s*(\d+(?:\.?)\d*)px\s*(\d+(?:\.?)\d*)px\s*(\d+)?/i,
            Ce = /^(\+|-?)\d+(\.?)\d*$/,
            Ee = "function",
            He = "string",
            _e = "number",
            Ae = "object",
            Ne = "null",
            Pe = "boolean",
            Fe = "undefined",
            Re = {},
            Ue = {},
            Ie = [].slice;ye.version = "2016.3.1118".replace(/^\s+|\s+$/g, ""), r.extend = function (e) {
            var t,
                n,
                r = function r() {},
                o = this,
                i = e && e.init ? e.init : function () {
                o.apply(this, arguments);
            };r.prototype = o.prototype, n = i.fn = i.prototype = new r();for (t in e) {
                n[t] = null != e[t] && e[t].constructor === Object ? ve(!0, {}, r.prototype[t], e[t]) : e[t];
            }return n.constructor = i, i.extend = o.extend, i;
        }, r.prototype._initOptions = function (e) {
            this.options = u({}, this.options, e);
        }, _ = ye.isFunction = function (e) {
            return "function" == typeof e;
        }, A = function A() {
            this._defaultPrevented = !0;
        }, N = function N() {
            return this._defaultPrevented === !0;
        }, P = r.extend({ init: function init() {
                this._events = {};
            }, bind: function bind(e, t, r) {
                var o,
                    i,
                    a,
                    _s,
                    u,
                    l = this,
                    c = (typeof e === "undefined" ? "undefined" : _typeof(e)) === He ? [e] : e,
                    d = (typeof t === "undefined" ? "undefined" : _typeof(t)) === Ee;if (t === n) {
                    for (o in e) {
                        l.bind(o, e[o]);
                    }return l;
                }for (o = 0, i = c.length; o < i; o++) {
                    e = c[o], _s = d ? t : t[e], _s && (r && (a = _s, _s = function s() {
                        l.unbind(e, _s), a.apply(l, arguments);
                    }, _s.original = a), u = l._events[e] = l._events[e] || [], u.push(_s));
                }return l;
            }, one: function one(e, t) {
                return this.bind(e, t, !0);
            }, first: function first(e, t) {
                var n,
                    r,
                    o,
                    i,
                    a = this,
                    s = (typeof e === "undefined" ? "undefined" : _typeof(e)) === He ? [e] : e,
                    u = (typeof t === "undefined" ? "undefined" : _typeof(t)) === Ee;for (n = 0, r = s.length; n < r; n++) {
                    e = s[n], o = u ? t : t[e], o && (i = a._events[e] = a._events[e] || [], i.unshift(o));
                }return a;
            }, trigger: function trigger(e, t) {
                var n,
                    r,
                    o = this,
                    i = o._events[e];if (i) {
                    for (t = t || {}, t.sender = o, t._defaultPrevented = !1, t.preventDefault = A, t.isDefaultPrevented = N, i = i.slice(), n = 0, r = i.length; n < r; n++) {
                        i[n].call(o, t);
                    }return t._defaultPrevented === !0;
                }return !1;
            }, unbind: function unbind(e, t) {
                var r,
                    o = this,
                    i = o._events[e];if (e === n) o._events = {};else if (i) if (t) for (r = i.length - 1; r >= 0; r--) {
                    i[r] !== t && i[r].original !== t || i.splice(r, 1);
                } else o._events[e] = [];return o;
            } }), F = /^\w+/, R = /\$\{([^}]*)\}/g, U = /\\\}/g, I = /__CURLY__/g, $ = /\\#/g, L = /__SHARP__/g, W = ["", "0", "00", "000", "0000"], H = { paramName: "data", useWithBlock: !0, render: function render(e, t) {
                var n,
                    r,
                    o = "";for (n = 0, r = t.length; n < r; n++) {
                    o += e(t[n]);
                }return o;
            }, compile: function compile(e, t) {
                var n,
                    r,
                    i,
                    a = ve({}, this, t),
                    s = a.paramName,
                    u = s.match(F)[0],
                    l = a.useWithBlock,
                    c = "var $kendoOutput, $kendoHtmlEncode = kendo.htmlEncode;";if (_(e)) return e;for (c += l ? "with(" + s + "){" : "", c += "$kendoOutput=", r = e.replace(U, "__CURLY__").replace(R, "#=$kendoHtmlEncode($1)#").replace(I, "}").replace($, "__SHARP__").split("#"), i = 0; i < r.length; i++) {
                    c += o(r[i], i % 2 === 0);
                }c += l ? ";}" : ";", c += "return $kendoOutput;", c = c.replace(L, "#");try {
                    return n = Function(u, c), n._slotCount = Math.floor(r.length / 2), n;
                } catch (d) {
                    throw Error(ye.format("Invalid template:'{0}' Generated code:'{1}'", e, c));
                }
            } }, function () {
            function e(e) {
                return a.lastIndex = 0, a.test(e) ? '"' + e.replace(a, function (e) {
                    var t = s[e];return (typeof t === "undefined" ? "undefined" : _typeof(t)) === He ? t : "\\u" + ("0000" + e.charCodeAt(0).toString(16)).slice(-4);
                }) + '"' : '"' + e + '"';
            }function t(i, a) {
                var s,
                    l,
                    c,
                    d,
                    f,
                    m,
                    p = n,
                    h = a[i];if (h && (typeof h === "undefined" ? "undefined" : _typeof(h)) === Ae && _typeof(h.toJSON) === Ee && (h = h.toJSON(i)), (typeof o === "undefined" ? "undefined" : _typeof(o)) === Ee && (h = o.call(a, i, h)), m = typeof h === "undefined" ? "undefined" : _typeof(h), m === He) return e(h);if (m === _e) return isFinite(h) ? h + "" : Ne;if (m === Pe || m === Ne) return h + "";if (m === Ae) {
                    if (!h) return Ne;if (n += r, f = [], "[object Array]" === u.apply(h)) {
                        for (d = h.length, s = 0; s < d; s++) {
                            f[s] = t(s, h) || Ne;
                        }return c = 0 === f.length ? "[]" : n ? "[\n" + n + f.join(",\n" + n) + "\n" + p + "]" : "[" + f.join(",") + "]", n = p, c;
                    }if (o && (typeof o === "undefined" ? "undefined" : _typeof(o)) === Ae) for (d = o.length, s = 0; s < d; s++) {
                        _typeof(o[s]) === He && (l = o[s], c = t(l, h), c && f.push(e(l) + (n ? ": " : ":") + c));
                    } else for (l in h) {
                        Object.hasOwnProperty.call(h, l) && (c = t(l, h), c && f.push(e(l) + (n ? ": " : ":") + c));
                    }return c = 0 === f.length ? "{}" : n ? "{\n" + n + f.join(",\n" + n) + "\n" + p + "}" : "{" + f.join(",") + "}", n = p, c;
                }
            }var n,
                r,
                o,
                a = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                s = { "\b": "\\b", "\t": "\\t", "\n": "\\n", "\f": "\\f", "\r": "\\r", '"': '\\"', "\\": "\\\\" },
                u = {}.toString;_typeof(Date.prototype.toJSON) !== Ee && (Date.prototype.toJSON = function () {
                var e = this;return isFinite(e.valueOf()) ? i(e.getUTCFullYear(), 4) + "-" + i(e.getUTCMonth() + 1) + "-" + i(e.getUTCDate()) + "T" + i(e.getUTCHours()) + ":" + i(e.getUTCMinutes()) + ":" + i(e.getUTCSeconds()) + "Z" : null;
            }, String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function () {
                return this.valueOf();
            }), _typeof(xe.stringify) !== Ee && (xe.stringify = function (e, i, a) {
                var s;if (n = "", r = "", (typeof a === "undefined" ? "undefined" : _typeof(a)) === _e) for (s = 0; s < a; s += 1) {
                    r += " ";
                } else (typeof a === "undefined" ? "undefined" : _typeof(a)) === He && (r = a);if (o = i, i && (typeof i === "undefined" ? "undefined" : _typeof(i)) !== Ee && ((typeof i === "undefined" ? "undefined" : _typeof(i)) !== Ae || _typeof(i.length) !== _e)) throw Error("JSON.stringify");return t("", { "": e });
            });
        }(), function () {
            function t(e) {
                if (e) {
                    if (e.numberFormat) return e;if ((typeof e === "undefined" ? "undefined" : _typeof(e)) === He) {
                        var t = ye.cultures;return t[e] || t[e.split("-")[0]] || null;
                    }return null;
                }return null;
            }function r(e) {
                return e && (e = t(e)), e || ye.cultures.current;
            }function o(e, t, o) {
                o = r(o);var a = o.calendars.standard,
                    s = a.days,
                    u = a.months;return t = a.patterns[t] || t, t.replace(c, function (t) {
                    var r, o, l;return "d" === t ? o = e.getDate() : "dd" === t ? o = i(e.getDate()) : "ddd" === t ? o = s.namesAbbr[e.getDay()] : "dddd" === t ? o = s.names[e.getDay()] : "M" === t ? o = e.getMonth() + 1 : "MM" === t ? o = i(e.getMonth() + 1) : "MMM" === t ? o = u.namesAbbr[e.getMonth()] : "MMMM" === t ? o = u.names[e.getMonth()] : "yy" === t ? o = i(e.getFullYear() % 100) : "yyyy" === t ? o = i(e.getFullYear(), 4) : "h" === t ? o = e.getHours() % 12 || 12 : "hh" === t ? o = i(e.getHours() % 12 || 12) : "H" === t ? o = e.getHours() : "HH" === t ? o = i(e.getHours()) : "m" === t ? o = e.getMinutes() : "mm" === t ? o = i(e.getMinutes()) : "s" === t ? o = e.getSeconds() : "ss" === t ? o = i(e.getSeconds()) : "f" === t ? o = Te.floor(e.getMilliseconds() / 100) : "ff" === t ? (o = e.getMilliseconds(), o > 99 && (o = Te.floor(o / 10)), o = i(o)) : "fff" === t ? o = i(e.getMilliseconds(), 3) : "tt" === t ? o = e.getHours() < 12 ? a.AM[0] : a.PM[0] : "zzz" === t ? (r = e.getTimezoneOffset(), l = r < 0, o = ("" + Te.abs(r / 60)).split(".")[0], r = Te.abs(r) - 60 * o, o = (l ? "+" : "-") + i(o), o += ":" + i(r)) : "zz" !== t && "z" !== t || (o = e.getTimezoneOffset() / 60, l = o < 0, o = ("" + Te.abs(o)).split(".")[0], o = (l ? "+" : "-") + ("zz" === t ? i(o) : o)), o !== n ? o : t.slice(1, t.length - 1);
                });
            }function a(e, t, o) {
                o = r(o);var i,
                    a,
                    l,
                    c,
                    w,
                    M,
                    S,
                    T,
                    x,
                    k,
                    O,
                    z,
                    D,
                    C,
                    E,
                    H,
                    _,
                    A,
                    N,
                    P,
                    F,
                    R,
                    U,
                    I = o.numberFormat,
                    $ = I[h],
                    L = I.decimals,
                    W = I.pattern[0],
                    j = [],
                    B = e < 0,
                    J = p,
                    Y = p,
                    q = -1;if (e === n) return p;if (!isFinite(e)) return e;if (!t) return o.name.length ? e.toLocaleString() : "" + e;if (w = d.exec(t)) {
                    if (t = w[1].toLowerCase(), a = "c" === t, l = "p" === t, (a || l) && (I = a ? I.currency : I.percent, $ = I[h], L = I.decimals, i = I.symbol, W = I.pattern[B ? 0 : 1]), c = w[2], c && (L = +c), "e" === t) return c ? e.toExponential(L) : e.toExponential();if (l && (e *= 100), e = u(e, L), B = e < 0, e = e.split(h), M = e[0], S = e[1], B && (M = M.substring(1)), Y = s(M, 0, M.length, I), S && (Y += $ + S), "n" === t && !B) return Y;for (e = p, k = 0, O = W.length; k < O; k++) {
                        z = W.charAt(k), e += "n" === z ? Y : "$" === z || "%" === z ? i : z;
                    }return e;
                }if (B && (e = -e), (t.indexOf("'") > -1 || t.indexOf('"') > -1 || t.indexOf("\\") > -1) && (t = t.replace(f, function (e) {
                    var t = e.charAt(0).replace("\\", ""),
                        n = e.slice(1).replace(t, "");return j.push(n), b;
                })), t = t.split(";"), B && t[1]) t = t[1], C = !0;else if (0 === e) {
                    if (t = t[2] || t[0], t.indexOf(y) == -1 && t.indexOf(v) == -1) return t;
                } else t = t[0];if (P = t.indexOf("%"), F = t.indexOf("$"), l = P != -1, a = F != -1, l && (e *= 100), a && "\\" === t[F - 1] && (t = t.split("\\").join(""), a = !1), (a || l) && (I = a ? I.currency : I.percent, $ = I[h], L = I.decimals, i = I.symbol), D = t.indexOf(g) > -1, D && (t = t.replace(m, p)), E = t.indexOf(h), O = t.length, E != -1 ? (S = ("" + e).split("e"), S = S[1] ? u(e, Math.abs(S[1])) : S[0], S = S.split(h)[1] || p, _ = t.lastIndexOf(v) - E, H = t.lastIndexOf(y) - E, A = _ > -1, N = H > -1, k = S.length, A || N || (t = t.substring(0, E) + t.substring(E + 1), O = t.length, E = -1, k = 0), A && _ > H ? k = _ : H > _ && (N && k > H ? k = H : A && k < _ && (k = _)), k > -1 && (e = u(e, k))) : e = u(e), H = t.indexOf(y), R = _ = t.indexOf(v), q = H == -1 && _ != -1 ? _ : H != -1 && _ == -1 ? H : H > _ ? _ : H, H = t.lastIndexOf(y), _ = t.lastIndexOf(v), U = H == -1 && _ != -1 ? _ : H != -1 && _ == -1 ? H : H > _ ? H : _, q == O && (U = q), q != -1) {
                    for (Y = ("" + e).split(h), M = Y[0], S = Y[1] || p, T = M.length, x = S.length, B && e * -1 >= 0 && (B = !1), e = t.substring(0, q), B && !C && (e += "-"), k = q; k < O; k++) {
                        if (z = t.charAt(k), E == -1) {
                            if (U - k < T) {
                                e += M;break;
                            }
                        } else if (_ != -1 && _ < k && (J = p), E - k <= T && E - k > -1 && (e += M, k = E), E === k) {
                            e += (S ? $ : p) + S, k += U - E + 1;continue;
                        }z === v ? (e += z, J = z) : z === y && (e += J);
                    }if (D && (e = s(e, q + (B ? 1 : 0), Math.max(U, T + q), I)), U >= q && (e += t.substring(U + 1)), a || l) {
                        for (Y = p, k = 0, O = e.length; k < O; k++) {
                            z = e.charAt(k), Y += "$" === z || "%" === z ? i : z;
                        }e = Y;
                    }if (O = j.length) for (k = 0; k < O; k++) {
                        e = e.replace(b, j[k]);
                    }
                }return e;
            }var s,
                u,
                l,
                c = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|"[^"]*"|'[^']*'/g,
                d = /^(n|c|p|e)(\d*)$/i,
                f = /(\\.)|(['][^']*[']?)|(["][^"]*["]?)/g,
                m = /\,/g,
                p = "",
                h = ".",
                g = ",",
                y = "#",
                v = "0",
                b = "??",
                w = "en-US",
                M = {}.toString;ye.cultures["en-US"] = { name: w, numberFormat: { pattern: ["-n"], decimals: 2, ",": ",", ".": ".", groupSize: [3], percent: { pattern: ["-n %", "n %"], decimals: 2, ",": ",", ".": ".", groupSize: [3], symbol: "%" }, currency: { name: "US Dollar", abbr: "USD", pattern: ["($n)", "$n"], decimals: 2, ",": ",", ".": ".", groupSize: [3], symbol: "$" } }, calendars: { standard: { days: { names: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], namesAbbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], namesShort: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"] }, months: { names: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], namesAbbr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] }, AM: ["AM", "am", "AM"], PM: ["PM", "pm", "PM"], patterns: { d: "M/d/yyyy", D: "dddd, MMMM dd, yyyy", F: "dddd, MMMM dd, yyyy h:mm:ss tt", g: "M/d/yyyy h:mm tt", G: "M/d/yyyy h:mm:ss tt", m: "MMMM dd", M: "MMMM dd", s: "yyyy'-'MM'-'ddTHH':'mm':'ss", t: "h:mm tt", T: "h:mm:ss tt", u: "yyyy'-'MM'-'dd HH':'mm':'ss'Z'", y: "MMMM, yyyy", Y: "MMMM, yyyy" }, "/": "/", ":": ":", firstDay: 0, twoDigitYearMax: 2029 } } }, ye.culture = function (e) {
                var r,
                    o = ye.cultures;return e === n ? o.current : (r = t(e) || o[w], r.calendar = r.calendars.standard, o.current = r, n);
            }, ye.findCulture = t, ye.getCulture = r, ye.culture(w), s = function s(e, t, r, o) {
                var i,
                    a,
                    s,
                    u,
                    l,
                    c,
                    d = e.indexOf(o[h]),
                    f = o.groupSize.slice(),
                    m = f.shift();if (r = d !== -1 ? d : r + 1, i = e.substring(t, r), a = i.length, a >= m) {
                    for (s = a, u = []; s > -1;) {
                        if (l = i.substring(s - m, s), l && u.push(l), s -= m, c = f.shift(), m = c !== n ? c : m, 0 === m) {
                            u.push(i.substring(0, s));break;
                        }
                    }i = u.reverse().join(o[g]), e = e.substring(0, t) + i + e.substring(r);
                }return e;
            }, u = function u(e, t) {
                return t = t || 0, e = ("" + e).split("e"), e = Math.round(+(e[0] + "e" + (e[1] ? +e[1] + t : t))), e = ("" + e).split("e"), e = +(e[0] + "e" + (e[1] ? +e[1] - t : -t)), e.toFixed(Math.min(t, 20));
            }, l = function l(e, t, r) {
                if (t) {
                    if ("[object Date]" === M.call(e)) return o(e, t, r);if ((typeof e === "undefined" ? "undefined" : _typeof(e)) === _e) return a(e, t, r);
                }return e !== n ? e : "";
            }, ye.format = function (e) {
                var t = arguments;return e.replace(ze, function (e, n, r) {
                    var o = t[parseInt(n, 10) + 1];return l(o, r ? r.substring(1) : "");
                });
            }, ye._extractFormat = function (e) {
                return "{0:" === e.slice(0, 3) && (e = e.slice(3, e.length - 1)), e;
            }, ye._activeElement = function () {
                try {
                    return document.activeElement;
                } catch (e) {
                    return document.documentElement.activeElement;
                }
            }, ye._round = u, ye._outerWidth = function (t, n) {
                return e(t).outerWidth(n || !1) || 0;
            }, ye._outerHeight = function (t, n) {
                return e(t).outerHeight(n || !1) || 0;
            }, ye.toString = l;
        }(), function () {
            function t(e, t, n) {
                return !(e >= t && e <= n);
            }function r(e) {
                return e.charAt(0);
            }function o(t) {
                return e.map(t, r);
            }function i(e, t) {
                t || 23 !== e.getHours() || e.setHours(e.getHours() + 2);
            }function a(e) {
                for (var t = 0, n = e.length, r = []; t < n; t++) {
                    r[t] = (e[t] + "").toLowerCase();
                }return r;
            }function s(e) {
                var t,
                    n = {};for (t in e) {
                    n[t] = a(e[t]);
                }return n;
            }function u(e, r, a) {
                if (!e) return null;var u,
                    l,
                    c,
                    d,
                    f,
                    h,
                    g,
                    y,
                    v,
                    w,
                    M,
                    S,
                    T,
                    x = function x(e) {
                    for (var t = 0; r[F] === e;) {
                        t++, F++;
                    }return t > 0 && (F -= 1), t;
                },
                    k = function k(t) {
                    var n = b[t] || RegExp("^\\d{1," + t + "}"),
                        r = e.substr(R, t).match(n);return r ? (r = r[0], R += r.length, parseInt(r, 10)) : null;
                },
                    O = function O(t, n) {
                    for (var r, o, i, a = 0, s = t.length, u = 0, l = 0; a < s; a++) {
                        r = t[a], o = r.length, i = e.substr(R, o), n && (i = i.toLowerCase()), i == r && o > u && (u = o, l = a);
                    }return u ? (R += u, l + 1) : null;
                },
                    z = function z() {
                    var t = !1;return e.charAt(R) === r[F] && (R++, t = !0), t;
                },
                    D = a.calendars.standard,
                    C = null,
                    E = null,
                    H = null,
                    _ = null,
                    A = null,
                    N = null,
                    P = null,
                    F = 0,
                    R = 0,
                    U = !1,
                    I = new Date(),
                    $ = D.twoDigitYearMax || 2029,
                    L = I.getFullYear();for (r || (r = "d"), d = D.patterns[r], d && (r = d), r = r.split(""), c = r.length; F < c; F++) {
                    if (u = r[F], U) "'" === u ? U = !1 : z();else if ("d" === u) {
                        if (l = x("d"), D._lowerDays || (D._lowerDays = s(D.days)), null !== H && l > 2) continue;if (H = l < 3 ? k(2) : O(D._lowerDays[3 == l ? "namesAbbr" : "names"], !0), null === H || t(H, 1, 31)) return null;
                    } else if ("M" === u) {
                        if (l = x("M"), D._lowerMonths || (D._lowerMonths = s(D.months)), E = l < 3 ? k(2) : O(D._lowerMonths[3 == l ? "namesAbbr" : "names"], !0), null === E || t(E, 1, 12)) return null;E -= 1;
                    } else if ("y" === u) {
                        if (l = x("y"), C = k(l), null === C) return null;2 == l && ("string" == typeof $ && ($ = L + parseInt($, 10)), C = L - L % 100 + C, C > $ && (C -= 100));
                    } else if ("h" === u) {
                        if (x("h"), _ = k(2), 12 == _ && (_ = 0), null === _ || t(_, 0, 11)) return null;
                    } else if ("H" === u) {
                        if (x("H"), _ = k(2), null === _ || t(_, 0, 23)) return null;
                    } else if ("m" === u) {
                        if (x("m"), A = k(2), null === A || t(A, 0, 59)) return null;
                    } else if ("s" === u) {
                        if (x("s"), N = k(2), null === N || t(N, 0, 59)) return null;
                    } else if ("f" === u) {
                        if (l = x("f"), T = e.substr(R, l).match(b[3]), P = k(l), null !== P && (P = parseFloat("0." + T[0], 10), P = ye._round(P, 3), P *= 1e3), null === P || t(P, 0, 999)) return null;
                    } else if ("t" === u) {
                        if (l = x("t"), y = D.AM, v = D.PM, 1 === l && (y = o(y), v = o(v)), f = O(v), !f && !O(y)) return null;
                    } else if ("z" === u) {
                        if (h = !0, l = x("z"), "Z" === e.substr(R, 1)) {
                            z();continue;
                        }if (g = e.substr(R, 6).match(l > 2 ? p : m), !g) return null;if (g = g[0].split(":"), w = g[0], M = g[1], !M && w.length > 3 && (R = w.length - 2, M = w.substring(R), w = w.substring(0, R)), w = parseInt(w, 10), t(w, -12, 13)) return null;if (l > 2 && (M = parseInt(M, 10), isNaN(M) || t(M, 0, 59))) return null;
                    } else if ("'" === u) U = !0, z();else if (!z()) return null;
                }return S = null !== _ || null !== A || N || null, null === C && null === E && null === H && S ? (C = L, E = I.getMonth(), H = I.getDate()) : (null === C && (C = L), null === H && (H = 1)), f && _ < 12 && (_ += 12), h ? (w && (_ += -w), M && (A += -M), e = new Date(Date.UTC(C, E, H, _, A, N, P))) : (e = new Date(C, E, H, _, A, N, P), i(e, _)), C < 100 && e.setFullYear(C), e.getDate() !== H && h === n ? null : e;
            }function l(e) {
                var t = "-" === e.substr(0, 1) ? -1 : 1;return e = e.substring(1), e = 60 * parseInt(e.substr(0, 2), 10) + parseInt(e.substring(2), 10), t * e;
            }function c(e) {
                var t,
                    n,
                    r,
                    o = Te.max(y.length, v.length),
                    i = e.calendar.patterns,
                    a = [];for (r = 0; r < o; r++) {
                    for (t = y[r], n = 0; n < t.length; n++) {
                        a.push(i[t[n]]);
                    }a = a.concat(v[r]);
                }return a;
            }var d = /\u00A0/g,
                f = /[eE][\-+]?[0-9]+/,
                m = /[+|\-]\d{1,2}/,
                p = /[+|\-]\d{1,2}:?\d{2}/,
                h = /^\/Date\((.*?)\)\/$/,
                g = /[+-]\d*/,
                y = [[], ["G", "g", "F"], ["D", "d", "y", "m", "T", "t"]],
                v = [["yyyy-MM-ddTHH:mm:ss.fffffffzzz", "yyyy-MM-ddTHH:mm:ss.fffffff", "yyyy-MM-ddTHH:mm:ss.fffzzz", "yyyy-MM-ddTHH:mm:ss.fff", "ddd MMM dd yyyy HH:mm:ss", "yyyy-MM-ddTHH:mm:sszzz", "yyyy-MM-ddTHH:mmzzz", "yyyy-MM-ddTHH:mmzz", "yyyy-MM-ddTHH:mm:ss", "yyyy-MM-dd HH:mm:ss", "yyyy/MM/dd HH:mm:ss"], ["yyyy-MM-ddTHH:mm", "yyyy-MM-dd HH:mm", "yyyy/MM/dd HH:mm"], ["yyyy/MM/dd", "yyyy-MM-dd", "HH:mm:ss", "HH:mm"]],
                b = { 2: /^\d{1,2}/, 3: /^\d{1,3}/, 4: /^\d{4}/ },
                w = {}.toString;ye.parseDate = function (e, t, n) {
                var r, o, i, a;if ("[object Date]" === w.call(e)) return e;if (r = 0, o = null, e && 0 === e.indexOf("/D") && (o = h.exec(e))) return o = o[1], a = g.exec(o.substring(1)), o = new Date(parseInt(o, 10)), a && (a = l(a[0]), o = ye.timezone.apply(o, 0), o = ye.timezone.convert(o, 0, -1 * a)), o;for (n = ye.getCulture(n), t || (t = c(n)), t = we(t) ? t : [t], i = t.length; r < i; r++) {
                    if (o = u(e, t[r], n)) return o;
                }return o;
            }, ye.parseInt = function (e, t) {
                var n = ye.parseFloat(e, t);return n && (n = 0 | n), n;
            }, ye.parseFloat = function (e, t, n) {
                if (!e && 0 !== e) return null;if ((typeof e === "undefined" ? "undefined" : _typeof(e)) === _e) return e;e = "" + e, t = ye.getCulture(t);var r,
                    o,
                    i = t.numberFormat,
                    a = i.percent,
                    s = i.currency,
                    u = s.symbol,
                    l = a.symbol,
                    c = e.indexOf("-");return f.test(e) ? (e = parseFloat(e.replace(i["."], ".")), isNaN(e) && (e = null), e) : c > 0 ? null : (c = c > -1, e.indexOf(u) > -1 || n && n.toLowerCase().indexOf("c") > -1 ? (i = s, r = i.pattern[0].replace("$", u).split("n"), e.indexOf(r[0]) > -1 && e.indexOf(r[1]) > -1 && (e = e.replace(r[0], "").replace(r[1], ""), c = !0)) : e.indexOf(l) > -1 && (o = !0, i = a, u = l), e = e.replace("-", "").replace(u, "").replace(d, " ").split(i[","].replace(d, " ")).join("").replace(i["."], "."), e = parseFloat(e), isNaN(e) ? e = null : c && (e *= -1), e && o && (e /= 100), e);
            };
        }(), function () {
            var r, o, i, a, s, u, l;ke._scrollbar = n, ke.scrollbar = function (e) {
                if (isNaN(ke._scrollbar) || e) {
                    var t,
                        n = document.createElement("div");return n.style.cssText = "overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block", n.innerHTML = "&nbsp;", document.body.appendChild(n), ke._scrollbar = t = n.offsetWidth - n.scrollWidth, document.body.removeChild(n), t;
                }return ke._scrollbar;
            }, ke.isRtl = function (t) {
                return e(t).closest(".k-rtl").length > 0;
            }, r = document.createElement("table");try {
                r.innerHTML = "<tr><td></td></tr>", ke.tbodyInnerHtml = !0;
            } catch (d) {
                ke.tbodyInnerHtml = !1;
            }ke.touch = "ontouchstart" in t, ke.msPointers = t.MSPointerEvent, ke.pointers = t.PointerEvent, o = ke.transitions = !1, i = ke.transforms = !1, a = "HTMLElement" in t ? HTMLElement.prototype : [], ke.hasHW3D = "WebKitCSSMatrix" in t && "m11" in new t.WebKitCSSMatrix() || "MozPerspective" in document.documentElement.style || "msPerspective" in document.documentElement.style, be(["Moz", "webkit", "O", "ms"], function () {
                var e,
                    t = "" + this,
                    n = _typeof(r.style[t + "Transition"]) === He;if (n || _typeof(r.style[t + "Transform"]) === He) return e = t.toLowerCase(), i = { css: "ms" != e ? "-" + e + "-" : "", prefix: t, event: "o" === e || "webkit" === e ? e : "" }, n && (o = i, o.event = o.event ? o.event + "TransitionEnd" : "transitionend"), !1;
            }), r = null, ke.transforms = i, ke.transitions = o, ke.devicePixelRatio = t.devicePixelRatio === n ? 1 : t.devicePixelRatio;try {
                ke.screenWidth = t.outerWidth || t.screen ? t.screen.availWidth : t.innerWidth, ke.screenHeight = t.outerHeight || t.screen ? t.screen.availHeight : t.innerHeight;
            } catch (d) {
                ke.screenWidth = t.screen.availWidth, ke.screenHeight = t.screen.availHeight;
            }ke.detectOS = function (e) {
                var n,
                    r,
                    o = !1,
                    i = [],
                    a = !/mobile safari/i.test(e),
                    s = { wp: /(Windows Phone(?: OS)?)\s(\d+)\.(\d+(\.\d+)?)/, fire: /(Silk)\/(\d+)\.(\d+(\.\d+)?)/, android: /(Android|Android.*(?:Opera|Firefox).*?\/)\s*(\d+)\.(\d+(\.\d+)?)/, iphone: /(iPhone|iPod).*OS\s+(\d+)[\._]([\d\._]+)/, ipad: /(iPad).*OS\s+(\d+)[\._]([\d_]+)/, meego: /(MeeGo).+NokiaBrowser\/(\d+)\.([\d\._]+)/, webos: /(webOS)\/(\d+)\.(\d+(\.\d+)?)/, blackberry: /(BlackBerry|BB10).*?Version\/(\d+)\.(\d+(\.\d+)?)/, playbook: /(PlayBook).*?Tablet\s*OS\s*(\d+)\.(\d+(\.\d+)?)/, windows: /(MSIE)\s+(\d+)\.(\d+(\.\d+)?)/, tizen: /(tizen).*?Version\/(\d+)\.(\d+(\.\d+)?)/i, sailfish: /(sailfish).*rv:(\d+)\.(\d+(\.\d+)?).*firefox/i, ffos: /(Mobile).*rv:(\d+)\.(\d+(\.\d+)?).*Firefox/ },
                    u = { ios: /^i(phone|pad|pod)$/i, android: /^android|fire$/i, blackberry: /^blackberry|playbook/i, windows: /windows/, wp: /wp/, flat: /sailfish|ffos|tizen/i, meego: /meego/ },
                    l = { tablet: /playbook|ipad|fire/i },
                    d = { omini: /Opera\sMini/i, omobile: /Opera\sMobi/i, firefox: /Firefox|Fennec/i, mobilesafari: /version\/.*safari/i, ie: /MSIE|Windows\sPhone/i, chrome: /chrome|crios/i, webkit: /webkit/i };for (r in s) {
                    if (s.hasOwnProperty(r) && (i = e.match(s[r]))) {
                        if ("windows" == r && "plugins" in navigator) return !1;o = {}, o.device = r, o.tablet = c(r, l, !1), o.browser = c(e, d, "default"), o.name = c(r, u), o[o.name] = !0, o.majorVersion = i[2], o.minorVersion = i[3].replace("_", "."), n = o.minorVersion.replace(".", "").substr(0, 2), o.flatVersion = o.majorVersion + n + Array(3 - (n.length < 3 ? n.length : 2)).join("0"), o.cordova = _typeof(t.PhoneGap) !== Fe || _typeof(t.cordova) !== Fe, o.appMode = t.navigator.standalone || /file|local|wmapp/.test(t.location.protocol) || o.cordova, o.android && (ke.devicePixelRatio < 1.5 && o.flatVersion < 400 || a) && (ke.screenWidth > 800 || ke.screenHeight > 800) && (o.tablet = r);break;
                    }
                }return o;
            }, s = ke.mobileOS = ke.detectOS(navigator.userAgent), ke.wpDevicePixelRatio = s.wp ? screen.width / 320 : 0, ke.kineticScrollNeeded = s && (ke.touch || ke.msPointers || ke.pointers), ke.hasNativeScrolling = !1, (s.ios || s.android && s.majorVersion > 2 || s.wp) && (ke.hasNativeScrolling = s), ke.delayedClick = function () {
                if (ke.touch) {
                    if (s.ios) return !0;if (s.android) return !ke.browser.chrome || !(ke.browser.version < 32) && !(e("meta[name=viewport]").attr("content") || "").match(/user-scalable=no/i);
                }return !1;
            }, ke.mouseAndTouchPresent = ke.touch && !(ke.mobileOS.ios || ke.mobileOS.android), ke.detectBrowser = function (e) {
                var t,
                    n = !1,
                    r = [],
                    o = { edge: /(edge)[ \/]([\w.]+)/i, webkit: /(chrome)[ \/]([\w.]+)/i, safari: /(webkit)[ \/]([\w.]+)/i, opera: /(opera)(?:.*version|)[ \/]([\w.]+)/i, msie: /(msie\s|trident.*? rv:)([\w.]+)/i, mozilla: /(mozilla)(?:.*? rv:([\w.]+)|)/i };for (t in o) {
                    if (o.hasOwnProperty(t) && (r = e.match(o[t]))) {
                        n = {}, n[t] = !0, n[r[1].toLowerCase().split(" ")[0].split("/")[0]] = !0, n.version = parseInt(document.documentMode || r[2], 10);break;
                    }
                }return n;
            }, ke.browser = ke.detectBrowser(navigator.userAgent), ke.detectClipboardAccess = function () {
                var e = { copy: !!document.queryCommandSupported && document.queryCommandSupported("copy"), cut: !!document.queryCommandSupported && document.queryCommandSupported("cut"), paste: !!document.queryCommandSupported && document.queryCommandSupported("paste") };return ke.browser.chrome && (e.paste = !1, ke.browser.version >= 43 && (e.copy = !0, e.cut = !0)), e;
            }, ke.clipboard = ke.detectClipboardAccess(), ke.zoomLevel = function () {
                var e, n, r;try {
                    return e = ke.browser, n = 0, r = document.documentElement, e.msie && 11 == e.version && r.scrollHeight > r.clientHeight && !ke.touch && (n = ke.scrollbar()), ke.touch ? r.clientWidth / t.innerWidth : e.msie && e.version >= 10 ? ((top || t).document.documentElement.offsetWidth + n) / (top || t).innerWidth : 1;
                } catch (o) {
                    return 1;
                }
            }, ke.cssBorderSpacing = n !== document.documentElement.style.borderSpacing && !(ke.browser.msie && ke.browser.version < 8), function (t) {
                var n = "",
                    r = e(document.documentElement),
                    o = parseInt(t.version, 10);t.msie ? n = "ie" : t.mozilla ? n = "ff" : t.safari ? n = "safari" : t.webkit ? n = "webkit" : t.opera ? n = "opera" : t.edge && (n = "edge"), n && (n = "k-" + n + " k-" + n + o), ke.mobileOS && (n += " k-mobile"), r.addClass(n);
            }(ke.browser), ke.eventCapture = document.documentElement.addEventListener, u = document.createElement("input"), ke.placeholder = "placeholder" in u, ke.propertyChangeEvent = "onpropertychange" in u, ke.input = function () {
                for (var e, t = ["number", "date", "time", "month", "week", "datetime", "datetime-local"], n = t.length, r = "test", o = {}, i = 0; i < n; i++) {
                    e = t[i], u.setAttribute("type", e), u.value = r, o[e.replace("-", "")] = "text" !== u.type && u.value !== r;
                }return o;
            }(), u.style.cssText = "float:left;", ke.cssFloat = !!u.style.cssFloat, u = null, ke.stableSort = function () {
                var e,
                    t = 513,
                    n = [{ index: 0, field: "b" }];for (e = 1; e < t; e++) {
                    n.push({ index: e, field: "a" });
                }return n.sort(function (e, t) {
                    return e.field > t.field ? 1 : e.field < t.field ? -1 : 0;
                }), 1 === n[0].index;
            }(), ke.matchesSelector = a.webkitMatchesSelector || a.mozMatchesSelector || a.msMatchesSelector || a.oMatchesSelector || a.matchesSelector || a.matches || function (t) {
                for (var n = document.querySelectorAll ? (this.parentNode || document).querySelectorAll(t) || [] : e(t), r = n.length; r--;) {
                    if (n[r] == this) return !0;
                }return !1;
            }, ke.pushState = t.history && t.history.pushState, l = document.documentMode, ke.hashChange = "onhashchange" in t && !(ke.browser.msie && (!l || l <= 8)), ke.customElements = "registerElement" in t.document;
        }(), j = { left: { reverse: "right" }, right: { reverse: "left" }, down: { reverse: "up" }, up: { reverse: "down" }, top: { reverse: "bottom" }, bottom: { reverse: "top" }, "in": { reverse: "out" }, out: { reverse: "in" } }, B = {}, e.extend(B, { enabled: !0, Element: function Element(t) {
                this.element = e(t);
            }, promise: function promise(e, t) {
                e.is(":visible") || e.css({ display: e.data("olddisplay") || "block" }).css("display"), t.hide && e.data("olddisplay", e.css("display")).hide(), t.init && t.init(), t.completeCallback && t.completeCallback(e), e.dequeue();
            }, disable: function disable() {
                this.enabled = !1, this.promise = this.promiseShim;
            }, enable: function enable() {
                this.enabled = !0, this.promise = this.animatedPromise;
            } }), B.promiseShim = B.promise, "kendoAnimate" in e.fn || ve(e.fn, { kendoStop: function kendoStop(e, t) {
                return this.stop(e, t);
            }, kendoAnimate: function kendoAnimate(e, t, n, r) {
                return M(this, e, t, n, r);
            }, kendoAddClass: function kendoAddClass(e, t) {
                return ye.toggleClass(this, e, t, !0);
            }, kendoRemoveClass: function kendoRemoveClass(e, t) {
                return ye.toggleClass(this, e, t, !1);
            }, kendoToggleClass: function kendoToggleClass(e, t, n) {
                return ye.toggleClass(this, e, t, n);
            } }), J = /&/g, Y = /</g, q = /"/g, V = /'/g, G = />/g, K = function K(e) {
            return e.target;
        }, ke.touch && (K = function K(e) {
            var t = "originalEvent" in e ? e.originalEvent.changedTouches : "changedTouches" in e ? e.changedTouches : null;return t ? document.elementFromPoint(t[0].clientX, t[0].clientY) : e.target;
        }, be(["swipe", "swipeLeft", "swipeRight", "swipeUp", "swipeDown", "doubleTap", "tap"], function (t, n) {
            e.fn[n] = function (e) {
                return this.bind(n, e);
            };
        })), ke.touch ? ke.mobileOS ? (ke.mousedown = "touchstart", ke.mouseup = "touchend", ke.mousemove = "touchmove", ke.mousecancel = "touchcancel", ke.click = "touchend", ke.resize = "orientationchange") : (ke.mousedown = "mousedown touchstart", ke.mouseup = "mouseup touchend", ke.mousemove = "mousemove touchmove", ke.mousecancel = "mouseleave touchcancel", ke.click = "click", ke.resize = "resize") : ke.pointers ? (ke.mousemove = "pointermove", ke.mousedown = "pointerdown", ke.mouseup = "pointerup", ke.mousecancel = "pointercancel", ke.click = "pointerup", ke.resize = "orientationchange resize") : ke.msPointers ? (ke.mousemove = "MSPointerMove", ke.mousedown = "MSPointerDown", ke.mouseup = "MSPointerUp", ke.mousecancel = "MSPointerCancel", ke.click = "MSPointerUp", ke.resize = "orientationchange resize") : (ke.mousemove = "mousemove", ke.mousedown = "mousedown", ke.mouseup = "mouseup", ke.mousecancel = "mouseleave", ke.click = "click", ke.resize = "resize"), Q = function Q(e, t) {
            var n,
                r,
                o,
                i,
                a = t || "d",
                s = 1;for (r = 0, o = e.length; r < o; r++) {
                i = e[r], "" !== i && (n = i.indexOf("["), 0 !== n && (n == -1 ? i = "." + i : (s++, i = "." + i.substring(0, n) + " || {})" + i.substring(n))), s++, a += i + (r < o - 1 ? " || {})" : ")"));
            }return Array(s).join("(") + a;
        }, Z = /^([a-z]+:)?\/\//i, ve(ye, { widgets: [], _widgetRegisteredCallbacks: [], ui: ye.ui || {}, fx: ye.fx || b, effects: ye.effects || B, mobile: ye.mobile || {}, data: ye.data || {}, dataviz: ye.dataviz || {}, drawing: ye.drawing || {}, spreadsheet: { messages: {} }, keys: { INSERT: 45, DELETE: 46, BACKSPACE: 8, TAB: 9, ENTER: 13, ESC: 27, LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, END: 35, HOME: 36, SPACEBAR: 32, PAGEUP: 33, PAGEDOWN: 34, F2: 113, F10: 121, F12: 123, NUMPAD_PLUS: 107, NUMPAD_MINUS: 109, NUMPAD_DOT: 110 }, support: ye.support || ke, animate: ye.animate || M, ns: "", attr: function attr(e) {
                return "data-" + ye.ns + e;
            }, getShadows: a, wrap: s, deepExtend: u, getComputedStyles: m, webComponents: ye.webComponents || [], isScrollable: p, scrollLeft: h, size: g, toCamelCase: f, toHyphens: d, getOffset: ye.getOffset || y, parseEffects: ye.parseEffects || v, toggleClass: ye.toggleClass || S, directions: ye.directions || j, Observable: P, Class: r, Template: H, template: Me(H.compile, H), render: Me(H.render, H), stringify: Me(xe.stringify, xe), eventTarget: K, htmlEncode: T, isLocalUrl: function isLocalUrl(e) {
                return e && !Z.test(e);
            }, expr: function expr(e, t, n) {
                return e = e || "", (typeof t === "undefined" ? "undefined" : _typeof(t)) == He && (n = t, t = !1), n = n || "d", e && "[" !== e.charAt(0) && (e = "." + e), t ? (e = e.replace(/"([^.]*)\.([^"]*)"/g, '"$1_$DOT$_$2"'), e = e.replace(/'([^.]*)\.([^']*)'/g, "'$1_$DOT$_$2'"), e = Q(e.split("."), n), e = e.replace(/_\$DOT\$_/g, ".")) : e = n + e, e;
            }, getter: function getter(e, t) {
                var n = e + t;return Re[n] = Re[n] || Function("d", "return " + ye.expr(e, t));
            }, setter: function setter(e) {
                return Ue[e] = Ue[e] || Function("d,value", ye.expr(e) + "=value");
            }, accessor: function accessor(e) {
                return { get: ye.getter(e), set: ye.setter(e) };
            }, guid: function guid() {
                var e,
                    t,
                    n = "";for (e = 0; e < 32; e++) {
                    t = 16 * Te.random() | 0, 8 != e && 12 != e && 16 != e && 20 != e || (n += "-"), n += (12 == e ? 4 : 16 == e ? 3 & t | 8 : t).toString(16);
                }return n;
            }, roleSelector: function roleSelector(e) {
                return e.replace(/(\S+)/g, "[" + ye.attr("role") + "=$1],").slice(0, -1);
            }, directiveSelector: function directiveSelector(e) {
                var t,
                    n = e.split(" ");if (n) for (t = 0; t < n.length; t++) {
                    "view" != n[t] && (n[t] = n[t].replace(/(\w*)(view|bar|strip|over)$/, "$1-$2"));
                }return n.join(" ").replace(/(\S+)/g, "kendo-mobile-$1,").slice(0, -1);
            }, triggeredByInput: function triggeredByInput(e) {
                return (/^(label|input|textarea|select)$/i.test(e.target.tagName)
                );
            }, onWidgetRegistered: function onWidgetRegistered(e) {
                for (var t = 0, n = ye.widgets.length; t < n; t++) {
                    e(ye.widgets[t]);
                }ye._widgetRegisteredCallbacks.push(e);
            }, logToConsole: function logToConsole(e, r) {
                var o = t.console;!ye.suppressLog && n !== o && o.log && o[r || "log"](e);
            } }), X = P.extend({ init: function init(e, t) {
                var n,
                    r = this;r.element = ye.jQuery(e).handler(r), r.angular("init", t), P.fn.init.call(r), n = t ? t.dataSource : null, n && (t = ve({}, t, { dataSource: {} })), t = r.options = ve(!0, {}, r.options, t), n && (t.dataSource = n), r.element.attr(ye.attr("role")) || r.element.attr(ye.attr("role"), (t.name || "").toLowerCase()), r.element.data("kendo" + t.prefix + t.name, r), r.bind(r.events, t);
            }, events: [], options: { prefix: "" }, _hasBindingTarget: function _hasBindingTarget() {
                return !!this.element[0].kendoBindingTarget;
            }, _tabindex: function _tabindex(e) {
                e = e || this.wrapper;var t = this.element,
                    n = "tabindex",
                    r = e.attr(n) || t.attr(n);t.removeAttr(n), e.attr(n, isNaN(r) ? 0 : r);
            }, setOptions: function setOptions(t) {
                this._setEvents(t), e.extend(this.options, t);
            }, _setEvents: function _setEvents(e) {
                for (var t, n = this, r = 0, o = n.events.length; r < o; r++) {
                    t = n.events[r], n.options[t] && e[t] && n.unbind(t, n.options[t]);
                }n.bind(n.events, e);
            }, resize: function resize(e) {
                var t = this.getSize(),
                    n = this._size;(e || (t.width > 0 || t.height > 0) && (!n || t.width !== n.width || t.height !== n.height)) && (this._size = t, this._resize(t, e), this.trigger("resize", t));
            }, getSize: function getSize() {
                return ye.dimensions(this.element);
            }, size: function size(e) {
                return e ? (this.setSize(e), n) : this.getSize();
            }, setSize: e.noop, _resize: e.noop, destroy: function destroy() {
                var e = this;e.element.removeData("kendo" + e.options.prefix + e.options.name), e.element.removeData("handler"), e.unbind();
            }, _destroy: function _destroy() {
                this.destroy();
            }, angular: function angular() {}, _muteAngularRebind: function _muteAngularRebind(e) {
                this._muteRebind = !0, e.call(this), this._muteRebind = !1;
            } }), ee = X.extend({ dataItems: function dataItems() {
                return this.dataSource.flatView();
            }, _angularItems: function _angularItems(t) {
                var n = this;n.angular(t, function () {
                    return { elements: n.items(), data: e.map(n.dataItems(), function (e) {
                            return { dataItem: e };
                        }) };
                });
            } }), ye.dimensions = function (e, t) {
            var n = e[0];return t && e.css(t), { width: n.offsetWidth, height: n.offsetHeight };
        }, ye.notify = Se, te = /template$/i, ne = /^\s*(?:\{(?:.|\r\n|\n)*\}|\[(?:.|\r\n|\n)*\])\s*$/, re = /^\{(\d+)(:[^\}]+)?\}|^\[[A-Za-z_]*\]$/, oe = /([A-Z])/g, ye.initWidget = function (r, o, i) {
            var a, s, u, l, c, d, f, m, p, h, g, y, v;if (i ? i.roles && (i = i.roles) : i = ye.ui.roles, r = r.nodeType ? r : r[0], d = r.getAttribute("data-" + ye.ns + "role")) {
                p = d.indexOf(".") === -1, u = p ? i[d] : ye.getter(d)(t), g = e(r).data(), y = u ? "kendo" + u.fn.options.prefix + u.fn.options.name : "", h = p ? RegExp("^kendo.*" + d + "$", "i") : RegExp("^" + y + "$", "i");for (v in g) {
                    if (v.match(h)) {
                        if (v !== y) return g[v];a = g[v];
                    }
                }if (u) {
                    for (m = x(r, "dataSource"), o = e.extend({}, k(r, u.fn.options), o), m && (o.dataSource = (typeof m === "undefined" ? "undefined" : _typeof(m)) === He ? ye.getter(m)(t) : m), l = 0, c = u.fn.events.length; l < c; l++) {
                        s = u.fn.events[l], f = x(r, s), f !== n && (o[s] = ye.getter(f)(t));
                    }return a ? e.isEmptyObject(o) || a.setOptions(o) : a = new u(r, o), a;
                }
            }
        }, ye.rolesFromNamespaces = function (e) {
            var t,
                n,
                r = [];for (e[0] || (e = [ye.ui, ye.dataviz.ui]), t = 0, n = e.length; t < n; t++) {
                r[t] = e[t].roles;
            }return ve.apply(null, [{}].concat(r.reverse()));
        }, ye.init = function (t) {
            var n = ye.rolesFromNamespaces(Ie.call(arguments, 1));e(t).find("[data-" + ye.ns + "role]").addBack().each(function () {
                ye.initWidget(this, {}, n);
            });
        }, ye.destroy = function (t) {
            e(t).find("[data-" + ye.ns + "role]").addBack().each(function () {
                var t,
                    n = e(this).data();for (t in n) {
                    0 === t.indexOf("kendo") && _typeof(n[t].destroy) === Ee && n[t].destroy();
                }
            });
        }, ye.resize = function (t, n) {
            var r,
                o = e(t).find("[data-" + ye.ns + "role]").addBack().filter(z);o.length && (r = e.makeArray(o), r.sort(O), e.each(r, function () {
                var t = ye.widgetInstance(e(this));t && t.resize(n);
            }));
        }, ye.parseOptions = k, ve(ye.ui, { Widget: X, DataBoundWidget: ee, roles: {}, progress: function progress(t, n) {
                var r,
                    o,
                    i,
                    a,
                    s = t.find(".k-loading-mask"),
                    u = ye.support,
                    l = u.browser;n ? s.length || (r = u.isRtl(t), o = r ? "right" : "left", a = t.scrollLeft(), i = l.webkit && r ? t[0].scrollWidth - t.width() - 2 * a : 0, s = e("<div class='k-loading-mask'><span class='k-loading-text'>" + ye.ui.progress.messages.loading + "</span><div class='k-loading-image'/><div class='k-loading-color'/></div>").width("100%").height("100%").css("top", t.scrollTop()).css(o, Math.abs(a) + i).prependTo(t)) : s && s.remove();
            }, plugin: function plugin(t, r, o) {
                var i,
                    a,
                    s,
                    u,
                    l = t.fn.options.name;for (r = r || ye.ui, o = o || "", r[l] = t, r.roles[l.toLowerCase()] = t, i = "getKendo" + o + l, l = "kendo" + o + l, a = { name: l, widget: t, prefix: o || "" }, ye.widgets.push(a), s = 0, u = ye._widgetRegisteredCallbacks.length; s < u; s++) {
                    ye._widgetRegisteredCallbacks[s](a);
                }e.fn[l] = function (r) {
                    var o,
                        i = this;return (typeof r === "undefined" ? "undefined" : _typeof(r)) === He ? (o = Ie.call(arguments, 1), this.each(function () {
                        var t,
                            a,
                            s = e.data(this, l);if (!s) throw Error(ye.format("Cannot call method '{0}' of {1} before it is initialized", r, l));if (t = s[r], (typeof t === "undefined" ? "undefined" : _typeof(t)) !== Ee) throw Error(ye.format("Cannot find method '{0}' of {1}", r, l));if (a = t.apply(s, o), a !== n) return i = a, !1;
                    })) : this.each(function () {
                        return new t(this, r);
                    }), i;
                }, e.fn[l].widget = t, e.fn[i] = function () {
                    return this.data(l);
                };
            } }), ye.ui.progress.messages = { loading: "Loading..." }, ie = { bind: function bind() {
                return this;
            }, nullObject: !0, options: {} }, ae = X.extend({ init: function init(e, t) {
                X.fn.init.call(this, e, t), this.element.autoApplyNS(), this.wrapper = this.element, this.element.addClass("km-widget");
            }, destroy: function destroy() {
                X.fn.destroy.call(this), this.element.kendoDestroy();
            }, options: { prefix: "Mobile" }, events: [], view: function view() {
                var e = this.element.closest(ye.roleSelector("view splitview modalview drawer"));return ye.widgetInstance(e, ye.mobile.ui) || ie;
            }, viewHasNativeScrolling: function viewHasNativeScrolling() {
                var e = this.view();return e && e.options.useNativeScrolling;
            }, container: function container() {
                var e = this.element.closest(ye.roleSelector("view layout modalview drawer splitview"));return ye.widgetInstance(e.eq(0), ye.mobile.ui) || ie;
            } }), ve(ye.mobile, { init: function init(e) {
                ye.init(e, ye.mobile.ui, ye.ui, ye.dataviz.ui);
            }, appLevelNativeScrolling: function appLevelNativeScrolling() {
                return ye.mobile.application && ye.mobile.application.options && ye.mobile.application.options.useNativeScrolling;
            }, roles: {}, ui: { Widget: ae, DataBoundWidget: ee.extend(ae.prototype), roles: {}, plugin: function plugin(e) {
                    ye.ui.plugin(e, ye.mobile.ui, "Mobile");
                } } }), u(ye.dataviz, { init: function init(e) {
                ye.init(e, ye.dataviz.ui);
            }, ui: { roles: {}, themes: {}, views: [], plugin: function plugin(e) {
                    ye.ui.plugin(e, ye.dataviz.ui);
                } }, roles: {} }), ye.touchScroller = function (t, n) {
            return n || (n = {}), n.useNative = !0, e(t).map(function (t, r) {
                return r = e(r), !(!ke.kineticScrollNeeded || !ye.mobile.ui.Scroller || r.data("kendoMobileScroller")) && (r.kendoMobileScroller(n), r.data("kendoMobileScroller"));
            })[0];
        }, ye.preventDefault = function (e) {
            e.preventDefault();
        }, ye.widgetInstance = function (e, n) {
            var r,
                o,
                i,
                a,
                s = e.data(ye.ns + "role"),
                u = [];if (s) {
                if ("content" === s && (s = "scroller"), n) {
                    if (n[0]) for (r = 0, o = n.length; r < o; r++) {
                        u.push(n[r].roles[s]);
                    } else u.push(n.roles[s]);
                } else u = [ye.ui.roles[s], ye.dataviz.ui.roles[s], ye.mobile.ui.roles[s]];for (s.indexOf(".") >= 0 && (u = [ye.getter(s)(t)]), r = 0, o = u.length; r < o; r++) {
                    if (i = u[r], i && (a = e.data("kendo" + i.fn.options.prefix + i.fn.options.name))) return a;
                }
            }
        }, ye.onResize = function (n) {
            var r = n;return ke.mobileOS.android && (r = function r() {
                setTimeout(n, 600);
            }), e(t).on(ke.resize, r), r;
        }, ye.unbindResize = function (n) {
            e(t).off(ke.resize, n);
        }, ye.attrValue = function (e, t) {
            return e.data(ye.ns + t);
        }, ye.days = { Sunday: 0, Monday: 1, Tuesday: 2, Wednesday: 3, Thursday: 4, Friday: 5, Saturday: 6 }, e.extend(e.expr[":"], { kendoFocusable: function kendoFocusable(t) {
                var n = e.attr(t, "tabindex");return D(t, !isNaN(n) && n > -1);
            } }), se = ["mousedown", "mousemove", "mouseenter", "mouseleave", "mouseover", "mouseout", "mouseup", "click"], ue = "label, input, [data-rel=external]", le = { setupMouseMute: function setupMouseMute() {
                var t,
                    n = 0,
                    r = se.length,
                    o = document.documentElement;if (!le.mouseTrap && ke.eventCapture) for (le.mouseTrap = !0, le.bustClick = !1, le.captureMouse = !1, t = function t(_t2) {
                    le.captureMouse && ("click" === _t2.type ? le.bustClick && !e(_t2.target).is(ue) && (_t2.preventDefault(), _t2.stopPropagation()) : _t2.stopPropagation());
                }; n < r; n++) {
                    o.addEventListener(se[n], t, !0);
                }
            }, muteMouse: function muteMouse(e) {
                le.captureMouse = !0, e.data.bustClick && (le.bustClick = !0), clearTimeout(le.mouseTrapTimeoutID);
            }, unMuteMouse: function unMuteMouse() {
                clearTimeout(le.mouseTrapTimeoutID), le.mouseTrapTimeoutID = setTimeout(function () {
                    le.captureMouse = !1, le.bustClick = !1;
                }, 400);
            } }, ce = { down: "touchstart mousedown", move: "mousemove touchmove", up: "mouseup touchend touchcancel", cancel: "mouseleave touchcancel" }, ke.touch && (ke.mobileOS.ios || ke.mobileOS.android) ? ce = { down: "touchstart", move: "touchmove", up: "touchend touchcancel", cancel: "touchcancel" } : ke.pointers ? ce = { down: "pointerdown", move: "pointermove", up: "pointerup", cancel: "pointercancel pointerleave" } : ke.msPointers && (ce = { down: "MSPointerDown", move: "MSPointerMove", up: "MSPointerUp", cancel: "MSPointerCancel MSPointerLeave" }), !ke.msPointers || "onmspointerenter" in t || e.each({ MSPointerEnter: "MSPointerOver", MSPointerLeave: "MSPointerOut" }, function (t, n) {
            e.event.special[t] = { delegateType: n, bindType: n, handle: function handle(t) {
                    var r,
                        o = this,
                        i = t.relatedTarget,
                        a = t.handleObj;return i && (i === o || e.contains(o, i)) || (t.type = a.origType, r = a.handler.apply(this, arguments), t.type = n), r;
                } };
        }), de = function de(e) {
            return ce[e] || e;
        }, fe = /([^ ]+)/g, ye.applyEventMap = function (e, t) {
            return e = e.replace(fe, de), t && (e = e.replace(fe, "$1." + t)), e;
        }, me = e.fn.on, ve(!0, E, e), E.fn = E.prototype = new e(), E.fn.constructor = E, E.fn.init = function (t, n) {
            return n && n instanceof e && !(n instanceof E) && (n = E(n)), e.fn.init.call(this, t, n, pe);
        }, E.fn.init.prototype = E.fn, pe = E(document), ve(E.fn, { handler: function handler(e) {
                return this.data("handler", e), this;
            }, autoApplyNS: function autoApplyNS(e) {
                return this.data("kendoNS", e || ye.guid()), this;
            }, on: function on() {
                var e,
                    t,
                    n,
                    r,
                    o,
                    i,
                    a = this,
                    s = a.data("kendoNS");return 1 === arguments.length ? me.call(a, arguments[0]) : (e = a, t = Ie.call(arguments), _typeof(t[t.length - 1]) === Fe && t.pop(), n = t[t.length - 1], r = ye.applyEventMap(t[0], s), ke.mouseAndTouchPresent && r.search(/mouse|click/) > -1 && this[0] !== document.documentElement && (le.setupMouseMute(), o = 2 === t.length ? null : t[1], i = r.indexOf("click") > -1 && r.indexOf("touchend") > -1, me.call(this, { touchstart: le.muteMouse, touchend: le.unMuteMouse }, o, { bustClick: i })), (typeof n === "undefined" ? "undefined" : _typeof(n)) === He && (e = a.data("handler"), n = e[n], t[t.length - 1] = function (t) {
                    n.call(e, t);
                }), t[0] = r, me.apply(a, t), a);
            }, kendoDestroy: function kendoDestroy(e) {
                return e = e || this.data("kendoNS"), e && this.off("." + e), this;
            } }), ye.jQuery = E, ye.eventMap = ce, ye.timezone = function () {
            function e(e, t) {
                var n,
                    r,
                    o,
                    i = t[3],
                    a = t[4],
                    s = t[5],
                    u = t[8];return u || (t[8] = u = {}), u[e] ? u[e] : (isNaN(a) ? 0 === a.indexOf("last") ? (n = new Date(Date.UTC(e, c[i] + 1, 1, s[0] - 24, s[1], s[2], 0)), r = d[a.substr(4, 3)], o = n.getUTCDay(), n.setUTCDate(n.getUTCDate() + r - o - (r > o ? 7 : 0))) : a.indexOf(">=") >= 0 && (n = new Date(Date.UTC(e, c[i], a.substr(5), s[0], s[1], s[2], 0)), r = d[a.substr(0, 3)], o = n.getUTCDay(), n.setUTCDate(n.getUTCDate() + r - o + (r < o ? 7 : 0))) : n = new Date(Date.UTC(e, c[i], a, s[0], s[1], s[2], 0)), u[e] = n);
            }function t(t, n, r) {
                var o, i, a, s;return (n = n[r]) ? (a = new Date(t).getUTCFullYear(), n = jQuery.grep(n, function (e) {
                    var t = e[0],
                        n = e[1];return t <= a && (n >= a || t == a && "only" == n || "max" == n);
                }), n.push(t), n.sort(function (t, n) {
                    return "number" != typeof t && (t = +e(a, t)), "number" != typeof n && (n = +e(a, n)), t - n;
                }), s = n[jQuery.inArray(t, n) - 1] || n[n.length - 1], isNaN(s) ? s : null) : (o = r.split(":"), i = 0, o.length > 1 && (i = 60 * o[0] + +o[1]), [-1e6, "max", "-", "Jan", 1, [0, 0, 0], i, "-"]);
            }function n(e, t, n) {
                var r,
                    o,
                    i,
                    a = t[n];if ("string" == typeof a && (a = t[a]), !a) throw Error('Timezone "' + n + '" is either incorrect, or kendo.timezones.min.js is not included.');for (r = a.length - 1; r >= 0 && (o = a[r][3], !(o && e > o)); r--) {}if (i = a[r + 1], !i) throw Error('Timezone "' + n + '" not found on ' + e + ".");return i;
            }function r(e, r, o, i) {
                (typeof e === "undefined" ? "undefined" : _typeof(e)) != _e && (e = Date.UTC(e.getFullYear(), e.getMonth(), e.getDate(), e.getHours(), e.getMinutes(), e.getSeconds(), e.getMilliseconds()));var a = n(e, r, i);return { zone: a, rule: t(e, o, a[1]) };
            }function o(e, t) {
                var n, o, i;return "Etc/UTC" == t || "Etc/GMT" == t ? 0 : (n = r(e, this.zones, this.rules, t), o = n.zone, i = n.rule, ye.parseFloat(i ? o[0] - i[6] : o[0]));
            }function i(e, t) {
                var n = r(e, this.zones, this.rules, t),
                    o = n.zone,
                    i = n.rule,
                    a = o[2];return a.indexOf("/") >= 0 ? a.split("/")[i && +i[6] ? 1 : 0] : a.indexOf("%s") >= 0 ? a.replace("%s", i && "-" != i[7] ? i[7] : "") : a;
            }function a(e, t, n) {
                var r, o;return (typeof t === "undefined" ? "undefined" : _typeof(t)) == He && (t = this.offset(e, t)), (typeof n === "undefined" ? "undefined" : _typeof(n)) == He && (n = this.offset(e, n)), r = e.getTimezoneOffset(), e = new Date(e.getTime() + 6e4 * (t - n)), o = e.getTimezoneOffset(), new Date(e.getTime() + 6e4 * (o - r));
            }function s(e, t) {
                return this.convert(e, e.getTimezoneOffset(), t);
            }function u(e, t) {
                return this.convert(e, t, e.getTimezoneOffset());
            }function l(e) {
                return this.apply(new Date(e), "Etc/UTC");
            }var c = { Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5, Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11 },
                d = { Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6 };return { zones: {}, rules: {}, offset: o, convert: a, apply: s, remove: u, abbr: i, toLocalDate: l };
        }(), ye.date = function () {
            function e(e, t) {
                return 0 === t && 23 === e.getHours() && (e.setHours(e.getHours() + 2), !0);
            }function t(t, n, r) {
                var o = t.getHours();r = r || 1, n = (n - t.getDay() + 7 * r) % 7, t.setDate(t.getDate() + n), e(t, o);
            }function n(e, n, r) {
                return e = new Date(e), t(e, n, r), e;
            }function r(e) {
                return new Date(e.getFullYear(), e.getMonth(), 1);
            }function o(e) {
                var t = new Date(e.getFullYear(), e.getMonth() + 1, 0),
                    n = r(e),
                    o = Math.abs(t.getTimezoneOffset() - n.getTimezoneOffset());return o && t.setHours(n.getHours() + o / 60), t;
            }function i(t) {
                return t = new Date(t.getFullYear(), t.getMonth(), t.getDate(), 0, 0, 0), e(t, 0), t;
            }function a(e) {
                return Date.UTC(e.getFullYear(), e.getMonth(), e.getDate(), e.getHours(), e.getMinutes(), e.getSeconds(), e.getMilliseconds());
            }function s(e) {
                return e.getTime() - i(e);
            }function u(e, t, n) {
                var r,
                    o = s(t),
                    i = s(n);return !e || o == i || (t >= n && (n += y), r = s(e), o > r && (r += y), i < o && (i += y), r >= o && r <= i);
            }function l(e, t, n) {
                var r,
                    o = t.getTime(),
                    i = n.getTime();return o >= i && (i += y), r = e.getTime(), r >= o && r <= i;
            }function c(t, n) {
                var r = t.getHours();return t = new Date(t), d(t, n * y), e(t, r), t;
            }function d(e, t, n) {
                var r,
                    o = e.getTimezoneOffset();e.setTime(e.getTime() + t), n || (r = e.getTimezoneOffset() - o, e.setTime(e.getTime() + r * g));
            }function f(t, n) {
                return t = new Date(ye.date.getDate(t).getTime() + ye.date.getMilliseconds(n)), e(t, n.getHours()), t;
            }function m() {
                return i(new Date());
            }function p(e) {
                return i(e).getTime() == m().getTime();
            }function h(e) {
                var t = new Date(1980, 1, 1, 0, 0, 0);return e && t.setHours(e.getHours(), e.getMinutes(), e.getSeconds(), e.getMilliseconds()), t;
            }var g = 6e4,
                y = 864e5;return { adjustDST: e, dayOfWeek: n, setDayOfWeek: t, getDate: i, isInDateRange: l, isInTimeRange: u, isToday: p, nextDay: function nextDay(e) {
                    return c(e, 1);
                }, previousDay: function previousDay(e) {
                    return c(e, -1);
                }, toUtcTime: a, MS_PER_DAY: y, MS_PER_HOUR: 60 * g, MS_PER_MINUTE: g, setTime: d, setHours: f, addDays: c, today: m, toInvariantTime: h, firstDayOfMonth: r, lastDayOfMonth: o, getMilliseconds: s };
        }(), ye.stripWhitespace = function (e) {
            var t, n, r;if (document.createNodeIterator) for (t = document.createNodeIterator(e, NodeFilter.SHOW_TEXT, function (t) {
                return t.parentNode == e ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
            }, !1); t.nextNode();) {
                t.referenceNode && !t.referenceNode.textContent.trim() && t.referenceNode.parentNode.removeChild(t.referenceNode);
            } else for (n = 0; n < e.childNodes.length; n++) {
                r = e.childNodes[n], 3 != r.nodeType || /\S/.test(r.nodeValue) || (e.removeChild(r), n--), 1 == r.nodeType && ye.stripWhitespace(r);
            }
        }, he = t.requestAnimationFrame || t.webkitRequestAnimationFrame || t.mozRequestAnimationFrame || t.oRequestAnimationFrame || t.msRequestAnimationFrame || function (e) {
            setTimeout(e, 1e3 / 60);
        }, ye.animationFrame = function (e) {
            he.call(t, e);
        }, ge = [], ye.queueAnimation = function (e) {
            ge[ge.length] = e, 1 === ge.length && ye.runNextAnimation();
        }, ye.runNextAnimation = function () {
            ye.animationFrame(function () {
                ge[0] && (ge.shift()(), ge[0] && ye.runNextAnimation());
            });
        }, ye.parseQueryStringParams = function (e) {
            for (var t = e.split("?")[1] || "", n = {}, r = t.split(/&|=/), o = r.length, i = 0; i < o; i += 2) {
                "" !== r[i] && (n[decodeURIComponent(r[i])] = decodeURIComponent(r[i + 1]));
            }return n;
        }, ye.elementUnderCursor = function (e) {
            if (n !== e.x.client) return document.elementFromPoint(e.x.client, e.y.client);
        }, ye.wheelDeltaY = function (e) {
            var t,
                r = e.originalEvent,
                o = r.wheelDeltaY;return r.wheelDelta ? (o === n || o) && (t = r.wheelDelta) : r.detail && r.axis === r.VERTICAL_AXIS && (t = 10 * -r.detail), t;
        }, ye.throttle = function (e, t) {
            var r,
                o,
                i = 0;return !t || t <= 0 ? e : (o = function o() {
                function o() {
                    e.apply(a, u), i = +new Date();
                }var a = this,
                    s = +new Date() - i,
                    u = arguments;return i ? (r && clearTimeout(r), s > t ? o() : r = setTimeout(o, t - s), n) : o();
            }, o.cancel = function () {
                clearTimeout(r);
            }, o);
        }, ye.caret = function (t, r, o) {
            var i,
                a,
                s,
                u,
                l = r !== n;if (o === n && (o = r), t[0] && (t = t[0]), !l || !t.disabled) {
                try {
                    t.selectionStart !== n ? l ? (t.focus(), t.setSelectionRange(r, o)) : r = [t.selectionStart, t.selectionEnd] : document.selection && (e(t).is(":visible") && t.focus(), i = t.createTextRange(), l ? (i.collapse(!0), i.moveStart("character", r), i.moveEnd("character", o - r), i.select()) : (a = i.duplicate(), i.moveToBookmark(document.selection.createRange().getBookmark()), a.setEndPoint("EndToStart", i), s = a.text.length, u = s + i.text.length, r = [s, u]));
                } catch (c) {
                    r = [];
                }return r;
            }
        }, ye.compileMobileDirective = function (e, n) {
            var r = t.angular;return e.attr("data-" + ye.ns + "role", e[0].tagName.toLowerCase().replace("kendo-mobile-", "").replace("-", "")), r.element(e).injector().invoke(["$compile", function (t) {
                t(e)(n), /^\$(digest|apply)$/.test(n.$$phase) || n.$digest();
            }]), ye.widgetInstance(e, ye.mobile.ui);
        }, ye.antiForgeryTokens = function () {
            var t = {},
                r = e("meta[name=csrf-token],meta[name=_csrf]").attr("content"),
                o = e("meta[name=csrf-param],meta[name=_csrf_header]").attr("content");return e("input[name^='__RequestVerificationToken']").each(function () {
                t[this.name] = this.value;
            }), o !== n && r !== n && (t[o] = r), t;
        }, ye.cycleForm = function (e) {
            function t(e) {
                var t = ye.widgetInstance(e);t && t.focus ? t.focus() : e.focus();
            }var n = e.find("input, .k-widget").first(),
                r = e.find("button, .k-button").last();r.on("keydown", function (e) {
                e.keyCode != ye.keys.TAB || e.shiftKey || (e.preventDefault(), t(n));
            }), n.on("keydown", function (e) {
                e.keyCode == ye.keys.TAB && e.shiftKey && (e.preventDefault(), t(r));
            });
        }, function () {
            function n(t, n, r, o) {
                var i,
                    a,
                    s = e("<form>").attr({ action: r, method: "POST", target: o }),
                    u = ye.antiForgeryTokens();u.fileName = n, i = t.split(";base64,"), u.contentType = i[0].replace("data:", ""), u.base64 = i[1];for (a in u) {
                    u.hasOwnProperty(a) && e("<input>").attr({ value: u[a], name: a, type: "hidden" }).appendTo(s);
                }s.appendTo("body").submit().remove();
            }function r(e, t) {
                var n,
                    r,
                    o,
                    i,
                    a,
                    s = e;if ("string" == typeof e) {
                    for (n = e.split(";base64,"), r = n[0], o = atob(n[1]), i = new Uint8Array(o.length), a = 0; a < o.length; a++) {
                        i[a] = o.charCodeAt(a);
                    }s = new Blob([i.buffer], { type: r });
                }navigator.msSaveBlob(s, t);
            }function o(e, n) {
                t.Blob && e instanceof Blob && (e = URL.createObjectURL(e)), i.download = n, i.href = e;var r = document.createEvent("MouseEvents");r.initMouseEvent("click", !0, !1, t, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), i.dispatchEvent(r), setTimeout(function () {
                    URL.revokeObjectURL(e);
                });
            }var i = document.createElement("a"),
                a = "download" in i && !ye.support.browser.edge;ye.saveAs = function (e) {
                var t = n;e.forceProxy || (a ? t = o : navigator.msSaveBlob && (t = r)), t(e.dataURI, e.fileName, e.proxyURL, e.proxyTarget);
            };
        }(), ye.proxyModelSetters = function (e) {
            var t = {};return Object.keys(e || {}).forEach(function (n) {
                Object.defineProperty(t, n, { get: function get() {
                        return e[n];
                    }, set: function set(t) {
                        e[n] = t, e.dirty = !0;
                    } });
            }), t;
        };
    }(jQuery, window), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, t, n) {
    (n || t)();
});;!function (e, define) {
    define("kendo.data.min", ["kendo.core.min", "kendo.data.odata.min", "kendo.data.xml.min"], e);
}(function () {
    return function (e, t) {
        function r(e, t, r, n) {
            return function (i) {
                var a,
                    s = {};for (a in i) {
                    s[a] = i[a];
                }s.field = n ? r + "." + i.field : r, t == Oe && e._notifyChange && e._notifyChange(s), e.trigger(t, s);
            };
        }function n(t, r) {
            if (t === r) return !0;var i,
                a = e.type(t),
                s = e.type(r);if (a !== s) return !1;if ("date" === a) return t.getTime() === r.getTime();if ("object" !== a && "array" !== a) return !1;for (i in t) {
                if (!n(t[i], r[i])) return !1;
            }return !0;
        }function i(e, t) {
            var r, n;for (n in e) {
                if (r = e[n], he(r) && r.field && r.field === t) return r;if (r === t) return r;
            }return null;
        }function a(e) {
            this.data = e || [];
        }function s(e, r) {
            if (e) {
                var n = (typeof e === "undefined" ? "undefined" : _typeof(e)) === we ? { field: e, dir: r } : e,
                    i = ce(n) ? n : n !== t ? [n] : [];return ge(i, function (e) {
                    return !!e.dir;
                });
            }
        }function o(e) {
            var t,
                r,
                n,
                i,
                a = e.filters;if (a) for (t = 0, r = a.length; t < r; t++) {
                n = a[t], i = n.operator, i && (typeof i === "undefined" ? "undefined" : _typeof(i)) === we && (n.operator = X[i.toLowerCase()] || i), o(n);
            }
        }function u(e) {
            if (e && !fe(e)) return !ce(e) && e.filters || (e = { logic: "and", filters: ce(e) ? e : [e] }), o(e), e;
        }function l(e, t) {
            return !e.logic && !t.logic && e.field === t.field && e.value === t.value && e.operator === t.operator;
        }function d(e) {
            return e = e || {}, fe(e) ? { logic: "and", filters: [] } : u(e);
        }function h(e, t) {
            return t.logic || e.field > t.field ? 1 : e.field < t.field ? -1 : 0;
        }function f(e, t) {
            var r, n, i, a, s;if (e = d(e), t = d(t), e.logic !== t.logic) return !1;if (i = (e.filters || []).slice(), a = (t.filters || []).slice(), i.length !== a.length) return !1;for (i = i.sort(h), a = a.sort(h), s = 0; s < i.length; s++) {
                if (r = i[s], n = a[s], r.logic && n.logic) {
                    if (!f(r, n)) return !1;
                } else if (!l(r, n)) return !1;
            }return !0;
        }function c(e) {
            return ce(e) ? e : [e];
        }function g(e, r) {
            var n = (typeof e === "undefined" ? "undefined" : _typeof(e)) === we ? { field: e, dir: r } : e,
                i = ce(n) ? n : n !== t ? [n] : [];return B(i, function (e) {
                return { field: e.field, dir: e.dir || "asc", aggregates: e.aggregates };
            });
        }function p(e, t) {
            return e && e.getTime && t && t.getTime ? e.getTime() === t.getTime() : e === t;
        }function _(e, t, r, n, i, a) {
            var s, o, u, l, d;for (t = t || [], l = t.length, s = 0; s < l; s++) {
                o = t[s], u = o.aggregate, d = o.field, e[d] = e[d] || {}, a[d] = a[d] || {}, a[d][u] = a[d][u] || {}, e[d][u] = Y[u.toLowerCase()](e[d][u], r, me.accessor(d), n, i, a[d][u]);
            }
        }function v(e) {
            return "number" == typeof e && !isNaN(e);
        }function m(e) {
            return e && e.getTime;
        }function y(e) {
            var t,
                r = e.length,
                n = Array(r);for (t = 0; t < r; t++) {
                n[t] = e[t].toJSON();
            }return n;
        }function S(e, t, r, n, i) {
            var a,
                s,
                o,
                u,
                l,
                d = {};for (u = 0, l = e.length; u < l; u++) {
                a = e[u];for (s in t) {
                    o = i[s], o && o !== s && (d[o] || (d[o] = me.setter(o)), d[o](a, t[s](a)), delete a[s]);
                }
            }
        }function b(e, t, r, n, i) {
            var a, s, o, u, l;for (u = 0, l = e.length; u < l; u++) {
                a = e[u];for (s in t) {
                    a[s] = r._parse(s, t[s](a)), o = i[s], o && o !== s && delete a[o];
                }
            }
        }function w(e, t, r, n, i) {
            var a, s, o, u;for (s = 0, u = e.length; s < u; s++) {
                a = e[s], o = n[a.field], o && o != a.field && (a.field = o), a.value = r._parse(a.field, a.value), a.hasSubgroups ? w(a.items, t, r, n, i) : b(a.items, t, r, n, i);
            }
        }function k(e, t, r, n, i, a) {
            return function (s) {
                return s = e(s), s && !fe(n) && ("[object Array]" === We.call(s) || s instanceof Ye || (s = [s]), r(s, n, new t(), i, a)), s || [];
            };
        }function x(e, t, r, n) {
            for (var i, a, s, o = 0; t.length && n && (i = t[o], a = i.items, s = a.length, e && e.field === i.field && e.value === i.value ? (e.hasSubgroups && e.items.length ? x(e.items[e.items.length - 1], i.items, r, n) : (a = a.slice(r, r + n), e.items = e.items.concat(a)), t.splice(o--, 1)) : i.hasSubgroups && a.length ? (x(i, a, r, n), i.items.length || t.splice(o--, 1)) : (a = a.slice(r, r + n), i.items = a, i.items.length || t.splice(o--, 1)), 0 === a.length ? r -= s : (r = 0, n -= a.length), !(++o >= t.length));) {}o < t.length && t.splice(o, t.length - o);
        }function q(e) {
            var t,
                r,
                n,
                i,
                a,
                s = [];for (t = 0, r = e.length; t < r; t++) {
                if (a = e.at(t), a.hasSubgroups) s = s.concat(q(a.items));else for (n = a.items, i = 0; i < n.length; i++) {
                    s.push(n.at(i));
                }
            }return s;
        }function D(e, t) {
            var r, n, i;if (t) for (r = 0, n = e.length; r < n; r++) {
                i = e.at(r), i.hasSubgroups ? D(i.items, t) : i.items = new U(i.items, t);
            }
        }function C(e, t) {
            for (var r = 0, n = e.length; r < n; r++) {
                if (e[r].hasSubgroups) {
                    if (C(e[r].items, t)) return !0;
                } else if (t(e[r].items, e[r])) return !0;
            }
        }function O(e, t, r, n) {
            for (var i = 0; i < e.length && e[i].data !== t && !z(e[i].data, r, n); i++) {}
        }function z(e, t, r) {
            for (var n = 0, i = e.length; n < i; n++) {
                if (e[n] && e[n].hasSubgroups) return z(e[n].items, t, r);if (e[n] === t || e[n] === r) return e[n] = r, !0;
            }
        }function R(e, r, n, i, a) {
            var s, o, u, l;for (s = 0, o = e.length; s < o; s++) {
                if (u = e[s], u && !(u instanceof i)) if (u.hasSubgroups === t || a) {
                    for (l = 0; l < r.length; l++) {
                        if (r[l] === u) {
                            e[s] = r.at(l), O(n, r, u, e[s]);break;
                        }
                    }
                } else R(u.items, r, n, i, a);
            }
        }function P(e, t) {
            var r, n, i;for (r = 0, n = e.length; r < n; r++) {
                if (i = e.at(r), i.uid == t.uid) return e.splice(r, 1), i;
            }
        }function T(e, t) {
            return t ? A(e, function (e) {
                return e.uid && e.uid == t.uid || e[t.idField] === t.id && t.id !== t._defaultId;
            }) : -1;
        }function F(e, t) {
            return t ? A(e, function (e) {
                return e.uid == t.uid;
            }) : -1;
        }function A(e, t) {
            var r, n;for (r = 0, n = e.length; r < n; r++) {
                if (t(e[r])) return r;
            }return -1;
        }function I(e, t) {
            var r, n;return e && !fe(e) ? (r = e[t], n = he(r) ? r.from || r.field || t : e[t] || t, ye(n) ? t : n) : t;
        }function N(e, t) {
            var r,
                n,
                i,
                a = {};for (i in e) {
                "filters" !== i && (a[i] = e[i]);
            }if (e.filters) for (a.filters = [], r = 0, n = e.filters.length; r < n; r++) {
                a.filters[r] = N(e.filters[r], t);
            } else a.field = I(t.fields, a.field);return a;
        }function M(e, t) {
            var r,
                n,
                i,
                a,
                s,
                o = [];for (r = 0, n = e.length; r < n; r++) {
                i = {}, a = e[r];for (s in a) {
                    i[s] = a[s];
                }i.field = I(t.fields, i.field), i.aggregates && ce(i.aggregates) && (i.aggregates = M(i.aggregates, t)), o.push(i);
            }return o;
        }function j(t, r) {
            var n, i, a, s, o, u, l, d, h, f;for (t = e(t)[0], n = t.options, i = r[0], a = r[1], s = [], o = 0, u = n.length; o < u; o++) {
                h = {}, d = n[o], l = d.parentNode, l === t && (l = null), d.disabled || l && l.disabled || (l && (h.optgroup = l.label), h[i.field] = d.text, f = d.attributes.value, f = f && f.specified ? d.value : d.text, h[a.field] = f, s.push(h));
            }return s;
        }function L(t, r) {
            var n,
                i,
                a,
                s,
                o,
                u,
                l,
                d = e(t)[0].tBodies[0],
                h = d ? d.rows : [],
                f = r.length,
                c = [];for (n = 0, i = h.length; n < i; n++) {
                for (o = {}, l = !0, s = h[n].cells, a = 0; a < f; a++) {
                    u = s[a], "th" !== u.nodeName.toLowerCase() && (l = !1, o[r[a].field] = u.innerHTML);
                }l || c.push(o);
            }return c;
        }function G(e) {
            return function () {
                var t = this._data,
                    r = ne.fn[e].apply(this, Je.call(arguments));return this._data != t && this._attachBubbleHandlers(), r;
            };
        }function E(t, r) {
            function n(e, t) {
                return e.filter(t).add(e.find(t));
            }var i,
                a,
                s,
                o,
                u,
                l,
                d,
                h,
                f = e(t).children(),
                c = [],
                g = r[0].field,
                p = r[1] && r[1].field,
                _ = r[2] && r[2].field,
                v = r[3] && r[3].field;for (i = 0, a = f.length; i < a; i++) {
                s = { _loaded: !0 }, o = f.eq(i), l = o[0].firstChild, h = o.children(), t = h.filter("ul"), h = h.filter(":not(ul)"), u = o.attr("data-id"), u && (s.id = u), l && (s[g] = 3 == l.nodeType ? l.nodeValue : h.text()), p && (s[p] = n(h, "a").attr("href")), v && (s[v] = n(h, "img").attr("src")), _ && (d = n(h, ".k-sprite").prop("className"), s[_] = d && e.trim(d.replace("k-sprite", ""))), t.length && (s.items = E(t.eq(0), r)), "true" == o.attr("data-hasChildren") && (s.hasChildren = !0), c.push(s);
            }return c;
        }var B,
            U,
            H,
            J,
            V,
            W,
            Q,
            K,
            $,
            X,
            Y,
            Z,
            ee,
            te,
            re,
            ne,
            ie,
            ae,
            se,
            oe,
            ue,
            le = e.extend,
            de = e.proxy,
            he = e.isPlainObject,
            fe = e.isEmptyObject,
            ce = e.isArray,
            ge = e.grep,
            pe = e.ajax,
            _e = e.each,
            ve = e.noop,
            me = window.kendo,
            ye = me.isFunction,
            Se = me.Observable,
            be = me.Class,
            we = "string",
            ke = "function",
            xe = "create",
            qe = "read",
            De = "update",
            Ce = "destroy",
            Oe = "change",
            ze = "sync",
            Re = "get",
            Pe = "error",
            Te = "requestStart",
            Fe = "progress",
            Ae = "requestEnd",
            Ie = [xe, qe, De, Ce],
            Ne = function Ne(e) {
            return e;
        },
            Me = me.getter,
            je = me.stringify,
            Le = Math,
            Ge = [].push,
            Ee = [].join,
            Be = [].pop,
            Ue = [].splice,
            He = [].shift,
            Je = [].slice,
            Ve = [].unshift,
            We = {}.toString,
            Qe = me.support.stableSort,
            Ke = /^\/Date\((.*?)\)\/$/,
            $e = /(\r+|\n+)/g,
            Xe = /(?=['\\])/g,
            Ye = Se.extend({ init: function init(e, t) {
                var r = this;r.type = t || H, Se.fn.init.call(r), r.length = e.length, r.wrapAll(e, r);
            }, at: function at(e) {
                return this[e];
            }, toJSON: function toJSON() {
                var e,
                    t,
                    r = this.length,
                    n = Array(r);for (e = 0; e < r; e++) {
                    t = this[e], t instanceof H && (t = t.toJSON()), n[e] = t;
                }return n;
            }, parent: ve, wrapAll: function wrapAll(e, t) {
                var r,
                    n,
                    i = this,
                    a = function a() {
                    return i;
                };for (t = t || [], r = 0, n = e.length; r < n; r++) {
                    t[r] = i.wrap(e[r], a);
                }return t;
            }, wrap: function wrap(e, t) {
                var r,
                    n = this;return null !== e && "[object Object]" === We.call(e) && (r = e instanceof n.type || e instanceof W, r || (e = e instanceof H ? e.toJSON() : e, e = new n.type(e)), e.parent = t, e.bind(Oe, function (e) {
                    n.trigger(Oe, { field: e.field, node: e.node, index: e.index, items: e.items || [this], action: e.node ? e.action || "itemloaded" : "itemchange" });
                })), e;
            }, push: function push() {
                var e,
                    t = this.length,
                    r = this.wrapAll(arguments);return e = Ge.apply(this, r), this.trigger(Oe, { action: "add", index: t, items: r }), e;
            }, slice: Je, sort: [].sort, join: Ee, pop: function pop() {
                var e = this.length,
                    t = Be.apply(this);return e && this.trigger(Oe, { action: "remove", index: e - 1, items: [t] }), t;
            }, splice: function splice(e, t, r) {
                var n,
                    i,
                    a,
                    s = this.wrapAll(Je.call(arguments, 2));if (n = Ue.apply(this, [e, t].concat(s)), n.length) for (this.trigger(Oe, { action: "remove", index: e, items: n }), i = 0, a = n.length; i < a; i++) {
                    n[i] && n[i].children && n[i].unbind(Oe);
                }return r && this.trigger(Oe, { action: "add", index: e, items: s }), n;
            }, shift: function shift() {
                var e = this.length,
                    t = He.apply(this);return e && this.trigger(Oe, { action: "remove", index: 0, items: [t] }), t;
            }, unshift: function unshift() {
                var e,
                    t = this.wrapAll(arguments);return e = Ve.apply(this, t), this.trigger(Oe, { action: "add", index: 0, items: t }), e;
            }, indexOf: function indexOf(e) {
                var t,
                    r,
                    n = this;for (t = 0, r = n.length; t < r; t++) {
                    if (n[t] === e) return t;
                }return -1;
            }, forEach: function forEach(e) {
                for (var t = 0, r = this.length; t < r; t++) {
                    e(this[t], t, this);
                }
            }, map: function map(e) {
                for (var t = 0, r = [], n = this.length; t < n; t++) {
                    r[t] = e(this[t], t, this);
                }return r;
            }, reduce: function reduce(e) {
                var t,
                    r = 0,
                    n = this.length;for (2 == arguments.length ? t = arguments[1] : r < n && (t = this[r++]); r < n; r++) {
                    t = e(t, this[r], r, this);
                }return t;
            }, reduceRight: function reduceRight(e) {
                var t,
                    r = this.length - 1;for (2 == arguments.length ? t = arguments[1] : r > 0 && (t = this[r--]); r >= 0; r--) {
                    t = e(t, this[r], r, this);
                }return t;
            }, filter: function filter(e) {
                for (var t, r = 0, n = [], i = this.length; r < i; r++) {
                    t = this[r], e(t, r, this) && (n[n.length] = t);
                }return n;
            }, find: function find(e) {
                for (var t, r = 0, n = this.length; r < n; r++) {
                    if (t = this[r], e(t, r, this)) return t;
                }
            }, every: function every(e) {
                for (var t, r = 0, n = this.length; r < n; r++) {
                    if (t = this[r], !e(t, r, this)) return !1;
                }return !0;
            }, some: function some(e) {
                for (var t, r = 0, n = this.length; r < n; r++) {
                    if (t = this[r], e(t, r, this)) return !0;
                }return !1;
            }, remove: function remove(e) {
                var t = this.indexOf(e);t !== -1 && this.splice(t, 1);
            }, empty: function empty() {
                this.splice(0, this.length);
            } });"undefined" != typeof Symbol && Symbol.iterator && !Ye.prototype[Symbol.iterator] && (Ye.prototype[Symbol.iterator] = [][Symbol.iterator]), U = Ye.extend({ init: function init(e, t) {
                Se.fn.init.call(this), this.type = t || H;for (var r = 0; r < e.length; r++) {
                    this[r] = e[r];
                }this.length = r, this._parent = de(function () {
                    return this;
                }, this);
            }, at: function at(e) {
                var t = this[e];return t instanceof this.type ? t.parent = this._parent : t = this[e] = this.wrap(t, this._parent), t;
            } }), H = Se.extend({ init: function init(e) {
                var t,
                    r,
                    n = this,
                    i = function i() {
                    return n;
                };Se.fn.init.call(this), this._handlers = {};for (r in e) {
                    t = e[r], "object" == (typeof t === "undefined" ? "undefined" : _typeof(t)) && t && !t.getTime && "_" != r.charAt(0) && (t = n.wrap(t, r, i)), n[r] = t;
                }n.uid = me.guid();
            }, shouldSerialize: function shouldSerialize(e) {
                return this.hasOwnProperty(e) && "_handlers" !== e && "_events" !== e && _typeof(this[e]) !== ke && "uid" !== e;
            }, forEach: function forEach(e) {
                for (var t in this) {
                    this.shouldSerialize(t) && e(this[t], t);
                }
            }, toJSON: function toJSON() {
                var e,
                    t,
                    r = {};for (t in this) {
                    this.shouldSerialize(t) && (e = this[t], (e instanceof H || e instanceof Ye) && (e = e.toJSON()), r[t] = e);
                }return r;
            }, get: function get(e) {
                var t,
                    r = this;return r.trigger(Re, { field: e }), t = "this" === e ? r : me.getter(e, !0)(r);
            }, _set: function _set(e, t) {
                var r,
                    n,
                    i,
                    a = this,
                    s = e.indexOf(".") >= 0;if (s) for (r = e.split("."), n = ""; r.length > 1;) {
                    if (n += r.shift(), i = me.getter(n, !0)(a), i instanceof H) return i.set(r.join("."), t), s;n += ".";
                }return me.setter(e)(a, t), s;
            }, set: function set(e, t) {
                var r = this,
                    n = !1,
                    i = e.indexOf(".") >= 0,
                    a = me.getter(e, !0)(r);return a !== t && (a instanceof Se && this._handlers[e] && (this._handlers[e].get && a.unbind(Re, this._handlers[e].get), a.unbind(Oe, this._handlers[e].change)), n = r.trigger("set", { field: e, value: t }), n || (i || (t = r.wrap(t, e, function () {
                    return r;
                })), (!r._set(e, t) || e.indexOf("(") >= 0 || e.indexOf("[") >= 0) && r.trigger(Oe, { field: e }))), n;
            }, parent: ve, wrap: function wrap(e, t, n) {
                var i,
                    a,
                    s,
                    o,
                    u = this,
                    l = We.call(e);return null == e || "[object Object]" !== l && "[object Array]" !== l || (s = e instanceof Ye, o = e instanceof ne, "[object Object]" !== l || o || s ? ("[object Array]" === l || s || o) && (s || o || (e = new Ye(e)), a = r(u, Oe, t, !1), e.bind(Oe, a), u._handlers[t] = { change: a }) : (e instanceof H || (e = new H(e)), i = r(u, Re, t, !0), e.bind(Re, i), a = r(u, Oe, t, !0), e.bind(Oe, a), u._handlers[t] = { get: i, change: a }), e.parent = n), e;
            } }), J = { number: function number(e) {
                return me.parseFloat(e);
            }, date: function date(e) {
                return me.parseDate(e);
            }, "boolean": function boolean(e) {
                return (typeof e === "undefined" ? "undefined" : _typeof(e)) === we ? "true" === e.toLowerCase() : null != e ? !!e : e;
            }, string: function string(e) {
                return null != e ? e + "" : e;
            }, "default": function _default(e) {
                return e;
            } }, V = { string: "", number: 0, date: new Date(), "boolean": !1, "default": "" }, W = H.extend({ init: function init(r) {
                var n,
                    i,
                    a = this;if ((!r || e.isEmptyObject(r)) && (r = e.extend({}, a.defaults, r), a._initializers)) for (n = 0; n < a._initializers.length; n++) {
                    i = a._initializers[n], r[i] = a.defaults[i]();
                }H.fn.init.call(a, r), a.dirty = !1, a.idField && (a.id = a.get(a.idField), a.id === t && (a.id = a._defaultId));
            }, shouldSerialize: function shouldSerialize(e) {
                return H.fn.shouldSerialize.call(this, e) && "uid" !== e && !("id" !== this.idField && "id" === e) && "dirty" !== e && "_accessors" !== e;
            }, _parse: function _parse(e, t) {
                var r,
                    n = this,
                    a = e,
                    s = n.fields || {};return e = s[e], e || (e = i(s, a)), e && (r = e.parse, !r && e.type && (r = J[e.type.toLowerCase()])), r ? r(t) : t;
            }, _notifyChange: function _notifyChange(e) {
                var t = e.action;"add" != t && "remove" != t || (this.dirty = !0);
            }, editable: function editable(e) {
                return e = (this.fields || {})[e], !e || e.editable !== !1;
            }, set: function set(e, t, r) {
                var i = this,
                    a = i.dirty;i.editable(e) && (t = i._parse(e, t), n(t, i.get(e)) || (i.dirty = !0, H.fn.set.call(i, e, t, r) && !a && (i.dirty = a)));
            }, accept: function accept(e) {
                var t,
                    r,
                    n = this,
                    i = function i() {
                    return n;
                };for (t in e) {
                    r = e[t], "_" != t.charAt(0) && (r = n.wrap(e[t], t, i)), n._set(t, r);
                }n.idField && (n.id = n.get(n.idField)), n.dirty = !1;
            }, isNew: function isNew() {
                return this.id === this._defaultId;
            } }), W.define = function (e, r) {
            r === t && (r = e, e = W);var n,
                i,
                a,
                s,
                o,
                u,
                l,
                d,
                h = le({ defaults: {} }, r),
                f = {},
                c = h.id,
                g = [];if (c && (h.idField = c), h.id && delete h.id, c && (h.defaults[c] = h._defaultId = ""), "[object Array]" === We.call(h.fields)) {
                for (u = 0, l = h.fields.length; u < l; u++) {
                    a = h.fields[u], (typeof a === "undefined" ? "undefined" : _typeof(a)) === we ? f[a] = {} : a.field && (f[a.field] = a);
                }h.fields = f;
            }for (i in h.fields) {
                a = h.fields[i], s = a.type || "default", o = null, d = i, i = _typeof(a.field) === we ? a.field : i, a.nullable || (o = h.defaults[d !== i ? d : i] = a.defaultValue !== t ? a.defaultValue : V[s.toLowerCase()], "function" == typeof o && g.push(i)), r.id === i && (h._defaultId = o), h.defaults[d !== i ? d : i] = o, a.parse = a.parse || J[s];
            }return g.length > 0 && (h._initializers = g), n = e.extend(h), n.define = function (e) {
                return W.define(n, e);
            }, h.fields && (n.fields = h.fields, n.idField = h.idField), n;
        }, Q = { selector: function selector(e) {
                return ye(e) ? e : Me(e);
            }, compare: function compare(e) {
                var t = this.selector(e);return function (e, r) {
                    return e = t(e), r = t(r), null == e && null == r ? 0 : null == e ? -1 : null == r ? 1 : e.localeCompare ? e.localeCompare(r) : e > r ? 1 : e < r ? -1 : 0;
                };
            }, create: function create(e) {
                var t = e.compare || this.compare(e.field);return "desc" == e.dir ? function (e, r) {
                    return t(r, e, !0);
                } : t;
            }, combine: function combine(e) {
                return function (t, r) {
                    var n,
                        i,
                        a = e[0](t, r);for (n = 1, i = e.length; n < i; n++) {
                        a = a || e[n](t, r);
                    }return a;
                };
            } }, K = le({}, Q, { asc: function asc(e) {
                var t = this.selector(e);return function (e, r) {
                    var n = t(e),
                        i = t(r);return n && n.getTime && i && i.getTime && (n = n.getTime(), i = i.getTime()), n === i ? e.__position - r.__position : null == n ? -1 : null == i ? 1 : n.localeCompare ? n.localeCompare(i) : n > i ? 1 : -1;
                };
            }, desc: function desc(e) {
                var t = this.selector(e);return function (e, r) {
                    var n = t(e),
                        i = t(r);return n && n.getTime && i && i.getTime && (n = n.getTime(), i = i.getTime()), n === i ? e.__position - r.__position : null == n ? 1 : null == i ? -1 : i.localeCompare ? i.localeCompare(n) : n < i ? 1 : -1;
                };
            }, create: function create(e) {
                return this[e.dir](e.field);
            } }), B = function B(e, t) {
            var r,
                n = e.length,
                i = Array(n);for (r = 0; r < n; r++) {
                i[r] = t(e[r], r, e);
            }return i;
        }, $ = function () {
            function e(e) {
                return e.replace(Xe, "\\").replace($e, "");
            }function t(t, r, n, i) {
                var a;return null != n && ((typeof n === "undefined" ? "undefined" : _typeof(n)) === we && (n = e(n), a = Ke.exec(n), a ? n = new Date(+a[1]) : i ? (n = "'" + n.toLowerCase() + "'", r = "((" + r + " || '')+'').toLowerCase()") : n = "'" + n + "'"), n.getTime && (r = "(" + r + "&&" + r + ".getTime?" + r + ".getTime():" + r + ")", n = n.getTime())), r + " " + t + " " + n;
            }return { quote: function quote(t) {
                    return t && t.getTime ? "new Date(" + t.getTime() + ")" : "string" == typeof t ? "'" + e(t) + "'" : "" + t;
                }, eq: function eq(e, r, n) {
                    return t("==", e, r, n);
                }, neq: function neq(e, r, n) {
                    return t("!=", e, r, n);
                }, gt: function gt(e, r, n) {
                    return t(">", e, r, n);
                }, gte: function gte(e, r, n) {
                    return t(">=", e, r, n);
                }, lt: function lt(e, r, n) {
                    return t("<", e, r, n);
                }, lte: function lte(e, r, n) {
                    return t("<=", e, r, n);
                }, startswith: function startswith(t, r, n) {
                    return n && (t = "(" + t + " || '').toLowerCase()", r && (r = r.toLowerCase())), r && (r = e(r)), t + ".lastIndexOf('" + r + "', 0) == 0";
                }, doesnotstartwith: function doesnotstartwith(t, r, n) {
                    return n && (t = "(" + t + " || '').toLowerCase()", r && (r = r.toLowerCase())), r && (r = e(r)), t + ".lastIndexOf('" + r + "', 0) == -1";
                }, endswith: function endswith(t, r, n) {
                    return n && (t = "(" + t + " || '').toLowerCase()", r && (r = r.toLowerCase())), r && (r = e(r)), t + ".indexOf('" + r + "', " + t + ".length - " + (r || "").length + ") >= 0";
                }, doesnotendwith: function doesnotendwith(t, r, n) {
                    return n && (t = "(" + t + " || '').toLowerCase()", r && (r = r.toLowerCase())), r && (r = e(r)), t + ".indexOf('" + r + "', " + t + ".length - " + (r || "").length + ") < 0";
                }, contains: function contains(t, r, n) {
                    return n && (t = "(" + t + " || '').toLowerCase()", r && (r = r.toLowerCase())), r && (r = e(r)), t + ".indexOf('" + r + "') >= 0";
                }, doesnotcontain: function doesnotcontain(t, r, n) {
                    return n && (t = "(" + t + " || '').toLowerCase()", r && (r = r.toLowerCase())), r && (r = e(r)), t + ".indexOf('" + r + "') == -1";
                }, isempty: function isempty(e) {
                    return e + " === ''";
                }, isnotempty: function isnotempty(e) {
                    return e + " !== ''";
                }, isnull: function isnull(e) {
                    return "(" + e + " === null || " + e + " === undefined)";
                }, isnotnull: function isnotnull(e) {
                    return "(" + e + " !== null && " + e + " !== undefined)";
                } };
        }(), a.filterExpr = function (e) {
            var r,
                n,
                i,
                s,
                o,
                u,
                l = [],
                d = { and: " && ", or: " || " },
                h = [],
                f = [],
                c = e.filters;for (r = 0, n = c.length; r < n; r++) {
                i = c[r], o = i.field, u = i.operator, i.filters ? (s = a.filterExpr(i), i = s.expression.replace(/__o\[(\d+)\]/g, function (e, t) {
                    return t = +t, "__o[" + (f.length + t) + "]";
                }).replace(/__f\[(\d+)\]/g, function (e, t) {
                    return t = +t, "__f[" + (h.length + t) + "]";
                }), f.push.apply(f, s.operators), h.push.apply(h, s.fields)) : ((typeof o === "undefined" ? "undefined" : _typeof(o)) === ke ? (s = "__f[" + h.length + "](d)", h.push(o)) : s = me.expr(o), (typeof u === "undefined" ? "undefined" : _typeof(u)) === ke ? (i = "__o[" + f.length + "](" + s + ", " + $.quote(i.value) + ")", f.push(u)) : i = $[(u || "eq").toLowerCase()](s, i.value, i.ignoreCase === t || i.ignoreCase)), l.push(i);
            }return { expression: "(" + l.join(d[e.logic]) + ")", fields: h, operators: f };
        }, X = { "==": "eq", equals: "eq", isequalto: "eq", equalto: "eq", equal: "eq", "!=": "neq", ne: "neq", notequals: "neq", isnotequalto: "neq", notequalto: "neq", notequal: "neq", "<": "lt", islessthan: "lt", lessthan: "lt", less: "lt", "<=": "lte", le: "lte", islessthanorequalto: "lte", lessthanequal: "lte", ">": "gt", isgreaterthan: "gt", greaterthan: "gt", greater: "gt", ">=": "gte", isgreaterthanorequalto: "gte", greaterthanequal: "gte", ge: "gte", notsubstringof: "doesnotcontain", isnull: "isnull", isempty: "isempty", isnotempty: "isnotempty" }, a.normalizeFilter = u, a.compareFilters = f, a.prototype = { toArray: function toArray() {
                return this.data;
            }, range: function range(e, t) {
                return new a(this.data.slice(e, e + t));
            }, skip: function skip(e) {
                return new a(this.data.slice(e));
            }, take: function take(e) {
                return new a(this.data.slice(0, e));
            }, select: function select(e) {
                return new a(B(this.data, e));
            }, order: function order(e, t) {
                var r = { dir: t };return e && (e.compare ? r.compare = e.compare : r.field = e), new a(this.data.slice(0).sort(Q.create(r)));
            }, orderBy: function orderBy(e) {
                return this.order(e, "asc");
            }, orderByDescending: function orderByDescending(e) {
                return this.order(e, "desc");
            }, sort: function sort(e, t, r) {
                var n,
                    i,
                    a = s(e, t),
                    o = [];if (r = r || Q, a.length) {
                    for (n = 0, i = a.length; n < i; n++) {
                        o.push(r.create(a[n]));
                    }return this.orderBy({ compare: r.combine(o) });
                }return this;
            }, filter: function filter(e) {
                var t,
                    r,
                    n,
                    i,
                    s,
                    o,
                    l,
                    d,
                    h = this.data,
                    f = [];if (e = u(e), !e || 0 === e.filters.length) return this;for (i = a.filterExpr(e), o = i.fields, l = i.operators, s = d = Function("d, __f, __o", "return " + i.expression), (o.length || l.length) && (d = function d(e) {
                    return s(e, o, l);
                }), t = 0, n = h.length; t < n; t++) {
                    r = h[t], d(r) && f.push(r);
                }return new a(f);
            }, group: function group(e, t) {
                e = g(e || []), t = t || this.data;var r,
                    n = this,
                    i = new a(n.data);return e.length > 0 && (r = e[0], i = i.groupBy(r).select(function (n) {
                    var i = new a(t).filter([{ field: n.field, operator: "eq", value: n.value, ignoreCase: !1 }]);return { field: n.field, value: n.value, items: e.length > 1 ? new a(n.items).group(e.slice(1), i.toArray()).toArray() : n.items, hasSubgroups: e.length > 1, aggregates: i.aggregate(r.aggregates) };
                })), i;
            }, groupBy: function groupBy(e) {
                if (fe(e) || !this.data.length) return new a([]);var t,
                    r,
                    n,
                    i,
                    s = e.field,
                    o = this._sortForGrouping(s, e.dir || "asc"),
                    u = me.accessor(s),
                    l = u.get(o[0], s),
                    d = { field: s, value: l, items: [] },
                    h = [d];for (n = 0, i = o.length; n < i; n++) {
                    t = o[n], r = u.get(t, s), p(l, r) || (l = r, d = { field: s, value: l, items: [] }, h.push(d)), d.items.push(t);
                }return new a(h);
            }, _sortForGrouping: function _sortForGrouping(e, t) {
                var r,
                    n,
                    i = this.data;if (!Qe) {
                    for (r = 0, n = i.length; r < n; r++) {
                        i[r].__position = r;
                    }for (i = new a(i).sort(e, t, K).toArray(), r = 0, n = i.length; r < n; r++) {
                        delete i[r].__position;
                    }return i;
                }return this.sort(e, t).toArray();
            }, aggregate: function aggregate(e) {
                var t,
                    r,
                    n = {},
                    i = {};if (e && e.length) for (t = 0, r = this.data.length; t < r; t++) {
                    _(n, e, this.data[t], t, r, i);
                }return n;
            } }, Y = { sum: function sum(e, t, r) {
                var n = r.get(t);return v(e) ? v(n) && (e += n) : e = n, e;
            }, count: function count(e) {
                return (e || 0) + 1;
            }, average: function average(e, r, n, i, a, s) {
                var o = n.get(r);return s.count === t && (s.count = 0), v(e) ? v(o) && (e += o) : e = o, v(o) && s.count++, i == a - 1 && v(e) && (e /= s.count), e;
            }, max: function max(e, t, r) {
                var n = r.get(t);return v(e) || m(e) || (e = n), e < n && (v(n) || m(n)) && (e = n), e;
            }, min: function min(e, t, r) {
                var n = r.get(t);return v(e) || m(e) || (e = n), e > n && (v(n) || m(n)) && (e = n), e;
            } }, a.process = function (e, r) {
            r = r || {};var n,
                i = new a(e),
                o = r.group,
                u = g(o || []).concat(s(r.sort || [])),
                l = r.filterCallback,
                d = r.filter,
                h = r.skip,
                f = r.take;return d && (i = i.filter(d), l && (i = l(i)), n = i.toArray().length), u && (i = i.sort(u), o && (e = i.toArray())), h !== t && f !== t && (i = i.range(h, f)), o && (i = i.group(o, e)), { total: n, data: i.toArray() };
        }, Z = be.extend({ init: function init(e) {
                this.data = e.data;
            }, read: function read(e) {
                e.success(this.data);
            }, update: function update(e) {
                e.success(e.data);
            }, create: function create(e) {
                e.success(e.data);
            }, destroy: function destroy(e) {
                e.success(e.data);
            } }), ee = be.extend({ init: function init(e) {
                var t,
                    r = this;e = r.options = le({}, r.options, e), _e(Ie, function (t, r) {
                    _typeof(e[r]) === we && (e[r] = { url: e[r] });
                }), r.cache = e.cache ? te.create(e.cache) : { find: ve, add: ve }, t = e.parameterMap, ye(e.push) && (r.push = e.push), r.push || (r.push = Ne), r.parameterMap = ye(t) ? t : function (e) {
                    var r = {};return _e(e, function (e, n) {
                        e in t && (e = t[e], he(e) && (n = e.value(n), e = e.key)), r[e] = n;
                    }), r;
                };
            }, options: { parameterMap: Ne }, create: function create(e) {
                return pe(this.setup(e, xe));
            }, read: function read(r) {
                var n,
                    i,
                    a,
                    s = this,
                    o = s.cache;r = s.setup(r, qe), n = r.success || ve, i = r.error || ve, a = o.find(r.data), a !== t ? n(a) : (r.success = function (e) {
                    o.add(r.data, e), n(e);
                }, e.ajax(r));
            }, update: function update(e) {
                return pe(this.setup(e, De));
            }, destroy: function destroy(e) {
                return pe(this.setup(e, Ce));
            }, setup: function setup(e, t) {
                e = e || {};var r,
                    n = this,
                    i = n.options[t],
                    a = ye(i.data) ? i.data(e.data) : i.data;return e = le(!0, {}, i, e), r = le(!0, {}, a, e.data), e.data = n.parameterMap(r, t), ye(e.url) && (e.url = e.url(r)), e;
            } }), te = be.extend({ init: function init() {
                this._store = {};
            }, add: function add(e, r) {
                e !== t && (this._store[je(e)] = r);
            }, find: function find(e) {
                return this._store[je(e)];
            }, clear: function clear() {
                this._store = {};
            }, remove: function remove(e) {
                delete this._store[je(e)];
            } }), te.create = function (e) {
            var t = { inmemory: function inmemory() {
                    return new te();
                } };return he(e) && ye(e.find) ? e : e === !0 ? new te() : t[e]();
        }, re = be.extend({ init: function init(e) {
                var t,
                    r,
                    n,
                    i,
                    a,
                    s,
                    o,
                    u,
                    l,
                    d,
                    h,
                    f,
                    c,
                    g = this;e = e || {};for (t in e) {
                    r = e[t], g[t] = (typeof r === "undefined" ? "undefined" : _typeof(r)) === we ? Me(r) : r;
                }i = e.modelBase || W, he(g.model) && (g.model = n = i.define(g.model)), a = de(g.data, g), g._dataAccessFunction = a, g.model && (s = de(g.groups, g), o = de(g.serialize, g), u = {}, l = {}, d = {}, h = {}, f = !1, n = g.model, n.fields && (_e(n.fields, function (e, t) {
                    var r;c = e, he(t) && t.field ? c = t.field : (typeof t === "undefined" ? "undefined" : _typeof(t)) === we && (c = t), he(t) && t.from && (r = t.from), f = f || r && r !== e || c !== e, l[e] = Me(r || c), d[e] = Me(e), u[r || c] = e, h[e] = r || c;
                }), !e.serialize && f && (g.serialize = k(o, n, S, d, u, h))), g._dataAccessFunction = a, g.data = k(a, n, b, l, u, h), g.groups = k(s, n, w, l, u, h));
            }, errors: function errors(e) {
                return e ? e.errors : null;
            }, parse: Ne, data: Ne, total: function total(e) {
                return e.length;
            }, groups: Ne, aggregates: function aggregates() {
                return {};
            }, serialize: function serialize(e) {
                return e;
            } }), ne = Se.extend({ init: function init(e) {
                var r,
                    n,
                    i,
                    a = this;e && (n = e.data), e = a.options = le({}, a.options, e), a._map = {}, a._prefetch = {}, a._data = [], a._pristineData = [], a._ranges = [], a._view = [], a._pristineTotal = 0, a._destroyed = [], a._pageSize = e.pageSize, a._page = e.page || (e.pageSize ? 1 : t), a._sort = s(e.sort), a._filter = u(e.filter), a._group = g(e.group), a._aggregate = e.aggregate, a._total = e.total, a._shouldDetachObservableParents = !0, Se.fn.init.call(a), a.transport = ie.create(e, n, a), ye(a.transport.push) && a.transport.push({ pushCreate: de(a._pushCreate, a), pushUpdate: de(a._pushUpdate, a), pushDestroy: de(a._pushDestroy, a) }), null != e.offlineStorage && ("string" == typeof e.offlineStorage ? (i = e.offlineStorage, a._storage = { getItem: function getItem() {
                        return JSON.parse(localStorage.getItem(i));
                    }, setItem: function setItem(e) {
                        localStorage.setItem(i, je(a.reader.serialize(e)));
                    } }) : a._storage = e.offlineStorage), a.reader = new me.data.readers[e.schema.type || "json"](e.schema), r = a.reader.model || {}, a._detachObservableParents(), a._data = a._observe(a._data), a._online = !0, a.bind(["push", Pe, Oe, Te, ze, Ae, Fe], e);
            }, options: { data: null, schema: { modelBase: W }, offlineStorage: null, serverSorting: !1, serverPaging: !1, serverFiltering: !1, serverGrouping: !1, serverAggregates: !1, batch: !1 }, clone: function clone() {
                return this;
            }, online: function online(r) {
                return r !== t ? this._online != r && (this._online = r, r) ? this.sync() : e.Deferred().resolve().promise() : this._online;
            }, offlineData: function offlineData(e) {
                return null == this.options.offlineStorage ? null : e !== t ? this._storage.setItem(e) : this._storage.getItem() || [];
            }, _isServerGrouped: function _isServerGrouped() {
                var e = this.group() || [];return this.options.serverGrouping && e.length;
            }, _pushCreate: function _pushCreate(e) {
                this._push(e, "pushCreate");
            }, _pushUpdate: function _pushUpdate(e) {
                this._push(e, "pushUpdate");
            }, _pushDestroy: function _pushDestroy(e) {
                this._push(e, "pushDestroy");
            }, _push: function _push(e, t) {
                var r = this._readData(e);r || (r = e), this[t](r);
            }, _flatData: function _flatData(e, t) {
                if (e) {
                    if (this._isServerGrouped()) return q(e);if (!t) for (var r = 0; r < e.length; r++) {
                        e.at(r);
                    }
                }return e;
            }, parent: ve, get: function get(e) {
                var t,
                    r,
                    n = this._flatData(this._data);for (t = 0, r = n.length; t < r; t++) {
                    if (n[t].id == e) return n[t];
                }
            }, getByUid: function getByUid(e) {
                var t,
                    r,
                    n = this._flatData(this._data);if (n) for (t = 0, r = n.length; t < r; t++) {
                    if (n[t].uid == e) return n[t];
                }
            }, indexOf: function indexOf(e) {
                return F(this._data, e);
            }, at: function at(e) {
                return this._data.at(e);
            }, data: function data(e) {
                var r,
                    n = this;if (e === t) {
                    if (n._data) for (r = 0; r < n._data.length; r++) {
                        n._data.at(r);
                    }return n._data;
                }n._detachObservableParents(), n._data = this._observe(e), n._pristineData = e.slice(0), n._storeData(), n._ranges = [], n.trigger("reset"), n._addRange(n._data), n._total = n._data.length, n._pristineTotal = n._total, n._process(n._data);
            }, view: function view(e) {
                return e === t ? this._view : (this._view = this._observeView(e), t);
            }, _observeView: function _observeView(e) {
                var t,
                    r = this;return R(e, r._data, r._ranges, r.reader.model || H, r._isServerGrouped()), t = new U(e, r.reader.model), t.parent = function () {
                    return r.parent();
                }, t;
            }, flatView: function flatView() {
                var e = this.group() || [];return e.length ? q(this._view) : this._view;
            }, add: function add(e) {
                return this.insert(this._data.length, e);
            }, _createNewModel: function _createNewModel(e) {
                return this.reader.model ? new this.reader.model(e) : e instanceof H ? e : new H(e);
            }, insert: function insert(e, t) {
                return t || (t = e, e = 0), t instanceof W || (t = this._createNewModel(t)), this._isServerGrouped() ? this._data.splice(e, 0, this._wrapInEmptyGroup(t)) : this._data.splice(e, 0, t), t;
            }, pushCreate: function pushCreate(e) {
                var t, r, n, i, a, s;ce(e) || (e = [e]), t = [], r = this.options.autoSync, this.options.autoSync = !1;try {
                    for (n = 0; n < e.length; n++) {
                        i = e[n], a = this.add(i), t.push(a), s = a.toJSON(), this._isServerGrouped() && (s = this._wrapInEmptyGroup(s)), this._pristineData.push(s);
                    }
                } finally {
                    this.options.autoSync = r;
                }t.length && this.trigger("push", { type: "create", items: t });
            }, pushUpdate: function pushUpdate(e) {
                var t, r, n, i, a;for (ce(e) || (e = [e]), t = [], r = 0; r < e.length; r++) {
                    n = e[r], i = this._createNewModel(n), a = this.get(i.id), a ? (t.push(a), a.accept(n), a.trigger(Oe), this._updatePristineForModel(a, n)) : this.pushCreate(n);
                }t.length && this.trigger("push", { type: "update", items: t });
            }, pushDestroy: function pushDestroy(e) {
                var t = this._removeItems(e);t.length && this.trigger("push", { type: "destroy", items: t });
            }, _removeItems: function _removeItems(e) {
                var t, r, n, i, a, s;ce(e) || (e = [e]), t = [], r = this.options.autoSync, this.options.autoSync = !1;try {
                    for (n = 0; n < e.length; n++) {
                        i = e[n], a = this._createNewModel(i), s = !1, this._eachItem(this._data, function (e) {
                            var r, n;for (r = 0; r < e.length; r++) {
                                if (n = e.at(r), n.id === a.id) {
                                    t.push(n), e.splice(r, 1), s = !0;break;
                                }
                            }
                        }), s && (this._removePristineForModel(a), this._destroyed.pop());
                    }
                } finally {
                    this.options.autoSync = r;
                }return t;
            }, remove: function remove(e) {
                var t,
                    r = this,
                    n = r._isServerGrouped();return this._eachItem(r._data, function (i) {
                    if (t = P(i, e), t && n) return t.isNew && t.isNew() || r._destroyed.push(t), !0;
                }), this._removeModelFromRanges(e), this._updateRangesLength(), e;
            }, destroyed: function destroyed() {
                return this._destroyed;
            }, created: function created() {
                var e,
                    t,
                    r = [],
                    n = this._flatData(this._data);for (e = 0, t = n.length; e < t; e++) {
                    n[e].isNew && n[e].isNew() && r.push(n[e]);
                }return r;
            }, updated: function updated() {
                var e,
                    t,
                    r = [],
                    n = this._flatData(this._data);for (e = 0, t = n.length; e < t; e++) {
                    n[e].isNew && !n[e].isNew() && n[e].dirty && r.push(n[e]);
                }return r;
            }, sync: function sync() {
                var t,
                    r = this,
                    n = [],
                    i = [],
                    a = r._destroyed,
                    s = e.Deferred().resolve().promise();if (r.online()) {
                    if (!r.reader.model) return s;n = r.created(), i = r.updated(), t = [], r.options.batch && r.transport.submit ? t = r._sendSubmit(n, i, a) : (t.push.apply(t, r._send("create", n)), t.push.apply(t, r._send("update", i)), t.push.apply(t, r._send("destroy", a))), s = e.when.apply(null, t).then(function () {
                        var e, t;for (e = 0, t = arguments.length; e < t; e++) {
                            arguments[e] && r._accept(arguments[e]);
                        }r._storeData(!0), r._change({ action: "sync" }), r.trigger(ze);
                    });
                } else r._storeData(!0), r._change({ action: "sync" });return s;
            }, cancelChanges: function cancelChanges(e) {
                var t = this;e instanceof me.data.Model ? t._cancelModel(e) : (t._destroyed = [], t._detachObservableParents(), t._data = t._observe(t._pristineData), t.options.serverPaging && (t._total = t._pristineTotal), t._ranges = [], t._addRange(t._data), t._change(), t._markOfflineUpdatesAsDirty());
            }, _markOfflineUpdatesAsDirty: function _markOfflineUpdatesAsDirty() {
                var e = this;null != e.options.offlineStorage && e._eachItem(e._data, function (e) {
                    var t, r;for (t = 0; t < e.length; t++) {
                        r = e.at(t), "update" != r.__state__ && "create" != r.__state__ || (r.dirty = !0);
                    }
                });
            }, hasChanges: function hasChanges() {
                var e,
                    t,
                    r = this._flatData(this._data);if (this._destroyed.length) return !0;for (e = 0, t = r.length; e < t; e++) {
                    if (r[e].isNew && r[e].isNew() || r[e].dirty) return !0;
                }return !1;
            }, _accept: function _accept(t) {
                var r,
                    n = this,
                    i = t.models,
                    a = t.response,
                    s = 0,
                    o = n._isServerGrouped(),
                    u = n._pristineData,
                    l = t.type;if (n.trigger(Ae, { response: a, type: l }), a && !fe(a)) {
                    if (a = n.reader.parse(a), n._handleCustomErrors(a)) return;a = n.reader.data(a), ce(a) || (a = [a]);
                } else a = e.map(i, function (e) {
                    return e.toJSON();
                });for ("destroy" === l && (n._destroyed = []), s = 0, r = i.length; s < r; s++) {
                    "destroy" !== l ? (i[s].accept(a[s]), "create" === l ? u.push(o ? n._wrapInEmptyGroup(i[s]) : a[s]) : "update" === l && n._updatePristineForModel(i[s], a[s])) : n._removePristineForModel(i[s]);
                }
            }, _updatePristineForModel: function _updatePristineForModel(e, t) {
                this._executeOnPristineForModel(e, function (e, r) {
                    me.deepExtend(r[e], t);
                });
            }, _executeOnPristineForModel: function _executeOnPristineForModel(e, t) {
                this._eachPristineItem(function (r) {
                    var n = T(r, e);if (n > -1) return t(n, r), !0;
                });
            }, _removePristineForModel: function _removePristineForModel(e) {
                this._executeOnPristineForModel(e, function (e, t) {
                    t.splice(e, 1);
                });
            }, _readData: function _readData(e) {
                var t = this._isServerGrouped() ? this.reader.groups : this.reader.data;return t.call(this.reader, e);
            }, _eachPristineItem: function _eachPristineItem(e) {
                this._eachItem(this._pristineData, e);
            }, _eachItem: function _eachItem(e, t) {
                e && e.length && (this._isServerGrouped() ? C(e, t) : t(e));
            }, _pristineForModel: function _pristineForModel(e) {
                var t,
                    r,
                    n = function n(_n2) {
                    if (r = T(_n2, e), r > -1) return t = _n2[r], !0;
                };return this._eachPristineItem(n), t;
            }, _cancelModel: function _cancelModel(e) {
                var t = this._pristineForModel(e);this._eachItem(this._data, function (r) {
                    var n = F(r, e);n >= 0 && (!t || e.isNew() && !t.__state__ ? r.splice(n, 1) : (r[n].accept(t), "update" == t.__state__ && (r[n].dirty = !0)));
                });
            }, _submit: function _submit(t, r) {
                var n = this;n.trigger(Te, { type: "submit" }), n.transport.submit(le({ success: function success(r, n) {
                        var i = e.grep(t, function (e) {
                            return e.type == n;
                        })[0];i && i.resolve({ response: r, models: i.models, type: n });
                    }, error: function error(e, r, i) {
                        for (var a = 0; a < t.length; a++) {
                            t[a].reject(e);
                        }n.error(e, r, i);
                    } }, r));
            }, _sendSubmit: function _sendSubmit(t, r, n) {
                var i = this,
                    a = [];return i.options.batch && (t.length && a.push(e.Deferred(function (e) {
                    e.type = "create", e.models = t;
                })), r.length && a.push(e.Deferred(function (e) {
                    e.type = "update", e.models = r;
                })), n.length && a.push(e.Deferred(function (e) {
                    e.type = "destroy", e.models = n;
                })), i._submit(a, { data: { created: i.reader.serialize(y(t)), updated: i.reader.serialize(y(r)), destroyed: i.reader.serialize(y(n)) } })), a;
            }, _promise: function _promise(t, r, n) {
                var i = this;return e.Deferred(function (e) {
                    i.trigger(Te, { type: n }), i.transport[n].call(i.transport, le({ success: function success(t) {
                            e.resolve({ response: t, models: r, type: n });
                        }, error: function error(t, r, n) {
                            e.reject(t), i.error(t, r, n);
                        } }, t));
                }).promise();
            }, _send: function _send(e, t) {
                var r,
                    n,
                    i = this,
                    a = [],
                    s = i.reader.serialize(y(t));if (i.options.batch) t.length && a.push(i._promise({ data: { models: s } }, t, e));else for (r = 0, n = t.length; r < n; r++) {
                    a.push(i._promise({ data: s[r] }, [t[r]], e));
                }return a;
            }, read: function read(t) {
                var r = this,
                    n = r._params(t),
                    i = e.Deferred();return r._queueRequest(n, function () {
                    var e = r.trigger(Te, { type: "read" });e ? (r._dequeueRequest(), i.resolve(e)) : (r.trigger(Fe), r._ranges = [], r.trigger("reset"), r.online() ? r.transport.read({ data: n, success: function success(e) {
                            r._ranges = [], r.success(e, n), i.resolve();
                        }, error: function error() {
                            var e = Je.call(arguments);r.error.apply(r, e), i.reject.apply(i, e);
                        } }) : null != r.options.offlineStorage && (r.success(r.offlineData(), n), i.resolve()));
                }), i.promise();
            }, _readAggregates: function _readAggregates(e) {
                return this.reader.aggregates(e);
            }, success: function success(e) {
                var r,
                    n,
                    i,
                    a,
                    s,
                    o,
                    u,
                    l,
                    d = this,
                    h = d.options;if (d.trigger(Ae, { response: e, type: "read" }), d.online()) {
                    if (e = d.reader.parse(e), d._handleCustomErrors(e)) return d._dequeueRequest(), t;d._total = d.reader.total(e), d._aggregate && h.serverAggregates && (d._aggregateResult = d._readAggregates(e)), e = d._readData(e), d._destroyed = [];
                } else {
                    for (e = d._readData(e), r = [], n = {}, i = d.reader.model, a = i ? i.idField : "id", s = 0; s < this._destroyed.length; s++) {
                        o = this._destroyed[s][a], n[o] = o;
                    }for (s = 0; s < e.length; s++) {
                        u = e[s], l = u.__state__, "destroy" == l ? n[u[a]] || this._destroyed.push(this._createNewModel(u)) : r.push(u);
                    }e = r, d._total = e.length;
                }d._pristineTotal = d._total, d._pristineData = e.slice(0), d._detachObservableParents(), d._data = d._observe(e), d._markOfflineUpdatesAsDirty(), d._storeData(), d._addRange(d._data), d._process(d._data), d._dequeueRequest();
            }, _detachObservableParents: function _detachObservableParents() {
                if (this._data && this._shouldDetachObservableParents) for (var e = 0; e < this._data.length; e++) {
                    this._data[e].parent && (this._data[e].parent = ve);
                }
            }, _storeData: function _storeData(e) {
                function t(e) {
                    var r,
                        n,
                        i,
                        a = [];for (r = 0; r < e.length; r++) {
                        n = e.at(r), i = n.toJSON(), s && n.items ? i.items = t(n.items) : (i.uid = n.uid, o && (n.isNew() ? i.__state__ = "create" : n.dirty && (i.__state__ = "update"))), a.push(i);
                    }return a;
                }var r,
                    n,
                    i,
                    a,
                    s = this._isServerGrouped(),
                    o = this.reader.model;if (null != this.options.offlineStorage) {
                    for (r = t(this._data), n = [], i = 0; i < this._destroyed.length; i++) {
                        a = this._destroyed[i].toJSON(), a.__state__ = "destroy", n.push(a);
                    }this.offlineData(r.concat(n)), e && (this._pristineData = this._readData(r));
                }
            }, _addRange: function _addRange(e) {
                var t = this,
                    r = t._skip || 0,
                    n = r + t._flatData(e, !0).length;t._ranges.push({ start: r, end: n, data: e, timestamp: new Date().getTime() }), t._ranges.sort(function (e, t) {
                    return e.start - t.start;
                });
            }, error: function error(e, t, r) {
                this._dequeueRequest(), this.trigger(Ae, {}), this.trigger(Pe, { xhr: e, status: t, errorThrown: r });
            }, _params: function _params(e) {
                var t = this,
                    r = le({ take: t.take(), skip: t.skip(), page: t.page(), pageSize: t.pageSize(), sort: t._sort, filter: t._filter, group: t._group, aggregate: t._aggregate }, e);return t.options.serverPaging || (delete r.take, delete r.skip, delete r.page, delete r.pageSize), t.options.serverGrouping ? t.reader.model && r.group && (r.group = M(r.group, t.reader.model)) : delete r.group, t.options.serverFiltering ? t.reader.model && r.filter && (r.filter = N(r.filter, t.reader.model)) : delete r.filter, t.options.serverSorting ? t.reader.model && r.sort && (r.sort = M(r.sort, t.reader.model)) : delete r.sort, t.options.serverAggregates ? t.reader.model && r.aggregate && (r.aggregate = M(r.aggregate, t.reader.model)) : delete r.aggregate, r;
            }, _queueRequest: function _queueRequest(e, r) {
                var n = this;n._requestInProgress ? n._pending = { callback: de(r, n), options: e } : (n._requestInProgress = !0, n._pending = t, r());
            }, _dequeueRequest: function _dequeueRequest() {
                var e = this;e._requestInProgress = !1, e._pending && e._queueRequest(e._pending.options, e._pending.callback);
            }, _handleCustomErrors: function _handleCustomErrors(e) {
                if (this.reader.errors) {
                    var t = this.reader.errors(e);if (t) return this.trigger(Pe, { xhr: null, status: "customerror", errorThrown: "custom error", errors: t }), !0;
                }return !1;
            }, _shouldWrap: function _shouldWrap(e) {
                var t = this.reader.model;return !(!t || !e.length) && !(e[0] instanceof t);
            }, _observe: function _observe(e) {
                var t,
                    r = this,
                    n = r.reader.model;return r._shouldDetachObservableParents = !0, e instanceof Ye ? (r._shouldDetachObservableParents = !1, r._shouldWrap(e) && (e.type = r.reader.model, e.wrapAll(e, e))) : (t = r.pageSize() && !r.options.serverPaging ? U : Ye, e = new t(e, r.reader.model), e.parent = function () {
                    return r.parent();
                }), r._isServerGrouped() && D(e, n), r._changeHandler && r._data && r._data instanceof Ye ? r._data.unbind(Oe, r._changeHandler) : r._changeHandler = de(r._change, r), e.bind(Oe, r._changeHandler);
            }, _updateTotalForAction: function _updateTotalForAction(e, t) {
                var r = this,
                    n = parseInt(r._total, 10);v(r._total) || (n = parseInt(r._pristineTotal, 10)), "add" === e ? n += t.length : "remove" === e ? n -= t.length : "itemchange" === e || "sync" === e || r.options.serverPaging ? "sync" === e && (n = r._pristineTotal = parseInt(r._total, 10)) : n = r._pristineTotal, r._total = n;
            }, _change: function _change(e) {
                var t,
                    r,
                    _n3,
                    i = this,
                    a = e ? e.action : "";if ("remove" === a) for (t = 0, r = e.items.length; t < r; t++) {
                    e.items[t].isNew && e.items[t].isNew() || i._destroyed.push(e.items[t]);
                }!i.options.autoSync || "add" !== a && "remove" !== a && "itemchange" !== a ? (i._updateTotalForAction(a, e ? e.items : []), i._process(i._data, e)) : (_n3 = function n(t) {
                    "sync" === t.action && (i.unbind("change", _n3), i._updateTotalForAction(a, e.items));
                }, i.first("change", _n3), i.sync());
            }, _calculateAggregates: function _calculateAggregates(e, t) {
                t = t || {};var r = new a(e),
                    n = t.aggregate,
                    i = t.filter;return i && (r = r.filter(i)), r.aggregate(n);
            }, _process: function _process(e, r) {
                var n,
                    i = this,
                    a = {};i.options.serverPaging !== !0 && (a.skip = i._skip, a.take = i._take || i._pageSize, a.skip === t && i._page !== t && i._pageSize !== t && (a.skip = (i._page - 1) * i._pageSize)), i.options.serverSorting !== !0 && (a.sort = i._sort), i.options.serverFiltering !== !0 && (a.filter = i._filter), i.options.serverGrouping !== !0 && (a.group = i._group), i.options.serverAggregates !== !0 && (a.aggregate = i._aggregate, i._aggregateResult = i._calculateAggregates(e, a)), n = i._queryProcess(e, a), i.view(n.data), n.total === t || i.options.serverFiltering || (i._total = n.total), r = r || {}, r.items = r.items || i._view, i.trigger(Oe, r);
            }, _queryProcess: function _queryProcess(e, t) {
                return a.process(e, t);
            }, _mergeState: function _mergeState(e) {
                var r = this;return e !== t && (r._pageSize = e.pageSize, r._page = e.page, r._sort = e.sort, r._filter = e.filter, r._group = e.group, r._aggregate = e.aggregate, r._skip = r._currentRangeStart = e.skip, r._take = e.take, r._skip === t && (r._skip = r._currentRangeStart = r.skip(), e.skip = r.skip()), r._take === t && r._pageSize !== t && (r._take = r._pageSize, e.take = r._take), e.sort && (r._sort = e.sort = s(e.sort)), e.filter && (r._filter = e.filter = u(e.filter)), e.group && (r._group = e.group = g(e.group)), e.aggregate && (r._aggregate = e.aggregate = c(e.aggregate))), e;
            }, query: function query(r) {
                var n,
                    i,
                    a = this.options.serverSorting || this.options.serverPaging || this.options.serverFiltering || this.options.serverGrouping || this.options.serverAggregates;return a || (this._data === t || 0 === this._data.length) && !this._destroyed.length ? this.read(this._mergeState(r)) : (i = this.trigger(Te, { type: "read" }), i || (this.trigger(Fe), n = this._queryProcess(this._data, this._mergeState(r)), this.options.serverFiltering || (this._total = n.total !== t ? n.total : this._data.length), this._aggregateResult = this._calculateAggregates(this._data, r), this.view(n.data), this.trigger(Ae, { type: "read" }), this.trigger(Oe, { items: n.data })), e.Deferred().resolve(i).promise());
            }, fetch: function fetch(e) {
                var t = this,
                    r = function r(_r2) {
                    _r2 !== !0 && ye(e) && e.call(t);
                };return this._query().then(r);
            }, _query: function _query(e) {
                var t = this;return t.query(le({}, { page: t.page(), pageSize: t.pageSize(), sort: t.sort(), filter: t.filter(), group: t.group(), aggregate: t.aggregate() }, e));
            }, next: function next(e) {
                var t = this,
                    r = t.page(),
                    n = t.total();if (e = e || {}, r && !(n && r + 1 > t.totalPages())) return t._skip = t._currentRangeStart = r * t.take(), r += 1, e.page = r, t._query(e), r;
            }, prev: function prev(e) {
                var t = this,
                    r = t.page();if (e = e || {}, r && 1 !== r) return t._skip = t._currentRangeStart = t._skip - t.take(), r -= 1, e.page = r, t._query(e), r;
            }, page: function page(e) {
                var r,
                    n = this;return e !== t ? (e = Le.max(Le.min(Le.max(e, 1), n.totalPages()), 1), n._query({ page: e }), t) : (r = n.skip(), r !== t ? Le.round((r || 0) / (n.take() || 1)) + 1 : t);
            }, pageSize: function pageSize(e) {
                var r = this;return e !== t ? (r._query({ pageSize: e, page: 1 }), t) : r.take();
            }, sort: function sort(e) {
                var r = this;return e !== t ? (r._query({ sort: e }), t) : r._sort;
            }, filter: function filter(e) {
                var r = this;return e === t ? r._filter : (r.trigger("reset"), r._query({ filter: e, page: 1 }), t);
            }, group: function group(e) {
                var r = this;return e !== t ? (r._query({ group: e }), t) : r._group;
            }, total: function total() {
                return parseInt(this._total || 0, 10);
            }, aggregate: function aggregate(e) {
                var r = this;return e !== t ? (r._query({ aggregate: e }), t) : r._aggregate;
            }, aggregates: function aggregates() {
                var e = this._aggregateResult;return fe(e) && (e = this._emptyAggregates(this.aggregate())), e;
            }, _emptyAggregates: function _emptyAggregates(e) {
                var t,
                    r,
                    n = {};if (!fe(e)) for (t = {}, ce(e) || (e = [e]), r = 0; r < e.length; r++) {
                    t[e[r].aggregate] = 0, n[e[r].field] = t;
                }return n;
            }, _wrapInEmptyGroup: function _wrapInEmptyGroup(e) {
                var t,
                    r,
                    n,
                    i,
                    a = this.group();for (n = a.length - 1, i = 0; n >= i; n--) {
                    r = a[n], t = { value: e.get(r.field), field: r.field, items: t ? [t] : [e], hasSubgroups: !!t, aggregates: this._emptyAggregates(r.aggregates) };
                }return t;
            }, totalPages: function totalPages() {
                var e = this,
                    t = e.pageSize() || e.total();return Le.ceil((e.total() || 0) / t);
            }, inRange: function inRange(e, t) {
                var r = this,
                    n = Le.min(e + t, r.total());return !r.options.serverPaging && r._data.length > 0 || r._findRange(e, n).length > 0;
            }, lastRange: function lastRange() {
                var e = this._ranges;return e[e.length - 1] || { start: 0, end: 0, data: [] };
            }, firstItemUid: function firstItemUid() {
                var e = this._ranges;return e.length && e[0].data.length && e[0].data[0].uid;
            }, enableRequestsInProgress: function enableRequestsInProgress() {
                this._skipRequestsInProgress = !1;
            }, _timeStamp: function _timeStamp() {
                return new Date().getTime();
            }, range: function range(e, r) {
                var n, i, a, s, o, u, l, d;if (this._currentRequestTimeStamp = this._timeStamp(), this._skipRequestsInProgress = !0, e = Le.min(e || 0, this.total()), n = this, i = Le.max(Le.floor(e / r), 0) * r, a = Le.min(i + r, n.total()), s = n._findRange(e, Le.min(e + r, n.total())), s.length) {
                    n._pending = t, n._skip = e > n.skip() ? Le.min(a, (n.totalPages() - 1) * n.take()) : i, n._currentRangeStart = e, n._take = r, o = n.options.serverPaging, u = n.options.serverSorting, l = n.options.serverFiltering, d = n.options.serverAggregates;try {
                        n.options.serverPaging = !0, n._isServerGrouped() || n.group() && n.group().length || (n.options.serverSorting = !0), n.options.serverFiltering = !0, n.options.serverPaging = !0, n.options.serverAggregates = !0, o && (n._detachObservableParents(), n._data = s = n._observe(s)), n._process(s);
                    } finally {
                        n.options.serverPaging = o, n.options.serverSorting = u, n.options.serverFiltering = l, n.options.serverAggregates = d;
                    }
                } else r !== t && (n._rangeExists(i, a) ? i < e && n.prefetch(a, r, function () {
                    n.range(e, r);
                }) : n.prefetch(i, r, function () {
                    e > i && a < n.total() && !n._rangeExists(a, Le.min(a + r, n.total())) ? n.prefetch(a, r, function () {
                        n.range(e, r);
                    }) : n.range(e, r);
                }));
            }, _findRange: function _findRange(e, r) {
                var n,
                    i,
                    a,
                    o,
                    u,
                    l,
                    d,
                    h,
                    f,
                    c,
                    p,
                    _,
                    v = this,
                    m = v._ranges,
                    y = [],
                    S = v.options,
                    b = S.serverSorting || S.serverPaging || S.serverFiltering || S.serverGrouping || S.serverAggregates;for (i = 0, p = m.length; i < p; i++) {
                    if (n = m[i], e >= n.start && e <= n.end) {
                        for (c = 0, a = i; a < p; a++) {
                            if (n = m[a], f = v._flatData(n.data, !0), f.length && e + c >= n.start && (l = n.data, d = n.end, b || (_ = g(v.group() || []).concat(s(v.sort() || [])), h = v._queryProcess(n.data, { sort: _, filter: v.filter() }), f = l = h.data, h.total !== t && (d = h.total)), o = 0, e + c > n.start && (o = e + c - n.start), u = f.length, d > r && (u -= d - r), c += u - o, y = v._mergeGroups(y, l, o, u), r <= n.end && c == r - e)) return y;
                        }break;
                    }
                }return [];
            }, _mergeGroups: function _mergeGroups(e, t, r, n) {
                if (this._isServerGrouped()) {
                    var i,
                        a = t.toJSON();return e.length && (i = e[e.length - 1]), x(i, a, r, n), e.concat(a);
                }return e.concat(t.slice(r, n));
            }, skip: function skip() {
                var e = this;return e._skip === t ? e._page !== t ? (e._page - 1) * (e.take() || 1) : t : e._skip;
            }, currentRangeStart: function currentRangeStart() {
                return this._currentRangeStart || 0;
            }, take: function take() {
                return this._take || this._pageSize;
            }, _prefetchSuccessHandler: function _prefetchSuccessHandler(e, t, r, n) {
                var i = this,
                    a = i._timeStamp();return function (s) {
                    var o,
                        u,
                        l,
                        d = !1,
                        h = { start: e, end: t, data: [], timestamp: i._timeStamp() };if (i._dequeueRequest(), i.trigger(Ae, { response: s, type: "read" }), s = i.reader.parse(s), l = i._readData(s), l.length) {
                        for (o = 0, u = i._ranges.length; o < u; o++) {
                            if (i._ranges[o].start === e) {
                                d = !0, h = i._ranges[o];break;
                            }
                        }d || i._ranges.push(h);
                    }h.data = i._observe(l), h.end = h.start + i._flatData(h.data, !0).length, i._ranges.sort(function (e, t) {
                        return e.start - t.start;
                    }), i._total = i.reader.total(s), (n || a >= i._currentRequestTimeStamp || !i._skipRequestsInProgress) && (r && l.length ? r() : i.trigger(Oe, {}));
                };
            }, prefetch: function prefetch(e, t, r) {
                var n = this,
                    i = Le.min(e + t, n.total()),
                    a = { take: t, skip: e, page: e / t + 1, pageSize: t, sort: n._sort, filter: n._filter, group: n._group, aggregate: n._aggregate };n._rangeExists(e, i) ? r && r() : (clearTimeout(n._timeout), n._timeout = setTimeout(function () {
                    n._queueRequest(a, function () {
                        n.trigger(Te, { type: "read" }) ? n._dequeueRequest() : n.transport.read({ data: n._params(a), success: n._prefetchSuccessHandler(e, i, r), error: function error() {
                                var e = Je.call(arguments);n.error.apply(n, e);
                            } });
                    });
                }, 100));
            }, _multiplePrefetch: function _multiplePrefetch(e, t, r) {
                var n = this,
                    i = Le.min(e + t, n.total()),
                    a = { take: t, skip: e, page: e / t + 1, pageSize: t, sort: n._sort, filter: n._filter, group: n._group, aggregate: n._aggregate };n._rangeExists(e, i) ? r && r() : n.trigger(Te, { type: "read" }) || n.transport.read({ data: n._params(a), success: n._prefetchSuccessHandler(e, i, r, !0) });
            }, _rangeExists: function _rangeExists(e, t) {
                var r,
                    n,
                    i = this,
                    a = i._ranges;for (r = 0, n = a.length; r < n; r++) {
                    if (a[r].start <= e && a[r].end >= t) return !0;
                }return !1;
            }, _removeModelFromRanges: function _removeModelFromRanges(e) {
                var t, r, n, i, a;for (i = 0, a = this._ranges.length; i < a && (n = this._ranges[i], this._eachItem(n.data, function (n) {
                    t = P(n, e), t && (r = !0);
                }), !r); i++) {}
            }, _updateRangesLength: function _updateRangesLength() {
                var e,
                    t,
                    r,
                    n,
                    i = 0;for (r = 0, n = this._ranges.length; r < n; r++) {
                    e = this._ranges[r], e.start = e.start - i, t = this._flatData(e.data, !0).length, i = e.end - t, e.end = e.start + t;
                }
            } }), ie = {}, ie.create = function (t, r, n) {
            var i,
                a = t.transport ? e.extend({}, t.transport) : null;return a ? (a.read = _typeof(a.read) === we ? { url: a.read } : a.read, "jsdo" === t.type && (a.dataSource = n), t.type && (me.data.transports = me.data.transports || {}, me.data.schemas = me.data.schemas || {}, me.data.transports[t.type] ? he(me.data.transports[t.type]) ? a = le(!0, {}, me.data.transports[t.type], a) : i = new me.data.transports[t.type](le(a, { data: r })) : me.logToConsole("Unknown DataSource transport type '" + t.type + "'.\nVerify that registration scripts for this type are included after Kendo UI on the page.", "warn"), t.schema = le(!0, {}, me.data.schemas[t.type], t.schema)), i || (i = ye(a.read) ? a : new ee(a))) : i = new Z({ data: t.data || [] }), i;
        }, ne.create = function (e) {
            (ce(e) || e instanceof Ye) && (e = { data: e });var r,
                n,
                i,
                a = e || {},
                s = a.data,
                o = a.fields,
                u = a.table,
                l = a.select,
                d = {};if (s || !o || a.transport || (u ? s = L(u, o) : l && (s = j(l, o), a.group === t && s[0] && s[0].optgroup !== t && (a.group = "optgroup"))), me.data.Model && o && (!a.schema || !a.schema.model)) {
                for (r = 0, n = o.length; r < n; r++) {
                    i = o[r], i.type && (d[i.field] = i);
                }fe(d) || (a.schema = le(!0, a.schema, { model: { fields: d } }));
            }return a.data = s, l = null, a.select = null, u = null, a.table = null, a instanceof ne ? a : new ne(a);
        }, ae = W.define({ idField: "id", init: function init(e) {
                var t = this,
                    r = t.hasChildren || e && e.hasChildren,
                    n = "items",
                    i = {};me.data.Model.fn.init.call(t, e), _typeof(t.children) === we && (n = t.children), i = { schema: { data: n, model: { hasChildren: r, id: t.idField, fields: t.fields } } }, _typeof(t.children) !== we && le(i, t.children), i.data = e, r || (r = i.schema.data), (typeof r === "undefined" ? "undefined" : _typeof(r)) === we && (r = me.getter(r)), ye(r) && (t.hasChildren = !!r.call(t, t)), t._childrenOptions = i, t.hasChildren && t._initChildren(), t._loaded = !(!e || !e._loaded);
            }, _initChildren: function _initChildren() {
                var e,
                    t,
                    r,
                    n = this;n.children instanceof se || (e = n.children = new se(n._childrenOptions), t = e.transport, r = t.parameterMap, t.parameterMap = function (e, t) {
                    return e[n.idField || "id"] = n.id, r && (e = r(e, t)), e;
                }, e.parent = function () {
                    return n;
                }, e.bind(Oe, function (e) {
                    e.node = e.node || n, n.trigger(Oe, e);
                }), e.bind(Pe, function (e) {
                    var t = n.parent();t && (e.node = e.node || n, t.trigger(Pe, e));
                }), n._updateChildrenField());
            }, append: function append(e) {
                this._initChildren(), this.loaded(!0), this.children.add(e);
            }, hasChildren: !1, level: function level() {
                for (var e = this.parentNode(), t = 0; e && e.parentNode;) {
                    t++, e = e.parentNode ? e.parentNode() : null;
                }return t;
            }, _updateChildrenField: function _updateChildrenField() {
                var e = this._childrenOptions.schema.data;this[e || "items"] = this.children.data();
            }, _childrenLoaded: function _childrenLoaded() {
                this._loaded = !0, this._updateChildrenField();
            }, load: function load() {
                var r,
                    n,
                    i = {},
                    a = "_query";return this.hasChildren ? (this._initChildren(), r = this.children, i[this.idField || "id"] = this.id, this._loaded || (r._data = t, a = "read"), r.one(Oe, de(this._childrenLoaded, this)), n = r[a](i)) : this.loaded(!0), n || e.Deferred().resolve().promise();
            }, parentNode: function parentNode() {
                var e = this.parent();return e.parent();
            }, loaded: function loaded(e) {
                return e === t ? this._loaded : (this._loaded = e, t);
            }, shouldSerialize: function shouldSerialize(e) {
                return W.fn.shouldSerialize.call(this, e) && "children" !== e && "_loaded" !== e && "hasChildren" !== e && "_childrenOptions" !== e;
            } }), se = ne.extend({ init: function init(e) {
                var t = ae.define({ children: e });ne.fn.init.call(this, le(!0, {}, { schema: { modelBase: t, model: t } }, e)), this._attachBubbleHandlers();
            }, _attachBubbleHandlers: function _attachBubbleHandlers() {
                var e = this;e._data.bind(Pe, function (t) {
                    e.trigger(Pe, t);
                });
            }, remove: function remove(e) {
                var t,
                    r = e.parentNode(),
                    n = this;return r && r._initChildren && (n = r.children), t = ne.fn.remove.call(n, e), r && !n.data().length && (r.hasChildren = !1), t;
            }, success: G("success"), data: G("data"), insert: function insert(e, t) {
                var r = this.parent();return r && r._initChildren && (r.hasChildren = !0, r._initChildren()), ne.fn.insert.call(this, e, t);
            }, _find: function _find(e, t) {
                var r,
                    n,
                    i,
                    a,
                    s = this._data;if (s) {
                    if (i = ne.fn[e].call(this, t)) return i;for (s = this._flatData(this._data), r = 0, n = s.length; r < n; r++) {
                        if (a = s[r].children, a instanceof se && (i = a[e](t))) return i;
                    }
                }
            }, get: function get(e) {
                return this._find("get", e);
            }, getByUid: function getByUid(e) {
                return this._find("getByUid", e);
            } }), se.create = function (e) {
            e = e && e.push ? { data: e } : e;var t = e || {},
                r = t.data,
                n = t.fields,
                i = t.list;return r && r._dataSource ? r._dataSource : (r || !n || t.transport || i && (r = E(i, n)), t.data = r, t instanceof se ? t : new se(t));
        }, oe = me.Observable.extend({ init: function init(e, t, r) {
                me.Observable.fn.init.call(this), this._prefetching = !1, this.dataSource = e, this.prefetch = !r;var n = this;e.bind("change", function () {
                    n._change();
                }), e.bind("reset", function () {
                    n._reset();
                }), this._syncWithDataSource(), this.setViewSize(t);
            }, setViewSize: function setViewSize(e) {
                this.viewSize = e, this._recalculate();
            }, at: function at(e) {
                var r = this.pageSize,
                    n = !0;return e >= this.total() ? (this.trigger("endreached", { index: e }), null) : this.useRanges ? this.useRanges ? ((e < this.dataOffset || e >= this.skip + r) && (n = this.range(Math.floor(e / r) * r)), e === this.prefetchThreshold && this._prefetch(), e === this.midPageThreshold ? this.range(this.nextMidRange, !0) : e === this.nextPageThreshold ? this.range(this.nextFullRange) : e === this.pullBackThreshold && this.range(this.offset === this.skip ? this.previousMidRange : this.previousFullRange), n ? this.dataSource.at(e - this.dataOffset) : (this.trigger("endreached", { index: e }), null)) : t : this.dataSource.view()[e];
            }, indexOf: function indexOf(e) {
                return this.dataSource.data().indexOf(e) + this.dataOffset;
            }, total: function total() {
                return parseInt(this.dataSource.total(), 10);
            }, next: function next() {
                var e = this,
                    t = e.pageSize,
                    r = e.skip - e.viewSize + t,
                    n = Le.max(Le.floor(r / t), 0) * t;this.offset = r, this.dataSource.prefetch(n, t, function () {
                    e._goToRange(r, !0);
                });
            }, range: function range(e, t) {
                if (this.offset === e) return !0;var r = this,
                    n = this.pageSize,
                    i = Le.max(Le.floor(e / n), 0) * n,
                    a = this.dataSource;return t && (i += n), a.inRange(e, n) ? (this.offset = e, this._recalculate(), this._goToRange(e), !0) : !this.prefetch || (a.prefetch(i, n, function () {
                    r.offset = e, r._recalculate(), r._goToRange(e, !0);
                }), !1);
            }, syncDataSource: function syncDataSource() {
                var e = this.offset;this.offset = null, this.range(e);
            }, destroy: function destroy() {
                this.unbind();
            }, _prefetch: function _prefetch() {
                var e = this,
                    t = this.pageSize,
                    r = this.skip + t,
                    n = this.dataSource;n.inRange(r, t) || this._prefetching || !this.prefetch || (this._prefetching = !0, this.trigger("prefetching", { skip: r, take: t }), n.prefetch(r, t, function () {
                    e._prefetching = !1, e.trigger("prefetched", { skip: r, take: t });
                }));
            }, _goToRange: function _goToRange(e, t) {
                this.offset === e && (this.dataOffset = e, this._expanding = t, this.dataSource.range(e, this.pageSize), this.dataSource.enableRequestsInProgress());
            }, _reset: function _reset() {
                this._syncPending = !0;
            }, _change: function _change() {
                var e = this.dataSource;this.length = this.useRanges ? e.lastRange().end : e.view().length, this._syncPending && (this._syncWithDataSource(), this._recalculate(), this._syncPending = !1, this.trigger("reset", { offset: this.offset })), this.trigger("resize"), this._expanding && this.trigger("expand"), delete this._expanding;
            }, _syncWithDataSource: function _syncWithDataSource() {
                var e = this.dataSource;this._firstItemUid = e.firstItemUid(), this.dataOffset = this.offset = e.skip() || 0, this.pageSize = e.pageSize(), this.useRanges = e.options.serverPaging;
            }, _recalculate: function _recalculate() {
                var e = this.pageSize,
                    t = this.offset,
                    r = this.viewSize,
                    n = Math.ceil(t / e) * e;this.skip = n, this.midPageThreshold = n + e - 1, this.nextPageThreshold = n + r - 1, this.prefetchThreshold = n + Math.floor(e / 3 * 2), this.pullBackThreshold = this.offset - 1, this.nextMidRange = n + e - r, this.nextFullRange = n, this.previousMidRange = t - r, this.previousFullRange = n - e;
            } }), ue = me.Observable.extend({ init: function init(e, t) {
                var r = this;me.Observable.fn.init.call(r), this.dataSource = e, this.batchSize = t, this._total = 0, this.buffer = new oe(e, 3 * t), this.buffer.bind({ endreached: function endreached(e) {
                        r.trigger("endreached", { index: e.index });
                    }, prefetching: function prefetching(e) {
                        r.trigger("prefetching", { skip: e.skip, take: e.take });
                    }, prefetched: function prefetched(e) {
                        r.trigger("prefetched", { skip: e.skip, take: e.take });
                    }, reset: function reset() {
                        r._total = 0, r.trigger("reset");
                    }, resize: function resize() {
                        r._total = Math.ceil(this.length / r.batchSize), r.trigger("resize", { total: r.total(), offset: this.offset });
                    } });
            }, syncDataSource: function syncDataSource() {
                this.buffer.syncDataSource();
            }, at: function at(e) {
                var t,
                    r,
                    n = this.buffer,
                    i = e * this.batchSize,
                    a = this.batchSize,
                    s = [];for (n.offset > i && n.at(n.offset - 1), r = 0; r < a && (t = n.at(i + r), null !== t); r++) {
                    s.push(t);
                }return s;
            }, total: function total() {
                return this._total;
            }, destroy: function destroy() {
                this.buffer.destroy(), this.unbind();
            } }), le(!0, me.data, { readers: { json: re }, Query: a, DataSource: ne, HierarchicalDataSource: se, Node: ae, ObservableObject: H, ObservableArray: Ye, LazyObservableArray: U, LocalTransport: Z, RemoteTransport: ee, Cache: te, DataReader: re, Model: W, Buffer: oe, BatchBuffer: ue });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, t, r) {
    (r || t)();
});;!function (e, define) {
    define("kendo.userevents.min", ["kendo.core.min"], e);
}(function () {
    return function (e, t) {
        function n(e, t) {
            var n = e.x.location,
                i = e.y.location,
                o = t.x.location,
                r = t.y.location,
                s = n - o,
                a = i - r;return { center: { x: (n + o) / 2, y: (i + r) / 2 }, distance: Math.sqrt(s * s + a * a) };
        }function i(e) {
            var t,
                n,
                i,
                o = [],
                r = e.originalEvent,
                a = e.currentTarget,
                c = 0;if (e.api) o.push({ id: 2, event: e, target: e.target, currentTarget: e.target, location: e, type: "api" });else if (e.type.match(/touch/)) for (n = r ? r.changedTouches : [], t = n.length; c < t; c++) {
                i = n[c], o.push({ location: i, event: e, target: i.target, currentTarget: a, id: i.identifier, type: "touch" });
            } else o.push(s.pointers || s.msPointers ? { location: r, event: e, target: e.target, currentTarget: a, id: r.pointerId, type: "pointer" } : { id: 1, event: e, target: e.target, currentTarget: a, location: e, type: "mouse" });return o;
        }function o(e) {
            for (var t = r.eventMap.up.split(" "), n = 0, i = t.length; n < i; n++) {
                e(t[n]);
            }
        }var r = window.kendo,
            s = r.support,
            a = r.Class,
            c = r.Observable,
            u = e.now,
            h = e.extend,
            l = s.mobileOS,
            p = l && l.android,
            d = 800,
            f = s.browser.msie ? 5 : 0,
            v = "press",
            g = "hold",
            m = "select",
            _ = "start",
            T = "move",
            y = "end",
            x = "cancel",
            M = "tap",
            w = "release",
            E = "gesturestart",
            k = "gesturechange",
            D = "gestureend",
            C = "gesturetap",
            b = { api: 0, touch: 0, mouse: 9, pointer: 9 },
            A = !s.touch || s.mouseAndTouchPresent,
            I = a.extend({ init: function init(e, t) {
                var n = this;n.axis = e, n._updateLocationData(t), n.startLocation = n.location, n.velocity = n.delta = 0, n.timeStamp = u();
            }, move: function move(e) {
                var t = this,
                    n = e["page" + t.axis],
                    i = u(),
                    o = i - t.timeStamp || 1;!n && p || (t.delta = n - t.location, t._updateLocationData(e), t.initialDelta = n - t.startLocation, t.velocity = t.delta / o, t.timeStamp = i);
            }, _updateLocationData: function _updateLocationData(e) {
                var t = this,
                    n = t.axis;t.location = e["page" + n], t.client = e["client" + n], t.screen = e["screen" + n];
            } }),
            S = a.extend({ init: function init(e, t, n) {
                h(this, { x: new I("X", n.location), y: new I("Y", n.location), type: n.type, useClickAsTap: e.useClickAsTap, threshold: e.threshold || b[n.type], userEvents: e, target: t, currentTarget: n.currentTarget, initialTouch: n.target, id: n.id, pressEvent: n, _moved: !1, _finished: !1 });
            }, press: function press() {
                this._holdTimeout = setTimeout(e.proxy(this, "_hold"), this.userEvents.minHold), this._trigger(v, this.pressEvent);
            }, _hold: function _hold() {
                this._trigger(g, this.pressEvent);
            }, move: function move(e) {
                var t = this;if (!t._finished) {
                    if (t.x.move(e.location), t.y.move(e.location), !t._moved) {
                        if (t._withinIgnoreThreshold()) return;if (P.current && P.current !== t.userEvents) return t.dispose();t._start(e);
                    }t._finished || t._trigger(T, e);
                }
            }, end: function end(e) {
                this.endTime = u(), this._finished || (this._finished = !0, this._trigger(w, e), this._moved ? this._trigger(y, e) : this.useClickAsTap || this._trigger(M, e), clearTimeout(this._holdTimeout), this.dispose());
            }, dispose: function dispose() {
                var t = this.userEvents,
                    n = t.touches;this._finished = !0, this.pressEvent = null, clearTimeout(this._holdTimeout), n.splice(e.inArray(this, n), 1);
            }, skip: function skip() {
                this.dispose();
            }, cancel: function cancel() {
                this.dispose();
            }, isMoved: function isMoved() {
                return this._moved;
            }, _start: function _start(e) {
                clearTimeout(this._holdTimeout), this.startTime = u(), this._moved = !0, this._trigger(_, e);
            }, _trigger: function _trigger(e, t) {
                var n = this,
                    i = t.event,
                    o = { touch: n, x: n.x, y: n.y, target: n.target, event: i };n.userEvents.notify(e, o) && i.preventDefault();
            }, _withinIgnoreThreshold: function _withinIgnoreThreshold() {
                var e = this.x.initialDelta,
                    t = this.y.initialDelta;return Math.sqrt(e * e + t * t) <= this.threshold;
            } }),
            P = c.extend({ init: function init(t, n) {
                var i,
                    a,
                    u,
                    l = this,
                    p = r.guid();n = n || {}, i = l.filter = n.filter, l.threshold = n.threshold || f, l.minHold = n.minHold || d, l.touches = [], l._maxTouches = n.multiTouch ? 2 : 1, l.allowSelection = n.allowSelection, l.captureUpIfMoved = n.captureUpIfMoved, l.useClickAsTap = !n.fastTap && !s.delayedClick(), l.eventNS = p, t = e(t).handler(l), c.fn.init.call(l), h(l, { element: t, surface: e(n.global && A ? t[0].ownerDocument.documentElement : n.surface || t), stopPropagation: n.stopPropagation, pressed: !1 }), l.surface.handler(l).on(r.applyEventMap("move", p), "_move").on(r.applyEventMap("up cancel", p), "_end"), t.on(r.applyEventMap("down", p), i, "_start"), l.useClickAsTap && t.on(r.applyEventMap("click", p), i, "_click"), (s.pointers || s.msPointers) && (s.browser.version < 11 ? t.css("-ms-touch-action", "pinch-zoom double-tap-zoom") : t.css("touch-action", n.touchAction || "none")), n.preventDragEvent && t.on(r.applyEventMap("dragstart", p), r.preventDefault), t.on(r.applyEventMap("mousedown", p), i, { root: t }, "_select"), l.captureUpIfMoved && s.eventCapture && (a = l.surface[0], u = e.proxy(l.preventIfMoving, l), o(function (e) {
                    a.addEventListener(e, u, !0);
                })), l.bind([v, g, M, _, T, y, w, x, E, k, D, C, m], n);
            }, preventIfMoving: function preventIfMoving(e) {
                this._isMoved() && e.preventDefault();
            }, destroy: function destroy() {
                var e,
                    t = this;t._destroyed || (t._destroyed = !0, t.captureUpIfMoved && s.eventCapture && (e = t.surface[0], o(function (n) {
                    e.removeEventListener(n, t.preventIfMoving);
                })), t.element.kendoDestroy(t.eventNS), t.surface.kendoDestroy(t.eventNS), t.element.removeData("handler"), t.surface.removeData("handler"), t._disposeAll(), t.unbind(), delete t.surface, delete t.element, delete t.currentTarget);
            }, capture: function capture() {
                P.current = this;
            }, cancel: function cancel() {
                this._disposeAll(), this.trigger(x);
            }, notify: function notify(e, t) {
                var i = this,
                    o = i.touches;if (this._isMultiTouch()) {
                    switch (e) {case T:
                            e = k;break;case y:
                            e = D;break;case M:
                            e = C;}h(t, { touches: o }, n(o[0], o[1]));
                }return this.trigger(e, h(t, { type: e }));
            }, press: function press(e, t, n) {
                this._apiCall("_start", e, t, n);
            }, move: function move(e, t) {
                this._apiCall("_move", e, t);
            }, end: function end(e, t) {
                this._apiCall("_end", e, t);
            }, _isMultiTouch: function _isMultiTouch() {
                return this.touches.length > 1;
            }, _maxTouchesReached: function _maxTouchesReached() {
                return this.touches.length >= this._maxTouches;
            }, _disposeAll: function _disposeAll() {
                for (var e = this.touches; e.length > 0;) {
                    e.pop().dispose();
                }
            }, _isMoved: function _isMoved() {
                return e.grep(this.touches, function (e) {
                    return e.isMoved();
                }).length;
            }, _select: function _select(e) {
                this.allowSelection && !this.trigger(m, { event: e }) || e.preventDefault();
            }, _start: function _start(t) {
                var n,
                    o,
                    r = this,
                    s = 0,
                    a = r.filter,
                    c = i(t),
                    u = c.length,
                    h = t.which;if (!(h && h > 1 || r._maxTouchesReached())) for (P.current = null, r.currentTarget = t.currentTarget, r.stopPropagation && t.stopPropagation(); s < u && !r._maxTouchesReached(); s++) {
                    o = c[s], n = a ? e(o.currentTarget) : r.element, n.length && (o = new S(r, n, o), r.touches.push(o), o.press(), r._isMultiTouch() && r.notify("gesturestart", {}));
                }
            }, _move: function _move(e) {
                this._eachTouch("move", e);
            }, _end: function _end(e) {
                this._eachTouch("end", e);
            }, _click: function _click(t) {
                var n = { touch: { initialTouch: t.target, target: e(t.currentTarget), endTime: u(), x: { location: t.pageX, client: t.clientX }, y: { location: t.pageY, client: t.clientY } }, x: t.pageX, y: t.pageY, target: e(t.currentTarget), event: t, type: "tap" };this.trigger("tap", n) && t.preventDefault();
            }, _eachTouch: function _eachTouch(e, t) {
                var n,
                    o,
                    r,
                    s,
                    a = this,
                    c = {},
                    u = i(t),
                    h = a.touches;for (n = 0; n < h.length; n++) {
                    o = h[n], c[o.id] = o;
                }for (n = 0; n < u.length; n++) {
                    r = u[n], s = c[r.id], s && s[e](r);
                }
            }, _apiCall: function _apiCall(t, n, i, o) {
                this[t]({ api: !0, pageX: n, pageY: i, clientX: n, clientY: i, target: e(o || this.element)[0], stopPropagation: e.noop, preventDefault: e.noop });
            } });P.defaultThreshold = function (e) {
            f = e;
        }, P.minHold = function (e) {
            d = e;
        }, r.getTouches = i, r.touchDelta = n, r.UserEvents = P;
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, t, n) {
    (n || t)();
});;!function (e, define) {
    define("kendo.color.min", ["kendo.core.min"], e);
}(function () {
    !function (e, t, r) {
        function n(e, f) {
            var a, i;if (null == e || "none" == e) return null;if (e instanceof s) return e;if (e = e.toLowerCase(), a = o.exec(e)) return e = "transparent" == a[1] ? new u(1, 1, 1, 0) : n(h.namedColors[a[1]], f), e.match = [a[1]], e;if ((a = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\b/i.exec(e)) ? i = new l(r(a[1], 16), r(a[2], 16), r(a[3], 16), 1) : (a = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\b/i.exec(e)) ? i = new l(r(a[1] + a[1], 16), r(a[2] + a[2], 16), r(a[3] + a[3], 16), 1) : (a = /^rgb\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/.exec(e)) ? i = new l(r(a[1], 10), r(a[2], 10), r(a[3], 10), 1) : (a = /^rgba\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9.]+)\s*\)/.exec(e)) ? i = new l(r(a[1], 10), r(a[2], 10), r(a[3], 10), t(a[4])) : (a = /^rgb\(\s*([0-9]*\.?[0-9]+)%\s*,\s*([0-9]*\.?[0-9]+)%\s*,\s*([0-9]*\.?[0-9]+)%\s*\)/.exec(e)) ? i = new u(t(a[1]) / 100, t(a[2]) / 100, t(a[3]) / 100, 1) : (a = /^rgba\(\s*([0-9]*\.?[0-9]+)%\s*,\s*([0-9]*\.?[0-9]+)%\s*,\s*([0-9]*\.?[0-9]+)%\s*,\s*([0-9.]+)\s*\)/.exec(e)) && (i = new u(t(a[1]) / 100, t(a[2]) / 100, t(a[3]) / 100, t(a[4]))), i) i.match = a;else if (!f) throw Error("Cannot parse color: " + e);return i;
        }function f(e, t, r) {
            for (r || (r = "0"), e = e.toString(16); t > e.length;) {
                e = "0" + e;
            }return e;
        }function a(e, t, r) {
            return r < 0 && (r += 1), r > 1 && (r -= 1), r < 1 / 6 ? e + 6 * (t - e) * r : r < .5 ? t : r < 2 / 3 ? e + (t - e) * (2 / 3 - r) * 6 : e;
        }var o,
            i,
            s,
            u,
            l,
            d,
            c,
            h = function h(e) {
            var t,
                r,
                n,
                f,
                a,
                o = this,
                i = h.formats;if (1 === arguments.length) for (e = o.resolveColor(e), f = 0; f < i.length; f++) {
                t = i[f].re, r = i[f].process, n = t.exec(e), n && (a = r(n), o.r = a[0], o.g = a[1], o.b = a[2]);
            } else o.r = arguments[0], o.g = arguments[1], o.b = arguments[2];o.r = o.normalizeByte(o.r), o.g = o.normalizeByte(o.g), o.b = o.normalizeByte(o.b);
        };h.prototype = { toHex: function toHex() {
                var e = this,
                    t = e.padDigit,
                    r = e.r.toString(16),
                    n = e.g.toString(16),
                    f = e.b.toString(16);return "#" + t(r) + t(n) + t(f);
            }, resolveColor: function resolveColor(e) {
                return e = e || "black", "#" == e.charAt(0) && (e = e.substr(1, 6)), e = e.replace(/ /g, ""), e = e.toLowerCase(), e = h.namedColors[e] || e;
            }, normalizeByte: function normalizeByte(e) {
                return e < 0 || isNaN(e) ? 0 : e > 255 ? 255 : e;
            }, padDigit: function padDigit(e) {
                return 1 === e.length ? "0" + e : e;
            }, brightness: function brightness(e) {
                var t = this,
                    r = Math.round;return t.r = r(t.normalizeByte(t.r * e)), t.g = r(t.normalizeByte(t.g * e)), t.b = r(t.normalizeByte(t.b * e)), t;
            }, percBrightness: function percBrightness() {
                var e = this;return Math.sqrt(.241 * e.r * e.r + .691 * e.g * e.g + .068 * e.b * e.b);
            } }, h.formats = [{ re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/, process: function process(e) {
                return [r(e[1], 10), r(e[2], 10), r(e[3], 10)];
            } }, { re: /^(\w{2})(\w{2})(\w{2})$/, process: function process(e) {
                return [r(e[1], 16), r(e[2], 16), r(e[3], 16)];
            } }, { re: /^(\w{1})(\w{1})(\w{1})$/, process: function process(e) {
                return [r(e[1] + e[1], 16), r(e[2] + e[2], 16), r(e[3] + e[3], 16)];
            } }], h.namedColors = { aliceblue: "f0f8ff", antiquewhite: "faebd7", aqua: "00ffff", aquamarine: "7fffd4", azure: "f0ffff", beige: "f5f5dc", bisque: "ffe4c4", black: "000000", blanchedalmond: "ffebcd", blue: "0000ff", blueviolet: "8a2be2", brown: "a52a2a", burlywood: "deb887", cadetblue: "5f9ea0", chartreuse: "7fff00", chocolate: "d2691e", coral: "ff7f50", cornflowerblue: "6495ed", cornsilk: "fff8dc", crimson: "dc143c", cyan: "00ffff", darkblue: "00008b", darkcyan: "008b8b", darkgoldenrod: "b8860b", darkgray: "a9a9a9", darkgrey: "a9a9a9", darkgreen: "006400", darkkhaki: "bdb76b", darkmagenta: "8b008b", darkolivegreen: "556b2f", darkorange: "ff8c00", darkorchid: "9932cc", darkred: "8b0000", darksalmon: "e9967a", darkseagreen: "8fbc8f", darkslateblue: "483d8b", darkslategray: "2f4f4f", darkslategrey: "2f4f4f", darkturquoise: "00ced1", darkviolet: "9400d3", deeppink: "ff1493", deepskyblue: "00bfff", dimgray: "696969", dimgrey: "696969", dodgerblue: "1e90ff", firebrick: "b22222", floralwhite: "fffaf0", forestgreen: "228b22", fuchsia: "ff00ff", gainsboro: "dcdcdc", ghostwhite: "f8f8ff", gold: "ffd700", goldenrod: "daa520", gray: "808080", grey: "808080", green: "008000", greenyellow: "adff2f", honeydew: "f0fff0", hotpink: "ff69b4", indianred: "cd5c5c", indigo: "4b0082", ivory: "fffff0", khaki: "f0e68c", lavender: "e6e6fa", lavenderblush: "fff0f5", lawngreen: "7cfc00", lemonchiffon: "fffacd", lightblue: "add8e6", lightcoral: "f08080", lightcyan: "e0ffff", lightgoldenrodyellow: "fafad2", lightgray: "d3d3d3", lightgrey: "d3d3d3", lightgreen: "90ee90", lightpink: "ffb6c1", lightsalmon: "ffa07a", lightseagreen: "20b2aa", lightskyblue: "87cefa", lightslategray: "778899", lightslategrey: "778899", lightsteelblue: "b0c4de", lightyellow: "ffffe0", lime: "00ff00", limegreen: "32cd32", linen: "faf0e6", magenta: "ff00ff", maroon: "800000", mediumaquamarine: "66cdaa", mediumblue: "0000cd", mediumorchid: "ba55d3", mediumpurple: "9370d8", mediumseagreen: "3cb371", mediumslateblue: "7b68ee", mediumspringgreen: "00fa9a", mediumturquoise: "48d1cc", mediumvioletred: "c71585", midnightblue: "191970", mintcream: "f5fffa", mistyrose: "ffe4e1", moccasin: "ffe4b5", navajowhite: "ffdead", navy: "000080", oldlace: "fdf5e6", olive: "808000", olivedrab: "6b8e23", orange: "ffa500", orangered: "ff4500", orchid: "da70d6", palegoldenrod: "eee8aa", palegreen: "98fb98", paleturquoise: "afeeee", palevioletred: "d87093", papayawhip: "ffefd5", peachpuff: "ffdab9", peru: "cd853f", pink: "ffc0cb", plum: "dda0dd", powderblue: "b0e0e6", purple: "800080", red: "ff0000", rosybrown: "bc8f8f", royalblue: "4169e1", saddlebrown: "8b4513", salmon: "fa8072", sandybrown: "f4a460", seagreen: "2e8b57", seashell: "fff5ee", sienna: "a0522d", silver: "c0c0c0", skyblue: "87ceeb", slateblue: "6a5acd", slategray: "708090", slategrey: "708090", snow: "fffafa", springgreen: "00ff7f", steelblue: "4682b4", tan: "d2b48c", teal: "008080", thistle: "d8bfd8", tomato: "ff6347", turquoise: "40e0d0", violet: "ee82ee", wheat: "f5deb3", white: "ffffff", whitesmoke: "f5f5f5", yellow: "ffff00", yellowgreen: "9acd32" }, o = ["transparent"];for (i in h.namedColors) {
            h.namedColors.hasOwnProperty(i) && o.push(i);
        }o = RegExp("^(" + o.join("|") + ")(\\W|$)", "i"), s = kendo.Class.extend({ toHSV: function toHSV() {
                return this;
            }, toRGB: function toRGB() {
                return this;
            }, toHex: function toHex() {
                return this.toBytes().toHex();
            }, toBytes: function toBytes() {
                return this;
            }, toCss: function toCss() {
                return "#" + this.toHex();
            }, toCssRgba: function toCssRgba() {
                var e = this.toBytes();return "rgba(" + e.r + ", " + e.g + ", " + e.b + ", " + t((+this.a).toFixed(3)) + ")";
            }, toDisplay: function toDisplay() {
                return kendo.support.browser.msie && kendo.support.browser.version < 9 ? this.toCss() : this.toCssRgba();
            }, equals: function equals(e) {
                return e === this || null !== e && this.toCssRgba() == n(e).toCssRgba();
            }, diff: function diff(e) {
                if (null == e) return NaN;var t = this.toBytes();return e = e.toBytes(), Math.sqrt(Math.pow(.3 * (t.r - e.r), 2) + Math.pow(.59 * (t.g - e.g), 2) + Math.pow(.11 * (t.b - e.b), 2));
            }, clone: function clone() {
                var e = this.toBytes();return e === this && (e = new l(e.r, e.g, e.b, e.a)), e;
            } }), u = s.extend({ init: function init(e, t, r, n) {
                this.r = e, this.g = t, this.b = r, this.a = n;
            }, toHSV: function toHSV() {
                var e,
                    t,
                    r = this.r,
                    n = this.g,
                    f = this.b,
                    a = Math.min(r, n, f),
                    o = Math.max(r, n, f),
                    i = o,
                    s = o - a;return 0 === s ? new d(0, 0, i, this.a) : (0 !== o ? (t = s / o, e = r == o ? (n - f) / s : n == o ? 2 + (f - r) / s : 4 + (r - n) / s, e *= 60, e < 0 && (e += 360)) : (t = 0, e = -1), new d(e, t, i, this.a));
            }, toHSL: function toHSL() {
                var e,
                    t,
                    r,
                    n = this.r,
                    f = this.g,
                    a = this.b,
                    o = Math.max(n, f, a),
                    i = Math.min(n, f, a),
                    s = (o + i) / 2;if (o == i) e = t = 0;else {
                    switch (r = o - i, t = s > .5 ? r / (2 - o - i) : r / (o + i), o) {case n:
                            e = (f - a) / r + (f < a ? 6 : 0);break;case f:
                            e = (a - n) / r + 2;break;case a:
                            e = (n - f) / r + 4;}e *= 60, t *= 100, s *= 100;
                }return new c(e, t, s, this.a);
            }, toBytes: function toBytes() {
                return new l(255 * this.r, 255 * this.g, 255 * this.b, this.a);
            } }), l = u.extend({ init: function init(e, t, r, n) {
                this.r = Math.round(e), this.g = Math.round(t), this.b = Math.round(r), this.a = n;
            }, toRGB: function toRGB() {
                return new u(this.r / 255, this.g / 255, this.b / 255, this.a);
            }, toHSV: function toHSV() {
                return this.toRGB().toHSV();
            }, toHSL: function toHSL() {
                return this.toRGB().toHSL();
            }, toHex: function toHex() {
                return f(this.r, 2) + f(this.g, 2) + f(this.b, 2);
            }, toBytes: function toBytes() {
                return this;
            } }), d = s.extend({ init: function init(e, t, r, n) {
                this.h = e, this.s = t, this.v = r, this.a = n;
            }, toRGB: function toRGB() {
                var e,
                    t,
                    r,
                    n,
                    f,
                    a,
                    o,
                    i,
                    s = this.h,
                    l = this.s,
                    d = this.v;if (0 === l) t = r = n = d;else switch (s /= 60, e = Math.floor(s), f = s - e, a = d * (1 - l), o = d * (1 - l * f), i = d * (1 - l * (1 - f)), e) {case 0:
                        t = d, r = i, n = a;break;case 1:
                        t = o, r = d, n = a;break;case 2:
                        t = a, r = d, n = i;break;case 3:
                        t = a, r = o, n = d;break;case 4:
                        t = i, r = a, n = d;break;default:
                        t = d, r = a, n = o;}return new u(t, r, n, this.a);
            }, toHSL: function toHSL() {
                return this.toRGB().toHSL();
            }, toBytes: function toBytes() {
                return this.toRGB().toBytes();
            } }), c = s.extend({ init: function init(e, t, r, n) {
                this.h = e, this.s = t, this.l = r, this.a = n;
            }, toRGB: function toRGB() {
                var e,
                    t,
                    r,
                    n,
                    f,
                    o = this.h,
                    i = this.s,
                    s = this.l;return 0 === i ? e = t = r = s : (o /= 360, i /= 100, s /= 100, n = s < .5 ? s * (1 + i) : s + i - s * i, f = 2 * s - n, e = a(f, n, o + 1 / 3), t = a(f, n, o), r = a(f, n, o - 1 / 3)), new u(e, t, r, this.a);
            }, toHSV: function toHSV() {
                return this.toRGB().toHSV();
            }, toBytes: function toBytes() {
                return this.toRGB().toBytes();
            } }), h.fromBytes = function (e, t, r, n) {
            return new l(e, t, r, null != n ? n : 1);
        }, h.fromRGB = function (e, t, r, n) {
            return new u(e, t, r, null != n ? n : 1);
        }, h.fromHSV = function (e, t, r, n) {
            return new d(e, t, r, null != n ? n : 1);
        }, h.fromHSL = function (e, t, r, n) {
            return new c(e, t, r, null != n ? n : 1);
        }, kendo.Color = h, kendo.parseColor = n;
    }(window.kendo.jQuery, parseFloat, parseInt);
}, "function" == typeof define && define.amd ? define : function (e, t, r) {
    (r || t)();
});;!function (e, define) {
    define("kendo.popup.min", ["kendo.core.min"], e);
}(function () {
    return function (e, t) {
        function o(t, o) {
            return !(!t || !o) && (t === o || e.contains(t, o));
        }var n = window.kendo,
            i = n.ui,
            s = i.Widget,
            r = n.support,
            a = n.getOffset,
            l = n._outerWidth,
            p = n._outerHeight,
            d = "open",
            c = "close",
            f = "deactivate",
            u = "activate",
            m = "center",
            h = "left",
            g = "right",
            w = "top",
            v = "bottom",
            _ = "absolute",
            k = "hidden",
            y = "body",
            z = "location",
            b = "position",
            C = "visible",
            x = "effects",
            T = "k-state-active",
            P = "k-state-border",
            E = /k-state-border-(\w+)/,
            S = ".k-picker-wrap, .k-dropdown-wrap, .k-link",
            O = "down",
            R = e(document.documentElement),
            I = e(window),
            A = "scroll",
            D = r.transitions.css,
            H = D + "transform",
            L = e.extend,
            W = ".kendoPopup",
            j = ["font-size", "font-family", "font-stretch", "font-style", "font-weight", "line-height"],
            M = s.extend({ init: function init(t, o) {
                var i,
                    a = this;o = o || {}, o.isRtl && (o.origin = o.origin || v + " " + g, o.position = o.position || w + " " + g), s.fn.init.call(a, t, o), t = a.element, o = a.options, a.collisions = o.collision ? o.collision.split(" ") : [], a.downEvent = n.applyEventMap(O, n.guid()), 1 === a.collisions.length && a.collisions.push(a.collisions[0]), i = e(a.options.anchor).closest(".k-popup,.k-group").filter(":not([class^=km-])"), o.appendTo = e(e(o.appendTo)[0] || i[0] || y), a.element.hide().addClass("k-popup k-group k-reset").toggleClass("k-rtl", !!o.isRtl).css({ position: _ }).appendTo(o.appendTo).on("mouseenter" + W, function () {
                    a._hovered = !0;
                }).on("mouseleave" + W, function () {
                    a._hovered = !1;
                }), a.wrapper = e(), o.animation === !1 && (o.animation = { open: { effects: {} }, close: { hide: !0, effects: {} } }), L(o.animation.open, { complete: function complete() {
                        a.wrapper.css({ overflow: C }), a._activated = !0, a._trigger(u);
                    } }), L(o.animation.close, { complete: function complete() {
                        a._animationClose();
                    } }), a._mousedownProxy = function (e) {
                    a._mousedown(e);
                }, a._resizeProxy = r.mobileOS.android ? function (e) {
                    setTimeout(function () {
                        a._resize(e);
                    }, 600);
                } : function (e) {
                    a._resize(e);
                }, o.toggleTarget && e(o.toggleTarget).on(o.toggleEvent + W, e.proxy(a.toggle, a));
            }, events: [d, u, c, f], options: { name: "Popup", toggleEvent: "click", origin: v + " " + h, position: w + " " + h, anchor: y, appendTo: null, collision: "flip fit", viewport: window, copyAnchorStyles: !0, autosize: !1, modal: !1, adjustSize: { width: 0, height: 0 }, animation: { open: { effects: "slideIn:down", transition: !0, duration: 200 }, close: { duration: 100, hide: !0 } } }, _animationClose: function _animationClose() {
                var e = this,
                    t = e.wrapper.data(z);e.wrapper.hide(), t && e.wrapper.css(t), e.options.anchor != y && e._hideDirClass(), e._closing = !1, e._trigger(f);
            }, destroy: function destroy() {
                var t,
                    o = this,
                    i = o.options,
                    r = o.element.off(W);s.fn.destroy.call(o), i.toggleTarget && e(i.toggleTarget).off(W), i.modal || (R.unbind(o.downEvent, o._mousedownProxy), o._toggleResize(!1)), n.destroy(o.element.children()), r.removeData(), i.appendTo[0] === document.body && (t = r.parent(".k-animation-container"), t[0] ? t.remove() : r.remove());
            }, open: function open(t, o) {
                var i,
                    s,
                    a = this,
                    l = { isFixed: !isNaN(parseInt(o, 10)), x: t, y: o },
                    p = a.element,
                    c = a.options,
                    f = e(c.anchor),
                    u = p[0] && p.hasClass("km-widget");if (!a.visible()) {
                    if (c.copyAnchorStyles && (u && "font-size" == j[0] && j.shift(), p.css(n.getComputedStyles(f[0], j))), p.data("animating") || a._trigger(d)) return;a._activated = !1, c.modal || (R.unbind(a.downEvent, a._mousedownProxy).bind(a.downEvent, a._mousedownProxy), a._toggleResize(!1), a._toggleResize(!0)), a.wrapper = s = n.wrap(p, c.autosize).css({ overflow: k, display: "block", position: _ }), r.mobileOS.android && s.css(H, "translatez(0)"), s.css(b), e(c.appendTo)[0] == document.body && s.css(w, "-10000px"), a.flipped = a._position(l), i = a._openAnimation(), c.anchor != y && a._showDirClass(i), p.data(x, i.effects).kendoStop(!0).kendoAnimate(i);
                }
            }, _openAnimation: function _openAnimation() {
                var e = L(!0, {}, this.options.animation.open);return e.effects = n.parseEffects(e.effects, this.flipped), e;
            }, _hideDirClass: function _hideDirClass() {
                var t = e(this.options.anchor),
                    o = ((t.attr("class") || "").match(E) || ["", "down"])[1],
                    i = P + "-" + o;t.removeClass(i).children(S).removeClass(T).removeClass(i), this.element.removeClass(P + "-" + n.directions[o].reverse);
            }, _showDirClass: function _showDirClass(t) {
                var o = t.effects.slideIn ? t.effects.slideIn.direction : "down",
                    i = P + "-" + o;e(this.options.anchor).addClass(i).children(S).addClass(T).addClass(i), this.element.addClass(P + "-" + n.directions[o].reverse);
            }, position: function position() {
                this.visible() && (this.flipped = this._position());
            }, toggle: function toggle() {
                var e = this;e[e.visible() ? c : d]();
            }, visible: function visible() {
                return this.element.is(":" + C);
            }, close: function close(o) {
                var i,
                    s,
                    r,
                    a,
                    l = this,
                    p = l.options;if (l.visible()) {
                    if (i = l.wrapper[0] ? l.wrapper : n.wrap(l.element).hide(), l._toggleResize(!1), l._closing || l._trigger(c)) return l._toggleResize(!0), t;l.element.find(".k-popup").each(function () {
                        var t = e(this),
                            n = t.data("kendoPopup");n && n.close(o);
                    }), R.unbind(l.downEvent, l._mousedownProxy), o ? s = { hide: !0, effects: {} } : (s = L(!0, {}, p.animation.close), r = l.element.data(x), a = s.effects, !a && !n.size(a) && r && n.size(r) && (s.effects = r, s.reverse = !0), l._closing = !0), l.element.kendoStop(!0), i.css({ overflow: k }), l.element.kendoAnimate(s), o && l._animationClose();
                }
            }, _trigger: function _trigger(e) {
                return this.trigger(e, { type: e });
            }, _resize: function _resize(e) {
                var t = this;r.resize.indexOf(e.type) !== -1 ? (clearTimeout(t._resizeTimeout), t._resizeTimeout = setTimeout(function () {
                    t._position(), t._resizeTimeout = null;
                }, 50)) : (!t._hovered || t._activated && t.element.hasClass("k-list-container")) && t.close();
            }, _toggleResize: function _toggleResize(e) {
                var t = e ? "on" : "off",
                    o = r.resize;r.mobileOS.ios || r.mobileOS.android || (o += " " + A), this._scrollableParents()[t](A, this._resizeProxy), I[t](o, this._resizeProxy);
            }, _mousedown: function _mousedown(t) {
                var i = this,
                    s = i.element[0],
                    r = i.options,
                    a = e(r.anchor)[0],
                    l = r.toggleTarget,
                    p = n.eventTarget(t),
                    d = e(p).closest(".k-popup"),
                    c = d.parent().parent(".km-shim").length;d = d[0], !c && d && d !== i.element[0] || "popover" !== e(t.target).closest("a").data("rel") && (o(s, p) || o(a, p) || l && o(e(l)[0], p) || i.close());
            }, _fit: function _fit(e, t, o) {
                var n = 0;return e + t > o && (n = o - (e + t)), e < 0 && (n = -e), n;
            }, _flip: function _flip(e, t, o, n, i, s, r) {
                var a = 0;return r = r || t, s !== i && s !== m && i !== m && (e + r > n && (a += -(o + t)), e + a < 0 && (a += o + t)), a;
            }, _scrollableParents: function _scrollableParents() {
                return e(this.options.anchor).parentsUntil("body").filter(function (e, t) {
                    return n.isScrollable(t);
                });
            }, _position: function _position(t) {
                var o,
                    i,
                    s,
                    d,
                    c,
                    f,
                    u,
                    m,
                    h,
                    g,
                    w,
                    v,
                    k,
                    y,
                    C,
                    x,
                    T = this,
                    P = T.element,
                    E = T.wrapper,
                    S = T.options,
                    O = e(S.viewport),
                    R = r.zoomLevel(),
                    I = !!(O[0] == window && window.innerWidth && R <= 1.02),
                    A = e(S.anchor),
                    D = S.origin.toLowerCase().split(" "),
                    H = S.position.toLowerCase().split(" "),
                    W = T.collisions,
                    j = 10002,
                    M = 0,
                    F = document.documentElement;if (c = S.viewport === window ? { top: window.pageYOffset || document.documentElement.scrollTop || 0, left: window.pageXOffset || document.documentElement.scrollLeft || 0 } : O.offset(), I ? (f = window.innerWidth, u = window.innerHeight) : (f = O.width(), u = O.height()), I && F.scrollHeight - F.clientHeight > 0 && (f -= n.support.scrollbar()), o = A.parents().filter(E.siblings()), o[0]) if (s = Math.max(+o.css("zIndex"), 0)) j = s + 10;else for (i = A.parentsUntil(o), d = i.length; M < d; M++) {
                    s = +e(i[M]).css("zIndex"), s && j < s && (j = s + 10);
                }return E.css("zIndex", j), E.css(t && t.isFixed ? { left: t.x, top: t.y } : T._align(D, H)), m = a(E, b, A[0] === E.offsetParent()[0]), h = a(E), g = A.offsetParent().parent(".k-animation-container,.k-popup,.k-group"), g.length && (m = a(E, b, !0), h = a(E)), h.top -= c.top, h.left -= c.left, T.wrapper.data(z) || E.data(z, L({}, m)), w = L({}, h), v = L({}, m), k = S.adjustSize, "fit" === W[0] && (v.top += T._fit(w.top, p(E) + k.height, u / R)), "fit" === W[1] && (v.left += T._fit(w.left, l(E) + k.width, f / R)), y = L({}, v), C = p(P), x = p(E), !E.height() && C && (x += C), "flip" === W[0] && (v.top += T._flip(w.top, C, p(A), u / R, D[0], H[0], x)), "flip" === W[1] && (v.left += T._flip(w.left, l(P), l(A), f / R, D[1], H[1], l(E))), P.css(b, _), E.css(v), v.left != y.left || v.top != y.top;
            }, _align: function _align(t, o) {
                var n,
                    i = this,
                    s = i.wrapper,
                    r = e(i.options.anchor),
                    d = t[0],
                    c = t[1],
                    f = o[0],
                    u = o[1],
                    h = a(r),
                    w = e(i.options.appendTo),
                    _ = l(s),
                    k = p(s),
                    y = l(r),
                    z = p(r),
                    b = h.top,
                    C = h.left,
                    x = Math.round;return w[0] != document.body && (n = a(w), b -= n.top, C -= n.left), d === v && (b += z), d === m && (b += x(z / 2)), f === v && (b -= k), f === m && (b -= x(k / 2)), c === g && (C += y), c === m && (C += x(y / 2)), u === g && (C -= _), u === m && (C -= x(_ / 2)), { top: b, left: C };
            } });i.plugin(M);
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, t, o) {
    (o || t)();
});;!function (t, define) {
    define("util/main.min", ["kendo.core.min"], t);
}(function () {
    return function () {
        function t(t) {
            return (typeof t === "undefined" ? "undefined" : _typeof(t)) !== F;
        }function e(t, e) {
            var i = n(e);return z.round(t * i) / i;
        }function n(t) {
            return t ? z.pow(10, t) : 1;
        }function i(t, e, n) {
            return z.max(z.min(t, n), e);
        }function r(t) {
            return t * D;
        }function o(t) {
            return t / D;
        }function s(t) {
            return "number" == typeof t && !isNaN(t);
        }function a(e, n) {
            return t(e) ? e : n;
        }function h(t) {
            return t * t;
        }function l(t) {
            var e,
                n = [];for (e in t) {
                n.push(e + t[e]);
            }return n.sort().join("");
        }function c(t) {
            var e,
                n = 2166136261;for (e = 0; e < t.length; ++e) {
                n += (n << 1) + (n << 4) + (n << 7) + (n << 8) + (n << 24), n ^= t.charCodeAt(e);
            }return n >>> 0;
        }function u(t) {
            return c(l(t));
        }function f(t) {
            var e,
                n = t.length,
                i = L,
                r = I;for (e = 0; e < n; e++) {
                r = z.max(r, t[e]), i = z.min(i, t[e]);
            }return { min: i, max: r };
        }function d(t) {
            return f(t).min;
        }function p(t) {
            return f(t).max;
        }function m(t) {
            return v(t).min;
        }function g(t) {
            return v(t).max;
        }function v(t) {
            var e,
                n,
                i,
                r = L,
                o = I;for (e = 0, n = t.length; e < n; e++) {
                i = t[e], null !== i && isFinite(i) && (r = z.min(r, i), o = z.max(o, i));
            }return { min: r === L ? void 0 : r, max: o === I ? void 0 : o };
        }function x(t) {
            if (t) return t[t.length - 1];
        }function y(t, e) {
            return t.push.apply(t, e), t;
        }function w(t) {
            return M.template(t, { useWithBlock: !1, paramName: "d" });
        }function b(e, n) {
            return t(n) && null !== n ? " " + e + "='" + n + "' " : "";
        }function _(t) {
            var e,
                n = "";for (e = 0; e < t.length; e++) {
                n += b(t[e][0], t[e][1]);
            }return n;
        }function C(e) {
            var n,
                i,
                r = "";for (n = 0; n < e.length; n++) {
                i = e[n][1], t(i) && (r += e[n][0] + ":" + i + ";");
            }if ("" !== r) return r;
        }function T(t) {
            return "string" != typeof t && (t += "px"), t;
        }function k(t) {
            var e,
                n,
                i = [];if (t) for (e = M.toHyphens(t).split("-"), n = 0; n < e.length; n++) {
                i.push("k-pos-" + e[n]);
            }return i.join(" ");
        }function S(e) {
            return "" === e || null === e || "none" === e || "transparent" === e || !t(e);
        }function E(t) {
            for (var e = { 1: "i", 10: "x", 100: "c", 2: "ii", 20: "xx", 200: "cc", 3: "iii", 30: "xxx", 300: "ccc", 4: "iv", 40: "xl", 400: "cd", 5: "v", 50: "l", 500: "d", 6: "vi", 60: "lx", 600: "dc", 7: "vii", 70: "lxx", 700: "dcc", 8: "viii", 80: "lxxx", 800: "dccc", 9: "ix", 90: "xc", 900: "cm", 1e3: "m" }, n = [1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], i = ""; t > 0;) {
                t < n[0] ? n.shift() : (i += e[n[0]], t -= n[0]);
            }return i;
        }function P(t) {
            var e, n, i, r, o;for (t = t.toLowerCase(), e = { i: 1, v: 5, x: 10, l: 50, c: 100, d: 500, m: 1e3 }, n = 0, i = 0, r = 0; r < t.length; ++r) {
                if (o = e[t.charAt(r)], !o) return null;n += o, o > i && (n -= 2 * i), i = o;
            }return n;
        }function A(t) {
            var e = Object.create(null);return function () {
                var n,
                    i = "";for (n = arguments.length; --n >= 0;) {
                    i += ":" + arguments[n];
                }return i in e ? e[i] : e[i] = t.apply(this, arguments);
            };
        }function O(t) {
            for (var e, n, i = [], r = 0, o = t.length; r < o;) {
                e = t.charCodeAt(r++), e >= 55296 && e <= 56319 && r < o ? (n = t.charCodeAt(r++), 56320 == (64512 & n) ? i.push(((1023 & e) << 10) + (1023 & n) + 65536) : (i.push(e), r--)) : i.push(e);
            }return i;
        }function N(t) {
            return t.map(function (t) {
                var e = "";return t > 65535 && (t -= 65536, e += String.fromCharCode(t >>> 10 & 1023 | 55296), t = 56320 | 1023 & t), e += String.fromCharCode(t);
            }).join("");
        }function R(t, e) {
            function n(t, n) {
                for (var i = [], r = 0, o = 0, s = 0; r < t.length && o < n.length;) {
                    e(t[r], n[o]) <= 0 ? i[s++] = t[r++] : i[s++] = n[o++];
                }return r < t.length && i.push.apply(i, t.slice(r)), o < n.length && i.push.apply(i, n.slice(o)), i;
            }return t.length < 2 ? t.slice() : function i(t) {
                var e, r, o;return t.length <= 1 ? t : (e = Math.floor(t.length / 2), r = t.slice(0, e), o = t.slice(e), r = i(r), o = i(o), n(r, o));
            }(t);
        }var z = Math,
            M = window.kendo,
            B = M.deepExtend,
            D = z.PI / 180,
            L = Number.MAX_VALUE,
            I = -Number.MAX_VALUE,
            F = "undefined",
            G = Date.now;G || (G = function G() {
            return new Date().getTime();
        }), B(M, { util: { MAX_NUM: L, MIN_NUM: I, append: y, arrayLimits: f, arrayMin: d, arrayMax: p, defined: t, deg: o, hashKey: c, hashObject: u, isNumber: s, isTransparent: S, last: x, limitValue: i, now: G, objectKey: l, round: e, rad: r, renderAttr: b, renderAllAttr: _, renderPos: k, renderSize: T, renderStyle: C, renderTemplate: w, sparseArrayLimits: v, sparseArrayMin: m, sparseArrayMax: g, sqr: h, valueOrDefault: a, romanToArabic: P, arabicToRoman: E, memoize: A, ucs2encode: N, ucs2decode: O, mergeSort: R } }), M.drawing.util = M.util, M.dataviz.util = M.util;
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("util/text-metrics.min", ["kendo.core.min", "util/main.min"], t);
}(function () {
    !function (t) {
        function e() {
            return { width: 0, height: 0, baseline: 0 };
        }function n(t, e, n) {
            return u.current.measure(t, e, n);
        }function i(t, e) {
            var n = [];if (t.length > 0 && document.fonts) {
                try {
                    n = t.map(function (t) {
                        return document.fonts.load(t);
                    });
                } catch (i) {
                    o.logToConsole(i);
                }Promise.all(n).then(e, e);
            } else e();
        }var r = document,
            o = window.kendo,
            s = o.Class,
            a = o.util,
            h = a.defined,
            l = s.extend({ init: function init(t) {
                this._size = t, this._length = 0, this._map = {};
            }, put: function put(t, e) {
                var n = this,
                    i = n._map,
                    r = { key: t, value: e };i[t] = r, n._head ? (n._tail.newer = r, r.older = n._tail, n._tail = r) : n._head = n._tail = r, n._length >= n._size ? (i[n._head.key] = null, n._head = n._head.newer, n._head.older = null) : n._length++;
            }, get: function get(t) {
                var e = this,
                    n = e._map[t];if (n) return n === e._head && n !== e._tail && (e._head = n.newer, e._head.older = null), n !== e._tail && (n.older && (n.older.newer = n.newer, n.newer.older = n.older), n.older = e._tail, n.newer = null, e._tail.newer = n, e._tail = n), n.value;
            } }),
            c = t("<div style='position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;padding: 0 !important; margin: 0 !important; border: 0 !important;line-height: normal !important; visibility: hidden !important; white-space: nowrap!important;' />")[0],
            u = s.extend({ init: function init(t) {
                this._cache = new l(1e3), this._initOptions(t);
            }, options: { baselineMarkerSize: 1 }, measure: function measure(n, i, o) {
                var s, l, u, f, d, p, m, g;if (!n) return e();if (s = a.objectKey(i), l = a.hashKey(n + s), u = this._cache.get(l), u) return u;f = e(), d = o ? o : c, p = this._baselineMarker().cloneNode(!1);for (m in i) {
                    g = i[m], h(g) && (d.style[m] = g);
                }return t(d).text(n), d.appendChild(p), r.body.appendChild(d), (n + "").length && (f.width = d.offsetWidth - this.options.baselineMarkerSize, f.height = d.offsetHeight, f.baseline = p.offsetTop + this.options.baselineMarkerSize), f.width > 0 && f.height > 0 && this._cache.put(l, f), d.parentNode.removeChild(d), f;
            }, _baselineMarker: function _baselineMarker() {
                return t("<div class='k-baseline-marker' style='display: inline-block; vertical-align: baseline;width: " + this.options.baselineMarkerSize + "px; height: " + this.options.baselineMarkerSize + "px;overflow: hidden;' />")[0];
            } });u.current = new u(), o.util.TextMetrics = u, o.util.LRUCache = l, o.util.loadFonts = i, o.util.measureText = n;
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("util/base64.min", ["util/main.min"], t);
}(function () {
    return function () {
        function t(t) {
            var n,
                i,
                r,
                s,
                a,
                h,
                l,
                c = "",
                u = 0;for (t = e(t); u < t.length;) {
                n = t.charCodeAt(u++), i = t.charCodeAt(u++), r = t.charCodeAt(u++), s = n >> 2, a = (3 & n) << 4 | i >> 4, h = (15 & i) << 2 | r >> 6, l = 63 & r, isNaN(i) ? h = l = 64 : isNaN(r) && (l = 64), c = c + o.charAt(s) + o.charAt(a) + o.charAt(h) + o.charAt(l);
            }return c;
        }function e(t) {
            var e,
                n,
                i = "";for (e = 0; e < t.length; e++) {
                n = t.charCodeAt(e), n < 128 ? i += r(n) : n < 2048 ? (i += r(192 | n >>> 6), i += r(128 | 63 & n)) : n < 65536 && (i += r(224 | n >>> 12), i += r(128 | n >>> 6 & 63), i += r(128 | 63 & n));
            }return i;
        }var n = window.kendo,
            i = n.deepExtend,
            r = String.fromCharCode,
            o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";i(n.util, { encodeBase64: t, encodeUTF8: e });
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("mixins/observers.min", ["kendo.core.min"], t);
}(function () {
    return function (t) {
        var e = Math,
            n = window.kendo,
            i = n.deepExtend,
            r = t.inArray,
            o = { observers: function observers() {
                return this._observers = this._observers || [];
            }, addObserver: function addObserver(t) {
                return this._observers ? this._observers.push(t) : this._observers = [t], this;
            }, removeObserver: function removeObserver(t) {
                var e = this.observers(),
                    n = r(t, e);return n != -1 && e.splice(n, 1), this;
            }, trigger: function trigger(t, e) {
                var n,
                    i,
                    r = this._observers;if (r && !this._suspended) for (i = 0; i < r.length; i++) {
                    n = r[i], n[t] && n[t](e);
                }return this;
            }, optionsChange: function optionsChange(t) {
                t = t || {}, t.element = this, this.trigger("optionsChange", t);
            }, geometryChange: function geometryChange() {
                this.trigger("geometryChange", { element: this });
            }, suspend: function suspend() {
                return this._suspended = (this._suspended || 0) + 1, this;
            }, resume: function resume() {
                return this._suspended = e.max((this._suspended || 0) - 1, 0), this;
            }, _observerField: function _observerField(t, e) {
                this[t] && this[t].removeObserver(this), this[t] = e, e.addObserver(this);
            } };i(n, { mixins: { ObserversMixin: o } });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("drawing/geometry.min", ["util/main.min", "mixins/observers.min"], t);
}(function () {
    return function () {
        function t(t) {
            return null === t ? null : t instanceof E ? t : new E(t);
        }function e(t) {
            return t && N.isFunction(t.matrix) ? t.matrix() : t;
        }function n(t, e, n, i) {
            var r = 0,
                o = 0;return i && (r = A.atan2(i.c * n, i.a * e), 0 !== i.b && (o = A.atan2(i.d * n, i.b * e))), { x: r, y: o };
        }function i(t, e) {
            for (; t < e;) {
                t += 90;
            }return t;
        }function r(t, e) {
            var n, i, r;for (n = 0; n < e.length; n++) {
                i = e[n], r = i.charAt(0).toUpperCase() + i.substring(1, i.length), t["set" + r] = o(i), t["get" + r] = s(i);
            }
        }function o(t) {
            return function (e) {
                return this[t] !== e && (this[t] = e, this.geometryChange()), this;
            };
        }function s(t) {
            return function () {
                return this[t];
            };
        }function a(t, e, n) {
            t > e && (e += 360);var i = A.abs(e - t);return n || (i = 360 - i), i;
        }function h(t, e, n, i, r, o) {
            var s = F((r - t) / n, 3),
                a = F((o - e) / i, 3);return F(I(A.atan2(a, s)));
        }function l(t, e, n, i, r, o, s, l) {
            var c, u, f, d, p, m, g, v, x, y, w, b, _, C, T, k, S, E;if (e !== i) x = n - t, y = i - e, w = O(r, 2), b = O(o, 2), _ = (b * x * (t + n) + w * y * (e + i)) / (2 * w * y), C = _ - i, T = -(x * b) / (w * y), p = 1 / w + O(T, 2) / b, m = 2 * (T * C / b - n / w), g = O(n, 2) / w + O(C, 2) / b - 1, v = A.sqrt(O(m, 2) - 4 * p * g), c = (-m - v) / (2 * p), u = _ + T * c, f = (-m + v) / (2 * p), d = _ + T * f;else {
                if (t === n) return !1;m = -2 * i, g = O((n - t) * o / (2 * r), 2) + O(i, 2) - O(o, 2), v = A.sqrt(O(m, 2) - 4 * g), c = f = (t + n) / 2, u = (-m - v) / 2, d = (-m + v) / 2;
            }return k = h(c, u, r, o, t, e), S = h(c, u, r, o, n, i), E = a(k, S, l), (s && E <= 180 || !s && E > 180) && (c = f, u = d, k = h(c, u, r, o, t, e), S = h(c, u, r, o, n, i)), { center: new $(c, u), startAngle: k, endAngle: S };
        }function c(t, e, n, i) {
            if (0 === t) return b(e, n, i);var r,
                o,
                s,
                a,
                h,
                l,
                c,
                u = (3 * t * n - A.pow(e, 2)) / (3 * A.pow(t, 2)),
                f = (2 * A.pow(e, 3) - 9 * t * e * n + 27 * A.pow(t, 2) * i) / (27 * A.pow(t, 3)),
                d = A.pow(u / 3, 3) + A.pow(f / 2, 2),
                p = new P(0, 1),
                m = -e / (3 * t),
                g = [];return d < 0 ? (r = new P(-f / 2, A.sqrt(-d)).nthRoot(3), o = new P(-f / 2, -A.sqrt(-d)).nthRoot(3)) : (r = -f / 2 + A.sqrt(d), r = new P(x(r) * A.pow(A.abs(r), 1 / 3)), o = -f / 2 - A.sqrt(d), o = new P(x(o) * A.pow(A.abs(o), 1 / 3))), s = r.add(o), l = r.add(o).multiplyConstant(-.5), c = r.add(o.negate()).multiplyConstant(A.sqrt(3) / 2), a = l.add(p.multiply(c)), h = l.add(p.negate().multiply(c)), s.isReal() && g.push(F(s.real + m, q)), a.isReal() && g.push(F(a.real + m, q)), h.isReal() && g.push(F(h.real + m, q)), g;
        }function u(t, e) {
            return [-t[0][e] + 3 * t[1][e] - 3 * t[2][e] + t[3][e], 3 * (t[0][e] - 2 * t[1][e] + t[2][e]), 3 * (-t[0][e] + t[1][e]), t[0][e]];
        }function f(t, e, n) {
            var i = 1 - t;return A.pow(i, 3) * n[0][e] + 3 * A.pow(i, 2) * t * n[1][e] + 3 * A.pow(t, 2) * i * n[2][e] + A.pow(t, 3) * n[3][e];
        }function d(t, e, n) {
            var i,
                r,
                o,
                s = u(t, "x"),
                a = c(s[0], s[1], s[2], s[3] - e.x),
                h = 0;for (o = 0; o < a.length; o++) {
                i = f(a[o], "y", t), r = g(i, e.y) || i > e.y, r && ((0 === a[o] || 1 === a[o]) && n.bottomRight().x > e.x || 0 < a[o] && a[o] < 1) && h++;
            }return h;
        }function p(t, e, n) {
            var i, r, o, s, a, h;return t.x != e.x && (r = A.min(t.x, e.x), o = A.max(t.x, e.x), s = A.min(t.y, e.y), a = A.max(t.y, e.y), h = r <= n.x && n.x < o, i = s == a ? n.y <= s && h : h && (a - s) * ((t.x - e.x) * (t.y - e.y) > 0 ? n.x - r : o - n.x) / (o - r) + s - n.y >= 0), i ? 1 : 0;
        }function m(t, e, n, i) {
            var r = e.x - t.x,
                o = i.x - n.x,
                s = e.y - t.y,
                a = i.y - n.y,
                h = t.x - n.x,
                l = t.y - n.y,
                c = r * a - o * s,
                u = (r * l - s * h) / c,
                f = (o * l - a * h) / c;if (u >= 0 && u <= 1 && f >= 0 && f <= 1) return new $(t.x + f * r, t.y + f * s);
        }function g(t, e, n) {
            return 0 === F(A.abs(t - e), n || q);
        }function v(t, e, n) {
            return t < e || g(t, e, n);
        }function x(t) {
            return t < 0 ? -1 : 1;
        }function y(e, n, i) {
            var r = B.deg(A.atan2(n.y - e.y, n.x - e.x)),
                o = i.transformCopy(t().rotate(-r, e));return o.x < e.x;
        }function w(t, e, n, i, r) {
            var o,
                s,
                a = u(t, i),
                h = c(a[0], a[1], a[2], a[3] - e[i]);for (s = 0; s < h.length; s++) {
                if (0 <= h[s] && h[s] <= 1 && (o = f(h[s], n, t), A.abs(o - e[n]) <= r)) return !0;
            }
        }function b(t, e, n) {
            var i = A.sqrt(A.pow(e, 2) - 4 * t * n);return [(-e + i) / (2 * t), (-e - i) / (2 * t)];
        }var _,
            C,
            T,
            k,
            S,
            E,
            P,
            A = Math,
            O = A.pow,
            N = window.kendo,
            R = N.Class,
            z = N.deepExtend,
            M = N.mixins.ObserversMixin,
            B = N.util,
            D = B.defined,
            L = B.rad,
            I = B.deg,
            F = B.round,
            G = A.PI / 2,
            j = B.MIN_NUM,
            H = B.MAX_NUM,
            q = 10,
            $ = R.extend({ init: function init(t, e) {
                this.x = t || 0, this.y = e || 0;
            }, equals: function equals(t) {
                return t && t.x === this.x && t.y === this.y;
            }, clone: function clone() {
                return new $(this.x, this.y);
            }, rotate: function rotate(e, n) {
                return this.transform(t().rotate(e, n));
            }, translate: function translate(t, e) {
                return this.x += t, this.y += e, this.geometryChange(), this;
            }, translateWith: function translateWith(t) {
                return this.translate(t.x, t.y);
            }, move: function move(t, e) {
                return this.x = this.y = 0, this.translate(t, e);
            }, scale: function scale(t, e) {
                return D(e) || (e = t), this.x *= t, this.y *= e, this.geometryChange(), this;
            }, scaleCopy: function scaleCopy(t, e) {
                return this.clone().scale(t, e);
            }, transform: function transform(t) {
                var n = e(t),
                    i = this.x,
                    r = this.y;return this.x = n.a * i + n.c * r + n.e, this.y = n.b * i + n.d * r + n.f, this.geometryChange(), this;
            }, transformCopy: function transformCopy(t) {
                var e = this.clone();return t && e.transform(t), e;
            }, distanceTo: function distanceTo(t) {
                var e = this.x - t.x,
                    n = this.y - t.y;return A.sqrt(e * e + n * n);
            }, round: function round(t) {
                return this.x = F(this.x, t), this.y = F(this.y, t), this.geometryChange(), this;
            }, toArray: function toArray(t) {
                var e = D(t),
                    n = e ? F(this.x, t) : this.x,
                    i = e ? F(this.y, t) : this.y;return [n, i];
            } });r($.fn, ["x", "y"]), z($.fn, M), $.fn.toString = function (t, e) {
            var n = this.x,
                i = this.y;return D(t) && (n = F(n, t), i = F(i, t)), e = e || " ", n + e + i;
        }, $.create = function (t, e) {
            if (D(t)) return t instanceof $ ? t : 1 === arguments.length && 2 === t.length ? new $(t[0], t[1]) : new $(t, e);
        }, $.min = function () {
            var t,
                e,
                n = B.MAX_NUM,
                i = B.MAX_NUM;for (t = 0; t < arguments.length; t++) {
                e = arguments[t], n = A.min(e.x, n), i = A.min(e.y, i);
            }return new $(n, i);
        }, $.max = function () {
            var t,
                e,
                n = B.MIN_NUM,
                i = B.MIN_NUM;for (t = 0; t < arguments.length; t++) {
                e = arguments[t], n = A.max(e.x, n), i = A.max(e.y, i);
            }return new $(n, i);
        }, $.minPoint = function () {
            return new $(j, j);
        }, $.maxPoint = function () {
            return new $(H, H);
        }, $.ZERO = new $(0, 0), _ = R.extend({ init: function init(t, e) {
                this.width = t || 0, this.height = e || 0;
            }, equals: function equals(t) {
                return t && t.width === this.width && t.height === this.height;
            }, clone: function clone() {
                return new _(this.width, this.height);
            }, toArray: function toArray(t) {
                var e = D(t),
                    n = e ? F(this.width, t) : this.width,
                    i = e ? F(this.height, t) : this.height;return [n, i];
            } }), r(_.fn, ["width", "height"]), z(_.fn, M), _.create = function (t, e) {
            if (D(t)) return t instanceof _ ? t : 1 === arguments.length && 2 === t.length ? new _(t[0], t[1]) : new _(t, e);
        }, _.ZERO = new _(0, 0), C = R.extend({ init: function init(t, e) {
                this.setOrigin(t || new $()), this.setSize(e || new _());
            }, clone: function clone() {
                return new C(this.origin.clone(), this.size.clone());
            }, equals: function equals(t) {
                return t && t.origin.equals(this.origin) && t.size.equals(this.size);
            }, setOrigin: function setOrigin(t) {
                return this._observerField("origin", $.create(t)), this.geometryChange(), this;
            }, getOrigin: function getOrigin() {
                return this.origin;
            }, setSize: function setSize(t) {
                return this._observerField("size", _.create(t)), this.geometryChange(), this;
            }, getSize: function getSize() {
                return this.size;
            }, width: function width() {
                return this.size.width;
            }, height: function height() {
                return this.size.height;
            }, topLeft: function topLeft() {
                return this.origin.clone();
            }, bottomRight: function bottomRight() {
                return this.origin.clone().translate(this.width(), this.height());
            }, topRight: function topRight() {
                return this.origin.clone().translate(this.width(), 0);
            }, bottomLeft: function bottomLeft() {
                return this.origin.clone().translate(0, this.height());
            }, center: function center() {
                return this.origin.clone().translate(this.width() / 2, this.height() / 2);
            }, bbox: function bbox(t) {
                var e = this.topLeft().transformCopy(t),
                    n = this.topRight().transformCopy(t),
                    i = this.bottomRight().transformCopy(t),
                    r = this.bottomLeft().transformCopy(t);return C.fromPoints(e, n, i, r);
            }, transformCopy: function transformCopy(t) {
                return C.fromPoints(this.topLeft().transform(t), this.bottomRight().transform(t));
            }, expand: function expand(t, e) {
                return D(e) || (e = t), this.size.width += 2 * t, this.size.height += 2 * e, this.origin.translate(-t, -e), this;
            }, expandCopy: function expandCopy(t, e) {
                return this.clone().expand(t, e);
            }, containsPoint: function containsPoint(t) {
                var e = this.origin,
                    n = this.bottomRight();return !(t.x < e.x || t.y < e.y || n.x < t.x || n.y < t.y);
            }, _isOnPath: function _isOnPath(t, e) {
                var n = this.expandCopy(e, e),
                    i = this.expandCopy(-e, -e);return n.containsPoint(t) && !i.containsPoint(t);
            } }), z(C.fn, M), C.fromPoints = function () {
            var t = $.min.apply(this, arguments),
                e = $.max.apply(this, arguments),
                n = new _(e.x - t.x, e.y - t.y);return new C(t, n);
        }, C.union = function (t, e) {
            return C.fromPoints($.min(t.topLeft(), e.topLeft()), $.max(t.bottomRight(), e.bottomRight()));
        }, C.intersect = function (t, e) {
            if (t = { left: t.topLeft().x, top: t.topLeft().y, right: t.bottomRight().x, bottom: t.bottomRight().y }, e = { left: e.topLeft().x, top: e.topLeft().y, right: e.bottomRight().x, bottom: e.bottomRight().y }, t.left <= e.right && e.left <= t.right && t.top <= e.bottom && e.top <= t.bottom) return C.fromPoints(new $(A.max(t.left, e.left), A.max(t.top, e.top)), new $(A.min(t.right, e.right), A.min(t.bottom, e.bottom)));
        }, T = R.extend({ init: function init(t, e) {
                this.setCenter(t || new $()), this.setRadius(e || 0);
            }, setCenter: function setCenter(t) {
                return this._observerField("center", $.create(t)), this.geometryChange(), this;
            }, getCenter: function getCenter() {
                return this.center;
            }, equals: function equals(t) {
                return t && t.center.equals(this.center) && t.radius === this.radius;
            }, clone: function clone() {
                return new T(this.center.clone(), this.radius);
            }, pointAt: function pointAt(t) {
                return this._pointAt(L(t));
            }, bbox: function bbox(t) {
                var e,
                    i,
                    r,
                    o,
                    s = $.maxPoint(),
                    a = $.minPoint(),
                    h = n(this.center, this.radius, this.radius, t);for (e = 0; e < 4; e++) {
                    i = this._pointAt(h.x + e * G).transformCopy(t), r = this._pointAt(h.y + e * G).transformCopy(t), o = new $(i.x, r.y), s = $.min(s, o), a = $.max(a, o);
                }return C.fromPoints(s, a);
            }, _pointAt: function _pointAt(t) {
                var e = this.center,
                    n = this.radius;return new $(e.x - n * A.cos(t), e.y - n * A.sin(t));
            }, containsPoint: function containsPoint(t) {
                var e = this.center,
                    n = A.pow(t.x - e.x, 2) + A.pow(t.y - e.y, 2) <= A.pow(this.radius, 2);return n;
            }, _isOnPath: function _isOnPath(t, e) {
                var n = this.center,
                    i = this.radius,
                    r = n.distanceTo(t);return i - e <= r && r <= i + e;
            } }), r(T.fn, ["radius"]), z(T.fn, M), k = R.extend({ init: function init(t, e) {
                this.setCenter(t || new $()), e = e || {}, this.radiusX = e.radiusX, this.radiusY = e.radiusY || e.radiusX, this.startAngle = e.startAngle, this.endAngle = e.endAngle, this.anticlockwise = e.anticlockwise || !1;
            }, clone: function clone() {
                return new k(this.center, { radiusX: this.radiusX, radiusY: this.radiusY, startAngle: this.startAngle, endAngle: this.endAngle, anticlockwise: this.anticlockwise });
            }, setCenter: function setCenter(t) {
                return this._observerField("center", $.create(t)), this.geometryChange(), this;
            }, getCenter: function getCenter() {
                return this.center;
            }, MAX_INTERVAL: 45, pointAt: function pointAt(t) {
                var e = this.center,
                    n = L(t);return new $(e.x + this.radiusX * A.cos(n), e.y + this.radiusY * A.sin(n));
            }, curvePoints: function curvePoints() {
                var t,
                    e,
                    n,
                    i = this.startAngle,
                    r = this.anticlockwise ? -1 : 1,
                    o = [this.pointAt(i)],
                    s = i,
                    a = this._arcInterval(),
                    h = a.endAngle - a.startAngle,
                    l = A.ceil(h / this.MAX_INTERVAL),
                    c = h / l;for (t = 1; t <= l; t++) {
                    e = s + r * c, n = this._intervalCurvePoints(s, e), o.push(n.cp1, n.cp2, n.p2), s = e;
                }return o;
            }, bbox: function bbox(t) {
                for (var e, r, o = this, s = o._arcInterval(), a = s.startAngle, h = s.endAngle, l = n(this.center, this.radiusX, this.radiusY, t), c = I(l.x), u = I(l.y), f = o.pointAt(a).transformCopy(t), d = o.pointAt(h).transformCopy(t), p = $.min(f, d), m = $.max(f, d), g = i(c, a), v = i(u, a); g < h || v < h;) {
                    g < h && (e = o.pointAt(g).transformCopy(t), g += 90), v < h && (r = o.pointAt(v).transformCopy(t), v += 90), f = new $(e.x, r.y), p = $.min(p, f), m = $.max(m, f);
                }return C.fromPoints(p, m);
            }, _arcInterval: function _arcInterval() {
                var t,
                    e = this.startAngle,
                    n = this.endAngle,
                    i = this.anticlockwise;return i && (t = e, e = n, n = t), (e > n || i && e === n) && (n += 360), { startAngle: e, endAngle: n };
            }, _intervalCurvePoints: function _intervalCurvePoints(t, e) {
                var n = this,
                    i = n.pointAt(t),
                    r = n.pointAt(e),
                    o = n._derivativeAt(t),
                    s = n._derivativeAt(e),
                    a = (L(e) - L(t)) / 3,
                    h = new $(i.x + a * o.x, i.y + a * o.y),
                    l = new $(r.x - a * s.x, r.y - a * s.y);return { p1: i, cp1: h, cp2: l, p2: r };
            }, _derivativeAt: function _derivativeAt(t) {
                var e = this,
                    n = L(t);return new $(-e.radiusX * A.sin(n), e.radiusY * A.cos(n));
            }, containsPoint: function containsPoint(t) {
                var e,
                    n,
                    i,
                    r = this._arcInterval(),
                    o = r.endAngle - r.startAngle,
                    s = this.center,
                    a = s.distanceTo(t),
                    l = A.atan2(t.y - s.y, t.x - s.x),
                    c = this.radiusX * this.radiusY / A.sqrt(A.pow(this.radiusX, 2) * A.pow(A.sin(l), 2) + A.pow(this.radiusY, 2) * A.pow(A.cos(l), 2)),
                    u = this.pointAt(this.startAngle).round(q),
                    f = this.pointAt(this.endAngle).round(q),
                    d = m(s, t.round(q), u, f);return o < 180 ? e = d && v(s.distanceTo(d), a) && v(a, c) : (n = h(s.x, s.y, this.radiusX, this.radiusY, t.x, t.y), 360 != n && (n = (360 + n) % 360), i = r.startAngle <= n && n <= r.endAngle, e = i && v(a, c) || !i && (!d || d.equals(t))), e;
            }, _isOnPath: function _isOnPath(t, e) {
                var n,
                    i = this._arcInterval(),
                    r = this.center,
                    o = h(r.x, r.y, this.radiusX, this.radiusY, t.x, t.y);return 360 != o && (o = (360 + o) % 360), n = i.startAngle <= o && o <= i.endAngle, n && this.pointAt(o).distanceTo(t) <= e;
            } }), r(k.fn, ["radiusX", "radiusY", "startAngle", "endAngle", "anticlockwise"]), z(k.fn, M), k.fromPoints = function (t, e, n, i, r, o) {
            var s = l(t.x, t.y, e.x, e.y, n, i, r, o);return new k(s.center, { startAngle: s.startAngle, endAngle: s.endAngle, radiusX: n, radiusY: i, anticlockwise: 0 === o });
        }, S = R.extend({ init: function init(t, e, n, i, r, o) {
                this.a = t || 0, this.b = e || 0, this.c = n || 0, this.d = i || 0, this.e = r || 0, this.f = o || 0;
            }, multiplyCopy: function multiplyCopy(t) {
                return new S(this.a * t.a + this.c * t.b, this.b * t.a + this.d * t.b, this.a * t.c + this.c * t.d, this.b * t.c + this.d * t.d, this.a * t.e + this.c * t.f + this.e, this.b * t.e + this.d * t.f + this.f);
            }, invert: function invert() {
                var t = this.a,
                    e = this.b,
                    n = this.c,
                    i = this.d,
                    r = this.e,
                    o = this.f,
                    s = t * i - e * n;return 0 === s ? null : new S(i / s, -e / s, -n / s, t / s, (n * o - i * r) / s, (e * r - t * o) / s);
            }, clone: function clone() {
                return new S(this.a, this.b, this.c, this.d, this.e, this.f);
            }, equals: function equals(t) {
                return !!t && this.a === t.a && this.b === t.b && this.c === t.c && this.d === t.d && this.e === t.e && this.f === t.f;
            }, round: function round(t) {
                return this.a = F(this.a, t), this.b = F(this.b, t), this.c = F(this.c, t), this.d = F(this.d, t), this.e = F(this.e, t), this.f = F(this.f, t), this;
            }, toArray: function toArray(t) {
                var e,
                    n = [this.a, this.b, this.c, this.d, this.e, this.f];if (D(t)) for (e = 0; e < n.length; e++) {
                    n[e] = F(n[e], t);
                }return n;
            } }), S.fn.toString = function (t, e) {
            return this.toArray(t).join(e || ",");
        }, S.translate = function (t, e) {
            return new S(1, 0, 0, 1, t, e);
        }, S.unit = function () {
            return new S(1, 0, 0, 1, 0, 0);
        }, S.rotate = function (t, e, n) {
            var i = new S();return i.a = A.cos(L(t)), i.b = A.sin(L(t)), i.c = -i.b, i.d = i.a, i.e = e - e * i.a + n * i.b || 0, i.f = n - n * i.a - e * i.b || 0, i;
        }, S.scale = function (t, e) {
            return new S(t, 0, 0, e, 0, 0);
        }, S.IDENTITY = S.unit(), E = R.extend({ init: function init(t) {
                this._matrix = t || S.unit();
            }, clone: function clone() {
                return new E(this._matrix.clone());
            }, equals: function equals(t) {
                return t && t._matrix.equals(this._matrix);
            }, _optionsChange: function _optionsChange() {
                this.optionsChange({ field: "transform", value: this });
            }, translate: function translate(t, e) {
                return this._matrix = this._matrix.multiplyCopy(S.translate(t, e)), this._optionsChange(), this;
            }, scale: function scale(t, e, n) {
                return D(e) || (e = t), n && (n = $.create(n), this._matrix = this._matrix.multiplyCopy(S.translate(n.x, n.y))), this._matrix = this._matrix.multiplyCopy(S.scale(t, e)), n && (this._matrix = this._matrix.multiplyCopy(S.translate(-n.x, -n.y))), this._optionsChange(), this;
            }, rotate: function rotate(t, e) {
                return e = $.create(e) || $.ZERO, this._matrix = this._matrix.multiplyCopy(S.rotate(t, e.x, e.y)), this._optionsChange(), this;
            }, multiply: function multiply(t) {
                var n = e(t);return this._matrix = this._matrix.multiplyCopy(n), this._optionsChange(), this;
            }, matrix: function matrix(t) {
                return t ? (this._matrix = t, this._optionsChange(), this) : this._matrix;
            } }), z(E.fn, M), P = function P(t, e) {
            this.real = t || 0, this.img = e || 0;
        }, P.fn = P.prototype = { add: function add(t) {
                return new P(F(this.real + t.real, q), F(this.img + t.img, q));
            }, addConstant: function addConstant(t) {
                return new P(this.real + t, this.img);
            }, negate: function negate() {
                return new P(-this.real, -this.img);
            }, multiply: function multiply(t) {
                return new P(this.real * t.real - this.img * t.img, this.real * t.img + this.img * t.real);
            }, multiplyConstant: function multiplyConstant(t) {
                return new P(this.real * t, this.img * t);
            }, nthRoot: function nthRoot(t) {
                var e = A.atan2(this.img, this.real),
                    n = A.sqrt(A.pow(this.img, 2) + A.pow(this.real, 2)),
                    i = A.pow(n, 1 / t);return new P(i * A.cos(e / t), i * A.sin(e / t));
            }, equals: function equals(t) {
                return this.real === t.real && this.img === t.img;
            }, isReal: function isReal() {
                return 0 === this.img;
            } }, z(N, { geometry: { Arc: k, Circle: T, curveIntersectionsCount: d, lineIntersectionsCount: p, Matrix: S, Point: $, Rect: C, Size: _, Transformation: E, transform: t, toMatrix: e, isOutOfEndPoint: y, hasRootsInRange: w } }), N.dataviz.geometry = N.geometry;
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("drawing/core.min", ["drawing/geometry.min", "kendo.popup.min"], t);
}(function () {
    !function (t) {
        function e(t) {
            var e, n;return t.touch ? (e = t.x.location, n = t.y.location) : (e = t.pageX || t.clientX || 0, n = t.pageY || t.clientY || 0), { x: e, y: n };
        }var n,
            i,
            r,
            o,
            s = t.noop,
            a = Object.prototype.toString,
            h = window.kendo,
            l = h._outerWidth,
            c = h._outerHeight,
            u = h.Class,
            f = h.ui.Widget,
            d = h.deepExtend,
            p = h.util,
            m = p.defined,
            g = p.limitValue,
            v = h.geometry,
            x = t.proxy,
            y = ".kendo",
            w = '<div class="k-tooltip"><div class="k-tooltip-content"></div></div>',
            b = '<div class="k-tooltip-button"><a href="\\#" class="k-icon k-i-close">close</a></div>',
            _ = f.extend({ init: function init(t, e) {
                this.options = d({}, this.options, e), f.fn.init.call(this, t, this.options), this._click = this._handler("click"), this._mouseenter = this._handler("mouseenter"), this._mouseleave = this._handler("mouseleave"), this._mousemove = this._handler("mousemove"), this._visual = new h.drawing.Group(), this.options.width && this.element.css("width", this.options.width), this.options.height && this.element.css("height", this.options.height), this._enableTracking();
            }, options: { name: "Surface", tooltip: {} }, events: ["click", "mouseenter", "mouseleave", "mousemove", "resize", "tooltipOpen", "tooltipClose"], draw: function draw(t) {
                this._visual.children.push(t);
            }, clear: function clear() {
                this._visual.children = [], this.hideTooltip();
            }, destroy: function destroy() {
                this._visual = null, this._tooltip && (this._tooltip.destroy(), delete this._tooltip), f.fn.destroy.call(this);
            }, exportVisual: function exportVisual() {
                return this._visual;
            }, getSize: function getSize() {
                return { width: this.element.width(), height: this.element.height() };
            }, setSize: function setSize(t) {
                this.element.css({ width: t.width, height: t.height }), this._size = t, this._resize();
            }, eventTarget: function eventTarget(e) {
                for (var n, i = t(e.touch ? e.touch.initialTouch : e.target); !n && i.length > 0 && (n = i[0]._kendoNode, !i.is(this.element) && 0 !== i.length);) {
                    i = i.parent();
                }if (n) return n.srcElement;
            }, showTooltip: function showTooltip(t, e) {
                this._tooltip && this._tooltip.show(t, e);
            }, hideTooltip: function hideTooltip() {
                this._tooltip && this._tooltip.hide();
            }, suspendTracking: function suspendTracking() {
                this._suspendedTracking = !0, this.hideTooltip();
            }, resumeTracking: function resumeTracking() {
                this._suspendedTracking = !1;
            }, _resize: s, _handler: function _handler(t) {
                var e = this;return function (n) {
                    var i = e.eventTarget(n);i && !e._suspendedTracking && e.trigger(t, { element: i, originalEvent: n, type: t });
                };
            }, _enableTracking: function _enableTracking() {
                h.ui.Popup && (this._tooltip = new o(this, this.options.tooltip || {}));
            }, _elementOffset: function _elementOffset() {
                var t = this.element,
                    e = t.offset(),
                    n = parseInt(t.css("paddingLeft"), 10),
                    i = parseInt(t.css("paddingTop"), 10);return { left: e.left + n, top: e.top + i };
            }, _surfacePoint: function _surfacePoint(t) {
                var n = this._elementOffset(),
                    i = e(t),
                    r = i.x - n.left,
                    o = i.y - n.top;return new v.Point(r, o);
            } });h.ui.plugin(_), _.create = function (t, e) {
            return r.current.create(t, e);
        }, n = u.extend({ init: function init(t) {
                this.childNodes = [], this.parent = null, t && (this.srcElement = t, this.observe());
            }, destroy: function destroy() {
                var t, e;for (this.srcElement && this.srcElement.removeObserver(this), t = this.childNodes, e = 0; e < t.length; e++) {
                    this.childNodes[e].destroy();
                }this.parent = null;
            }, load: s, observe: function observe() {
                this.srcElement && this.srcElement.addObserver(this);
            }, append: function append(t) {
                this.childNodes.push(t), t.parent = this;
            }, insertAt: function insertAt(t, e) {
                this.childNodes.splice(e, 0, t), t.parent = this;
            }, remove: function remove(t, e) {
                var n,
                    i = t + e;for (n = t; n < i; n++) {
                    this.childNodes[n].removeSelf();
                }this.childNodes.splice(t, e);
            }, removeSelf: function removeSelf() {
                this.clear(), this.destroy();
            }, clear: function clear() {
                this.remove(0, this.childNodes.length);
            }, invalidate: function invalidate() {
                this.parent && this.parent.invalidate();
            }, geometryChange: function geometryChange() {
                this.invalidate();
            }, optionsChange: function optionsChange() {
                this.invalidate();
            }, childrenChange: function childrenChange(t) {
                "add" === t.action ? this.load(t.items, t.index) : "remove" === t.action && this.remove(t.index, t.items.length), this.invalidate();
            } }), i = u.extend({ init: function init(t, e) {
                var n, i;this.prefix = e || "";for (n in t) {
                    i = t[n], i = this._wrap(i, n), this[n] = i;
                }
            }, get: function get(t) {
                return h.getter(t, !0)(this);
            }, set: function set(t, e) {
                var n,
                    i = h.getter(t, !0)(this);i !== e && (n = this._set(t, this._wrap(e, t)), n || this.optionsChange({ field: this.prefix + t, value: e }));
            }, _set: function _set(t, e) {
                var n,
                    r,
                    o,
                    s = t.indexOf(".") >= 0;if (s) for (n = t.split("."), r = ""; n.length > 1;) {
                    if (r += n.shift(), o = h.getter(r, !0)(this), o || (o = new i({}, r + "."), o.addObserver(this), this[r] = o), o instanceof i) return o.set(n.join("."), e), s;r += ".";
                }return this._clear(t), h.setter(t)(this, e), s;
            }, _clear: function _clear(t) {
                var e = h.getter(t, !0)(this);e && e.removeObserver && e.removeObserver(this);
            }, _wrap: function _wrap(t, e) {
                var n = a.call(t);return null !== t && m(t) && "[object Object]" === n && (t instanceof i || t instanceof u || (t = new i(t, this.prefix + e + ".")), t.addObserver(this)), t;
            } }), d(i.fn, h.mixins.ObserversMixin), r = function r() {
            this._items = [];
        }, r.prototype = { register: function register(t, e, n) {
                var i = this._items,
                    r = i[0],
                    o = { name: t, type: e, order: n };!r || n < r.order ? i.unshift(o) : i.push(o);
            }, create: function create(t, e) {
                var n,
                    i,
                    r = this._items,
                    o = r[0];if (e && e.type) for (n = e.type.toLowerCase(), i = 0; i < r.length; i++) {
                    if (r[i].name === n) {
                        o = r[i];break;
                    }
                }return o ? new o.type(t, e) : void h.logToConsole("Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\n- The browser does not support SVG, VML and Canvas. User agent: " + navigator.userAgent + "\n- The Kendo UI scripts are not fully loaded");
            } }, r.current = new r(), o = u.extend({ init: function init(e, n) {
                this.element = t(w), this.content = this.element.children(".k-tooltip-content"), n = n || {}, this.options = d({}, this.options, this._tooltipOptions(n)), this.popup = new h.ui.Popup(this.element, { appendTo: n.appendTo, animation: n.animation, copyAnchorStyles: !1, collision: "fit fit" }), this._openPopupHandler = t.proxy(this._openPopup, this), this.surface = e, this._bindEvents();
            }, options: { position: "top", showOn: "mouseenter", offset: 7, autoHide: !0, hideDelay: 0, showAfter: 100 }, _bindEvents: function _bindEvents() {
                this._showHandler = x(this._showEvent, this), this._surfaceLeaveHandler = x(this._surfaceLeave, this), this._mouseleaveHandler = x(this._mouseleave, this), this._mousemoveHandler = x(this._mousemove, this), this.surface.bind("click", this._showHandler), this.surface.bind("mouseenter", this._showHandler), this.surface.bind("mouseleave", this._mouseleaveHandler), this.surface.bind("mousemove", this._mousemoveHandler), this.surface.element.on("mouseleave" + y, this._surfaceLeaveHandler), this.element.on("click" + y, ".k-tooltip-button", x(this._hideClick, this));
            }, destroy: function destroy() {
                var t = this.popup;this.surface.unbind("click", this._showHandler), this.surface.unbind("mouseenter", this._showHandler), this.surface.unbind("mouseleave", this._mouseleaveHandler), this.surface.unbind("mousemove", this._mousemoveHandler), this.surface.element.off("mouseleave" + y, this._surfaceLeaveHandler), this.element.off("click" + y), t && (t.destroy(), delete this.popup), clearTimeout(this._timeout), delete this.popup, delete this.element, delete this.content, delete this.surface;
            }, _tooltipOptions: function _tooltipOptions(t) {
                return t = t || {}, { position: t.position, showOn: t.showOn, offset: t.offset, autoHide: t.autoHide, width: t.width, height: t.height, content: t.content, shared: t.shared, hideDelay: t.hideDelay, showAfter: t.showAfter };
            }, _tooltipShape: function _tooltipShape(t) {
                for (; t && !t.options.tooltip;) {
                    t = t.parent;
                }return t;
            }, _updateContent: function _updateContent(t, e, n) {
                var i = n.content;if (h.isFunction(i) && (i = i({ element: e, target: t })), i) return this.content.html(i), !0;
            }, _position: function _position(t, n, i, r) {
                var o,
                    s = n.position,
                    a = n.offset || 0,
                    h = this.surface,
                    l = h._elementOffset(),
                    c = h.getSize(),
                    u = h._offset,
                    f = t.bbox(),
                    d = i.width,
                    p = i.height,
                    m = 0,
                    v = 0;return f.origin.translate(l.left, l.top), u && f.origin.translate(-u.x, -u.y), "cursor" == s && r ? (o = e(r), m = o.x - d / 2, v = o.y - p - a) : "left" == s ? (m = f.origin.x - d - a, v = f.center().y - p / 2) : "right" == s ? (m = f.bottomRight().x + a, v = f.center().y - p / 2) : "bottom" == s ? (m = f.center().x - d / 2, v = f.bottomRight().y + a) : (m = f.center().x - d / 2, v = f.origin.y - p - a), { left: g(m, l.left, l.left + c.width), top: g(v, l.top, l.top + c.height) };
            }, show: function show(t, e) {
                this._show(t, t, d({}, this.options, this._tooltipOptions(t.options.tooltip), e));
            }, hide: function hide() {
                var t = this._current;delete this._current, clearTimeout(this._showTimeout), this.popup.visible() && t && !this.surface.trigger("tooltipClose", { element: t.shape, target: t.target, popup: this.popup }) && this.popup.close();
            }, _hideClick: function _hideClick(t) {
                t.preventDefault(), this.hide();
            }, _show: function _show(t, e, n, i, r) {
                var o,
                    s,
                    a = this._current;clearTimeout(this._timeout), a && (a.shape === e && n.shared || a.target === t) || (clearTimeout(this._showTimeout), !this.surface.trigger("tooltipOpen", { element: e, target: t, popup: this.popup }) && this._updateContent(t, e, n) && (this._autoHide(n), o = this._measure(n), s = this.popup, s.visible() && s.close(!0), this._current = { options: n, elementSize: o, shape: e, target: t, position: this._position(n.shared ? e : t, n, o, i) }, r ? this._showTimeout = setTimeout(this._openPopupHandler, n.showAfter || 0) : this._openPopup()));
            }, _openPopup: function _openPopup() {
                var t = this._current,
                    e = t.position;this.popup.open(e.left, e.top);
            }, _autoHide: function _autoHide(e) {
                e.autoHide && this._closeButton && (this.element.removeClass("k-tooltip-closable"), this._closeButton.remove(), delete this._closeButton), e.autoHide || this._closeButton || (this.element.addClass("k-tooltip-closable"), this._closeButton = t(b).prependTo(this.element));
            }, _showEvent: function _showEvent(t) {
                var e,
                    n = this._tooltipShape(t.element);n && (e = d({}, this.options, this._tooltipOptions(n.options.tooltip)), e && e.showOn == t.type && this._show(t.element, n, e, t.originalEvent, !0));
            }, _measure: function _measure(t) {
                var e, n, i;return this.element.css({ width: "auto", height: "auto" }), i = this.popup.visible(), i || this.popup.wrapper.show(), this.element.css({ width: m(t.width) ? t.width : "auto", height: m(t.height) ? t.height : "auto" }), e = l(this.element), n = c(this.element), i || this.popup.wrapper.hide(), { width: e, height: n };
            }, _mouseleave: function _mouseleave(t) {
                var e, n;this._popupRelatedTarget(t.originalEvent) || (e = this, n = e._current, n && n.options.autoHide && (e._timeout = setTimeout(function () {
                    clearTimeout(e._showTimeout), e.hide();
                }, n.options.hideDelay || 0)));
            }, _mousemove: function _mousemove(t) {
                var e,
                    n,
                    i = this._current;i && t.element && (e = i.options, "cursor" == e.position && (n = this._position(t.element, e, i.elementSize, t.originalEvent), i.position = n, this.popup.wrapper.css({ left: n.left, top: n.top })));
            }, _surfaceLeave: function _surfaceLeave(t) {
                this._popupRelatedTarget(t) || (clearTimeout(this._showTimeout), this.hide());
            }, _popupRelatedTarget: function _popupRelatedTarget(e) {
                return e.relatedTarget && t(e.relatedTarget).closest(this.popup.wrapper).length;
            } }), d(h, { drawing: { DASH_ARRAYS: { dot: [1.5, 3.5], dash: [4, 3.5], longdash: [8, 3.5], dashdot: [3.5, 3.5, 1.5, 3.5], longdashdot: [8, 3.5, 1.5, 3.5], longdashdotdot: [8, 3.5, 1.5, 3.5, 1.5, 3.5] }, Color: h.Color, BaseNode: n, OptionsStore: i, Surface: _, SurfaceFactory: r, SurfaceTooltip: o } }), h.dataviz.drawing = h.drawing;
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("drawing/mixins.min", ["drawing/core.min"], t);
}(function () {
    !function () {
        var t = window.kendo,
            e = t.deepExtend,
            n = t.util.defined,
            i = t.geometry,
            r = "gradient",
            o = "" + i.Matrix.IDENTITY,
            s = { extend: function extend(t) {
                t.fill = this.fill, t.stroke = this.stroke;
            }, fill: function fill(t, e) {
                var i,
                    o = this.options;return n(t) ? (t && t.nodeType != r ? (i = { color: t }, n(e) && (i.opacity = e), o.set("fill", i)) : o.set("fill", t), this) : o.get("fill");
            }, stroke: function stroke(t, e, i) {
                return n(t) ? (this.options.set("stroke.color", t), n(e) && this.options.set("stroke.width", e), n(i) && this.options.set("stroke.opacity", i), this) : this.options.get("stroke");
            } },
            a = { extend: function extend(t, e) {
                t.traverse = function (t) {
                    var n,
                        i,
                        r = this[e];for (n = 0; n < r.length; n++) {
                        i = r[n], i.traverse ? i.traverse(t) : t(i);
                    }return this;
                };
            } },
            h = { extend: function extend(t) {
                t.bbox = this.bbox, t.geometryChange = this.geometryChange;
            }, bbox: function bbox(t) {
                var e,
                    n,
                    r = i.toMatrix(this.currentTransform(t)),
                    s = r ? "" + r : o;return this._bboxCache && this._matrixHash == s ? e = this._bboxCache.clone() : (e = this._bbox(r), this._bboxCache = e ? e.clone() : null, this._matrixHash = s), n = this.options.get("stroke.width"), n && e && e.expand(n / 2), e;
            }, geometryChange: function geometryChange() {
                delete this._bboxCache, this.trigger("geometryChange", { element: this });
            } };e(t.drawing, { mixins: { Paintable: s, Traversable: a, Measurable: h } });
    }();
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("drawing/shapes.min", ["drawing/core.min", "drawing/mixins.min", "util/text-metrics.min", "mixins/observers.min"], t);
}(function () {
    !function (t) {
        function e(t, e, n) {
            var i, r, o, s;for (r = 0; r < t.length; r++) {
                o = t[r], o.visible() && (s = e ? o.bbox(n) : o.rawBBox(), s && (i = i ? X.Rect.union(i, s) : s));
            }return i;
        }function n(t, e) {
            var n, i, r, o;for (i = 0; i < t.length; i++) {
                r = t[i], r.visible() && (o = r.clippedBBox(e), o && (n = n ? X.Rect.union(n, o) : o));
            }return n;
        }function i(t, e) {
            for (var n = 0; n < e.length; n++) {
                t[e[n]] = r(e[n]);
            }
        }function r(t) {
            var e = "_" + t;return function (t) {
                return it(t) ? (this._observerField(e, t), this.geometryChange(), this) : this[e];
            };
        }function o(t, e) {
            for (var n = 0; n < e.length; n++) {
                t[e[n]] = s(e[n]);
            }
        }function s(t) {
            var e = "_" + t;return function (t) {
                return it(t) ? (this._observerField(e, U.create(t)), this.geometryChange(), this) : this[e];
            };
        }function a(t, e) {
            for (var n = 0; n < e.length; n++) {
                t[e[n]] = h(e[n]);
            }
        }function h(t) {
            return function (e) {
                return it(e) ? (this.options.set(t, e), this) : this.options.get(t);
            };
        }function l() {
            return "kdef" + pt++;
        }function c(t, e, n) {
            b(t, e, n, "x", "width");
        }function u(t, e, n) {
            b(t, e, n, "y", "height");
        }function f(t) {
            w(y(t), "x", "y", "width");
        }function d(t) {
            w(y(t), "y", "x", "height");
        }function p(t, e) {
            return g(t, e, "x", "y", "width");
        }function m(t, e) {
            return g(t, e, "y", "x", "height");
        }function g(t, e, n, i, r) {
            var o,
                s,
                a,
                h,
                l = [],
                c = x(t, e, r),
                u = e.origin.clone();for (h = 0; h < c.length; h++) {
                for (a = c[h], o = a[0], u[i] = o.bbox.origin[i], T(u, o.bbox, o.element), o.bbox.origin[n] = u[n], w(a, n, i, r), l.push([]), s = 0; s < a.length; s++) {
                    l[h].push(a[s].element);
                }
            }return l;
        }function v(t, e) {
            var n,
                i,
                r = t.clippedBBox(),
                o = r.size,
                s = e.size;(s.width < o.width || s.height < o.height) && (n = J.min(s.width / o.width, s.height / o.height), i = t.transform() || X.transform(), i.scale(n, n), t.transform(i));
        }function x(t, e, n) {
            var i,
                r,
                o,
                s,
                a = e.size[n],
                h = 0,
                l = [],
                c = [],
                u = function u() {
                c.push({ element: i, bbox: o });
            };for (s = 0; s < t.length; s++) {
                i = t[s], o = i.clippedBBox(), o && (r = o.size[n], h + r > a ? c.length ? (l.push(c), c = [], u(), h = r) : (u(), l.push(c), c = [], h = 0) : (u(), h += r));
            }return c.length && l.push(c), l;
        }function y(t) {
            var e,
                n,
                i,
                r = [];for (i = 0; i < t.length; i++) {
                e = t[i], n = e.clippedBBox(), n && r.push({ element: e, bbox: n });
            }return r;
        }function w(t, e, n, i) {
            var r, o, s, a, h;if (t.length > 1) for (r = t[0].bbox, o = new U(), h = 1; h < t.length; h++) {
                s = t[h].element, a = t[h].bbox, o[e] = r.origin[e] + r.size[i], o[n] = a.origin[n], T(o, a, s), a.origin[e] = o[e], r = a;
            }
        }function b(t, e, n, i, r) {
            var o, s, a;for (n = n || "start", a = 0; a < t.length; a++) {
                o = t[a].clippedBBox(), o && (s = o.origin.clone(), s[i] = _(o.size[r], e, n, i, r), T(s, o, t[a]));
            }
        }function _(t, e, n, i, r) {
            var o;return o = n == mt ? e.origin[i] : n == gt ? e.origin[i] + e.size[r] - t : e.origin[i] + (e.size[r] - t) / 2;
        }function C(t, e, n) {
            var i = n.transform() || X.transform(),
                r = i.matrix();r.e += t, r.f += e, i.matrix(r), n.transform(i);
        }function T(t, e, n) {
            C(t.x - e.origin.x, t.y - e.origin.y, n);
        }var k,
            S,
            E,
            P,
            A,
            O,
            N,
            R,
            z,
            M,
            B,
            D,
            L,
            I,
            F,
            G,
            j,
            H = window.kendo,
            q = H.Class,
            $ = H.deepExtend,
            X = H.geometry,
            U = X.Point,
            Y = X.Size,
            V = X.Matrix,
            W = X.toMatrix,
            Q = H.drawing,
            Z = Q.OptionsStore,
            J = Math,
            K = J.pow,
            tt = H.util,
            et = tt.append,
            nt = tt.arrayLimits,
            it = tt.defined,
            rt = tt.last,
            ot = tt.valueOrDefault,
            st = H.mixins.ObserversMixin,
            at = t.inArray,
            ht = [].push,
            lt = [].pop,
            ct = [].splice,
            ut = [].shift,
            ft = [].slice,
            dt = [].unshift,
            pt = 1,
            mt = "start",
            gt = "end",
            vt = "horizontal",
            xt = q.extend({ nodeType: "Element", init: function init(t) {
                this._initOptions(t);
            }, _initOptions: function _initOptions(t) {
                var e, n;t = t || {}, e = t.transform, n = t.clip, e && (t.transform = X.transform(e)), n && !n.id && (n.id = l()), this.options = new Z(t), this.options.addObserver(this);
            }, transform: function transform(t) {
                return it(t) ? void this.options.set("transform", X.transform(t)) : this.options.get("transform");
            }, parentTransform: function parentTransform() {
                for (var t, e, n = this; n.parent;) {
                    n = n.parent, t = n.transform(), t && (e = t.matrix().multiplyCopy(e || V.unit()));
                }if (e) return X.transform(e);
            }, currentTransform: function currentTransform(t) {
                var e,
                    n,
                    i = this.transform(),
                    r = W(i);if (it(t) || (t = this.parentTransform()), e = W(t), n = r && e ? e.multiplyCopy(r) : r || e) return X.transform(n);
            }, visible: function visible(t) {
                return it(t) ? (this.options.set("visible", t), this) : this.options.get("visible") !== !1;
            }, clip: function clip(t) {
                var e = this.options;return it(t) ? (t && !t.id && (t.id = l()), e.set("clip", t), this) : e.get("clip");
            }, opacity: function opacity(t) {
                return it(t) ? (this.options.set("opacity", t), this) : ot(this.options.get("opacity"), 1);
            }, clippedBBox: function clippedBBox(t) {
                var e,
                    n = this._clippedBBox(t);if (n) return e = this.clip(), e ? X.Rect.intersect(n, e.bbox(t)) : n;
            }, containsPoint: function containsPoint(t, e) {
                if (this.visible()) {
                    var n = this.currentTransform(e);return n && (t = t.transformCopy(n.matrix().invert())), this._hasFill() && this._containsPoint(t) || this._isOnPath && this._hasStroke() && this._isOnPath(t);
                }return !1;
            }, _hasFill: function _hasFill() {
                var t = this.options.fill;return t && !tt.isTransparent(t.color);
            }, _hasStroke: function _hasStroke() {
                var t = this.options.stroke;return t && t.width > 0 && !tt.isTransparent(t.color);
            }, _clippedBBox: function _clippedBBox(t) {
                return this.bbox(t);
            } });$(xt.fn, st), k = q.extend({ init: function init(t) {
                t = t || [], this.length = 0, this._splice(0, t.length, t);
            }, elements: function elements(t) {
                return t ? (this._splice(0, this.length, t), this._change(), this) : this.slice(0);
            }, push: function push() {
                var t = arguments,
                    e = ht.apply(this, t);return this._add(t), e;
            }, slice: ft, pop: function pop() {
                var t = this.length,
                    e = lt.apply(this);return t && this._remove([e]), e;
            }, splice: function splice(t, e) {
                var n = ft.call(arguments, 2),
                    i = this._splice(t, e, n);return this._change(), i;
            }, shift: function shift() {
                var t = this.length,
                    e = ut.apply(this);return t && this._remove([e]), e;
            }, unshift: function unshift() {
                var t = arguments,
                    e = dt.apply(this, t);return this._add(t), e;
            }, indexOf: function indexOf(t) {
                var e,
                    n,
                    i = this;for (e = 0, n = i.length; e < n; e++) {
                    if (i[e] === t) return e;
                }return -1;
            }, _splice: function _splice(t, e, n) {
                var i = ct.apply(this, [t, e].concat(n));return this._clearObserver(i), this._setObserver(n), i;
            }, _add: function _add(t) {
                this._setObserver(t), this._change();
            }, _remove: function _remove(t) {
                this._clearObserver(t), this._change();
            }, _setObserver: function _setObserver(t) {
                for (var e = 0; e < t.length; e++) {
                    t[e].addObserver(this);
                }
            }, _clearObserver: function _clearObserver(t) {
                for (var e = 0; e < t.length; e++) {
                    t[e].removeObserver(this);
                }
            }, _change: function _change() {} }), $(k.fn, st), S = xt.extend({ nodeType: "Group", init: function init(t) {
                xt.fn.init.call(this, t), this.children = [];
            }, childrenChange: function childrenChange(t, e, n) {
                this.trigger("childrenChange", { action: t, items: e, index: n });
            }, append: function append() {
                return et(this.children, arguments), this._reparent(arguments, this), this.childrenChange("add", arguments), this;
            }, insert: function insert(t, e) {
                return this.children.splice(t, 0, e), e.parent = this, this.childrenChange("add", [e], t), this;
            }, insertAt: function insertAt(t, e) {
                return this.insert(e, t);
            }, remove: function remove(t) {
                var e = at(t, this.children);return e >= 0 && (this.children.splice(e, 1), t.parent = null, this.childrenChange("remove", [t], e)), this;
            }, removeAt: function removeAt(t) {
                if (0 <= t && t < this.children.length) {
                    var e = this.children[t];this.children.splice(t, 1), e.parent = null, this.childrenChange("remove", [e], t);
                }return this;
            }, clear: function clear() {
                var t = this.children;return this.children = [], this._reparent(t, null), this.childrenChange("remove", t, 0), this;
            }, bbox: function bbox(t) {
                return e(this.children, !0, this.currentTransform(t));
            }, rawBBox: function rawBBox() {
                return e(this.children, !1);
            }, _clippedBBox: function _clippedBBox(t) {
                return n(this.children, this.currentTransform(t));
            }, currentTransform: function currentTransform(t) {
                return xt.fn.currentTransform.call(this, t) || null;
            }, containsPoint: function containsPoint(t, e) {
                var n, i, r;if (this.visible()) for (n = this.children, i = this.currentTransform(e), r = 0; r < n.length; r++) {
                    if (n[r].containsPoint(t, i)) return !0;
                }return !1;
            }, _reparent: function _reparent(t, e) {
                var n, i, r;for (n = 0; n < t.length; n++) {
                    i = t[n], r = i.parent, r && r != this && r.remove && r.remove(i), i.parent = e;
                }
            } }), Q.mixins.Traversable.extend(S.fn, "children"), E = xt.extend({ nodeType: "Text", init: function init(t, e, n) {
                xt.fn.init.call(this, n), this.content(t), this.position(e || new X.Point()), this.options.font || (this.options.font = "12px sans-serif"), it(this.options.fill) || this.fill("#000");
            }, content: function content(t) {
                return it(t) ? (this.options.set("content", t), this) : this.options.get("content");
            }, measure: function measure() {
                var t = tt.measureText(this.content(), { font: this.options.get("font") });return t;
            }, rect: function rect() {
                var t = this.measure(),
                    e = this.position().clone();return new X.Rect(e, [t.width, t.height]);
            }, bbox: function bbox(t) {
                var e = W(this.currentTransform(t));return this.rect().bbox(e);
            }, rawBBox: function rawBBox() {
                return this.rect().bbox();
            }, _containsPoint: function _containsPoint(t) {
                return this.rect().containsPoint(t);
            } }), Q.mixins.Paintable.extend(E.fn), o(E.fn, ["position"]), P = xt.extend({ nodeType: "Circle", init: function init(t, e) {
                xt.fn.init.call(this, e), this.geometry(t || new X.Circle()), it(this.options.stroke) || this.stroke("#000");
            }, _bbox: function _bbox(t) {
                return this._geometry.bbox(t);
            }, rawBBox: function rawBBox() {
                return this._geometry.bbox();
            }, _containsPoint: function _containsPoint(t) {
                return this.geometry().containsPoint(t);
            }, _isOnPath: function _isOnPath(t) {
                return this.geometry()._isOnPath(t, this.options.stroke.width / 2);
            } }), Q.mixins.Paintable.extend(P.fn), Q.mixins.Measurable.extend(P.fn), i(P.fn, ["geometry"]), A = xt.extend({ nodeType: "Arc", init: function init(t, e) {
                xt.fn.init.call(this, e), this.geometry(t || new X.Arc()), it(this.options.stroke) || this.stroke("#000");
            }, _bbox: function _bbox(t) {
                return this._geometry.bbox(t);
            }, rawBBox: function rawBBox() {
                return this.geometry().bbox();
            }, toPath: function toPath() {
                var t,
                    e = new R(),
                    n = this.geometry().curvePoints();if (n.length > 0) for (e.moveTo(n[0].x, n[0].y), t = 1; t < n.length; t += 3) {
                    e.curveTo(n[t], n[t + 1], n[t + 2]);
                }return e;
            }, _containsPoint: function _containsPoint(t) {
                return this.geometry().containsPoint(t);
            }, _isOnPath: function _isOnPath(t) {
                return this.geometry()._isOnPath(t, this.options.stroke.width / 2);
            } }), Q.mixins.Paintable.extend(A.fn), Q.mixins.Measurable.extend(A.fn), i(A.fn, ["geometry"]), O = k.extend({ _change: function _change() {
                this.geometryChange();
            } }), N = q.extend({ init: function init(t, e, n) {
                this.anchor(t || new U()), this.controlIn(e), this.controlOut(n);
            }, bboxTo: function bboxTo(t, e) {
                var n,
                    i = this.anchor().transformCopy(e),
                    r = t.anchor().transformCopy(e);return n = this.controlOut() && t.controlIn() ? this._curveBoundingBox(i, this.controlOut().transformCopy(e), t.controlIn().transformCopy(e), r) : this._lineBoundingBox(i, r);
            }, _lineBoundingBox: function _lineBoundingBox(t, e) {
                return X.Rect.fromPoints(t, e);
            }, _curveBoundingBox: function _curveBoundingBox(t, e, n, i) {
                var r = [t, e, n, i],
                    o = this._curveExtremesFor(r, "x"),
                    s = this._curveExtremesFor(r, "y"),
                    a = nt([o.min, o.max, t.x, i.x]),
                    h = nt([s.min, s.max, t.y, i.y]);return X.Rect.fromPoints(new U(a.min, h.min), new U(a.max, h.max));
            }, _curveExtremesFor: function _curveExtremesFor(t, e) {
                var n = this._curveExtremes(t[0][e], t[1][e], t[2][e], t[3][e]);return { min: this._calculateCurveAt(n.min, e, t), max: this._calculateCurveAt(n.max, e, t) };
            }, _calculateCurveAt: function _calculateCurveAt(t, e, n) {
                var i = 1 - t;return K(i, 3) * n[0][e] + 3 * K(i, 2) * t * n[1][e] + 3 * K(t, 2) * i * n[2][e] + K(t, 3) * n[3][e];
            }, _curveExtremes: function _curveExtremes(t, e, n, i) {
                var r,
                    o,
                    s = t - 3 * e + 3 * n - i,
                    a = -2 * (t - 2 * e + n),
                    h = t - e,
                    l = J.sqrt(a * a - 4 * s * h),
                    c = 0,
                    u = 1;return 0 === s ? 0 !== a && (c = u = -h / a) : isNaN(l) || (c = (-a + l) / (2 * s), u = (-a - l) / (2 * s)), r = J.max(J.min(c, u), 0), (r < 0 || r > 1) && (r = 0), o = J.min(J.max(c, u), 1), (o > 1 || o < 0) && (o = 1), { min: r, max: o };
            }, _intersectionsTo: function _intersectionsTo(t, e) {
                var n;return n = this.controlOut() && t.controlIn() ? X.curveIntersectionsCount([this.anchor(), this.controlOut(), t.controlIn(), t.anchor()], e, this.bboxTo(t)) : X.lineIntersectionsCount(this.anchor(), t.anchor(), e);
            }, _isOnCurveTo: function _isOnCurveTo(t, e, n, i) {
                var r,
                    o,
                    s,
                    a,
                    h,
                    l,
                    c,
                    u,
                    f = this.bboxTo(t).expand(n, n);if (f.containsPoint(e)) return r = this.anchor(), o = this.controlOut(), s = t.controlIn(), a = t.anchor(), "start" == i && r.distanceTo(e) <= n ? !X.isOutOfEndPoint(r, o, e) : "end" == i && a.distanceTo(e) <= n ? !X.isOutOfEndPoint(a, s, e) : (h = X.hasRootsInRange, l = [r, o, s, a], !(!h(l, e, "x", "y", n) && !h(l, e, "y", "x", n)) || (c = X.transform().rotate(45, e), u = [r.transformCopy(c), o.transformCopy(c), s.transformCopy(c), a.transformCopy(c)], h(u, e, "x", "y", n) || h(u, e, "y", "x", n)));
            }, _isOnLineTo: function _isOnLineTo(t, e, n) {
                var i = this.anchor(),
                    r = t.anchor(),
                    o = tt.deg(J.atan2(r.y - i.y, r.x - i.x)),
                    s = new X.Rect([i.x, i.y - n / 2], [i.distanceTo(r), n]);return s.containsPoint(e.transformCopy(X.transform().rotate(-o, i)));
            }, _isOnPathTo: function _isOnPathTo(t, e, n, i) {
                var r;return r = this.controlOut() && t.controlIn() ? this._isOnCurveTo(t, e, n / 2, i) : this._isOnLineTo(t, e, n);
            } }), o(N.fn, ["anchor", "controlIn", "controlOut"]), $(N.fn, st), R = xt.extend({ nodeType: "Path", init: function init(t) {
                xt.fn.init.call(this, t), this.segments = new O(), this.segments.addObserver(this), it(this.options.stroke) || (this.stroke("#000"), it(this.options.stroke.lineJoin) || this.options.set("stroke.lineJoin", "miter"));
            }, moveTo: function moveTo(t, e) {
                return this.suspend(), this.segments.elements([]), this.resume(), this.lineTo(t, e), this;
            }, lineTo: function lineTo(t, e) {
                var n = it(e) ? new U(t, e) : t,
                    i = new N(n);return this.segments.push(i), this;
            }, curveTo: function curveTo(t, e, n) {
                var i, r;return this.segments.length > 0 && (i = rt(this.segments), r = new N(n, e), this.suspend(), i.controlOut(t), this.resume(), this.segments.push(r)), this;
            }, arc: function arc(t, e, n, i, r) {
                var o, s, a, h, l;return this.segments.length > 0 && (o = rt(this.segments), s = o.anchor(), a = tt.rad(t), h = new U(s.x - n * J.cos(a), s.y - i * J.sin(a)), l = new X.Arc(h, { startAngle: t, endAngle: e, radiusX: n, radiusY: i, anticlockwise: r }), this._addArcSegments(l)), this;
            }, arcTo: function arcTo(t, e, n, i, r) {
                var o, s, a;return this.segments.length > 0 && (o = rt(this.segments), s = o.anchor(), a = X.Arc.fromPoints(s, t, e, n, i, r), this._addArcSegments(a)), this;
            }, _addArcSegments: function _addArcSegments(t) {
                var e, n;for (this.suspend(), e = t.curvePoints(), n = 1; n < e.length; n += 3) {
                    this.curveTo(e[n], e[n + 1], e[n + 2]);
                }this.resume(), this.geometryChange();
            }, close: function close() {
                return this.options.closed = !0, this.geometryChange(), this;
            }, rawBBox: function rawBBox() {
                return this._bbox();
            }, _containsPoint: function _containsPoint(t) {
                var e,
                    n,
                    i,
                    r = this.segments,
                    o = r.length,
                    s = 0;for (i = 1; i < o; i++) {
                    e = r[i - 1], n = r[i], s += e._intersectionsTo(n, t);
                }return !this.options.closed && r[0].anchor().equals(r[o - 1].anchor()) || (s += X.lineIntersectionsCount(r[0].anchor(), r[o - 1].anchor(), t)), s % 2 !== 0;
            }, _isOnPath: function _isOnPath(t, e) {
                var n,
                    i = this.segments,
                    r = i.length;if (e = e || this.options.stroke.width, r > 1) {
                    if (i[0]._isOnPathTo(i[1], t, e, "start")) return !0;for (n = 2; n <= r - 2; n++) {
                        if (i[n - 1]._isOnPathTo(i[n], t, e)) return !0;
                    }if (i[r - 2]._isOnPathTo(i[r - 1], t, e, "end")) return !0;
                }return !1;
            }, _bbox: function _bbox(t) {
                var e,
                    n,
                    i,
                    r,
                    o = this.segments,
                    s = o.length;if (1 === s) n = o[0].anchor().transformCopy(t), e = new X.Rect(n, Y.ZERO);else if (s > 0) for (i = 1; i < s; i++) {
                    r = o[i - 1].bboxTo(o[i], t), e = e ? X.Rect.union(e, r) : r;
                }return e;
            } }), Q.mixins.Paintable.extend(R.fn), Q.mixins.Measurable.extend(R.fn), R.fromRect = function (t, e) {
            return new R(e).moveTo(t.topLeft()).lineTo(t.topRight()).lineTo(t.bottomRight()).lineTo(t.bottomLeft()).close();
        }, R.fromPoints = function (t, e) {
            var n, i, r;if (t) {
                for (n = new R(e), i = 0; i < t.length; i++) {
                    r = U.create(t[i]), r && (0 === i ? n.moveTo(r) : n.lineTo(r));
                }return n;
            }
        }, R.fromArc = function (t, e) {
            var n = new R(e),
                i = t.startAngle,
                r = t.pointAt(i);return n.moveTo(r.x, r.y), n.arc(i, t.endAngle, t.radiusX, t.radiusY, t.anticlockwise), n;
        }, z = xt.extend({ nodeType: "MultiPath", init: function init(t) {
                xt.fn.init.call(this, t), this.paths = new O(), this.paths.addObserver(this), it(this.options.stroke) || this.stroke("#000");
            }, moveTo: function moveTo(t, e) {
                var n = new R();return n.moveTo(t, e), this.paths.push(n), this;
            }, lineTo: function lineTo(t, e) {
                return this.paths.length > 0 && rt(this.paths).lineTo(t, e), this;
            }, curveTo: function curveTo(t, e, n) {
                return this.paths.length > 0 && rt(this.paths).curveTo(t, e, n), this;
            }, arc: function arc(t, e, n, i, r) {
                return this.paths.length > 0 && rt(this.paths).arc(t, e, n, i, r), this;
            }, arcTo: function arcTo(t, e, n, i, r) {
                return this.paths.length > 0 && rt(this.paths).arcTo(t, e, n, i, r), this;
            }, close: function close() {
                return this.paths.length > 0 && rt(this.paths).close(), this;
            }, _bbox: function _bbox(t) {
                return e(this.paths, !0, t);
            }, rawBBox: function rawBBox() {
                return e(this.paths, !1);
            }, _containsPoint: function _containsPoint(t) {
                var e,
                    n = this.paths;for (e = 0; e < n.length; e++) {
                    if (n[e]._containsPoint(t)) return !0;
                }return !1;
            }, _isOnPath: function _isOnPath(t) {
                var e,
                    n = this.paths,
                    i = this.options.stroke.width;for (e = 0; e < n.length; e++) {
                    if (n[e]._isOnPath(t, i)) return !0;
                }return !1;
            }, _clippedBBox: function _clippedBBox(t) {
                return n(this.paths, this.currentTransform(t));
            } }), Q.mixins.Paintable.extend(z.fn), Q.mixins.Measurable.extend(z.fn), M = xt.extend({ nodeType: "Image", init: function init(t, e, n) {
                xt.fn.init.call(this, n), this.src(t), this.rect(e || new X.Rect());
            }, src: function src(t) {
                return it(t) ? (this.options.set("src", t), this) : this.options.get("src");
            }, bbox: function bbox(t) {
                var e = W(this.currentTransform(t));return this._rect.bbox(e);
            }, rawBBox: function rawBBox() {
                return this._rect.bbox();
            }, _containsPoint: function _containsPoint(t) {
                return this._rect.containsPoint(t);
            }, _hasFill: function _hasFill() {
                return this.src();
            } }), i(M.fn, ["rect"]), B = q.extend({ init: function init(t, e, n) {
                this.options = new Z({ offset: t, color: e, opacity: it(n) ? n : 1 }), this.options.addObserver(this);
            } }), a(B.fn, ["offset", "color", "opacity"]), $(B.fn, st), B.create = function (t) {
            if (it(t)) {
                var e;return e = t instanceof B ? t : t.length > 1 ? new B(t[0], t[1], t[2]) : new B(t.offset, t.color, t.opacity);
            }
        }, D = k.extend({ _change: function _change() {
                this.optionsChange({ field: "stops" });
            } }), L = q.extend({ nodeType: "gradient", init: function init(t) {
                this.stops = new D(this._createStops(t.stops)), this.stops.addObserver(this), this._userSpace = t.userSpace, this.id = l();
            }, userSpace: function userSpace(t) {
                return it(t) ? (this._userSpace = t, this.optionsChange(), this) : this._userSpace;
            }, _createStops: function _createStops(t) {
                var e,
                    n = [];for (t = t || [], e = 0; e < t.length; e++) {
                    n.push(B.create(t[e]));
                }return n;
            }, addStop: function addStop(t, e, n) {
                this.stops.push(new B(t, e, n));
            }, removeStop: function removeStop(t) {
                var e = this.stops.indexOf(t);e >= 0 && this.stops.splice(e, 1);
            } }), $(L.fn, st, { optionsChange: function optionsChange(t) {
                this.trigger("optionsChange", { field: "gradient" + (t ? "." + t.field : ""), value: this });
            }, geometryChange: function geometryChange() {
                this.optionsChange();
            } }), I = L.extend({ init: function init(t) {
                t = t || {}, L.fn.init.call(this, t), this.start(t.start || new U()), this.end(t.end || new U(1, 0));
            } }), o(I.fn, ["start", "end"]), F = L.extend({ init: function init(t) {
                t = t || {}, L.fn.init.call(this, t), this.center(t.center || new U()), this._radius = it(t.radius) ? t.radius : 1, this._fallbackFill = t.fallbackFill;
            }, radius: function radius(t) {
                return it(t) ? (this._radius = t, this.geometryChange(), this) : this._radius;
            }, fallbackFill: function fallbackFill(t) {
                return it(t) ? (this._fallbackFill = t, this.optionsChange(), this) : this._fallbackFill;
            } }), o(F.fn, ["center"]), G = xt.extend({ nodeType: "Rect", init: function init(t, e) {
                xt.fn.init.call(this, e), this.geometry(t || new X.Rect()), it(this.options.stroke) || this.stroke("#000");
            }, _bbox: function _bbox(t) {
                return this._geometry.bbox(t);
            }, rawBBox: function rawBBox() {
                return this._geometry.bbox();
            }, _containsPoint: function _containsPoint(t) {
                return this._geometry.containsPoint(t);
            }, _isOnPath: function _isOnPath(t) {
                return this.geometry()._isOnPath(t, this.options.stroke.width / 2);
            } }), Q.mixins.Paintable.extend(G.fn), Q.mixins.Measurable.extend(G.fn), i(G.fn, ["geometry"]), j = S.extend({ init: function init(t, e) {
                S.fn.init.call(this, H.deepExtend({}, this._defaults, e)), this._rect = t, this._fieldMap = {};
            }, _defaults: { alignContent: mt, justifyContent: mt, alignItems: mt, spacing: 0, orientation: vt, lineSpacing: 0, wrap: !0 }, rect: function rect(t) {
                return t ? (this._rect = t, this) : this._rect;
            }, _initMap: function _initMap() {
                var t = this.options,
                    e = this._fieldMap;t.orientation == vt ? (e.sizeField = "width", e.groupsSizeField = "height", e.groupAxis = "x", e.groupsAxis = "y") : (e.sizeField = "height", e.groupsSizeField = "width", e.groupAxis = "y", e.groupsAxis = "x");
            }, reflow: function reflow() {
                var t, e, n, i, r, o, s, a, h, l, c, u, f, d, p, m, g, v, x, y, w, b, C, k, S, E;if (this._rect && 0 !== this.children.length) {
                    for (this._initMap(), this.options.transform && this.transform(null), t = this.options, e = this._fieldMap, n = this._rect, i = this._initGroups(), r = i.groups, o = i.groupsSize, s = e.sizeField, a = e.groupsSizeField, h = e.groupAxis, l = e.groupsAxis, c = _(o, n, t.alignContent, l, a), u = new U(), f = new U(), d = new X.Size(), y = 0; y < r.length; y++) {
                        for (v = r[y], u[h] = p = _(v.size, n, t.justifyContent, h, s), u[l] = c, d[s] = v.size, d[a] = v.lineSize, x = new X.Rect(u, d), w = 0; w < v.bboxes.length; w++) {
                            g = v.elements[w], m = v.bboxes[w], f[h] = p, f[l] = _(m.size[a], x, t.alignItems, l, a), T(f, m, g), p += m.size[s] + t.spacing;
                        }c += v.lineSize + t.lineSpacing;
                    }!t.wrap && v.size > n.size[s] && (b = n.size[s] / x.size[s], C = x.topLeft().scale(b, b), k = x.size[a] * b, S = _(k, n, t.alignContent, l, a), E = X.transform(), "x" === h ? E.translate(n.origin.x - C.x, S - C.y) : E.translate(S - C.x, n.origin.y - C.y), E.scale(b, b), this.transform(E));
                }
            }, _initGroups: function _initGroups() {
                var t,
                    e,
                    n,
                    i = this.options,
                    r = this.children,
                    o = i.lineSpacing,
                    s = this._fieldMap.sizeField,
                    a = -o,
                    h = [],
                    l = this._newGroup(),
                    c = function c() {
                    h.push(l), a += l.lineSize + o;
                };for (n = 0; n < r.length; n++) {
                    e = r[n], t = r[n].clippedBBox(), e.visible() && t && (i.wrap && l.size + t.size[s] + i.spacing > this._rect.size[s] ? 0 === l.bboxes.length ? (this._addToGroup(l, t, e), c(), l = this._newGroup()) : (c(), l = this._newGroup(), this._addToGroup(l, t, e)) : this._addToGroup(l, t, e));
                }return l.bboxes.length && c(), { groups: h, groupsSize: a };
            }, _addToGroup: function _addToGroup(t, e, n) {
                t.size += e.size[this._fieldMap.sizeField] + this.options.spacing, t.lineSize = Math.max(e.size[this._fieldMap.groupsSizeField], t.lineSize), t.bboxes.push(e), t.elements.push(n);
            }, _newGroup: function _newGroup() {
                return { lineSize: 0, size: -this.options.spacing, bboxes: [], elements: [] };
            } }), $(Q, { align: c, Arc: A, Circle: P, Element: xt, ElementsArray: k, fit: v, Gradient: L, GradientStop: B, Group: S, Image: M, Layout: j, LinearGradient: I, MultiPath: z, Path: R, RadialGradient: F, Rect: G, Segment: N, stack: f, Text: E, vAlign: u, vStack: d, vWrap: m, wrap: p });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("drawing/parser.min", ["drawing/shapes.min"], t);
}(function () {
    !function (t) {
        function e(t) {
            var e = [];return t.replace(m, function (t, n) {
                e.push(parseFloat(n));
            }), e;
        }function n(t, e, n) {
            var i,
                r = e ? 0 : 1;for (i = 0; i < t.length; i += 2) {
                t.splice(i + r, 0, n);
            }
        }function i(t, e) {
            if (t && e) return e.scaleCopy(2).translate(-t.x, -t.y);
        }function r(t, e, n) {
            var i = 1 / 3;return e = e.clone().scale(2 / 3), { controlOut: e.clone().translateWith(t.scaleCopy(i)), controlIn: e.translateWith(n.scaleCopy(i)) };
        }var o = window.kendo,
            s = o.drawing,
            a = o.geometry,
            h = o.Class,
            _l = a.Point,
            c = o.deepExtend,
            u = t.trim,
            f = o.util,
            d = f.last,
            p = /([a-df-z]{1})([^a-df-z]*)(z)?/gi,
            m = /[,\s]?([+\-]?(?:\d*\.\d+|\d+)(?:[eE][+\-]?\d+)?)/g,
            g = "m",
            v = "z",
            x = h.extend({ parse: function parse(t, n) {
                var i,
                    r = new s.MultiPath(n),
                    o = new _l();return t.replace(p, function (t, n, s, a) {
                    var h = n.toLowerCase(),
                        l = h === n,
                        c = e(u(s));if (h === g && (l ? (o.x += c[0], o.y += c[1]) : (o.x = c[0], o.y = c[1]), r.moveTo(o.x, o.y), c.length > 2 && (h = "l", c.splice(0, 2))), y[h]) y[h](r, { parameters: c, position: o, isRelative: l, previousCommand: i }), a && a.toLowerCase() === v && r.close();else if (h !== g) throw Error("Error while parsing SVG path. Unsupported command: " + h);i = h;
                }), r;
            } }),
            y = { l: function l(t, e) {
                var n,
                    i,
                    r = e.parameters,
                    o = e.position;for (n = 0; n < r.length; n += 2) {
                    i = new _l(r[n], r[n + 1]), e.isRelative && i.translateWith(o), t.lineTo(i.x, i.y), o.x = i.x, o.y = i.y;
                }
            }, c: function c(t, e) {
                var n,
                    i,
                    r,
                    o,
                    s = e.parameters,
                    a = e.position;for (o = 0; o < s.length; o += 6) {
                    n = new _l(s[o], s[o + 1]), i = new _l(s[o + 2], s[o + 3]), r = new _l(s[o + 4], s[o + 5]), e.isRelative && (i.translateWith(a), n.translateWith(a), r.translateWith(a)), t.curveTo(n, i, r), a.x = r.x, a.y = r.y;
                }
            }, v: function v(t, e) {
                var i = e.isRelative ? 0 : e.position.x;n(e.parameters, !0, i), this.l(t, e);
            }, h: function h(t, e) {
                var i = e.isRelative ? 0 : e.position.y;n(e.parameters, !1, i), this.l(t, e);
            }, a: function a(t, e) {
                var n,
                    i,
                    r,
                    o,
                    s,
                    a,
                    h = e.parameters,
                    c = e.position;for (n = 0; n < h.length; n += 7) {
                    i = h[n], r = h[n + 1], o = h[n + 3], s = h[n + 4], a = new _l(h[n + 5], h[n + 6]), e.isRelative && a.translateWith(c), t.arcTo(a, i, r, o, s), c.x = a.x, c.y = a.y;
                }
            }, s: function s(t, e) {
                var n,
                    r,
                    o,
                    s,
                    a,
                    h = e.parameters,
                    c = e.position,
                    u = e.previousCommand;for ("s" != u && "c" != u || (s = d(d(t.paths).segments).controlIn()), a = 0; a < h.length; a += 4) {
                    o = new _l(h[a], h[a + 1]), r = new _l(h[a + 2], h[a + 3]), e.isRelative && (o.translateWith(c), r.translateWith(c)), n = s ? i(s, c) : c.clone(), s = o, t.curveTo(n, o, r), c.x = r.x, c.y = r.y;
                }
            }, q: function q(t, e) {
                var n,
                    i,
                    o,
                    s,
                    a = e.parameters,
                    h = e.position;for (s = 0; s < a.length; s += 4) {
                    o = new _l(a[s], a[s + 1]), i = new _l(a[s + 2], a[s + 3]), e.isRelative && (o.translateWith(h), i.translateWith(h)), n = r(h, o, i), t.curveTo(n.controlOut, n.controlIn, i), h.x = i.x, h.y = i.y;
                }
            }, t: function t(_t3, e) {
                var n,
                    o,
                    s,
                    a,
                    h,
                    c = e.parameters,
                    u = e.position,
                    f = e.previousCommand;for ("q" != f && "t" != f || (a = d(d(_t3.paths).segments), o = a.controlIn().clone().translateWith(u.scaleCopy(-1 / 3)).scale(1.5)), h = 0; h < c.length; h += 2) {
                    s = new _l(c[h], c[h + 1]), e.isRelative && s.translateWith(u), o = o ? i(o, u) : u.clone(), n = r(u, o, s), _t3.curveTo(n.controlOut, n.controlIn, s), u.x = s.x, u.y = s.y;
                }
            } };x.current = new x(), s.Path.parse = function (t, e) {
            return x.current.parse(t, e);
        }, c(s, { PathParser: x });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("drawing/search.min", ["drawing/shapes.min"], t);
}(function () {
    !function (t) {
        function e(t, e) {
            return t._zIndex < e._zIndex ? 1 : t._zIndex > e._zIndex ? -1 : 0;
        }var n = window.kendo,
            i = n.drawing,
            r = n.geometry,
            o = n.Class,
            s = r.Rect,
            a = n.deepExtend,
            h = t.isArray,
            l = t.inArray,
            c = Math,
            u = 1e4,
            f = 75,
            d = o.extend({ init: function init() {
                this.shapes = [];
            }, _add: function _add(t, e) {
                this.shapes.push({ bbox: e, shape: t }), t._quadNode = this;
            }, pointShapes: function pointShapes(t) {
                var e,
                    n = this.shapes,
                    i = n.length,
                    r = [];for (e = 0; e < i; e++) {
                    n[e].bbox.containsPoint(t) && r.push(n[e].shape);
                }return r;
            }, insert: function insert(t, e) {
                this._add(t, e);
            }, remove: function remove(t) {
                var e,
                    n = this.shapes,
                    i = n.length;for (e = 0; e < i; e++) {
                    if (n[e].shape === t) {
                        n.splice(e, 1);break;
                    }
                }
            } }),
            p = d.extend({ init: function init(t) {
                d.fn.init.call(this), this.children = [], this.rect = t;
            }, inBounds: function inBounds(t) {
                var e = this.rect,
                    n = e.bottomRight(),
                    i = t.bottomRight(),
                    r = e.origin.x <= t.origin.x && e.origin.y <= t.origin.y && i.x <= n.x && i.y <= n.y;return r;
            }, pointShapes: function pointShapes(t) {
                var e,
                    n = this.children,
                    i = n.length,
                    r = d.fn.pointShapes.call(this, t);for (e = 0; e < i; e++) {
                    r = r.concat(n[e].pointShapes(t));
                }return r;
            }, insert: function insert(t, e) {
                var n,
                    i = !1,
                    r = this.children;if (this.inBounds(e)) {
                    if (this.shapes.length < 4) this._add(t, e);else {
                        for (r.length || this._initChildren(), n = 0; n < r.length; n++) {
                            if (r[n].insert(t, e)) {
                                i = !0;break;
                            }
                        }i || this._add(t, e);
                    }i = !0;
                }return i;
            }, _initChildren: function _initChildren() {
                var t = this.rect,
                    e = this.children,
                    n = t.center(),
                    i = t.width() / 2,
                    r = t.height() / 2;e.push(new p(new s([t.origin.x, t.origin.y], [i, r])), new p(new s([n.x, t.origin.y], [i, r])), new p(new s([t.origin.x, n.y], [i, r])), new p(new s([n.x, n.y], [i, r])));
            } }),
            m = o.extend({ ROOT_SIZE: 1e3, init: function init() {
                this.initRoots();
            }, initRoots: function initRoots() {
                this.rootMap = {}, this.root = new d(), this.rootElements = [];
            }, clear: function clear() {
                var t,
                    e = this,
                    n = e.rootElements;for (t = 0; t < n.length; t++) {
                    this.remove(n[t]);
                }this.initRoots();
            }, pointShape: function pointShape(t) {
                var n,
                    i = this.ROOT_SIZE,
                    r = this.root.pointShapes(t),
                    o = (this.rootMap[c.floor(t.x / i)] || {})[c.floor(t.y / i)];for (o && (r = r.concat(o.pointShapes(t))), this.assignZindex(r), r.sort(e), n = 0; n < r.length; n++) {
                    if (r[n].containsPoint(t)) return r[n];
                }
            }, assignZindex: function assignZindex(t) {
                var e, n, i, r, o;for (o = 0; o < t.length; o++) {
                    for (e = t[o], i = 0, n = c.pow(u, f), r = []; e;) {
                        r.push(e), e = e.parent;
                    }for (; r.length;) {
                        e = r.pop(), i += (l(e, e.parent ? e.parent.children : this.rootElements) + 1) * n, n /= u;
                    }t[o]._zIndex = i;
                }
            }, optionsChange: function optionsChange(t) {
                "transform" != t.field && "stroke.width" != t.field || this.bboxChange(t.element);
            }, geometryChange: function geometryChange(t) {
                this.bboxChange(t.element);
            }, bboxChange: function bboxChange(t) {
                if ("Group" === t.nodeType) for (var e = 0; e < t.children.length; e++) {
                    this.bboxChange(t.children[e]);
                } else t._quadNode && t._quadNode.remove(t), this._insertShape(t);
            }, add: function add(t) {
                var e = h(t) ? t.slice(0) : [t];this.rootElements.push.apply(this.rootElements, e), this._insert(e);
            }, childrenChange: function childrenChange(t) {
                if ("remove" == t.action) for (var e = 0; e < t.items.length; e++) {
                    this.remove(t.items[e]);
                } else this._insert(Array.prototype.slice.call(t.items, 0));
            }, _insert: function _insert(t) {
                for (var e; t.length > 0;) {
                    e = t.pop(), e.addObserver(this), "Group" == e.nodeType ? t.push.apply(t, e.children) : this._insertShape(e);
                }
            }, _insertShape: function _insertShape(t) {
                var e,
                    n,
                    i,
                    r,
                    o = t.bbox();o && (e = this.ROOT_SIZE, n = this.getSectors(o), i = n[0][0], r = n[1][0], this.inRoot(n) ? this.root.insert(t, o) : (this.rootMap[i] || (this.rootMap[i] = {}), this.rootMap[i][r] || (this.rootMap[i][r] = new p(new s([i * e, r * e], [e, e]))), this.rootMap[i][r].insert(t, o)));
            }, remove: function remove(t) {
                var e, n;if (t.removeObserver(this), "Group" == t.nodeType) for (e = t.children, n = 0; n < e.length; n++) {
                    this.remove(e[n]);
                } else t._quadNode && (t._quadNode.remove(t), delete t._quadNode);
            }, inRoot: function inRoot(t) {
                return t[0].length > 1 || t[1].length > 1;
            }, getSectors: function getSectors(t) {
                var e,
                    n,
                    i = this.ROOT_SIZE,
                    r = t.bottomRight(),
                    o = c.floor(r.x / i),
                    s = c.floor(r.y / i),
                    a = [[], []];for (e = c.floor(t.origin.x / i); e <= o; e++) {
                    a[0].push(e);
                }for (n = c.floor(t.origin.y / i); n <= s; n++) {
                    a[1].push(n);
                }return a;
            } });a(i, { ShapesQuadTree: m, QuadNode: p });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("drawing/svg.min", ["drawing/shapes.min", "util/main.min"], t);
}(function () {
    !function (t) {
        function e(t) {
            var e, n, i, r;try {
                e = t.getScreenCTM ? t.getScreenCTM() : null;
            } catch (o) {}e && (n = -e.e % 1, i = -e.f % 1, r = t.style, 0 === n && 0 === i || (r.left = n + "px", r.top = i + "px"));
        }function n() {
            var t = document.getElementsByTagName("base")[0],
                e = "",
                n = document.location.href,
                i = n.indexOf("#");return t && !c.support.browser.msie && (i !== -1 && (n = n.substring(0, i)), e = n), e;
        }function i(t) {
            return "url(" + n() + "#" + t + ")";
        }function r(t) {
            var e,
                n,
                i,
                r = new M(),
                o = t.clippedBBox();return o && (e = o.getOrigin(), n = new d.Group(), n.transform(f.transform().translate(-e.x, -e.y)), n.children.push(t), t = n), r.load([t]), i = "<?xml version='1.0' ?><svg xmlns='" + A + "' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1'>" + r.render() + "</svg>", r.destroy(), i;
        }function o(e, n) {
            var i = r(e);return n && n.raw || (i = "data:image/svg+xml;base64," + m.encodeBase64(i)), t.Deferred().resolve(i).promise();
        }function s(t, e) {
            return "clip" == t || "fill" == t && (!e || e.nodeType == T);
        }function a(t) {
            if (!t || !t.indexOf || t.indexOf("&") < 0) return t;var e = a._element;return e.innerHTML = t, e.textContent || e.innerText;
        }var h,
            l = document,
            c = window.kendo,
            u = c.deepExtend,
            f = c.geometry,
            d = c.drawing,
            p = d.BaseNode,
            m = c.util,
            g = m.defined,
            v = m.isTransparent,
            x = m.renderAttr,
            y = m.renderAllAttr,
            w = m.renderTemplate,
            b = t.inArray,
            _ = "butt",
            C = d.DASH_ARRAYS,
            T = "gradient",
            k = "none",
            S = ".kendo",
            E = "solid",
            P = " ",
            A = "http://www.w3.org/2000/svg",
            O = "transform",
            N = "undefined",
            R = d.Surface.extend({ init: function init(t, n) {
                d.Surface.fn.init.call(this, t, n), this._root = new M(this.options), Q(this.element[0], this._template(this)), this._rootElement = this.element[0].firstElementChild, e(this._rootElement), this._root.attachTo(this._rootElement), this.element.on("click" + S, this._click), this.element.on("mouseover" + S, this._mouseenter), this.element.on("mouseout" + S, this._mouseleave), this.element.on("mousemove" + S, this._mousemove), this.resize();
            }, type: "svg", destroy: function destroy() {
                this._root && (this._root.destroy(), this._root = null, this._rootElement = null, this.element.off(S)), d.Surface.fn.destroy.call(this);
            }, translate: function translate(t) {
                var e = c.format("{0} {1} {2} {3}", Math.round(t.x), Math.round(t.y), this._size.width, this._size.height);this._offset = t, this._rootElement.setAttribute("viewBox", e);
            }, draw: function draw(t) {
                d.Surface.fn.draw.call(this, t), this._root.load([t]);
            }, clear: function clear() {
                d.Surface.fn.clear.call(this), this._root.clear();
            }, svg: function svg() {
                return "<?xml version='1.0' ?>" + this._template(this);
            }, exportVisual: function exportVisual() {
                var t,
                    e = this._visual,
                    n = this._offset;return n && (t = new d.Group(), t.children.push(e), t.transform(f.transform().translate(-n.x, -n.y)), e = t), e;
            }, _resize: function _resize() {
                this._offset && this.translate(this._offset);
            }, _template: w("<svg style='width: 100%; height: 100%; overflow: hidden;' xmlns='" + A + "' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1'>#= d._root.render() #</svg>") }),
            z = p.extend({ init: function init(t) {
                p.fn.init.call(this, t), this.definitions = {};
            }, destroy: function destroy() {
                this.element && (this.element._kendoNode = null, this.element = null), this.clearDefinitions(), p.fn.destroy.call(this);
            }, load: function load(t, e) {
                var n,
                    i,
                    r,
                    o,
                    s = this,
                    a = s.element;for (o = 0; o < t.length; o++) {
                    i = t[o], r = i.children, n = new W[i.nodeType](i), g(e) ? s.insertAt(n, e) : s.append(n), n.createDefinitions(), r && r.length > 0 && n.load(r), a && n.attachTo(a, e);
                }
            }, root: function root() {
                for (var t = this; t.parent;) {
                    t = t.parent;
                }return t;
            }, attachTo: function attachTo(t, e) {
                var n,
                    i = l.createElement("div");Q(i, "<svg xmlns='" + A + "' version='1.1'>" + this.render() + "</svg>"), n = i.firstChild.firstChild, n && (g(e) ? t.insertBefore(n, t.childNodes[e] || null) : t.appendChild(n), this.setElement(n));
            }, setElement: function setElement(t) {
                var e,
                    n,
                    i = this.childNodes;for (this.element && (this.element._kendoNode = null), this.element = t, this.element._kendoNode = this, n = 0; n < i.length; n++) {
                    e = t.childNodes[n], i[n].setElement(e);
                }
            }, clear: function clear() {
                var t, e;for (this.clearDefinitions(), this.element && (this.element.innerHTML = ""), t = this.childNodes, e = 0; e < t.length; e++) {
                    t[e].destroy();
                }this.childNodes = [];
            }, removeSelf: function removeSelf() {
                if (this.element) {
                    var t = this.element.parentNode;t && t.removeChild(this.element), this.element = null;
                }p.fn.removeSelf.call(this);
            }, template: w("#= d.renderChildren() #"), render: function render() {
                return this.template(this);
            }, renderChildren: function renderChildren() {
                var t,
                    e = this.childNodes,
                    n = "";for (t = 0; t < e.length; t++) {
                    n += e[t].render();
                }return n;
            }, optionsChange: function optionsChange(t) {
                var e = t.field,
                    n = t.value;"visible" === e ? this.css("display", n ? "" : k) : h[e] && s(e, n) ? this.updateDefinition(e, n) : "opacity" === e && this.attr("opacity", n), p.fn.optionsChange.call(this, t);
            }, attr: function attr(t, e) {
                this.element && this.element.setAttribute(t, e);
            }, allAttr: function allAttr(t) {
                for (var e = 0; e < t.length; e++) {
                    this.attr(t[e][0], t[e][1]);
                }
            }, css: function css(t, e) {
                this.element && (this.element.style[t] = e);
            }, allCss: function allCss(t) {
                for (var e = 0; e < t.length; e++) {
                    this.css(t[e][0], t[e][1]);
                }
            }, removeAttr: function removeAttr(t) {
                this.element && this.element.removeAttribute(t);
            }, mapTransform: function mapTransform(t) {
                var e = [];return t && e.push([O, "matrix(" + t.matrix().toString(6) + ")"]), e;
            }, renderTransform: function renderTransform() {
                return y(this.mapTransform(this.srcElement.transform()));
            }, transformChange: function transformChange(t) {
                t ? this.allAttr(this.mapTransform(t)) : this.removeAttr(O);
            }, mapStyle: function mapStyle() {
                var t = this.srcElement.options,
                    e = [["cursor", t.cursor]];return t.visible === !1 && e.push(["display", k]), e;
            }, renderStyle: function renderStyle() {
                return x("style", m.renderStyle(this.mapStyle(!0)));
            }, renderOpacity: function renderOpacity() {
                return x("opacity", this.srcElement.options.opacity);
            }, createDefinitions: function createDefinitions() {
                var t,
                    e,
                    n,
                    i,
                    r = this.srcElement,
                    o = this.definitions;if (r) {
                    n = r.options;for (e in h) {
                        t = n.get(e), t && s(e, t) && (o[e] = t, i = !0);
                    }i && this.definitionChange({ action: "add", definitions: o });
                }
            }, definitionChange: function definitionChange(t) {
                this.parent && this.parent.definitionChange(t);
            }, updateDefinition: function updateDefinition(t, e) {
                var n = this.definitions,
                    r = n[t],
                    o = h[t],
                    s = {};r && (s[t] = r, this.definitionChange({ action: "remove", definitions: s }), delete n[t]), e ? (s[t] = e, this.definitionChange({ action: "add", definitions: s }), n[t] = e, this.attr(o, i(e.id))) : r && this.removeAttr(o);
            }, clearDefinitions: function clearDefinitions() {
                var t,
                    e = this.definitions;for (t in e) {
                    this.definitionChange({ action: "remove", definitions: e }), this.definitions = {};break;
                }
            }, renderDefinitions: function renderDefinitions() {
                return y(this.mapDefinitions());
            }, mapDefinitions: function mapDefinitions() {
                var t,
                    e = this.definitions,
                    n = [];for (t in e) {
                    n.push([h[t], i(e[t].id)]);
                }return n;
            } }),
            M = z.extend({ init: function init(t) {
                z.fn.init.call(this), this.options = t, this.defs = new B();
            }, attachTo: function attachTo(t) {
                this.element = t, this.defs.attachTo(t.firstElementChild);
            }, clear: function clear() {
                p.fn.clear.call(this);
            }, template: w("#=d.defs.render()##= d.renderChildren() #"), definitionChange: function definitionChange(t) {
                this.defs.definitionChange(t);
            } }),
            B = z.extend({ init: function init() {
                z.fn.init.call(this), this.definitionMap = {};
            }, attachTo: function attachTo(t) {
                this.element = t;
            }, template: w("<defs>#= d.renderChildren()#</defs>"), definitionChange: function definitionChange(t) {
                var e = t.definitions,
                    n = t.action;"add" == n ? this.addDefinitions(e) : "remove" == n && this.removeDefinitions(e);
            }, createDefinition: function createDefinition(t, e) {
                var n;return "clip" == t ? n = D : "fill" == t && (e instanceof d.LinearGradient ? n = U : e instanceof d.RadialGradient && (n = Y)), new n(e);
            }, addDefinitions: function addDefinitions(t) {
                for (var e in t) {
                    this.addDefinition(e, t[e]);
                }
            }, addDefinition: function addDefinition(t, e) {
                var n,
                    i = this.definitionMap,
                    r = e.id,
                    o = this.element,
                    s = i[r];s ? s.count++ : (n = this.createDefinition(t, e), i[r] = { element: n, count: 1 }, this.append(n), o && n.attachTo(this.element));
            }, removeDefinitions: function removeDefinitions(t) {
                for (var e in t) {
                    this.removeDefinition(t[e]);
                }
            }, removeDefinition: function removeDefinition(t) {
                var e = this.definitionMap,
                    n = t.id,
                    i = e[n];i && (i.count--, 0 === i.count && (this.remove(b(i.element, this.childNodes), 1), delete e[n]));
            } }),
            D = z.extend({ init: function init(t) {
                z.fn.init.call(this), this.srcElement = t, this.id = t.id, this.load([t]);
            }, template: w("<clipPath id='#=d.id#'>#= d.renderChildren()#</clipPath>") }),
            L = z.extend({ template: w("<g#= d.renderTransform() + d.renderStyle() + d.renderOpacity() + d.renderDefinitions()#>#= d.renderChildren() #</g>"), optionsChange: function optionsChange(t) {
                t.field == O && this.transformChange(t.value), z.fn.optionsChange.call(this, t);
            } }),
            I = z.extend({ geometryChange: function geometryChange() {
                this.attr("d", this.renderData()), this.invalidate();
            }, optionsChange: function optionsChange(t) {
                switch (t.field) {case "fill":
                        t.value ? this.allAttr(this.mapFill(t.value)) : this.removeAttr("fill");break;case "fill.color":
                        this.allAttr(this.mapFill({ color: t.value }));break;case "stroke":
                        t.value ? this.allAttr(this.mapStroke(t.value)) : this.removeAttr("stroke");break;case O:
                        this.transformChange(t.value);break;default:
                        var e = this.attributeMap[t.field];e && this.attr(e, t.value);}z.fn.optionsChange.call(this, t);
            }, attributeMap: { "fill.opacity": "fill-opacity", "stroke.color": "stroke", "stroke.width": "stroke-width", "stroke.opacity": "stroke-opacity" }, content: function content() {
                this.element && (this.element.textContent = this.srcElement.content());
            }, renderData: function renderData() {
                return this.printPath(this.srcElement);
            }, printPath: function printPath(t) {
                var e,
                    n,
                    i,
                    r,
                    o,
                    s = t.segments,
                    a = s.length;if (a > 0) {
                    for (e = [], o = 1; o < a; o++) {
                        i = this.segmentType(s[o - 1], s[o]), i !== r && (r = i, e.push(i)), e.push("L" === i ? this.printPoints(s[o].anchor()) : this.printPoints(s[o - 1].controlOut(), s[o].controlIn(), s[o].anchor()));
                    }return n = "M" + this.printPoints(s[0].anchor()) + P + e.join(P), t.options.closed && (n += "Z"), n;
                }
            }, printPoints: function printPoints() {
                var t,
                    e = arguments,
                    n = e.length,
                    i = [];for (t = 0; t < n; t++) {
                    i.push(e[t].toString(3));
                }return i.join(P);
            }, segmentType: function segmentType(t, e) {
                return t.controlOut() && e.controlIn() ? "C" : "L";
            }, mapStroke: function mapStroke(t) {
                var e = [];return t && !v(t.color) ? (e.push(["stroke", t.color]), e.push(["stroke-width", t.width]), e.push(["stroke-linecap", this.renderLinecap(t)]), e.push(["stroke-linejoin", t.lineJoin]), g(t.opacity) && e.push(["stroke-opacity", t.opacity]), g(t.dashType) && e.push(["stroke-dasharray", this.renderDashType(t)])) : e.push(["stroke", k]), e;
            }, renderStroke: function renderStroke() {
                return y(this.mapStroke(this.srcElement.options.stroke));
            }, renderDashType: function renderDashType(t) {
                var e,
                    n,
                    i,
                    r = t.width || 1,
                    o = t.dashType;if (o && o != E) {
                    for (e = C[o.toLowerCase()], n = [], i = 0; i < e.length; i++) {
                        n.push(e[i] * r);
                    }return n.join(" ");
                }
            }, renderLinecap: function renderLinecap(t) {
                var e = t.dashType,
                    n = t.lineCap;return e && e != E ? _ : n;
            }, mapFill: function mapFill(t) {
                var e = [];return t && t.nodeType == T || (t && !v(t.color) ? (e.push(["fill", t.color]), g(t.opacity) && e.push(["fill-opacity", t.opacity])) : e.push(["fill", k])), e;
            }, renderFill: function renderFill() {
                return y(this.mapFill(this.srcElement.options.fill));
            }, template: w("<path #= d.renderStyle() # #= d.renderOpacity() # #= kendo.util.renderAttr('d', d.renderData()) # #= d.renderStroke() # #= d.renderFill() # #= d.renderDefinitions() # #= d.renderTransform() #></path>") }),
            F = I.extend({ renderData: function renderData() {
                return this.printPath(this.srcElement.toPath());
            } }),
            G = I.extend({ renderData: function renderData() {
                var t,
                    e,
                    n = this.srcElement.paths;if (n.length > 0) {
                    for (t = [], e = 0; e < n.length; e++) {
                        t.push(this.printPath(n[e]));
                    }return t.join(" ");
                }
            } }),
            j = I.extend({ geometryChange: function geometryChange() {
                var t = this.center();this.attr("cx", t.x), this.attr("cy", t.y), this.attr("r", this.radius()), this.invalidate();
            }, center: function center() {
                return this.srcElement.geometry().center;
            }, radius: function radius() {
                return this.srcElement.geometry().radius;
            }, template: w("<circle #= d.renderStyle() # #= d.renderOpacity() # cx='#= d.center().x #' cy='#= d.center().y #' r='#= d.radius() #' #= d.renderStroke() # #= d.renderFill() # #= d.renderDefinitions() # #= d.renderTransform() # ></circle>") }),
            H = I.extend({ geometryChange: function geometryChange() {
                var t = this.pos();this.attr("x", t.x), this.attr("y", t.y), this.invalidate();
            }, optionsChange: function optionsChange(t) {
                "font" === t.field ? (this.attr("style", m.renderStyle(this.mapStyle())), this.geometryChange()) : "content" === t.field && I.fn.content.call(this, this.srcElement.content()), I.fn.optionsChange.call(this, t);
            }, mapStyle: function mapStyle(t) {
                var e = I.fn.mapStyle.call(this, t),
                    n = this.srcElement.options.font;return t && (n = c.htmlEncode(n)), e.push(["font", n]), e;
            }, pos: function pos() {
                var t = this.srcElement.position(),
                    e = this.srcElement.measure();return t.clone().setY(t.y + e.baseline);
            }, renderContent: function renderContent() {
                var t = this.srcElement.content();return t = a(t), t = c.htmlEncode(t);
            }, template: w("<text #= d.renderStyle() # #= d.renderOpacity() # x='#= this.pos().x #' y='#= this.pos().y #' #= d.renderStroke() # #= d.renderTransform() # #= d.renderDefinitions() # #= d.renderFill() #>#= d.renderContent() #</text>") }),
            q = I.extend({ geometryChange: function geometryChange() {
                this.allAttr(this.mapPosition()), this.invalidate();
            }, optionsChange: function optionsChange(t) {
                "src" === t.field && this.allAttr(this.mapSource()), I.fn.optionsChange.call(this, t);
            }, mapPosition: function mapPosition() {
                var t = this.srcElement.rect(),
                    e = t.topLeft();return [["x", e.x], ["y", e.y], ["width", t.width() + "px"], ["height", t.height() + "px"]];
            }, renderPosition: function renderPosition() {
                return y(this.mapPosition());
            }, mapSource: function mapSource(t) {
                var e = this.srcElement.src();return t && (e = c.htmlEncode(e)), [["xlink:href", e]];
            }, renderSource: function renderSource() {
                return y(this.mapSource(!0));
            }, template: w("<image preserveAspectRatio='none' #= d.renderStyle() # #= d.renderTransform()# #= d.renderOpacity() # #= d.renderPosition() # #= d.renderSource() # #= d.renderDefinitions()#></image>") }),
            $ = z.extend({ template: w("<stop #=d.renderOffset()# #=d.renderStyle()# />"), renderOffset: function renderOffset() {
                return x("offset", this.srcElement.offset());
            }, mapStyle: function mapStyle() {
                var t = this.srcElement;return [["stop-color", t.color()], ["stop-opacity", t.opacity()]];
            }, optionsChange: function optionsChange(t) {
                "offset" == t.field ? this.attr(t.field, t.value) : "color" != t.field && "opacity" != t.field || this.css("stop-" + t.field, t.value);
            } }),
            X = z.extend({ init: function init(t) {
                z.fn.init.call(this, t), this.id = t.id, this.loadStops();
            }, loadStops: function loadStops() {
                var t,
                    e,
                    n = this.srcElement,
                    i = n.stops,
                    r = this.element;for (e = 0; e < i.length; e++) {
                    t = new $(i[e]), this.append(t), r && t.attachTo(r);
                }
            }, optionsChange: function optionsChange(t) {
                "gradient.stops" == t.field ? (p.fn.clear.call(this), this.loadStops()) : t.field == T && this.allAttr(this.mapCoordinates());
            }, renderCoordinates: function renderCoordinates() {
                return y(this.mapCoordinates());
            }, mapSpace: function mapSpace() {
                return ["gradientUnits", this.srcElement.userSpace() ? "userSpaceOnUse" : "objectBoundingBox"];
            } }),
            U = X.extend({ template: w("<linearGradient id='#=d.id#' #=d.renderCoordinates()#>#= d.renderChildren()#</linearGradient>"), mapCoordinates: function mapCoordinates() {
                var t = this.srcElement,
                    e = t.start(),
                    n = t.end(),
                    i = [["x1", e.x], ["y1", e.y], ["x2", n.x], ["y2", n.y], this.mapSpace()];return i;
            } }),
            Y = X.extend({ template: w("<radialGradient id='#=d.id#' #=d.renderCoordinates()#>#= d.renderChildren()#</radialGradient>"), mapCoordinates: function mapCoordinates() {
                var t = this.srcElement,
                    e = t.center(),
                    n = t.radius(),
                    i = [["cx", e.x], ["cy", e.y], ["r", n], this.mapSpace()];return i;
            } }),
            V = I.extend({ geometryChange: function geometryChange() {
                var t = this.srcElement.geometry();this.attr("x", t.origin.x), this.attr("y", t.origin.y), this.attr("width", t.size.width), this.attr("height", t.size.height), this.invalidate();
            }, size: function size() {
                return this.srcElement.geometry().size;
            }, origin: function origin() {
                return this.srcElement.geometry().origin;
            }, template: w("<rect #= d.renderStyle() # #= d.renderOpacity() # x='#= d.origin().x #' y='#= d.origin().y #' width='#= d.size().width #' height='#= d.size().height #'#= d.renderStroke() # #= d.renderFill() # #= d.renderDefinitions() # #= d.renderTransform() # />") }),
            W = { Group: L, Text: H, Path: I, MultiPath: G, Circle: j, Arc: F, Image: q, Rect: V },
            Q = function Q(t, e) {
            t.innerHTML = e;
        };!function () {
            var t = "<svg xmlns='" + A + "'></svg>",
                e = l.createElement("div"),
                n = (typeof DOMParser === "undefined" ? "undefined" : _typeof(DOMParser)) != N;e.innerHTML = t, n && e.firstChild.namespaceURI != A && (Q = function Q(t, e) {
                var n = new DOMParser(),
                    i = n.parseFromString(e, "text/xml"),
                    r = l.adoptNode(i.documentElement);t.innerHTML = "", t.appendChild(r);
            });
        }(), a._element = document.createElement("span"), h = { clip: "clip-path", fill: "fill" }, c.support.svg = function () {
            return l.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1");
        }(), c.support.svg && d.SurfaceFactory.current.register("svg", R, 10), u(d, { exportSVG: o, svg: { ArcNode: F, CircleNode: j, ClipNode: D, DefinitionNode: B, GradientStopNode: $, GroupNode: L, ImageNode: q, LinearGradientNode: U, MultiPathNode: G, Node: z, PathNode: I, RadialGradientNode: Y, RectNode: V, RootNode: M, Surface: R, TextNode: H, _exportGroup: r } });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("drawing/canvas.min", ["drawing/search.min", "kendo.color.min"], t);
}(function () {
    !function (t) {
        function e(e, n) {
            var i,
                r,
                o,
                s,
                a,
                h,
                l = { width: "800px", height: "600px", cors: "Anonymous" },
                c = e.clippedBBox();return c && (i = c.getOrigin(), r = new b.Group(), r.transform(w.transform().translate(-i.x, -i.y)), r.children.push(e), e = r, o = c.getSize(), l.width = o.width + "px", l.height = o.height + "px"), n = p(l, n), s = t("<div />").css({ display: "none", width: n.width, height: n.height }).appendTo(document.body), a = new A(s, n), a.suspendTracking(), a.draw(e), h = a.image(), h.always(function () {
                a.destroy(), s.remove();
            }), h;
        }function n(t, e) {
            var n, i, r;for (r = 0; r < e.length; r++) {
                i = e[r], n = d.parseColor(i.color()), n.a *= i.opacity(), t.addColorStop(i.offset(), n.toCssRgba());
            }
        }var i,
            r,
            o,
            s,
            a,
            h,
            l,
            c,
            u,
            f = document,
            d = window.kendo,
            p = d.deepExtend,
            m = d.util,
            g = m.defined,
            v = m.isTransparent,
            x = m.renderTemplate,
            y = m.valueOrDefault,
            w = d.geometry,
            b = d.drawing,
            _ = b.BaseNode,
            C = t.proxy,
            T = "butt",
            k = b.DASH_ARRAYS,
            S = 1e3 / 60,
            E = "solid",
            P = ".kendo",
            A = b.Surface.extend({ init: function init(e, n) {
                b.Surface.fn.init.call(this, e, n), this.element[0].innerHTML = this._template(this);var r = this.element[0].firstElementChild;r.width = t(e).width(), r.height = t(e).height(), this._rootElement = r, this._root = new i(r);
            }, destroy: function destroy() {
                b.Surface.fn.destroy.call(this), this._root && (this._root.destroy(), this._root = null), this._searchTree && (this._searchTree.clear(), delete this._searchTree), this.element.off(P);
            }, type: "canvas", draw: function draw(t) {
                b.Surface.fn.draw.call(this, t), this._root.load([t], void 0, this.options.cors), this._searchTree && this._searchTree.add([t]);
            }, clear: function clear() {
                b.Surface.fn.clear.call(this), this._root.clear(), this._searchTree && this._searchTree.clear();
            }, eventTarget: function eventTarget(t) {
                var e, n;if (this._searchTree) return e = this._surfacePoint(t), n = this._searchTree.pointShape(e);
            }, image: function image() {
                var e,
                    n = this._root,
                    i = this._rootElement,
                    r = [];return n.traverse(function (t) {
                    t.loading && r.push(t.loading);
                }), e = t.Deferred(), t.when.apply(t, r).done(function () {
                    n._invalidate();try {
                        var t = i.toDataURL();e.resolve(t);
                    } catch (r) {
                        e.reject(r);
                    }
                }).fail(function (t) {
                    e.reject(t);
                }), e.promise();
            }, suspendTracking: function suspendTracking() {
                b.Surface.fn.suspendTracking.call(this), this._searchTree && (this._searchTree.clear(), delete this._searchTree);
            }, resumeTracking: function resumeTracking() {
                var t, e, n;if (b.Surface.fn.resumeTracking.call(this), !this._searchTree) {
                    for (this._searchTree = new b.ShapesQuadTree(), t = this._root.childNodes, e = [], n = 0; n < t.length; n++) {
                        e.push(t[n].srcElement);
                    }this._searchTree.add(e);
                }
            }, _resize: function _resize() {
                this._rootElement.width = this._size.width, this._rootElement.height = this._size.height, this._root.invalidate();
            }, _template: x("<canvas style='width: 100%; height: 100%;'></canvas>"), _enableTracking: function _enableTracking() {
                this._searchTree = new b.ShapesQuadTree(), this._mouseTrackHandler = C(this._trackMouse, this), this.element.on("click" + P, this._mouseTrackHandler), this.element.on("mousemove" + P, this._mouseTrackHandler), b.Surface.fn._enableTracking.call(this);
            }, _trackMouse: function _trackMouse(t) {
                var e, n;this._suspendedTracking || (e = this.eventTarget(t), "click" != t.type ? (n = this._currentShape, n && n !== e && this.trigger("mouseleave", { element: n, originalEvent: t, type: "mouseleave" }), e && n !== e && this.trigger("mouseenter", { element: e, originalEvent: t, type: "mouseenter" }), this.trigger("mousemove", { element: e, originalEvent: t, type: "mousemove" }), this._currentShape = e) : e && this.trigger("click", { element: e, originalEvent: t, type: "click" }));
            } }),
            O = _.extend({ init: function init(t) {
                _.fn.init.call(this, t), t && this.initClip();
            }, initClip: function initClip() {
                var t = this.srcElement.clip();t && (this.clip = t, t.addObserver(this));
            }, clear: function clear() {
                this.srcElement && this.srcElement.removeObserver(this), this.clearClip(), _.fn.clear.call(this);
            }, clearClip: function clearClip() {
                this.clip && (this.clip.removeObserver(this), delete this.clip);
            }, setClip: function setClip(t) {
                this.clip && (t.beginPath(), r.fn.renderPoints(t, this.clip), t.clip());
            }, optionsChange: function optionsChange(t) {
                "clip" == t.field && (this.clearClip(), this.initClip()), _.fn.optionsChange.call(this, t);
            }, setTransform: function setTransform(t) {
                if (this.srcElement) {
                    var e = this.srcElement.transform();e && t.transform.apply(t, e.matrix().toArray(6));
                }
            }, loadElements: function loadElements(t, e, n) {
                var i,
                    r,
                    o,
                    s,
                    a = this;for (s = 0; s < t.length; s++) {
                    r = t[s], o = r.children, i = new u[r.nodeType](r, n), o && o.length > 0 && i.load(o, e, n), g(e) ? a.insertAt(i, e) : a.append(i);
                }
            }, load: function load(t, e, n) {
                this.loadElements(t, e, n), this.invalidate();
            }, setOpacity: function setOpacity(t) {
                if (this.srcElement) {
                    var e = this.srcElement.opacity();g(e) && this.globalAlpha(t, e);
                }
            }, globalAlpha: function globalAlpha(t, e) {
                e && t.globalAlpha && (e *= t.globalAlpha), t.globalAlpha = e;
            }, visible: function visible() {
                var t = this.srcElement;return !t || t && t.options.visible !== !1;
            } }),
            N = O.extend({ renderTo: function renderTo(t) {
                var e, n, i;if (this.visible()) {
                    for (t.save(), this.setTransform(t), this.setClip(t), this.setOpacity(t), e = this.childNodes, n = 0; n < e.length; n++) {
                        i = e[n], i.visible() && i.renderTo(t);
                    }t.restore();
                }
            } });b.mixins.Traversable.extend(N.fn, "childNodes"), i = N.extend({ init: function init(t) {
                N.fn.init.call(this), this.canvas = t, this.ctx = t.getContext("2d");var e = C(this._invalidate, this);this.invalidate = d.throttle(function () {
                    d.animationFrame(e);
                }, S);
            }, destroy: function destroy() {
                N.fn.destroy.call(this), this.canvas = null, this.ctx = null;
            }, load: function load(t, e, n) {
                this.loadElements(t, e, n), this._invalidate();
            }, _invalidate: function _invalidate() {
                this.ctx && (this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height), this.renderTo(this.ctx));
            } }), b.mixins.Traversable.extend(i.fn, "childNodes"), r = O.extend({ renderTo: function renderTo(t) {
                t.save(), this.setTransform(t), this.setClip(t), this.setOpacity(t), t.beginPath(), this.renderPoints(t, this.srcElement), this.setLineDash(t), this.setLineCap(t), this.setLineJoin(t), this.setFill(t), this.setStroke(t), t.restore();
            }, setFill: function setFill(t) {
                var e = this.srcElement.options.fill,
                    n = !1;return e && ("gradient" == e.nodeType ? (this.setGradientFill(t, e), n = !0) : v(e.color) || (t.fillStyle = e.color, t.save(), this.globalAlpha(t, e.opacity), t.fill(), t.restore(), n = !0)), n;
            }, setGradientFill: function setGradientFill(t, e) {
                var i,
                    r,
                    o,
                    s,
                    a = this.srcElement.rawBBox();e instanceof b.LinearGradient ? (r = e.start(), o = e.end(), i = t.createLinearGradient(r.x, r.y, o.x, o.y)) : e instanceof b.RadialGradient && (s = e.center(), i = t.createRadialGradient(s.x, s.y, 0, s.x, s.y, e.radius())), n(i, e.stops), t.save(), e.userSpace() || t.transform(a.width(), 0, 0, a.height(), a.origin.x, a.origin.y), t.fillStyle = i, t.fill(), t.restore();
            }, setStroke: function setStroke(t) {
                var e = this.srcElement.options.stroke;if (e && !v(e.color) && e.width > 0) return t.strokeStyle = e.color, t.lineWidth = y(e.width, 1), t.save(), this.globalAlpha(t, e.opacity), t.stroke(), t.restore(), !0;
            }, dashType: function dashType() {
                var t = this.srcElement.options.stroke;if (t && t.dashType) return t.dashType.toLowerCase();
            }, setLineDash: function setLineDash(t) {
                var e,
                    n = this.dashType();n && n != E && (e = k[n], t.setLineDash ? t.setLineDash(e) : (t.mozDash = e, t.webkitLineDash = e));
            }, setLineCap: function setLineCap(t) {
                var e = this.dashType(),
                    n = this.srcElement.options.stroke;e && e !== E ? t.lineCap = T : n && n.lineCap && (t.lineCap = n.lineCap);
            }, setLineJoin: function setLineJoin(t) {
                var e = this.srcElement.options.stroke;e && e.lineJoin && (t.lineJoin = e.lineJoin);
            }, renderPoints: function renderPoints(t, e) {
                var n,
                    i,
                    r,
                    o,
                    s,
                    a,
                    h = e.segments;if (0 !== h.length) {
                    for (n = h[0], i = n.anchor(), t.moveTo(i.x, i.y), r = 1; r < h.length; r++) {
                        n = h[r], i = n.anchor(), o = h[r - 1], s = o.controlOut(), a = n.controlIn(), s && a ? t.bezierCurveTo(s.x, s.y, a.x, a.y, i.x, i.y) : t.lineTo(i.x, i.y);
                    }e.options.closed && t.closePath();
                }
            } }), o = r.extend({ renderPoints: function renderPoints(t) {
                var e,
                    n = this.srcElement.paths;for (e = 0; e < n.length; e++) {
                    r.fn.renderPoints(t, n[e]);
                }
            } }), s = r.extend({ renderPoints: function renderPoints(t) {
                var e = this.srcElement.geometry(),
                    n = e.center,
                    i = e.radius;t.arc(n.x, n.y, i, 0, 2 * Math.PI);
            } }), a = r.extend({ renderPoints: function renderPoints(t) {
                var e = this.srcElement.toPath();r.fn.renderPoints.call(this, t, e);
            } }), h = r.extend({ renderTo: function renderTo(t) {
                var e = this.srcElement,
                    n = e.position(),
                    i = e.measure();t.save(), this.setTransform(t), this.setClip(t), this.setOpacity(t), t.beginPath(), t.font = e.options.font, this.setFill(t) && t.fillText(e.content(), n.x, n.y + i.baseline), this.setStroke(t) && (this.setLineDash(t), t.strokeText(e.content(), n.x, n.y + i.baseline)), t.restore();
            } }), l = r.extend({ init: function init(e, n) {
                r.fn.init.call(this, e), this.onLoad = C(this.onLoad, this), this.onError = C(this.onError, this), this.loading = t.Deferred();var i = this.img = new Image();n && !/^data:/i.test(e.src()) && (i.crossOrigin = n), i.src = e.src(), i.complete ? this.onLoad() : (i.onload = this.onLoad, i.onerror = this.onError);
            }, renderTo: function renderTo(t) {
                "resolved" === this.loading.state() && (t.save(), this.setTransform(t), this.setClip(t), this.drawImage(t), t.restore());
            }, optionsChange: function optionsChange(e) {
                "src" === e.field ? (this.loading = t.Deferred(), this.img.src = this.srcElement.src()) : r.fn.optionsChange.call(this, e);
            }, onLoad: function onLoad() {
                this.loading.resolve(), this.invalidate();
            }, onError: function onError() {
                this.loading.reject(Error("Unable to load image '" + this.img.src + "'. Check for connectivity and verify CORS headers."));
            }, drawImage: function drawImage(t) {
                var e = this.srcElement.rect(),
                    n = e.topLeft();t.drawImage(this.img, n.x, n.y, e.width(), e.height());
            } }), c = r.extend({ renderPoints: function renderPoints(t) {
                var e = this.srcElement.geometry(),
                    n = e.origin,
                    i = e.size;t.rect(n.x, n.y, i.width, i.height);
            } }), u = { Group: N, Text: h, Path: r, MultiPath: o, Circle: s, Arc: a, Image: l, Rect: c }, d.support.canvas = function () {
            return !!f.createElement("canvas").getContext;
        }(), d.support.canvas && b.SurfaceFactory.current.register("canvas", A, 20), p(d.drawing, { exportImage: e, canvas: { ArcNode: a, CircleNode: s, GroupNode: N, ImageNode: l, MultiPathNode: o, Node: O, PathNode: r, RectNode: c, RootNode: i, Surface: A, TextNode: h } });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("drawing/vml.min", ["drawing/shapes.min", "kendo.color.min"], t);
}(function () {
    !function (t) {
        function e() {
            if (u.namespaces && !u.namespaces.kvml) {
                u.namespaces.add("kvml", "urn:schemas-microsoft-com:vml");var t = u.styleSheets.length > 30 ? u.styleSheets[0] : u.createStyleSheet();t.addRule(".kvml", "behavior:url(#default#VML)");
            }
        }function n(t) {
            var e = u.createElement("kvml:" + t);return e.className = "kvml", e;
        }function i(t) {
            var e,
                n = t.length,
                i = [];for (e = 0; e < n; e++) {
                i.push(t[e].scaleCopy(R).toString(0, ","));
            }return i.join(" ");
        }function r(t, e) {
            var n,
                r,
                s,
                a,
                h,
                l = t.segments,
                c = l.length;if (c > 0) {
                for (n = [], h = 1; h < c; h++) {
                    s = o(l[h - 1], l[h]), s !== a && (a = s, n.push(s)), n.push("l" === s ? i([l[h].anchor()]) : i([l[h - 1].controlOut(), l[h].controlIn(), l[h].anchor()]));
                }return r = "m " + i([l[0].anchor()]) + " " + n.join(" "), t.options.closed && (r += " x"), e !== !0 && (r += " e"), r;
            }
        }function o(t, e) {
            return t.controlOut() && e.controlIn() ? "c" : "l";
        }function s(t) {
            return 0 === t.indexOf("fill") || 0 === t.indexOf(M);
        }function a(t, e, n) {
            var i,
                r = n * A(e.opacity(), 1);return i = t ? h(t, e.color(), r) : h(e.color(), "#fff", 1 - r);
        }function h(t, e, n) {
            var i = new C(t),
                r = new C(e),
                o = l(i.r, r.r, n),
                s = l(i.g, r.g, n),
                a = l(i.b, r.b, n);return new C(o, s, a).toHex();
        }function l(t, e, n) {
            return f.round(n * e + (1 - n) * t);
        }var c,
            u = document,
            f = Math,
            d = f.atan2,
            p = f.ceil,
            m = f.sqrt,
            g = window.kendo,
            v = g.deepExtend,
            x = t.noop,
            y = g.drawing,
            w = y.BaseNode,
            b = g.geometry,
            _ = b.toMatrix,
            C = g.Color,
            T = g.util,
            k = T.isTransparent,
            S = T.defined,
            E = T.deg,
            P = T.round,
            A = T.valueOrDefault,
            O = "none",
            N = ".kendo",
            R = 100,
            z = R * R,
            M = "gradient",
            B = 4,
            D = y.Surface.extend({ init: function init(t, n) {
                y.Surface.fn.init.call(this, t, n), e(), this.element.empty(), this._root = new I(), this._root.attachTo(this.element[0]), this.element.on("click" + N, this._click), this.element.on("mouseover" + N, this._mouseenter), this.element.on("mouseout" + N, this._mouseleave), this.element.on("mousemove" + N, this._mousemove);
            }, type: "vml", destroy: function destroy() {
                this._root && (this._root.destroy(), this._root = null, this.element.off(N)), y.Surface.fn.destroy.call(this);
            }, draw: function draw(t) {
                y.Surface.fn.draw.call(this, t), this._root.load([t], void 0, null);
            }, clear: function clear() {
                y.Surface.fn.clear.call(this), this._root.clear();
            } }),
            L = w.extend({ init: function init(t) {
                w.fn.init.call(this, t), this.createElement(), this.attachReference();
            }, observe: x, destroy: function destroy() {
                this.element && (this.element._kendoNode = null, this.element = null), w.fn.destroy.call(this);
            }, clear: function clear() {
                var t, e;for (this.element && (this.element.innerHTML = ""), t = this.childNodes, e = 0; e < t.length; e++) {
                    t[e].destroy();
                }this.childNodes = [];
            }, removeSelf: function removeSelf() {
                this.element && (this.element.parentNode.removeChild(this.element), this.element = null), w.fn.removeSelf.call(this);
            }, createElement: function createElement() {
                this.element = u.createElement("div");
            }, attachReference: function attachReference() {
                this.element._kendoNode = this;
            }, load: function load(t, e, n, i) {
                var r, o, s, a, h, l;for (i = A(i, 1), this.srcElement && (i *= A(this.srcElement.options.opacity, 1)), r = 0; r < t.length; r++) {
                    o = t[r], s = o.children, a = o.currentTransform(n), h = i * A(o.options.opacity, 1), l = new ht[o.nodeType](o, a, h), s && s.length > 0 && l.load(s, e, a, i), S(e) ? this.insertAt(l, e) : this.append(l), l.attachTo(this.element, e);
                }
            }, attachTo: function attachTo(t, e) {
                S(e) ? t.insertBefore(this.element, t.children[e] || null) : t.appendChild(this.element);
            }, optionsChange: function optionsChange(t) {
                "visible" == t.field && this.css("display", t.value !== !1 ? "" : O);
            }, setStyle: function setStyle() {
                this.allCss(this.mapStyle());
            }, mapStyle: function mapStyle() {
                var t = [];return this.srcElement && this.srcElement.options.visible === !1 && t.push(["display", O]), t;
            }, mapOpacityTo: function mapOpacityTo(t, e) {
                var n = A(this.opacity, 1);n *= A(e, 1), t.push(["opacity", n]);
            }, attr: function attr(t, e) {
                this.element && (this.element[t] = e);
            }, allAttr: function allAttr(t) {
                for (var e = 0; e < t.length; e++) {
                    this.attr(t[e][0], t[e][1]);
                }
            }, css: function css(t, e) {
                this.element && (this.element.style[t] = e);
            }, allCss: function allCss(t) {
                for (var e = 0; e < t.length; e++) {
                    this.css(t[e][0], t[e][1]);
                }
            } }),
            I = L.extend({ createElement: function createElement() {
                L.fn.createElement.call(this), this.allCss([["width", "100%"], ["height", "100%"], ["position", "relative"], ["visibility", "visible"]]);
            }, attachReference: x }),
            F = g.Class.extend({ init: function init(t, e) {
                this.srcElement = t, this.observer = e, t.addObserver(this);
            }, geometryChange: function geometryChange() {
                this.observer.optionsChange({ field: "clip", value: this.srcElement });
            }, clear: function clear() {
                this.srcElement.removeObserver(this);
            } }),
            G = L.extend({ init: function init(t) {
                L.fn.init.call(this, t), t && this.initClip();
            }, observe: function observe() {
                w.fn.observe.call(this);
            }, mapStyle: function mapStyle() {
                var t = L.fn.mapStyle.call(this);return this.srcElement && this.srcElement.clip() && t.push(["clip", this.clipRect()]), t;
            }, optionsChange: function optionsChange(t) {
                "clip" == t.field && (this.clearClip(), this.initClip(), this.setClip()), L.fn.optionsChange.call(this, t);
            }, clear: function clear() {
                this.clearClip(), L.fn.clear.call(this);
            }, initClip: function initClip() {
                this.srcElement.clip() && (this.clip = new F(this.srcElement.clip(), this), this.clip.observer = this);
            }, clearClip: function clearClip() {
                this.clip && (this.clip.clear(), this.clip = null, this.css("clip", this.clipRect()));
            }, setClip: function setClip() {
                this.clip && this.css("clip", this.clipRect());
            }, clipRect: function clipRect() {
                var t,
                    e,
                    n,
                    i = c,
                    r = this.srcElement.clip();return r && (t = this.clipBBox(r), e = t.topLeft(), n = t.bottomRight(), i = g.format("rect({0}px {1}px {2}px {3}px)", e.y, n.x, n.y, e.x)), i;
            }, clipBBox: function clipBBox(t) {
                var e = this.srcElement.rawBBox().topLeft(),
                    n = t.rawBBox();return n.origin.translate(-e.x, -e.y), n;
            } }),
            j = G.extend({ createElement: function createElement() {
                L.fn.createElement.call(this), this.setStyle();
            }, attachTo: function attachTo(t, e) {
                this.css("display", O), L.fn.attachTo.call(this, t, e), this.srcElement.options.visible !== !1 && this.css("display", "");
            }, _attachTo: function _attachTo(t) {
                var e = document.createDocumentFragment();e.appendChild(this.element), t.appendChild(e);
            }, mapStyle: function mapStyle() {
                var t = G.fn.mapStyle.call(this);return t.push(["position", "absolute"]), t.push(["white-space", "nowrap"]), t;
            }, optionsChange: function optionsChange(t) {
                "transform" === t.field && this.refreshTransform(), "opacity" === t.field && this.refreshOpacity(), G.fn.optionsChange.call(this, t);
            }, refreshTransform: function refreshTransform(t) {
                var e,
                    n = this.srcElement.currentTransform(t),
                    i = this.childNodes,
                    r = i.length;for (this.setClip(), e = 0; e < r; e++) {
                    i[e].refreshTransform(n);
                }
            }, currentOpacity: function currentOpacity() {
                var t = A(this.srcElement.options.opacity, 1);return this.parent && this.parent.currentOpacity && (t *= this.parent.currentOpacity()), t;
            }, refreshOpacity: function refreshOpacity() {
                var t,
                    e = this.childNodes,
                    n = e.length,
                    i = this.currentOpacity();for (t = 0; t < n; t++) {
                    e[t].refreshOpacity(i);
                }
            }, initClip: function initClip() {
                if (G.fn.initClip.call(this), this.clip) {
                    var t = this.clip.srcElement.bbox(this.srcElement.currentTransform());t && (this.css("width", t.width() + t.origin.x), this.css("height", t.height() + t.origin.y));
                }
            }, clipBBox: function clipBBox(t) {
                return t.bbox(this.srcElement.currentTransform());
            }, clearClip: function clearClip() {
                G.fn.clearClip.call(this);
            } }),
            H = L.extend({ init: function init(t, e) {
                this.opacity = e, L.fn.init.call(this, t);
            }, createElement: function createElement() {
                this.element = n("stroke"), this.setOpacity();
            }, optionsChange: function optionsChange(t) {
                0 === t.field.indexOf("stroke") && this.setStroke();
            }, refreshOpacity: function refreshOpacity(t) {
                this.opacity = t, this.setStroke();
            }, setStroke: function setStroke() {
                this.allAttr(this.mapStroke());
            }, setOpacity: function setOpacity() {
                this.setStroke();
            }, mapStroke: function mapStroke() {
                var t,
                    e = this.srcElement.options.stroke,
                    n = [];return e && !k(e.color) && 0 !== e.width ? (n.push(["on", "true"]), n.push(["color", e.color]), n.push(["weight", (e.width || 1) + "px"]), this.mapOpacityTo(n, e.opacity), S(e.dashType) && n.push(["dashstyle", e.dashType]), S(e.lineJoin) && n.push(["joinstyle", e.lineJoin]), S(e.lineCap) && (t = e.lineCap.toLowerCase(), "butt" === t && (t = "butt" === t ? "flat" : t), n.push(["endcap", t]))) : n.push(["on", "false"]), n;
            } }),
            q = L.extend({ init: function init(t, e, n) {
                this.opacity = n, L.fn.init.call(this, t);
            }, createElement: function createElement() {
                this.element = n("fill"), this.setFill();
            }, optionsChange: function optionsChange(t) {
                s(t.field) && this.setFill();
            }, refreshOpacity: function refreshOpacity(t) {
                this.opacity = t, this.setOpacity();
            }, setFill: function setFill() {
                this.allAttr(this.mapFill());
            }, setOpacity: function setOpacity() {
                this.setFill();
            }, attr: function attr(t, e) {
                var n,
                    i = this.element;if (i) {
                    for (n = t.split("."); n.length > 1;) {
                        i = i[n.shift()];
                    }i[n[0]] = e;
                }
            }, mapFill: function mapFill() {
                var t = this.srcElement.fill(),
                    e = [["on", "false"]];return t && (t.nodeType == M ? e = this.mapGradient(t) : k(t.color) || (e = this.mapFillColor(t))), e;
            }, mapFillColor: function mapFillColor(t) {
                var e = [["on", "true"], ["color", t.color]];return this.mapOpacityTo(e, t.opacity), e;
            }, mapGradient: function mapGradient(t) {
                var e,
                    n = this.srcElement.options,
                    i = n.fallbackFill || t.fallbackFill && t.fallbackFill();return e = t instanceof y.LinearGradient ? this.mapLinearGradient(t) : t instanceof y.RadialGradient && t.supportVML ? this.mapRadialGradient(t) : i ? this.mapFillColor(i) : [["on", "false"]];
            }, mapLinearGradient: function mapLinearGradient(t) {
                var e = t.start(),
                    n = t.end(),
                    i = T.deg(d(n.y - e.y, n.x - e.x)),
                    r = [["on", "true"], ["type", M], ["focus", 0], ["method", "none"], ["angle", 270 - i]];return this.addColors(r), r;
            }, mapRadialGradient: function mapRadialGradient(t) {
                var e = this.srcElement.rawBBox(),
                    n = t.center(),
                    i = (n.x - e.origin.x) / e.width(),
                    r = (n.y - e.origin.y) / e.height(),
                    o = [["on", "true"], ["type", "gradienttitle"], ["focus", "100%"], ["focusposition", i + " " + r], ["method", "none"]];
                return this.addColors(o), o;
            }, addColors: function addColors(t) {
                var e,
                    n,
                    i = this.srcElement.options,
                    r = A(this.opacity, 1),
                    o = [],
                    s = i.fill.stops,
                    h = i.baseColor,
                    l = this.element.colors ? "colors.value" : "colors",
                    c = a(h, s[0], r),
                    u = a(h, s[s.length - 1], r);for (n = 0; n < s.length; n++) {
                    e = s[n], o.push(f.round(100 * e.offset()) + "% " + a(h, e, r));
                }t.push([l, o.join(",")], ["color", c], ["color2", u]);
            } }),
            $ = L.extend({ init: function init(t, e) {
                this.transform = e, L.fn.init.call(this, t);
            }, createElement: function createElement() {
                this.element = n("skew"), this.setTransform();
            }, optionsChange: function optionsChange(t) {
                "transform" === t.field && this.refresh(this.srcElement.currentTransform());
            }, refresh: function refresh(t) {
                this.transform = t, this.setTransform();
            }, transformOrigin: function transformOrigin() {
                return "-0.5,-0.5";
            }, setTransform: function setTransform() {
                this.allAttr(this.mapTransform());
            }, mapTransform: function mapTransform() {
                var t = this.transform,
                    e = [],
                    n = _(t);return n ? (n.round(B), e.push(["on", "true"], ["matrix", [n.a, n.c, n.b, n.d, 0, 0].join(",")], ["offset", n.e + "px," + n.f + "px"], ["origin", this.transformOrigin()])) : e.push(["on", "false"]), e;
            } }),
            X = G.extend({ init: function init(t, e, n) {
                this.fill = this.createFillNode(t, e, n), this.stroke = new H(t, n), this.transform = this.createTransformNode(t, e), G.fn.init.call(this, t);
            }, attachTo: function attachTo(t, e) {
                this.fill.attachTo(this.element), this.stroke.attachTo(this.element), this.transform.attachTo(this.element), L.fn.attachTo.call(this, t, e);
            }, createFillNode: function createFillNode(t, e, n) {
                return new q(t, e, n);
            }, createTransformNode: function createTransformNode(t, e) {
                return new $(t, e);
            }, createElement: function createElement() {
                this.element = n("shape"), this.setCoordsize(), this.setStyle();
            }, optionsChange: function optionsChange(t) {
                s(t.field) ? this.fill.optionsChange(t) : 0 === t.field.indexOf("stroke") ? this.stroke.optionsChange(t) : "transform" === t.field ? this.transform.optionsChange(t) : "opacity" === t.field && (this.fill.setOpacity(), this.stroke.setOpacity()), G.fn.optionsChange.call(this, t);
            }, refreshTransform: function refreshTransform(t) {
                this.transform.refresh(this.srcElement.currentTransform(t));
            }, refreshOpacity: function refreshOpacity(t) {
                t *= A(this.srcElement.options.opacity, 1), this.fill.refreshOpacity(t), this.stroke.refreshOpacity(t);
            }, mapStyle: function mapStyle(t, e) {
                var n,
                    i = G.fn.mapStyle.call(this);return t && e || (t = e = R), i.push(["position", "absolute"], ["width", t + "px"], ["height", e + "px"]), n = this.srcElement.options.cursor, n && i.push(["cursor", n]), i;
            }, setCoordsize: function setCoordsize() {
                this.allAttr([["coordorigin", "0 0"], ["coordsize", z + " " + z]]);
            } }),
            U = L.extend({ createElement: function createElement() {
                this.element = n("path"), this.setPathData();
            }, geometryChange: function geometryChange() {
                this.setPathData();
            }, setPathData: function setPathData() {
                this.attr("v", this.renderData());
            }, renderData: function renderData() {
                return r(this.srcElement);
            } }),
            Y = X.extend({ init: function init(t, e, n) {
                this.pathData = this.createDataNode(t), X.fn.init.call(this, t, e, n);
            }, attachTo: function attachTo(t, e) {
                this.pathData.attachTo(this.element), X.fn.attachTo.call(this, t, e);
            }, createDataNode: function createDataNode(t) {
                return new U(t);
            }, geometryChange: function geometryChange() {
                this.pathData.geometryChange(), X.fn.geometryChange.call(this);
            } }),
            V = U.extend({ renderData: function renderData() {
                var t,
                    e,
                    n,
                    i = this.srcElement.paths;if (i.length > 0) {
                    for (t = [], e = 0; e < i.length; e++) {
                        n = e < i.length - 1, t.push(r(i[e], n));
                    }return t.join(" ");
                }
            } }),
            W = Y.extend({ createDataNode: function createDataNode(t) {
                return new V(t);
            } }),
            Q = $.extend({ transformOrigin: function transformOrigin() {
                var t = this.srcElement.geometry().bbox(),
                    e = t.center(),
                    n = -p(e.x) / p(t.width()),
                    i = -p(e.y) / p(t.height());return n + "," + i;
            } }),
            Z = X.extend({ createElement: function createElement() {
                this.element = n("oval"), this.setStyle();
            }, createTransformNode: function createTransformNode(t, e) {
                return new Q(t, e);
            }, geometryChange: function geometryChange() {
                X.fn.geometryChange.call(this), this.setStyle(), this.refreshTransform();
            }, mapStyle: function mapStyle() {
                var t = this.srcElement.geometry(),
                    e = t.radius,
                    n = t.center,
                    i = p(2 * e),
                    r = X.fn.mapStyle.call(this, i, i);return r.push(["left", p(n.x - e) + "px"], ["top", p(n.y - e) + "px"]), r;
            } }),
            J = U.extend({ renderData: function renderData() {
                return r(this.srcElement.toPath());
            } }),
            K = Y.extend({ createDataNode: function createDataNode(t) {
                return new J(t);
            } }),
            tt = U.extend({ createElement: function createElement() {
                U.fn.createElement.call(this), this.attr("textpathok", !0);
            }, renderData: function renderData() {
                var t = this.srcElement.rect(),
                    e = t.center();return "m " + i([new b.Point(t.topLeft().x, e.y)]) + " l " + i([new b.Point(t.bottomRight().x, e.y)]);
            } }),
            et = L.extend({ createElement: function createElement() {
                this.element = n("textpath"), this.attr("on", !0), this.attr("fitpath", !1), this.setStyle(), this.setString();
            }, optionsChange: function optionsChange(t) {
                "content" === t.field ? this.setString() : this.setStyle(), L.fn.optionsChange.call(this, t);
            }, mapStyle: function mapStyle() {
                return [["font", this.srcElement.options.font]];
            }, setString: function setString() {
                this.attr("string", this.srcElement.content());
            } }),
            nt = Y.extend({ init: function init(t, e, n) {
                this.path = new et(t), Y.fn.init.call(this, t, e, n);
            }, createDataNode: function createDataNode(t) {
                return new tt(t);
            }, attachTo: function attachTo(t, e) {
                this.path.attachTo(this.element), Y.fn.attachTo.call(this, t, e);
            }, optionsChange: function optionsChange(t) {
                "font" !== t.field && "content" !== t.field || (this.path.optionsChange(t), this.pathData.geometryChange(t)), Y.fn.optionsChange.call(this, t);
            } }),
            it = U.extend({ renderData: function renderData() {
                var t = this.srcElement.rect(),
                    e = new y.Path().moveTo(t.topLeft()).lineTo(t.topRight()).lineTo(t.bottomRight()).lineTo(t.bottomLeft()).close();return r(e);
            } }),
            rt = $.extend({ init: function init(t, e, n) {
                this.opacity = n, $.fn.init.call(this, t, e);
            }, createElement: function createElement() {
                this.element = n("fill"), this.attr("type", "frame"), this.attr("rotate", !0), this.setOpacity(), this.setSrc(), this.setTransform();
            }, optionsChange: function optionsChange(t) {
                "src" === t.field && this.setSrc(), $.fn.optionsChange.call(this, t);
            }, geometryChange: function geometryChange() {
                this.refresh();
            }, refreshOpacity: function refreshOpacity(t) {
                this.opacity = t, this.setOpacity();
            }, setOpacity: function setOpacity() {
                var t = [];this.mapOpacityTo(t, this.srcElement.options.opacity), this.allAttr(t);
            }, setSrc: function setSrc() {
                this.attr("src", this.srcElement.src());
            }, mapTransform: function mapTransform() {
                var t,
                    e,
                    n,
                    i,
                    r,
                    o,
                    s,
                    a,
                    h = this.srcElement,
                    l = h.rawBBox(),
                    c = l.center(),
                    u = R / 2,
                    f = R,
                    p = l.width() / f,
                    g = l.height() / f,
                    v = 0,
                    x = this.transform;return x ? (n = _(x), i = m(n.a * n.a + n.b * n.b), r = m(n.c * n.c + n.d * n.d), p *= i, g *= r, o = E(d(n.b, n.d)), s = E(d(-n.c, n.a)), v = (o + s) / 2, 0 !== v ? (a = h.bbox().center(), t = (a.x - u) / f, e = (a.y - u) / f) : (t = (c.x * i + n.e - u) / f, e = (c.y * r + n.f - u) / f)) : (t = (c.x - u) / f, e = (c.y - u) / f), p = P(p, B), g = P(g, B), t = P(t, B), e = P(e, B), v = P(v, B), [["size", p + "," + g], ["position", t + "," + e], ["angle", v]];
            } }),
            ot = Y.extend({ createFillNode: function createFillNode(t, e, n) {
                return new rt(t, e, n);
            }, createDataNode: function createDataNode(t) {
                return new it(t);
            }, optionsChange: function optionsChange(t) {
                "src" !== t.field && "transform" !== t.field || this.fill.optionsChange(t), Y.fn.optionsChange.call(this, t);
            }, geometryChange: function geometryChange() {
                this.fill.geometryChange(), Y.fn.geometryChange.call(this);
            }, refreshTransform: function refreshTransform(t) {
                Y.fn.refreshTransform.call(this, t), this.fill.refresh(this.srcElement.currentTransform(t));
            } }),
            st = U.extend({ renderData: function renderData() {
                var t = this.srcElement.geometry(),
                    e = ["m", i([t.topLeft()]), "l", i([t.topRight(), t.bottomRight(), t.bottomLeft()]), "x e"];return e.join(" ");
            } }),
            at = Y.extend({ createDataNode: function createDataNode(t) {
                return new st(t);
            } }),
            ht = { Group: j, Text: nt, Path: Y, MultiPath: W, Circle: Z, Arc: K, Image: ot, Rect: at };g.support.vml = function () {
            var t = g.support.browser;return t.msie && t.version < 9;
        }(), c = "inherit", g.support.browser.msie && g.support.browser.version < 8 && (c = "rect(auto auto auto auto)"), g.support.vml && y.SurfaceFactory.current.register("vml", D, 30), v(y, { vml: { ArcDataNode: J, ArcNode: K, CircleTransformNode: Q, CircleNode: Z, FillNode: q, GroupNode: j, ImageNode: ot, ImageFillNode: rt, ImagePathDataNode: it, MultiPathDataNode: V, MultiPathNode: W, Node: L, PathDataNode: U, PathNode: Y, RectDataNode: st, RectNode: at, RootNode: I, StrokeNode: H, Surface: D, TextNode: nt, TextPathNode: et, TextPathDataNode: tt, TransformNode: $ } });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("drawing/html.min", ["kendo.color.min", "drawing/shapes.min", "util/main.min", "util/text-metrics.min"], t);
}(function () {
    !function (t, e, n) {
        "use strict";
        function i(t) {
            return "number" == typeof t ? { x: t, y: t } : Array.isArray(t) ? { x: t[0], y: t[1] } : { x: t.x, y: t.y };
        }function r(n, r) {
            function s(e) {
                var n = new ht.Group(),
                    i = e.getBoundingClientRect();return R(n, [u.x, 0, 0, u.y, -i.left * u.x, -i.top * u.y]), gt._clipbox = !1, gt._matrix = lt.Matrix.unit(), gt._stackingContext = { element: e, group: n }, gt._avoidLinks = r.avoidLinks === !0 ? "a" : r.avoidLinks, t(e).addClass("k-pdf-export"), et(e, n), t(e).removeClass("k-pdf-export"), n;
            }function a(e) {
                if (null != e) return "string" == typeof e && (e = kendo.template(e.replace(/^\s+|\s+$/g, ""))), "function" == typeof e ? function (n) {
                    var i = e(n);if (i) return "string" == typeof i && (i = i.replace(/^\s+|\s+$/g, "")), t(i)[0];
                } : function () {
                    return t(e).clone()[0];
                };
            }function h(e) {
                var n,
                    i,
                    r,
                    o,
                    s = e.cloneNode(!1);if (1 == e.nodeType) {
                    n = t(e), i = t(s), o = n.data();for (r in o) {
                        i.data(r, o[r]);
                    }if (/^canvas$/i.test(e.tagName)) s.getContext("2d").drawImage(e, 0, 0);else if (/^input$/i.test(e.tagName)) e.removeAttribute("name");else for (r = e.firstChild; r; r = r.nextSibling) {
                        s.appendChild(h(r));
                    }
                }return s;
            }function l(n, i, r, o, s, l, c) {
                function u() {
                    function t() {
                        d(k, function () {
                            n({ pages: k, container: E });
                        });
                    }var e, i;("-" != r || s) && m(S), e = x(), S.parentNode.insertBefore(e, S), e.appendChild(S), C ? (i = k.length, k.forEach(function (e, n) {
                        var r = C({ element: e, pageNum: n + 1, totalPages: k.length });r && (e.appendChild(r), p(r, function () {
                            0 === --i && t();
                        }));
                    })) : t();
                }function f(t) {
                    if (c.keepTogether && t.is(c.keepTogether) && t.height() <= s - P) return !0;var e = t[0].tagName;return !(/^h[1-6]$/i.test(e) && t.height() >= s - P) && (t.data("kendoChart") || /^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])$/i.test(e));
                }function m(n) {
                    var i,
                        o,
                        a,
                        h,
                        l = b(n),
                        c = e(_(l, "padding-bottom")),
                        u = e(_(l, "border-bottom-width")),
                        d = P;for (P += c + u, i = !0, o = n.firstChild; o; o = o.nextSibling) {
                        if (1 == o.nodeType) {
                            if (i = !1, a = t(o), a.is(r)) {
                                v(o);continue;
                            }if (!s) {
                                m(o);continue;
                            }if (!/^(?:static|relative)$/.test(_(b(o), "position"))) continue;h = y(o), 1 == h ? v(o) : h && f(a) ? v(o) : m(o);
                        } else 3 == o.nodeType && s && (w(o, i), i = !1);
                    }P = d;
                }function g(t) {
                    var e = t.parentNode,
                        n = e.firstChild;if (t === n) return !0;if (t === e.children[0]) {
                        if (7 == n.nodeType || 8 == n.nodeType) return !0;if (3 == n.nodeType) return !/\S/.test(n.data);
                    }return !1;
                }function v(e) {
                    var n, i, r, o, s, a, h;return 1 == e.nodeType && e !== S && g(e) ? v(e.parentNode) : (n = t(e).closest("table"), i = n.find("colgroup:first"), c.repeatHeaders && (r = n.find("thead:first"), o = t(e).closest('.k-grid[data-role="grid"]'), o[0] && o[0].querySelector(".k-auto-scrollable") && (s = o.find(".k-grid-header:first"))), a = x(), h = T.createRange(), h.setStartBefore(S), h.setEndBefore(e), a.appendChild(h.extractContents()), S.parentNode.insertBefore(a, S), n[0] && (n = t(e).closest("table"), c.repeatHeaders && r[0] && r.clone().prependTo(n), i[0] && i.clone().prependTo(n)), void (c.repeatHeaders && s && s[0] && (o = t(e).closest('.k-grid[data-role="grid"]'), s[0] && s.clone().prependTo(o))));
                }function x() {
                    var e = T.createElement("KENDO-PDF-PAGE");return t(e).css({ display: "block", boxSizing: "content-box", width: o || "auto", padding: l.top + "px " + l.right + "px " + l.bottom + "px " + l.left + "px", position: "relative", height: s || "auto", overflow: s || o ? "hidden" : "visible", clear: "both" }), c && c.pageClassName && (e.className = c.pageClassName), k.push(e), e;
                }function y(t) {
                    var e,
                        n,
                        i = t.getBoundingClientRect();return 0 === i.width || 0 === i.height ? 0 : (e = S.getBoundingClientRect().top, n = s - P, i.height > n ? 3 : i.top - e > n ? 1 : i.bottom - e > n ? 2 : 0);
                }function w(t, e) {
                    var n, i, r, o, s;/\S/.test(t.data) && (n = t.data.length, i = T.createRange(), i.selectNodeContents(t), r = y(i), r && (o = t, 1 == r ? v(e ? t.parentNode : t) : (!function a(e, n, r) {
                        return i.setEnd(t, n), e == n || n == r ? n : y(i) ? a(e, e + n >> 1, n) : a(n, n + r >> 1, r);
                    }(0, n >> 1, n), !/\S/.test("" + i) && e ? v(t.parentNode) : (o = t.splitText(i.endOffset), s = x(), i.setStartBefore(S), s.appendChild(i.extractContents()), S.parentNode.insertBefore(s, S))), w(o)));
                }var C = a(c.template),
                    T = i.ownerDocument,
                    k = [],
                    S = c._destructive ? i : h(i),
                    E = T.createElement("KENDO-PDF-DOCUMENT"),
                    P = 0;t(S).find("tfoot").each(function () {
                    this.parentNode.appendChild(this);
                }), t(S).find("ol").each(function () {
                    t(this).children().each(function (t) {
                        this.setAttribute("kendo-split-index", t);
                    });
                }), t(E).css({ display: "block", position: "absolute", boxSizing: "content-box", left: "-10000px", top: "-10000px" }), o && (t(E).css({ width: o, paddingLeft: l.left, paddingRight: l.right }), t(S).css({ overflow: "hidden" })), i.parentNode.insertBefore(E, i), E.appendChild(S), c.beforePageBreak ? setTimeout(function () {
                    c.beforePageBreak(E, u);
                }, 15) : setTimeout(u, 15);
            }var c, u;if (r || (r = {}), c = t.Deferred(), n = t(n)[0], !n) return c.reject("No element to export");if ("function" != typeof window.getComputedStyle) throw Error("window.getComputedStyle is missing.  You are using an unsupported browser, or running in IE8 compatibility mode.  Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.");return kendo.pdf && kendo.pdf.defineFont(o(n.ownerDocument)), u = i(r.scale || 1), p(n, function () {
                var t,
                    e = r && r.forcePageBreak,
                    i = r && r.paperSize && "auto" != r.paperSize,
                    o = kendo.pdf.getPaperOptions(function (t, e) {
                    return "paperSize" == t ? i ? r[t] : "A4" : t in r ? r[t] : e;
                }),
                    a = i && o.paperSize[0],
                    h = i && o.paperSize[1],
                    f = r.margin && o.margin,
                    d = !!f;e || h ? (f || (f = { left: 0, top: 0, right: 0, bottom: 0 }), a && (a /= u.x), h && (h /= u.y), f.left /= u.x, f.right /= u.x, f.top /= u.y, f.bottom /= u.y, t = new ht.Group({ pdf: { multiPage: !0, paperSize: i ? o.paperSize : "auto", _ignoreMargin: d } }), l(function (e) {
                    if (r.progress) {
                        var n = !1,
                            i = 0;!function o() {
                            if (i < e.pages.length) {
                                var a = s(e.pages[i]);t.append(a), r.progress({ page: a, pageNum: ++i, totalPages: e.pages.length, cancel: function cancel() {
                                        n = !0;
                                    } }), n ? e.container.parentNode.removeChild(e.container) : setTimeout(o);
                            } else e.container.parentNode.removeChild(e.container), c.resolve(t);
                        }();
                    } else e.pages.forEach(function (e) {
                        t.append(s(e));
                    }), e.container.parentNode.removeChild(e.container), c.resolve(t);
                }, n, e, a ? a - f.left - f.right : null, h ? h - f.top - f.bottom : null, f, r)) : c.resolve(s(n));
            }), c.promise();
        }function o(t) {
            function e(t) {
                if (t) {
                    var e = null;try {
                        e = t.cssRules;
                    } catch (n) {}e && i(t, e);
                }
            }function n(t) {
                var e,
                    n = _(t.style, "src");return n ? ot(n).reduce(function (t, e) {
                    var n = st(e);return n && t.push(n), t;
                }, []) : (e = st(t.cssText), e ? [e] : []);
            }function i(t, i) {
                var o, s, a, h, l, c, u;for (o = 0; o < i.length; ++o) {
                    switch (s = i[o], s.type) {case 3:
                            e(s.styleSheet);break;case 5:
                            a = s.style, h = ot(_(a, "font-family")), l = /^([56789]00|bold)$/i.test(_(a, "font-weight")), c = "italic" == _(a, "font-style"), u = n(s), u.length > 0 && r(t, h, l, c, u[0]);}
                }
            }function r(t, e, n, i, r) {
                /^data:/i.test(r) || /^[^\/:]+:\/\//.test(r) || /^\//.test(r) || (r = (t.href + "").replace(/[^\/]*$/, "") + r), e.forEach(function (t) {
                    t = t.replace(/^(['"]?)(.*?)\1$/, "$2"), n && (t += "|bold"), i && (t += "|italic"), o[t] = r;
                });
            }var o, s;for (null == t && (t = document), o = {}, s = 0; s < t.styleSheets.length; ++s) {
                e(t.styleSheets[s]);
            }return o;
        }function s(t, e) {
            return Object.prototype.hasOwnProperty.call(t, e);
        }function a(t) {
            return t = "_counter_" + t, gt[t];
        }function h(t) {
            var e = [],
                n = gt;for (t = "_counter_" + t; n;) {
                s(n, t) && e.push(n[t]), n = Object.getPrototypeOf(n);
            }return e.reverse();
        }function l(t, e) {
            var n = gt;for (t = "_counter_" + t; n && !s(n, t);) {
                n = Object.getPrototypeOf(n);
            }n || (n = gt._root), n[t] = (n[t] || 0) + (null == e ? 1 : e);
        }function c(t, e) {
            t = "_counter_" + t, gt[t] = null == e ? 0 : e;
        }function u(t, n, i) {
            var r, o, s;for (r = 0; r < t.length;) {
                o = t[r++], s = e(t[r]), isNaN(s) ? n(o, i) : (n(o, s), ++r);
            }
        }function f(t, e) {
            var n = kendo.parseColor(t);return n && (n = n.toRGB(), e ? n = n.toCssRgba() : 0 === n.a && (n = null)), n;
        }function d(t, e) {
            function n() {
                --i <= 0 && e();
            }var i = 0;t.forEach(function (t) {
                var e,
                    r,
                    o = t.querySelectorAll("img");for (e = 0; e < o.length; ++e) {
                    r = o[e], r.complete || (i++, r.onload = r.onerror = n);
                }
            }), i || n();
        }function p(t, e) {
            function n(t) {
                mt[t] || (mt[t] = !0, o.push(t));
            }function i() {
                --r <= 0 && e();
            }var r,
                o = [];!function s(t) {
                /^img$/i.test(t.tagName) && n(t.src), rt(_(b(t), "background-image")).forEach(function (t) {
                    "url" == t.type && n(t.url);
                }), t.children && ct.call(t.children).forEach(s);
            }(t), r = o.length, 0 === r && i(), o.forEach(function (t) {
                var e = mt[t] = new Image();/^data:/i.test(t) || (e.crossOrigin = "Anonymous"), e.src = t, e.complete ? i() : (e.onload = i, e.onerror = function () {
                    mt[t] = null, i();
                });
            });
        }function m(t) {
            var e,
                i = "";do {
                e = t % 26, i = String.fromCharCode(97 + e) + i, t = n.floor(t / 26);
            } while (t > 0);return i;
        }function g(t, e, n) {
            var i, r;gt = Object.create(gt), gt[t.tagName.toLowerCase()] = { element: t, style: e }, i = _(e, "text-decoration"), i && "none" != i && (r = _(e, "color"), i.split(/\s+/g).forEach(function (t) {
                gt[t] || (gt[t] = r);
            })), w(e) && (gt._stackingContext = { element: t, group: n });
        }function v() {
            gt = Object.getPrototypeOf(gt);
        }function x(t) {
            if (null != gt._clipbox) {
                var e = t.bbox(gt._matrix);gt._clipbox = gt._clipbox ? lt.Rect.intersect(gt._clipbox, e) : e;
            }
        }function y() {
            var t = gt._clipbox;return null == t || (t ? 0 === t.width() || 0 === t.height() : void 0);
        }function w(t) {
            function e(e) {
                return _(t, e);
            }if ("none" != e("transform") || "static" != e("position") && "auto" != e("z-index") || e("opacity") < 1) return !0;
        }function b(t, e) {
            return window.getComputedStyle(t, e || null);
        }function _(t, e) {
            var n = t.getPropertyValue(e);return null != n && "" !== n || (ut.webkit ? n = t.getPropertyValue("-webkit-" + e) : ut.mozilla ? n = t.getPropertyValue("-moz-" + e) : ut.opera ? n = t.getPropertyValue("-o-" + e) : ut.msie && (n = t.getPropertyValue("-ms-" + e))), n;
        }function C(t, e, n, i) {
            t.setProperty(e, n, i), ut.webkit ? t.setProperty("-webkit-" + e, n, i) : ut.mozilla ? t.setProperty("-moz-" + e, n, i) : ut.opera ? t.setProperty("-o-" + e, n, i) : ut.msie && (t.setProperty("-ms-" + e, n, i), e = "ms" + e.replace(/(^|-)([a-z])/g, function (t, e, n) {
                return e + n.toUpperCase();
            }), t[e] = n);
        }function T(t, n) {
            return n = "border-" + n, { width: e(_(t, n + "-width")), style: _(t, n + "-style"), color: f(_(t, n + "-color"), !0) };
        }function k(t, e) {
            var n = t.style.cssText,
                i = e();return t.style.cssText = n, i;
        }function S(t, n) {
            var i = _(t, "border-" + n + "-radius").split(/\s+/g).map(e);return 1 == i.length && i.push(i[0]), B({ x: i[0], y: i[1] });
        }function E(t) {
            var e = t.getBoundingClientRect();return e = P(e, "border-*-width", t), e = P(e, "padding-*", t);
        }function P(t, n, i) {
            var r, o, s, a, h;return "string" == typeof n ? (r = b(i), o = e(_(r, n.replace("*", "top"))), s = e(_(r, n.replace("*", "right"))), a = e(_(r, n.replace("*", "bottom"))), h = e(_(r, n.replace("*", "left")))) : "number" == typeof n && (o = s = a = h = n), { top: t.top + o, right: t.right - s, bottom: t.bottom - a, left: t.left + h, width: t.right - t.left - s - h, height: t.bottom - t.top - a - o };
        }function A(t) {
            var n,
                i,
                r = _(t, "transform");return "none" == r ? null : (n = /^\s*matrix\(\s*(.*?)\s*\)\s*$/.exec(r), n ? (i = _(t, "transform-origin"), n = n[1].split(/\s*,\s*/g).map(e), i = i.split(/\s+/g).map(e), { matrix: n, origin: i }) : void 0);
        }function O(t) {
            return 180 * t / n.PI % 360;
        }function N(t) {
            var i = e(t);return (/grad$/.test(t) ? n.PI * i / 200 : /rad$/.test(t) ? i : /turn$/.test(t) ? n.PI * i * 2 : /deg$/.test(t) ? n.PI * i / 180 : void 0
            );
        }function R(t, e) {
            return e = new lt.Matrix(e[0], e[1], e[2], e[3], e[4], e[5]), t.transform(e), e;
        }function z(t, e) {
            t.clip(e);
        }function M(t, e, n, i) {
            for (var r = new lt.Arc([e, n], i).curvePoints(), o = 1; o < r.length;) {
                t.curveTo(r[o++], r[o++], r[o++]);
            }
        }function B(t) {
            return (t.x <= 0 || t.y <= 0) && (t.x = t.y = 0), t;
        }function D(t, e, i, r, o) {
            var s = n.max(0, e.x),
                a = n.max(0, e.y),
                h = n.max(0, i.x),
                l = n.max(0, i.y),
                c = n.max(0, r.x),
                u = n.max(0, r.y),
                f = n.max(0, o.x),
                d = n.max(0, o.y),
                p = n.min(t.width / (s + h), t.height / (l + u), t.width / (c + f), t.height / (d + a));return p < 1 && (s *= p, a *= p, h *= p, l *= p, c *= p, u *= p, f *= p, d *= p), { tl: { x: s, y: a }, tr: { x: h, y: l }, br: { x: c, y: u }, bl: { x: f, y: d } };
        }function L(t, n, i) {
            var r,
                o,
                s,
                a,
                h,
                l,
                c,
                u,
                f = b(t),
                d = S(f, "top-left"),
                p = S(f, "top-right"),
                m = S(f, "bottom-left"),
                g = S(f, "bottom-right");return "padding" != i && "content" != i || (r = T(f, "top"), o = T(f, "right"), s = T(f, "bottom"), a = T(f, "left"), d.x -= a.width, d.y -= r.width, p.x -= o.width, p.y -= r.width, g.x -= o.width, g.y -= s.width, m.x -= a.width, m.y -= s.width, "content" == i && (h = e(_(f, "padding-top")), l = e(_(f, "padding-right")), c = e(_(f, "padding-bottom")), u = e(_(f, "padding-left")), d.x -= u, d.y -= h, p.x -= l, p.y -= h, g.x -= l, g.y -= c, m.x -= u, m.y -= c)), "number" == typeof i && (d.x -= i, d.y -= i, p.x -= i, p.y -= i, g.x -= i, g.y -= i, m.x -= i, m.y -= i), I(n, d, p, g, m);
        }function I(t, e, n, i, r) {
            var o = D(t, e, n, i, r),
                s = o.tl,
                a = o.tr,
                h = o.br,
                l = o.bl,
                c = new ht.Path({ fill: null, stroke: null });return c.moveTo(t.left, t.top + s.y), s.x && M(c, t.left + s.x, t.top + s.y, { startAngle: -180, endAngle: -90, radiusX: s.x, radiusY: s.y }), c.lineTo(t.right - a.x, t.top), a.x && M(c, t.right - a.x, t.top + a.y, { startAngle: -90, endAngle: 0, radiusX: a.x, radiusY: a.y }), c.lineTo(t.right, t.bottom - h.y), h.x && M(c, t.right - h.x, t.bottom - h.y, { startAngle: 0, endAngle: 90, radiusX: h.x, radiusY: h.y }), c.lineTo(t.left + l.x, t.bottom), l.x && M(c, t.left + l.x, t.bottom - l.y, { startAngle: 90, endAngle: 180, radiusX: l.x, radiusY: l.y }), c.close();
        }function F(t, n) {
            var i = e(t) + "";switch (n) {case "decimal-leading-zero":
                    return i.length < 2 && (i = "0" + i), i;case "lower-roman":
                    return ft(t).toLowerCase();case "upper-roman":
                    return ft(t).toUpperCase();case "lower-latin":case "lower-alpha":
                    return m(t - 1);case "upper-latin":case "upper-alpha":
                    return m(t - 1).toUpperCase();default:
                    return i;}
        }function G(t, e) {
            function n(t, e, n) {
                return n ? (n = n.replace(/^\s*(["'])(.*)\1\s*$/, "$2"), h(t).map(function (t) {
                    return F(t, e);
                }).join(n)) : F(a(t) || 0, e);
            }var i,
                r = ot(e, /^\s+/),
                o = [];return r.forEach(function (e) {
                var r;(i = /^\s*(["'])(.*)\1\s*$/.exec(e)) ? o.push(i[2].replace(/\\([0-9a-f]{4})/gi, function (t, e) {
                    return String.fromCharCode(parseInt(e, 16));
                })) : (i = /^\s*counter\((.*?)\)\s*$/.exec(e)) ? (r = ot(i[1]), o.push(n(r[0], r[1]))) : (i = /^\s*counters\((.*?)\)\s*$/.exec(e)) ? (r = ot(i[1]), o.push(n(r[0], r[2], r[1]))) : o.push((i = /^\s*attr\((.*?)\)\s*$/.exec(e)) ? t.getAttribute(i[1]) || "" : e);
            }), o.join("");
        }function j(t) {
            var e, n;if (t.cssText) return t.cssText;for (e = [], n = 0; n < t.length; ++n) {
                e.push(t[n] + ": " + _(t, t[n]));
            }return e.join(";\n");
        }function H(t, e) {
            function n(e, n) {
                var r,
                    o = b(t, e);o.content && "normal" != o.content && "none" != o.content && "0px" != o.width && (r = t.ownerDocument.createElement(pt), r.style.cssText = j(o), r.textContent = G(t, o.content), t.insertBefore(r, n), i.push(r));
            }var i, r;return t.tagName == pt ? void q(t, e) : (i = [], n(":before", t.firstChild), n(":after", null), r = t.className, t.className += " kendo-pdf-hide-pseudo-elements", q(t, e), t.className = r, void i.forEach(function (e) {
                t.removeChild(e);
            }));
        }function q(i, r) {
            function o(t) {
                var e, n, r, o, s, a;if (/^td$/i.test(i.tagName) && (e = gt.table, e && "collapse" == _(e.style, "border-collapse"))) {
                    if (n = T(e.style, "left").width, r = T(e.style, "top").width, 0 === n && 0 === r) return t;if (o = e.element.getBoundingClientRect(), s = e.element.rows[0].cells[0], a = s.getBoundingClientRect(), a.top == o.top || a.left == o.left) return ct.call(t).map(function (t) {
                        return { left: t.left + n, top: t.top + r, right: t.right + n, bottom: t.bottom + r, height: t.height, width: t.width };
                    });
                }return t;
            }function s(t, e, i, o, s, a, h, l) {
                function c(e, r, o) {
                    var s = n.PI / 2 * e / (e + i),
                        a = { x: r.x - e, y: r.y - i },
                        h = new ht.Path({ fill: { color: t }, stroke: null }).moveTo(0, 0);R(h, o), M(h, 0, r.y, { startAngle: -90, endAngle: -O(s), radiusX: r.x, radiusY: r.y }), a.x > 0 && a.y > 0 ? (h.lineTo(a.x * n.cos(s), r.y - a.y * n.sin(s)), M(h, 0, r.y, { startAngle: -O(s), endAngle: -90, radiusX: a.x, radiusY: a.y, anticlockwise: !0 })) : a.x > 0 ? h.lineTo(a.x, i).lineTo(0, i) : h.lineTo(a.x, i).lineTo(a.x, 0), f.append(h.close());
                }if (!(i <= 0)) {
                    var u,
                        f = new ht.Group();R(f, l), r.append(f), B(a), B(h), u = new ht.Path({ fill: { color: t }, stroke: null }), f.append(u), u.moveTo(a.x ? n.max(a.x, o) : 0, 0).lineTo(e - (h.x ? n.max(h.x, s) : 0), 0).lineTo(e - n.max(h.x, s), i).lineTo(n.max(a.x, o), i).close(), a.x && c(o, a, [-1, 0, 0, 1, a.x, 0]), h.x && c(s, h, [1, 0, 0, 1, e - h.x, 0]);
                }
            }function a(e) {
                var n,
                    o,
                    s = new ht.Group();for (z(s, I(e, q, U, W, Y)), r.append(s), "A" == i.tagName && i.href && !/^#?$/.test(t(i).attr("href")) && (gt._avoidLinks && t(i).is(gt._avoidLinks) || (s._pdfLink = { url: i.href, top: e.top, right: e.right, bottom: e.bottom, left: e.left })), Z && (n = new ht.Path({ fill: { color: Z.toCssRgba() }, stroke: null }), n.moveTo(e.left, e.top).lineTo(e.right, e.top).lineTo(e.right, e.bottom).lineTo(e.left, e.bottom).close(), s.append(n)), o = u.length; --o >= 0;) {
                    h(s, e, u[o], d[o % d.length], p[o % p.length], g[o % g.length], v[o % v.length]);
                }
            }function h(t, r, o, s, a, h, l) {
                function c(t, r, o, c, u) {
                    function f() {
                        for (; x.origin.x > r.left;) {
                            x.origin.x -= o;
                        }
                    }function d() {
                        for (; x.origin.y > r.top;) {
                            x.origin.y -= c;
                        }
                    }function p() {
                        for (; x.origin.x < r.right;) {
                            u(t, x.clone()), x.origin.x += o;
                        }
                    }var m,
                        g,
                        v,
                        x,
                        y,
                        w = o / c,
                        b = r;if ("content-box" == h ? (b = P(b, "border-*-width", i), b = P(b, "padding-*", i)) : "padding-box" == h && (b = P(b, "border-*-width", i)), /^\s*auto(\s+auto)?\s*$/.test(l) || ("contain" == l ? (m = n.min(b.width / o, b.height / c), o *= m, c *= m) : "cover" == l ? (m = n.max(b.width / o, b.height / c), o *= m, c *= m) : (g = l.split(/\s+/g), o = /%$/.test(g[0]) ? b.width * e(g[0]) / 100 : e(g[0]), c = 1 == g.length || "auto" == g[1] ? o / w : /%$/.test(g[1]) ? b.height * e(g[1]) / 100 : e(g[1]))), v = (a + "").split(/\s+/), 1 == v.length && (v[1] = "50%"), v[0] = /%$/.test(v[0]) ? e(v[0]) / 100 * (b.width - o) : e(v[0]), v[1] = /%$/.test(v[1]) ? e(v[1]) / 100 * (b.height - c) : e(v[1]), x = new lt.Rect([b.left + v[0], b.top + v[1]], [o, c]), "no-repeat" == s) u(t, x);else if ("repeat-x" == s) f(), p();else if ("repeat-y" == s) for (d(); x.origin.y < r.bottom;) {
                        u(t, x.clone()), x.origin.y += c;
                    } else if ("repeat" == s) for (f(), d(), y = x.origin.clone(); x.origin.y < r.bottom;) {
                        x.origin.x = y.x, p(), x.origin.y += c;
                    }
                }if (o && "none" != o) if ("url" == o.type) {
                    if (/^url\(\"data:image\/svg/i.test(o.url)) return;var u = mt[o.url];u && u.width > 0 && u.height > 0 && c(t, r, u.width, u.height, function (t, e) {
                        t.append(new ht.Image(o.url, e));
                    });
                } else {
                    if ("linear" != o.type) return;c(t, r, r.width, r.height, $(o));
                }
            }function l() {
                function t(t) {
                    k(i, function () {
                        i.style.position = "relative";var e = i.ownerDocument.createElement(pt);e.style.position = "absolute", e.style.boxSizing = "border-box", "outside" == n ? (e.style.width = "6em", e.style.left = "-6.8em", e.style.textAlign = "right") : e.style.left = "0px", t(e), i.insertBefore(e, i.firstChild), et(e, r), i.removeChild(e);
                    });
                }function e(t) {
                    var e,
                        n = i.parentNode.children,
                        r = i.getAttribute("kendo-split-index");if (null != r) return t(0 | r, n.length);for (e = 0; e < n.length; ++e) {
                        if (n[e] === i) return t(e, n.length);
                    }
                }var n,
                    o = _(N, "list-style-type");if ("none" != o) switch (n = _(N, "list-style-position"), o) {case "circle":case "disc":case "square":
                        t(function (t) {
                            t.style.fontSize = "60%", t.style.lineHeight = "200%", t.style.paddingRight = "0.5em", t.style.fontFamily = "DejaVu Serif", t.innerHTML = { disc: "●", circle: "◯", square: "■" }[o];
                        });break;case "decimal":case "decimal-leading-zero":
                        t(function (t) {
                            e(function (e) {
                                ++e, "decimal-leading-zero" == o && (e + "").length < 2 && (e = "0" + e), t.innerHTML = e + ".";
                            });
                        });break;case "lower-roman":case "upper-roman":
                        t(function (t) {
                            e(function (e) {
                                e = ft(e + 1), "upper-roman" == o && (e = e.toUpperCase()), t.innerHTML = e + ".";
                            });
                        });break;case "lower-latin":case "lower-alpha":case "upper-latin":case "upper-alpha":
                        t(function (t) {
                            e(function (e) {
                                e = m(e), /^upper/i.test(o) && (e = e.toUpperCase()), t.innerHTML = e + ".";
                            });
                        });}
            }function c(t, e, n) {
                function o(t) {
                    return { x: t.y, y: t.x };
                }var h, l, c, u, f, d, p, m;if (0 !== t.width && 0 !== t.height && (a(t), h = H.width > 0 && (e && "ltr" == Q || n && "rtl" == Q), l = G.width > 0 && (n && "ltr" == Q || e && "rtl" == Q), 0 !== F.width || 0 !== H.width || 0 !== G.width || 0 !== j.width)) {
                    if (F.color == G.color && F.color == j.color && F.color == H.color && F.width == G.width && F.width == j.width && F.width == H.width && h && l) return t = P(t, F.width / 2), c = L(i, t, F.width / 2), c.options.stroke = { color: F.color, width: F.width }, void r.append(c);if (0 === q.x && 0 === U.x && 0 === W.x && 0 === Y.x && F.width < 2 && H.width < 2 && G.width < 2 && j.width < 2) return F.width > 0 && r.append(new ht.Path({ stroke: { width: F.width, color: F.color } }).moveTo(t.left, t.top + F.width / 2).lineTo(t.right, t.top + F.width / 2)), j.width > 0 && r.append(new ht.Path({ stroke: { width: j.width, color: j.color } }).moveTo(t.left, t.bottom - j.width / 2).lineTo(t.right, t.bottom - j.width / 2)), h && r.append(new ht.Path({ stroke: { width: H.width, color: H.color } }).moveTo(t.left + H.width / 2, t.top).lineTo(t.left + H.width / 2, t.bottom)), void (l && r.append(new ht.Path({ stroke: { width: G.width, color: G.color } }).moveTo(t.right - G.width / 2, t.top).lineTo(t.right - G.width / 2, t.bottom)));u = D(t, q, U, W, Y), f = u.tl, d = u.tr, p = u.br, m = u.bl, s(F.color, t.width, F.width, H.width, G.width, f, d, [1, 0, 0, 1, t.left, t.top]), s(j.color, t.width, j.width, G.width, H.width, p, m, [-1, 0, 0, -1, t.right, t.bottom]), s(H.color, t.height, H.width, j.width, F.width, o(m), o(f), [0, -1, 1, 0, t.left, t.bottom]), s(G.color, t.height, G.width, F.width, j.width, o(d), o(p), [0, 1, -1, 0, t.right, t.top]);
                }
            }var u,
                d,
                p,
                g,
                v,
                y,
                w,
                C,
                E,
                A,
                N = b(i),
                F = T(N, "top"),
                G = T(N, "right"),
                j = T(N, "bottom"),
                H = T(N, "left"),
                q = S(N, "top-left"),
                U = S(N, "top-right"),
                Y = S(N, "bottom-left"),
                W = S(N, "bottom-right"),
                Q = _(N, "direction"),
                Z = _(N, "background-color");if (Z = f(Z), u = rt(_(N, "background-image")), d = ot(_(N, "background-repeat")), p = ot(_(N, "background-position")), g = ot(_(N, "background-origin")), v = ot(_(N, "background-size")), ut.msie && ut.version < 10 && (p = ot(i.currentStyle.backgroundPosition)), y = P(i.getBoundingClientRect(), "border-*-width", i), function () {
                var t,
                    n,
                    i,
                    o,
                    s,
                    a,
                    h,
                    l = _(N, "clip"),
                    c = /^\s*rect\((.*)\)\s*$/.exec(l);c && (t = c[1].split(/[ ,]+/g), n = "auto" == t[0] ? y.top : e(t[0]) + y.top, i = "auto" == t[1] ? y.right : e(t[1]) + y.left, o = "auto" == t[2] ? y.bottom : e(t[2]) + y.top, s = "auto" == t[3] ? y.left : e(t[3]) + y.left, a = new ht.Group(), h = new ht.Path().moveTo(s, n).lineTo(i, n).lineTo(i, o).lineTo(s, o).close(), z(a, h), r.append(a), r = a, x(h));
            }(), A = _(N, "display"), "table-row" == A) for (w = [], C = 0, E = i.children; C < E.length; ++C) {
                w.push(E[C].getBoundingClientRect());
            } else w = i.getClientRects(), 1 == w.length && (w = [i.getBoundingClientRect()]);for (w = o(w), C = 0; C < w.length; ++C) {
                c(w[C], 0 === C, C == w.length - 1);
            }return w.length > 0 && "list-item" == A && l(w[0]), function () {
                function t() {
                    var t = L(i, y, "padding"),
                        e = new ht.Group();z(e, t), r.append(e), r = e, x(t);
                }V(i) ? t() : /^(hidden|auto|scroll)/.test(_(N, "overflow")) ? t() : /^(hidden|auto|scroll)/.test(_(N, "overflow-x")) ? t() : /^(hidden|auto|scroll)/.test(_(N, "overflow-y")) && t();
            }(), X(i, r) || J(i, r), r;
        }function $(t) {
            return function (i, r) {
                var o,
                    s,
                    a,
                    h,
                    l,
                    c,
                    u,
                    f,
                    d,
                    p,
                    m,
                    g,
                    v,
                    x = r.width(),
                    y = r.height();switch (t.type) {case "linear":
                        switch (o = null != t.angle ? t.angle : n.PI, t.to) {case "top":
                                o = 0;break;case "left":
                                o = -n.PI / 2;break;case "bottom":
                                o = n.PI;break;case "right":
                                o = n.PI / 2;break;case "top left":case "left top":
                                o = -n.atan2(y, x);break;case "top right":case "right top":
                                o = n.atan2(y, x);break;case "bottom left":case "left bottom":
                                o = n.PI + n.atan2(y, x);break;case "bottom right":case "right bottom":
                                o = n.PI - n.atan2(y, x);}t.reverse && (o -= n.PI), o %= 2 * n.PI, o < 0 && (o += 2 * n.PI), s = n.abs(x * n.sin(o)) + n.abs(y * n.cos(o)), a = n.atan(x * n.tan(o) / y), h = n.sin(a), l = n.cos(a), c = n.abs(h) + n.abs(l), u = c / 2 * h, f = c / 2 * l, o > n.PI / 2 && o <= 3 * n.PI / 2 && (u = -u, f = -f), d = [], p = 0, m = t.stops.map(function (n, i) {
                            var r,
                                o = n.percent;return o ? o = e(o) / 100 : n.length ? o = e(n.length) / s : 0 === i ? o = 0 : i == t.stops.length - 1 && (o = 1), r = { color: n.color.toCssRgba(), offset: o }, null != o ? (p = o, d.forEach(function (t, e) {
                                var n = t.stop;n.offset = t.left + (p - t.left) * (e + 1) / (d.length + 1);
                            }), d = []) : d.push({ left: p, stop: r }), r;
                        }), g = [.5 - u, .5 + f], v = [.5 + u, .5 - f], i.append(ht.Path.fromRect(r).stroke(null).fill(new ht.LinearGradient({ start: g, end: v, stops: m, userSpace: !1 })));break;case "radial":
                        window.console && window.console.log && window.console.log("Radial gradients are not yet supported in HTML renderer");}
            };
        }function X(e, n) {
            var i, r, o, s;if (e.getAttribute(kendo.attr("role")) && (i = kendo.widgetInstance(t(e)), i && (i.exportDOMVisual || i.exportVisual))) return !!(r = i.exportDOMVisual ? i.exportDOMVisual() : i.exportVisual()) && (o = new ht.Group(), o.children.push(r), s = e.getBoundingClientRect(), o.transform(lt.transform().translate(s.left, s.top)), n.append(o), !0);
        }function U(t, e, n) {
            var i = E(t),
                r = new lt.Rect([i.left, i.top], [i.width, i.height]),
                o = new ht.Image(e, r);z(o, L(t, i, "content")), n.append(o);
        }function Y(t, n) {
            var i = b(t),
                r = b(n),
                o = e(_(i, "z-index")),
                s = e(_(r, "z-index")),
                a = _(i, "position"),
                h = _(r, "position");return isNaN(o) && isNaN(s) ? /static|absolute/.test(a) && /static|absolute/.test(h) ? 0 : "static" == a ? -1 : "static" == h ? 1 : 0 : isNaN(o) ? 0 === s ? 0 : s > 0 ? -1 : 1 : isNaN(s) ? 0 === o ? 0 : o > 0 ? 1 : -1 : e(o) - e(s);
        }function V(t) {
            return (/^(?:textarea|select|input)$/i.test(t.tagName)
            );
        }function W(t) {
            return t.selectedOptions && t.selectedOptions.length > 0 ? t.selectedOptions[0] : t.options[t.selectedIndex];
        }function Q(t, e) {
            var i = b(t),
                r = _(i, "color"),
                o = t.getBoundingClientRect();"checkbox" == t.type ? (e.append(ht.Path.fromRect(new lt.Rect([o.left + 1, o.top + 1], [o.width - 2, o.height - 2])).stroke(r, 1)), t.checked && e.append(new ht.Path().stroke(r, 1.2).moveTo(o.left + .22 * o.width, o.top + .55 * o.height).lineTo(o.left + .45 * o.width, o.top + .75 * o.height).lineTo(o.left + .78 * o.width, o.top + .22 * o.width))) : (e.append(new ht.Circle(new lt.Circle([(o.left + o.right) / 2, (o.top + o.bottom) / 2], n.min(o.width - 2, o.height - 2) / 2)).stroke(r, 1)), t.checked && e.append(new ht.Circle(new lt.Circle([(o.left + o.right) / 2, (o.top + o.bottom) / 2], n.min(o.width - 8, o.height - 8) / 2)).fill(r).stroke(null)));
        }function Z(t, e) {
            var n,
                i,
                r,
                o,
                s,
                a = t.tagName.toLowerCase();if ("input" == a && ("checkbox" == t.type || "radio" == t.type)) return Q(t, e);if (n = t.parentNode, i = t.ownerDocument, r = i.createElement(pt), r.style.cssText = j(b(t)), "input" == a && (r.style.whiteSpace = "pre"), "select" != a && "textarea" != a || (r.style.overflow = "auto"), "select" == a) {
                if (t.multiple) for (s = 0; s < t.options.length; ++s) {
                    o = i.createElement(pt), o.style.cssText = j(b(t.options[s])), o.style.display = "block", o.textContent = t.options[s].textContent, r.appendChild(o);
                } else o = W(t), o && (r.textContent = o.textContent);
            } else r.textContent = t.value;n.insertBefore(r, t), r.scrollLeft = t.scrollLeft, r.scrollTop = t.scrollTop, t.style.display = "none", J(r, e), t.style.display = "", n.removeChild(r);
        }function J(t, e) {
            var n, i, r, o, s, a, h, l, c;switch (gt._stackingContext.element === t && (gt._stackingContext.group = e), t.tagName.toLowerCase()) {case "img":
                    U(t, t.src, e);break;case "canvas":
                    try {
                        U(t, t.toDataURL("image/png"), e);
                    } catch (u) {}
                    break;case "textarea":case "input":case "select":
                    Z(t, e);break;default:
                    for (n = [], i = [], r = [], o = [], s = t.firstChild; s; s = s.nextSibling) {
                        switch (s.nodeType) {case 3:
                                /\S/.test(s.data) && K(t, s, e);break;case 1:
                                a = b(s), h = _(a, "display"), l = _(a, "float"), c = _(a, "position"), "static" != c ? o.push(s) : "inline" != h ? "none" != l ? i.push(s) : n.push(s) : r.push(s);}
                    }dt(n, Y).forEach(function (t) {
                        et(t, e);
                    }), dt(i, Y).forEach(function (t) {
                        et(t, e);
                    }), dt(r, Y).forEach(function (t) {
                        et(t, e);
                    }), dt(o, Y).forEach(function (t) {
                        et(t, e);
                    });}
        }function K(t, i, r) {
            function o(t) {
                var e, i, r, o;if (ut.msie || ut.chrome) {
                    for (e = t.getClientRects(), i = { top: +(1 / 0), right: -(1 / 0), bottom: -(1 / 0), left: +(1 / 0) }, r = 0; r < e.length; ++r) {
                        o = e[r], o.width <= 1 || o.bottom === E || (i.left = n.min(o.left, i.left), i.top = n.min(o.top, i.top), i.right = n.max(o.right, i.right), i.bottom = n.max(o.bottom, i.bottom));
                    }return i.width = i.right - i.left, i.height = i.bottom - i.top, i;
                }return t.getBoundingClientRect();
            }function s() {
                var t,
                    e,
                    r,
                    s,
                    h,
                    l,
                    d,
                    p = u,
                    m = c.substr(u).search(/\S/);if (u += m, m < 0 || u >= f) return !0;if (v.setStart(i, u), v.setEnd(i, u + 1), t = o(v), e = !1, w && (m = c.substr(u).search(/\s/), m >= 0 && (v.setEnd(i, u + m), r = o(v), r.bottom == t.bottom && (t = r, e = !0, u += m))), !e) {
                    if (m = function g(e, n, r) {
                        v.setEnd(i, n);var s = o(v);return s.bottom != t.bottom && e < n ? g(e, e + n >> 1, n) : s.right != t.right ? (t = s, n < r ? g(n, n + r >> 1, r) : n) : n;
                    }(u, n.min(f, u + S), f), m == u) return !0;if (u = m, m = ("" + v).search(/\s+$/), 0 === m) return;m > 0 && (v.setEnd(i, v.startOffset + m), t = o(v));
                }if (ut.msie && (t = v.getClientRects()[0]), s = "" + v, /^(?:pre|pre-wrap)$/i.test(C)) {
                    if (/\t/.test(s)) {
                        for (h = 0, m = p; m < v.startOffset; ++m) {
                            l = c.charCodeAt(m), 9 == l ? h += 8 - h % 8 : 10 == l || 13 == l ? h = 0 : h++;
                        }for (; (m = s.search("\t")) >= 0;) {
                            d = "        ".substr(0, 8 - (h + m) % 8), s = s.substr(0, m) + d + s.substr(m + 1);
                        }
                    }
                } else s = s.replace(/\s+/g, " ");e || (E = t.bottom), a(s, t);
            }function a(t, e) {
                var n, i, o;ut.msie && !isNaN(p) && (n = at(m), i = (e.top + e.bottom - n) / 2, e = { top: i, right: e.right, bottom: i + n, left: e.left, height: n, width: e.right - e.left }), o = new it(t, new lt.Rect([e.left, e.top], [e.width, e.height]), { font: m, fill: { color: g } }), r.append(o), h(e);
            }function h(t) {
                function e(e, n) {
                    var i, o;e && (i = d / 12, o = new ht.Path({ stroke: { width: i, color: e } }), n -= i, o.moveTo(t.left, n).lineTo(t.right, n), r.append(o));
                }e(gt.underline, t.bottom), e(gt["line-through"], t.bottom - t.height / 2.7), e(gt.overline, t.top);
            }var l, c, u, f, d, p, m, g, v, x, w, C, T, k, S, E;if (!y() && (l = b(t), !(e(_(l, "text-indent")) < -500) && (c = i.data, u = 0, f = c.search(/\S\s*$/) + 1, f && (d = _(l, "font-size"), p = _(l, "line-height"), m = [_(l, "font-style"), _(l, "font-variant"), _(l, "font-weight"), d, _(l, "font-family")].join(" "), d = e(d), p = e(p), 0 !== d)))) {
                for (g = _(l, "color"), v = t.ownerDocument.createRange(), x = _(l, "text-align"), w = "justify" == x, C = _(l, "white-space"), ut.msie && (T = l.textOverflow, "ellipsis" == T && (k = t.style.textOverflow, t.style.textOverflow = "clip")), S = t.getBoundingClientRect().width / d * 5, 0 === S && (S = 500), E = null; !s();) {}ut.msie && "ellipsis" == T && (t.style.textOverflow = k);
            }
        }function tt(t, n, i) {
            var r, o, s, a, h, l;for ("auto" != i ? (r = gt._stackingContext.group, i = e(i)) : (r = n, i = 0), o = r.children, s = 0; s < o.length && !(null != o[s]._dom_zIndex && o[s]._dom_zIndex > i); ++s) {}return a = new ht.Group(), r.insertAt(a, s), a._dom_zIndex = i, r !== n && gt._clipbox && (h = gt._matrix.invert(), l = gt._clipbox.transformCopy(h), z(a, ht.Path.fromRect(l))), a;
        }function et(t, n) {
            var i,
                r,
                o,
                s,
                a,
                h,
                f,
                d = b(t),
                p = _(d, "counter-reset");p && u(ot(p, /^\s+/), c, 0), i = _(d, "counter-increment"), i && u(ot(i, /^\s+/), l, 1), /^(style|script|link|meta|iframe|svg|col|colgroup)$/i.test(t.tagName) || null != gt._clipbox && (r = e(_(d, "opacity")), o = _(d, "visibility"), s = _(d, "display"), 0 !== r && "hidden" != o && "none" != s && (a = A(d), f = _(d, "z-index"), (a || r < 1) && "auto" == f && (f = 0), h = tt(t, n, f), r < 1 && h.opacity(r * h.opacity()), g(t, d, h), a ? k(t, function () {
                var e, n, i, r;C(t.style, "transform", "none", "important"), C(t.style, "transition", "none", "important"), "static" == _(d, "position") && C(t.style, "position", "relative", "important"), e = t.getBoundingClientRect(), n = e.left + a.origin[0], i = e.top + a.origin[1], r = [1, 0, 0, 1, -n, -i], r = nt(r, a.matrix), r = nt(r, [1, 0, 0, 1, n, i]), r = R(h, r), gt._matrix = gt._matrix.multiplyCopy(r), H(t, h);
            }) : H(t, h), v()));
        }function nt(t, e) {
            var n = t[0],
                i = t[1],
                r = t[2],
                o = t[3],
                s = t[4],
                a = t[5],
                h = e[0],
                l = e[1],
                c = e[2],
                u = e[3],
                f = e[4],
                d = e[5];return [n * h + i * c, n * l + i * u, r * h + o * c, r * l + o * u, s * h + a * c + f, s * l + a * u + d];
        }var it,
            rt,
            ot,
            st,
            at,
            ht = kendo.drawing,
            lt = kendo.geometry,
            ct = Array.prototype.slice,
            ut = kendo.support.browser,
            ft = kendo.util.arabicToRoman,
            dt = kendo.util.mergeSort,
            pt = "KENDO-PSEUDO-ELEMENT",
            mt = {},
            gt = {};gt._root = gt, it = ht.Text.extend({ nodeType: "Text", init: function init(t, e, n) {
                ht.Text.fn.init.call(this, t, e.getOrigin(), n), this._pdfRect = e;
            }, rect: function rect() {
                return this._pdfRect;
            }, rawBBox: function rawBBox() {
                return this._pdfRect;
            } }), ht.drawDOM = r, r.getFontFaces = o, rt = function () {
            function t(t) {
                function p() {
                    var e = a.exec(t);e && (t = t.substr(e[1].length));
                }function m(e) {
                    p();var n = e.exec(t);if (n) return t = t.substr(n[1].length), n[1];
                }function g() {
                    var e,
                        r,
                        o = kendo.parseColor(t, !0);if (o) return t = t.substr(o.match[0].length), o = o.toRGB(), (e = m(i)) || (r = m(n)), { color: o, length: e, percent: r };
                }function v(e) {
                    var i,
                        s,
                        a,
                        u,
                        f,
                        d,
                        p = [],
                        v = !1;if (m(h)) {
                        for (i = m(o), i ? (i = N(i), m(c)) : (s = m(r), "to" == s ? s = m(r) : s && /^-/.test(e) && (v = !0), a = m(r), m(c)), /-moz-/.test(e) && null == i && null == s && (u = m(n), f = m(n), v = !0, "0%" == u ? s = "left" : "100%" == u && (s = "right"), "0%" == f ? a = "top" : "100%" == f && (a = "bottom"), m(c)); t && !m(l) && (d = g());) {
                            p.push(d), m(c);
                        }return { type: "linear", angle: i, to: s && a ? s + " " + a : s ? s : a ? a : null, stops: p, reverse: v };
                    }
                }function x() {
                    if (m(h)) {
                        var t = m(f);return t = t.replace(/^['"]+|["']+$/g, ""), m(l), { type: "url", url: t };
                    }
                }var y,
                    w = t;return s(d, w) ? d[w] : ((y = m(e)) ? y = v(y) : (y = m(u)) && (y = x()), d[w] = y || { type: "none" });
            }var e = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\s*)\(/,
                n = /^([-0-9.]+%)/,
                i = /^([-0-9.]+px)/,
                r = /^(left|right|top|bottom|to|center)\W/,
                o = /^([-0-9.]+(deg|grad|rad|turn))/,
                a = /^(\s+)/,
                h = /^(\()/,
                l = /^(\))/,
                c = /^(,)/,
                u = /^(url)\(/,
                f = /^(.*?)\)/,
                d = {},
                p = {};return function (e) {
                return s(p, e) ? p[e] : p[e] = ot(e).map(t);
            };
        }(), ot = function () {
            var t = {};return function (e, n) {
                function i(t) {
                    return f = t.exec(e.substr(l));
                }function r(t) {
                    return t.replace(/^\s+|\s+$/g, "");
                }var o, a, h, l, c, u, f;if (n || (n = /^\s*,\s*/), o = e + n, s(t, o)) return t[o];for (a = [], h = 0, l = 0, c = 0, u = !1; l < e.length;) {
                    !u && i(/^[\(\[\{]/) ? (c++, l++) : !u && i(/^[\)\]\}]/) ? (c--, l++) : !u && i(/^[\"\']/) ? (u = f[0], l++) : "'" == u && i(/^\\\'/) ? l += 2 : '"' == u && i(/^\\\"/) ? l += 2 : "'" == u && i(/^\'/) ? (u = !1, l++) : '"' == u && i(/^\"/) ? (u = !1, l++) : i(n) ? (!u && !c && l > h && (a.push(r(e.substring(h, l))), h = l + f[0].length), l += f[0].length) : l++;
                }return h < l && a.push(r(e.substring(h, l))), t[o] = a;
            };
        }(), st = function (t) {
            return function (e) {
                var n,
                    i = t[e];return i || ((n = /url\((['"]?)([^'")]*?)\1\)\s+format\((['"]?)truetype\3\)/.exec(e)) ? i = t[e] = n[2] : (n = /url\((['"]?)([^'")]*?\.ttf)\1\)/.exec(e)) && (i = t[e] = n[2])), i;
            };
        }(Object.create(null)), at = function (t) {
            return function (e) {
                var n = t[e];return null == n && (n = t[e] = kendo.util.measureText("Mapq", { font: e }).height), n;
            };
        }(Object.create(null));
    }(window.kendo.jQuery, parseFloat, Math);
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("drawing/animation.min", ["drawing/geometry.min", "drawing/core.min"], t);
}(function () {
    !function (t) {
        var e = t.noop,
            n = window.kendo,
            i = n.Class,
            r = n.util,
            o = n.animationFrame,
            s = n.deepExtend,
            a = i.extend({ init: function init(t, e) {
                var n = this;n.options = s({}, n.options, e), n.element = t;
            }, options: { duration: 500, easing: "swing" }, setup: e, step: e, play: function play() {
                var e = this,
                    n = e.options,
                    i = t.easing[n.easing],
                    s = n.duration,
                    a = n.delay || 0,
                    h = r.now() + a,
                    l = h + s;0 === s ? (e.step(1), e.abort()) : setTimeout(function () {
                    var t = function t() {
                        var n, a, c, u;e._stopped || (n = r.now(), a = r.limitValue(n - h, 0, s), c = a / s, u = i(c, a, 0, 1, s), e.step(u), n < l ? o(t) : e.abort());
                    };t();
                }, a);
            }, abort: function abort() {
                this._stopped = !0;
            }, destroy: function destroy() {
                this.abort();
            } }),
            h = function h() {
            this._items = [];
        };h.prototype = { register: function register(t, e) {
                this._items.push({ name: t, type: e });
            }, create: function create(t, e) {
                var n,
                    i,
                    r,
                    o = this._items;if (e && e.type) for (i = e.type.toLowerCase(), r = 0; r < o.length; r++) {
                    if (o[r].name.toLowerCase() === i) {
                        n = o[r];break;
                    }
                }if (n) return new n.type(t, e);
            } }, h.current = new h(), a.create = function (t, e, n) {
            return h.current.create(t, e, n);
        }, s(n.drawing, { Animation: a, AnimationFactory: h });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
}), function (t, define) {
    define("kendo.drawing.min", ["kendo.color.min", "util/main.min", "util/text-metrics.min", "util/base64.min", "mixins/observers.min", "drawing/geometry.min", "drawing/core.min", "drawing/mixins.min", "drawing/shapes.min", "drawing/parser.min", "drawing/search.min", "drawing/svg.min", "drawing/canvas.min", "drawing/vml.min", "drawing/html.min", "drawing/animation.min"], t);
}(function () {}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
});;!function (t, define) {
    define("util/main.min", ["kendo.core.min"], t);
}(function () {
    return function () {
        function t(t) {
            return (typeof t === "undefined" ? "undefined" : _typeof(t)) !== O;
        }function i(t, i) {
            var e = n(i);return L.round(t * e) / e;
        }function n(t) {
            return t ? L.pow(10, t) : 1;
        }function e(t, i, n) {
            return L.max(L.min(t, n), i);
        }function o(t) {
            return t * j;
        }function r(t) {
            return t / j;
        }function a(t) {
            return "number" == typeof t && !isNaN(t);
        }function s(i, n) {
            return t(i) ? i : n;
        }function l(t) {
            return t * t;
        }function u(t) {
            var i,
                n = [];for (i in t) {
                n.push(i + t[i]);
            }return n.sort().join("");
        }function c(t) {
            var i,
                n = 2166136261;for (i = 0; i < t.length; ++i) {
                n += (n << 1) + (n << 4) + (n << 7) + (n << 8) + (n << 24), n ^= t.charCodeAt(i);
            }return n >>> 0;
        }function h(t) {
            return c(u(t));
        }function p(t) {
            var i,
                n = t.length,
                e = E,
                o = U;for (i = 0; i < n; i++) {
                o = L.max(o, t[i]), e = L.min(e, t[i]);
            }return { min: e, max: o };
        }function f(t) {
            return p(t).min;
        }function d(t) {
            return p(t).max;
        }function x(t) {
            return g(t).min;
        }function m(t) {
            return g(t).max;
        }function g(t) {
            var i,
                n,
                e,
                o = E,
                r = U;for (i = 0, n = t.length; i < n; i++) {
                e = t[i], null !== e && isFinite(e) && (o = L.min(o, e), r = L.max(r, e));
            }return { min: o === E ? void 0 : o, max: r === U ? void 0 : r };
        }function v(t) {
            if (t) return t[t.length - 1];
        }function y(t, i) {
            return t.push.apply(t, i), t;
        }function b(t) {
            return B.template(t, { useWithBlock: !1, paramName: "d" });
        }function w(i, n) {
            return t(n) && null !== n ? " " + i + "='" + n + "' " : "";
        }function T(t) {
            var i,
                n = "";for (i = 0; i < t.length; i++) {
                n += w(t[i][0], t[i][1]);
            }return n;
        }function k(i) {
            var n,
                e,
                o = "";for (n = 0; n < i.length; n++) {
                e = i[n][1], t(e) && (o += i[n][0] + ":" + e + ";");
            }if ("" !== o) return o;
        }function _(t) {
            return "string" != typeof t && (t += "px"), t;
        }function M(t) {
            var i,
                n,
                e = [];if (t) for (i = B.toHyphens(t).split("-"), n = 0; n < i.length; n++) {
                e.push("k-pos-" + i[n]);
            }return e.join(" ");
        }function S(i) {
            return "" === i || null === i || "none" === i || "transparent" === i || !t(i);
        }function A(t) {
            for (var i = { 1: "i", 10: "x", 100: "c", 2: "ii", 20: "xx", 200: "cc", 3: "iii", 30: "xxx", 300: "ccc", 4: "iv", 40: "xl", 400: "cd", 5: "v", 50: "l", 500: "d", 6: "vi", 60: "lx", 600: "dc", 7: "vii", 70: "lxx", 700: "dcc", 8: "viii", 80: "lxxx", 800: "dccc", 9: "ix", 90: "xc", 900: "cm", 1e3: "m" }, n = [1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], e = ""; t > 0;) {
                t < n[0] ? n.shift() : (e += i[n[0]], t -= n[0]);
            }return e;
        }function V(t) {
            var i, n, e, o, r;for (t = t.toLowerCase(), i = { i: 1, v: 5, x: 10, l: 50, c: 100, d: 500, m: 1e3 }, n = 0, e = 0, o = 0; o < t.length; ++o) {
                if (r = i[t.charAt(o)], !r) return null;n += r, r > e && (n -= 2 * e), e = r;
            }return n;
        }function R(t) {
            var i = Object.create(null);return function () {
                var n,
                    e = "";for (n = arguments.length; --n >= 0;) {
                    e += ":" + arguments[n];
                }return e in i ? i[e] : i[e] = t.apply(this, arguments);
            };
        }function P(t) {
            for (var i, n, e = [], o = 0, r = t.length; o < r;) {
                i = t.charCodeAt(o++), i >= 55296 && i <= 56319 && o < r ? (n = t.charCodeAt(o++), 56320 == (64512 & n) ? e.push(((1023 & i) << 10) + (1023 & n) + 65536) : (e.push(i), o--)) : e.push(i);
            }return e;
        }function z(t) {
            return t.map(function (t) {
                var i = "";return t > 65535 && (t -= 65536, i += String.fromCharCode(t >>> 10 & 1023 | 55296), t = 56320 | 1023 & t), i += String.fromCharCode(t);
            }).join("");
        }function C(t, i) {
            function n(t, n) {
                for (var e = [], o = 0, r = 0, a = 0; o < t.length && r < n.length;) {
                    i(t[o], n[r]) <= 0 ? e[a++] = t[o++] : e[a++] = n[r++];
                }return o < t.length && e.push.apply(e, t.slice(o)), r < n.length && e.push.apply(e, n.slice(r)), e;
            }return t.length < 2 ? t.slice() : function e(t) {
                var i, o, r;return t.length <= 1 ? t : (i = Math.floor(t.length / 2), o = t.slice(0, i), r = t.slice(i), o = e(o), r = e(r), n(o, r));
            }(t);
        }var L = Math,
            B = window.kendo,
            I = B.deepExtend,
            j = L.PI / 180,
            E = Number.MAX_VALUE,
            U = -Number.MAX_VALUE,
            O = "undefined",
            D = Date.now;D || (D = function D() {
            return new Date().getTime();
        }), I(B, { util: { MAX_NUM: E, MIN_NUM: U, append: y, arrayLimits: p, arrayMin: f, arrayMax: d, defined: t, deg: r, hashKey: c, hashObject: h, isNumber: a, isTransparent: S, last: v, limitValue: e, now: D, objectKey: u, round: i, rad: o, renderAttr: w, renderAllAttr: T, renderPos: M, renderSize: _, renderStyle: k, renderTemplate: b, sparseArrayLimits: g, sparseArrayMin: x, sparseArrayMax: m, sqr: l, valueOrDefault: s, romanToArabic: V, arabicToRoman: A, memoize: R, ucs2encode: z, ucs2decode: P, mergeSort: C } }), B.drawing.util = B.util, B.dataviz.util = B.util;
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, i, n) {
    (n || i)();
}), function (t, define) {
    define("util/text-metrics.min", ["kendo.core.min", "util/main.min"], t);
}(function () {
    !function (t) {
        function i() {
            return { width: 0, height: 0, baseline: 0 };
        }function n(t, i, n) {
            return h.current.measure(t, i, n);
        }function e(t, i) {
            var n = [];if (t.length > 0 && document.fonts) {
                try {
                    n = t.map(function (t) {
                        return document.fonts.load(t);
                    });
                } catch (e) {
                    r.logToConsole(e);
                }Promise.all(n).then(i, i);
            } else i();
        }var o = document,
            r = window.kendo,
            a = r.Class,
            s = r.util,
            l = s.defined,
            u = a.extend({ init: function init(t) {
                this._size = t, this._length = 0, this._map = {};
            }, put: function put(t, i) {
                var n = this,
                    e = n._map,
                    o = { key: t, value: i };e[t] = o, n._head ? (n._tail.newer = o, o.older = n._tail, n._tail = o) : n._head = n._tail = o, n._length >= n._size ? (e[n._head.key] = null, n._head = n._head.newer, n._head.older = null) : n._length++;
            }, get: function get(t) {
                var i = this,
                    n = i._map[t];if (n) return n === i._head && n !== i._tail && (i._head = n.newer, i._head.older = null), n !== i._tail && (n.older && (n.older.newer = n.newer, n.newer.older = n.older), n.older = i._tail, n.newer = null, i._tail.newer = n, i._tail = n), n.value;
            } }),
            c = t("<div style='position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;padding: 0 !important; margin: 0 !important; border: 0 !important;line-height: normal !important; visibility: hidden !important; white-space: nowrap!important;' />")[0],
            h = a.extend({ init: function init(t) {
                this._cache = new u(1e3), this._initOptions(t);
            }, options: { baselineMarkerSize: 1 }, measure: function measure(n, e, r) {
                var a, u, h, p, f, d, x, m;if (!n) return i();if (a = s.objectKey(e), u = s.hashKey(n + a), h = this._cache.get(u), h) return h;p = i(), f = r ? r : c, d = this._baselineMarker().cloneNode(!1);for (x in e) {
                    m = e[x], l(m) && (f.style[x] = m);
                }return t(f).text(n), f.appendChild(d), o.body.appendChild(f), (n + "").length && (p.width = f.offsetWidth - this.options.baselineMarkerSize, p.height = f.offsetHeight, p.baseline = d.offsetTop + this.options.baselineMarkerSize), p.width > 0 && p.height > 0 && this._cache.put(u, p), f.parentNode.removeChild(f), p;
            }, _baselineMarker: function _baselineMarker() {
                return t("<div class='k-baseline-marker' style='display: inline-block; vertical-align: baseline;width: " + this.options.baselineMarkerSize + "px; height: " + this.options.baselineMarkerSize + "px;overflow: hidden;' />")[0];
            } });h.current = new h(), r.util.TextMetrics = h, r.util.LRUCache = u, r.util.loadFonts = e, r.util.measureText = n;
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, i, n) {
    (n || i)();
}), function (t, define) {
    define("util/base64.min", ["util/main.min"], t);
}(function () {
    return function () {
        function t(t) {
            var n,
                e,
                o,
                a,
                s,
                l,
                u,
                c = "",
                h = 0;for (t = i(t); h < t.length;) {
                n = t.charCodeAt(h++), e = t.charCodeAt(h++), o = t.charCodeAt(h++), a = n >> 2, s = (3 & n) << 4 | e >> 4, l = (15 & e) << 2 | o >> 6, u = 63 & o, isNaN(e) ? l = u = 64 : isNaN(o) && (u = 64), c = c + r.charAt(a) + r.charAt(s) + r.charAt(l) + r.charAt(u);
            }return c;
        }function i(t) {
            var i,
                n,
                e = "";for (i = 0; i < t.length; i++) {
                n = t.charCodeAt(i), n < 128 ? e += o(n) : n < 2048 ? (e += o(192 | n >>> 6), e += o(128 | 63 & n)) : n < 65536 && (e += o(224 | n >>> 12), e += o(128 | n >>> 6 & 63), e += o(128 | 63 & n));
            }return e;
        }var n = window.kendo,
            e = n.deepExtend,
            o = String.fromCharCode,
            r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";e(n.util, { encodeBase64: t, encodeUTF8: i });
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, i, n) {
    (n || i)();
}), function (t, define) {
    define("mixins/observers.min", ["kendo.core.min"], t);
}(function () {
    return function (t) {
        var i = Math,
            n = window.kendo,
            e = n.deepExtend,
            o = t.inArray,
            r = { observers: function observers() {
                return this._observers = this._observers || [];
            }, addObserver: function addObserver(t) {
                return this._observers ? this._observers.push(t) : this._observers = [t], this;
            }, removeObserver: function removeObserver(t) {
                var i = this.observers(),
                    n = o(t, i);return n != -1 && i.splice(n, 1), this;
            }, trigger: function trigger(t, i) {
                var n,
                    e,
                    o = this._observers;if (o && !this._suspended) for (e = 0; e < o.length; e++) {
                    n = o[e], n[t] && n[t](i);
                }return this;
            }, optionsChange: function optionsChange(t) {
                t = t || {}, t.element = this, this.trigger("optionsChange", t);
            }, geometryChange: function geometryChange() {
                this.trigger("geometryChange", { element: this });
            }, suspend: function suspend() {
                return this._suspended = (this._suspended || 0) + 1, this;
            }, resume: function resume() {
                return this._suspended = i.max((this._suspended || 0) - 1, 0), this;
            }, _observerField: function _observerField(t, i) {
                this[t] && this[t].removeObserver(this), this[t] = i, i.addObserver(this);
            } };e(n, { mixins: { ObserversMixin: r } });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, i, n) {
    (n || i)();
}), function (t, define) {
    define("kendo.dataviz.core.min", ["kendo.core.min", "kendo.drawing.min"], t);
}(function () {
    return function (t, i) {
        function n(t, i) {
            var n = { top: 0, right: 0, bottom: 0, left: 0 };return i = i || 0, "number" == typeof t ? n[Ot] = n[Ut] = n[ht] = n[Vt] = t : (n[Ot] = t[Ot] || i, n[Ut] = t[Ut] || i, n[ht] = t[ht] || i, n[Vt] = t[Vt] || i), n;
        }function e(t, i) {
            var n = t.tickX,
                e = t.tickY,
                o = t.position,
                r = new $.Path({ stroke: { width: i.width, color: i.color } });return t.vertical ? r.moveTo(n, o).lineTo(n + i.size, o) : r.moveTo(o, e).lineTo(o, e + i.size), w(r), r;
        }function o(t, i) {
            var n = t.lineStart,
                e = t.lineEnd,
                o = t.position,
                r = new $.Path({ stroke: { width: i.width, color: i.color, dashType: i.dashType } });return t.vertical ? r.moveTo(n, o).lineTo(e, o) : r.moveTo(o, n).lineTo(o, e), w(r), r;
        }function r(t, i) {
            var n,
                e,
                o,
                r = h(i - t, bt - 1);if (0 === r) {
                if (0 === i) return .1;r = st.abs(i);
            }return n = st.pow(10, st.floor(st.log(r) / st.log(10))), e = h(r / n, bt), o = 1, o = e < 1.904762 ? .2 : e < 4.761904 ? .5 : e < 9.523809 ? 1 : 2, h(n * o, bt);
        }function a(t, i, n, e, o) {
            var r = o * Tt;return new Wt(n + (t - n) * st.cos(r) + (i - e) * st.sin(r), e - (t - n) * st.sin(r) + (i - e) * st.cos(r));
        }function s(i, n) {
            if (i.x1 == n.x1 && i.y1 == n.y1 && i.x2 == n.x2 && i.y2 == n.y2) return n;var e = st.min(i.x1, n.x1),
                o = st.max(i.x1, n.x1),
                r = st.min(i.x2, n.x2),
                a = st.max(i.x2, n.x2),
                s = st.min(i.y1, n.y1),
                l = st.max(i.y1, n.y1),
                u = st.min(i.y2, n.y2),
                c = st.max(i.y2, n.y2),
                h = [];return h[0] = _S(o, s, r, l), h[1] = _S(e, l, o, u), h[2] = _S(r, l, a, u), h[3] = _S(o, u, r, c), i.x1 == e && i.y1 == s || n.x1 == e && n.y1 == s ? (h[4] = _S(e, s, o, l), h[5] = _S(r, u, a, c)) : (h[4] = _S(r, s, a, l), h[5] = _S(e, u, o, c)), t.grep(h, function (t) {
                return t.height() > 0 && t.width() > 0;
            })[0];
        }function l(t, i) {
            return ot(t, i) != -1;
        }function u(t, i) {
            return h(st.ceil(t / i) * i, bt);
        }function c(t, i) {
            return h(st.floor(t / i) * i, bt);
        }function h(t, i) {
            var n = st.pow(10, i || 0);return st.round(t * n) / n;
        }function p(t, i) {
            return st.log(t) / st.log(i);
        }function f(t, i, n) {
            var e = h(st.abs(t % i), bt),
                o = i * (1 - n);return 0 === e || e > o;
        }function d(t, i, n) {
            return h(t + (i - t) * n, ft);
        }function x(t, i) {
            return t - i;
        }function m(t, i) {
            return t.match(kt) ? X.format.apply(this, arguments) : X.toString(i, t);
        }function g(t, i) {
            return -t.x * i.y + t.y * i.x < 0;
        }function v(t, i) {
            return t && i ? t.getTime() - i.getTime() : -1;
        }function y(t) {
            var i = t.originalEvent,
                n = 0;return i.wheelDelta && (n = -i.wheelDelta / 120, n = n > 0 ? st.ceil(n) : st.floor(n)), i.detail && (n = h(i.detail / 3)), n;
        }function b(t) {
            if (!t || !t.indexOf || t.indexOf("&") < 0) return t;var i = b._element;return i.innerHTML = t, i.textContent || i.innerText;
        }function w(t) {
            var i, n;if (!X.support.vml) for (i = .5, t.options.stroke && K(t.options.stroke.width) && t.options.stroke.width % 2 === 0 && (i = 0), n = 0; n < t.segments.length; n++) {
                t.segments[n].anchor().round(0).translate(i, i);
            }return t;
        }function T(t) {
            var i,
                n,
                e = t.stops,
                o = t.innerRadius / t.radius * 100,
                r = e.length,
                a = [];for (i = 0; i < r; i++) {
                n = lt({}, e[i]), n.offset = (n.offset * (100 - o) + o) / 100, a.push(n);
            }return a;
        }function k(t) {
            var i = t.origin,
                n = t.bottomRight();return new _S(i.x, i.y, n.x, n.y);
        }function _(i) {
            i = i || {};var n = t(i.touch ? i.touch.initialTouch : i.target);return n;
        }function M(t) {
            return st.max(st.min(t, Mt), -Mt);
        }var _S,
            A,
            V,
            R,
            P,
            z,
            C,
            L,
            B,
            I,
            j,
            E,
            U,
            O,
            D,
            G,
            N,
            F,
            H,
            X = window.kendo,
            W = X.util,
            q = W.append,
            K = W.defined,
            Y = W.last,
            Q = W.valueOrDefault,
            J = X.dataviz,
            Z = J.geometry,
            $ = J.drawing,
            tt = $.util.measureText,
            it = X.Class,
            nt = X.template,
            et = t.noop,
            ot = t.inArray,
            rt = t.isPlainObject,
            at = t.trim,
            st = Math,
            lt = X.deepExtend,
            ut = "axisLabelClick",
            ct = "#000",
            ht = "bottom",
            pt = "center",
            ft = 3,
            dt = "clip",
            xt = "circle",
            mt = "cross",
            gt = "12px sans-serif",
            vt = 400,
            yt = 7,
            bt = 10,
            wt = 600,
            Tt = st.PI / 180,
            kt = /\{\d+:?/,
            _t = "height",
            Mt = X.support.vml ? 1e5 : 3e5,
            St = 600,
            At = "inside",
            Vt = "left",
            Rt = "linear",
            Pt = Number.MAX_VALUE,
            zt = -Number.MAX_VALUE,
            Ct = Math.pow(10, -bt + 1),
            Lt = "none",
            Bt = "noteClick",
            It = "noteHover",
            jt = "outside",
            Et = "radial",
            Ut = "right",
            Ot = "top",
            Dt = "triangle",
            Gt = "width",
            Nt = "#fff",
            Ft = "x",
            Ht = "y",
            Xt = .2,
            Wt = function Wt(t, n) {
            var e = this;return e instanceof Wt ? (e.x = t || 0, e.y = n || 0, i) : new Wt(t, n);
        };Wt.fn = Wt.prototype = { clone: function clone() {
                var t = this;return new Wt(t.x, t.y);
            }, equals: function equals(t) {
                return t && t.x === this.x && t.y === this.y;
            }, rotate: function rotate(t, i) {
                var n = this,
                    e = i * Tt,
                    o = st.cos(e),
                    r = st.sin(e),
                    a = t.x,
                    s = t.y,
                    l = n.x,
                    u = n.y;return n.x = h(a + (l - a) * o + (u - s) * r, ft), n.y = h(s + (u - s) * o - (l - a) * r, ft), n;
            }, multiply: function multiply(t) {
                var i = this;return i.x *= t, i.y *= t, i;
            }, distanceTo: function distanceTo(t) {
                var i = this.x - t.x,
                    n = this.y - t.y;return st.sqrt(i * i + n * n);
            } }, Wt.onCircle = function (t, i, n) {
            return i *= Tt, new Wt(t.x - n * st.cos(i), t.y - n * st.sin(i));
        }, _S = function S(t, n, e, o) {
            var r = this;return r instanceof _S ? (r.x1 = t || 0, r.x2 = e || 0, r.y1 = n || 0, r.y2 = o || 0, i) : new _S(t, n, e, o);
        }, _S.fn = _S.prototype = { width: function width() {
                return this.x2 - this.x1;
            }, height: function height() {
                return this.y2 - this.y1;
            }, translate: function translate(t, i) {
                var n = this;return n.x1 += t, n.x2 += t, n.y1 += i, n.y2 += i, n;
            }, move: function move(t, i) {
                var n = this,
                    e = n.height(),
                    o = n.width();return K(t) && (n.x1 = t, n.x2 = n.x1 + o), K(i) && (n.y1 = i, n.y2 = n.y1 + e), n;
            }, wrap: function wrap(t) {
                var i = this;return i.x1 = st.min(i.x1, t.x1), i.y1 = st.min(i.y1, t.y1), i.x2 = st.max(i.x2, t.x2), i.y2 = st.max(i.y2, t.y2), i;
            }, wrapPoint: function wrapPoint(t) {
                return this.wrap(new _S(t.x, t.y, t.x, t.y)), this;
            }, snapTo: function snapTo(t, i) {
                var n = this;return i != Ft && i || (n.x1 = t.x1, n.x2 = t.x2), i != Ht && i || (n.y1 = t.y1, n.y2 = t.y2), n;
            }, alignTo: function alignTo(t, i) {
                var n,
                    e,
                    o = this,
                    r = o.height(),
                    a = o.width(),
                    s = i == Ot || i == ht ? Ht : Ft,
                    l = s == Ht ? r : a;return i === pt ? (n = t.center(), e = o.center(), o.x1 += n.x - e.x, o.y1 += n.y - e.y) : o[s + 1] = i === Ot || i === Vt ? t[s + 1] - l : t[s + 2], o.x2 = o.x1 + a, o.y2 = o.y1 + r, o;
            }, shrink: function shrink(t, i) {
                var n = this;return n.x2 -= t, n.y2 -= i, n;
            }, expand: function expand(t, i) {
                return this.shrink(-t, -i), this;
            }, pad: function pad(t) {
                var i = this,
                    e = n(t);return i.x1 -= e.left, i.x2 += e.right, i.y1 -= e.top, i.y2 += e.bottom, i;
            }, unpad: function unpad(t) {
                var i = this,
                    e = n(t);return e.left = -e.left, e.top = -e.top, e.right = -e.right, e.bottom = -e.bottom, i.pad(e);
            }, clone: function clone() {
                var t = this;return new _S(t.x1, t.y1, t.x2, t.y2);
            }, center: function center() {
                var t = this;return new Wt(t.x1 + t.width() / 2, t.y1 + t.height() / 2);
            }, containsPoint: function containsPoint(t) {
                var i = this;return t.x >= i.x1 && t.x <= i.x2 && t.y >= i.y1 && t.y <= i.y2;
            }, points: function points() {
                var t = this;return [new Wt(t.x1, t.y1), new Wt(t.x2, t.y1), new Wt(t.x2, t.y2), new Wt(t.x1, t.y2)];
            }, getHash: function getHash() {
                var t = this;return [t.x1, t.y1, t.x2, t.y2].join(",");
            }, overlaps: function overlaps(t) {
                return !(t.y2 < this.y1 || this.y2 < t.y1 || t.x2 < this.x1 || this.x2 < t.x1);
            }, rotate: function rotate(t) {
                var i = this,
                    n = i.width(),
                    e = i.height(),
                    o = i.center(),
                    r = o.x,
                    s = o.y,
                    l = a(0, 0, r, s, t),
                    u = a(n, 0, r, s, t),
                    c = a(n, e, r, s, t),
                    h = a(0, e, r, s, t);return n = st.max(l.x, u.x, c.x, h.x) - st.min(l.x, u.x, c.x, h.x), e = st.max(l.y, u.y, c.y, h.y) - st.min(l.y, u.y, c.y, h.y), i.x2 = i.x1 + n, i.y2 = i.y1 + e, i;
            }, toRect: function toRect() {
                return new Z.Rect([this.x1, this.y1], [this.width(), this.height()]);
            }, hasSize: function hasSize() {
                return 0 !== this.width() && 0 !== this.height();
            }, align: function align(t, i, n) {
                var e = this,
                    o = i + 1,
                    r = i + 2,
                    a = i === Ft ? Gt : _t,
                    s = e[a]();l(n, [Vt, Ot]) ? (e[o] = t[o], e[r] = e[o] + s) : l(n, [Ut, ht]) ? (e[r] = t[r], e[o] = e[r] - s) : n == pt && (e[o] = t[o] + (t[a]() - s) / 2, e[r] = e[o] + s);
            } }, A = it.extend({ init: function init(t, i, n, e, o) {
                var r = this;r.c = t, r.ir = i, r.r = n, r.startAngle = e, r.angle = o;
            }, clone: function clone() {
                var t = this;return new A(t.c, t.ir, t.r, t.startAngle, t.angle);
            }, middle: function middle() {
                return this.startAngle + this.angle / 2;
            }, radius: function radius(t, i) {
                var n = this;return i ? n.ir = t : n.r = t, n;
            }, point: function point(t, i) {
                var n = this,
                    e = t * Tt,
                    o = st.cos(e),
                    r = st.sin(e),
                    a = i ? n.ir : n.r,
                    s = h(n.c.x - o * a, ft),
                    l = h(n.c.y - r * a, ft);return new Wt(s, l);
            }, adjacentBox: function adjacentBox(t, i, n) {
                var e = this.clone().expand(t),
                    o = e.middle(),
                    r = e.point(o),
                    a = i / 2,
                    s = n / 2,
                    l = r.x - a,
                    u = r.y - s,
                    c = st.sin(o * Tt),
                    h = st.cos(o * Tt);return st.abs(c) < .9 && (l += a * -h / st.abs(h)), st.abs(h) < .9 && (u += s * -c / st.abs(c)), new _S(l, u, l + i, u + n);
            }, containsPoint: function containsPoint(t) {
                var i = this,
                    n = i.c,
                    e = i.ir,
                    o = i.r,
                    r = i.startAngle,
                    a = i.startAngle + i.angle,
                    s = t.x - n.x,
                    l = t.y - n.y,
                    u = new Wt(s, l),
                    c = i.point(r),
                    p = new Wt(c.x - n.x, c.y - n.y),
                    f = i.point(a),
                    d = new Wt(f.x - n.x, f.y - n.y),
                    x = h(s * s + l * l, ft);return (p.equals(u) || g(p, u)) && !g(d, u) && x >= e * e && x <= o * o;
            }, getBBox: function getBBox() {
                var t,
                    i,
                    n,
                    e = this,
                    o = new _S(Pt, Pt, zt, zt),
                    r = h(e.startAngle % 360),
                    a = h((r + e.angle) % 360),
                    s = e.ir,
                    l = [0, 90, 180, 270, r, a].sort(x),
                    u = ot(r, l),
                    c = ot(a, l);for (t = r == a ? l : u < c ? l.slice(u, c + 1) : [].concat(l.slice(0, c + 1), l.slice(u, l.length)), i = 0; i < t.length; i++) {
                    n = e.point(t[i]), o.wrapPoint(n), o.wrapPoint(n, s);
                }return s || o.wrapPoint(e.c), o;
            }, expand: function expand(t) {
                return this.r += t, this;
            } }), V = A.extend({ init: function init(t, i, n, e) {
                A.fn.init.call(this, t, 0, i, n, e);
            }, expand: function expand(t) {
                return A.fn.expand.call(this, t);
            }, clone: function clone() {
                var t = this;return new V(t.c, t.r, t.startAngle, t.angle);
            }, radius: function radius(t) {
                return A.fn.radius.call(this, t);
            }, point: function point(t) {
                return A.fn.point.call(this, t);
            } }), R = function R() {}, R.fn = R.prototype = { createRing: function createRing(t, i) {
                var n,
                    e = t.startAngle + 180,
                    o = t.angle + e,
                    r = new Z.Point(t.c.x, t.c.y),
                    a = st.max(t.r, 0),
                    s = st.max(t.ir, 0),
                    l = new Z.Arc(r, { startAngle: e, endAngle: o, radiusX: a, radiusY: a }),
                    u = $.Path.fromArc(l, i).close();return s ? (l.radiusX = l.radiusY = s, n = l.pointAt(o), u.lineTo(n.x, n.y), u.arc(o, e, s, s, !0)) : u.lineTo(r.x, r.y), u;
            } }, R.current = new R(), P = it.extend({ init: function init(t) {
                var i = this;i.children = [], i.options = lt({}, i.options, t);
            }, reflow: function reflow(t) {
                var i,
                    n,
                    e,
                    o = this,
                    r = o.children;for (n = 0; n < r.length; n++) {
                    e = r[n], e.reflow(t), i = i ? i.wrap(e.box) : e.box.clone();
                }o.box = i || t;
            }, destroy: function destroy() {
                var t,
                    i = this,
                    n = i.children;for (this.animation && this.animation.destroy(), t = 0; t < n.length; t++) {
                    n[t].destroy();
                }
            }, getRoot: function getRoot() {
                var t = this.parent;return t ? t.getRoot() : null;
            }, getChart: function getChart() {
                var t = this.getRoot();if (t) return t.chart;
            }, translateChildren: function translateChildren(t, i) {
                var n,
                    e = this,
                    o = e.children,
                    r = o.length;for (n = 0; n < r; n++) {
                    o[n].box.translate(t, i);
                }
            }, append: function append() {
                q(this.children, arguments);for (var t = 0; t < arguments.length; t++) {
                    arguments[t].parent = this;
                }
            }, renderVisual: function renderVisual() {
                this.options.visible !== !1 && (this.createVisual(), this.addVisual(), this.renderChildren(), this.createAnimation(), this.renderComplete());
            }, addVisual: function addVisual() {
                this.visual && (this.visual.chartElement = this, this.parent && this.parent.appendVisual(this.visual));
            }, renderChildren: function renderChildren() {
                var t,
                    i = this.children;for (t = 0; t < i.length; t++) {
                    i[t].renderVisual();
                }
            }, createVisual: function createVisual() {
                this.visual = new J.drawing.Group({ zIndex: this.options.zIndex, visible: Q(this.options.visible, !0) });
            }, createAnimation: function createAnimation() {
                this.visual && (this.animation = $.Animation.create(this.visual, this.options.animation));
            }, appendVisual: function appendVisual(t) {
                t.chartElement || (t.chartElement = this), t.options.noclip ? this.clipRoot().visual.append(t) : K(t.options.zIndex) ? this.stackRoot().stackVisual(t) : this.visual ? this.visual.append(t) : this.parent.appendVisual(t);
            }, clipRoot: function clipRoot() {
                return this.parent ? this.parent.clipRoot() : this;
            }, stackRoot: function stackRoot() {
                return this.parent ? this.parent.stackRoot() : this;
            }, stackVisual: function stackVisual(t) {
                var i,
                    n,
                    e,
                    o = t.options.zIndex || 0,
                    r = this.visual.children;for (i = 0; i < r.length && (n = r[i], e = Q(n.options.zIndex, 0), !(e > o)); i++) {}this.visual.insertAt(t, i);
            }, traverse: function traverse(t) {
                var i,
                    n,
                    e = this.children;for (i = 0; i < e.length; i++) {
                    n = e[i], t(n), n.traverse && n.traverse(t);
                }
            }, closest: function closest(t) {
                for (var i = this, n = !1; i && !n;) {
                    n = t(i), n || (i = i.parent);
                }if (n) return i;
            }, renderComplete: t.noop, hasHighlight: function hasHighlight() {
                var t = (this.options || {}).highlight;return !(!this.createHighlight || t && t.visible === !1);
            }, toggleHighlight: function toggleHighlight(i) {
                var n,
                    e = this,
                    o = e._highlight,
                    r = (e.options || {}).highlight,
                    a = (r || {}).visual;if (!o) {
                    if (n = { fill: { color: Nt, opacity: .2 }, stroke: { color: Nt, width: 1, opacity: .2 } }, a) {
                        if (o = e._highlight = a(t.extend(e.highlightVisualArgs(), { createVisual: function createVisual() {
                                return e.createHighlight(n);
                            }, sender: e.getChart(), series: e.series, dataItem: e.dataItem, category: e.category, value: e.value, stackValue: e.stackValue, percentage: e.percentage, runningTotal: e.runningTotal, total: e.total })), !o) return;
                    } else o = e._highlight = e.createHighlight(n);o.options.zIndex = e.options.zIndex, e.appendVisual(o);
                }o.visible(i);
            }, createGradientOverlay: function createGradientOverlay(t, i, n) {
                var e = new $.Path(lt({ stroke: { color: Lt }, fill: this.createGradient(n), closed: t.options.closed }, i));return e.segments.elements(t.segments.elements()), e;
            }, createGradient: function createGradient(t) {
                if (this.parent) return this.parent.createGradient(t);
            } }), z = P.extend({ init: function init(t) {
                var i = this;i.gradients = {}, P.fn.init.call(i, t);
            }, options: { width: wt, height: vt, background: Nt, border: { color: ct, width: 0 }, margin: n(5), zIndex: -2 }, reflow: function reflow() {
                var t,
                    i = this,
                    n = i.options,
                    e = i.children,
                    o = new _S(0, 0, n.width, n.height);for (i.box = o.unpad(n.margin), t = 0; t < e.length; t++) {
                    e[t].reflow(o), o = s(o, e[t].box) || _S();
                }
            }, createVisual: function createVisual() {
                this.visual = new $.Group(), this.createBackground();
            }, createBackground: function createBackground() {
                var t = this.options,
                    i = t.border || {},
                    n = this.box.clone().pad(t.margin).unpad(i.width),
                    e = $.Path.fromRect(n.toRect(), { stroke: { color: i.width ? i.color : "", width: i.width, dashType: i.dashType }, fill: { color: t.background, opacity: t.opacity }, zIndex: -10 });this.visual.append(e);
            }, getRoot: function getRoot() {
                return this;
            }, createGradient: function createGradient(t) {
                var i,
                    n,
                    e = this.gradients,
                    o = W.objectKey(t),
                    r = J.Gradients[t.gradient];return e[o] ? i = e[o] : (n = lt({}, r, t), "linear" == r.type ? i = new $.LinearGradient(n) : (t.innerRadius && (n.stops = T(n)), i = new $.RadialGradient(n), i.supportVML = r.supportVML !== !1), e[o] = i), i;
            } }), C = P.extend({ options: { align: Vt, vAlign: Ot, margin: {}, padding: {}, border: { color: ct, width: 0 }, background: "", shrinkToFit: !1, width: 0, height: 0, visible: !0 }, reflow: function reflow(t) {
                function i() {
                    s.align(t, Ft, l.align), s.align(t, Ht, l.vAlign), s.paddingBox = e.clone().unpad(f).unpad(x);
                }var e,
                    o,
                    r,
                    a,
                    s = this,
                    l = s.options,
                    u = l.width,
                    c = l.height,
                    h = u && c,
                    p = l.shrinkToFit,
                    f = n(l.margin),
                    d = n(l.padding),
                    x = l.border.width,
                    m = s.children;for (o = t.clone(), h && (o.x2 = o.x1 + u, o.y2 = o.y1 + c), p && o.unpad(f).unpad(x).unpad(d), P.fn.reflow.call(s, o), e = h ? s.box = _S(0, 0, u, c) : s.box, p && h ? (i(), o = s.contentBox = s.paddingBox.clone().unpad(d)) : (o = s.contentBox = e.clone(), e.pad(d).pad(x).pad(f), i()), s.translateChildren(e.x1 - o.x1 + f.left + x + d.left, e.y1 - o.y1 + f.top + x + d.top), r = 0; r < m.length; r++) {
                    a = m[r], a.reflow(a.box);
                }
            }, align: function align(t, i, n) {
                this.box.align(t, i, n);
            }, hasBox: function hasBox() {
                var t = this.options;return t.border.width || t.background;
            }, createVisual: function createVisual() {
                P.fn.createVisual.call(this);var t = this.options;t.visible && this.hasBox() && this.visual.append($.Path.fromRect(this.paddingBox.toRect(), this.visualStyle()));
            }, visualStyle: function visualStyle() {
                var t = this,
                    i = t.options,
                    n = i.border || {};return { stroke: { width: n.width, color: n.color, opacity: Q(n.opacity, i.opacity), dashType: n.dashType }, fill: { color: i.background, opacity: i.opacity }, cursor: i.cursor };
            } }), L = P.extend({ init: function init(t, i) {
                var n = this;P.fn.init.call(n, i), n.content = t, n.reflow(_S());
            }, options: { font: gt, color: ct, align: Vt, vAlign: "" }, reflow: function reflow(t) {
                var i,
                    n = this,
                    e = n.options;i = e.size = tt(n.content, { font: e.font }), n.baseline = i.baseline, n.box = _S(t.x1, t.y1, t.x1 + i.width, t.y1 + i.height);
            }, createVisual: function createVisual() {
                var t = this.options;this.visual = new $.Text(this.content, this.box.toRect().topLeft(), { font: t.font, fill: { color: t.color, opacity: t.opacity }, cursor: t.cursor });
            } }), B = P.extend({ init: function init(t) {
                P.fn.init.call(this, t), this._initDirection();
            }, _initDirection: function _initDirection() {
                var t = this.options;t.vertical ? (this.groupAxis = Ft, this.elementAxis = Ht, this.groupSizeField = Gt, this.elementSizeField = _t, this.groupSpacing = t.spacing, this.elementSpacing = t.vSpacing) : (this.groupAxis = Ht, this.elementAxis = Ft, this.groupSizeField = _t, this.elementSizeField = Gt, this.groupSpacing = t.vSpacing, this.elementSpacing = t.spacing);
            }, options: { vertical: !0, wrap: !0, vSpacing: 0, spacing: 0 }, reflow: function reflow(t) {
                this.box = t.clone(), this.reflowChildren();
            }, reflowChildren: function reflowChildren() {
                var t,
                    i,
                    n,
                    e,
                    o,
                    r,
                    a,
                    s,
                    l,
                    u,
                    c = this,
                    h = c.box,
                    p = c.elementAxis,
                    f = c.groupAxis,
                    d = c.elementSizeField,
                    x = c.groupSizeField,
                    m = c.groupOptions(),
                    g = m.groups,
                    v = g.length,
                    y = h[f + 1] + c.alignStart(m.groupsSize, h[x]()),
                    b = y;if (v) {
                    for (a = 0; a < v; a++) {
                        for (n = g[a], e = n.groupElements, o = e.length, t = h[p + 1], r = 0; r < o; r++) {
                            s = e[r], u = c.elementSize(s), i = b + c.alignStart(u[x], n.groupSize), l = _S(), l[f + 1] = i, l[f + 2] = i + u[x], l[p + 1] = t, l[p + 2] = t + u[d], s.reflow(l), t += u[d] + c.elementSpacing;
                        }b += n.groupSize + c.groupSpacing;
                    }h[f + 1] = y, h[f + 2] = y + m.groupsSize, h[p + 2] = h[p + 1] + m.maxGroupElementsSize;
                }
            }, alignStart: function alignStart(t, i) {
                var n = 0,
                    e = this.options.align;return e == Ut || e == ht ? n = i - t : e == pt && (n = (i - t) / 2), n;
            }, groupOptions: function groupOptions() {
                var t,
                    i,
                    n = this,
                    e = n.box,
                    o = n.children,
                    r = o.length,
                    a = this.elementSizeField,
                    s = this.groupSizeField,
                    l = this.elementSpacing,
                    u = this.groupSpacing,
                    c = h(e[a]()),
                    p = 0,
                    f = 0,
                    d = 0,
                    x = 0,
                    m = [],
                    g = [],
                    v = 0;for (p = 0; p < r; p++) {
                    i = o[p], i.box || i.reflow(e), t = this.elementSize(i), n.options.wrap && h(d + l + t[a]) > c && (m.push({ groupElements: g, groupSize: f, groupElementsSize: d }), v = st.max(v, d), x += u + f, f = 0, d = 0, g = []), f = st.max(f, t[s]), d > 0 && (d += l), d += t[a], g.push(i);
                }return m.push({ groupElements: g, groupSize: f, groupElementsSize: d }), v = st.max(v, d), x += f, { groups: m, groupsSize: x, maxGroupElementsSize: v };
            }, elementSize: function elementSize(t) {
                return { width: t.box.width(), height: t.box.height() };
            }, createVisual: et }), I = C.extend({ ROWS_SPLIT_REGEX: /\n|\\n/m, init: function init(t, i) {
                var n = this;n.content = t, C.fn.init.call(n, i), n._initContainer(), n.reflow(_S());
            }, _initContainer: function _initContainer() {
                var t,
                    i,
                    n = this,
                    e = n.options,
                    o = (n.content + "").split(n.ROWS_SPLIT_REGEX),
                    r = new B({ vertical: !0, align: e.align, wrap: !1 }),
                    a = lt({}, e, { opacity: 1, animation: null });for (n.container = r, n.append(r), i = 0; i < o.length; i++) {
                    t = new L(at(o[i]), a), r.append(t);
                }
            }, reflow: function reflow(t) {
                var i,
                    e,
                    o,
                    r = this.options,
                    a = r.visual;this.container.options.align = r.align, a && !this._boxReflow ? (t.hasSize() || (this._boxReflow = !0, this.reflow(t), this._boxReflow = !1, t = this.box), this.visual = a(this.visualContext(t)), i = t, this.visual && (i = k(this.visual.clippedBBox() || new Z.Rect()), this.visual.options.zIndex = r.zIndex, this.visual.options.noclip = r.noclip), this.box = this.contentBox = this.paddingBox = i) : (C.fn.reflow.call(this, t), r.rotation && (e = n(r.margin), o = this.box.unpad(e), this.targetBox = t, this.normalBox = o.clone(), o = this.rotate(), o.translate(e.left - e.right, e.top - e.bottom), this.rotatedBox = o.clone(), o.pad(e)));
            }, createVisual: function createVisual() {
                var t,
                    i = this.options;i.visible && (this.visual = new J.drawing.Group({ transform: this.rotationTransform(), zIndex: i.zIndex, noclip: i.noclip }), this.hasBox() && (t = $.Path.fromRect(this.paddingBox.toRect(), this.visualStyle()), this.visual.append(t)));
            }, renderVisual: function renderVisual() {
                this.options.visual ? (this.addVisual(), this.createAnimation()) : C.fn.renderVisual.call(this);
            }, visualOptions: function visualOptions() {
                var t = this.options;return { background: t.background, border: t.border, color: t.color, font: t.font, margin: t.margin, padding: t.padding, visible: t.visible };
            }, visualContext: function visualContext(t) {
                var i = this;return { text: i.content, rect: t.toRect(), sender: this.getChart(), options: i.visualOptions(), createVisual: function createVisual() {
                        return i._boxReflow = !0, i.reflow(t), i._boxReflow = !1, i.getDefaultVisual();
                    } };
            }, getDefaultVisual: function getDefaultVisual() {
                this.createVisual(), this.renderChildren();var t = this.visual;return delete this.visual, t;
            }, rotate: function rotate() {
                var t = this.options;return this.box.rotate(t.rotation), this.align(this.targetBox, Ft, t.align), this.align(this.targetBox, Ht, t.vAlign), this.box;
            }, rotationTransform: function rotationTransform() {
                var t,
                    i,
                    n,
                    e,
                    o = this.options.rotation;return o ? (t = this.normalBox.center(), i = t.x, n = t.y, e = this.rotatedBox.center(), Z.transform().translate(e.x - i, e.y - n).rotate(o, [i, n])) : null;
            } }), j = P.extend({ init: function init(t) {
                var i = this;P.fn.init.call(i, t), t = i.options, i.append(new I(t.text, lt({}, t, { vAlign: t.position })));
            }, options: { color: ct, position: Ot, align: pt, margin: n(5), padding: n(5) }, reflow: function reflow(t) {
                var i = this;P.fn.reflow.call(i, t), i.box.snapTo(t, Ft);
            } }), j.buildTitle = function (t, i, n) {
            var e;return "string" == typeof t && (t = { text: t }), t = lt({ visible: !0 }, n, t), t && t.visible && t.text && (e = new j(t), i.append(e)), e;
        }, E = I.extend({ init: function init(t, i, n, e, o) {
                var r = this;r.text = i, r.value = t, r.index = n, r.dataItem = e, I.fn.init.call(r, i, o);
            }, visualContext: function visualContext(t) {
                var i = I.fn.visualContext.call(this, t);return i.value = this.value, i.dataItem = this.dataItem, i.format = this.options.format, i.culture = this.options.culture, i;
            }, click: function click(t, i) {
                var n = this;t.trigger(ut, { element: _(i), value: n.value, text: n.text, index: n.index, dataItem: n.dataItem, axis: n.parent.options });
            }, rotate: function rotate() {
                var t, i;return this.options.alignRotation != pt ? (t = this.normalBox.toRect(), i = this.rotationTransform(), this.box = k(t.bbox(i.matrix()))) : I.fn.rotate.call(this), this.box;
            }, rotationTransform: function rotationTransform() {
                var t,
                    i,
                    n,
                    e,
                    o,
                    r,
                    a,
                    s,
                    l,
                    u,
                    c,
                    p,
                    f,
                    d,
                    x,
                    m,
                    g,
                    v,
                    y = this.options,
                    b = y.rotation;return b ? y.alignRotation == pt ? I.fn.rotationTransform.call(this) : (t = Z.transform().rotate(b).matrix(), i = this.normalBox.toRect(), n = this.targetBox.toRect(), e = y.rotationOrigin || Ot, o = e == Ot || e == ht ? Ft : Ht, r = e == Ot || e == ht ? Ht : Ft, a = e == Ot || e == Vt ? n.origin : n.bottomRight(), s = i.topLeft().transformCopy(t), l = i.topRight().transformCopy(t), u = i.bottomRight().transformCopy(t), c = i.bottomLeft().transformCopy(t), p = Z.Rect.fromPoints(s, l, u, c), f = {}, f[r] = n.origin[r] - p.origin[r], d = st.abs(s[r] + f[r] - a[r]), x = st.abs(l[r] + f[r] - a[r]), h(d, bt) === h(x, bt) ? (m = s, g = l) : x < d ? (m = l, g = u) : (m = s, g = c), v = m[o] + (g[o] - m[o]) / 2, f[o] = n.center()[o] - v, Z.transform().translate(f.x, f.y).rotate(b)) : null;
            } }), U = P.extend({ init: function init(t) {
                var i = this;P.fn.init.call(i, t), i.options.visible || (i.options = lt({}, i.options, { labels: { visible: !1 }, line: { visible: !1 }, margin: 0, majorTickSize: 0, minorTickSize: 0 })), i.options.minorTicks = lt({}, { color: i.options.line.color, width: i.options.line.width, visible: i.options.minorTickType != Lt }, i.options.minorTicks, { size: i.options.minorTickSize, align: i.options.minorTickType }), i.options.majorTicks = lt({}, { color: i.options.line.color, width: i.options.line.width, visible: i.options.majorTickType != Lt }, i.options.majorTicks, { size: i.options.majorTickSize, align: i.options.majorTickType }), this.options._deferLabels || i.createLabels(), i.createTitle(), i.createNotes();
            }, options: { labels: { visible: !0, rotation: 0, mirror: !1, step: 1, skip: 0 }, line: { width: 1, color: ct, visible: !0 }, title: { visible: !0, position: pt }, majorTicks: { align: jt, size: 4, skip: 0, step: 1 }, minorTicks: { align: jt, size: 3, skip: 0, step: 1 }, axisCrossingValue: 0, majorTickType: jt, minorTickType: Lt, majorGridLines: { skip: 0, step: 1 }, minorGridLines: { visible: !1, width: 1, color: ct, skip: 0, step: 1 }, margin: 5, visible: !0, reverse: !1, justified: !0, notes: { label: { text: "" } }, _alignLines: !0, _deferLabels: !1 }, labelsRange: function labelsRange() {
                return { min: this.options.labels.skip, max: this.labelsCount() };
            }, createLabels: function createLabels() {
                var i,
                    n,
                    e,
                    o,
                    r = this,
                    a = r.options,
                    s = a.vertical ? Ut : pt,
                    l = lt({}, a.labels, { align: s, zIndex: a.zIndex }),
                    u = st.max(1, l.step);if (r.children = t.grep(r.children, function (t) {
                    return !(t instanceof E);
                }), r.labels = [], l.visible) for (i = r.labelsRange(), n = l.rotation, rt(n) && (l.alignRotation = n.align, l.rotation = n.angle), "auto" == l.rotation && (l.rotation = 0, a.autoRotateLabels = !0), o = i.min; o < i.max; o += u) {
                    e = r.createAxisLabel(o, l), e && (r.append(e), r.labels.push(e));
                }
            }, lineBox: function lineBox() {
                var t = this,
                    i = t.options,
                    n = t.box,
                    e = i.vertical,
                    o = i.labels.mirror,
                    r = o ? n.x1 : n.x2,
                    a = o ? n.y2 : n.y1,
                    s = i.line.width || 0;return e ? _S(r, n.y1, r, n.y2 - s) : _S(n.x1, a, n.x2 - s, a);
            }, createTitle: function createTitle() {
                var t,
                    i = this,
                    n = i.options,
                    e = lt({ rotation: n.vertical ? -90 : 0, text: "", zIndex: 1, visualSize: !0 }, n.title);e.visible && e.text && (t = new I(e.text, e), i.append(t), i.title = t);
            }, createNotes: function createNotes() {
                var t,
                    i,
                    n,
                    e = this,
                    o = e.options,
                    r = o.notes,
                    a = r.data || [];for (e.notes = [], t = 0; t < a.length; t++) {
                    i = lt({}, r, a[t]), i.value = e.parseNoteValue(i.value), n = new O(i.value, i.label.text, i, null, null, i), n.options.visible && (K(n.options.position) ? o.vertical && !l(n.options.position, [Vt, Ut]) ? n.options.position = o.reverse ? Vt : Ut : o.vertical || l(n.options.position, [Ot, ht]) || (n.options.position = o.reverse ? ht : Ot) : n.options.position = o.vertical ? o.reverse ? Vt : Ut : o.reverse ? ht : Ot, e.append(n), e.notes.push(n));
                }
            }, parseNoteValue: function parseNoteValue(t) {
                return t;
            }, renderVisual: function renderVisual() {
                P.fn.renderVisual.call(this), this.createPlotBands();
            }, createVisual: function createVisual() {
                P.fn.createVisual.call(this), this.createBackground(), this.createLine();
            }, gridLinesVisual: function gridLinesVisual() {
                var t = this._gridLines;return t || (t = this._gridLines = new $.Group({ zIndex: -2 }), this.appendVisual(this._gridLines)), t;
            }, createTicks: function createTicks(t) {
                function i(i, n, o) {
                    var s,
                        u = i.length,
                        c = st.max(1, n.step);if (n.visible) for (s = n.skip; s < u; s += c) {
                        K(o) && s % o === 0 || (l.tickX = a ? r.x2 : r.x2 - n.size, l.tickY = a ? r.y1 - n.size : r.y1, l.position = i[s], t.append(e(l, n)));
                    }
                }var n = this,
                    o = n.options,
                    r = n.lineBox(),
                    a = o.labels.mirror,
                    s = o.majorTicks.visible ? o.majorUnit : 0,
                    l = { vertical: o.vertical };i(n.getMajorTickPositions(), o.majorTicks), i(n.getMinorTickPositions(), o.minorTicks, s / o.minorUnit);
            }, createLine: function createLine() {
                var t,
                    i,
                    n = this,
                    e = n.options,
                    o = e.line,
                    r = n.lineBox();o.width > 0 && o.visible && (t = new $.Path({ stroke: { width: o.width, color: o.color, dashType: o.dashType } }), t.moveTo(r.x1, r.y1).lineTo(r.x2, r.y2), e._alignLines && w(t), i = this._lineGroup = new $.Group(), i.append(t), this.visual.append(i), this.createTicks(i));
            }, getActualTickSize: function getActualTickSize() {
                var t = this,
                    i = t.options,
                    n = 0;return i.majorTicks.visible && i.minorTicks.visible ? n = st.max(i.majorTicks.size, i.minorTicks.size) : i.majorTicks.visible ? n = i.majorTicks.size : i.minorTicks.visible && (n = i.minorTicks.size), n;
            }, createBackground: function createBackground() {
                var t = this,
                    i = t.options,
                    n = i.background,
                    e = t.box;n && (t._backgroundPath = $.Path.fromRect(e.toRect(), { fill: { color: n }, stroke: null }), this.visual.append(t._backgroundPath));
            }, createPlotBands: function createPlotBands() {
                var i,
                    n,
                    e,
                    o,
                    r,
                    a,
                    s = this,
                    l = s.options,
                    u = l.plotBands || [],
                    c = l.vertical,
                    h = s.plotArea;0 !== u.length && (r = this._plotbandGroup = new $.Group({ zIndex: -1 }), a = t.grep(s.pane.axes, function (t) {
                    return t.options.vertical !== s.options.vertical;
                })[0], t.each(u, function (t, l) {
                    var u, p;e = Q(l.from, zt), o = Q(l.to, Pt), c ? (i = (a || h.axisX).lineBox(), n = s.getSlot(l.from, l.to, !0)) : (i = s.getSlot(l.from, l.to, !0), n = (a || h.axisY).lineBox()), 0 !== i.width() && 0 !== n.height() && (u = new Z.Rect([i.x1, n.y1], [i.width(), n.height()]), p = $.Path.fromRect(u, { fill: { color: l.color, opacity: l.opacity }, stroke: null }), r.append(p));
                }), s.appendVisual(r));
            }, createGridLines: function createGridLines(t) {
                function i(t, i, e) {
                    var r,
                        s = t.length,
                        u = st.max(1, i.step);if (i.visible) for (r = i.skip; r < s; r += u) {
                        n = h(t[r]), l(n, x) || r % e === 0 || a && f === n || (d.position = n, m.append(o(d, i)), x.push(n));
                    }
                }var n,
                    e = this,
                    r = e.options,
                    a = t.options.line.visible,
                    s = r.majorGridLines,
                    u = s.visible ? r.majorUnit : 0,
                    c = r.vertical,
                    p = t.lineBox(),
                    f = p[c ? "y1" : "x1"],
                    d = { lineStart: p[c ? "x1" : "y1"], lineEnd: p[c ? "x2" : "y2"], vertical: c },
                    x = [],
                    m = this.gridLinesVisual();return i(e.getMajorTickPositions(), r.majorGridLines), i(e.getMinorTickPositions(), r.minorGridLines, u / r.minorUnit), m.children;
            }, reflow: function reflow(t) {
                var i,
                    n,
                    e = this,
                    o = e.options,
                    r = o.vertical,
                    a = e.labels,
                    s = a.length,
                    l = e.title,
                    u = r ? Gt : _t,
                    c = l ? l.box[u]() : 0,
                    h = e.getActualTickSize() + o.margin + c,
                    p = 0,
                    f = (this.getRoot() || {}).box || t,
                    d = f[u]();for (n = 0; n < s; n++) {
                    i = a[n].box[u](), i + h <= d && (p = st.max(p, i));
                }e.box = r ? _S(t.x1, t.y1, t.x1 + p + h, t.y2) : _S(t.x1, t.y1, t.x2, t.y1 + p + h), e.arrangeTitle(), e.arrangeLabels(), e.arrangeNotes();
            }, getLabelsTickPositions: function getLabelsTickPositions() {
                return this.getMajorTickPositions();
            }, labelTickIndex: function labelTickIndex(t) {
                return t.index;
            }, arrangeLabels: function arrangeLabels() {
                var t,
                    i,
                    n,
                    e,
                    o,
                    r,
                    a,
                    s,
                    l,
                    u,
                    c,
                    h = this,
                    p = h.options,
                    f = h.labels,
                    d = !p.justified,
                    x = p.vertical,
                    m = h.lineBox(),
                    g = p.labels.mirror,
                    v = h.getLabelsTickPositions(),
                    y = h.getActualTickSize() + p.margin;for (n = 0; n < f.length; n++) {
                    e = f[n], o = h.labelTickIndex(e), r = x ? e.box.height() : e.box.width(), a = v[o] - r / 2, x ? (d && (s = v[o], l = v[o + 1], u = s + (l - s) / 2, a = u - r / 2), c = m.x2, g ? (c += y, e.options.rotationOrigin = Vt) : (c -= y + e.box.width(), e.options.rotationOrigin = Ut), t = e.box.move(c, a)) : (d ? (s = v[o], l = v[o + 1]) : (s = a, l = a + r), i = m.y1, g ? (i -= y + e.box.height(), e.options.rotationOrigin = ht) : (i += y, e.options.rotationOrigin = Ot), t = _S(s, i, l, i + e.box.height())), e.reflow(t);
                }
            }, autoRotateLabels: function autoRotateLabels() {
                var t, i, n, e, o, r;if (this.options.autoRotateLabels && !this.options.vertical) {
                    for (t = this.getMajorTickPositions(), i = this.labels, r = 0; r < i.length; r++) {
                        if (o = t[r + 1] - t[r], n = i[r].box, n.width() > o) {
                            if (n.height() > o) {
                                e = -90;break;
                            }e = -45;
                        }
                    }if (e) {
                        for (r = 0; r < i.length; r++) {
                            i[r].options.rotation = e, i[r].reflow(_S());
                        }return !0;
                    }
                }
            }, arrangeTitle: function arrangeTitle() {
                var t = this,
                    i = t.options,
                    n = i.labels.mirror,
                    e = i.vertical,
                    o = t.title;o && (e ? (o.options.align = n ? Ut : Vt, o.options.vAlign = o.options.position) : (o.options.align = o.options.position, o.options.vAlign = n ? Ot : ht), o.reflow(t.box));
            }, arrangeNotes: function arrangeNotes() {
                var t,
                    i,
                    n,
                    e,
                    o = this;for (t = 0; t < o.notes.length; t++) {
                    i = o.notes[t], e = i.options.value, K(e) ? (o.shouldRenderNote(e) ? i.show() : i.hide(), n = o.getSlot(e)) : i.hide(), i.reflow(n || o.lineBox());
                }
            }, alignTo: function alignTo(t) {
                var i = this,
                    n = t.lineBox(),
                    e = i.options.vertical,
                    o = e ? Ht : Ft;i.box.snapTo(n, o), e ? i.box.shrink(0, i.lineBox().height() - n.height()) : i.box.shrink(i.lineBox().width() - n.width(), 0), i.box[o + 1] -= i.lineBox()[o + 1] - n[o + 1], i.box[o + 2] -= i.lineBox()[o + 2] - n[o + 2];
            }, axisLabelText: function axisLabelText(t, i, n) {
                var e,
                    o = t;return n.template ? (e = nt(n.template), o = e({ value: t, dataItem: i, format: n.format, culture: n.culture })) : n.format && (o = n.format.match(kt) ? X.format(n.format, t) : X.toString(t, n.format, n.culture)), o;
            }, slot: function slot(t, i, n) {
                var e = this.getSlot(t, i, n);if (e) return e.toRect();
            }, contentBox: function contentBox() {
                var t = this.box.clone(),
                    i = this.labels;return i.length && (i[0].options.visible && t.wrap(i[0].box), Y(i).options.visible && t.wrap(Y(i).box)), t;
            }, limitRange: function limitRange(t, i, n, e, o) {
                var r,
                    a = this.options;if (!(t < n && o < 0 && (!K(a.min) || a.min <= n) || e < i && o > 0 && (!K(a.max) || e <= a.max))) return i < n && o > 0 || e < t && o < 0 ? { min: t, max: i } : (r = i - t, t < n ? (t = W.limitValue(t, n, e), i = W.limitValue(t + r, n + r, e)) : i > e && (i = W.limitValue(i, n, e), t = W.limitValue(i - r, n, e - r)), { min: t, max: i });
            }, valueRange: function valueRange() {
                return { min: this.seriesMin, max: this.seriesMax };
            } }), O = C.extend({ init: function init(t, i, n, e, o, r) {
                var a = this;C.fn.init.call(a, r), a.value = t, a.text = i, a.dataItem = n, a.category = e, a.series = o, a.render();
            }, options: { icon: { visible: !0, type: xt }, label: { position: At, visible: !0, align: pt, vAlign: pt }, line: { visible: !0 }, visible: !0, position: Ot, zIndex: 2 }, hide: function hide() {
                this.options.visible = !1;
            }, show: function show() {
                this.options.visible = !0;
            }, render: function render() {
                var t,
                    i,
                    n,
                    e,
                    o = this,
                    r = o.options,
                    a = r.label,
                    s = o.text,
                    l = r.icon,
                    u = l.size,
                    c = _S();r.visible && (K(a) && a.visible && (a.template ? (e = nt(a.template), s = e({ dataItem: o.dataItem, category: o.category, value: o.value, text: s, series: o.series })) : a.format && (s = m(a.format, s)), o.label = new I(s, lt({}, a)), a.position !== At || K(u) || (l.type === xt ? u = st.max(o.label.box.width(), o.label.box.height()) : (i = o.label.box.width(), n = o.label.box.height()), c.wrap(o.label.box))), l.width = i || u || yt, l.height = n || u || yt, t = new D(lt({}, l)), o.marker = t, o.append(t), o.label && o.append(o.label), t.reflow(_S()), o.wrapperBox = c.wrap(t.box));
            }, reflow: function reflow(t) {
                var i,
                    n,
                    e,
                    o = this,
                    r = o.options,
                    a = t.center(),
                    s = o.wrapperBox,
                    u = r.line.length,
                    c = r.position,
                    h = o.label,
                    p = o.marker;r.visible && (l(c, [Vt, Ut]) ? c === Vt ? (e = s.alignTo(t, c).translate(-u, t.center().y - s.center().y), r.line.visible && (i = [t.x1, a.y], o.linePoints = [i, [e.x2, a.y]], n = e.clone().wrapPoint(i))) : (e = s.alignTo(t, c).translate(u, t.center().y - s.center().y), r.line.visible && (i = [t.x2, a.y], o.linePoints = [i, [e.x1, a.y]], n = e.clone().wrapPoint(i))) : c === ht ? (e = s.alignTo(t, c).translate(t.center().x - s.center().x, u), r.line.visible && (i = [a.x, t.y2], o.linePoints = [i, [a.x, e.y1]], n = e.clone().wrapPoint(i))) : (e = s.alignTo(t, c).translate(t.center().x - s.center().x, -u), r.line.visible && (i = [a.x, t.y1], o.linePoints = [i, [a.x, e.y2]], n = e.clone().wrapPoint(i))), p && p.reflow(e), h && (h.reflow(e), p && (r.label.position === jt && h.box.alignTo(p.box, c), h.reflow(h.box))), o.contentBox = e, o.targetBox = t, o.box = n || e);
            }, createVisual: function createVisual() {
                C.fn.createVisual.call(this), this.visual.options.noclip = this.options.noclip, this.options.visible && this.createLine();
            }, renderVisual: function renderVisual() {
                var t = this,
                    i = t.options,
                    n = i.visual;i.visible && n ? (t.visual = n({ dataItem: t.dataItem, category: t.category, value: t.value, text: t.text, sender: t.getChart(), series: t.series, rect: t.targetBox.toRect(), options: { background: i.background, border: i.background, icon: i.icon, label: i.label, line: i.line, position: i.position, visible: i.visible }, createVisual: function createVisual() {
                        t.createVisual(), t.renderChildren();var i = t.visual;return delete t.visual, i;
                    } }), t.addVisual()) : C.fn.renderVisual.call(t);
            }, createLine: function createLine() {
                var t,
                    i = this.options.line;this.linePoints && (t = $.Path.fromPoints(this.linePoints, { stroke: { color: i.color, width: i.width, dashType: i.dashType } }), w(t), this.visual.append(t));
            }, click: function click(t, i) {
                var n = this.eventArgs(i);t.trigger(Bt, n) || i.preventDefault();
            }, hover: function hover(t, i) {
                var n = this.eventArgs(i);t.trigger(It, n) || i.preventDefault();
            }, leave: function leave(t) {
                t._unsetActivePoint();
            }, eventArgs: function eventArgs(t) {
                var i = this,
                    n = i.options;return { element: _(t), text: K(n.label) ? n.label.text : "", dataItem: i.dataItem, series: i.series, value: i.value, category: i.category, visual: i.visual };
            } }), D = C.extend({ init: function init(t, i) {
                this.pointData = i, C.fn.init.call(this, t);
            }, options: { type: xt, align: pt, vAlign: pt }, getElement: function getElement() {
                var t,
                    i,
                    n = this,
                    e = n.options,
                    o = e.type,
                    r = e.rotation,
                    a = n.paddingBox,
                    s = a.center(),
                    l = a.width() / 2;if (e.visible && n.hasBox()) return i = n.visualStyle(), o === xt ? t = new $.Circle(new Z.Circle([h(a.x1 + l, ft), h(a.y1 + a.height() / 2, ft)], l), i) : o === Dt ? t = $.Path.fromPoints([[a.x1 + l, a.y1], [a.x1, a.y2], [a.x2, a.y2]], i).close() : o === mt ? (t = new $.MultiPath(i), t.moveTo(a.x1, a.y1).lineTo(a.x2, a.y2), t.moveTo(a.x1, a.y2).lineTo(a.x2, a.y1)) : t = $.Path.fromRect(a.toRect(), i), r && t.transform(Z.transform().rotate(-r, [s.x, s.y])), t.options.zIndex = this.options.zIndex, t;
            }, createElement: function createElement() {
                var t,
                    i = this,
                    n = i.options.visual,
                    e = i.pointData || {};return t = n ? n({ value: e.value, dataItem: e.dataItem, sender: i.getChart(), series: e.series, category: e.category, rect: i.paddingBox.toRect(), options: i.visualOptions(), createVisual: function createVisual() {
                        return i.getElement();
                    } }) : i.getElement();
            }, visualOptions: function visualOptions() {
                var t = this.options;return { background: t.background, border: t.border, margin: t.margin, padding: t.padding, type: t.type, size: t.width, visible: t.visible };
            }, createVisual: function createVisual() {
                this.visual = this.createElement();
            } }), G = U.extend({ init: function init(t, i, n) {
                var e = this,
                    o = e.initDefaults(t, i, n);this.seriesMin = t, this.seriesMax = i, U.fn.init.call(e, o);
            }, startValue: function startValue() {
                return 0;
            }, options: { type: "numeric", min: 0, max: 1, vertical: !0, majorGridLines: { visible: !0, width: 1, color: ct }, labels: { format: "#.####################" }, zIndex: 1 }, initDefaults: function initDefaults(t, i, n) {
                var e,
                    o = this,
                    a = n.narrowRange,
                    s = o.autoAxisMin(t, i, a),
                    l = o.autoAxisMax(t, i, a),
                    h = r(s, l),
                    p = { majorUnit: h };return n.roundToMajorUnit !== !1 && (s < 0 && f(s, h, 1 / 3) && (s -= h), l > 0 && f(l, h, 1 / 3) && (l += h)), p.min = c(s, h), p.max = u(l, h), this.totalMin = K(n.min) ? st.min(p.min, n.min) : p.min, this.totalMax = K(n.max) ? st.max(p.max, n.max) : p.max, this.totalMajorUnit = h, n && (e = K(n.min) || K(n.max), e && n.min === n.max && (n.min > 0 ? n.min = 0 : n.max = 1), n.majorUnit ? (p.min = c(p.min, n.majorUnit), p.max = u(p.max, n.majorUnit)) : e && (n = lt(p, n), p.majorUnit = r(n.min, n.max))), p.minorUnit = (n.majorUnit || p.majorUnit) / 5, lt(p, n);
            }, range: function range() {
                var t = this.options;return { min: t.min, max: t.max };
            }, autoAxisMax: function autoAxisMax(t, i, n) {
                var e, o;if (!t && !i) return 1;if (t <= 0 && i <= 0) {
                    if (i = t == i ? 0 : i, o = st.abs((i - t) / i), n === !1 || !n && o > Xt) return 0;e = st.min(0, i - (t - i) / 2);
                } else t = t == i ? 0 : t, e = i;return e;
            }, autoAxisMin: function autoAxisMin(t, i, n) {
                var e, o;if (!t && !i) return 0;if (t >= 0 && i >= 0) {
                    if (t = t == i ? 0 : t, o = (i - t) / i, n === !1 || !n && o > Xt) return 0;e = st.max(0, t - (i - t) / 2);
                } else i = t == i ? 0 : i, e = t;return e;
            }, getDivisions: function getDivisions(t) {
                if (0 === t) return 1;var i = this.options,
                    n = i.max - i.min;return st.floor(h(n / t, ft)) + 1;
            }, getTickPositions: function getTickPositions(t, i) {
                var n,
                    e = this,
                    o = e.options,
                    r = o.vertical,
                    a = o.reverse,
                    s = e.lineBox(),
                    l = r ? s.height() : s.width(),
                    u = o.max - o.min,
                    c = l / u,
                    p = t * c,
                    f = 0,
                    d = e.getDivisions(t),
                    x = (r ? -1 : 1) * (a ? -1 : 1),
                    m = 1 === x ? 1 : 2,
                    g = s[(r ? Ht : Ft) + m],
                    v = [];for (i && (f = i / t), n = 0; n < d; n++) {
                    n % f !== 0 && v.push(h(g, ft)), g += p * x;
                }return v;
            }, getMajorTickPositions: function getMajorTickPositions() {
                var t = this;return t.getTickPositions(t.options.majorUnit);
            }, getMinorTickPositions: function getMinorTickPositions() {
                var t = this;return t.getTickPositions(t.options.minorUnit);
            }, getSlot: function getSlot(t, i, n) {
                var e,
                    o,
                    r = this,
                    a = r.options,
                    s = a.reverse,
                    l = a.vertical,
                    u = l ? Ht : Ft,
                    c = r.lineBox(),
                    h = c[u + (s ? 2 : 1)],
                    p = l ? c.height() : c.width(),
                    f = s ? -1 : 1,
                    d = f * (p / (a.max - a.min)),
                    x = new _S(c.x1, c.y1, c.x1, c.y1);return K(t) || (t = i || 0), K(i) || (i = t || 0), n && (t = st.max(st.min(t, a.max), a.min), i = st.max(st.min(i, a.max), a.min)), l ? (e = a.max - st.max(t, i), o = a.max - st.min(t, i)) : (e = st.min(t, i) - a.min, o = st.max(t, i) - a.min), x[u + 1] = M(h + d * (s ? o : e)), x[u + 2] = M(h + d * (s ? e : o)), x;
            }, getValue: function getValue(t) {
                var i,
                    n = this,
                    e = n.options,
                    o = e.reverse,
                    r = e.vertical,
                    a = 1 * e.max,
                    s = 1 * e.min,
                    l = r ? Ht : Ft,
                    u = n.lineBox(),
                    c = u[l + (o ? 2 : 1)],
                    p = r ? u.height() : u.width(),
                    f = o ? -1 : 1,
                    d = f * (t[l] - c),
                    x = (a - s) / p,
                    m = d * x;return d < 0 || d > p ? null : (i = r ? a - m : s + m, h(i, bt));
            }, translateRange: function translateRange(t) {
                var i = this,
                    n = i.options,
                    e = i.lineBox(),
                    o = n.vertical,
                    r = n.reverse,
                    a = o ? e.height() : e.width(),
                    s = n.max - n.min,
                    l = a / s,
                    u = h(t / l, bt);return !o && !r || o && r || (u = -u), { min: n.min + u, max: n.max + u };
            }, scaleRange: function scaleRange(t) {
                var i = this,
                    n = i.options,
                    e = -t * n.majorUnit;return { min: n.min - e, max: n.max + e };
            }, labelsCount: function labelsCount() {
                return this.getDivisions(this.options.majorUnit);
            }, createAxisLabel: function createAxisLabel(t, i) {
                var n = this,
                    e = n.options,
                    o = h(e.min + t * e.majorUnit, bt),
                    r = n.axisLabelText(o, null, i);return new E(o, r, t, null, i);
            }, shouldRenderNote: function shouldRenderNote(t) {
                var i = this.range();return i.min <= t && t <= i.max;
            }, pan: function pan(t) {
                var i = this.translateRange(t);return this.limitRange(i.min, i.max, this.totalMin, this.totalMax);
            }, pointsRange: function pointsRange(t, i) {
                var n = this.getValue(t),
                    e = this.getValue(i),
                    o = st.min(n, e),
                    r = st.max(n, e);if (this.isValidRange(o, r)) return { min: o, max: r };
            }, zoomRange: function zoomRange(t) {
                var i = this.scaleRange(t),
                    n = this.totalMax,
                    e = this.totalMin,
                    o = W.limitValue(i.min, e, n),
                    r = W.limitValue(i.max, e, n);if (this.isValidRange(o, r)) return { min: o, max: r };
            }, isValidRange: function isValidRange(t, i) {
                return i - t > Ct;
            } }), N = U.extend({ init: function init(t, i, n) {
                this.options = this._initOptions(t, i, n), this.seriesMin = t, this.seriesMax = i, U.fn.init.call(this, n);
            }, startValue: function startValue() {
                return this.options.min;
            }, options: { type: "log", majorUnit: 10, minorUnit: 1, axisCrossingValue: 1, vertical: !0, majorGridLines: { visible: !0, width: 1, color: ct }, zIndex: 1 }, getSlot: function getSlot(t, i, n) {
                var e,
                    o,
                    r = this,
                    a = r.options,
                    s = a.reverse,
                    l = a.vertical,
                    u = l ? Ht : Ft,
                    c = r.lineBox(),
                    h = c[u + (s ? 2 : 1)],
                    f = l ? c.height() : c.width(),
                    d = s ? -1 : 1,
                    x = a.majorUnit,
                    m = r.logMin,
                    g = r.logMax,
                    v = d * (f / (g - m)),
                    y = new _S(c.x1, c.y1, c.x1, c.y1);if (K(t) || (t = i || 1), K(i) || (i = t || 1), !(t <= 0 || i <= 0)) return n && (t = st.max(st.min(t, a.max), a.min), i = st.max(st.min(i, a.max), a.min)), t = p(t, x), i = p(i, x), l ? (e = g - st.max(t, i), o = g - st.min(t, i)) : (e = st.min(t, i) - m, o = st.max(t, i) - m), y[u + 1] = M(h + v * (s ? o : e)), y[u + 2] = M(h + v * (s ? e : o)), y;
            }, getValue: function getValue(t) {
                var i,
                    n = this,
                    e = n.options,
                    o = e.reverse,
                    r = e.vertical,
                    a = n.lineBox(),
                    s = e.majorUnit,
                    l = n.logMin,
                    u = n.logMax,
                    c = r === o ? 1 : -1,
                    p = 1 === c ? 1 : 2,
                    f = r ? a.height() : a.width(),
                    d = (u - l) / f,
                    x = r ? Ht : Ft,
                    m = a[x + p],
                    g = c * (t[x] - m),
                    v = g * d;return g < 0 || g > f ? null : (i = l + v, h(st.pow(s, i), bt));
            }, range: function range() {
                var t = this.options;return { min: t.min, max: t.max };
            }, scaleRange: function scaleRange(t) {
                var i = this,
                    n = i.options,
                    e = n.majorUnit,
                    o = -t;return { min: st.pow(e, i.logMin - o), max: st.pow(e, i.logMax + o) };
            }, translateRange: function translateRange(t) {
                var i = this,
                    n = i.options,
                    e = n.majorUnit,
                    o = i.lineBox(),
                    r = n.vertical,
                    a = n.reverse,
                    s = r ? o.height() : o.width(),
                    l = s / (i.logMax - i.logMin),
                    u = h(t / l, bt);return !r && !a || r && a || (u = -u), { min: st.pow(e, i.logMin + u), max: st.pow(e, i.logMax + u) };
            }, labelsCount: function labelsCount() {
                var t = this,
                    i = st.floor(t.logMax),
                    n = st.floor(i - t.logMin) + 1;return n;
            }, getMajorTickPositions: function getMajorTickPositions() {
                var t = this,
                    i = [];return t.traverseMajorTicksPositions(function (t) {
                    i.push(t);
                }, { step: 1, skip: 0 }), i;
            }, createTicks: function createTicks(t) {
                function i(i, n) {
                    c.tickX = s ? a.x2 : a.x2 - n.size, c.tickY = s ? a.y1 - n.size : a.y1, c.position = i, t.append(e(c, n));
                }var n = this,
                    o = [],
                    r = n.options,
                    a = n.lineBox(),
                    s = r.labels.mirror,
                    l = r.majorTicks,
                    u = r.minorTicks,
                    c = { vertical: r.vertical };return l.visible && n.traverseMajorTicksPositions(i, l), u.visible && n.traverseMinorTicksPositions(i, u), o;
            }, createGridLines: function createGridLines(t) {
                function i(t, i) {
                    l(t, h) || (c.position = t, p.append(o(c, i)), h.push(t));
                }var n = this,
                    e = n.options,
                    r = e.majorGridLines,
                    a = e.minorGridLines,
                    s = e.vertical,
                    u = t.lineBox(),
                    c = { lineStart: u[s ? "x1" : "y1"], lineEnd: u[s ? "x2" : "y2"], vertical: s },
                    h = [],
                    p = this.gridLinesVisual();return r.visible && n.traverseMajorTicksPositions(i, r), a.visible && n.traverseMinorTicksPositions(i, a), p.children;
            }, traverseMajorTicksPositions: function traverseMajorTicksPositions(t, i) {
                var n,
                    e,
                    o = this,
                    r = o._lineOptions(),
                    a = r.lineStart,
                    s = r.step,
                    l = o.logMin,
                    u = o.logMax;for (n = st.ceil(l) + i.skip; n <= u; n += i.step) {
                    e = h(a + s * (n - l), bt), t(e, i);
                }
            }, traverseMinorTicksPositions: function traverseMinorTicksPositions(t, i) {
                var n,
                    e,
                    o,
                    r,
                    a,
                    s = this,
                    l = s.options,
                    u = s._lineOptions(),
                    c = u.lineStart,
                    f = u.step,
                    d = l.majorUnit,
                    x = s.logMin,
                    m = s.logMax,
                    g = st.floor(x),
                    v = l.max,
                    y = l.min,
                    b = l.minorUnit;for (n = g; n < m; n++) {
                    for (r = s._minorIntervalOptions(n), a = i.skip; a < b && (e = r.value + a * r.minorStep, !(e > v)); a += i.step) {
                        e >= y && (o = h(c + f * (p(e, d) - x), bt), t(o, i));
                    }
                }
            }, createAxisLabel: function createAxisLabel(t, i) {
                var n = this,
                    e = n.options,
                    o = st.ceil(n.logMin + t),
                    r = Math.pow(e.majorUnit, o),
                    a = n.axisLabelText(r, null, i);return new E(r, a, t, null, i);
            }, shouldRenderNote: function shouldRenderNote(t) {
                var i = this.range();return i.min <= t && t <= i.max;
            }, _throwNegativeValuesError: function _throwNegativeValuesError() {
                throw Error("Non positive values cannot be used for a logarithmic axis");
            }, _initOptions: function _initOptions(t, i, n) {
                var e = this,
                    o = lt({}, e.options, { min: t, max: i }, n),
                    r = o.min,
                    a = o.max,
                    s = o.majorUnit,
                    l = this._autoMax(i, s),
                    u = this._autoMin(t, i, o);return o.axisCrossingValue <= 0 && e._throwNegativeValuesError(), K(n.max) ? n.max <= 0 && e._throwNegativeValuesError() : a = l, K(n.min) ? n.min <= 0 && e._throwNegativeValuesError() : r = u, this.totalMin = K(n.min) ? st.min(u, n.min) : u, this.totalMax = K(n.max) ? st.max(l, n.max) : l, e.logMin = h(p(r, s), bt), e.logMax = h(p(a, s), bt), o.max = a, o.min = r, o.minorUnit = n.minorUnit || h(s - 1, bt), o;
            }, _autoMin: function _autoMin(t, i, n) {
                var e = t,
                    o = n.majorUnit;return t <= 0 ? e = i <= 1 ? st.pow(o, -2) : 1 : n.narrowRange || (e = st.pow(o, st.floor(p(t, o)))), e;
            }, _autoMax: function _autoMax(t, i) {
                var n,
                    e = h(p(t, i), bt) % 1;return n = t <= 0 ? i : 0 !== e && (e < .3 || e > .9) ? st.pow(i, p(t, i) + .2) : st.pow(i, st.ceil(p(t, i)));
            }, pan: function pan(t) {
                var i = this.translateRange(t);return this.limitRange(i.min, i.max, this.totalMin, this.totalMax, -t);
            }, pointsRange: function pointsRange(t, i) {
                var n = this.getValue(t),
                    e = this.getValue(i),
                    o = st.min(n, e),
                    r = st.max(n, e);return { min: o, max: r };
            }, zoomRange: function zoomRange(t) {
                var i = this.options,
                    n = this.scaleRange(t),
                    e = this.totalMax,
                    o = this.totalMin,
                    r = W.limitValue(n.min, o, e),
                    a = W.limitValue(n.max, o, e),
                    s = i.majorUnit,
                    l = a > r && i.min && i.max && h(p(i.max, s) - p(i.min, s), bt) < 1,
                    u = !(i.min === o && i.max === e) && h(p(a, s) - p(r, s), bt) >= 1;if (l || u) return { min: r, max: a };
            }, _minorIntervalOptions: function _minorIntervalOptions(t) {
                var i = this.options.majorUnit,
                    n = st.pow(i, t),
                    e = st.pow(i, t + 1),
                    o = e - n,
                    r = o / this.options.minorUnit;return { value: n, minorStep: r };
            }, _lineOptions: function _lineOptions() {
                var t = this,
                    i = t.options,
                    n = i.reverse,
                    e = i.vertical,
                    o = e ? Ht : Ft,
                    r = t.lineBox(),
                    a = e === n ? 1 : -1,
                    s = 1 === a ? 1 : 2,
                    l = e ? r.height() : r.width(),
                    u = a * (l / (t.logMax - t.logMin)),
                    c = r[o + s];return { step: u, lineStart: c, lineBox: r };
            } }), J.Gradients = { glass: { type: Rt, rotation: 0, stops: [{ offset: 0, color: Nt, opacity: 0 }, { offset: .25, color: Nt, opacity: .3 }, { offset: 1, color: Nt, opacity: 0 }] }, sharpBevel: { type: Et, stops: [{ offset: 0, color: Nt, opacity: .55 }, { offset: .65, color: Nt, opacity: 0 }, { offset: .95, color: Nt, opacity: .25 }] }, roundedBevel: { type: Et, stops: [{ offset: .33, color: Nt, opacity: .06 }, { offset: .83, color: Nt, opacity: .2 }, { offset: .95, color: Nt, opacity: 0 }] }, roundedGlass: { type: Et, supportVML: !1, stops: [{ offset: 0, color: Nt, opacity: 0 }, { offset: .5, color: Nt, opacity: .3 }, { offset: .99, color: Nt, opacity: 0 }] }, sharpGlass: { type: Et, supportVML: !1, stops: [{ offset: 0, color: Nt, opacity: .2 }, { offset: .15, color: Nt, opacity: .15 }, { offset: .17, color: Nt, opacity: .35 }, { offset: .85, color: Nt, opacity: .05 }, { offset: .87, color: Nt, opacity: .15 }, { offset: .99, color: Nt, opacity: 0 }] } }, F = { extend: function extend(t, i) {
                if (!t.exportVisual) throw Error("Mixin target has no exportVisual method defined.");t.exportSVG = this.exportSVG, t.exportImage = this.exportImage, t.exportPDF = this.exportPDF, i || (t.svg = this.svg, t.imageDataURL = this.imageDataURL);
            }, exportSVG: function exportSVG(t) {
                return $.exportSVG(this.exportVisual(), t);
            }, exportImage: function exportImage(t) {
                return $.exportImage(this.exportVisual(t), t);
            }, exportPDF: function exportPDF(t) {
                return $.exportPDF(this.exportVisual(), t);
            }, svg: function svg() {
                if ($.svg.Surface) return $.svg._exportGroup(this.exportVisual());throw Error("SVG Export failed. Unable to export instantiate kendo.drawing.svg.Surface");
            }, imageDataURL: function imageDataURL() {
                var i, n, e;if (!X.support.canvas) return null;if ($.canvas.Surface) return i = t("<div />").css({ display: "none", width: this.element.width(), height: this.element.height() }).appendTo(document.body), n = new $.canvas.Surface(i), n.draw(this.exportVisual()), e = n._rootElement.toDataURL(), n.destroy(), i.remove(), e;throw Error("Image Export failed. Unable to export instantiate kendo.drawing.canvas.Surface");
            } }, H = function H(t) {
            this.closed = t;
        }, H.prototype = H.fn = { WEIGHT: .333, EXTREMUM_ALLOWED_DEVIATION: .01, process: function process(t) {
                var i,
                    n,
                    e,
                    o,
                    r,
                    a,
                    s,
                    l,
                    u,
                    c,
                    h = this,
                    p = h.closed,
                    f = t.slice(0),
                    d = f.length,
                    x = [];if (d > 2 && (h.removeDuplicates(0, f), d = f.length), d < 2 || 2 == d && f[0].equals(f[1])) return x;for (i = f[0], n = f[1], e = f[2], x.push(new $.Segment(i)); i.equals(f[d - 1]);) {
                    p = !0, f.pop(), d--;
                }if (2 == d) return s = h.tangent(i, n, Ft, Ht), Y(x).controlOut(h.firstControlPoint(s, i, n, Ft, Ht)), x.push(new $.Segment(n, h.secondControlPoint(s, i, n, Ft, Ht))), x;for (p ? (i = f[d - 1], n = f[0], e = f[1], o = h.controlPoints(i, n, e), r = o[1], a = o[0]) : (s = h.tangent(i, n, Ft, Ht), r = h.firstControlPoint(s, i, n, Ft, Ht)), l = r, u = 0; u <= d - 3; u++) {
                    h.removeDuplicates(u, f), d = f.length, u + 3 <= d && (i = f[u], n = f[u + 1], e = f[u + 2], o = h.controlPoints(i, n, e), Y(x).controlOut(l), l = o[1], c = o[0], x.push(new $.Segment(n, c)));
                }return p ? (i = f[d - 2], n = f[d - 1], e = f[0], o = h.controlPoints(i, n, e), Y(x).controlOut(l), x.push(new $.Segment(n, o[0])), Y(x).controlOut(o[1]), x.push(new $.Segment(e, a))) : (s = h.tangent(n, e, Ft, Ht), Y(x).controlOut(l), x.push(new $.Segment(e, h.secondControlPoint(s, n, e, Ft, Ht)))), x;
            }, removeDuplicates: function removeDuplicates(t, i) {
                for (; i[t + 1] && (i[t].equals(i[t + 1]) || i[t + 1].equals(i[t + 2]));) {
                    i.splice(t + 1, 1);
                }
            }, invertAxis: function invertAxis(t, i, n) {
                var e,
                    o,
                    r = this,
                    a = !1;return t.x === i.x ? a = !0 : i.x === n.x ? (i.y < n.y && t.y <= i.y || n.y < i.y && i.y <= t.y) && (a = !0) : (e = r.lineFunction(t, i), o = r.calculateFunction(e, n.x), t.y <= i.y && n.y <= o || i.y <= t.y && n.y >= o || (a = !0)), a;
            }, isLine: function isLine(t, i, n) {
                var e = this,
                    o = e.lineFunction(t, i),
                    r = e.calculateFunction(o, n.x);return t.x == i.x && i.x == n.x || h(r, 1) === h(n.y, 1);
            }, lineFunction: function lineFunction(t, i) {
                var n = (i.y - t.y) / (i.x - t.x),
                    e = t.y - n * t.x;return [e, n];
            }, controlPoints: function controlPoints(t, i, n) {
                var e,
                    o,
                    r,
                    a,
                    s,
                    l,
                    u = this,
                    c = Ft,
                    h = Ht,
                    p = !1,
                    f = !1,
                    d = u.EXTREMUM_ALLOWED_DEVIATION;return u.isLine(t, i, n) ? e = u.tangent(t, i, Ft, Ht) : (o = { x: u.isMonotonicByField(t, i, n, Ft), y: u.isMonotonicByField(t, i, n, Ht) }, o.x && o.y ? (e = u.tangent(t, n, Ft, Ht), p = !0) : (u.invertAxis(t, i, n) && (c = Ht, h = Ft), o[c] ? e = 0 : (s = n[h] < t[h] && t[h] <= i[h] || t[h] < n[h] && i[h] <= t[h] ? u.sign((n[h] - t[h]) * (i[c] - t[c])) : -u.sign((n[c] - t[c]) * (i[h] - t[h])), e = d * s, f = !0))), a = u.secondControlPoint(e, t, i, c, h), f && (l = c, c = h, h = l), r = u.firstControlPoint(e, i, n, c, h), p && (u.restrictControlPoint(t, i, a, e), u.restrictControlPoint(i, n, r, e)), [a, r];
            }, sign: function sign(t) {
                return t <= 0 ? -1 : 1;
            }, restrictControlPoint: function restrictControlPoint(t, i, n, e) {
                t.y < i.y ? i.y < n.y ? (n.x = t.x + (i.y - t.y) / e, n.y = i.y) : n.y < t.y && (n.x = i.x - (i.y - t.y) / e, n.y = t.y) : n.y < i.y ? (n.x = t.x - (t.y - i.y) / e, n.y = i.y) : t.y < n.y && (n.x = i.x + (t.y - i.y) / e, n.y = t.y);
            }, tangent: function tangent(t, i, n, e) {
                var o,
                    r = i[n] - t[n],
                    a = i[e] - t[e];return o = 0 === r ? 0 : a / r;
            }, isMonotonicByField: function isMonotonicByField(t, i, n, e) {
                return n[e] > i[e] && i[e] > t[e] || n[e] < i[e] && i[e] < t[e];
            }, firstControlPoint: function firstControlPoint(t, i, n, e, o) {
                var r = this,
                    a = i[e],
                    s = n[e],
                    l = (s - a) * r.WEIGHT;return r.point(a + l, i[o] + l * t, e, o);
            }, secondControlPoint: function secondControlPoint(t, i, n, e, o) {
                var r = this,
                    a = i[e],
                    s = n[e],
                    l = (s - a) * r.WEIGHT;return r.point(s - l, n[o] - l * t, e, o);
            }, point: function point(t, i, n, e) {
                var o = new Z.Point();return o[n] = t, o[e] = i, o;
            }, calculateFunction: function calculateFunction(t, i) {
                var n,
                    e = 0,
                    o = t.length;for (n = 0; n < o; n++) {
                    e += Math.pow(i, n) * t[n];
                }return e;
            } }, b._element = document.createElement("span"), lt(X.dataviz, { AXIS_LABEL_CLICK: ut, COORD_PRECISION: ft, DEFAULT_PRECISION: bt, DEFAULT_WIDTH: wt, DEFAULT_HEIGHT: vt, DEFAULT_FONT: gt, INITIAL_ANIMATION_DURATION: St, NOTE_CLICK: Bt, NOTE_HOVER: It, CLIP: dt, Axis: U, AxisLabel: E, Box2D: _S, BoxElement: C, ChartElement: P, CurveProcessor: H, ExportMixin: F, FloatElement: B, LogarithmicAxis: N, Note: O, NumericAxis: G, Point2D: Wt, Ring: A, RootElement: z, Sector: V, ShapeBuilder: R, ShapeElement: D, Text: L, TextBox: I, Title: j, alignPathToPixel: w, autoFormat: m, autoMajorUnit: r, boxDiff: s, dateComparer: v, decodeEntities: b, eventTargetElement: _, getSpacing: n, inArray: l, interpolateValue: d, mwDelta: y, rectToBox: k, rotatePoint: a, round: h, ceil: u, floor: c });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, i, n) {
    (n || i)();
});;!function (o, define) {
    define("util/main.min", ["kendo.core.min"], o);
}(function () {
    return function () {
        function o(o) {
            return (typeof o === "undefined" ? "undefined" : _typeof(o)) !== O;
        }function e(o, e) {
            var l = r(e);return G.round(o * l) / l;
        }function r(o) {
            return o ? G.pow(10, o) : 1;
        }function l(o, e, r) {
            return G.max(G.min(o, r), e);
        }function c(o) {
            return o * I;
        }function a(o) {
            return o / I;
        }function t(o) {
            return "number" == typeof o && !isNaN(o);
        }function n(e, r) {
            return o(e) ? e : r;
        }function i(o) {
            return o * o;
        }function f(o) {
            var e,
                r = [];for (e in o) {
                r.push(e + o[e]);
            }return r.sort().join("");
        }function s(o) {
            var e,
                r = 2166136261;for (e = 0; e < o.length; ++e) {
                r += (r << 1) + (r << 4) + (r << 7) + (r << 8) + (r << 24), r ^= o.charCodeAt(e);
            }return r >>> 0;
        }function d(o) {
            return s(f(o));
        }function b(o) {
            var e,
                r = o.length,
                l = N,
                c = S;for (e = 0; e < r; e++) {
                c = G.max(c, o[e]), l = G.min(l, o[e]);
            }return { min: l, max: c };
        }function u(o) {
            return b(o).min;
        }function h(o) {
            return b(o).max;
        }function k(o) {
            return m(o).min;
        }function g(o) {
            return m(o).max;
        }function m(o) {
            var e,
                r,
                l,
                c = N,
                a = S;for (e = 0, r = o.length; e < r; e++) {
                l = o[e], null !== l && isFinite(l) && (c = G.min(c, l), a = G.max(a, l));
            }return { min: c === N ? void 0 : c, max: a === S ? void 0 : a };
        }function p(o) {
            if (o) return o[o.length - 1];
        }function v(o, e) {
            return o.push.apply(o, e), o;
        }function w(o) {
            return P.template(o, { useWithBlock: !1, paramName: "d" });
        }function C(e, r) {
            return o(r) && null !== r ? " " + e + "='" + r + "' " : "";
        }function y(o) {
            var e,
                r = "";for (e = 0; e < o.length; e++) {
                r += C(o[e][0], o[e][1]);
            }return r;
        }function D(e) {
            var r,
                l,
                c = "";for (r = 0; r < e.length; r++) {
                l = e[r][1], o(l) && (c += e[r][0] + ":" + l + ";");
            }if ("" !== c) return c;
        }function x(o) {
            return "string" != typeof o && (o += "px"), o;
        }function B(o) {
            var e,
                r,
                l = [];if (o) for (e = P.toHyphens(o).split("-"), r = 0; r < e.length; r++) {
                l.push("k-pos-" + e[r]);
            }return l.join(" ");
        }function _(e) {
            return "" === e || null === e || "none" === e || "transparent" === e || !o(e);
        }function A(o) {
            for (var e = { 1: "i", 10: "x", 100: "c", 2: "ii", 20: "xx", 200: "cc", 3: "iii", 30: "xxx", 300: "ccc", 4: "iv", 40: "xl", 400: "cd", 5: "v", 50: "l", 500: "d", 6: "vi", 60: "lx", 600: "dc", 7: "vii", 70: "lxx", 700: "dcc", 8: "viii", 80: "lxxx", 800: "dccc", 9: "ix", 90: "xc", 900: "cm", 1e3: "m" }, r = [1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], l = ""; o > 0;) {
                o < r[0] ? r.shift() : (l += e[r[0]], o -= r[0]);
            }return l;
        }function L(o) {
            var e, r, l, c, a;for (o = o.toLowerCase(), e = { i: 1, v: 5, x: 10, l: 50, c: 100, d: 500, m: 1e3 }, r = 0, l = 0, c = 0; c < o.length; ++c) {
                if (a = e[o.charAt(c)], !a) return null;r += a, a > l && (r -= 2 * l), l = a;
            }return r;
        }function z(o) {
            var e = Object.create(null);return function () {
                var r,
                    l = "";for (r = arguments.length; --r >= 0;) {
                    l += ":" + arguments[r];
                }return l in e ? e[l] : e[l] = o.apply(this, arguments);
            };
        }function T(o) {
            for (var e, r, l = [], c = 0, a = o.length; c < a;) {
                e = o.charCodeAt(c++), e >= 55296 && e <= 56319 && c < a ? (r = o.charCodeAt(c++), 56320 == (64512 & r) ? l.push(((1023 & e) << 10) + (1023 & r) + 65536) : (l.push(e), c--)) : l.push(e);
            }return l;
        }function j(o) {
            return o.map(function (o) {
                var e = "";return o > 65535 && (o -= 65536, e += String.fromCharCode(o >>> 10 & 1023 | 55296), o = 56320 | 1023 & o), e += String.fromCharCode(o);
            }).join("");
        }function M(o, e) {
            function r(o, r) {
                for (var l = [], c = 0, a = 0, t = 0; c < o.length && a < r.length;) {
                    e(o[c], r[a]) <= 0 ? l[t++] = o[c++] : l[t++] = r[a++];
                }return c < o.length && l.push.apply(l, o.slice(c)), a < r.length && l.push.apply(l, r.slice(a)), l;
            }return o.length < 2 ? o.slice() : function l(o) {
                var e, c, a;return o.length <= 1 ? o : (e = Math.floor(o.length / 2), c = o.slice(0, e), a = o.slice(e), c = l(c), a = l(a), r(c, a));
            }(o);
        }var G = Math,
            P = window.kendo,
            W = P.deepExtend,
            I = G.PI / 180,
            N = Number.MAX_VALUE,
            S = -Number.MAX_VALUE,
            O = "undefined",
            E = Date.now;E || (E = function E() {
            return new Date().getTime();
        }), W(P, { util: { MAX_NUM: N, MIN_NUM: S, append: v, arrayLimits: b, arrayMin: u, arrayMax: h, defined: o, deg: a, hashKey: s, hashObject: d, isNumber: t, isTransparent: _, last: p, limitValue: l, now: E, objectKey: f, round: e, rad: c, renderAttr: C, renderAllAttr: y, renderPos: B, renderSize: x, renderStyle: D, renderTemplate: w, sparseArrayLimits: m, sparseArrayMin: k, sparseArrayMax: g, sqr: i, valueOrDefault: n, romanToArabic: L, arabicToRoman: A, memoize: z, ucs2encode: j, ucs2decode: T, mergeSort: M } }), P.drawing.util = P.util, P.dataviz.util = P.util;
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (o, e, r) {
    (r || e)();
}), function (o, define) {
    define("util/text-metrics.min", ["kendo.core.min", "util/main.min"], o);
}(function () {
    !function (o) {
        function e() {
            return { width: 0, height: 0, baseline: 0 };
        }function r(o, e, r) {
            return d.current.measure(o, e, r);
        }function l(o, e) {
            var r = [];if (o.length > 0 && document.fonts) {
                try {
                    r = o.map(function (o) {
                        return document.fonts.load(o);
                    });
                } catch (l) {
                    a.logToConsole(l);
                }Promise.all(r).then(e, e);
            } else e();
        }var c = document,
            a = window.kendo,
            t = a.Class,
            n = a.util,
            i = n.defined,
            f = t.extend({ init: function init(o) {
                this._size = o, this._length = 0, this._map = {};
            }, put: function put(o, e) {
                var r = this,
                    l = r._map,
                    c = { key: o, value: e };l[o] = c, r._head ? (r._tail.newer = c, c.older = r._tail, r._tail = c) : r._head = r._tail = c, r._length >= r._size ? (l[r._head.key] = null, r._head = r._head.newer, r._head.older = null) : r._length++;
            }, get: function get(o) {
                var e = this,
                    r = e._map[o];if (r) return r === e._head && r !== e._tail && (e._head = r.newer, e._head.older = null), r !== e._tail && (r.older && (r.older.newer = r.newer, r.newer.older = r.older), r.older = e._tail, r.newer = null, e._tail.newer = r, e._tail = r), r.value;
            } }),
            s = o("<div style='position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;padding: 0 !important; margin: 0 !important; border: 0 !important;line-height: normal !important; visibility: hidden !important; white-space: nowrap!important;' />")[0],
            d = t.extend({ init: function init(o) {
                this._cache = new f(1e3), this._initOptions(o);
            }, options: { baselineMarkerSize: 1 }, measure: function measure(r, l, a) {
                var t, f, d, b, u, h, k, g;if (!r) return e();if (t = n.objectKey(l), f = n.hashKey(r + t), d = this._cache.get(f), d) return d;b = e(), u = a ? a : s, h = this._baselineMarker().cloneNode(!1);for (k in l) {
                    g = l[k], i(g) && (u.style[k] = g);
                }return o(u).text(r), u.appendChild(h), c.body.appendChild(u), (r + "").length && (b.width = u.offsetWidth - this.options.baselineMarkerSize, b.height = u.offsetHeight, b.baseline = h.offsetTop + this.options.baselineMarkerSize), b.width > 0 && b.height > 0 && this._cache.put(f, b), u.parentNode.removeChild(u), b;
            }, _baselineMarker: function _baselineMarker() {
                return o("<div class='k-baseline-marker' style='display: inline-block; vertical-align: baseline;width: " + this.options.baselineMarkerSize + "px; height: " + this.options.baselineMarkerSize + "px;overflow: hidden;' />")[0];
            } });d.current = new d(), a.util.TextMetrics = d, a.util.LRUCache = f, a.util.loadFonts = l, a.util.measureText = r;
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (o, e, r) {
    (r || e)();
}), function (o, define) {
    define("util/base64.min", ["util/main.min"], o);
}(function () {
    return function () {
        function o(o) {
            var r,
                l,
                c,
                t,
                n,
                i,
                f,
                s = "",
                d = 0;for (o = e(o); d < o.length;) {
                r = o.charCodeAt(d++), l = o.charCodeAt(d++), c = o.charCodeAt(d++), t = r >> 2, n = (3 & r) << 4 | l >> 4, i = (15 & l) << 2 | c >> 6, f = 63 & c, isNaN(l) ? i = f = 64 : isNaN(c) && (f = 64), s = s + a.charAt(t) + a.charAt(n) + a.charAt(i) + a.charAt(f);
            }return s;
        }function e(o) {
            var e,
                r,
                l = "";for (e = 0; e < o.length; e++) {
                r = o.charCodeAt(e), r < 128 ? l += c(r) : r < 2048 ? (l += c(192 | r >>> 6), l += c(128 | 63 & r)) : r < 65536 && (l += c(224 | r >>> 12), l += c(128 | r >>> 6 & 63), l += c(128 | 63 & r));
            }return l;
        }var r = window.kendo,
            l = r.deepExtend,
            c = String.fromCharCode,
            a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";l(r.util, { encodeBase64: o, encodeUTF8: e });
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (o, e, r) {
    (r || e)();
}), function (o, define) {
    define("mixins/observers.min", ["kendo.core.min"], o);
}(function () {
    return function (o) {
        var e = Math,
            r = window.kendo,
            l = r.deepExtend,
            c = o.inArray,
            a = { observers: function observers() {
                return this._observers = this._observers || [];
            }, addObserver: function addObserver(o) {
                return this._observers ? this._observers.push(o) : this._observers = [o], this;
            }, removeObserver: function removeObserver(o) {
                var e = this.observers(),
                    r = c(o, e);return r != -1 && e.splice(r, 1), this;
            }, trigger: function trigger(o, e) {
                var r,
                    l,
                    c = this._observers;if (c && !this._suspended) for (l = 0; l < c.length; l++) {
                    r = c[l], r[o] && r[o](e);
                }return this;
            }, optionsChange: function optionsChange(o) {
                o = o || {}, o.element = this, this.trigger("optionsChange", o);
            }, geometryChange: function geometryChange() {
                this.trigger("geometryChange", { element: this });
            }, suspend: function suspend() {
                return this._suspended = (this._suspended || 0) + 1, this;
            }, resume: function resume() {
                return this._suspended = e.max((this._suspended || 0) - 1, 0), this;
            }, _observerField: function _observerField(o, e) {
                this[o] && this[o].removeObserver(this), this[o] = e, e.addObserver(this);
            } };l(r, { mixins: { ObserversMixin: a } });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (o, e, r) {
    (r || e)();
}), function (o, define) {
    define("kendo.dataviz.themes.min", ["kendo.dataviz.core.min"], o);
}(function () {
    return function (o) {
        function e(e, r) {
            return o.map(e, function (o, e) {
                return [[o, r[e]]];
            });
        }var r = window.kendo,
            l = r.dataviz.ui,
            c = r.deepExtend,
            a = 1.5,
            t = .4,
            n = "#000",
            i = "Arial,Helvetica,sans-serif",
            f = "11px " + i,
            s = "12px " + i,
            d = "16px " + i,
            b = "#fff",
            u = { title: { font: d }, legend: { labels: { font: s } }, seriesDefaults: { visible: !0, labels: { font: f }, donut: { margin: 1 }, line: { width: 2 }, vericalLine: { width: 2 }, scatterLine: { width: 1 }, area: { opacity: .4, markers: { visible: !1, size: 6 }, highlight: { markers: { border: { color: "#fff", opacity: 1, width: 1 } } }, line: { opacity: 1, width: 0 } }, verticalArea: { opacity: .4, markers: { visible: !1, size: 6 }, line: { opacity: 1, width: 0 } }, radarLine: { width: 2, markers: { visible: !1 } }, radarArea: { opacity: .5, markers: { visible: !1, size: 6 }, line: { opacity: 1, width: 0 } }, candlestick: { line: { width: 1, color: n }, border: { width: 1, _brightness: .8 }, gap: 1, spacing: .3, downColor: b, highlight: { line: { width: 2 }, border: { width: 2, opacity: 1 } } }, ohlc: { line: { width: 1 }, gap: 1, spacing: .3, highlight: { line: { width: 3, opacity: 1 } } }, bubble: { opacity: .6, border: { width: 0 }, labels: { background: "transparent" } }, bar: { gap: a, spacing: t }, column: { gap: a, spacing: t }, rangeColumn: { gap: a, spacing: t }, rangeBar: { gap: a, spacing: t }, waterfall: { gap: .5, spacing: t, line: { width: 1, color: n } }, horizontalWaterfall: { gap: .5, spacing: t, line: { width: 1, color: n } }, bullet: { gap: a, spacing: t, target: { color: "#ff0000" } }, verticalBullet: { gap: a, spacing: t, target: { color: "#ff0000" } }, boxPlot: { outliersField: "", meanField: "", whiskers: { width: 1, color: n }, mean: { width: 1, color: n }, median: { width: 1, color: n }, border: { width: 1, _brightness: .8 }, gap: 1, spacing: .3, downColor: b, highlight: { whiskers: { width: 2 }, border: { width: 2, opacity: 1 } } }, funnel: { labels: { color: "", background: "" } }, notes: { icon: { border: { width: 1 } }, label: { padding: 3, font: s }, line: { length: 10, width: 1 }, visible: !0 } }, categoryAxis: { majorGridLines: { visible: !0 } }, axisDefaults: { labels: { font: s }, title: { font: d, margin: 5 }, crosshair: { tooltip: { font: s } }, notes: { icon: { size: 7, border: { width: 1 } }, label: { padding: 3, font: s }, line: { length: 10, width: 1 }, visible: !0 } }, tooltip: { font: s }, navigator: { pane: { height: 90, margin: { top: 10 } } } },
            h = { scale: { labels: { font: s } } },
            k = { shapeDefaults: { hover: { opacity: .2 }, stroke: { width: 0 } }, editable: { resize: { handles: { width: 7, height: 7 } } }, selectable: { stroke: { width: 1, dashType: "dot" } }, connectionDefaults: { stroke: { width: 2 }, selection: { handles: { width: 8, height: 8 } }, editable: { tools: ["edit", "delete"] } } },
            g = l.themes,
            m = l.registerTheme = function (o, e) {
            var r,
                l = {};l.chart = c({}, u, e.chart), l.gauge = c({}, h, e.gauge), l.diagram = c({}, k, e.diagram), l.treeMap = c({}, e.treeMap), r = l.chart.seriesDefaults, r.verticalLine = c({}, r.line), r.verticalArea = c({}, r.area), r.verticalBoxPlot = c({}, r.boxPlot), r.polarArea = c({}, r.radarArea), r.polarLine = c({}, r.radarLine), g[o] = l;
        };m("black", { chart: { title: { color: b }, legend: { labels: { color: b }, inactiveItems: { labels: { color: "#919191" }, markers: { color: "#919191" } } }, seriesDefaults: { labels: { color: b }, errorBars: { color: b }, notes: { icon: { background: "#3b3b3b", border: { color: "#8e8e8e" } }, label: { color: b }, line: { color: "#8e8e8e" } }, pie: { overlay: { gradient: "sharpBevel" } }, donut: { overlay: { gradient: "sharpGlass" } }, line: { markers: { background: "#3d3d3d" } }, scatter: { markers: { background: "#3d3d3d" } }, scatterLine: { markers: { background: "#3d3d3d" } }, waterfall: { line: { color: "#8e8e8e" } }, horizontalWaterfall: { line: { color: "#8e8e8e" } }, candlestick: { downColor: "#555", line: { color: b }, border: { _brightness: 1.5, opacity: 1 }, highlight: { border: { color: b, opacity: .2 } } }, ohlc: { line: { color: b } } }, chartArea: { background: "#3d3d3d" }, seriesColors: ["#0081da", "#3aafff", "#99c900", "#ffeb3d", "#b20753", "#ff4195"], axisDefaults: { line: { color: "#8e8e8e" }, labels: { color: b }, majorGridLines: { color: "#545454" }, minorGridLines: { color: "#454545" }, title: { color: b }, crosshair: { color: "#8e8e8e" }, notes: { icon: { background: "#3b3b3b", border: { color: "#8e8e8e" } }, label: { color: b }, line: { color: "#8e8e8e" } } } }, gauge: { pointer: { color: "#0070e4" }, scale: { rangePlaceholderColor: "#1d1d1d", labels: { color: b }, minorTicks: { color: b }, majorTicks: { color: b }, line: { color: b } } }, diagram: { shapeDefaults: { fill: { color: "#0066cc" }, connectorDefaults: { fill: { color: b }, stroke: { color: "#384049" }, hover: { fill: { color: "#3d3d3d" }, stroke: { color: "#efefef" } } }, content: { color: b } }, editable: { resize: { handles: { fill: { color: "#3d3d3d" }, stroke: { color: b }, hover: { fill: { color: b }, stroke: { color: b } } } }, rotate: { thumb: { stroke: { color: b }, fill: { color: b } } } }, selectable: { stroke: { color: b } }, connectionDefaults: { stroke: { color: b }, content: { color: b }, selection: { handles: { fill: { color: "#3d3d3d" }, stroke: { color: "#efefef" } } } } }, treeMap: { colors: [["#0081da", "#314b5c"], ["#3aafff", "#3c5464"], ["#99c900", "#4f5931"], ["#ffeb3d", "#64603d"], ["#b20753", "#543241"], ["#ff4195", "#643e4f"]] } }), m("blueopal", { chart: { title: { color: "#293135" }, legend: { labels: { color: "#293135" }, inactiveItems: { labels: { color: "#27A5BA" }, markers: { color: "#27A5BA" } } }, seriesDefaults: { labels: { color: n, background: b, opacity: .5 }, errorBars: { color: "#293135" }, candlestick: { downColor: "#c4d0d5", line: { color: "#9aabb2" } }, waterfall: { line: { color: "#9aabb2" } }, horizontalWaterfall: { line: { color: "#9aabb2" } }, notes: { icon: { background: "transparent", border: { color: "#9aabb2" } }, label: { color: "#293135" }, line: { color: "#9aabb2" } } }, seriesColors: ["#0069a5", "#0098ee", "#7bd2f6", "#ffb800", "#ff8517", "#e34a00"], axisDefaults: { line: { color: "#9aabb2" }, labels: { color: "#293135" }, majorGridLines: { color: "#c4d0d5" }, minorGridLines: { color: "#edf1f2" }, title: { color: "#293135" }, crosshair: { color: "#9aabb2" }, notes: { icon: { background: "transparent", border: { color: "#9aabb2" } }, label: { color: "#293135" }, line: { color: "#9aabb2" } } } }, gauge: { pointer: { color: "#005c83" }, scale: { rangePlaceholderColor: "#daecf4", labels: { color: "#293135" }, minorTicks: { color: "#293135" }, majorTicks: { color: "#293135" }, line: { color: "#293135" } } }, diagram: { shapeDefaults: { fill: { color: "#7ec6e3" }, connectorDefaults: { fill: { color: "#003f59" }, stroke: { color: b }, hover: { fill: { color: b }, stroke: { color: "#003f59" } } }, content: { color: "#293135" } }, editable: { resize: { handles: { fill: { color: b }, stroke: { color: "#003f59" }, hover: { fill: { color: "#003f59" }, stroke: { color: "#003f59" } } } }, rotate: { thumb: { stroke: { color: "#003f59" }, fill: { color: "#003f59" } } } }, selectable: { stroke: { color: "#003f59" } }, connectionDefaults: { stroke: { color: "#003f59" }, content: { color: "#293135" }, selection: { handles: { fill: { color: "#3d3d3d" }, stroke: { color: "#efefef" } } } } }, treeMap: { colors: [["#0069a5", "#bad7e7"], ["#0098ee", "#b9e0f5"], ["#7bd2f6", "#ceeaf6"], ["#ffb800", "#e6e3c4"], ["#ff8517", "#e4d8c8"], ["#e34a00", "#ddccc2"]] } }), m("highcontrast", { chart: { title: { color: "#ffffff" }, legend: { labels: { color: "#ffffff" }, inactiveItems: { labels: { color: "#66465B" }, markers: { color: "#66465B" } } }, seriesDefaults: { labels: { color: "#ffffff" }, errorBars: { color: "#ffffff" }, notes: { icon: { background: "transparent", border: { color: "#ffffff" } }, label: { color: "#ffffff" }, line: { color: "#ffffff" } }, pie: { overlay: { gradient: "sharpGlass" } }, donut: { overlay: { gradient: "sharpGlass" } }, line: { markers: { background: "#2c232b" } }, scatter: { markers: { background: "#2c232b" } }, scatterLine: { markers: { background: "#2c232b" } }, area: { opacity: .5 }, waterfall: { line: { color: "#ffffff" } }, horizontalWaterfall: { line: { color: "#ffffff" } }, candlestick: { downColor: "#664e62", line: { color: "#ffffff" }, border: { _brightness: 1.5, opacity: 1 }, highlight: { border: { color: "#ffffff", opacity: 1 } } }, ohlc: { line: { color: "#ffffff" } } }, chartArea: { background: "#2c232b" }, seriesColors: ["#a7008f", "#ffb800", "#3aafff", "#99c900", "#b20753", "#ff4195"], axisDefaults: { line: { color: "#ffffff" }, labels: { color: "#ffffff" }, majorGridLines: { color: "#664e62" }, minorGridLines: { color: "#4f394b" }, title: { color: "#ffffff" }, crosshair: { color: "#ffffff" }, notes: { icon: { background: "transparent", border: { color: "#ffffff" } }, label: { color: "#ffffff" }, line: { color: "#ffffff" } } } }, gauge: { pointer: { color: "#a7008f" }, scale: { rangePlaceholderColor: "#2c232b", labels: { color: "#ffffff" }, minorTicks: { color: "#2c232b" }, majorTicks: { color: "#664e62" }, line: { color: "#ffffff" } } }, diagram: { shapeDefaults: { fill: { color: "#a7018f" }, connectorDefaults: { fill: { color: b }, stroke: { color: "#2c232b" }, hover: { fill: { color: "#2c232b" }, stroke: { color: b } } }, content: { color: b } }, editable: { resize: { handles: { fill: { color: "#2c232b" }, stroke: { color: b }, hover: { fill: { color: b }, stroke: { color: b } } } }, rotate: { thumb: { stroke: { color: b }, fill: { color: b } } } }, selectable: { stroke: { color: b } }, connectionDefaults: { stroke: { color: b }, content: { color: b }, selection: { handles: { fill: { color: "#2c232b" }, stroke: { color: b } } } } }, treeMap: { colors: [["#a7008f", "#451c3f"], ["#ffb800", "#564122"], ["#3aafff", "#2f3f55"], ["#99c900", "#424422"], ["#b20753", "#471d33"], ["#ff4195", "#562940"]] } }), m("default", { chart: { title: { color: "#8e8e8e" }, legend: { labels: { color: "#232323" }, inactiveItems: { labels: { color: "#919191" }, markers: { color: "#919191" } } }, seriesDefaults: { labels: { color: n, background: b, opacity: .5 }, errorBars: { color: "#232323" }, candlestick: { downColor: "#dedede", line: { color: "#8d8d8d" } }, waterfall: { line: { color: "#8e8e8e" } }, horizontalWaterfall: { line: { color: "#8e8e8e" } }, notes: { icon: { background: "transparent", border: { color: "#8e8e8e" } }, label: { color: "#232323" }, line: { color: "#8e8e8e" } } }, seriesColors: ["#ff6800", "#a0a700", "#ff8d00", "#678900", "#ffb53c", "#396000"], axisDefaults: { line: { color: "#8e8e8e" }, labels: { color: "#232323" }, minorGridLines: { color: "#f0f0f0" }, majorGridLines: { color: "#dfdfdf" }, title: { color: "#232323" }, crosshair: { color: "#8e8e8e" }, notes: { icon: { background: "transparent", border: { color: "#8e8e8e" } }, label: { color: "#232323" }, line: { color: "#8e8e8e" } } } }, gauge: { pointer: { color: "#ea7001" }, scale: { rangePlaceholderColor: "#dedede", labels: { color: "#2e2e2e" }, minorTicks: { color: "#2e2e2e" }, majorTicks: { color: "#2e2e2e" }, line: { color: "#2e2e2e" } } }, diagram: { shapeDefaults: { fill: { color: "#e15613" }, connectorDefaults: { fill: { color: "#282828" }, stroke: { color: b }, hover: { fill: { color: b }, stroke: { color: "#282828" } } }, content: { color: "#2e2e2e" } }, editable: { resize: { handles: { fill: { color: b }, stroke: { color: "#282828" }, hover: { fill: { color: "#282828" }, stroke: { color: "#282828" } } } }, rotate: { thumb: { stroke: { color: "#282828" }, fill: { color: "#282828" } } } }, selectable: { stroke: { color: "#a7018f" } }, connectionDefaults: { stroke: { color: "#282828" }, content: { color: "#2e2e2e" }, selection: { handles: { fill: { color: b }, stroke: { color: "#282828" } } } } }, treeMap: { colors: [["#ff6800", "#edcfba"], ["#a0a700", "#dadcba"], ["#ff8d00", "#edd7ba"], ["#678900", "#cfd6ba"], ["#ffb53c", "#eddfc6"], ["#396000", "#c6ceba"]] } }), m("silver", { chart: { title: { color: "#4e5968" }, legend: { labels: { color: "#4e5968" }, inactiveItems: { labels: { color: "#B1BCC8" }, markers: { color: "#B1BCC8" } } }, seriesDefaults: { labels: { color: "#293135", background: "#eaeaec", opacity: .5 }, errorBars: { color: "#4e5968" }, notes: { icon: { background: "transparent", border: { color: "#4e5968" } }, label: { color: "#4e5968" }, line: { color: "#4e5968" } }, line: { markers: { background: "#eaeaec" } }, scatter: { markers: { background: "#eaeaec" } }, scatterLine: { markers: { background: "#eaeaec" } }, pie: { connectors: { color: "#A6B1C0" } }, donut: { connectors: { color: "#A6B1C0" } }, waterfall: { line: { color: "#a6b1c0" } }, horizontalWaterfall: { line: { color: "#a6b1c0" } }, candlestick: { downColor: "#a6afbe" } }, chartArea: { background: "#eaeaec" }, seriesColors: ["#007bc3", "#76b800", "#ffae00", "#ef4c00", "#a419b7", "#430B62"], axisDefaults: { line: { color: "#a6b1c0" }, labels: { color: "#4e5968" }, majorGridLines: { color: "#dcdcdf" }, minorGridLines: { color: "#eeeeef" }, title: { color: "#4e5968" }, crosshair: { color: "#a6b1c0" }, notes: { icon: { background: "transparent", border: { color: "#4e5968" } }, label: { color: "#4e5968" }, line: { color: "#4e5968" } } } }, gauge: { pointer: { color: "#0879c0" }, scale: { rangePlaceholderColor: "#f3f3f4", labels: { color: "#515967" }, minorTicks: { color: "#515967" }, majorTicks: { color: "#515967" }, line: { color: "#515967" } } }, diagram: { shapeDefaults: { fill: { color: "#1c82c2" }, connectorDefaults: { fill: { color: "#515967" }, stroke: { color: b }, hover: { fill: { color: b }, stroke: { color: "#282828" } } }, content: { color: "#515967" } }, editable: { resize: { handles: { fill: { color: b }, stroke: { color: "#515967" }, hover: { fill: { color: "#515967" }, stroke: { color: "#515967" } } } }, rotate: { thumb: { stroke: { color: "#515967" }, fill: { color: "#515967" } } } }, selectable: { stroke: { color: "#515967" } }, connectionDefaults: { stroke: { color: "#515967" }, content: { color: "#515967" }, selection: { handles: { fill: { color: b }, stroke: { color: "#515967" } } } } }, treeMap: { colors: [["#007bc3", "#c2dbea"], ["#76b800", "#dae7c3"], ["#ffae00", "#f5e5c3"], ["#ef4c00", "#f2d2c3"], ["#a419b7", "#e3c7e8"], ["#430b62", "#d0c5d7"]] } }), m("metro", { chart: { title: { color: "#777777" }, legend: { labels: { color: "#777777" }, inactiveItems: { labels: { color: "#CBCBCB" }, markers: { color: "#CBCBCB" } } }, seriesDefaults: { labels: { color: n }, errorBars: { color: "#777777" }, notes: { icon: { background: "transparent", border: { color: "#777777" } }, label: { color: "#777777" }, line: { color: "#777777" } }, candlestick: { downColor: "#c7c7c7", line: { color: "#787878" } }, waterfall: { line: { color: "#c7c7c7" } }, horizontalWaterfall: { line: { color: "#c7c7c7" } }, overlay: { gradient: "none" }, border: { _brightness: 1 } }, seriesColors: ["#8ebc00", "#309b46", "#25a0da", "#ff6900", "#e61e26", "#d8e404", "#16aba9", "#7e51a1", "#313131", "#ed1691"], axisDefaults: { line: { color: "#c7c7c7" }, labels: { color: "#777777" }, minorGridLines: { color: "#c7c7c7" }, majorGridLines: { color: "#c7c7c7" }, title: { color: "#777777" }, crosshair: { color: "#c7c7c7" }, notes: { icon: { background: "transparent", border: { color: "#777777" } }, label: { color: "#777777" }, line: { color: "#777777" } } } }, gauge: { pointer: { color: "#8ebc00" }, scale: { rangePlaceholderColor: "#e6e6e6", labels: { color: "#777" }, minorTicks: { color: "#777" }, majorTicks: { color: "#777" }, line: { color: "#777" } } }, diagram: { shapeDefaults: { fill: { color: "#8ebc00" }, connectorDefaults: { fill: { color: n }, stroke: { color: b }, hover: { fill: { color: b }, stroke: { color: n } } }, content: { color: "#777" } }, editable: { resize: { handles: { fill: { color: b }, stroke: { color: "#787878" }, hover: { fill: { color: "#787878" }, stroke: { color: "#787878" } } } }, rotate: { thumb: { stroke: { color: "#787878" }, fill: { color: "#787878" } } } }, selectable: { stroke: { color: "#515967" } }, connectionDefaults: { stroke: { color: "#787878" }, content: { color: "#777" }, selection: { handles: { fill: { color: b }, stroke: { color: "#787878" } } } } }, treeMap: { colors: [["#8ebc00", "#e8f2cc"], ["#309b46", "#d6ebda"], ["#25a0da", "#d3ecf8"], ["#ff6900", "#ffe1cc"], ["#e61e26", "#fad2d4"], ["#d8e404", "#f7facd"], ["#16aba9", "#d0eeee"], ["#7e51a1", "#e5dcec"], ["#313131", "#d6d6d6"], ["#ed1691", "#fbd0e9"]] } }), m("metroblack", { chart: { title: { color: "#ffffff" }, legend: { labels: { color: "#ffffff" }, inactiveItems: { labels: { color: "#797979" }, markers: { color: "#797979" } } }, seriesDefaults: { border: { _brightness: 1 }, labels: { color: "#ffffff" }, errorBars: { color: "#ffffff" }, notes: { icon: { background: "transparent", border: { color: "#cecece" } }, label: { color: "#ffffff" }, line: { color: "#cecece" } }, line: { markers: { background: "#0e0e0e" } }, bubble: { opacity: .6 }, scatter: { markers: { background: "#0e0e0e" } }, scatterLine: { markers: { background: "#0e0e0e" } }, candlestick: { downColor: "#828282", line: { color: "#ffffff" } }, waterfall: { line: { color: "#cecece" } }, horizontalWaterfall: { line: { color: "#cecece" } }, overlay: { gradient: "none" } }, chartArea: { background: "#0e0e0e" }, seriesColors: ["#00aba9", "#309b46", "#8ebc00", "#ff6900", "#e61e26", "#d8e404", "#25a0da", "#7e51a1", "#313131", "#ed1691"], axisDefaults: { line: { color: "#cecece" }, labels: { color: "#ffffff" }, minorGridLines: { color: "#2d2d2d" }, majorGridLines: { color: "#333333" }, title: { color: "#ffffff" }, crosshair: { color: "#cecece" }, notes: { icon: { background: "transparent", border: { color: "#cecece" } }, label: { color: "#ffffff" }, line: { color: "#cecece" } } } }, gauge: { pointer: { color: "#00aba9" }, scale: { rangePlaceholderColor: "#2d2d2d", labels: { color: "#ffffff" }, minorTicks: { color: "#333333" }, majorTicks: { color: "#cecece" }, line: { color: "#cecece" } } }, diagram: { shapeDefaults: { fill: { color: "#00aba9" }, connectorDefaults: { fill: { color: b }, stroke: { color: "#0e0e0e" }, hover: { fill: { color: "#0e0e0e" }, stroke: { color: b } } }, content: { color: b } }, editable: { resize: { handles: { fill: { color: "#0e0e0e" }, stroke: { color: "#787878" }, hover: { fill: { color: "#787878" }, stroke: { color: "#787878" } } } }, rotate: { thumb: { stroke: { color: b }, fill: { color: b } } } }, selectable: { stroke: { color: "#787878" } }, connectionDefaults: { stroke: { color: b }, content: { color: b }, selection: { handles: { fill: { color: "#0e0e0e" }, stroke: { color: b } } } } }, treeMap: { colors: [["#00aba9", "#0b2d2d"], ["#309b46", "#152a19"], ["#8ebc00", "#28310b"], ["#ff6900", "#3e200b"], ["#e61e26", "#391113"], ["#d8e404", "#36390c"], ["#25a0da", "#132b37"], ["#7e51a1", "#241b2b"], ["#313131", "#151515"], ["#ed1691", "#3b1028"]] } }), m("moonlight", { chart: { title: { color: "#ffffff" }, legend: { labels: { color: "#ffffff" }, inactiveItems: { labels: { color: "#A1A7AB" }, markers: { color: "#A1A7AB" } } }, seriesDefaults: { labels: { color: "#ffffff" }, errorBars: { color: "#ffffff" }, notes: { icon: { background: "transparent", border: { color: "#8c909e" } }, label: { color: "#ffffff" }, line: { color: "#8c909e" } }, pie: { overlay: { gradient: "sharpBevel" } }, donut: { overlay: { gradient: "sharpGlass" } }, line: { markers: { background: "#212a33" } }, bubble: { opacity: .6 }, scatter: { markers: { background: "#212a33" } }, scatterLine: { markers: { background: "#212a33" } }, area: { opacity: .3 }, candlestick: { downColor: "#757d87", line: { color: "#ea9d06" }, border: { _brightness: 1.5, opacity: 1 }, highlight: { border: { color: b, opacity: .2 } } }, waterfall: { line: { color: "#8c909e" } }, horizontalWaterfall: { line: { color: "#8c909e" } }, ohlc: { line: { color: "#ea9d06" } } }, chartArea: { background: "#212a33" }, seriesColors: ["#ffca08", "#ff710f", "#ed2e24", "#ff9f03", "#e13c02", "#a00201"], axisDefaults: { line: { color: "#8c909e" }, minorTicks: { color: "#8c909e" }, majorTicks: { color: "#8c909e" }, labels: { color: "#ffffff" }, majorGridLines: { color: "#3e424d" }, minorGridLines: { color: "#2f3640" }, title: { color: "#ffffff" }, crosshair: { color: "#8c909e" }, notes: { icon: { background: "transparent", border: { color: "#8c909e" } }, label: { color: "#ffffff" }, line: { color: "#8c909e" } } } }, gauge: { pointer: { color: "#f4af03" }, scale: { rangePlaceholderColor: "#2f3640", labels: { color: b }, minorTicks: { color: "#8c909e" }, majorTicks: { color: "#8c909e" }, line: { color: "#8c909e" } } }, diagram: { shapeDefaults: { fill: { color: "#f3ae03" }, connectorDefaults: { fill: { color: b }, stroke: { color: "#414550" }, hover: { fill: { color: "#414550" }, stroke: { color: b } } }, content: { color: b } }, editable: { resize: { handles: { fill: { color: "#414550" }, stroke: { color: b }, hover: { fill: { color: b }, stroke: { color: b } } } }, rotate: { thumb: { stroke: { color: b }, fill: { color: b } } } }, selectable: { stroke: { color: b } }, connectionDefaults: { stroke: { color: b }, content: { color: b }, selection: { handles: { fill: { color: "#414550" }, stroke: { color: b } } } } }, treeMap: { colors: [["#ffca08", "#4e4b2b"], ["#ff710f", "#4e392d"], ["#ed2e24", "#4b2c31"], ["#ff9f03", "#4e422a"], ["#e13c02", "#482e2a"], ["#a00201", "#3b232a"]] } }), m("uniform", { chart: { title: { color: "#686868" }, legend: { labels: { color: "#686868" }, inactiveItems: { labels: { color: "#B6B6B6" }, markers: { color: "#B6B6B6" } } }, seriesDefaults: { labels: { color: "#686868" }, errorBars: { color: "#686868" }, notes: { icon: { background: "transparent", border: { color: "#9e9e9e" } }, label: { color: "#686868" }, line: { color: "#9e9e9e" } }, pie: { overlay: { gradient: "sharpBevel" } }, donut: { overlay: { gradient: "sharpGlass" } }, line: { markers: { background: "#ffffff" } }, bubble: { opacity: .6 }, scatter: { markers: { background: "#ffffff" } }, scatterLine: { markers: { background: "#ffffff" } }, area: { opacity: .3 }, candlestick: { downColor: "#cccccc", line: { color: "#cccccc" }, border: { _brightness: 1.5, opacity: 1 }, highlight: { border: { color: "#cccccc", opacity: .2 } } }, waterfall: { line: { color: "#9e9e9e" } }, horizontalWaterfall: { line: { color: "#9e9e9e" } }, ohlc: { line: { color: "#cccccc" } } }, chartArea: { background: "#ffffff" }, seriesColors: ["#527aa3", "#6f91b3", "#8ca7c2", "#a8bdd1", "#c5d3e0", "#e2e9f0"], axisDefaults: { line: { color: "#9e9e9e" }, minorTicks: { color: "#aaaaaa" }, majorTicks: { color: "#888888" }, labels: { color: "#686868" }, majorGridLines: { color: "#dadada" }, minorGridLines: { color: "#e7e7e7" }, title: { color: "#686868" }, crosshair: { color: "#9e9e9e" }, notes: { icon: { background: "transparent", border: { color: "#9e9e9e" } }, label: { color: "#686868" }, line: { color: "#9e9e9e" } } } }, gauge: { pointer: { color: "#527aa3" }, scale: { rangePlaceholderColor: "#e7e7e7", labels: { color: "#686868" }, minorTicks: { color: "#aaaaaa" }, majorTicks: { color: "#888888" }, line: { color: "#9e9e9e" } } }, diagram: { shapeDefaults: { fill: { color: "#d1d1d1" }, connectorDefaults: { fill: { color: "#686868" }, stroke: { color: b }, hover: { fill: { color: b }, stroke: { color: "#686868" } } }, content: { color: "#686868" } }, editable: { resize: { handles: { fill: { color: b }, stroke: { color: "#686868" }, hover: { fill: { color: "#686868" }, stroke: { color: "#686868" } } } }, rotate: { thumb: { stroke: { color: "#686868" }, fill: { color: "#686868" } } } }, selectable: { stroke: { color: "#686868" } }, connectionDefaults: { stroke: { color: "#686868" }, content: { color: "#686868" }, selection: { handles: { fill: { color: b }, stroke: { color: "#686868" } } } } }, treeMap: { colors: [["#527aa3", "#d0d8e1"], ["#6f91b3", "#d6dde4"], ["#8ca7c2", "#dce1e7"], ["#a8bdd1", "#e2e6ea"], ["#c5d3e0", "#e7eaed"], ["#e2e9f0", "#edeff0"]] } }), m("bootstrap", { chart: { title: { color: "#333333" }, legend: { labels: { color: "#333333" }, inactiveItems: { labels: { color: "#999999" }, markers: { color: "#9A9A9A" } } }, seriesDefaults: { labels: { color: "#333333" }, overlay: { gradient: "none" }, errorBars: { color: "#343434" }, notes: { icon: { background: "#000000", border: { color: "#000000" } }, label: { color: "#333333" }, line: { color: "#000000" } }, pie: { overlay: { gradient: "none" } }, donut: { overlay: { gradient: "none" } }, line: { markers: { background: "#ffffff" } }, bubble: { opacity: .6 }, scatter: { markers: { background: "#ffffff" } }, scatterLine: { markers: { background: "#ffffff" } }, area: { opacity: .8 }, candlestick: { downColor: "#d0d0d0", line: { color: "#333333" }, border: { _brightness: 1.5, opacity: 1 }, highlight: { border: { color: "#b8b8b8", opacity: .2 } } }, waterfall: { line: { color: "#cccccc" } }, horizontalWaterfall: { line: { color: "#cccccc" } }, ohlc: { line: { color: "#333333" } } }, chartArea: { background: "#ffffff" }, seriesColors: ["#428bca", "#5bc0de", "#5cb85c", "#f2b661", "#e67d4a", "#da3b36"], axisDefaults: { line: { color: "#cccccc" }, minorTicks: { color: "#ebebeb" }, majorTicks: { color: "#cccccc" }, labels: { color: "#333333" }, majorGridLines: { color: "#cccccc" }, minorGridLines: { color: "#ebebeb" }, title: { color: "#333333" }, crosshair: { color: "#000000" }, notes: { icon: { background: "#000000", border: { color: "#000000" } }, label: { color: "#ffffff" }, line: { color: "#000000" } } } }, gauge: { pointer: { color: "#428bca" }, scale: { rangePlaceholderColor: "#cccccc", labels: { color: "#333333" }, minorTicks: { color: "#ebebeb" }, majorTicks: { color: "#cccccc" }, line: { color: "#cccccc" } } }, diagram: { shapeDefaults: { fill: { color: "#428bca" }, connectorDefaults: { fill: { color: "#333333" }, stroke: { color: b }, hover: { fill: { color: b }, stroke: { color: "#333333" } } }, content: { color: "#333333" } }, editable: { resize: { handles: { fill: { color: b }, stroke: { color: "#333333" }, hover: { fill: { color: "#333333" }, stroke: { color: "#333333" } } } }, rotate: { thumb: { stroke: { color: "#333333" }, fill: { color: "#333333" } } } }, selectable: { stroke: { color: "#333333" } }, connectionDefaults: { stroke: { color: "#c4c4c4" }, content: { color: "#333333" }, selection: { handles: { fill: { color: b }, stroke: { color: "#333333" } }, stroke: { color: "#333333" } } } }, treeMap: { colors: [["#428bca", "#d1e0ec"], ["#5bc0de", "#d6eaf0"], ["#5cb85c", "#d6e9d6"], ["#5cb85c", "#f4e8d7"], ["#e67d4a", "#f2ddd3"], ["#da3b36", "#f0d0cf"]] } }), m("flat", { chart: { title: { color: "#4c5356" }, legend: { labels: { color: "#4c5356" }, inactiveItems: { labels: { color: "#CBCBCB" }, markers: { color: "#CBCBCB" } } }, seriesDefaults: { labels: { color: "#4c5356" }, errorBars: { color: "#4c5356" }, notes: { icon: { background: "transparent", border: { color: "#cdcdcd" } }, label: { color: "#4c5356" }, line: { color: "#cdcdcd" } }, candlestick: { downColor: "#c7c7c7", line: { color: "#787878" } }, area: { opacity: .9 }, waterfall: { line: { color: "#cdcdcd" } }, horizontalWaterfall: { line: { color: "#cdcdcd" } }, overlay: { gradient: "none" }, border: { _brightness: 1 } }, seriesColors: ["#10c4b2", "#ff7663", "#ffb74f", "#a2df53", "#1c9ec4", "#ff63a5", "#1cc47b"], axisDefaults: { line: { color: "#cdcdcd" }, labels: { color: "#4c5356" }, minorGridLines: { color: "#cdcdcd" }, majorGridLines: { color: "#cdcdcd" }, title: { color: "#4c5356" }, crosshair: { color: "#cdcdcd" }, notes: { icon: { background: "transparent", border: { color: "#cdcdcd" } }, label: { color: "#4c5356" }, line: { color: "#cdcdcd" } } } }, gauge: { pointer: { color: "#10c4b2" }, scale: { rangePlaceholderColor: "#cdcdcd", labels: { color: "#4c5356" }, minorTicks: { color: "#4c5356" }, majorTicks: { color: "#4c5356" }, line: { color: "#4c5356" } } }, diagram: { shapeDefaults: { fill: { color: "#10c4b2" }, connectorDefaults: { fill: { color: "#363940" }, stroke: { color: b }, hover: { fill: { color: b }, stroke: { color: "#363940" } } }, content: { color: "#4c5356" } }, editable: { resize: { handles: { fill: { color: b }, stroke: { color: "#363940" }, hover: { fill: { color: "#363940" }, stroke: { color: "#363940" } } } }, rotate: { thumb: { stroke: { color: "#363940" }, fill: { color: "#363940" } } } }, selectable: { stroke: { color: "#363940" } }, connectionDefaults: { stroke: { color: "#cdcdcd" }, content: { color: "#4c5356"
                    }, selection: { handles: { fill: { color: b }, stroke: { color: "#363940" } }, stroke: { color: "#363940" } } } }, treeMap: { colors: [["#10c4b2", "#cff3f0"], ["#ff7663", "#ffe4e0"], ["#ffb74f", "#fff1dc"], ["#a2df53", "#ecf9dd"], ["#1c9ec4", "#d2ecf3"], ["#ff63a5", "#ffe0ed"], ["#1cc47b", "#d2f3e5"]] } }), m("material", { chart: { title: { color: "#444444" }, legend: { labels: { color: "#444444" }, inactiveItems: { labels: { color: "#CBCBCB" }, markers: { color: "#CBCBCB" } } }, seriesDefaults: { labels: { color: "#444444" }, errorBars: { color: "#444444" }, notes: { icon: { background: "transparent", border: { color: "#e5e5e5" } }, label: { color: "#444444" }, line: { color: "#e5e5e5" } }, candlestick: { downColor: "#c7c7c7", line: { color: "#787878" } }, area: { opacity: .9 }, waterfall: { line: { color: "#e5e5e5" } }, horizontalWaterfall: { line: { color: "#e5e5e5" } }, overlay: { gradient: "none" }, border: { _brightness: 1 } }, seriesColors: ["#3f51b5", "#03a9f4", "#4caf50", "#f9ce1d", "#ff9800", "#ff5722"], axisDefaults: { line: { color: "#e5e5e5" }, labels: { color: "#444444" }, minorGridLines: { color: "#e5e5e5" }, majorGridLines: { color: "#e5e5e5" }, title: { color: "#444444" }, crosshair: { color: "#7f7f7f" }, notes: { icon: { background: "transparent", border: { color: "#e5e5e5" } }, label: { color: "#444444" }, line: { color: "#e5e5e5" } } } }, gauge: { pointer: { color: "#3f51b5" }, scale: { rangePlaceholderColor: "#e5e5e5", labels: { color: "#444444" }, minorTicks: { color: "#444444" }, majorTicks: { color: "#444444" }, line: { color: "#444444" } } }, diagram: { shapeDefaults: { fill: { color: "#3f51b5" }, connectorDefaults: { fill: { color: "#7f7f7f" }, stroke: { color: b }, hover: { fill: { color: b }, stroke: { color: "#7f7f7f" } } }, content: { color: "#444444" } }, editable: { resize: { handles: { fill: { color: b }, stroke: { color: "#444444" }, hover: { fill: { color: "#444444" }, stroke: { color: "#444444" } } } }, rotate: { thumb: { stroke: { color: "#444444" }, fill: { color: "#444444" } } } }, selectable: { stroke: { color: "#444444" } }, connectionDefaults: { stroke: { color: "#7f7f7f" }, content: { color: "#444444" }, selection: { handles: { fill: { color: b }, stroke: { color: "#444444" } }, stroke: { color: "#444444" } } } }, treeMap: { colors: [["#3f51b5", "#cff3f0"], ["#03a9f4", "#e5f6fe"], ["#4caf50", "#edf7ed"], ["#f9ce1d", "#fefae8"], ["#ff9800", "#fff4e5"], ["#ff5722", "#ffeee8"]] } }), m("materialblack", { chart: { title: { color: "#fff" }, legend: { labels: { color: "#fff" }, inactiveItems: { labels: { color: "#CBCBCB" }, markers: { color: "#CBCBCB" } } }, seriesDefaults: { labels: { color: "#fff" }, errorBars: { color: "#fff" }, notes: { icon: { background: "transparent", border: { color: "#e5e5e5" } }, label: { color: "#fff" }, line: { color: "#e5e5e5" } }, candlestick: { downColor: "#c7c7c7", line: { color: "#787878" } }, area: { opacity: .9 }, waterfall: { line: { color: "#4d4d4d" } }, horizontalWaterfall: { line: { color: "#4d4d4d" } }, overlay: { gradient: "none" }, border: { _brightness: 1 } }, chartArea: { background: "#1c1c1c" }, seriesColors: ["#3f51b5", "#03a9f4", "#4caf50", "#f9ce1d", "#ff9800", "#ff5722"], axisDefaults: { line: { color: "#4d4d4d" }, labels: { color: "#fff" }, minorGridLines: { color: "#4d4d4d" }, majorGridLines: { color: "#4d4d4d" }, title: { color: "#fff" }, crosshair: { color: "#7f7f7f" }, notes: { icon: { background: "transparent", border: { color: "#4d4d4d" } }, label: { color: "#fff" }, line: { color: "#4d4d4d" } } } }, gauge: { pointer: { color: "#3f51b5" }, scale: { rangePlaceholderColor: "#4d4d4d", labels: { color: "#fff" }, minorTicks: { color: "#fff" }, majorTicks: { color: "#fff" }, line: { color: "#fff" } } }, diagram: { shapeDefaults: { fill: { color: "#3f51b5" }, connectorDefaults: { fill: { color: "#7f7f7f" }, stroke: { color: b }, hover: { fill: { color: b }, stroke: { color: "#7f7f7f" } } }, content: { color: "#fff" } }, editable: { resize: { handles: { fill: { color: b }, stroke: { color: "#fff" }, hover: { fill: { color: "#fff" }, stroke: { color: "#fff" } } } }, rotate: { thumb: { stroke: { color: "#fff" }, fill: { color: "#fff" } } } }, selectable: { stroke: { color: "#fff" } }, connectionDefaults: { stroke: { color: "#7f7f7f" }, content: { color: "#fff" }, selection: { handles: { fill: { color: b }, stroke: { color: "#fff" } }, stroke: { color: "#fff" } } } }, treeMap: { colors: [["#3f51b5", "#cff3f0"], ["#03a9f4", "#e5f6fe"], ["#4caf50", "#edf7ed"], ["#f9ce1d", "#fefae8"], ["#ff9800", "#fff4e5"], ["#ff5722", "#ffeee8"]] } }), function () {
            function o() {
                return { icon: { background: "#007cc0", border: { color: "#007cc0" } }, label: { color: "#ffffff" }, line: { color: a } };
            }var r = "#333333",
                l = "#7f7f7f",
                c = "#bdbdbd",
                a = "#c8c8c8",
                t = "#dddddd",
                n = ["#008fd3", "#99d101", "#f39b02", "#f05662", "#c03c53", "#acacac"],
                i = ["#cbe8f5", "#eaf5cb", "#fceacc", "#fbdcdf", "#f2d7dc", "#eeeeee"],
                f = n[0],
                s = b;m("fiori", { chart: { title: { color: r }, legend: { labels: { color: r }, inactiveItems: { labels: { color: l }, markers: { color: l } } }, seriesDefaults: { labels: { color: r }, errorBars: { color: r }, notes: o(), candlestick: { downColor: a, line: { color: c } }, area: { opacity: .8 }, waterfall: { line: { color: a } }, horizontalWaterfall: { line: { color: a } }, overlay: { gradient: "none" }, border: { _brightness: 1 } }, seriesColors: n, axisDefaults: { line: { color: a }, labels: { color: r }, minorGridLines: { color: t }, majorGridLines: { color: a }, title: { color: r }, crosshair: { color: l }, notes: o() } }, gauge: { pointer: { color: f }, scale: { rangePlaceholderColor: a, labels: { color: r }, minorTicks: { color: r }, majorTicks: { color: r }, line: { color: r } } }, diagram: { shapeDefaults: { fill: { color: f }, connectorDefaults: { fill: { color: r }, stroke: { color: s }, hover: { fill: { color: s }, stroke: { color: r } } }, content: { color: r } }, editable: { resize: { handles: { fill: { color: s }, stroke: { color: c }, hover: { fill: { color: c }, stroke: { color: c } } } }, rotate: { thumb: { stroke: { color: c }, fill: { color: c } } } }, selectable: { stroke: { color: c } }, connectionDefaults: { stroke: { color: c }, content: { color: c }, selection: { handles: { fill: { color: s }, stroke: { color: c } }, stroke: { color: c } } } }, treeMap: { colors: e(n, i) } });
        }(), function () {
            function o() {
                return { icon: { background: "#00b0ff", border: { color: "#00b0ff" } }, label: { color: "#ffffff" }, line: { color: a } };
            }var r = "#4e4e4e",
                l = "#7f7f7f",
                c = "#bdbdbd",
                a = "#c8c8c8",
                t = "#e5e5e5",
                n = ["#0072c6", "#5db2ff", "#008a17", "#82ba00", "#ff8f32", "#ac193d"],
                i = ["#cbe2f3", "#deeffe", "#cbe7d0", "#e5f0cb", "#fee8d5", "#eed0d7"],
                f = n[0],
                s = b;m("office365", { chart: { title: { color: r }, legend: { labels: { color: r }, inactiveItems: { labels: { color: l }, markers: { color: l } } }, seriesDefaults: { labels: { color: r }, errorBars: { color: r }, notes: o(), candlestick: { downColor: a, line: { color: c } }, area: { opacity: .8 }, waterfall: { line: { color: a } }, horizontalWaterfall: { line: { color: a } }, overlay: { gradient: "none" }, border: { _brightness: 1 } }, seriesColors: n, axisDefaults: { line: { color: a }, labels: { color: r }, minorGridLines: { color: t }, majorGridLines: { color: a }, title: { color: r }, crosshair: { color: l }, notes: o() } }, gauge: { pointer: { color: f }, scale: { rangePlaceholderColor: a, labels: { color: r }, minorTicks: { color: r }, majorTicks: { color: r }, line: { color: r } } }, diagram: { shapeDefaults: { fill: { color: f }, connectorDefaults: { fill: { color: r }, stroke: { color: s }, hover: { fill: { color: s }, stroke: { color: r } } }, content: { color: r } }, editable: { resize: { handles: { fill: { color: s }, stroke: { color: c }, hover: { fill: { color: c }, stroke: { color: c } } } }, rotate: { thumb: { stroke: { color: c }, fill: { color: c } } } }, selectable: { stroke: { color: c } }, connectionDefaults: { stroke: { color: c }, content: { color: c }, selection: { handles: { fill: { color: s }, stroke: { color: c } }, stroke: { color: c } } } }, treeMap: { colors: e(n, i) } });
        }(), function () {
            function o() {
                return { icon: { background: "#007cc0", border: { color: "#007cc0" } }, label: { color: "#ffffff" }, line: { color: a } };
            }var r = "#32364c",
                l = "#7f7f7f",
                c = "#bdbdbd",
                a = "#dfe0e1",
                t = "#dfe0e1",
                n = ["#ff4350", "#ff9ea5", "#00acc1", "#80deea", "#ffbf46", "#ffd78c"],
                i = ["#ffd9dc", "#ffeced", "#cceef3", "#e6f8fb", "#fff2da", "#fff7e8"],
                f = n[0],
                s = b;m("nova", { chart: { title: { color: r }, legend: { labels: { color: r }, inactiveItems: { labels: { color: l }, markers: { color: l } } }, seriesDefaults: { labels: { color: r }, errorBars: { color: r }, notes: o(), candlestick: { downColor: a, line: { color: c } }, area: { opacity: .8 }, waterfall: { line: { color: a } }, horizontalWaterfall: { line: { color: a } }, overlay: { gradient: "none" }, border: { _brightness: 1 } }, seriesColors: n, axisDefaults: { line: { color: a }, labels: { color: r }, minorGridLines: { color: t }, majorGridLines: { color: a }, title: { color: r }, crosshair: { color: r }, notes: o() } }, gauge: { pointer: { color: f }, scale: { rangePlaceholderColor: a, labels: { color: r }, minorTicks: { color: r }, majorTicks: { color: r }, line: { color: r } } }, diagram: { shapeDefaults: { fill: { color: f }, connectorDefaults: { fill: { color: r }, stroke: { color: s }, hover: { fill: { color: s }, stroke: { color: r } } }, content: { color: r } }, editable: { resize: { handles: { fill: { color: s }, stroke: { color: c }, hover: { fill: { color: c }, stroke: { color: c } } } }, rotate: { thumb: { stroke: { color: c }, fill: { color: c } } } }, selectable: { stroke: { color: c } }, connectionDefaults: { stroke: { color: c }, content: { color: c }, selection: { handles: { fill: { color: s }, stroke: { color: c } }, stroke: { color: c } } } }, treeMap: { colors: e(n, i) } });
        }();
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (o, e, r) {
    (r || e)();
});;!function (e, define) {
    define("util/main.min", ["kendo.core.min"], e);
}(function () {
    return function () {
        function e(e) {
            return (typeof e === "undefined" ? "undefined" : _typeof(e)) !== F;
        }function t(e, t) {
            var n = i(t);return L.round(e * n) / n;
        }function i(e) {
            return e ? L.pow(10, e) : 1;
        }function n(e, t, i) {
            return L.max(L.min(e, i), t);
        }function o(e) {
            return e * M;
        }function r(e) {
            return e / M;
        }function a(e) {
            return "number" == typeof e && !isNaN(e);
        }function s(t, i) {
            return e(t) ? t : i;
        }function l(e) {
            return e * e;
        }function c(e) {
            var t,
                i = [];for (t in e) {
                i.push(t + e[t]);
            }return i.sort().join("");
        }function h(e) {
            var t,
                i = 2166136261;for (t = 0; t < e.length; ++t) {
                i += (i << 1) + (i << 4) + (i << 7) + (i << 8) + (i << 24), i ^= e.charCodeAt(t);
            }return i >>> 0;
        }function u(e) {
            return h(c(e));
        }function p(e) {
            var t,
                i = e.length,
                n = z,
                o = O;for (t = 0; t < i; t++) {
                o = L.max(o, e[t]), n = L.min(n, e[t]);
            }return { min: n, max: o };
        }function f(e) {
            return p(e).min;
        }function d(e) {
            return p(e).max;
        }function g(e) {
            return x(e).min;
        }function m(e) {
            return x(e).max;
        }function x(e) {
            var t,
                i,
                n,
                o = z,
                r = O;for (t = 0, i = e.length; t < i; t++) {
                n = e[t], null !== n && isFinite(n) && (o = L.min(o, n), r = L.max(r, n));
            }return { min: o === z ? void 0 : o, max: r === O ? void 0 : r };
        }function v(e) {
            if (e) return e[e.length - 1];
        }function y(e, t) {
            return e.push.apply(e, t), e;
        }function _(e) {
            return E.template(e, { useWithBlock: !1, paramName: "d" });
        }function b(t, i) {
            return e(i) && null !== i ? " " + t + "='" + i + "' " : "";
        }function w(e) {
            var t,
                i = "";for (t = 0; t < e.length; t++) {
                i += b(e[t][0], e[t][1]);
            }return i;
        }function A(t) {
            var i,
                n,
                o = "";for (i = 0; i < t.length; i++) {
                n = t[i][1], e(n) && (o += t[i][0] + ":" + n + ";");
            }if ("" !== o) return o;
        }function k(e) {
            return "string" != typeof e && (e += "px"), e;
        }function S(e) {
            var t,
                i,
                n = [];if (e) for (t = E.toHyphens(e).split("-"), i = 0; i < t.length; i++) {
                n.push("k-pos-" + t[i]);
            }return n.join(" ");
        }function C(t) {
            return "" === t || null === t || "none" === t || "transparent" === t || !e(t);
        }function P(e) {
            for (var t = { 1: "i", 10: "x", 100: "c", 2: "ii", 20: "xx", 200: "cc", 3: "iii", 30: "xxx", 300: "ccc", 4: "iv", 40: "xl", 400: "cd", 5: "v", 50: "l", 500: "d", 6: "vi", 60: "lx", 600: "dc", 7: "vii", 70: "lxx", 700: "dcc", 8: "viii", 80: "lxxx", 800: "dccc", 9: "ix", 90: "xc", 900: "cm", 1e3: "m" }, i = [1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], n = ""; e > 0;) {
                e < i[0] ? i.shift() : (n += t[i[0]], e -= i[0]);
            }return n;
        }function T(e) {
            var t, i, n, o, r;for (e = e.toLowerCase(), t = { i: 1, v: 5, x: 10, l: 50, c: 100, d: 500, m: 1e3 }, i = 0, n = 0, o = 0; o < e.length; ++o) {
                if (r = t[e.charAt(o)], !r) return null;i += r, r > n && (i -= 2 * n), n = r;
            }return i;
        }function R(e) {
            var t = Object.create(null);return function () {
                var i,
                    n = "";for (i = arguments.length; --i >= 0;) {
                    n += ":" + arguments[i];
                }return n in t ? t[n] : t[n] = e.apply(this, arguments);
            };
        }function I(e) {
            for (var t, i, n = [], o = 0, r = e.length; o < r;) {
                t = e.charCodeAt(o++), t >= 55296 && t <= 56319 && o < r ? (i = e.charCodeAt(o++), 56320 == (64512 & i) ? n.push(((1023 & t) << 10) + (1023 & i) + 65536) : (n.push(t), o--)) : n.push(t);
            }return n;
        }function V(e) {
            return e.map(function (e) {
                var t = "";return e > 65535 && (e -= 65536, t += String.fromCharCode(e >>> 10 & 1023 | 55296), e = 56320 | 1023 & e), t += String.fromCharCode(e);
            }).join("");
        }function B(e, t) {
            function i(e, i) {
                for (var n = [], o = 0, r = 0, a = 0; o < e.length && r < i.length;) {
                    t(e[o], i[r]) <= 0 ? n[a++] = e[o++] : n[a++] = i[r++];
                }return o < e.length && n.push.apply(n, e.slice(o)), r < i.length && n.push.apply(n, i.slice(r)), n;
            }return e.length < 2 ? e.slice() : function n(e) {
                var t, o, r;return e.length <= 1 ? e : (t = Math.floor(e.length / 2), o = e.slice(0, t), r = e.slice(t), o = n(o), r = n(r), i(o, r));
            }(e);
        }var L = Math,
            E = window.kendo,
            D = E.deepExtend,
            M = L.PI / 180,
            z = Number.MAX_VALUE,
            O = -Number.MAX_VALUE,
            F = "undefined",
            U = Date.now;U || (U = function U() {
            return new Date().getTime();
        }), D(E, { util: { MAX_NUM: z, MIN_NUM: O, append: y, arrayLimits: p, arrayMin: f, arrayMax: d, defined: e, deg: r, hashKey: h, hashObject: u, isNumber: a, isTransparent: C, last: v, limitValue: n, now: U, objectKey: c, round: t, rad: o, renderAttr: b, renderAllAttr: w, renderPos: S, renderSize: k, renderStyle: A, renderTemplate: _, sparseArrayLimits: x, sparseArrayMin: g, sparseArrayMax: m, sqr: l, valueOrDefault: s, romanToArabic: T, arabicToRoman: P, memoize: R, ucs2encode: V, ucs2decode: I, mergeSort: B } }), E.drawing.util = E.util, E.dataviz.util = E.util;
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, t, i) {
    (i || t)();
}), function (e, define) {
    define("util/text-metrics.min", ["kendo.core.min", "util/main.min"], e);
}(function () {
    !function (e) {
        function t() {
            return { width: 0, height: 0, baseline: 0 };
        }function i(e, t, i) {
            return u.current.measure(e, t, i);
        }function n(e, t) {
            var i = [];if (e.length > 0 && document.fonts) {
                try {
                    i = e.map(function (e) {
                        return document.fonts.load(e);
                    });
                } catch (n) {
                    r.logToConsole(n);
                }Promise.all(i).then(t, t);
            } else t();
        }var o = document,
            r = window.kendo,
            a = r.Class,
            s = r.util,
            l = s.defined,
            c = a.extend({ init: function init(e) {
                this._size = e, this._length = 0, this._map = {};
            }, put: function put(e, t) {
                var i = this,
                    n = i._map,
                    o = { key: e, value: t };n[e] = o, i._head ? (i._tail.newer = o, o.older = i._tail, i._tail = o) : i._head = i._tail = o, i._length >= i._size ? (n[i._head.key] = null, i._head = i._head.newer, i._head.older = null) : i._length++;
            }, get: function get(e) {
                var t = this,
                    i = t._map[e];if (i) return i === t._head && i !== t._tail && (t._head = i.newer, t._head.older = null), i !== t._tail && (i.older && (i.older.newer = i.newer, i.newer.older = i.older), i.older = t._tail, i.newer = null, t._tail.newer = i, t._tail = i), i.value;
            } }),
            h = e("<div style='position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;padding: 0 !important; margin: 0 !important; border: 0 !important;line-height: normal !important; visibility: hidden !important; white-space: nowrap!important;' />")[0],
            u = a.extend({ init: function init(e) {
                this._cache = new c(1e3), this._initOptions(e);
            }, options: { baselineMarkerSize: 1 }, measure: function measure(i, n, r) {
                var a, c, u, p, f, d, g, m;if (!i) return t();if (a = s.objectKey(n), c = s.hashKey(i + a), u = this._cache.get(c), u) return u;p = t(), f = r ? r : h, d = this._baselineMarker().cloneNode(!1);for (g in n) {
                    m = n[g], l(m) && (f.style[g] = m);
                }return e(f).text(i), f.appendChild(d), o.body.appendChild(f), (i + "").length && (p.width = f.offsetWidth - this.options.baselineMarkerSize, p.height = f.offsetHeight, p.baseline = d.offsetTop + this.options.baselineMarkerSize), p.width > 0 && p.height > 0 && this._cache.put(c, p), f.parentNode.removeChild(f), p;
            }, _baselineMarker: function _baselineMarker() {
                return e("<div class='k-baseline-marker' style='display: inline-block; vertical-align: baseline;width: " + this.options.baselineMarkerSize + "px; height: " + this.options.baselineMarkerSize + "px;overflow: hidden;' />")[0];
            } });u.current = new u(), r.util.TextMetrics = u, r.util.LRUCache = c, r.util.loadFonts = n, r.util.measureText = i;
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (e, t, i) {
    (i || t)();
}), function (e, define) {
    define("util/base64.min", ["util/main.min"], e);
}(function () {
    return function () {
        function e(e) {
            var i,
                n,
                o,
                a,
                s,
                l,
                c,
                h = "",
                u = 0;for (e = t(e); u < e.length;) {
                i = e.charCodeAt(u++), n = e.charCodeAt(u++), o = e.charCodeAt(u++), a = i >> 2, s = (3 & i) << 4 | n >> 4, l = (15 & n) << 2 | o >> 6, c = 63 & o, isNaN(n) ? l = c = 64 : isNaN(o) && (c = 64), h = h + r.charAt(a) + r.charAt(s) + r.charAt(l) + r.charAt(c);
            }return h;
        }function t(e) {
            var t,
                i,
                n = "";for (t = 0; t < e.length; t++) {
                i = e.charCodeAt(t), i < 128 ? n += o(i) : i < 2048 ? (n += o(192 | i >>> 6), n += o(128 | 63 & i)) : i < 65536 && (n += o(224 | i >>> 12), n += o(128 | i >>> 6 & 63), n += o(128 | 63 & i));
            }return n;
        }var i = window.kendo,
            n = i.deepExtend,
            o = String.fromCharCode,
            r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n(i.util, { encodeBase64: e, encodeUTF8: t });
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, t, i) {
    (i || t)();
}), function (e, define) {
    define("mixins/observers.min", ["kendo.core.min"], e);
}(function () {
    return function (e) {
        var t = Math,
            i = window.kendo,
            n = i.deepExtend,
            o = e.inArray,
            r = { observers: function observers() {
                return this._observers = this._observers || [];
            }, addObserver: function addObserver(e) {
                return this._observers ? this._observers.push(e) : this._observers = [e], this;
            }, removeObserver: function removeObserver(e) {
                var t = this.observers(),
                    i = o(e, t);return i != -1 && t.splice(i, 1), this;
            }, trigger: function trigger(e, t) {
                var i,
                    n,
                    o = this._observers;if (o && !this._suspended) for (n = 0; n < o.length; n++) {
                    i = o[n], i[e] && i[e](t);
                }return this;
            }, optionsChange: function optionsChange(e) {
                e = e || {}, e.element = this, this.trigger("optionsChange", e);
            }, geometryChange: function geometryChange() {
                this.trigger("geometryChange", { element: this });
            }, suspend: function suspend() {
                return this._suspended = (this._suspended || 0) + 1, this;
            }, resume: function resume() {
                return this._suspended = t.max((this._suspended || 0) - 1, 0), this;
            }, _observerField: function _observerField(e, t) {
                this[e] && this[e].removeObserver(this), this[e] = t, t.addObserver(this);
            } };n(i, { mixins: { ObserversMixin: r } });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, t, i) {
    (i || t)();
}), function (e, define) {
    define("kendo.dataviz.chart.min", ["kendo.color.min", "kendo.data.min", "kendo.dataviz.core.min", "kendo.dataviz.themes.min", "kendo.drawing.min", "kendo.userevents.min"], e);
}(function () {
    return function (e, t) {
        function i() {
            return this;
        }function n() {
            this._defaults = {};
        }function o(e, t, i, n) {
            var o,
                r,
                a = (n.x - i.x) * (e.y - i.y) - (n.y - i.y) * (e.x - i.x),
                s = (n.y - i.y) * (t.x - e.x) - (n.x - i.x) * (t.y - e.y);return 0 !== s && (r = a / s, o = new ui(e.x + r * (t.x - e.x), e.y + r * (t.y - e.y))), o;
        }function r(e, t) {
            var i,
                n,
                o,
                r = e.series,
                s = r.length,
                l = e.seriesDefaults,
                c = Xt({}, e.seriesDefaults),
                h = t ? Xt({}, t.seriesDefaults) : {},
                u = Xt({}, h);for (a(c), a(u), i = 0; i < s; i++) {
                n = r[i].type || e.seriesDefaults.type, o = Xt({ data: [] }, u, h[n], { tooltip: e.tooltip }, c, l[n]), r[i]._defaults = o, r[i] = Xt({}, o, r[i]);
            }
        }function a(e) {
            delete e.bar, delete e.column, delete e.rangeColumn, delete e.line, delete e.verticalLine, delete e.pie, delete e.donut, delete e.area, delete e.verticalArea, delete e.scatter, delete e.scatterLine, delete e.bubble, delete e.candlestick, delete e.ohlc, delete e.boxPlot, delete e.bullet, delete e.verticalBullet, delete e.polarArea, delete e.polarLine, delete e.radarArea, delete e.radarLine, delete e.waterfall;
        }function s(e) {
            var t,
                i,
                n,
                o,
                r = e.series,
                a = e.seriesColors || [];for (t = 0; t < r.length; t++) {
                i = r[t], n = a[t % a.length], i.color = i.color || n, o = i._defaults, o && (o.color = o.color || n);
            }
        }function l(e) {
            var t;Et([nn, hr, vr, yr], function () {
                t = this + "Axes", e[t] && (e[this + "Axis"] = e[t], delete e[t]);
            });
        }function c(t, i) {
            var n = (i || {}).axisDefaults || {};Et([nn, hr, vr, yr], function () {
                var i = this + "Axis",
                    o = [].concat(t[i]),
                    r = t.axisDefaults || {};o = e.map(o, function (e) {
                    var t = (e || {}).color,
                        o = Xt({}, n, n[i], r, r[i], { line: { color: t }, labels: { color: t }, title: { color: t } }, e);return delete o[i], o;
                }), t[i] = o.length > 1 ? o : o[0];
            });
        }function h(e) {
            var t,
                i = e.length,
                n = 0;for (t = 0; t < i; t++) {
                n = Ot.max(n, e[t].data.length);
            }return n;
        }function u(e) {
            return e * e;
        }function p(e, t) {
            if (null === t) return t;var i = Wt(e, !0);return i(t);
        }function f(e, t) {
            if (null === t) return t;var i = "_date_" + e,
                n = t[i];return n || (n = d(Wt(e, !0)(t)), t[i] = n), n;
        }function d(e) {
            var t, i;if (e instanceof Date) t = e;else if ((typeof e === "undefined" ? "undefined" : _typeof(e)) === Yo) t = Nt.parseDate(e) || new Date(e);else if (e) if (Dt(e)) for (t = [], i = 0; i < e.length; i++) {
                t.push(d(e[i]));
            } else t = new Date(e);return t;
        }function g(e) {
            return Dt(e) ? zt(e, g) : e ? d(e).getTime() : t;
        }function m(e, t, i, n) {
            var o,
                r = e;return e && (e = d(e), o = e.getHours(), i === _r ? (r = new Date(e.getFullYear() + t, 0, 1), Nt.date.adjustDST(r, 0)) : i === so ? (r = new Date(e.getFullYear(), e.getMonth() + t, 1), Nt.date.adjustDST(r, o)) : i === mr ? (r = m(x(e, n), 7 * t, xn), Nt.date.adjustDST(r, o)) : i === xn ? (r = new Date(e.getFullYear(), e.getMonth(), e.getDate() + t), Nt.date.adjustDST(r, o)) : i === Hn ? (e = new Date(e), e.setUTCMinutes(0, 0, 0), r = w(e, t * Qo)) : i === ao ? (r = w(e, t * Ko), r.getSeconds() > 0 && r.setSeconds(0)) : i === Eo ? r = w(e, t * Zo) : i === Do && (r = w(e, t)), i !== Do && r.getMilliseconds() > 0 && r.setMilliseconds(0)), r;
        }function x(e, t) {
            var i = e.getDay(),
                n = 0;if (!isNaN(i)) for (t = t || 0; i !== t;) {
                0 === i ? i = 6 : i--, n++;
            }return w(e, -n * $o);
        }function v(e, t, i) {
            return e = d(e), m(e, 0, t, i);
        }function y(e, t, i) {
            return e = d(e), e && v(e, t, i).getTime() === e.getTime() ? e : m(e, 1, t, i);
        }function _(e, t) {
            return e.getTime() - t;
        }function b(e, t) {
            var i = e.getTime() - t,
                n = e.getTimezoneOffset() - t.getTimezoneOffset();return i - n * Ko;
        }function w(e, t) {
            return new Date(e.getTime() + t);
        }function A(e, t, i) {
            var n;return n = i === _r ? t.getFullYear() - e.getFullYear() : i === so ? 12 * A(e, t, _r) + t.getMonth() - e.getMonth() : Ot.floor(i === xn ? _(t, e) / $o : _(t, e) / ir[i]);
        }function k(e, t, i, n) {
            var o,
                r = d(e),
                a = d(t);return o = i == so ? r.getMonth() - a.getMonth() + 12 * (r.getFullYear() - a.getFullYear()) + S(r, new Date(r.getFullYear(), r.getMonth()), xn) / new Date(r.getFullYear(), r.getMonth() + 1, 0).getDate() : i == _r ? r.getFullYear() - a.getFullYear() + k(r, new Date(r.getFullYear(), 0), so, 1) / 12 : i == xn || i == mr ? S(r, a, i) : _(r, t) / ir[i], o / n;
        }function S(e, t, i) {
            return b(e, t) / ir[i];
        }function C(e) {
            return 1 === e.length ? e[0] : e;
        }function P(e) {
            var t,
                i,
                n,
                o = e.length;if (o > 0) for (i = 0; i < o; i++) {
                n = e[i].contentBox(), t ? t.wrap(n) : t = n.clone();
            }return t || ii();
        }function T(e, t) {
            return e && t ? e.toLowerCase() === t.toLowerCase() : e === t;
        }function R(e, t) {
            return e && t ? g(e) === g(t) : e === t;
        }function I(e, t) {
            null !== t && e.push(t);
        }function V(e, t) {
            for (var i, n, o = 0, r = t.length - 1; o <= r;) {
                if (i = Ot.floor((o + r) / 2), n = t[i], n < e) o = i + 1;else {
                    if (!(n > e)) {
                        for (; R(t[i - 1], e);) {
                            i--;
                        }return i;
                    }r = i - 1;
                }
            }return t[i] <= e ? i : i - 1;
        }function B(e) {
            return "number" == typeof e && !isNaN(e);
        }function L(e) {
            var t,
                i,
                n = e.length,
                o = 0;for (t = 0; t < n; t++) {
                i = e[t], B(i) && o++;
            }return o;
        }function E(e) {
            return L(e) === e.length;
        }function D(e) {
            var t,
                i,
                n,
                o = {};for (t = 0; t < e.length; t++) {
                i = e[t], n = i.options.name, n && (o[n] = i.range());
            }return o;
        }function M(e, t, i, n) {
            var o,
                r,
                a,
                s,
                l,
                c = !1;if (i = i || {}, a = i.excluded = i.excluded || [], s = i.defaults = i.defaults || {}, l = i.depth = i.depth || 0, !(l > to)) {
                for (o in e) {
                    !Ai(o, i.excluded) && e.hasOwnProperty(o) && (r = e[o], Zt(r) ? (c = !0, n || (e[o] = Mi(r(t), s[o]))) : (typeof r === "undefined" ? "undefined" : _typeof(r)) === vo && (n || (i.defaults = s[o]), i.depth++, c = M(r, t, i, n) || c, i.depth--));
                }return c;
            }
        }function z(e, i) {
            var n,
                o,
                r,
                a = [],
                s = e.groupNameTemplate,
                l = i.length;if (0 === l) return r = Xt({}, e), r.visibleInLegend = !1, [r];for (Ri(s) ? (Nt.logToConsole("'groupNameTemplate' is obsolete and will be removed in future versions. Specify the group name template as 'series.name'"), s && (n = Kt(s))) : (n = Kt(e.name || ""), 0 === n._slotCount && (n = Kt(Ri(e.name) ? "#= group.value #: #= series.name #" : "#= group.value #"))), o = 0; o < l; o++) {
                r = Xt({}, e), Zt(r.color) || (r.color = t), r._groupIx = o, r._groupValue = i[o].value, a.push(r), n && (r.name = n({ series: r, group: i[o] }));
            }return a;
        }function O(e, t) {
            var i,
                n,
                o = [];for (t = [].concat(t), i = 0; i < e.length; i++) {
                n = e[i], Ai(n.type, t) && o.push(n);
            }return o;
        }function F(t, i) {
            if (t instanceof Date) {
                for (var n = 0, o = i.length; n < o; n++) {
                    if (R(i[n], t)) return n;
                }return -1;
            }return e.inArray(t, i);
        }function U(e, t) {
            t = t || _i;for (var i = 1, n = e.length; i < n; i++) {
                if (t(e[i], e[i - 1]) < 0) {
                    e.sort(t);break;
                }
            }return e;
        }function H(e, t) {
            var i,
                n = U(e, t),
                o = n.length,
                r = o > 0 ? [n[0]] : [];for (t = t || _i, i = 1; i < o; i++) {
                0 !== t(n[i], Ii(r)) && r.push(n[i]);
            }return r;
        }function N(e, t) {
            var i = e.type,
                n = t instanceof Date;return !i && n || T(i, mn);
        }function j(e) {
            var t,
                i,
                n,
                o,
                r = [],
                a = e.length;for (t = 0; t < a; t++) {
                for (i = e[t], o = i.length, n = 0; n < o; n++) {
                    r[n] = r[n] || [], r[n].push(i[n]);
                }
            }return r;
        }function G(e, t) {
            if (e.indexOf(".") > -1) for (var i, n = e.split("."), o = ""; n.length > 1;) {
                o += n.shift(), i = Nt.getter(o)(t) || {}, Nt.setter(o)(t, i), o += ".";
            }
        }function q(e) {
            var t,
                i,
                n,
                o = e.data,
                r = 0;for (t = 0; t < o.length; t++) {
                i = oe.current.bindPoint(e, t), n = i.valueFields.value, (typeof n === "undefined" ? "undefined" : _typeof(n)) === Yo && (n = parseFloat(n)), B(n) && i.fields.visible !== !1 && (r += Ot.abs(n));
            }return r;
        }function Y(e) {
            var t = e.overlay;return t && t.gradient && "none" != t.gradient;
        }function X(e) {
            for (var t = 0; t < e.length; t++) {
                if (Ri(e[t].zIndex)) return !0;
            }
        }function W() {
            this._defaultPrevented = !0;
        }function Z(e, t) {
            if (e) for (var i = 0; i < e.length; i++) {
                if (e[i].category === t) return [e[i]];
            }
        }function K(e) {
            return Ri(e) && null !== e;
        }function Q(e) {
            var t,
                i,
                n = {};for (i = 0; i < e.length; i++) {
                t = e[i], t.axis.options.name && (n[t.axis.options.name] = { min: t.range.min, max: t.range.max });
            }return n;
        }function $(e, t) {
            var i = (t || "").toLowerCase(),
                n = "none" == i && !(e.ctrlKey || e.shiftKey || e.altKey) || e[i + "Key"];return n;
        }function J(e, t) {
            var i = [];ee(e, i), Nt.util.loadFonts(i, t);
        }function ee(e, t, i) {
            var n = 5;i = i || { depth: 0 }, !e || i.depth > n || !document.fonts || Object.keys(e).forEach(function (n) {
                var o = e[n];"dataSource" !== n && "$" !== n[0] && o && ("font" === n ? t.push(o) : "object" == (typeof o === "undefined" ? "undefined" : _typeof(o)) && (i.depth++, ee(o, t, i), i.depth--));
            });
        }function te(e, t) {
            var i, n, o, r;for (o in t) {
                i = t[o], n = e[o], Ri(n) && (r = null === i, r || !Ri(i) ? (delete e[o], r && delete t[o]) : n && Mt(i) && Mt(i) && te(n, i));
            }
        }function ie(e, t) {
            var i, n;for (i = 0; i < e.length; i++) {
                if (n = e[i], n && n.pane === t) return n;
            }
        }var ne,
            oe,
            re,
            ae,
            se,
            le,
            ce,
            he,
            ue,
            pe,
            fe,
            de,
            ge,
            me,
            xe,
            ve,
            ye,
            _e,
            be,
            we,
            Ae,
            ke,
            Se,
            Ce,
            Pe,
            Te,
            Re,
            Ie,
            Ve,
            Be,
            Le,
            Ee,
            De,
            Me,
            ze,
            Oe,
            Fe,
            Ue,
            He,
            Ne,
            je,
            Ge,
            qe,
            Ye,
            Xe,
            We,
            Ze,
            Ke,
            Qe,
            $e,
            Je,
            et,
            tt,
            it,
            nt,
            ot,
            rt,
            at,
            st,
            lt,
            ct,
            ht,
            ut,
            pt,
            ft,
            dt,
            gt,
            mt,
            xt,
            vt,
            yt,
            _t,
            bt,
            wt,
            At,
            kt,
            St,
            Ct,
            Pt,
            Tt,
            Rt,
            It,
            Vt,
            Bt,
            Lt,
            Et = e.each,
            Dt = e.isArray,
            Mt = e.isPlainObject,
            zt = e.map,
            Ot = Math,
            Ft = e.noop,
            Ut = e.extend,
            Ht = e.proxy,
            Nt = window.kendo,
            jt = Nt.Class,
            Gt = Nt.Observable,
            qt = Nt.data.DataSource,
            Yt = Nt.ui.Widget,
            Xt = Nt.deepExtend,
            Wt = Nt.getter,
            Zt = Nt.isFunction,
            Kt = Nt.template,
            Qt = Nt._outerWidth,
            $t = Nt._outerHeight,
            Jt = Nt.dataviz,
            ei = Jt.Axis,
            ti = Jt.AxisLabel,
            ii = Jt.Box2D,
            ni = Jt.BoxElement,
            oi = Jt.ChartElement,
            ri = Nt.drawing.Color,
            ai = Jt.CurveProcessor,
            si = Jt.FloatElement,
            li = Jt.Note,
            ci = Jt.LogarithmicAxis,
            hi = Jt.NumericAxis,
            ui = Jt.Point2D,
            pi = Jt.RootElement,
            fi = Jt.Ring,
            di = Jt.ShapeElement,
            gi = Jt.ShapeBuilder,
            mi = Jt.TextBox,
            xi = Jt.Title,
            vi = Jt.alignPathToPixel,
            yi = Jt.autoFormat,
            _i = Jt.dateComparer,
            bi = Jt.eventTargetElement,
            wi = Jt.getSpacing,
            Ai = Jt.inArray,
            ki = Jt.interpolateValue,
            Si = Jt.mwDelta,
            Ci = Jt.round,
            Pi = Nt.util,
            Ti = Pi.append,
            Ri = Pi.defined,
            Ii = Pi.last,
            Vi = Pi.limitValue,
            Bi = Pi.sparseArrayLimits,
            Li = Pi.sparseArrayMin,
            Ei = Pi.sparseArrayMax,
            Di = Pi.renderTemplate,
            Mi = Pi.valueOrDefault,
            zi = Jt.geometry,
            Oi = Jt.drawing,
            Fi = ".kendoChart",
            Ui = "above",
            Hi = "area",
            Ni = "auto",
            ji = "fit",
            Gi = Jt.AXIS_LABEL_CLICK,
            qi = "bar",
            Yi = 6,
            Xi = .8,
            Wi = "below",
            Zi = "#000",
            Ki = "both",
            Qi = "bottom",
            $i = "boxPlot",
            Ji = "bubble",
            en = "bullet",
            tn = "candlestick",
            nn = "category",
            on = "center",
            rn = "change",
            an = "circle",
            sn = "contextmenu" + Fi,
            ln = Jt.CLIP,
            cn = "color",
            hn = "column",
            un = Jt.COORD_PRECISION,
            pn = "cross",
            fn = "k-",
            dn = "custom",
            gn = "dataBound",
            mn = "date",
            xn = "days",
            vn = Jt.DEFAULT_FONT,
            yn = Jt.DEFAULT_HEIGHT,
            _n = Jt.DEFAULT_PRECISION,
            bn = Jt.DEFAULT_WIDTH,
            wn = 4,
            An = "donut",
            kn = 50,
            Sn = "drag",
            Cn = "dragEnd",
            Pn = "dragStart",
            Tn = "errorLow",
            Rn = "errorHigh",
            In = "xErrorLow",
            Vn = "xErrorHigh",
            Bn = "yErrorLow",
            Ln = "yErrorHigh",
            En = "fadeIn",
            Dn = "first",
            Mn = "from",
            zn = "funnel",
            On = "glass",
            Fn = "horizontal",
            Un = "horizontalWaterfall",
            Hn = "hours",
            Nn = Jt.INITIAL_ANIMATION_DURATION,
            jn = "insideBase",
            Gn = "insideEnd",
            qn = "interpolate",
            Yn = "leave",
            Xn = "left",
            Wn = "legendItemClick",
            Zn = "legendItemHover",
            Kn = "line",
            Qn = 8,
            $n = "linear",
            Jn = "log",
            eo = "max",
            to = 5,
            io = Number.MAX_VALUE,
            no = "min",
            oo = .01,
            ro = -Number.MAX_VALUE,
            ao = "minutes",
            so = "months",
            lo = "mouseleave" + Fi,
            co = "mousemove.tracking",
            ho = "mousemove" + Fi,
            uo = 20,
            po = 150,
            fo = "DOMMouseScroll" + Fi + " mousewheel" + Fi,
            go = Jt.NOTE_CLICK,
            mo = Jt.NOTE_HOVER,
            xo = "noteText",
            vo = "object",
            yo = "ohlc",
            _o = "outsideEnd",
            bo = "pie",
            wo = 70,
            Ao = "plotAreaClick",
            ko = "plotAreaHover",
            So = "pointer",
            Co = "rangeBar",
            Po = "rangeColumn",
            To = "render",
            Ro = "right",
            Io = "roundedBevel",
            Vo = "roundedGlass",
            Bo = "scatter",
            Lo = "scatterLine",
            Eo = "seconds",
            Do = "milliseconds",
            Mo = "selectStart",
            zo = "select",
            Oo = "selectEnd",
            Fo = "seriesClick",
            Uo = "seriesHover",
            Ho = Nt.support.browser.msie && 10 === Nt.support.browser.version ? .001 : 0,
            No = "step",
            jo = "smooth",
            Go = "stderr",
            qo = "stddev",
            Yo = "string",
            Xo = "summary",
            Wo = 1,
            Zo = 1e3 * Wo,
            Ko = 60 * Zo,
            Qo = 60 * Ko,
            $o = 24 * Qo,
            Jo = 7 * $o,
            er = 31 * $o,
            tr = 365 * $o,
            ir = { years: tr, months: er, weeks: Jo, days: $o, hours: Qo, minutes: Ko, seconds: Zo, milliseconds: Wo },
            nr = "to",
            or = "top",
            rr = 150,
            ar = 5,
            sr = 100,
            lr = 100,
            cr = "chart-tooltip-inverse",
            hr = "value",
            ur = "verticalArea",
            pr = "verticalBoxPlot",
            fr = "verticalBullet",
            dr = "verticalLine",
            gr = "waterfall",
            mr = "weeks",
            xr = "#fff",
            vr = "x",
            yr = "y",
            _r = "years",
            br = "zero",
            wr = 3,
            Ar = "zoomStart",
            kr = "zoom",
            Sr = "zoomEnd",
            Cr = [Do, Eo, ao, Hn, xn, mr, so, _r],
            Pr = [qi, hn, yo, tn, $i, pr, en, Po, Co, gr, Un],
            Tr = { milliseconds: "HH:mm:ss.fff", seconds: "HH:mm:ss", minutes: "HH:mm", hours: "HH:mm", days: "M/d", weeks: "M/d", months: "MMM 'yy", years: "yyyy" },
            Rr = Yt.extend({ init: function init(e, i) {
                var n,
                    o,
                    r = this;Nt.destroy(e), Yt.fn.init.call(r, e), r.element.addClass(fn + this.options.name.toLowerCase()).css("position", "relative"), i && (o = i.dataSource, i.dataSource = t), n = Xt({}, r.options, i), r._originalOptions = Xt({}, n), r._initTheme(n), r._initSurface(), r.bind(r.events, r.options), r.wrapper = r.element, i && (i.dataSource = o), r._initDataSource(i), Nt.notify(r, Jt.ui);
            }, _initTheme: function _initTheme(i) {
                var n,
                    o = this,
                    r = Jt.ui.themes || {},
                    a = i.theme,
                    c = r[a] || r[a.toLowerCase()],
                    h = a && c ? c.chart : {},
                    u = [],
                    p = i.series || [];for (n = 0; n < p.length; n++) {
                    u.push(e.extend({}, p[n]));
                }i.series = u, l(i), o._applyDefaults(i, h), null === i.seriesColors && (i.seriesColors = t), o.options = Xt({}, h, i), s(o.options);
            }, _initDataSource: function _initDataSource(e) {
                var t = this,
                    i = (e || {}).dataSource;t._dataChangeHandler = Ht(t._onDataChanged, t), t.dataSource = qt.create(i).bind(rn, t._dataChangeHandler), t._bindCategories(), i && (t._hasDataSource = !0), J(e, function () {
                    t._redraw(), t._attachEvents();
                }), i && t.options.autoBind && t.dataSource.fetch();
            }, setDataSource: function setDataSource(e) {
                var t = this;t.dataSource.unbind(rn, t._dataChangeHandler), t.dataSource = e = qt.create(e), t._hasDataSource = !0, t._hasData = !1, e.bind(rn, t._dataChangeHandler), t.options.autoBind && e.fetch();
            }, events: [gn, Fo, Uo, Gi, Wn, Zn, Ao, ko, Pn, Sn, Cn, Ar, kr, Sr, Mo, zo, Oo, go, mo, To], items: function items() {
                return e();
            }, options: { name: "Chart", renderAs: "", theme: "default", chartArea: {}, legend: { visible: !0, labels: {} }, categoryAxis: {}, autoBind: !0, seriesDefaults: { type: hn, data: [], highlight: { visible: !0 }, labels: {}, negativeValues: { visible: !1 } }, series: [], seriesColors: null, tooltip: { visible: !1 }, transitions: !0, valueAxis: {}, plotArea: {}, title: {}, xAxis: {}, yAxis: {}, panes: [{}], pannable: !1, zoomable: !1 }, refresh: function refresh() {
                var e = this;e._applyDefaults(e.options), s(e.options), e._bindSeries(), e._bindCategories(), e.trigger(gn), e._redraw();
            }, getSize: function getSize() {
                return Nt.dimensions(this.element);
            }, _resize: function _resize() {
                var e = this.options.transitions;this.options.transitions = !1, this._redraw(), this.options.transitions = e;
            }, redraw: function redraw(e) {
                var t,
                    i,
                    n = this;n._applyDefaults(n.options), s(n.options), e ? (i = n._model._plotArea, t = i.findPane(e), i.redraw(t)) : n._redraw();
            }, getAxis: function getAxis(e) {
                var t,
                    i = this._plotArea.axes;for (t = 0; t < i.length; t++) {
                    if (i[t].options.name === e) return new Bt(i[t]);
                }
            }, findAxisByName: function findAxisByName(e) {
                return this.getAxis(e);
            }, plotArea: function plotArea() {
                return new It(this._plotArea);
            }, findPaneByName: function findPaneByName(e) {
                var t,
                    i = this._plotArea.panes;for (t = 0; t < i.length; t++) {
                    if (i[t].options.name === e) return new Vt(this, i[t]);
                }
            }, findPaneByIndex: function findPaneByIndex(e) {
                var t = this._plotArea.panes;if (t[e]) return new Vt(this, t[e]);
            }, findSeries: function findSeries(e) {
                var t,
                    i = this._plotArea,
                    n = i.srcSeries || i.series;for (t = 0; t < n.length; t++) {
                    if (e(n[t])) return new Lt(this, n[t]);
                }
            }, findSeriesByName: function findSeriesByName(e) {
                return this._createSeries({ name: e });
            }, findSeriesByIndex: function findSeriesByIndex(e) {
                return this._createSeries({ index: e });
            }, _createSeries: function _createSeries(e) {
                var t = this._seriesOptions(e);if (t) return new Lt(this, t);
            }, _seriesOptions: function _seriesOptions(e) {
                var t,
                    i,
                    n = this._plotArea,
                    o = n.srcSeries || n.series;if (Ri(e.index)) t = o[e.index];else if (Ri(e.name)) for (i = 0; i < o.length; i++) {
                    if (o[i].name === e.name) {
                        t = o[i];break;
                    }
                }return t;
            }, toggleHighlight: function toggleHighlight(e, t) {
                var i,
                    n,
                    o,
                    r = this._plotArea,
                    a = (r.srcSeries || r.series || [])[0];Nt.isFunction(t) ? o = r.filterPoints(t) : (Mt(t) ? (i = t.series, n = t.category) : i = n = t, o = a.type === An ? Z(r.pointsBySeriesName(i), n) : a.type === bo || a.type === zn ? Z((r.charts[0] || {}).points, n) : r.pointsBySeriesName(i)), o && this._togglePointsHighlight(e, o);
            }, _togglePointsHighlight: function _togglePointsHighlight(e, t) {
                var i,
                    n = this._highlight;for (i = 0; i < t.length; i++) {
                    n.togglePointHighlight(t[i], e);
                }
            }, showTooltip: function showTooltip(e) {
                var t,
                    i,
                    n,
                    o = this._sharedTooltip(),
                    r = this._tooltip,
                    a = this._plotArea;Nt.isFunction(e) ? (t = a.findPoint(e), t && o && (i = t.categoryIx)) : o && Ri(e) && (i = a.categoryAxis.categoryIndex(e)), o ? i >= 0 && (n = this._plotArea.pointsByCategoryIndex(i), r.showAt(n)) : t && r.show(t);
            }, hideTooltip: function hideTooltip() {
                this._tooltip.hide();
            }, _initSurface: function _initSurface() {
                var e = this.surface,
                    t = this._surfaceWrap(),
                    i = this.options.chartArea;i.width && t.css("width", i.width), i.height && t.css("height", i.height), e && e.options.type === this.options.renderAs ? (this.surface.clear(), this.surface.resize()) : (e && e.destroy(), this.surface = Oi.Surface.create(t, { type: this.options.renderAs }));
            }, _surfaceWrap: function _surfaceWrap() {
                return this.element;
            }, _redraw: function _redraw() {
                var e,
                    t = this,
                    i = t._getModel();t._destroyView(), t._model = i, t._plotArea = i._plotArea, i.renderVisual(), this.options.transitions !== !1 && i.traverse(function (e) {
                    e.animation && e.animation.setup();
                }), t._initSurface(), t.surface.draw(i.visual), this.options.transitions !== !1 && i.traverse(function (e) {
                    e.animation && e.animation.play();
                }), t._tooltip = t._createTooltip(), t._highlight = new vt(e), t._setupSelection(), t._createPannable(), t._createZoomSelection(), t._createMousewheelZoom(), t._hasDataSource && !t._hasData && t.options.autoBind || t.trigger(To);
            }, exportVisual: function exportVisual(e) {
                var t, i, n, o;return e && (e.width || e.height) ? (i = this.options.chartArea, n = this._originalOptions.chartArea, Xt(i, e), o = this._getModel(), i.width = n.width, i.height = n.height, o.renderVisual(), t = o.visual) : t = this.surface.exportVisual(), t;
            }, _sharedTooltip: function _sharedTooltip() {
                var e = this,
                    t = e.options;return e._plotArea instanceof ut && t.tooltip.shared;
            }, _createPannable: function _createPannable() {
                var e = this.options;e.pannable !== !1 && (this._pannable = new Ct(this._plotArea, e.pannable));
            }, _createZoomSelection: function _createZoomSelection() {
                var e = this.options.zoomable,
                    t = (e || {}).selection;e !== !1 && t !== !1 && (this._zoomSelection = new Pt(this, t));
            }, _createMousewheelZoom: function _createMousewheelZoom() {
                var e = this.options.zoomable,
                    t = (e || {}).mousewheel;e !== !1 && t !== !1 && (this._mousewheelZoom = new Tt(this, t));
            }, _createTooltip: function _createTooltip() {
                var e,
                    t = this,
                    i = t.options,
                    n = t.element;return e = t._sharedTooltip() ? new bt(n, t._plotArea, i.tooltip) : new _t(n, i.tooltip), e.bind(Yn, Ht(t._tooltipleave, t)), e;
            }, _tooltipleave: function _tooltipleave() {
                var e = this,
                    t = e._plotArea,
                    i = e._highlight;t.hideCrosshairs(), i.hide();
            }, _applyDefaults: function _applyDefaults(e, t) {
                c(e, t), r(e, t);
            }, _getModel: function _getModel() {
                var e,
                    t = this,
                    i = t.options,
                    n = new pi(t._modelOptions());return n.chart = t, xi.buildTitle(i.title, n), e = n._plotArea = t._createPlotArea(), i.legend.visible && n.append(new le(e.options.legend)), n.append(e), n.reflow(), n;
            }, _modelOptions: function _modelOptions() {
                var e = this,
                    t = e.options,
                    i = e.element,
                    n = Ot.floor(i.height()),
                    o = Ot.floor(i.width());return e._size = null, Xt({ width: o || bn, height: n || yn, transitions: t.transitions }, t.chartArea);
            }, _createPlotArea: function _createPlotArea(e) {
                var t = this,
                    i = t.options;return ne.current.create(e ? [] : i.series, i);
            }, _setupSelection: function _setupSelection() {
                var e,
                    t,
                    i,
                    n,
                    o,
                    r,
                    a = this,
                    s = a._plotArea,
                    l = s.axes,
                    c = a._selections = [];for (a._selectStartHandler || (a._selectStartHandler = Ht(a._selectStart, a), a._selectHandler = Ht(a._select, a), a._selectEndHandler = Ht(a._selectEnd, a)), t = 0; t < l.length; t++) {
                    i = l[t], r = i.options, i instanceof ce && r.select && !r.vertical && (n = 0, o = r.categories.length - 1, i instanceof he && (n = r.categories[n], o = r.categories[o]), r.justified || (i instanceof he ? o = m(o, 1, r.baseUnit, r.weekStartDay) : o++), e = new St(a, i, Xt({ min: n, max: o }, r.select)), e.bind(Mo, a._selectStartHandler), e.bind(zo, a._selectHandler), e.bind(Oo, a._selectEndHandler), c.push(e));
                }
            }, _selectStart: function _selectStart(e) {
                return this.trigger(Mo, e);
            }, _select: function _select(e) {
                return this.trigger(zo, e);
            }, _selectEnd: function _selectEnd(e) {
                return this.trigger(Oo, e);
            }, _attachEvents: function _attachEvents() {
                var e = this,
                    t = e.element,
                    i = e.surface;i.bind("mouseenter", Ht(e._mouseover, e)), i.bind("mouseleave", Ht(e._mouseout, e)), t.on(sn, Ht(e._click, e)), t.on(fo, Ht(e._mousewheel, e)), t.on(lo, Ht(e._mouseleave, e)), e._mousemove = Nt.throttle(Ht(e._mousemove, e), uo), e._shouldAttachMouseMove() && t.on(ho, e._mousemove), Nt.UserEvents && (e._userEvents = new Nt.UserEvents(t, { global: !0, multiTouch: !0, fastTap: !0, tap: Ht(e._tap, e), start: Ht(e._start, e), move: Ht(e._move, e), end: Ht(e._end, e), gesturestart: Ht(e._gesturestart, e), gesturechange: Ht(e._gesturechange, e), gestureend: Ht(e._gestureend, e) }));
            }, _gesturestart: function _gesturestart(e) {
                this._mousewheelZoom && (this._gestureDistance = e.distance, this._unsetActivePoint(), this.surface.suspendTracking());
            }, _gestureend: function _gestureend() {
                this._zooming && (this.surface && this.surface.resumeTracking(), this._zooming = !1, this.trigger(Sr, {}));
            }, _gesturechange: function _gesturechange(e) {
                var t,
                    i,
                    n,
                    o,
                    r = this,
                    a = r._mousewheelZoom;a && (e.preventDefault(), t = r._gestureDistance, i = -e.distance / t + 1, Ot.abs(i) >= .1 && (i = Ot.round(10 * i), r._gestureDistance = e.distance, n = { delta: i, axisRanges: D(r._plotArea.axes), originalEvent: e }, !r._zooming && r.trigger(Ar, n) || (r._zooming || (r._zooming = !0), o = n.axisRanges = a.updateRanges(i), o && !r.trigger(kr, n) && a.zoom())));
            }, _mouseout: function _mouseout(e) {
                if (e.element) {
                    var t = this._drawingChartElement(e.element, e);t && t.leave && t.leave(this, e.originalEvent);
                }
            }, _start: function _start(e) {
                var t = this,
                    i = t._events,
                    n = t._eventCoordinates(e);t._plotArea.backgroundContainsPoint(n) && (Ri(i[Pn] || i[Sn] || i[Cn]) && t._startNavigation(e, n, Pn), t._pannable && t._pannable.start(e) && (this.surface.suspendTracking(), this._unsetActivePoint()), t._zoomSelection && t._zoomSelection.start(e) && this.trigger(Ar, { axisRanges: D(this._plotArea.axes), originalEvent: e }));
            }, _move: function _move(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s = this,
                    l = s._navState,
                    c = s._pannable,
                    h = {};if (c) e.preventDefault(), h = c.move(e), h && !s.trigger(Sn, { axisRanges: h, originalEvent: e }) && c.pan();else if (l) {
                    for (e.preventDefault(), t = l.axes, i = 0; i < t.length; i++) {
                        n = t[i], o = n.options.name, o && (r = n.options.vertical ? e.y : e.x, a = r.startLocation - r.location, 0 !== a && (h[n.options.name] = n.translateRange(a)));
                    }l.axisRanges = h, s.trigger(Sn, { axisRanges: h, originalEvent: e });
                }s._zoomSelection && s._zoomSelection.move(e);
            }, _end: function _end(e) {
                var t,
                    i = this._pannable;i && i.end(e) ? (this.surface.resumeTracking(), this.trigger(Cn, { axisRanges: D(this._plotArea.axes), originalEvent: e })) : this._endNavigation(e, Cn), this._zoomSelection && (t = this._zoomSelection.end(e), t && !this.trigger(kr, { axisRanges: t, originalEvent: e }) && (this._zoomSelection.zoom(), this.trigger(Sr, { axisRanges: t, originalEvent: e })));
            }, _mousewheel: function _mousewheel(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l = this,
                    c = e.originalEvent,
                    h = Si(e),
                    u = l._navState,
                    p = {},
                    f = l._mousewheelZoom,
                    d = l._eventCoordinates(c);if (l._plotArea.backgroundContainsPoint(d)) if (f) s = { delta: h, axisRanges: D(this._plotArea.axes), originalEvent: e }, !l._zooming && l.trigger(Ar, s) || (e.preventDefault(), l._zooming || (l._unsetActivePoint(), l.surface.suspendTracking(), l._zooming = !0), l._mwTimeout && clearTimeout(l._mwTimeout), s.axisRanges = p = f.updateRanges(h), p && !l.trigger(kr, s) && f.zoom(), l._mwTimeout = setTimeout(function () {
                    l.trigger(Sr, s), l._zooming = !1, l.surface && l.surface.resumeTracking();
                }, po));else if (u || (t = l._startNavigation(c, d, Ar), t || (u = l._navState)), u) {
                    for (i = u.totalDelta || h, u.totalDelta = i + h, n = l._navState.axes, o = 0; o < n.length; o++) {
                        r = n[o], a = r.options.name, a && (p[a] = r.scaleRange(-i));
                    }l.trigger(kr, { delta: h, axisRanges: p, originalEvent: e }), l._mwTimeout && clearTimeout(l._mwTimeout), l._mwTimeout = setTimeout(function () {
                        l._endNavigation(e, Sr);
                    }, po);
                }
            }, _startNavigation: function _startNavigation(e, t, i) {
                var n,
                    o,
                    r = this,
                    a = r._model._plotArea,
                    s = a.findPointPane(t),
                    l = a.axes.slice(0);s && (o = D(l), n = r.trigger(i, { axisRanges: o, originalEvent: e }), n ? r._userEvents.cancel() : (r._suppressHover = !0, r._unsetActivePoint(), r._navState = { axisRanges: o, pane: s, axes: l }));
            }, _endNavigation: function _endNavigation(e, t) {
                var i = this;i._navState && (i.trigger(t, { axisRanges: i._navState.axisRanges, originalEvent: e }), i._suppressHover = !1, i._navState = null);
            }, _getChartElement: function _getChartElement(e, t) {
                var i = this.surface.eventTarget(e);if (i) return this._drawingChartElement(i, e, t);
            }, _drawingChartElement: function _drawingChartElement(e, t, i) {
                for (var n; e && !n;) {
                    n = e.chartElement, e = e.parent;
                }if (n) return n.aliasFor && (n = n.aliasFor(t, this._eventCoordinates(t))), i && (n = n.closest(i)), n;
            }, _eventCoordinates: function _eventCoordinates(e) {
                var t = this,
                    i = Ri((e.x || {}).client),
                    n = i ? e.x.client : e.clientX,
                    o = i ? e.y.client : e.clientY;return t._toModelCoordinates(n, o);
            }, _toModelCoordinates: function _toModelCoordinates(t, i) {
                var n = this.element,
                    o = n.offset(),
                    r = parseInt(n.css("paddingLeft"), 10),
                    a = parseInt(n.css("paddingTop"), 10),
                    s = e(window);return new ui(t - o.left - r + s.scrollLeft(), i - o.top - a + s.scrollTop());
            }, _tap: function _tap(e) {
                var t = this,
                    i = t.surface.eventTarget(e),
                    n = t._drawingChartElement(i, e);t._activePoint === n ? t._propagateClick(n, e) : (t._startHover(i, e) || t._unsetActivePoint(), t._propagateClick(n, e)), t._supressMouseleave = !0, setTimeout(function () {
                    t._supressMouseleave = !1;
                }, 0);
            }, _click: function _click(e) {
                var t = this,
                    i = t._getChartElement(e);t._propagateClick(i, e);
            }, _propagateClick: function _propagateClick(e, t) {
                for (; e;) {
                    e.click && e.click(this, t), e = e.parent;
                }
            }, _startHover: function _startHover(e, i) {
                var n,
                    o = this,
                    r = o._drawingChartElement(e, i),
                    a = o._tooltip,
                    s = o._highlight,
                    l = o.options.tooltip;if (!o._suppressHover && s && !s.isHighlighted(r) && !o._sharedTooltip()) return n = o._drawingChartElement(e, i, function (e) {
                    return e.hover && !(e instanceof ct);
                }), n && !n.hover(o, i) ? (o._activePoint = n, l = Xt({}, l, n.options.tooltip), l.visible && a.show(n), s.show(n), n) : t;
            }, _mouseover: function _mouseover(t) {
                var i = this,
                    n = i._startHover(t.element, t.originalEvent);n && n.tooltipTracking && e(document).on(co, Ht(i._mouseMoveTracking, i));
            }, _mouseMoveTracking: function _mouseMoveTracking(t) {
                var i,
                    n,
                    o = this,
                    r = o.options,
                    a = o._tooltip,
                    s = o._highlight,
                    l = o._eventCoordinates(t),
                    c = o._activePoint;o._plotArea.box.containsPoint(l) ? c && c.tooltipTracking && c.series && c.parent.getNearestPoint && (n = c.parent.getNearestPoint(l.x, l.y, c.seriesIx), n && n != c && (n.hover(o, t), o._activePoint = n, i = Xt({}, r.tooltip, c.options.tooltip), i.visible && a.show(n), s.show(n))) : (e(document).off(co), o._unsetActivePoint());
            }, _mousemove: function _mousemove(e) {
                var t = this._eventCoordinates(e);this._trackCrosshairs(t), this._plotArea.hover && this._plotArea.hover(this, e), this._sharedTooltip() && this._trackSharedTooltip(t, e);
            }, _trackCrosshairs: function _trackCrosshairs(e) {
                var t,
                    i,
                    n = this._plotArea.crosshairs;for (t = 0; t < n.length; t++) {
                    i = n[t], i.box.containsPoint(e) ? i.showAt(e) : i.hide();
                }
            }, _trackSharedTooltip: function _trackSharedTooltip(t, i) {
                var n,
                    o,
                    r,
                    a,
                    s = this,
                    l = s.options,
                    c = s._plotArea,
                    h = c.categoryAxis,
                    u = s._tooltip,
                    p = l.tooltip,
                    f = s._highlight;c.box.containsPoint(t) && (n = h.pointCategoryIndex(t), n !== s._tooltipCategoryIx && (o = c.pointsByCategoryIndex(n), r = e.map(o, function (e) {
                    return e.eventArgs(i);
                }), a = r[0] || {}, a.categoryPoints = r, o.length > 0 && !this.trigger(Uo, a) ? (p.visible && u.showAt(o, t), f.show(o)) : u.hide(), s._tooltipCategoryIx = n));
            }, _mouseleave: function _mouseleave(t) {
                var i = this,
                    n = i._plotArea,
                    o = i._tooltip,
                    r = i._highlight,
                    a = t.relatedTarget;a && e(a).closest(o.element).length || i._supressMouseleave || (i._mousemove.cancel(), n.hideCrosshairs(), r.hide(), setTimeout(Ht(o.hide, o), lr), i._tooltipCategoryIx = null);
            }, _unsetActivePoint: function _unsetActivePoint() {
                var e = this,
                    t = e._tooltip,
                    i = e._highlight;e._activePoint = null, t && t.hide(), i && i.hide();
            }, _onDataChanged: function _onDataChanged(e) {
                var t,
                    i,
                    n = this,
                    o = n.options,
                    r = n._sourceSeries || o.series,
                    a = r.length,
                    l = n.dataSource.view(),
                    c = (n.dataSource.group() || []).length > 0,
                    h = [];for (t = 0; t < a; t++) {
                    i = r[t], n._isBindable(i) && c ? (Ti(h, z(i, l)), this._applyGroupVisibleState(h, e)) : h.push(i || []);
                }n._sourceSeries = r, o.series = h, s(n.options), n._bindSeries(), n._bindCategories(), n._hasData = !0, n._deferRedraw();
            }, _applyGroupVisibleState: function _applyGroupVisibleState(e, t) {
                var i, n;if (t && t.action) for (i = this._groupVisibleState = this._groupVisibleState || {}, n = 0; n < e.length; n++) {
                    i[e[n]._groupValue] === !1 && (e[n].visible = !1);
                } else delete this._groupVisibleState;
            }, _saveGroupVisibleState: function _saveGroupVisibleState(e) {
                Ri(e._groupValue) && (this._groupVisibleState || (this._groupVisibleState = {}), this._groupVisibleState[e._groupValue] = e.visible);
            }, _deferRedraw: function _deferRedraw() {
                var e = this;Nt.support.vml ? (e._clearRedrawTimeout(), e._redrawTimeout = setTimeout(function () {
                    e.surface && (e.trigger(gn), e._redraw());
                }, 0)) : (e.trigger(gn), e._redraw());
            }, _clearRedrawTimeout: function _clearRedrawTimeout() {
                this._redrawTimeout && (clearInterval(this._redrawTimeout), this._redrawTimeout = null);
            }, _bindSeries: function _bindSeries() {
                var e,
                    t,
                    i,
                    n,
                    o = this,
                    r = o.dataSource.view(),
                    a = o.options.series,
                    s = a.length;for (e = 0; e < s; e++) {
                    t = a[e], o._isBindable(t) && (i = t._groupIx, n = Ri(i) ? (r[i] || {}).items : r, t.autoBind !== !1 && (t.data = n));
                }
            }, _bindCategories: function _bindCategories() {
                var e,
                    t,
                    i = this,
                    n = i.dataSource.view() || [],
                    o = (i.dataSource.group() || []).length > 0,
                    r = n,
                    a = i.options,
                    s = [].concat(a.categoryAxis);for (o && n.length && (r = n[0].items), e = 0; e < s.length; e++) {
                    t = s[e], t.autoBind !== !1 && i._bindCategoryAxis(t, r, e);
                }
            }, _bindCategoryAxis: function _bindCategoryAxis(e, t, i) {
                var n,
                    o,
                    r,
                    a = (t || []).length;if (e.field) for (e.categories = [], n = 0; n < a; n++) {
                    r = t[n], o = p(e.field, r), 0 === n ? (e.categories = [o], e.dataItems = [r]) : (e.categories.push(o), e.dataItems.push(r));
                } else this._bindCategoryAxisFromSeries(e, i);
            }, _bindCategoryAxisFromSeries: function _bindCategoryAxisFromSeries(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l,
                    c,
                    h,
                    u,
                    d,
                    g = this,
                    m = [],
                    x = g.options.series,
                    v = x.length,
                    y = {};for (n = 0; n < v; n++) {
                    if (o = x[n], r = o.categoryAxis === e.name || !o.categoryAxis && 0 === t, a = o.data, l = a.length, o.categoryField && r && l > 0) for (d = N(e, p(o.categoryField, a[0])), u = d ? f : p, s = 0; s < l; s++) {
                        c = a[s], h = u(o.categoryField, c), !d && y[h] || (m.push([h, c]), d || (y[h] = !0));
                    }
                }m.length > 0 && (d && (m = H(m, function (e, t) {
                    return _i(e[0], t[0]);
                })), i = j(m), e.categories = i[0], e.dataItems = i[1]);
            }, _isBindable: function _isBindable(e) {
                var t,
                    i,
                    n = oe.current.valueFields(e),
                    o = !0;for (i = 0; i < n.length; i++) {
                    if (t = n[i], t === hr ? t = "field" : t += "Field", !Ri(e[t])) {
                        o = !1;break;
                    }
                }return o;
            }, _legendItemClick: function _legendItemClick(e, t) {
                var i,
                    n,
                    o = this,
                    r = o._plotArea,
                    a = (r.srcSeries || r.series)[e];Ai(a.type, [bo, An, zn]) ? (n = a.data[t], i = !!Ri(n.visible) && !n.visible, n.visible = i) : (a.visible = !a.visible, this._saveGroupVisibleState(a)), this._noTransitionsRedraw();
            }, _noTransitionsRedraw: function _noTransitionsRedraw() {
                var e,
                    t = this.options;t.transitions && (t.transitions = !1, e = !0), this.redraw(), e && (t.transitions = !0);
            }, _legendItemHover: function _legendItemHover(e, t) {
                var i,
                    n = this,
                    o = n._plotArea,
                    r = n._highlight,
                    a = (o.srcSeries || o.series)[e];i = Ai(a.type, [bo, An, zn]) ? o.findPoint(function (i) {
                    return i.series.index === e && i.index === t;
                }) : o.pointsBySeriesIndex(e), r.show(i);
            }, _shouldAttachMouseMove: function _shouldAttachMouseMove() {
                var e = this,
                    t = e._events;return e._plotArea.crosshairs.length || e._tooltip && e._sharedTooltip() || Ri(t[ko]);
            }, setOptions: function setOptions(i) {
                var n = this,
                    o = i.dataSource;i.dataSource = t, te(n._originalOptions, i), n._originalOptions = Xt(n._originalOptions, i), n.options = Xt({}, n._originalOptions), n._sourceSeries = null, e(document).off(ho), Yt.fn._setEvents.call(n, i), n._initTheme(n.options), o && n.setDataSource(o), n._hasDataSource ? n._onDataChanged() : (n._bindCategories(), n.redraw()), n._shouldAttachMouseMove() && n.element.on(ho, n._mousemove);
            }, destroy: function destroy() {
                var t = this,
                    i = t.dataSource;t.element.off(Fi), i && i.unbind(rn, t._dataChangeHandler), e(document).off(co), t._userEvents && t._userEvents.destroy(), t._destroyView(), t.surface.destroy(), t.surface = null, t._clearRedrawTimeout(), Yt.fn.destroy.call(t);
            }, _destroyView: function _destroyView() {
                var e = this,
                    t = e._model,
                    i = e._selections;if (t && (t.destroy(), e._model = null), i) for (; i.length > 0;) {
                    i.shift().destroy();
                }e._unsetActivePoint(), e._tooltip && e._tooltip.destroy(), e._highlight && e._highlight.destroy(), e._zoomSelection && (e._zoomSelection.destroy(), delete e._zoomSelection), e._pannable && (e._pannable.destroy(), delete e._pannable), e._mousewheelZoom && (e._mousewheelZoom.destroy(), delete e._mousewheelZoom);
            } });Jt.ExportMixin.extend(Rr.fn), Nt.PDFMixin && Nt.PDFMixin.extend(Rr.fn), ne = jt.extend({ init: function init() {
                this._registry = [];
            }, register: function register(e, t) {
                this._registry.push({ type: e, seriesTypes: t });
            }, create: function create(e, t) {
                var i,
                    n,
                    o,
                    r = this._registry,
                    a = r[0];for (i = 0; i < r.length; i++) {
                    if (n = r[i], o = O(e, n.seriesTypes), o.length > 0) {
                        a = n;break;
                    }
                }return new a.type(o, t);
            } }), ne.current = new ne(), oe = jt.extend({ init: function init() {
                this._valueFields = {}, this._otherFields = {}, this._nullValue = {}, this._undefinedValue = {};
            }, register: function register(e, i, n) {
                var o,
                    r,
                    a = this;for (i = i || [hr], o = 0; o < e.length; o++) {
                    r = e[o], a._valueFields[r] = i, a._otherFields[r] = n, a._nullValue[r] = a._makeValue(i, null), a._undefinedValue[r] = a._makeValue(i, t);
                }
            }, canonicalFields: function canonicalFields(e) {
                return this.valueFields(e).concat(this.otherFields(e));
            }, valueFields: function valueFields(e) {
                return this._valueFields[e.type] || [hr];
            }, otherFields: function otherFields(e) {
                return this._otherFields[e.type] || [hr];
            }, bindPoint: function bindPoint(e, t, i) {
                var n,
                    o,
                    r,
                    a,
                    s,
                    l = this,
                    c = e.data,
                    h = Ri(i) ? i : c[t],
                    u = { valueFields: { value: h } },
                    p = l.valueFields(e),
                    f = l._otherFields[e.type];return null === h ? s = l._nullValue[e.type] : Ri(h) ? Dt(h) ? (o = h.slice(p.length), s = l._bindFromArray(h, p), n = l._bindFromArray(o, f)) : (typeof h === "undefined" ? "undefined" : _typeof(h)) === vo && (r = l.sourceFields(e, p), a = l.sourceFields(e, f), s = l._bindFromObject(h, p, r), n = l._bindFromObject(h, f, a)) : s = l._undefinedValue[e.type], Ri(s) && (1 === p.length ? u.valueFields.value = s[p[0]] : u.valueFields = s), u.fields = n || {}, u;
            }, _makeValue: function _makeValue(e, t) {
                var i,
                    n,
                    o = {},
                    r = e.length;for (i = 0; i < r; i++) {
                    n = e[i], o[n] = t;
                }return o;
            }, _bindFromArray: function _bindFromArray(e, t) {
                var i,
                    n,
                    o = {};if (t) for (n = Ot.min(t.length, e.length), i = 0; i < n; i++) {
                    o[t[i]] = e[i];
                }return o;
            }, _bindFromObject: function _bindFromObject(e, t, i) {
                var n,
                    o,
                    r,
                    a,
                    s = {};if (t) for (o = t.length, i = i || t, n = 0; n < o; n++) {
                    r = t[n], a = i[n], s[r] = p(a, e);
                }return s;
            }, sourceFields: function sourceFields(e, t) {
                var i, n, o, r, a;if (t) for (n = t.length, r = [], i = 0; i < n; i++) {
                    o = t[i], a = o === hr ? "field" : o + "Field", r.push(e[a] || o);
                }return r;
            } }), oe.current = new oe(), re = oi.extend({ init: function init(e, t) {
                var i = this;oi.fn.init.call(i, t), this.textBox = new mi(e, i.options), i.append(this.textBox);
            }, options: { position: _o, margin: wi(3), padding: wi(4), color: Zi, background: "", border: { width: 1, color: "" }, aboveAxis: !0, vertical: !1, animation: { type: En, delay: Nn }, zIndex: 2 }, createVisual: function createVisual() {
                this.textBox.options.noclip = this.options.noclip;
            }, reflow: function reflow(e) {
                var t = this,
                    i = t.options,
                    n = i.vertical,
                    o = i.aboveAxis,
                    r = t.children[0],
                    a = r.box,
                    s = r.options.padding;r.options.align = n ? on : Xn, r.options.vAlign = n ? or : on, i.position == Gn ? n ? (r.options.vAlign = or, !o && a.height() < e.height() && (r.options.vAlign = Qi)) : r.options.align = o ? Ro : Xn : i.position == on ? (r.options.vAlign = on, r.options.align = on) : i.position == jn ? n ? r.options.vAlign = o ? Qi : or : r.options.align = o ? Xn : Ro : i.position == _o && (n ? e = o ? new ii(e.x1, e.y1 - a.height(), e.x2, e.y1) : new ii(e.x1, e.y2, e.x2, e.y2 + a.height()) : (r.options.align = on, e = o ? new ii(e.x2, e.y1, e.x2 + a.width(), e.y2) : new ii(e.x1 - a.width(), e.y1, e.x1, e.y2))), i.rotation || (n ? s.left = s.right = (e.width() - r.contentBox.width()) / 2 : s.top = s.bottom = (e.height() - r.contentBox.height()) / 2), r.reflow(e);
            }, alignToClipBox: function alignToClipBox(e) {
                var t,
                    i = this,
                    n = i.options.vertical,
                    o = n ? yr : vr,
                    r = o + "1",
                    a = o + "2",
                    s = i.children[0],
                    l = i.parent.box;(l[r] < e[r] || e[a] < l[a]) && (t = s.paddingBox.clone(), t[r] = Ot.max(l[r], e[r]), t[a] = Ot.min(l[a], e[a]), this.reflow(t));
            } }), ae = ni.extend({ init: function init(e) {
                var t = this;ni.fn.init.call(t, e), t.createContainer(), t.createMarker(), t.createLabel();
            }, createContainer: function createContainer() {
                var e = this;e.container = new si({ vertical: !1, wrap: !1, align: on }), e.append(e.container);
            }, createMarker: function createMarker() {
                this.container.append(new di(this.markerOptions()));
            }, markerOptions: function markerOptions() {
                var e = this.options,
                    t = e.markerColor;return Xt({}, e.markers, { background: t, border: { color: t } });
            }, createLabel: function createLabel() {
                var e = this,
                    t = e.options,
                    i = Xt({}, t.labels);e.container.append(new mi(t.text, i));
            }, renderComplete: function renderComplete() {
                var e, t;oi.fn.renderComplete.call(this), e = this.options.cursor || {}, t = this._itemOverlay = Oi.Path.fromRect(this.container.box.toRect(), { fill: { color: xr, opacity: 0 }, stroke: null, cursor: e.style || e }), this.appendVisual(t);
            }, click: function click(e, t) {
                var i = this.eventArgs(t);e.trigger(Wn, i) || (t.preventDefault(), e._legendItemClick(i.seriesIndex, i.pointIndex));
            }, hover: function hover(e, t) {
                var i = this.eventArgs(t);return e.trigger(Zn, i) || (t.preventDefault(), e._legendItemHover(i.seriesIndex, i.pointIndex)), !0;
            }, leave: function leave(e) {
                e._unsetActivePoint();
            }, eventArgs: function eventArgs(e) {
                var t = this.options;return { element: bi(e), text: t.text, series: t.series, seriesIndex: t.series.index, pointIndex: t.pointIndex };
            }, renderVisual: function renderVisual() {
                var e = this,
                    t = e.options,
                    i = t.visual;i ? (e.visual = i({ active: t.active, series: t.series, pointIndex: t.pointIndex, options: { markers: e.markerOptions(), labels: t.labels }, createVisual: function createVisual() {
                        e.createVisual(), e.renderChildren(), e.renderComplete();var t = e.visual;return delete e.visual, t;
                    } }), this.addVisual()) : oi.fn.renderVisual.call(e);
            } }), se = oi.extend({ render: function render() {
                var e,
                    t,
                    i = this.children,
                    n = this.options,
                    o = n.vertical;for (this.visual = new Oi.Layout(null, { spacing: o ? 0 : n.spacing, lineSpacing: o ? n.spacing : 0, orientation: o ? "vertical" : "horizontal" }), t = 0; t < i.length; t++) {
                    e = i[t], e.reflow(new ii()), e.renderVisual();
                }
            }, reflow: function reflow(e) {
                this.visual.rect(e.toRect()), this.visual.reflow();var t = this.visual.clippedBBox();this.box = t ? Jt.rectToBox(t) : new ii();
            }, renderVisual: function renderVisual() {
                this.addVisual();
            }, createVisual: Ft }), le = oi.extend({ init: function init(e) {
                var t = this;oi.fn.init.call(t, e), Ai(t.options.position, [or, Ro, Qi, Xn, dn]) || (t.options.position = Ro), t.createContainer(), t.createItems();
            }, options: { position: Ro, items: [], labels: { margin: { left: 6 } }, offsetX: 0, offsetY: 0, margin: wi(5), padding: wi(5), border: { color: Zi, width: 0 }, item: { cursor: So }, spacing: 6, background: "", zIndex: 1, markers: { border: { width: 1 }, width: 7, height: 7, type: "rect", align: Xn, vAlign: on } }, createContainer: function createContainer() {
                var e = this,
                    t = e.options,
                    i = t.align,
                    n = t.position,
                    o = n,
                    r = on;n == dn ? o = Xn : Ai(n, [or, Qi]) ? (o = "start" == i ? Xn : "end" == i ? Ro : on, r = n) : i && ("start" == i ? r = or : "end" == i && (r = Qi)), e.container = new ni({ margin: t.margin, padding: t.padding, background: t.background, border: t.border, vAlign: r, align: o, zIndex: t.zIndex, shrinkToFit: !0 }), e.append(e.container);
            }, createItems: function createItems() {
                var e,
                    t,
                    i,
                    n = this,
                    o = n.options,
                    r = o.items,
                    a = r.length,
                    s = n.isVertical();for (e = new se({ vertical: s, spacing: o.spacing }), o.reverse && (r = r.slice(0).reverse()), t = 0; t < a; t++) {
                    i = r[t], e.append(new ae(Xt({}, { markers: o.markers, labels: o.labels }, o.item, i)));
                }e.render(), n.container.append(e);
            }, isVertical: function isVertical() {
                var e = this,
                    t = e.options,
                    i = t.orientation,
                    n = t.position,
                    o = n == dn && i != Fn || (Ri(i) ? i != Fn : Ai(n, [Xn, Ro]));return o;
            }, hasItems: function hasItems() {
                return this.container.children[0].children.length > 0;
            }, reflow: function reflow(e) {
                var i = this,
                    n = i.options;return e = e.clone(), i.hasItems() ? (n.position === dn ? (i.containerCustomReflow(e), i.box = e) : i.containerReflow(e), t) : (i.box = e, t);
            }, containerReflow: function containerReflow(e) {
                var t,
                    i = this,
                    n = i.options,
                    o = n.position,
                    r = o == or || o == Qi ? vr : yr,
                    a = e.clone(),
                    s = i.container,
                    l = n.width,
                    c = n.height,
                    h = i.isVertical(),
                    u = e.clone();o != Xn && o != Ro || (a.y1 = u.y1 = 0), h && c ? (a.y2 = a.y1 + c, a.align(u, yr, s.options.vAlign)) : !h && l && (a.x2 = a.x1 + l, a.align(u, vr, s.options.align)), s.reflow(a), a = s.box, t = a.clone(), (n.offsetX || n.offsetY) && (a.translate(n.offsetX, n.offsetY), i.container.reflow(a)), t[r + 1] = e[r + 1], t[r + 2] = e[r + 2], i.box = t;
            }, containerCustomReflow: function containerCustomReflow(e) {
                var t = this,
                    i = t.options,
                    n = i.offsetX,
                    o = i.offsetY,
                    r = t.container,
                    a = i.width,
                    s = i.height,
                    l = t.isVertical(),
                    c = e.clone();l && s ? c.y2 = c.y1 + s : !l && a && (c.x2 = c.x1 + a), r.reflow(c), c = r.box, r.reflow(ii(n, o, n + c.width(), o + c.height()));
            }, renderVisual: function renderVisual() {
                this.hasItems() && oi.fn.renderVisual.call(this);
            } }), ce = ei.extend({ init: function init(e) {
                var t = this;e = e || {}, this._initFields(), this._initCategories(e), ei.fn.init.call(t, e);
            }, _initFields: function _initFields() {
                this._ticks = {}, this.outOfRangeMin = 0, this.outOfRangeMax = 0;
            }, _initCategories: function _initCategories(e) {
                var t,
                    i,
                    n = (e.categories || []).slice(0),
                    o = Ri(e.min),
                    r = Ri(e.max);e.categories = n, (o || r) && n.length && (e.srcCategories = e.categories, t = o ? Ot.floor(e.min) : 0, i = r ? e.justified ? Ot.floor(e.max) + 1 : Ot.ceil(e.max) : n.length, e.categories = e.categories.slice(t, i));
            }, options: { type: nn, categories: [], vertical: !1, majorGridLines: { visible: !1, width: 1, color: Zi }, labels: { zIndex: 1 }, justified: !1 }, rangeIndices: function rangeIndices() {
                var e,
                    t = this.options,
                    i = t.categories.length || 1,
                    n = B(t.min) ? t.min % 1 : 0;return e = B(t.max) && t.max % 1 !== 0 && t.max < this.totalRange().max ? i - (1 - t.max % 1) : i - (t.justified ? 1 : 0), { min: n, max: e };
            }, totalRangeIndices: function totalRangeIndices(e) {
                var t,
                    i,
                    n = this.options,
                    o = B(n.min) ? n.min : 0;return t = B(n.max) ? n.max : B(n.min) ? o + n.categories.length : (n.srcCategories || n.categories).length - (n.justified ? 1 : 0) || 1, e && (i = this.totalRange(), o = Vi(o, 0, i.max), t = Vi(t, 0, i.max)), { min: o, max: t };
            }, range: function range() {
                var e = this.options;return { min: B(e.min) ? e.min : 0, max: B(e.max) ? e.max : e.categories.length };
            }, totalRange: function totalRange() {
                var e = this.options;return { min: 0, max: Ot.max(this._seriesMax || 0, (e.srcCategories || e.categories).length) - (e.justified ? 1 : 0) };
            }, getScale: function getScale() {
                var e = this.rangeIndices(),
                    t = e.min,
                    i = e.max,
                    n = this.lineBox(),
                    o = this.options.vertical ? n.height() : n.width(),
                    r = o / (i - t || 1);return r * (this.options.reverse ? -1 : 1);
            }, getTickPositions: function getTickPositions(e) {
                for (var t = this, i = t.options, n = i.vertical, o = t.lineBox(), r = i.reverse, a = t.getScale(), s = t.rangeIndices(), l = s.min, c = s.max, h = l % 1 !== 0 ? Ot.floor(l / 1) + e : l, u = o[(n ? yr : vr) + (r ? 2 : 1)], p = []; h <= c;) {
                    p.push(u + Ci(a * (h - l), un)), h += e;
                }return p;
            }, getLabelsTickPositions: function getLabelsTickPositions() {
                var e = this.getMajorTickPositions().slice(0),
                    t = this.rangeIndices(),
                    i = this.getScale(),
                    n = this.lineBox(),
                    o = this.options,
                    r = o.vertical ? yr : vr,
                    a = o.reverse ? 2 : 1,
                    s = o.reverse ? 1 : 2;return t.min % 1 !== 0 && e.unshift(n[r + a] - i * (t.min % 1)), t.max % 1 !== 0 && e.push(n[r + s] + i * (1 - t.max % 1)), e;
            }, labelTickIndex: function labelTickIndex(e) {
                var t = e.index,
                    i = this.rangeIndices();return i.min > 0 && (t -= Ot.floor(i.min)), t;
            }, arrangeLabels: function arrangeLabels() {
                ei.fn.arrangeLabels.call(this), this.hideOutOfRangeLabels();
            }, hideOutOfRangeLabels: function hideOutOfRangeLabels() {
                var e = this.box,
                    t = this.labels,
                    i = this.options.vertical ? yr : vr,
                    n = e[i + 1],
                    o = e[i + 2],
                    r = t[0],
                    a = Ii(t);t.length && ((r.box[i + 1] > o || r.box[i + 2] < n) && (r.options.visible = !1), (a.box[i + 1] > o || a.box[i + 2] < n) && (a.options.visible = !1));
            }, getMajorTickPositions: function getMajorTickPositions() {
                return this.getTicks().majorTicks;
            }, getMinorTickPositions: function getMinorTickPositions() {
                return this.getTicks().minorTicks;
            }, getTicks: function getTicks() {
                var e,
                    t = this,
                    i = t._ticks,
                    n = t.options,
                    o = t.rangeIndices(),
                    r = n.reverse,
                    a = n.justified,
                    s = t.lineBox();return e = s.getHash() + o.min + "," + o.max + r + a, i._hash !== e && (i._hash = e, i.majorTicks = t.getTickPositions(1), i.minorTicks = t.getTickPositions(.5)), i;
            }, getSlot: function getSlot(e, t, i) {
                var n,
                    o,
                    r = this,
                    a = r.options,
                    s = a.reverse,
                    l = a.justified,
                    c = a.vertical ? yr : vr,
                    h = r.lineBox(),
                    u = r.rangeIndices(),
                    p = u.min,
                    f = this.getScale(),
                    d = h[c + (s ? 2 : 1)],
                    g = h.clone(),
                    m = !Ri(t);return e = Mi(e, 0), t = Mi(t, e), t = Ot.max(t - 1, e), t = Ot.max(e, t), n = d + (e - p) * f, o = d + (t + 1 - p) * f, m && l && (o = n), i && (n = Vi(n, h[c + 1], h[c + 2]), o = Vi(o, h[c + 1], h[c + 2])), g[c + 1] = s ? o : n, g[c + 2] = s ? n : o, g;
            }, slot: function slot(e, t, i) {
                return "string" == typeof e && (e = this.categoryIndex(e)), "string" == typeof t && (t = this.categoryIndex(t)), ei.fn.slot.call(this, e, t, i);
            }, pointCategoryIndex: function pointCategoryIndex(e) {
                var t,
                    i,
                    n,
                    o = this,
                    r = o.options,
                    a = r.reverse,
                    s = r.justified,
                    l = r.vertical ? yr : vr,
                    c = o.lineBox(),
                    h = o.rangeIndices(),
                    u = a ? h.max : h.min,
                    p = this.getScale(),
                    f = c[l + 1],
                    d = c[l + 2],
                    g = e[l];return g < f || g > d ? null : (t = g - f, i = t / p, i = u + i, n = i % 1, s ? i = Ot.round(i) : 0 === n && i > 0 && i--, Ot.floor(i));
            }, getCategory: function getCategory(e) {
                var t = this.pointCategoryIndex(e);return null === t ? null : this.options.categories[t];
            }, categoryIndex: function categoryIndex(e) {
                var t = this.options,
                    i = F(e, t.srcCategories || t.categories);return i - Ot.floor(t.min || 0);
            }, translateRange: function translateRange(e) {
                var t = this,
                    i = t.options,
                    n = t.lineBox(),
                    o = i.vertical ? n.height() : n.width(),
                    r = i.categories.length,
                    a = o / r,
                    s = Ci(e / a, _n);return { min: s, max: r + s };
            }, zoomRange: function zoomRange(e) {
                var t = this.totalRangeIndices(),
                    i = this.totalRange(),
                    n = i.max,
                    o = i.min,
                    r = Vi(t.min + e, o, n),
                    a = Vi(t.max - e, o, n);if (a - r > 0) return { min: r, max: a };
            }, scaleRange: function scaleRange(e) {
                var t = this,
                    i = t.options,
                    n = i.categories.length,
                    o = e * n;return { min: -o, max: n + o };
            }, labelsCount: function labelsCount() {
                var e = this.labelsRange();return e.max - e.min;
            }, labelsRange: function labelsRange() {
                var e,
                    t = this.options,
                    i = t.labels,
                    n = t.justified,
                    o = this.totalRangeIndices(!0),
                    r = o.min,
                    a = o.max,
                    s = Ot.floor(r);return n ? (r = Ot.ceil(r), a = Ot.floor(a)) : (r = Ot.floor(r), a = Ot.ceil(a)), e = r > i.skip ? i.skip + i.step * Ot.ceil((r - i.skip) / i.step) : i.skip, { min: e - s, max: (t.categories.length ? a + (n ? 1 : 0) : 0) - s };
            }, createAxisLabel: function createAxisLabel(e, t) {
                var i = this,
                    n = i.options,
                    o = n.dataItems ? n.dataItems[e] : null,
                    r = Mi(n.categories[e], ""),
                    a = i.axisLabelText(r, o, t);return new ti(r, a, e, o, t);
            }, shouldRenderNote: function shouldRenderNote(e) {
                var t = this.options.categories;return t.length && t.length > e && e >= 0;
            }, pan: function pan(e) {
                var t = this.totalRangeIndices(!0),
                    i = this.getScale(),
                    n = Ci(e / i, _n),
                    o = this.totalRange(),
                    r = t.min + n,
                    a = t.max + n;return this.limitRange(r, a, 0, o.max, n);
            }, pointsRange: function pointsRange(e, t) {
                var i = this,
                    n = i.options,
                    o = n.reverse,
                    r = n.vertical ? yr : vr,
                    a = i.lineBox(),
                    s = i.totalRangeIndices(!0),
                    l = this.getScale(),
                    c = a[r + (o ? 2 : 1)],
                    h = e[r] - c,
                    u = t[r] - c,
                    p = s.min + h / l,
                    f = s.min + u / l,
                    d = Ot.min(p, f),
                    g = Ot.max(p, f);if (g - d >= oo) return { min: d, max: g };
            }, valueRange: function valueRange() {
                return this.range();
            } }), he = ce.extend({ init: function init(e) {
                var t,
                    i,
                    n = this;e = e || {}, e = Xt({ roundToBaseUnit: !0 }, e, { categories: d(e.categories), min: d(e.min), max: d(e.max) }), e.userSetBaseUnit = e.userSetBaseUnit || e.baseUnit, e.userSetBaseUnitStep = e.userSetBaseUnitStep || e.baseUnitStep, e.categories && e.categories.length > 0 ? (t = (e.baseUnit || "").toLowerCase(), i = t !== ji && !Ai(t, Cr), i && (e.baseUnit = n.defaultBaseUnit(e)), t !== ji && e.baseUnitStep !== Ni || n.autoBaseUnit(e), this._groupsStart = m(e.categories[0], 0, e.baseUnit, e.weekStartDay), n.groupCategories(e)) : e.baseUnit = e.baseUnit || xn, this._initFields(), ei.fn.init.call(n, e);
            }, options: { type: mn, labels: { dateFormats: Tr }, autoBaseUnitSteps: { milliseconds: [1, 10, 100], seconds: [1, 2, 5, 15, 30], minutes: [1, 2, 5, 15, 30], hours: [1, 2, 3], days: [1, 2, 3], weeks: [1, 2], months: [1, 2, 3, 6], years: [1, 2, 3, 5, 10, 25, 50] }, maxDateGroups: 10 }, shouldRenderNote: function shouldRenderNote(e) {
                var t = this,
                    i = t.range(),
                    n = t.options.categories || [];return _i(e, i.min) >= 0 && _i(e, i.max) <= 0 && n.length;
            }, parseNoteValue: function parseNoteValue(e) {
                return d(e);
            }, translateRange: function translateRange(e) {
                var t,
                    i,
                    n = this,
                    o = n.options,
                    r = o.baseUnit,
                    a = o.weekStartDay,
                    s = n.lineBox(),
                    l = o.vertical ? s.height() : s.width(),
                    c = n.range(),
                    h = l / (c.max - c.min),
                    u = Ci(e / h, _n);return c.min && c.max && (t = w(o.min || c.min, u), i = w(o.max || c.max, u), c = { min: m(t, 0, r, a), max: m(i, 0, r, a) }), c;
            }, scaleRange: function scaleRange(e) {
                var t,
                    i = this,
                    n = Ot.abs(e),
                    o = i.range(),
                    r = o.min,
                    a = o.max;if (o.min && o.max) {
                    for (; n--;) {
                        o = _(r, a), t = Ot.round(.1 * o), e < 0 ? (r = w(r, t), a = w(a, -t)) : (r = w(r, -t), a = w(a, t));
                    }o = { min: r, max: a };
                }return o;
            }, defaultBaseUnit: function defaultBaseUnit(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a = e.categories,
                    s = Ri(a) ? a.length : 0,
                    l = io;for (t = 0; t < s; t++) {
                    i = a[t], i && o && (n = b(i, o), n > 0 && (l = Ot.min(l, n), r = l >= tr ? _r : l >= er - 3 * $o ? so : l >= Jo ? mr : l >= $o ? xn : l >= Qo ? Hn : l >= Ko ? ao : Eo)), o = i;
                }return r || xn;
            }, _categoryRange: function _categoryRange(e) {
                var t = e._range;return t || (t = e._range = Bi(e)), t;
            }, totalRange: function totalRange() {
                return { min: 0, max: this.options.categories.length };
            }, rangeIndices: function rangeIndices() {
                var e = this.options,
                    t = e.baseUnit,
                    i = e.baseUnitStep || 1,
                    n = e.categories,
                    o = this.categoriesRange(),
                    r = d(e.min || o.min),
                    a = d(e.max || o.max),
                    s = 0,
                    l = 0;return n.length && (s = k(r, n[0], t, i), l = k(a, n[0], t, i), e.roundToBaseUnit && (s = Ot.floor(s), l = e.justified ? Ot.floor(l) : Ot.ceil(l))), { min: s, max: l };
            }, labelsRange: function labelsRange() {
                var e = this.options,
                    t = e.labels,
                    i = this.rangeIndices(),
                    n = Ot.floor(i.min),
                    o = Ot.ceil(i.max);return { min: n + t.skip, max: e.categories.length ? o + (e.justified ? 1 : 0) : 0 };
            }, categoriesRange: function categoriesRange() {
                var e = this.options,
                    t = this._categoryRange(e.srcCategories || e.categories),
                    i = d(t.max);return !e.justified && R(i, this._roundToTotalStep(i, e, !1)) && (i = this._roundToTotalStep(i, e, !0, !0)), { min: d(t.min), max: i };
            }, currentRange: function currentRange() {
                var e = this.options,
                    t = e.roundToBaseUnit !== !1,
                    i = this.categoriesRange(),
                    n = e.min,
                    o = e.max;return n || (n = t ? this._roundToTotalStep(i.min, e, !1) : i.min), o || (o = t ? this._roundToTotalStep(i.max, e, !e.justified) : i.max), { min: n, max: o };
            }, datesRange: function datesRange() {
                var e = this._categoryRange(this.options.srcCategories || this.options.categories);return { min: d(e.min), max: d(e.max) };
            }, pan: function pan(e) {
                var t,
                    i,
                    n,
                    o = this,
                    r = o.options,
                    a = r.baseUnit,
                    s = o.lineBox(),
                    l = r.vertical ? s.height() : s.width(),
                    c = this.currentRange(),
                    h = this.totalLimits(),
                    u = c.min,
                    p = c.max,
                    f = l / (p - u),
                    m = Ci(e / f, _n);if (i = w(u, m), n = w(p, m), t = this.limitRange(g(i), g(n), g(h.min), g(h.max), m)) return t.min = d(t.min), t.max = d(t.max), t.baseUnit = a, t.baseUnitStep = r.baseUnitStep || 1, t.userSetBaseUnit = r.userSetBaseUnit, t.userSetBaseUnitStep = r.userSetBaseUnitStep, t;
            }, pointsRange: function pointsRange(e, t) {
                var i = ce.fn.pointsRange.call(this, e, t),
                    n = this.currentRange(),
                    o = this.rangeIndices(),
                    r = _(n.max, n.min) / (o.max - o.min),
                    a = this.options,
                    s = w(n.min, i.min * r),
                    l = w(n.min, i.max * r);return { min: s, max: l, baseUnit: a.userSetBaseUnit, baseUnitStep: a.userSetBaseUnitStep };
            }, zoomRange: function zoomRange(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l,
                    c,
                    h = this.options,
                    u = this.totalLimits(),
                    p = this.currentRange(),
                    f = h.baseUnit,
                    g = h.baseUnitStep || 1,
                    x = h.weekStartDay,
                    v = p.max,
                    y = p.min,
                    b = m(y, e * g, f, x),
                    A = m(v, -e * g, f, x);if (h.userSetBaseUnit == ji) if (t = h.autoBaseUnitSteps, i = h.maxDateGroups, n = F(f, Cr), r = _(A, b), a = Ii(t[f]) * i * ir[f], s = _(v, y), r < ir[f] && f !== Do) f = Cr[n - 1], o = Ii(t[f]), l = (s - (i - 1) * o * ir[f]) / 2, b = w(y, l), A = w(v, -l);else if (r > a && f !== _r) {
                    c = 0;do {
                        n++, f = Cr[n], c = 0, l = 2 * ir[f];do {
                            o = t[f][c], c++;
                        } while (c < t[f].length && l * o < s);
                    } while (f !== _r && l * o < s);l = (l * o - s) / 2, l > 0 && (b = w(y, -l), A = w(v, l), b = w(b, Vi(A, u.min, u.max) - A), A = w(A, Vi(b, u.min, u.max) - b));
                }if (b = d(Vi(b, u.min, u.max)), A = d(Vi(A, u.min, u.max)), b && A && _(A, b) > 0) return { min: b, max: A, baseUnit: h.userSetBaseUnit, baseUnitStep: h.userSetBaseUnitStep };
            }, totalLimits: function totalLimits() {
                var e = this.options,
                    t = this.datesRange(),
                    i = this._roundToTotalStep(d(t.min), e, !1),
                    n = t.max;return e.justified || (n = this._roundToTotalStep(n, e, !0, R(n, this._roundToTotalStep(n, e, !1)))), { min: i, max: n };
            }, range: function range(e) {
                e = e || this.options;var t = e.categories,
                    i = e.baseUnit === ji,
                    n = i ? Cr[0] : e.baseUnit,
                    o = e.baseUnitStep || 1,
                    r = { baseUnit: n, baseUnitStep: o, weekStartDay: e.weekStartDay },
                    a = this._categoryRange(t),
                    s = d(e.min || a.min),
                    l = d(e.max || a.max);return { min: this._roundToTotalStep(s, r, !1), max: this._roundToTotalStep(l, r, !0, !0) };
            }, autoBaseUnit: function autoBaseUnit(e) {
                for (var t, i, n, o = this, r = this._categoryRange(e.categories), a = d(e.min || r.min), s = d(e.max || r.max), l = e.baseUnit === ji, c = 0, h = l ? Cr[c++] : e.baseUnit, u = s - a, p = u / ir[h], f = p, g = e.maxDateGroups || o.options.maxDateGroups, m = Xt({}, o.options.autoBaseUnitSteps, e.autoBaseUnitSteps); !i || p >= g;) {
                    if (t = t || m[h].slice(0), n = t.shift()) i = n, p = f / i;else {
                        if (h === Ii(Cr)) {
                            i = Ot.ceil(f / g);break;
                        }if (!l) {
                            p > g && (i = Ot.ceil(f / g));break;
                        }h = Cr[c++] || Ii(Cr), f = u / ir[h], t = null;
                    }
                }e.baseUnitStep = i, e.baseUnit = h;
            }, _timeScale: function _timeScale() {
                var e,
                    t,
                    i,
                    n = this,
                    o = n.range(),
                    r = n.options,
                    a = n.lineBox(),
                    s = r.vertical,
                    l = s ? a.height() : a.width();return r.justified && r._collapse !== !1 ? (t = this._categoryRange(r.categories), i = g(t.max), e = d(i) - o.min) : e = o.max - o.min, l / e;
            }, groupCategories: function groupCategories(e) {
                var t,
                    i,
                    n = this,
                    o = e.categories,
                    r = d(Ei(o)),
                    a = e.baseUnit,
                    s = e.baseUnitStep || 1,
                    l = n.range(e),
                    c = l.max,
                    h = [];for (t = l.min; t < c && (h.push(t), i = m(t, s, a, e.weekStartDay), !(i > r) || e.max); t = i) {}e.srcCategories = o, e.categories = h;
            }, _roundToTotalStep: function _roundToTotalStep(e, t, i, n) {
                var o, r, a, s, l;return t = t || this.options, o = t.baseUnit, r = t.baseUnitStep || 1, a = this._groupsStart, a ? (s = k(e, a, o, r), l = i ? Ot.ceil(s) : Ot.floor(s), n && l++, m(a, l * r, o, t.weekStartDay)) : m(e, i ? r : 0, o, t.weekStartDay);
            }, createAxisLabel: function createAxisLabel(e, t) {
                var i,
                    n,
                    o = this.options,
                    r = o.dataItems ? o.dataItems[e] : null,
                    a = o.categories[e],
                    s = o.baseUnit,
                    l = !0,
                    c = t.dateFormats[s];if (o.justified ? (i = v(a, s, o.weekStartDay), l = R(i, a)) : o.roundToBaseUnit || (l = !R(this.range().max, a)), l && (t.format = t.format || c, n = this.axisLabelText(a, r, t))) return new ti(a, n, e, r, t);
            }, categoryIndex: function categoryIndex(e) {
                var t = this,
                    i = t.options,
                    n = i.categories,
                    o = -1;return n.length && (o = Ot.floor(k(d(e), n[0], i.baseUnit, i.baseUnitStep || 1))), o;
            }, getSlot: function getSlot(e, t, i) {
                var n = this;return (typeof e === "undefined" ? "undefined" : _typeof(e)) === vo && (e = n.categoryIndex(e)), (typeof t === "undefined" ? "undefined" : _typeof(t)) === vo && (t = n.categoryIndex(t)), ce.fn.getSlot.call(n, e, t, i);
            }, valueRange: function valueRange() {
                var e = this.options,
                    t = this._categoryRange(e.srcCategories || e.categories);return { min: d(t.min), max: d(t.max) };
            } }), ue = ei.extend({ init: function init(e, t, i) {
                var n = this;i = i || {}, Xt(i, { min: d(i.min), max: d(i.max), axisCrossingValue: d(i.axisCrossingValues || i.axisCrossingValue) }), this.seriesMin = d(e), this.seriesMax = d(t), i = n.applyDefaults(this.seriesMin, this.seriesMax, i), ei.fn.init.call(n, i);
            }, options: { type: mn, majorGridLines: { visible: !0, width: 1, color: Zi }, labels: { dateFormats: Tr } }, applyDefaults: function applyDefaults(e, i, n) {
                var o = this,
                    r = n.min || e,
                    a = n.max || i,
                    s = n.baseUnit || (a && r ? o.timeUnits(b(a, r)) : Hn),
                    l = ir[s],
                    c = v(g(r) - 1, s) || d(a),
                    h = y(g(a) + 1, s),
                    u = n.majorUnit ? n.majorUnit : t,
                    p = u || Jt.ceil(Jt.autoMajorUnit(c.getTime(), h.getTime()), l) / l,
                    f = A(c, h, s),
                    x = Jt.ceil(f, p),
                    _ = x - f,
                    w = Ot.floor(_ / 2),
                    k = _ - w;return n.baseUnit || delete n.baseUnit, n.baseUnit = n.baseUnit || s, n.min = n.min || m(c, -w, s), n.max = n.max || m(h, k, s), n.minorUnit = n.minorUnit || p / 5, n.majorUnit = p, this.totalMin = g(v(g(e) - 1, s)), this.totalMax = g(y(g(i) + 1, s)), n;
            }, range: function range() {
                var e = this.options;return { min: e.min, max: e.max };
            }, getDivisions: function getDivisions(e) {
                var t = this.options;return Ot.floor(A(t.min, t.max, t.baseUnit) / e + 1);
            }, getTickPositions: function getTickPositions(e) {
                var t,
                    i,
                    n,
                    o = this.options,
                    r = o.vertical,
                    a = o.reverse,
                    s = this.lineBox(),
                    l = (r ? -1 : 1) * (a ? -1 : 1),
                    c = 1 === l ? 1 : 2,
                    h = s[(r ? yr : vr) + c],
                    u = this.getDivisions(e),
                    p = _(o.max, o.min),
                    f = r ? s.height() : s.width(),
                    d = f / p,
                    g = [h];for (t = 1; t < u; t++) {
                    i = m(o.min, t * e, o.baseUnit), n = h + _(i, o.min) * d * l, g.push(Ci(n, un));
                }return g;
            }, getMajorTickPositions: function getMajorTickPositions() {
                var e = this;return e.getTickPositions(e.options.majorUnit);
            }, getMinorTickPositions: function getMinorTickPositions() {
                var e = this;return e.getTickPositions(e.options.minorUnit);
            }, getSlot: function getSlot(e, t, i) {
                return hi.fn.getSlot.call(this, d(e), d(t), i);
            }, getValue: function getValue(e) {
                var t = hi.fn.getValue.call(this, e);return null !== t ? d(t) : null;
            }, labelsCount: function labelsCount() {
                return this.getDivisions(this.options.majorUnit);
            }, createAxisLabel: function createAxisLabel(e, t) {
                var i,
                    n,
                    o = this.options,
                    r = e * o.majorUnit,
                    a = o.min;return r > 0 && (a = m(a, r, o.baseUnit)), i = t.dateFormats[o.baseUnit], t.format = t.format || i, n = this.axisLabelText(a, null, t), new ti(a, n, e, null, t);
            }, timeUnits: function timeUnits(e) {
                var t = Hn;return e >= tr ? t = _r : e >= er ? t = so : e >= Jo ? t = mr : e >= $o && (t = xn), t;
            }, translateRange: function translateRange(e, t) {
                var i = this,
                    n = i.options,
                    o = n.baseUnit,
                    r = n.weekStartDay,
                    a = i.lineBox(),
                    s = n.vertical ? a.height() : a.width(),
                    l = i.range(),
                    c = s / _(l.max, l.min),
                    h = Ci(e / c, _n),
                    u = w(n.min, h),
                    p = w(n.max, h);return t || (u = m(u, 0, o, r), p = m(p, 0, o, r)), { min: u, max: p };
            }, scaleRange: function scaleRange(e) {
                for (var t, i, n = this, o = n.options, r = Ot.abs(e), a = o.min, s = o.max; r--;) {
                    t = _(a, s), i = Ot.round(.1 * t), e < 0 ? (a = w(a, i), s = w(s, -i)) : (a = w(a, -i), s = w(s, i));
                }return { min: a, max: s };
            }, shouldRenderNote: function shouldRenderNote(e) {
                var t = this.range();return _i(e, t.min) >= 0 && _i(e, t.max) <= 0;
            }, pan: function pan(e) {
                var t = this.translateRange(e, !0),
                    i = this.limitRange(g(t.min), g(t.max), this.totalMin, this.totalMax);if (i) return { min: d(i.min), max: d(i.max) };
            }, pointsRange: function pointsRange(e, t) {
                var i = this.getValue(e),
                    n = this.getValue(t),
                    o = Ot.min(i, n),
                    r = Ot.max(i, n);return { min: d(o), max: d(r) };
            }, zoomRange: function zoomRange(e) {
                var t = this.scaleRange(e),
                    i = d(Vi(g(t.min), this.totalMin, this.totalMax)),
                    n = d(Vi(g(t.max), this.totalMin, this.totalMax));return { min: i, max: n };
            } }), pe = oi.extend({ options: { vertical: !1, gap: 0, spacing: 0 }, reflow: function reflow(e) {
                var t,
                    i,
                    n = this,
                    o = n.options,
                    r = o.vertical,
                    a = r ? yr : vr,
                    s = n.children,
                    l = o.gap,
                    c = o.spacing,
                    h = s.length,
                    u = h + l + c * (h - 1),
                    p = (r ? e.height() : e.width()) / u,
                    f = e[a + 1] + p * (l / 2);for (i = 0; i < h; i++) {
                    t = (s[i].box || e).clone(), t[a + 1] = f, t[a + 2] = f + p, s[i].reflow(t), i < h - 1 && (f += p * c), f += p;
                }
            } }), fe = oi.extend({ options: { vertical: !0 }, reflow: function reflow(e) {
                var t,
                    i,
                    n,
                    o = this.options,
                    r = o.vertical,
                    a = r ? vr : yr,
                    s = this.children,
                    l = this.box = new ii(),
                    c = s.length;for (t = 0; t < c; t++) {
                    i = s[t], i.visible !== !1 && (n = i.box.clone(), n.snapTo(e, a), 0 === t && (l = this.box = n.clone()), i.reflow(n), l.wrap(n));
                }
            } }), de = { click: function click(e, t) {
                return e.trigger(Fo, this.eventArgs(t));
            }, hover: function hover(e, t) {
                return e.trigger(Uo, this.eventArgs(t));
            }, eventArgs: function eventArgs(e) {
                return { value: this.value, percentage: this.percentage, stackValue: this.stackValue, category: this.category, series: this.series, dataItem: this.dataItem, runningTotal: this.runningTotal, total: this.total, element: bi(e), originalEvent: e, point: this };
            } }, ge = { createNote: function createNote() {
                var e = this,
                    t = e.options.notes,
                    i = e.noteText || t.label.text;t.visible !== !1 && Ri(i) && null !== i && (e.note = new li(e.value, i, e.dataItem, e.category, e.series, e.options.notes), e.append(e.note));
            } }, me = oi.extend({ init: function init(e, t) {
                var i = this;oi.fn.init.call(i), i.options = t, i.color = t.color || xr, i.aboveAxis = Mi(i.options.aboveAxis, !0), i.value = e;
            }, defaults: { border: { width: 1 }, vertical: !0, overlay: { gradient: On }, labels: { visible: !1, format: "{0}" }, opacity: 1, notes: { label: {} } }, render: function render() {
                this._rendered || (this._rendered = !0, this.createLabel(), this.createNote(), this.errorBar && this.append(this.errorBar));
            }, createLabel: function createLabel() {
                var e,
                    t,
                    i = this.options,
                    n = i.labels;n.visible && (n.template ? (t = Kt(n.template), e = t({ dataItem: this.dataItem, category: this.category, value: this.value, percentage: this.percentage, stackValue: this.stackValue, runningTotal: this.runningTotal, total: this.total, series: this.series })) : e = this.formatValue(n.format), this.label = new re(e, Xt({ vertical: i.vertical }, i.labels)), this.append(this.label));
            }, formatValue: function formatValue(e) {
                return this.owner.formatPointValue(this, e);
            }, reflow: function reflow(e) {
                var t, i, n;if (this.render(), t = this, i = t.label, t.box = e, i && (i.options.aboveAxis = t.aboveAxis, i.reflow(e)), t.note && t.note.reflow(e), t.errorBars) for (n = 0; n < t.errorBars.length; n++) {
                    t.errorBars[n].reflow(e);
                }
            }, createVisual: function createVisual() {
                var e,
                    t = this,
                    i = t.box,
                    n = t.options,
                    o = n.visual;t.visible !== !1 && (oi.fn.createVisual.call(t), o ? (e = this.rectVisual = o({ category: t.category, dataItem: t.dataItem, value: t.value, sender: t.getChart(), series: t.series, percentage: t.percentage, stackValue: this.stackValue, runningTotal: t.runningTotal, total: t.total, rect: i.toRect(), createVisual: function createVisual() {
                        var e = new Oi.Group();return t.createRect(e), e;
                    }, options: n }), e && t.visual.append(e)) : i.width() > 0 && i.height() > 0 && t.createRect(t.visual));
            }, createRect: function createRect(e) {
                var i,
                    n,
                    o,
                    r,
                    a = this.options,
                    s = a.border,
                    l = Ri(s.opacity) ? s.opacity : a.opacity,
                    c = this.box.toRect();c.size.width = Math.round(c.size.width), i = this.rectVisual = Oi.Path.fromRect(c, { fill: { color: this.color, opacity: a.opacity }, stroke: { color: this.getBorderColor(), width: s.width, opacity: l, dashType: s.dashType } }), n = this.box.width(), o = this.box.height(), r = a.vertical ? n : o, r > Yi && (vi(i), (n < 1 || o < 1) && (i.options.stroke.lineJoin = "round")), e.append(i), Y(a) && e.append(this.createGradientOverlay(i, { baseColor: this.color }, Xt({ end: a.vertical ? t : [0, 1] }, a.overlay)));
            }, createHighlight: function createHighlight(e) {
                var t = Oi.Path.fromRect(this.box.toRect(), e);return vi(t);
            }, highlightVisual: function highlightVisual() {
                return this.rectVisual;
            }, highlightVisualArgs: function highlightVisualArgs() {
                return { options: this.options, rect: this.box.toRect(), visual: this.rectVisual };
            }, getBorderColor: function getBorderColor() {
                var e = this,
                    t = e.options,
                    i = e.color,
                    n = t.border,
                    o = n.color,
                    r = n._brightness || Xi;return Ri(o) || (o = new ri(i).brightness(r).toHex()), o;
            }, tooltipAnchor: function tooltipAnchor(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a = this,
                    s = a.options,
                    l = a.box,
                    c = s.vertical,
                    h = a.aboveAxis,
                    u = a.owner.pane.clipBox() || l;return c ? (i = Ot.min(l.x2, u.x2) + ar, n = h ? Ot.max(l.y1, u.y1) : Ot.min(l.y2, u.y2) - t) : (o = Ot.max(l.x1, u.x1), r = Ot.min(l.x2, u.x2), s.isStacked ? (i = h ? r - e : o, n = Ot.max(l.y1, u.y1) - t - ar) : (i = h ? r + ar : o - e - ar, n = Ot.max(l.y1, u.y1))), new ui(i, n);
            }, overlapsBox: function overlapsBox(e) {
                return this.box.overlaps(e);
            } }), Xt(me.fn, de), Xt(me.fn, ge), xe = Oi.Animation.extend({ options: { duration: Nn
            }, setup: function setup() {
                var e,
                    t,
                    i = this.element,
                    n = this.options,
                    o = i.bbox();o ? (this.origin = n.origin, e = n.vertical ? yr : vr, t = this.fromScale = new zi.Point(1, 1), t[e] = Ho, i.transform(zi.transform().scale(t.x, t.y))) : this.abort();
            }, step: function step(e) {
                var t = ki(this.fromScale.x, 1, e),
                    i = ki(this.fromScale.y, 1, e);this.element.transform(zi.transform().scale(t, i, this.origin));
            }, abort: function abort() {
                Oi.Animation.fn.abort.call(this), this.element.transform(null);
            } }), Oi.AnimationFactory.current.register(qi, xe), ve = Oi.Animation.extend({ options: { duration: 200, easing: $n }, setup: function setup() {
                this.fadeTo = this.element.opacity(), this.element.opacity(0);
            }, step: function step(e) {
                this.element.opacity(e * this.fadeTo);
            } }), Oi.AnimationFactory.current.register(En, ve), ye = function ye(e, t, i) {
            var n = this;n.initGlobalRanges(e, t, i);
        }, ye.prototype = ye.fn = { percentRegex: /percent(?:\w*)\((\d+)\)/, standardDeviationRegex: RegExp("^" + qo + "(?:\\((\\d+(?:\\.\\d+)?)\\))?$"), initGlobalRanges: function initGlobalRanges(e, t, i) {
                var n,
                    o,
                    r,
                    a,
                    s,
                    l = this,
                    c = t.data,
                    h = l.standardDeviationRegex.exec(e);h ? (l.valueGetter = l.createValueGetter(t, i), n = l.getAverage(c), o = l.getStandardDeviation(c, n, !1), r = h[1] ? parseFloat(h[1]) : 1, a = { low: n.value - o * r, high: n.value + o * r }, l.globalRange = function () {
                    return a;
                }) : e.indexOf && e.indexOf(Go) >= 0 && (l.valueGetter = l.createValueGetter(t, i), s = l.getStandardError(c, l.getAverage(c)), l.globalRange = function (e) {
                    return { low: e - s, high: e + s };
                });
            }, createValueGetter: function createValueGetter(e, t) {
                var i,
                    n,
                    o,
                    r = e.data,
                    a = oe.current,
                    s = a.valueFields(e),
                    l = Ri(r[0]) ? r[0] : {};return Dt(l) ? (i = t ? F(t, s) : 0, o = Wt("[" + i + "]")) : B(l) ? o = Wt() : (typeof l === "undefined" ? "undefined" : _typeof(l)) === vo && (n = a.sourceFields(e, s), o = Wt(n[F(t, s)])), o;
            }, getErrorRange: function getErrorRange(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a = this;if (Ri(t)) {
                    if (a.globalRange) return a.globalRange(e);if (Dt(t)) i = e - t[0], n = e + t[1];else if (B(o = parseFloat(t))) i = e - o, n = e + o;else {
                        if (!(o = a.percentRegex.exec(t))) throw Error("Invalid ErrorBar value: " + t);r = e * (parseFloat(o[1]) / 100), i = e - Ot.abs(r), n = e + Ot.abs(r);
                    }return { low: i, high: n };
                }
            }, getStandardError: function getStandardError(e, t) {
                return this.getStandardDeviation(e, t, !0) / Ot.sqrt(t.count);
            }, getStandardDeviation: function getStandardDeviation(e, t, i) {
                var n,
                    o,
                    r = 0,
                    a = e.length,
                    s = i ? t.count - 1 : t.count;for (o = 0; o < a; o++) {
                    n = this.valueGetter(e[o]), B(n) && (r += Ot.pow(n - t.value, 2));
                }return Ot.sqrt(r / s);
            }, getAverage: function getAverage(e) {
                var t,
                    i,
                    n = 0,
                    o = 0,
                    r = e.length;for (i = 0; i < r; i++) {
                    t = this.valueGetter(e[i]), B(t) && (n += t, o++);
                }return { value: n / o, count: o };
            } }, _e = oi.extend({ init: function init(e, t) {
                var i = this;oi.fn.init.call(i, t), i.plotArea = e, i.categoryAxis = e.seriesCategoryAxis(t.series[0]), i.valueAxisRanges = {}, i.points = [], i.categoryPoints = [], i.seriesPoints = [], i.seriesOptions = [], i._evalSeries = [], i.render();
            }, options: { series: [], invertAxes: !1, isStacked: !1, clip: !0 }, render: function render() {
                var e = this;e.traverseDataPoints(Ht(e.addValue, e));
            }, pointOptions: function pointOptions(e, t) {
                var i,
                    n = this.seriesOptions[t];return n || (i = this.pointType().fn.defaults, this.seriesOptions[t] = n = Xt({}, i, { vertical: !this.options.invertAxes }, e)), n;
            }, plotValue: function plotValue(e) {
                var t, i, n, o, r, a, s, l;if (!e) return 0;if (this.options.isStacked100 && B(e.value)) {
                    for (t = e.categoryIx, i = this.categoryPoints[t], n = 0, o = [], r = 0; r < i.length; r++) {
                        if (a = i[r]) {
                            if (s = e.series.stack, l = a.series.stack, s && l && s.group !== l.group) continue;B(a.value) && (n += Ot.abs(a.value), o.push(Ot.abs(a.value)));
                        }
                    }if (n > 0) return e.value / n;
                }return e.value;
            }, plotRange: function plotRange(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l,
                    c,
                    h,
                    u,
                    p,
                    f,
                    d = e.categoryIx,
                    g = this.categoryPoints[d];if (this.options.isStacked) {
                    for (t = t || 0, i = this.plotValue(e), n = i >= 0, o = t, r = !1, a = 0; a < g.length && (s = g[a], e !== s); a++) {
                        if (l = e.series.stack, c = s.series.stack, l && c) {
                            if ((typeof l === "undefined" ? "undefined" : _typeof(l)) === Yo && l !== c) continue;if (l.group && l.group !== c.group) continue;
                        }h = this.plotValue(s), (h >= 0 && n || h < 0 && !n) && (o += h, i += h, r = !0, this.options.isStacked100 && (i = Ot.min(i, 1)));
                    }return r && (o -= t), [o, i];
                }return u = e.series, p = this.seriesValueAxis(u), f = this.categoryAxisCrossingValue(p), [f, e.value || f];
            }, stackLimits: function stackLimits(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a,
                    s = io,
                    l = ro;for (i = 0; i < this.categoryPoints.length; i++) {
                    if (n = this.categoryPoints[i]) for (o = 0; o < n.length; o++) {
                        r = n[o], r && (r.series.stack !== t && r.series.axis !== e || (a = this.plotRange(r, 0)[1], Ri(a) && isFinite(a) && (l = Ot.max(l, a), s = Ot.min(s, a))));
                    }
                }return { min: s, max: l };
            }, updateStackRange: function updateStackRange() {
                var e,
                    t,
                    i,
                    n,
                    o,
                    r,
                    a = this,
                    s = a.options.series,
                    l = a.options.isStacked,
                    c = {};if (l) for (t = 0; t < s.length; t++) {
                    i = s[t], n = i.axis, o = n + i.stack, e = c[o], e || (e = a.stackLimits(n, i.stack), r = a.errorTotals, r && (r.negative.length && (e.min = Ot.min(e.min, Li(r.negative))), r.positive.length && (e.max = Ot.max(e.max, Ei(r.positive)))), e.min !== io || e.max !== ro ? c[o] = e : e = null), e && (a.valueAxisRanges[n] = e);
                }
            }, addErrorBar: function addErrorBar(e, t, i) {
                var n,
                    o = this,
                    r = e.value,
                    a = e.series,
                    s = e.seriesIx,
                    l = e.options.errorBars,
                    c = t.fields[Tn],
                    h = t.fields[Rn];B(c) && B(h) ? n = { low: c, high: h } : l && Ri(l.value) && (o.seriesErrorRanges = o.seriesErrorRanges || [], o.seriesErrorRanges[s] = o.seriesErrorRanges[s] || new ye(l.value, a, hr), n = o.seriesErrorRanges[s].getErrorRange(r, l.value)), n && (e.low = n.low, e.high = n.high, o.addPointErrorBar(e, i));
            }, addPointErrorBar: function addPointErrorBar(e, t) {
                var i,
                    n,
                    o,
                    r = this,
                    a = e.series,
                    s = e.low,
                    l = e.high,
                    c = !r.options.invertAxes,
                    h = e.options.errorBars;r.options.isStacked ? (n = r.stackedErrorRange(e, t), s = n.low, l = n.high) : (o = { categoryIx: t, series: a }, r.updateRange({ value: s }, o), r.updateRange({ value: l }, o)), i = new Te(s, l, c, r, a, h), e.errorBars = [i], e.append(i);
            }, stackedErrorRange: function stackedErrorRange(e, t) {
                var i = this,
                    n = i.plotRange(e, 0)[1] - e.value,
                    o = e.low + n,
                    r = e.high + n;return i.errorTotals = i.errorTotals || { positive: [], negative: [] }, o < 0 && (i.errorTotals.negative[t] = Ot.min(i.errorTotals.negative[t] || 0, o)), r > 0 && (i.errorTotals.positive[t] = Ot.max(i.errorTotals.positive[t] || 0, r)), { low: o, high: r };
            }, addValue: function addValue(t, i) {
                var n,
                    o,
                    r = this,
                    a = i.categoryIx,
                    s = i.series,
                    l = i.seriesIx,
                    c = r.categoryPoints[a];c || (r.categoryPoints[a] = c = []), n = r.seriesPoints[l], n || (r.seriesPoints[l] = n = []), o = r.createPoint(t, i), o && (e.extend(o, i), o.owner = r, o.dataItem = s.data[a], o.noteText = t.fields.noteText, r.addErrorBar(o, t, a)), r.points.push(o), n.push(o), c.push(o), r.updateRange(t.valueFields, i);
            }, evalPointOptions: function evalPointOptions(e, t, i, n, o, r) {
                var a = { defaults: o._defaults, excluded: ["data", "aggregate", "_events", "tooltip", "template", "visual", "toggle", "_outOfRangeMinPoint", "_outOfRangeMaxPoint"] },
                    s = this._evalSeries[r];return Ri(s) || (this._evalSeries[r] = s = M(e, {}, a, !0)), s && (e = Xt({}, e), M(e, { value: t, category: i, index: n, series: o, dataItem: o.data[n] }, a)), e;
            }, updateRange: function updateRange(e, t) {
                var i = this,
                    n = t.series.axis,
                    o = e.value,
                    r = i.valueAxisRanges[n];isFinite(o) && null !== o && (r = i.valueAxisRanges[n] = r || { min: io, max: ro }, r.min = Ot.min(r.min, o), r.max = Ot.max(r.max, o));
            }, seriesValueAxis: function seriesValueAxis(e) {
                var t = this.plotArea,
                    i = e.axis,
                    n = i ? t.namedValueAxes[i] : t.valueAxis;if (!n) throw Error("Unable to locate value axis with name " + i);return n;
            }, reflow: function reflow(e) {
                var t,
                    i,
                    n,
                    o = this,
                    r = 0,
                    a = o.categorySlots = [],
                    s = o.points,
                    l = o.categoryAxis;o.traverseDataPoints(function (e, c) {
                    var h,
                        u,
                        p,
                        f,
                        d = c.categoryIx,
                        g = c.series;t = o.pointValue(e), i = o.seriesValueAxis(g), n = s[r++], h = a[d], h || (a[d] = h = o.categorySlot(l, d, i)), n && (u = o.plotRange(n, i.startValue()), p = i.getSlot(u[0], u[1], !o.options.clip), p ? (f = o.pointSlot(h, p), n.aboveAxis = o.aboveAxis(n, i), n.stackValue = u[1], o.options.isStacked100 && (n.percentage = o.plotValue(n)), o.reflowPoint(n, f)) : n.visible = !1);
                }), o.reflowCategories(a), o.box = e;
            }, aboveAxis: function aboveAxis(e, t) {
                var i = this.categoryAxisCrossingValue(t),
                    n = e.value;return t.options.reverse ? n < i : n >= i;
            }, categoryAxisCrossingValue: function categoryAxisCrossingValue(e) {
                var t = this.categoryAxis,
                    i = e.options,
                    n = [].concat(i.axisCrossingValues || i.axisCrossingValue);return n[t.axisIndex || 0] || 0;
            }, reflowPoint: function reflowPoint(e, t) {
                e.reflow(t);
            }, reflowCategories: function reflowCategories() {}, pointSlot: function pointSlot(e, t) {
                var i = this,
                    n = i.options,
                    o = n.invertAxes,
                    r = o ? t : e,
                    a = o ? e : t;return new ii(r.x1, a.y1, r.x2, a.y2);
            }, categorySlot: function categorySlot(e, t) {
                return e.getSlot(t);
            }, traverseDataPoints: function traverseDataPoints(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a = this,
                    s = a.options,
                    l = s.series,
                    c = a.categoryAxis.options.categories || [],
                    u = h(l),
                    p = l.length;for (i = 0; i < p; i++) {
                    this._outOfRangeCallback(l[i], "_outOfRangeMinPoint", i, e);
                }for (t = 0; t < u; t++) {
                    for (i = 0; i < p; i++) {
                        r = l[i], o = c[t], n = this._bindPoint(r, i, t), e(n, { category: o, categoryIx: t, series: r, seriesIx: i });
                    }
                }for (i = 0; i < p; i++) {
                    this._outOfRangeCallback(l[i], "_outOfRangeMaxPoint", i, e);
                }
            }, _outOfRangeCallback: function _outOfRangeCallback(e, t, i, n) {
                var o,
                    r,
                    a = e[t];a && (o = a.categoryIx, r = this._bindPoint(e, i, o, a.item), n(r, { category: a.category, categoryIx: o, series: e, seriesIx: i }));
            }, _bindPoint: function _bindPoint(e, t, i, n) {
                var o, r;return this._bindCache || (this._bindCache = []), o = this._bindCache[t], o || (o = this._bindCache[t] = []), r = o[i], r || (r = o[i] = oe.current.bindPoint(e, i, n)), r;
            }, formatPointValue: function formatPointValue(e, t) {
                return null === e.value ? "" : yi(t, e.value);
            }, pointValue: function pointValue(e) {
                return e.valueFields.value;
            } }), be = _e.extend({ options: { animation: { type: qi } }, render: function render() {
                var e = this;_e.fn.render.apply(e), e.updateStackRange();
            }, pointType: function pointType() {
                return me;
            }, clusterType: function clusterType() {
                return pe;
            }, stackType: function stackType() {
                return fe;
            }, stackLimits: function stackLimits(e, t) {
                var i = _e.fn.stackLimits.call(this, e, t);return i;
            }, createPoint: function createPoint(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a = this,
                    s = t.categoryIx,
                    l = t.category,
                    c = t.series,
                    h = t.seriesIx,
                    u = a.pointValue(e),
                    p = a.options,
                    f = a.children,
                    d = a.options.isStacked,
                    g = a.pointType(),
                    m = a.clusterType(),
                    x = this.pointOptions(c, h),
                    v = x.labels;return d && v.position == _o && (v.position = Gn), x.isStacked = d, o = e.fields.color || c.color, u < 0 && x.negativeColor && (o = x.negativeColor), x = a.evalPointOptions(x, u, l, s, c, h), Nt.isFunction(c.color) && (o = x.color), i = new g(u, x), i.color = o, n = f[s], n || (n = new m({ vertical: p.invertAxes, gap: p.gap, spacing: p.spacing }), a.append(n)), d ? (r = a.getStackWrap(c, n), r.append(i)) : n.append(i), i;
            }, getStackWrap: function getStackWrap(e, t) {
                var i,
                    n,
                    o,
                    r = e.stack,
                    a = r ? r.group || r : r,
                    s = t.children;if ((typeof a === "undefined" ? "undefined" : _typeof(a)) === Yo) {
                    for (n = 0; n < s.length; n++) {
                        if (s[n]._stackGroup === a) {
                            i = s[n];break;
                        }
                    }
                } else i = s[0];return i || (o = this.stackType(), i = new o({ vertical: !this.options.invertAxes }), i._stackGroup = a, t.append(i)), i;
            }, categorySlot: function categorySlot(e, t, i) {
                var n,
                    o,
                    r = this,
                    a = r.options,
                    s = e.getSlot(t),
                    l = i.startValue();return a.isStacked && (o = i.getSlot(l, l, !0), n = a.invertAxes ? vr : yr, s[n + 1] = s[n + 2] = o[n + 1]), s;
            }, reflowCategories: function reflowCategories(e) {
                var t,
                    i = this,
                    n = i.children,
                    o = n.length;for (t = 0; t < o; t++) {
                    n[t].reflow(e[t]);
                }
            }, createAnimation: function createAnimation() {
                this._setAnimationOptions(), oi.fn.createAnimation.call(this), X(this.options.series) && this._setChildrenAnimation();
            }, _setChildrenAnimation: function _setChildrenAnimation() {
                var e,
                    t,
                    i,
                    n = this.points;for (i = 0; i < n.length; i++) {
                    e = n[i], t = e.visual, t && Ri(t.options.zIndex) && (e.options.animation = this.options.animation, e.createAnimation());
                }
            }, _setAnimationOptions: function _setAnimationOptions() {
                var e,
                    t,
                    i = this.options,
                    n = i.animation || {};this.options.isStacked ? (t = this.seriesValueAxis(i.series[0]), e = t.getSlot(t.startValue())) : e = this.categoryAxis.getSlot(0), n.origin = new zi.Point(e.x1, e.y1), n.vertical = !i.invertAxes;
            } }), we = me.extend({ defaults: { labels: { format: "{0} - {1}" }, tooltip: { format: "{1}" } }, createLabel: function createLabel() {
                var e = this.options.labels,
                    t = Xt({}, e, e.from),
                    i = Xt({}, e, e.to);t.visible && (this.labelFrom = this._createLabel(t), this.append(this.labelFrom)), i.visible && (this.labelTo = this._createLabel(i), this.append(this.labelTo));
            }, _createLabel: function _createLabel(e) {
                var t, i;return e.template ? (i = Kt(e.template), t = i({ dataItem: this.dataItem, category: this.category, value: this.value, percentage: this.percentage, runningTotal: this.runningTotal, total: this.total, series: this.series })) : t = this.formatValue(e.format), new re(t, Xt({ vertical: this.options.vertical }, e));
            }, reflow: function reflow(e) {
                this.render();var t = this,
                    i = t.labelFrom,
                    n = t.labelTo;t.box = e, i && (i.options.aboveAxis = t.value.from > t.value.to, i.reflow(e)), n && (n.options.aboveAxis = t.value.to > t.value.from, n.reflow(e)), t.note && t.note.reflow(e);
            } }), Ae = be.extend({ pointType: function pointType() {
                return we;
            }, pointValue: function pointValue(e) {
                return e.valueFields;
            }, formatPointValue: function formatPointValue(e, t) {
                return null === e.value.from && null === e.value.to ? "" : yi(t, e.value.from, e.value.to);
            }, plotLimits: _e.fn.plotLimits, plotRange: function plotRange(e) {
                return e ? [e.value.from, e.value.to] : 0;
            }, updateRange: function updateRange(e, t) {
                var i = this,
                    n = t.series.axis,
                    o = e.from,
                    r = e.to,
                    a = i.valueAxisRanges[n];null !== e && B(o) && B(r) && (a = i.valueAxisRanges[n] = a || { min: io, max: ro }, a.min = Ot.min(a.min, o), a.max = Ot.max(a.max, o), a.min = Ot.min(a.min, r), a.max = Ot.max(a.max, r));
            }, aboveAxis: function aboveAxis(e) {
                var t = e.value;return t.from < t.to;
            } }), ke = _e.extend({ init: function init(e, t) {
                var i = this;i.wrapData(t), _e.fn.init.call(i, e, t);
            }, options: { animation: { type: qi } }, wrapData: function wrapData(e) {
                var t,
                    i,
                    n,
                    o = e.series;for (t = 0; t < o.length; t++) {
                    n = o[t], i = n.data, i && !Dt(i[0]) && _typeof(i[0]) != vo && (n.data = [i]);
                }
            }, reflowCategories: function reflowCategories(e) {
                var t,
                    i = this,
                    n = i.children,
                    o = n.length;for (t = 0; t < o; t++) {
                    n[t].reflow(e[t]);
                }
            }, plotRange: function plotRange(e) {
                var t = e.series,
                    i = this.seriesValueAxis(t),
                    n = this.categoryAxisCrossingValue(i);return [n, e.value.current || n];
            }, createPoint: function createPoint(e, t) {
                var i,
                    n,
                    o = this,
                    r = t.categoryIx,
                    a = t.category,
                    s = t.series,
                    l = t.seriesIx,
                    c = e.valueFields,
                    h = o.options,
                    u = o.children,
                    p = Xt({ vertical: !h.invertAxes, overlay: s.overlay, categoryIx: r, invertAxes: h.invertAxes }, s),
                    f = e.fields.color || s.color;return p = o.evalPointOptions(p, c, a, r, s, l), Nt.isFunction(s.color) && (f = p.color), i = new Se(c, p), i.color = f, n = u[r], n || (n = new pe({ vertical: h.invertAxes, gap: h.gap, spacing: h.spacing }), o.append(n)), n.append(i), i;
            }, updateRange: function updateRange(e, t) {
                var i = this,
                    n = t.series.axis,
                    o = e.current,
                    r = e.target,
                    a = i.valueAxisRanges[n];Ri(o) && !isNaN(o) && Ri(r && !isNaN(r)) && (a = i.valueAxisRanges[n] = a || { min: io, max: ro }, a.min = Ot.min.apply(Ot, [a.min, o, r]), a.max = Ot.max.apply(Ot, [a.max, o, r]));
            }, formatPointValue: function formatPointValue(e, t) {
                return yi(t, e.value.current, e.value.target);
            }, pointValue: function pointValue(e) {
                return e.valueFields.current;
            }, aboveAxis: function aboveAxis(e) {
                var t = e.value.current;return t > 0;
            }, createAnimation: function createAnimation() {
                var e,
                    t,
                    i = this.points;for (this._setAnimationOptions(), t = 0; t < i.length; t++) {
                    e = i[t], e.options.animation = this.options.animation, e.createAnimation();
                }
            }, _setAnimationOptions: be.fn._setAnimationOptions }), Se = oi.extend({ init: function init(e, t) {
                var i = this;oi.fn.init.call(i, t), i.aboveAxis = i.options.aboveAxis, i.color = t.color || xr, i.value = e;
            }, options: { border: { width: 1 }, vertical: !1, opacity: 1, target: { shape: "", border: { width: 0, color: "green" }, line: { width: 2 } }, tooltip: { format: "Current: {0}</br>Target: {1}" } }, render: function render() {
                var e = this,
                    t = e.options;e._rendered || (e._rendered = !0, Ri(e.value.target) && (e.target = new Ce({ type: t.target.shape, background: t.target.color || e.color, opacity: t.opacity, zIndex: t.zIndex, border: t.target.border, vAlign: or, align: Ro }), e.target.value = this.value, e.target.dataItem = this.dataItem, e.target.series = this.series, e.append(e.target)), e.createNote());
            }, reflow: function reflow(e) {
                this.render();var t,
                    i = this,
                    n = i.options,
                    o = i.owner,
                    r = i.target,
                    a = n.invertAxes,
                    s = o.seriesValueAxis(i.options),
                    l = o.categorySlot(o.categoryAxis, n.categoryIx, s),
                    c = s.getSlot(i.value.target),
                    h = a ? c : l,
                    u = a ? l : c;r && (t = new ii(h.x1, u.y1, h.x2, u.y2), r.options.height = a ? t.height() : n.target.line.width, r.options.width = a ? n.target.line.width : t.width(), r.reflow(t)), i.note && i.note.reflow(e), i.box = e;
            }, createVisual: function createVisual() {
                var e, t;oi.fn.createVisual.call(this), e = this.options, t = Oi.Path.fromRect(this.box.toRect(), { fill: { color: this.color, opacity: e.opacity }, stroke: null }), e.border.width > 0 && t.options.set("stroke", { color: e.border.color || this.color, width: e.border.width, dashType: e.border.dashType, opacity: Mi(e.border.opacity, e.opacity) }), this.bodyVisual = t, vi(t), this.visual.append(t);
            }, createAnimation: function createAnimation() {
                this.bodyVisual && (this.animation = Oi.Animation.create(this.bodyVisual, this.options.animation));
            }, tooltipAnchor: me.fn.tooltipAnchor, createHighlight: function createHighlight(e) {
                return Oi.Path.fromRect(this.box.toRect(), e);
            }, highlightVisual: function highlightVisual() {
                return this.bodyVisual;
            }, highlightVisualArgs: function highlightVisualArgs() {
                return { rect: this.box.toRect(), visual: this.bodyVisual, options: this.options };
            }, formatValue: function formatValue(e) {
                var t = this;return t.owner.formatPointValue(t, e);
            } }), Xt(Se.fn, de), Xt(Se.fn, ge), Ce = di.extend(), Xt(Ce.fn, de), Pe = oi.extend({ init: function init(e, t, i, n, o, r) {
                var a = this;a.low = e, a.high = t, a.isVertical = i, a.chart = n, a.series = o, oi.fn.init.call(a, r);
            }, options: { animation: { type: En, delay: Nn }, endCaps: !0, line: { width: 1 }, zIndex: 1 }, getAxis: function getAxis() {}, reflow: function reflow(e) {
                var t,
                    i = this,
                    n = i.options.endCaps,
                    o = i.isVertical,
                    r = i.getAxis(),
                    a = r.getSlot(i.low, i.high),
                    s = e.center(),
                    l = i.getCapsWidth(e, o),
                    c = o ? s.x : s.y,
                    h = c - l,
                    u = c + l;o ? (t = [ui(s.x, a.y1), ui(s.x, a.y2)], n && t.push(ui(h, a.y1), ui(u, a.y1), ui(h, a.y2), ui(u, a.y2)), i.box = ii(h, a.y1, u, a.y2)) : (t = [ui(a.x1, s.y), ui(a.x2, s.y)], n && t.push(ui(a.x1, h), ui(a.x1, u), ui(a.x2, h), ui(a.x2, u)), i.box = ii(a.x1, h, a.x2, u)), i.linePoints = t;
            }, getCapsWidth: function getCapsWidth(e, t) {
                var i = t ? e.width() : e.height(),
                    n = Ot.min(Ot.floor(i / 2), wn) || wn;return n;
            }, createVisual: function createVisual() {
                var e = this,
                    t = e.options,
                    i = t.visual;i ? e.visual = i({ low: e.low, high: e.high, rect: e.box.toRect(), sender: e.getChart(), options: { endCaps: t.endCaps, color: t.color, line: t.line }, createVisual: function createVisual() {
                        e.createDefaultVisual();var t = e.visual;return delete e.visual, t;
                    } }) : e.createDefaultVisual();
            }, createDefaultVisual: function createDefaultVisual() {
                var e,
                    t,
                    i = this,
                    n = i.options,
                    o = { stroke: { color: n.color, width: n.line.width, dashType: n.line.dashType } },
                    r = i.linePoints;for (oi.fn.createVisual.call(this), e = 0; e < r.length; e += 2) {
                    t = new Oi.Path(o).moveTo(r[e].x, r[e].y).lineTo(r[e + 1].x, r[e + 1].y), this.visual.append(t);
                }
            } }), Te = Pe.extend({ getAxis: function getAxis() {
                var e = this,
                    t = e.chart,
                    i = e.series,
                    n = t.seriesValueAxis(i);return n;
            } }), Re = Pe.extend({ getAxis: function getAxis() {
                var e = this,
                    t = e.chart,
                    i = e.series,
                    n = t.seriesAxes(i),
                    o = e.isVertical ? n.y : n.x;return o;
            } }), Ie = oi.extend({ init: function init(e, t) {
                var i = this;oi.fn.init.call(i), i.value = e, i.options = t, i.aboveAxis = Mi(i.options.aboveAxis, !0), i.tooltipTracking = !0;
            }, defaults: { vertical: !0, markers: { visible: !0, background: xr, size: Qn, type: an, border: { width: 2 }, opacity: 1 }, labels: { visible: !1, position: Ui, margin: wi(3), padding: wi(4), animation: { type: En, delay: Nn } }, notes: { label: {} }, highlight: { markers: { border: {} } } }, render: function render() {
                var e,
                    t = this,
                    i = t.options,
                    n = i.markers,
                    o = i.labels,
                    r = t.value;t._rendered || (t._rendered = !0, n.visible && n.size && (t.marker = t.createMarker(), t.append(t.marker)), o.visible && (o.template ? (e = Kt(o.template), r = e({ dataItem: t.dataItem, category: t.category, value: t.value, percentage: t.percentage, stackValue: this.stackValue, series: t.series })) : o.format && (r = t.formatValue(o.format)), t.label = new mi(r, Xt({ align: on, vAlign: on, margin: { left: 5, right: 5 }, zIndex: Mi(o.zIndex, this.series.zIndex) }, o)), t.append(t.label)), t.createNote(), t.errorBar && t.append(t.errorBar));
            }, markerBorder: function markerBorder() {
                var e = this.options.markers,
                    t = e.background,
                    i = Xt({ color: this.color }, e.border);return Ri(i.color) || (i.color = new ri(t).brightness(Xi).toHex()), i;
            }, createVisual: Ft, createMarker: function createMarker() {
                var e = this.options.markers,
                    t = new di({ type: e.type, width: e.size, height: e.size, rotation: e.rotation, background: e.background, border: this.markerBorder(), opacity: e.opacity, zIndex: Mi(e.zIndex, this.series.zIndex), animation: e.animation, visual: e.visual }, { dataItem: this.dataItem, value: this.value, series: this.series, category: this.category });return t;
            }, markerBox: function markerBox() {
                return this.marker || (this.marker = this.createMarker(), this.marker.reflow(this._childBox)), this.marker.box;
            }, reflow: function reflow(e) {
                var t,
                    i,
                    n,
                    o,
                    r = this,
                    a = r.options,
                    s = a.vertical,
                    l = r.aboveAxis;if (r.render(), r.box = e, t = e.clone(), s ? l ? t.y1 -= t.height() : t.y2 += t.height() : l ? t.x1 += t.width() : t.x2 -= t.width(), r._childBox = t, r.marker && r.marker.reflow(t), r.reflowLabel(t), r.errorBars) for (n = 0; n < r.errorBars.length; n++) {
                    r.errorBars[n].reflow(t);
                }r.note && (o = r.markerBox(), a.markers.visible && a.markers.size || (i = o.center(), o = ii(i.x, i.y, i.x, i.y)), r.note.reflow(o));
            }, reflowLabel: function reflowLabel(e) {
                var t = this,
                    i = t.options,
                    n = t.label,
                    o = i.labels.position;n && (o = o === Ui ? or : o, o = o === Wi ? Qi : o, n.reflow(e), n.box.alignTo(t.markerBox(), o), n.reflow(n.box));
            }, createHighlight: function createHighlight() {
                var e = this.options.highlight,
                    t = e.markers,
                    i = this.markerBorder().color,
                    n = this.options.markers,
                    o = new di({ type: n.type, width: n.size, height: n.size, rotation: n.rotation, background: t.color || i, border: { color: t.border.color, width: t.border.width, opacity: Mi(t.border.opacity, 1) }, opacity: Mi(t.opacity, 1) });return o.reflow(this._childBox), o.getElement();
            }, highlightVisual: function highlightVisual() {
                return (this.marker || {}).visual;
            }, highlightVisualArgs: function highlightVisualArgs() {
                var e,
                    t,
                    i,
                    n,
                    o,
                    r = this.marker;return r ? (t = r.paddingBox.toRect(), e = r.visual) : (i = this.options.markers.size, n = i / 2, o = this.box.center(), t = new zi.Rect([o.x - n, o.y - n], [i, i])), { options: this.options, rect: t, visual: e };
            }, tooltipAnchor: function tooltipAnchor(e, t) {
                var i = this,
                    n = i.markerBox(),
                    o = i.aboveAxis,
                    r = n.x2 + ar,
                    a = o ? n.y1 - t : n.y2,
                    s = i.owner.pane.clipBox(),
                    l = !s || s.overlaps(n);if (l) return ui(r, a);
            }, formatValue: function formatValue(e) {
                var t = this;return t.owner.formatPointValue(t, e);
            }, overlapsBox: function overlapsBox(e) {
                var t = this.markerBox();return t.overlaps(e);
            } }), Xt(Ie.fn, de), Xt(Ie.fn, ge), Ve = Ie.extend({ init: function init(e, t) {
                var i = this;Ie.fn.init.call(i, e, t), i.category = e.category;
            }, defaults: { labels: { position: on }, highlight: { opacity: 1, border: { width: 1, opacity: 1 } } }, createHighlight: function createHighlight() {
                var e = this.options.highlight,
                    t = e.border,
                    i = this.options.markers,
                    n = this.box.center(),
                    o = i.size / 2 - t.width / 2,
                    r = new Oi.Circle(new zi.Circle([n.x, n.y], o), { stroke: { color: t.color || new ri(i.background).brightness(Xi).toHex(), width: t.width, opacity: t.opacity }, fill: { color: i.background, opacity: e.opacity } });return r;
            } }), Be = oi.extend({ init: function init(e, t, i) {
                var n = this;oi.fn.init.call(n), n.linePoints = e, n.series = t, n.seriesIx = i;
            }, options: { closed: !1 }, points: function points(e) {
                var t,
                    i,
                    n = this,
                    o = n.linePoints.concat(e || []),
                    r = [];for (t = 0, i = o.length; t < i; t++) {
                    o[t].visible !== !1 && r.push(o[t]._childBox.toRect().center());
                }return r;
            }, createVisual: function createVisual() {
                var e,
                    t = this.options,
                    i = this.series,
                    n = i._defaults,
                    o = i.color;Zt(o) && n && (o = n.color), e = Oi.Path.fromPoints(this.points(), { stroke: { color: o, width: i.width, opacity: i.opacity, dashType: i.dashType }, zIndex: i.zIndex }), t.closed && e.close(), this.visual = e;
            }, aliasFor: function aliasFor(e, t) {
                var i = this,
                    n = i.seriesIx;return i.parent.getNearestPoint(t.x, t.y, n);
            } }), Le = { renderSegments: function renderSegments() {
                var e,
                    t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l = this,
                    c = l.options,
                    h = c.series,
                    u = l.seriesPoints,
                    p = u.length;for (this._segments = [], t = 0; t < p; t++) {
                    for (e = h[t], i = l.sortPoints(u[t]), a = i.length, n = [], r = 0; r < a; r++) {
                        o = i[r], o ? n.push(o) : l.seriesMissingValues(e) !== qn && (n.length > 1 && (s = l.createSegment(n, e, t, s), this._addSegment(s)), n = []);
                    }n.length > 1 && (s = l.createSegment(n, e, t, s), this._addSegment(s));
                }this.children.unshift.apply(this.children, this._segments);
            }, _addSegment: function _addSegment(e) {
                this._segments.push(e), e.parent = this;
            }, sortPoints: function sortPoints(e) {
                return e;
            }, seriesMissingValues: function seriesMissingValues(e) {
                var t = e.missingValues,
                    i = !t && this.options.isStacked;return i ? br : t || qn;
            }, getNearestPoint: function getNearestPoint(e, t, i) {
                var n,
                    o,
                    r,
                    a,
                    s,
                    l = new ui(e, t),
                    c = this.seriesPoints[i],
                    h = io;for (o = 0; o < c.length; o++) {
                    r = c[o], r && Ri(r.value) && null !== r.value && r.visible !== !1 && (a = r.box, s = a.center().distanceTo(l), s < h && (n = r, h = s));
                }return n;
            } }, Ee = { createAnimation: function createAnimation() {
                var e,
                    t,
                    i = this.getRoot();i && (i.options || {}).transitions !== !1 && (e = i.box, t = Oi.Path.fromRect(e.toRect()), this.visual.clip(t), this.animation = new Me(t, { box: e }), X(this.options.series) && this._setChildrenAnimation(t));
            }, _setChildrenAnimation: function _setChildrenAnimation(e) {
                var t,
                    i,
                    n = this.animationPoints();for (i = 0; i < n.length; i++) {
                    t = n[i], t && t.visual && Ri(t.visual.options.zIndex) && t.visual.clip(e);
                }
            } }, De = _e.extend({ render: function render() {
                var e = this;_e.fn.render.apply(e), e.updateStackRange(), e.renderSegments();
            }, pointType: function pointType() {
                return Ie;
            }, createPoint: function createPoint(e, t) {
                var i,
                    n,
                    o,
                    r = this,
                    a = t.categoryIx,
                    s = t.category,
                    l = t.series,
                    c = t.seriesIx,
                    h = e.valueFields.value,
                    u = r.seriesMissingValues(l);if (!Ri(h) || null === h) {
                    if (u !== br) return null;h = 0;
                }return n = this.pointOptions(l, c), n = r.evalPointOptions(n, h, s, a, l, c), o = e.fields.color || l.color, Nt.isFunction(l.color) && (o = n.color), i = new Ie(h, n), i.color = o, r.append(i), i;
            }, plotRange: function plotRange(e) {
                var t,
                    i,
                    n,
                    o,
                    r = this.plotValue(e);if (this.options.isStacked) for (t = e.categoryIx, i = this.categoryPoints[t], n = 0; n < i.length && (o = i[n], e !== o); n++) {
                    r += this.plotValue(o), this.options.isStacked100 && (r = Ot.min(r, 1));
                }return [r, r];
            }, createSegment: function createSegment(e, t, i) {
                var n,
                    o = t.style;return new (n = o === No ? ze : o === jo ? Oe : Be)(e, t, i);
            }, animationPoints: function animationPoints() {
                var e,
                    t = this.points,
                    i = [];for (e = 0; e < t.length; e++) {
                    i.push((t[e] || {}).marker);
                }return i.concat(this._segments);
            } }), Xt(De.fn, Le, Ee), Me = Oi.Animation.extend({ options: { duration: Nn }, setup: function setup() {
                this._setEnd(this.options.box.x1);
            }, step: function step(e) {
                var t = this.options.box;this._setEnd(ki(t.x1, t.x2, e));
            }, _setEnd: function _setEnd(e) {
                var t = this.element,
                    i = t.segments,
                    n = i[1].anchor(),
                    o = i[2].anchor();t.suspend(), n.setX(e), t.resume(), o.setX(e);
            } }), Oi.AnimationFactory.current.register(ln, Me), ze = Be.extend({ points: function points(e) {
                var t,
                    i = this;return t = i.calculateStepPoints(i.linePoints), e && e.length && (t = t.concat(i.calculateStepPoints(e).reverse())), t;
            }, calculateStepPoints: function calculateStepPoints(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a = this,
                    s = a.parent,
                    l = s.plotArea,
                    c = l.seriesCategoryAxis(a.series),
                    h = s.seriesMissingValues(a.series) === qn,
                    u = e.length,
                    p = c.options.reverse,
                    f = c.options.vertical,
                    d = p ? 2 : 1,
                    g = p ? 1 : 2,
                    m = [];for (n = 1; n < u; n++) {
                    t = e[n - 1], i = e[n], o = t.markerBox().center(), r = i.markerBox().center(), c.options.justified ? (m.push(new zi.Point(o.x, o.y)), m.push(f ? new zi.Point(o.x, r.y) : new zi.Point(r.x, o.y)), m.push(new zi.Point(r.x, r.y))) : f ? (m.push(new zi.Point(o.x, t.box[yr + d])), m.push(new zi.Point(o.x, t.box[yr + g])), h && m.push(new zi.Point(o.x, i.box[yr + d])), m.push(new zi.Point(r.x, i.box[yr + d])), m.push(new zi.Point(r.x, i.box[yr + g]))) : (m.push(new zi.Point(t.box[vr + d], o.y)), m.push(new zi.Point(t.box[vr + g], o.y)), h && m.push(new zi.Point(i.box[vr + d], o.y)), m.push(new zi.Point(i.box[vr + d], r.y)), m.push(new zi.Point(i.box[vr + g], r.y)));
                }return m || [];
            } }), Oe = Be.extend({ createVisual: function createVisual() {
                var e,
                    t,
                    i,
                    n = this.series,
                    o = n._defaults,
                    r = n.color;Zt(r) && o && (r = o.color), e = new ai(this.options.closed), t = e.process(this.points()), i = new Oi.Path({ stroke: { color: r, width: n.width, opacity: n.opacity, dashType: n.dashType }, zIndex: n.zIndex }), i.segments.push.apply(i.segments, t), this.visual = i;
            } }), Fe = { points: function points() {
                var e,
                    t,
                    i = this,
                    n = i.parent,
                    o = n.plotArea,
                    r = n.options.invertAxes,
                    a = n.seriesValueAxis(i.series),
                    s = a.lineBox(),
                    l = o.seriesCategoryAxis(i.series),
                    c = l.lineBox(),
                    h = r ? c.x1 : c.y1,
                    u = i.stackPoints,
                    p = i._linePoints(u),
                    f = r ? vr : yr;return h = Vi(h, s[f + 1], s[f + 2]), !i.stackPoints && p.length > 1 && (e = p[0], t = Ii(p), r ? (p.unshift(new zi.Point(h, e.y)), p.push(new zi.Point(h, t.y))) : (p.unshift(new zi.Point(e.x, h)), p.push(new zi.Point(t.x, h)))), p;
            }, createVisual: function createVisual() {
                var e = this.series,
                    t = e._defaults,
                    i = e.color;Zt(i) && t && (i = t.color), this.visual = new Oi.Group({ zIndex: e.zIndex }), this.createArea(i), this.createLine(i);
            }, createLine: function createLine(e) {
                var t,
                    i = this.series,
                    n = Xt({ color: e, opacity: i.opacity }, i.line);n.visible !== !1 && n.width > 0 && (t = Oi.Path.fromPoints(this._linePoints(), { stroke: { color: n.color, width: n.width, opacity: n.opacity, dashType: n.dashType, lineCap: "butt" } }), this.visual.append(t));
            }, createArea: function createArea(e) {
                var t = this.series,
                    i = Oi.Path.fromPoints(this.points(), { fill: { color: e, opacity: t.opacity }, stroke: null });this.visual.append(i);
            } }, Ue = Be.extend({ init: function init(e, t, i, n) {
                var o = this;o.stackPoints = t, Be.fn.init.call(o, e, i, n);
            }, _linePoints: Be.fn.points }), Xt(Ue.fn, Fe), He = De.extend({ createSegment: function createSegment(e, t, i, n) {
                var o,
                    r,
                    a,
                    s = this,
                    l = s.options,
                    c = l.isStacked,
                    h = (t.line || {}).style;return c && i > 0 && n && (a = this.seriesMissingValues(t), o = "gap" != a ? n.linePoints : this._gapStackPoints(e, i, h), h !== No && (o = o.slice(0).reverse())), h === jo ? new Ne(e, n, c, t, i) : new (r = h === No ? je : Ue)(e, o, t, i);
            }, reflow: function reflow(e) {
                var t, i, n, o;if (De.fn.reflow.call(this, e), t = this._stackPoints) for (o = 0; o < t.length; o++) {
                    i = t[o], n = this.categoryAxis.getSlot(i.categoryIx), i.reflow(n);
                }
            }, _gapStackPoints: function _gapStackPoints(e, t, i) {
                var n,
                    o,
                    r,
                    a,
                    s = this.seriesPoints,
                    l = e[0].categoryIx,
                    c = l + e.length,
                    h = [];for (this._stackPoints = this._stackPoints || [], a = l; a < c; a++) {
                    n = t;do {
                        n--, o = s[n][a];
                    } while (n > 0 && !o);o ? (i !== No && a > l && !s[n][a - 1] && h.push(this._previousSegmentPoint(a, a - 1, n)), h.push(o), i !== No && a + 1 < c && !s[n][a + 1] && h.push(this._previousSegmentPoint(a, a + 1, n))) : (r = this._createGapStackPoint(a), this._stackPoints.push(r), h.push(r));
                }return h;
            }, _previousSegmentPoint: function _previousSegmentPoint(e, t, i) {
                for (var n, o = this.seriesPoints; i > 0 && !n;) {
                    i--, n = o[i][t];
                }return n ? n = o[i][e] : (n = this._createGapStackPoint(e), this._stackPoints.push(n)), n;
            }, _createGapStackPoint: function _createGapStackPoint(e) {
                var t = this.pointOptions({}, 0),
                    i = new Ie(0, t);return i.categoryIx = e, i.series = {}, i;
            }, seriesMissingValues: function seriesMissingValues(e) {
                return e.missingValues || br;
            } }), Ne = Ue.extend({ init: function init(e, t, i, n, o) {
                var r = this;r.prevSegment = t, r.isStacked = i, Be.fn.init.call(r, e, n, o);
            }, strokeSegments: function strokeSegments() {
                var e,
                    t,
                    i = this._strokeSegments;return i || (e = new ai(this.options.closed), t = Be.fn.points.call(this), i = this._strokeSegments = e.process(t)), i;
            }, createVisual: function createVisual() {
                var e = this.series,
                    t = e._defaults,
                    i = e.color;Zt(i) && t && (i = t.color), this.visual = new Oi.Group({ zIndex: e.zIndex }), this.createFill({ fill: { color: i, opacity: e.opacity }, stroke: null }), this.createStroke({ stroke: Xt({ color: i, opacity: e.opacity, lineCap: "butt" }, e.line) });
            }, createFill: function createFill(t) {
                var i,
                    n,
                    o,
                    r,
                    a,
                    s = this.strokeSegments(),
                    l = s.slice(0),
                    c = this.prevSegment;this.isStacked && c && (i = c.strokeSegments(), n = Ii(i).anchor(), l.push(new Oi.Segment(n, n, Ii(s).anchor())), o = e.map(i, function (e) {
                    return new Oi.Segment(e.anchor(), e.controlOut(), e.controlIn());
                }).reverse(), Ti(l, o), r = l[0].anchor(), l.push(new Oi.Segment(r, r, Ii(o).anchor()))), a = new Oi.Path(t), a.segments.push.apply(a.segments, l), this.closeFill(a), this.visual.append(a);
            }, closeFill: function closeFill(e) {
                var t = this,
                    i = t.parent,
                    n = t.prevSegment,
                    o = i.plotArea,
                    r = i.options.invertAxes,
                    a = i.seriesValueAxis(t.series),
                    s = a.lineBox(),
                    l = o.seriesCategoryAxis(t.series),
                    c = l.lineBox(),
                    h = r ? c.x1 : c.y1,
                    u = r ? vr : yr,
                    p = t.strokeSegments(),
                    f = p[0].anchor(),
                    d = Ii(p).anchor();h = Vi(h, s[u + 1], s[u + 2]), i.options.isStacked && n || !(p.length > 1) || (r ? e.lineTo(h, d.y).lineTo(h, f.y) : e.lineTo(d.x, h).lineTo(f.x, h));
            }, createStroke: function createStroke(e) {
                if (e.stroke.width > 0) {
                    var t = new Oi.Path(e);t.segments.push.apply(t.segments, this.strokeSegments()), this.visual.append(t);
                }
            } }), je = ze.extend({ init: function init(e, t, i, n) {
                var o = this;o.stackPoints = t, ze.fn.init.call(o, e, i, n);
            }, _linePoints: ze.fn.points }), Xt(je.fn, Fe), Ge = oi.extend({ init: function init(e, t) {
                var i = this;oi.fn.init.call(i, t), i.plotArea = e, i.xAxisRanges = {}, i.yAxisRanges = {}, i.points = [], i.seriesPoints = [], i.seriesOptions = [], i._evalSeries = [], i.render();
            }, options: { series: [], tooltip: { format: "{0}, {1}" }, labels: { format: "{0}, {1}" }, clip: !0 }, render: function render() {
                var e = this;e.traverseDataPoints(Ht(e.addValue, e));
            }, addErrorBar: function addErrorBar(e, t, i) {
                var n,
                    o = this,
                    r = e.value[t],
                    a = t + "Value",
                    s = t + "ErrorLow",
                    l = t + "ErrorHigh",
                    c = i.seriesIx,
                    h = i.series,
                    u = e.options.errorBars,
                    p = i[s],
                    f = i[l];B(r) && (B(p) && B(f) && (n = { low: p, high: f }), u && Ri(u[a]) && (o.seriesErrorRanges = o.seriesErrorRanges || { x: [], y: [] }, o.seriesErrorRanges[t][c] = o.seriesErrorRanges[t][c] || new ye(u[a], h, t), n = o.seriesErrorRanges[t][c].getErrorRange(r, u[a])), n && o.addPointErrorBar(n, e, t));
            }, addPointErrorBar: function addPointErrorBar(e, t, i) {
                var n,
                    o = this,
                    r = e.low,
                    a = e.high,
                    s = t.series,
                    l = i === yr,
                    c = t.options.errorBars,
                    h = {};t[i + "Low"] = r, t[i + "High"] = a, t.errorBars = t.errorBars || [], n = new Re(r, a, l, o, s, c), t.errorBars.push(n), t.append(n), h[i] = r, o.updateRange(h, s), h[i] = a, o.updateRange(h, s);
            }, addValue: function addValue(e, t) {
                var i,
                    n = this,
                    o = e.x,
                    r = e.y,
                    a = t.seriesIx,
                    s = this.options.series[a],
                    l = this.seriesMissingValues(s),
                    c = n.seriesPoints[a];K(o) && K(r) || (e = this.createMissingValue(e, l)), e && (i = n.createPoint(e, t), i && (Ut(i, t), n.addErrorBar(i, vr, t), n.addErrorBar(i, yr, t)), n.updateRange(e, t.series)), n.points.push(i), c.push(i);
            }, seriesMissingValues: function seriesMissingValues(e) {
                return e.missingValues;
            }, createMissingValue: Ft, updateRange: function updateRange(e, t) {
                var i = this,
                    n = e.x,
                    o = e.y,
                    r = t.xAxis,
                    a = t.yAxis,
                    s = i.xAxisRanges[r],
                    l = i.yAxisRanges[a];K(n) && (s = i.xAxisRanges[r] = s || { min: io, max: ro }, (typeof n === "undefined" ? "undefined" : _typeof(n)) === Yo && (n = d(n)), s.min = Ot.min(s.min, n), s.max = Ot.max(s.max, n)), K(o) && (l = i.yAxisRanges[a] = l || { min: io, max: ro }, (typeof o === "undefined" ? "undefined" : _typeof(o)) === Yo && (o = d(o)), l.min = Ot.min(l.min, o), l.max = Ot.max(l.max, o));
            }, evalPointOptions: function evalPointOptions(e, t, i) {
                var n = i.series,
                    o = i.seriesIx,
                    r = { defaults: n._defaults, excluded: ["data", "tooltip", "tempate", "visual", "toggle", "_outOfRangeMinPoint", "_outOfRangeMaxPoint"] },
                    a = this._evalSeries[o];return Ri(a) || (this._evalSeries[o] = a = M(e, {}, r, !0)), a && (e = Xt({}, e), M(e, { value: t, series: n, dataItem: i.dataItem }, r)), e;
            }, pointType: function pointType() {
                return Ie;
            }, pointOptions: function pointOptions(e, t) {
                var i,
                    n = this.seriesOptions[t];return n || (i = this.pointType().fn.defaults, this.seriesOptions[t] = n = Xt({}, i, { markers: { opacity: e.opacity }, tooltip: { format: this.options.tooltip.format }, labels: { format: this.options.labels.format } }, e)), n;
            }, createPoint: function createPoint(e, t) {
                var i,
                    n = this,
                    o = t.series,
                    r = this.pointOptions(o, t.seriesIx),
                    a = t.color || o.color;return r = n.evalPointOptions(r, e, t), Nt.isFunction(o.color) && (a = r.color), i = new Ie(e, r), i.color = a, n.append(i), i;
            }, seriesAxes: function seriesAxes(e) {
                var t = this.plotArea,
                    i = e.xAxis,
                    n = i ? t.namedXAxes[i] : t.axisX,
                    o = e.yAxis,
                    r = o ? t.namedYAxes[o] : t.axisY;if (!n) throw Error("Unable to locate X axis with name " + i);if (!r) throw Error("Unable to locate Y axis with name " + o);
                return { x: n, y: r };
            }, reflow: function reflow(e) {
                var t,
                    i,
                    n = this,
                    o = n.points,
                    r = 0,
                    a = !n.options.clip;n.traverseDataPoints(function (e, s) {
                    t = o[r++], i = n.seriesAxes(s.series);var l,
                        c = i.x.getSlot(e.x, e.x, a),
                        h = i.y.getSlot(e.y, e.y, a);t && (c && h ? (l = n.pointSlot(c, h), t.reflow(l)) : t.visible = !1);
                }), n.box = e;
            }, pointSlot: function pointSlot(e, t) {
                return new ii(e.x1, t.y1, e.x2, t.y2);
            }, traverseDataPoints: function traverseDataPoints(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l = this,
                    c = l.options,
                    h = c.series,
                    u = l.seriesPoints;for (i = 0; i < h.length; i++) {
                    for (n = h[i], o = u[i], o || (u[i] = []), t = 0; t < n.data.length; t++) {
                        r = this._bindPoint(n, i, t), a = r.valueFields, s = r.fields, e(a, Xt({ pointIx: t, series: n, seriesIx: i, dataItem: n.data[t], owner: l }, s));
                    }
                }
            }, _bindPoint: _e.fn._bindPoint, formatPointValue: function formatPointValue(e, t) {
                var i = e.value;return yi(t, i.x, i.y);
            }, animationPoints: function animationPoints() {
                var e,
                    t = this.points,
                    i = [];for (e = 0; e < t.length; e++) {
                    i.push((t[e] || {}).marker);
                }return i;
            } }), Xt(Ge.fn, Ee), qe = Ge.extend({ render: function render() {
                var e = this;Ge.fn.render.call(e), e.renderSegments();
            }, createSegment: function createSegment(e, t, i) {
                var n,
                    o = t.style;return new (n = o === jo ? Oe : Be)(e, t, i);
            }, animationPoints: function animationPoints() {
                var e = Ge.fn.animationPoints.call(this);return e.concat(this._segments);
            }, createMissingValue: function createMissingValue(e, t) {
                if (t === br) {
                    var i = { x: e.x, y: e.y };return K(i.x) || (i.x = 0), K(i.y) || (i.y = 0), i;
                }
            } }), Xt(qe.fn, Le), Ye = Ge.extend({ init: function init(e, t) {
                this._maxSize = ro, Ge.fn.init.call(this, e, t);
            }, options: { tooltip: { format: "{3}" }, labels: { format: "{3}" } }, addValue: function addValue(e, t) {
                null !== e.size && (e.size > 0 || e.size < 0 && t.series.negativeValues.visible) ? (this._maxSize = Ot.max(this._maxSize, Ot.abs(e.size)), Ge.fn.addValue.call(this, e, t)) : (this.points.push(null), this.seriesPoints[t.seriesIx].push(null));
            }, reflow: function reflow(e) {
                var t = this;t.updateBubblesSize(e), Ge.fn.reflow.call(t, e);
            }, pointType: function pointType() {
                return Ve;
            }, createPoint: function createPoint(e, t) {
                var i,
                    n,
                    o = this,
                    r = t.series,
                    a = r.data.length,
                    s = t.pointIx * (Nn / a),
                    l = { delay: s, duration: Nn - s, type: Ji },
                    c = t.color || r.color;return e.size < 0 && r.negativeValues.visible && (c = Mi(r.negativeValues.color, c)), n = Xt({ labels: { animation: { delay: s, duration: Nn - s } } }, this.pointOptions(r, t.seriesIx), { markers: { type: an, border: r.border, opacity: r.opacity, animation: l } }), n = o.evalPointOptions(n, e, t), Nt.isFunction(r.color) && (c = n.color), n.markers.background = c, i = new Ve(e, n), i.color = c, o.append(i), i;
            }, updateBubblesSize: function updateBubblesSize(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l,
                    c,
                    h,
                    u,
                    p,
                    f,
                    d,
                    g,
                    m,
                    x,
                    v = this,
                    y = v.options,
                    _ = y.series,
                    b = Ot.min(e.width(), e.height());for (t = 0; t < _.length; t++) {
                    for (n = _[t], o = v.seriesPoints[t], r = n.minSize || Ot.max(.02 * b, 10), a = n.maxSize || .2 * b, s = r / 2, l = a / 2, c = Ot.PI * s * s, h = Ot.PI * l * l, u = h - c, p = u / v._maxSize, i = 0; i < o.length; i++) {
                        f = o[i], f && (d = Ot.abs(f.value.size) * p, g = Ot.sqrt((c + d) / Ot.PI), m = Mi(f.options.zIndex, 0), x = m + (1 - g / l), Xt(f.options, { zIndex: x, markers: { size: 2 * g, zIndex: x }, labels: { zIndex: x + 1 } }));
                    }
                }
            }, formatPointValue: function formatPointValue(e, t) {
                var i = e.value;return yi(t, i.x, i.y, i.size, e.category);
            }, createAnimation: Ft, createVisual: Ft }), Xe = oi.extend({ init: function init(e, t) {
                oi.fn.init.call(this, t), this.value = e;
            }, options: { vertical: !0, border: { _brightness: .8 }, line: { width: 2 }, overlay: { gradient: On }, tooltip: { format: "<table style='text-align: left;'><th colspan='2'>{4:d}</th><tr><td>Open:</td><td>{0:C}</td></tr><tr><td>High:</td><td>{1:C}</td></tr><tr><td>Low:</td><td>{2:C}</td></tr><tr><td>Close:</td><td>{3:C}</td></tr></table>" }, highlight: { opacity: 1, border: { width: 1, opacity: 1 }, line: { width: 1, opacity: 1 } }, notes: { visible: !0, label: {} } }, reflow: function reflow(e) {
                var t,
                    i,
                    n,
                    o = this,
                    r = o.options,
                    a = o.owner,
                    s = o.value,
                    l = a.seriesValueAxis(r),
                    c = [];i = l.getSlot(s.open, s.close), n = l.getSlot(s.low, s.high), i.x1 = n.x1 = e.x1, i.x2 = n.x2 = e.x2, o.realBody = i, t = n.center().x, c.push([[t, n.y1], [t, i.y1]]), c.push([[t, i.y2], [t, n.y2]]), o.lines = c, o.box = n.clone().wrap(i), o._rendered || (o._rendered = !0, o.createNote()), o.reflowNote();
            }, reflowNote: function reflowNote() {
                var e = this;e.note && e.note.reflow(e.box);
            }, createVisual: function createVisual() {
                oi.fn.createVisual.call(this), this._mainVisual = this.mainVisual(this.options), this.visual.append(this._mainVisual), this.createOverlay();
            }, mainVisual: function mainVisual(e) {
                var t = new Oi.Group();return this.createBody(t, e), this.createLines(t, e), t;
            }, createBody: function createBody(e, i) {
                var n = Oi.Path.fromRect(this.realBody.toRect(), { fill: { color: this.color, opacity: i.opacity }, stroke: null });i.border.width > 0 && n.options.set("stroke", { color: this.getBorderColor(), width: i.border.width, dashType: i.border.dashType, opacity: Mi(i.border.opacity, i.opacity) }), vi(n), e.append(n), Y(i) && e.append(this.createGradientOverlay(n, { baseColor: this.color }, Xt({ end: i.vertical ? t : [0, 1] }, i.overlay)));
            }, createLines: function createLines(e, t) {
                this.drawLines(e, t, this.lines, t.line);
            }, drawLines: function drawLines(e, t, i, n) {
                var o, r, a;if (i) for (o = { stroke: { color: n.color || this.color, opacity: Mi(n.opacity, t.opacity), width: n.width, dashType: n.dashType, lineCap: "butt" } }, r = 0; r < i.length; r++) {
                    a = Oi.Path.fromPoints(i[r], o), vi(a), e.append(a);
                }
            }, getBorderColor: function getBorderColor() {
                var e = this,
                    t = e.options,
                    i = t.border,
                    n = i.color;return Ri(n) || (n = new ri(e.color).brightness(i._brightness).toHex()), n;
            }, createOverlay: function createOverlay() {
                var e = Oi.Path.fromRect(this.box.toRect(), { fill: { color: xr, opacity: 0 }, stroke: null });this.visual.append(e);
            }, createHighlight: function createHighlight() {
                var e,
                    t = this.options.highlight,
                    i = this.color;return this.color = t.color || this.color, e = this.mainVisual(Xt({}, this.options, { line: { color: this.getBorderColor() } }, t)), this.color = i, e;
            }, highlightVisual: function highlightVisual() {
                return this._mainVisual;
            }, highlightVisualArgs: function highlightVisualArgs() {
                return { options: this.options, rect: this.box.toRect(), visual: this._mainVisual };
            }, tooltipAnchor: function tooltipAnchor() {
                var e = this,
                    t = e.box,
                    i = e.owner.pane.clipBox() || t;return new ui(t.x2 + ar, Ot.max(t.y1, i.y1) + ar);
            }, formatValue: function formatValue(e) {
                var t = this;return t.owner.formatPointValue(t, e);
            }, overlapsBox: function overlapsBox(e) {
                return this.box.overlaps(e);
            } }), Xt(Xe.fn, de), Xt(Xe.fn, ge), We = _e.extend({ options: {}, reflowCategories: function reflowCategories(e) {
                var t,
                    i = this,
                    n = i.children,
                    o = n.length;for (t = 0; t < o; t++) {
                    n[t].reflow(e[t]);
                }
            }, addValue: function addValue(e, t) {
                var i,
                    n,
                    o = this,
                    r = t.categoryIx,
                    a = t.category,
                    s = t.series,
                    l = t.seriesIx,
                    c = o.options,
                    h = e.valueFields,
                    u = o.children,
                    p = o.splitValue(h),
                    f = E(p),
                    d = o.categoryPoints[r],
                    g = s.data[r];d || (o.categoryPoints[r] = d = []), f && (i = o.createPoint(e, t)), n = u[r], n || (n = new pe({ vertical: c.invertAxes, gap: c.gap, spacing: c.spacing }), o.append(n)), i && (o.updateRange(h, t), n.append(i), i.categoryIx = r, i.category = a, i.series = s, i.seriesIx = l, i.owner = o, i.dataItem = g, i.noteText = e.fields.noteText), o.points.push(i), d.push(i);
            }, pointType: function pointType() {
                return Xe;
            }, createPoint: function createPoint(e, t) {
                var i,
                    n = this,
                    o = t.categoryIx,
                    r = t.category,
                    a = t.series,
                    s = t.seriesIx,
                    l = e.valueFields,
                    c = Xt({}, a),
                    h = n.pointType(),
                    u = e.fields.color || a.color;return c = n.evalPointOptions(c, l, r, o, a, s), a.type == tn && l.open > l.close && (u = e.fields.downColor || a.downColor || a.color), Nt.isFunction(a.color) && (u = c.color), c.vertical = !n.options.invertAxes, i = new h(l, c), i.color = u, i;
            }, splitValue: function splitValue(e) {
                return [e.low, e.open, e.close, e.high];
            }, updateRange: function updateRange(e, t) {
                var i = this,
                    n = t.series.axis,
                    o = i.valueAxisRanges[n],
                    r = i.splitValue(e);o = i.valueAxisRanges[n] = o || { min: io, max: ro }, o = i.valueAxisRanges[n] = { min: Ot.min.apply(Ot, r.concat([o.min])), max: Ot.max.apply(Ot, r.concat([o.max])) };
            }, formatPointValue: function formatPointValue(e, t) {
                var i = e.value;return yi(t, i.open, i.high, i.low, i.close, e.category);
            }, animationPoints: function animationPoints() {
                return this.points;
            } }), Xt(We.fn, Ee), Ze = Xe.extend({ reflow: function reflow(e) {
                var t,
                    i,
                    n,
                    o,
                    r = this,
                    a = r.options,
                    s = r.owner,
                    l = r.value,
                    c = s.seriesValueAxis(a),
                    h = [],
                    u = [],
                    p = [];o = c.getSlot(l.low, l.high), i = c.getSlot(l.open, l.open), n = c.getSlot(l.close, l.close), i.x1 = n.x1 = o.x1 = e.x1, i.x2 = n.x2 = o.x2 = e.x2, t = o.center().x, h.push([i.x1, i.y1]), h.push([t, i.y1]), u.push([t, n.y1]), u.push([n.x2, n.y1]), p.push([t, o.y1]), p.push([t, o.y2]), r.lines = [h, u, p], r.box = o.clone().wrap(i.clone().wrap(n)), r.reflowNote();
            }, createBody: e.noop }), Ke = We.extend({ pointType: function pointType() {
                return Ze;
            } }), Qe = We.extend({ addValue: function addValue(e, t) {
                var i,
                    n,
                    o = this,
                    r = t.categoryIx,
                    a = t.category,
                    s = t.series,
                    l = t.seriesIx,
                    c = o.options,
                    h = o.children,
                    u = e.valueFields,
                    p = o.splitValue(u),
                    f = E(p),
                    d = o.categoryPoints[r],
                    g = s.data[r];d || (o.categoryPoints[r] = d = []), f && (i = o.createPoint(e, t)), n = h[r], n || (n = new pe({ vertical: c.invertAxes, gap: c.gap, spacing: c.spacing }), o.append(n)), i && (o.updateRange(u, t), n.append(i), i.categoryIx = r, i.category = a, i.series = s, i.seriesIx = l, i.owner = o, i.dataItem = g), o.points.push(i), d.push(i);
            }, pointType: function pointType() {
                return this.options.invertAxes ? Je : $e;
            }, splitValue: function splitValue(e) {
                return [e.lower, e.q1, e.median, e.q3, e.upper];
            }, updateRange: function updateRange(e, t) {
                var i = this,
                    n = t.series.axis,
                    o = i.valueAxisRanges[n],
                    r = i.splitValue(e).concat(i.filterOutliers(e.outliers));Ri(e.mean) && (r = r.concat(e.mean)), o = i.valueAxisRanges[n] = o || { min: io, max: ro }, o = i.valueAxisRanges[n] = { min: Ot.min.apply(Ot, r.concat([o.min])), max: Ot.max.apply(Ot, r.concat([o.max])) };
            }, formatPointValue: function formatPointValue(e, t) {
                var i = e.value;return yi(t, i.lower, i.q1, i.median, i.q3, i.upper, i.mean, e.category);
            }, filterOutliers: function filterOutliers(e) {
                var t,
                    i,
                    n = (e || []).length,
                    o = [];for (t = 0; t < n; t++) {
                    i = e[t], Ri(i) && I(o, i);
                }return o;
            } }), $e = Xe.extend({ init: function init(e, t) {
                var i = this;oi.fn.init.call(i, t), i.value = e, i.createNote();
            }, options: { border: { _brightness: .8 }, line: { width: 2 }, mean: { width: 2, dashType: "dash" }, overlay: { gradient: On }, tooltip: { format: "<table style='text-align: left;'><th colspan='2'>{6:d}</th><tr><td>Lower:</td><td>{0:C}</td></tr><tr><td>Q1:</td><td>{1:C}</td></tr><tr><td>Median:</td><td>{2:C}</td></tr><tr><td>Mean:</td><td>{5:C}</td></tr><tr><td>Q3:</td><td>{3:C}</td></tr><tr><td>Upper:</td><td>{4:C}</td></tr></table>" }, highlight: { opacity: 1, border: { width: 1, opacity: 1 }, line: { width: 1, opacity: 1 } }, notes: { visible: !0, label: {} }, outliers: { visible: !0, size: Qn, type: pn, background: xr, border: { width: 2, opacity: 1 }, opacity: 0 }, extremes: { visible: !0, size: Qn, type: an, background: xr, border: { width: 2, opacity: 1 }, opacity: 0 } }, reflow: function reflow(e) {
                var t,
                    i,
                    n,
                    o,
                    r = this,
                    a = r.options,
                    s = r.owner,
                    l = r.value,
                    c = s.seriesValueAxis(a);r.boxSlot = i = c.getSlot(l.q1, l.q3), r.realBody = i, r.reflowBoxSlot(e), r.whiskerSlot = t = c.getSlot(l.lower, l.upper), r.reflowWhiskerSlot(e), n = c.getSlot(l.median), l.mean && (o = c.getSlot(l.mean), r.meanPoints = r.calcMeanPoints(e, o)), r.whiskerPoints = r.calcWhiskerPoints(i, t), r.medianPoints = r.calcMedianPoints(e, n), r.box = t.clone().wrap(i), r.reflowNote();
            }, reflowBoxSlot: function reflowBoxSlot(e) {
                this.boxSlot.x1 = e.x1, this.boxSlot.x2 = e.x2;
            }, reflowWhiskerSlot: function reflowWhiskerSlot(e) {
                this.whiskerSlot.x1 = e.x1, this.whiskerSlot.x2 = e.x2;
            }, calcMeanPoints: function calcMeanPoints(e, t) {
                return [[[e.x1, t.y1], [e.x2, t.y1]]];
            }, calcWhiskerPoints: function calcWhiskerPoints(e, t) {
                var i = t.center().x;return [[[i - 5, t.y1], [i + 5, t.y1], [i, t.y1], [i, e.y1]], [[i - 5, t.y2], [i + 5, t.y2], [i, t.y2], [i, e.y2]]];
            }, calcMedianPoints: function calcMedianPoints(e, t) {
                return [[[e.x1, t.y1], [e.x2, t.y1]]];
            }, renderOutliers: function renderOutliers(e) {
                var t,
                    i,
                    n,
                    o,
                    r = this,
                    a = e.markers || {},
                    s = r.value,
                    l = s.outliers || [],
                    c = 3 * Ot.abs(s.q3 - s.q1),
                    h = [];for (o = 0; o < l.length; o++) {
                    n = l[o], a = n < s.q3 + c && n > s.q1 - c ? e.outliers : e.extremes, t = Xt({}, a.border), Ri(t.color) || (t.color = Ri(r.color) ? r.color : new ri(a.background).brightness(Xi).toHex()), i = new di({ type: a.type, width: a.size, height: a.size, rotation: a.rotation, background: a.background, border: t, opacity: a.opacity }), i.value = n, h.push(i);
                }return this.reflowOutliers(h), h;
            }, reflowOutliers: function reflowOutliers(e) {
                var i,
                    n,
                    o,
                    r = this.owner.seriesValueAxis(this.options),
                    a = this.box.center();for (i = 0; i < e.length; i++) {
                    n = e[i].value, o = r.getSlot(n), this.options.vertical ? o.move(a.x) : o.move(t, a.y), this.box = this.box.wrap(o), e[i].reflow(o);
                }
            }, mainVisual: function mainVisual(e) {
                var t,
                    i,
                    n = Xe.fn.mainVisual.call(this, e),
                    o = this.renderOutliers(e);for (t = 0; t < o.length; t++) {
                    i = o[t].getElement(), i && n.append(i);
                }return n;
            }, createLines: function createLines(e, t) {
                this.drawLines(e, t, this.whiskerPoints, t.line), this.drawLines(e, t, this.medianPoints, t.median), this.drawLines(e, t, this.meanPoints, t.mean);
            }, getBorderColor: function getBorderColor() {
                return this.color ? this.color : Xe.getBorderColor.call(this);
            } }), Xt($e.fn, de), Je = $e.extend({ reflowBoxSlot: function reflowBoxSlot(e) {
                this.boxSlot.y1 = e.y1, this.boxSlot.y2 = e.y2;
            }, reflowWhiskerSlot: function reflowWhiskerSlot(e) {
                this.whiskerSlot.y1 = e.y1, this.whiskerSlot.y2 = e.y2;
            }, calcMeanPoints: function calcMeanPoints(e, t) {
                return [[[t.x1, e.y1], [t.x1, e.y2]]];
            }, calcWhiskerPoints: function calcWhiskerPoints(e, t) {
                var i = t.center().y;return [[[t.x1, i - 5], [t.x1, i + 5], [t.x1, i], [e.x1, i]], [[t.x2, i - 5], [t.x2, i + 5], [t.x2, i], [e.x2, i]]];
            }, calcMedianPoints: function calcMedianPoints(e, t) {
                return [[[t.x1, e.y1], [t.x1, e.y2]]];
            } }), et = oi.extend({ init: function init(e, t, i) {
                var n = this;n.value = e, n.sector = t, oi.fn.init.call(n, i);
            }, options: { color: xr, overlay: { gradient: Io }, border: { width: .5 }, labels: { visible: !1, distance: 35, font: vn, margin: wi(.5), align: an, zIndex: 1, position: _o }, animation: { type: bo }, highlight: { visible: !0, border: { width: 1 } }, visible: !0 }, render: function render() {
                var e,
                    t = this,
                    i = t.options,
                    n = i.labels,
                    o = t.value;t._rendered || t.visible === !1 || (t._rendered = !0, n.template ? (e = Kt(n.template), o = e({ dataItem: t.dataItem, category: t.category, value: t.value, series: t.series, percentage: t.percentage })) : n.format && (o = yi(n.format, o)), n.visible && o && (t.label = new mi(o, Xt({}, n, { align: on, vAlign: "", animation: { type: En, delay: t.animationDelay } })), t.append(t.label)));
            }, reflow: function reflow(e) {
                var t = this;t.render(), t.box = e, t.reflowLabel();
            }, reflowLabel: function reflowLabel() {
                var e,
                    t,
                    i,
                    n,
                    o = this,
                    r = o.sector.clone(),
                    a = o.options,
                    s = o.label,
                    l = a.labels,
                    c = l.distance,
                    h = r.middle();s && (n = s.box.height(), i = s.box.width(), l.position == on ? (r.r = Ot.abs((r.r - n) / 2) + n, e = r.point(h), s.reflow(ii(e.x, e.y - n / 2, e.x, e.y))) : l.position == Gn ? (r.r = r.r - n / 2, e = r.point(h), s.reflow(ii(e.x, e.y - n / 2, e.x, e.y))) : (e = r.clone().expand(c).point(h), e.x >= r.c.x ? (t = e.x + i, s.orientation = Ro) : (t = e.x - i, s.orientation = Xn), s.reflow(ii(t, e.y - n, e.x, e.y))));
            }, createVisual: function createVisual() {
                var e,
                    t,
                    i = this,
                    n = i.sector,
                    o = i.options;oi.fn.createVisual.call(this), i.value && (o.visual ? (e = (n.startAngle + 180) % 360, t = o.visual({ category: i.category, dataItem: i.dataItem, value: i.value, series: i.series, percentage: i.percentage, center: new zi.Point(n.c.x, n.c.y), radius: n.r, innerRadius: n.ir, startAngle: e, endAngle: e + n.angle, options: o, createVisual: function createVisual() {
                        var e = new Oi.Group();return i.createSegmentVisual(e), e;
                    } }), t && i.visual.append(t)) : i.createSegmentVisual(i.visual));
            }, createSegmentVisual: function createSegmentVisual(e) {
                var t,
                    i = this,
                    n = i.sector,
                    o = i.options,
                    r = o.border || {},
                    a = r.width > 0 ? { stroke: { color: r.color, width: r.width, opacity: r.opacity, dashType: r.dashType } } : {},
                    s = o.color,
                    l = { color: s, opacity: o.opacity };t = i.createSegment(n, Xt({ fill: l, stroke: { opacity: o.opacity }, zIndex: o.zIndex }, a)), e.append(t), Y(o) && e.append(this.createGradientOverlay(t, { baseColor: s, fallbackFill: l }, Xt({ center: [n.c.x, n.c.y], innerRadius: n.ir, radius: n.r, userSpace: !0 }, o.overlay)));
            }, createSegment: function createSegment(e, t) {
                return t.singleSegment ? new Oi.Circle(new zi.Circle(new zi.Point(e.c.x, e.c.y), e.r), t) : gi.current.createRing(e, t);
            }, createAnimation: function createAnimation() {
                var e = this.options,
                    t = this.sector.c;Xt(e, { animation: { center: [t.x, t.y], delay: this.animationDelay } }), oi.fn.createAnimation.call(this);
            }, createHighlight: function createHighlight(e) {
                var t = this,
                    i = t.options.highlight || {},
                    n = i.border || {};return t.createSegment(t.sector, Xt({}, e, { fill: { color: i.color, opacity: i.opacity }, stroke: { opacity: n.opacity, width: n.width, color: n.color } }));
            }, highlightVisual: function highlightVisual() {
                return this.visual.children[0];
            }, highlightVisualArgs: function highlightVisualArgs() {
                var e = this.sector;return { options: this.options, radius: e.r, innerRadius: e.ir, center: new zi.Point(e.c.x, e.c.y), startAngle: e.startAngle, endAngle: e.angle + e.startAngle, visual: this.visual };
            }, tooltipAnchor: function tooltipAnchor(e, t) {
                var i = this,
                    n = i.sector.adjacentBox(ar, e, t);return new ui(n.x1, n.y1);
            }, formatValue: function formatValue(e) {
                var t = this;return t.owner.formatPointValue(t, e);
            } }), Xt(et.fn, de), tt = { createLegendItem: function createLegendItem(e, t, i) {
                var n,
                    o,
                    r,
                    a,
                    s,
                    l = this,
                    c = l.options.legend || {},
                    h = c.labels || {},
                    u = c.inactiveItems || {},
                    p = u.labels || {};i && i.visibleInLegend !== !1 && (s = i.visible !== !1, n = i.category || "", o = s ? h.template : p.template || h.template, o && (n = Kt(o)({ text: n, series: i.series, dataItem: i.dataItem, percentage: i.percentage, value: e })), s ? (a = {}, r = t.color) : (a = { color: p.color, font: p.font }, r = (u.markers || {}).color), n && l.legendItems.push({ pointIndex: i.index, text: n, series: i.series, markerColor: r, labels: a }));
            } }, it = oi.extend({ init: function init(e, t) {
                var i = this;oi.fn.init.call(i, t), i.plotArea = e, i.points = [], i.legendItems = [], i.render();
            }, options: { startAngle: 90, connectors: { width: 1, color: "#939393", padding: 4 }, inactiveItems: { markers: {}, labels: {} } }, render: function render() {
                var e = this;e.traverseDataPoints(Ht(e.addValue, e));
            }, traverseDataPoints: function traverseDataPoints(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l,
                    c,
                    h,
                    u,
                    p,
                    f,
                    d = this,
                    g = d.options,
                    m = d.plotArea.options.seriesColors || [],
                    x = m.length,
                    v = g.series,
                    y = v.length,
                    _ = 0;for (o = 0; o < y; o++) {
                    for (t = v[o], a = t.data, u = q(t), s = 360 / u, p = Ri(t.startAngle) ? t.startAngle : g.startAngle, o != y - 1 && t.labels.position == _o && (t.labels.position = on), f = 0; f < a.length; f++) {
                        i = oe.current.bindPoint(t, f), l = i.valueFields.value, c = Ot.abs(l), n = i.fields, r = c * s, h = 1 != a.length && !!n.explode, Zt(t.color) || (t.color = n.color || m[f % x]), e(l, new fi(null, 0, 0, p, r), { owner: d, category: n.category || "", index: _, series: t, seriesIx: o, dataItem: a[f], percentage: 0 !== u ? c / u : 0, explode: h, visibleInLegend: n.visibleInLegend, visible: n.visible, zIndex: y - o, animationDelay: d.animationDelay(f, o, y) }), i.fields.visible !== !1 && (p += r), _++;
                    }_ = 0;
                }
            }, evalSegmentOptions: function evalSegmentOptions(e, t, i) {
                var n = i.series;M(e, { value: t, series: n, dataItem: i.dataItem, category: i.category, percentage: i.percentage }, { defaults: n._defaults, excluded: ["data", "template", "visual", "toggle"] });
            }, addValue: function addValue(e, t, i) {
                var n,
                    o = this,
                    r = Xt({}, i.series, { index: i.index });o.evalSegmentOptions(r, e, i), o.createLegendItem(e, r, i), i.visible !== !1 && (n = new et(e, t, r), Ut(n, i), o.append(n), o.points.push(n));
            }, reflow: function reflow(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l,
                    c = this,
                    h = c.options,
                    u = e.clone(),
                    p = 5,
                    f = Ot.min(u.width(), u.height()),
                    d = f / 2,
                    g = f - .85 * f,
                    m = Mi(h.padding, g),
                    x = ii(u.x1, u.y1, u.x1 + f, u.y1 + f),
                    v = x.center(),
                    y = c.seriesConfigs || [],
                    _ = u.center(),
                    b = c.points,
                    w = b.length,
                    A = h.series.length,
                    k = [],
                    S = [];for (m = m > d - p ? d - p : m, x.translate(_.x - v.x, _.y - v.y), a = d - m, l = ui(a + x.x1 + m, a + x.y1 + m), s = 0; s < w; s++) {
                    o = b[s], r = o.sector, r.r = a, r.c = l, i = o.seriesIx, y.length && (t = y[i], r.ir = t.ir, r.r = t.r), i == A - 1 && o.explode && (r.c = r.clone().radius(.15 * r.r).point(r.middle())), o.reflow(x), n = o.label, n && n.options.position === _o && i == A - 1 && (n.orientation === Ro ? S.push(n) : k.push(n));
                }k.length > 0 && (k.sort(c.labelComparator(!0)), c.leftLabelsReflow(k)), S.length > 0 && (S.sort(c.labelComparator(!1)), c.rightLabelsReflow(S)), c.box = x;
            }, leftLabelsReflow: function leftLabelsReflow(e) {
                var t = this,
                    i = t.distanceBetweenLabels(e);t.distributeLabels(i, e);
            }, rightLabelsReflow: function rightLabelsReflow(e) {
                var t = this,
                    i = t.distanceBetweenLabels(e);t.distributeLabels(i, e);
            }, distanceBetweenLabels: function distanceBetweenLabels(e) {
                var t,
                    i,
                    n,
                    o = this,
                    r = o.points,
                    a = r[r.length - 1],
                    s = a.sector,
                    l = e[0].box,
                    c = e.length - 1,
                    h = s.r + a.options.labels.distance,
                    u = [];for (i = Ci(l.y1 - (s.c.y - h - l.height() - l.height() / 2)), u.push(i), n = 0; n < c; n++) {
                    l = e[n].box, t = e[n + 1].box, i = Ci(t.y1 - l.y2), u.push(i);
                }return i = Ci(s.c.y + h - e[c].box.y2 - e[c].box.height() / 2), u.push(i), u;
            }, distributeLabels: function distributeLabels(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a = this,
                    s = e.length;for (r = 0; r < s; r++) {
                    for (n = o = r, i = -e[r]; i > 0 && (n >= 0 || o < s);) {
                        i = a._takeDistance(e, r, --n, i), i = a._takeDistance(e, r, ++o, i);
                    }
                }a.reflowLabels(e, t);
            }, _takeDistance: function _takeDistance(e, t, i, n) {
                if (e[i] > 0) {
                    var o = Ot.min(e[i], n);n -= o, e[i] -= o, e[t] += o;
                }return n;
            }, reflowLabels: function reflowLabels(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a = this,
                    s = a.points,
                    l = s[s.length - 1],
                    c = l.sector,
                    h = t.length,
                    u = l.options.labels,
                    p = u.distance,
                    f = c.c.y - (c.r + p) - t[0].box.height();for (e[0] += 2, r = 0; r < h; r++) {
                    i = t[r], f += e[r], o = i.box, n = a.hAlignLabel(o.x2, c.clone().expand(p), f, f + o.height(), i.orientation == Ro), i.orientation == Ro ? (u.align !== an && (n = c.r + c.c.x + p), i.reflow(ii(n + o.width(), f, n, f))) : (u.align !== an && (n = c.c.x - c.r - p), i.reflow(ii(n - o.width(), f, n, f))), f += o.height();
                }
            }, createVisual: function createVisual() {
                var e,
                    t,
                    i,
                    n,
                    r,
                    a,
                    s,
                    l,
                    c,
                    h,
                    u,
                    p,
                    f,
                    d,
                    g,
                    m = this,
                    x = m.options,
                    v = x.connectors,
                    y = m.points,
                    _ = y.length,
                    b = 4;for (oi.fn.createVisual.call(this), this._connectorLines = [], l = 0; l < _; l++) {
                    r = y[l], i = r.sector, n = i.middle(), s = r.label, a = { seriesId: r.seriesIx }, t = (r.options.connectors || {}).color || v.color, s && (e = new Oi.Path({ stroke: { color: t, width: v.width }, animation: { type: En, delay: r.animationDelay } }), s.options.position === _o && 0 !== r.value && (c = s.box, h = i.c, u = i.point(n), p = ui(c.x1, c.center().y), u = i.clone().expand(v.padding).point(n), e.moveTo(u.x, u.y), s.orientation == Ro ? (d = ui(c.x1 - v.padding, c.center().y), g = o(h, u, p, d), p = ui(d.x - b, d.y), g = g || p, g.x = Ot.min(g.x, p.x), m.pointInCircle(g, i.c, i.r + b) || g.x < i.c.x ? (f = i.c.x + i.r + b, r.options.labels.align !== hn ? f < p.x ? e.lineTo(f, u.y) : e.lineTo(u.x + 2 * b, u.y) : e.lineTo(f, u.y), e.lineTo(p.x, d.y)) : (g.y = d.y, e.lineTo(g.x, g.y))) : (d = ui(c.x2 + v.padding, c.center().y), g = o(h, u, p, d), p = ui(d.x + b, d.y), g = g || p, g.x = Ot.max(g.x, p.x), m.pointInCircle(g, i.c, i.r + b) || g.x > i.c.x ? (f = i.c.x - i.r - b, r.options.labels.align !== hn ? f > p.x ? e.lineTo(f, u.y) : e.lineTo(u.x - 2 * b, u.y) : e.lineTo(f, u.y), e.lineTo(p.x, d.y)) : (g.y = d.y, e.lineTo(g.x, g.y))), e.lineTo(d.x, d.y), this._connectorLines.push(e), this.visual.append(e)));
                }
            }, labelComparator: function labelComparator(e) {
                return e = e ? -1 : 1, function (t, i) {
                    return t = (t.parent.sector.middle() + 270) % 360, i = (i.parent.sector.middle() + 270) % 360, (t - i) * e;
                };
            }, hAlignLabel: function hAlignLabel(e, t, i, n, o) {
                var r = t.c.x,
                    a = t.c.y,
                    s = t.r,
                    l = Ot.min(Ot.abs(a - i), Ot.abs(a - n));return l > s ? e : r + Ot.sqrt(s * s - l * l) * (o ? 1 : -1);
            }, pointInCircle: function pointInCircle(e, t, i) {
                return u(t.x - e.x) + u(t.y - e.y) < u(i);
            }, formatPointValue: function formatPointValue(e, t) {
                return yi(t, e.value);
            }, animationDelay: function animationDelay(e) {
                return e * wo;
            } }), Xt(it.fn, tt), nt = et.extend({ options: { overlay: { gradient: Vo }, labels: { position: on }, animation: { type: bo } }, reflowLabel: function reflowLabel() {
                var e,
                    t,
                    i = this,
                    n = i.sector.clone(),
                    o = i.options,
                    r = i.label,
                    a = o.labels,
                    s = n.middle();r && (t = r.box.height(), a.position == on ? (n.r -= (n.r - n.ir) / 2, e = n.point(s), r.reflow(new ii(e.x, e.y - t / 2, e.x, e.y))) : et.fn.reflowLabel.call(i));
            }, createSegment: function createSegment(e, t) {
                return gi.current.createRing(e, t);
            } }), Xt(nt.fn, de), ot = it.extend({ options: { startAngle: 90, connectors: { width: 1, color: "#939393", padding: 4 } }, addValue: function addValue(e, t, i) {
                var n,
                    o = this,
                    r = Xt({}, i.series, { index: i.index });o.evalSegmentOptions(r, e, i), o.createLegendItem(e, r, i), e && i.visible !== !1 && (n = new nt(e, t, r), Ut(n, i), o.append(n), o.points.push(n));
            }, reflow: function reflow(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s = this,
                    l = s.options,
                    c = e.clone(),
                    h = 5,
                    u = Ot.min(c.width(), c.height()),
                    p = u / 2,
                    f = u - .85 * u,
                    d = Mi(l.padding, f),
                    g = l.series,
                    m = g.length,
                    x = 0,
                    v = 0,
                    y = 0,
                    _ = 0;for (s.seriesConfigs = [], d = d > p - h ? p - h : d, n = p - d, r = 0; r < m; r++) {
                    t = g[r], 0 === r && Ri(t.holeSize) && (i = t.holeSize, n -= t.holeSize), Ri(t.size) ? n -= t.size : x++, Ri(t.margin) && r != m - 1 && (n -= t.margin);
                }for (Ri(i) || (_ = (p - d) / (m + .75), i = .75 * _, n -= i), y = i, r = 0; r < m; r++) {
                    t = g[r], o = Mi(t.size, n / x), y += v, a = y + o, s.seriesConfigs.push({ ir: y, r: a }), v = t.margin || 0, y = a;
                }it.fn.reflow.call(s, e);
            }, animationDelay: function animationDelay(e, t, i) {
                return e * kn + Nn * (t + 1) / (i + 1);
            } }), rt = be.extend({ render: function render() {
                be.fn.render.call(this), this.createSegments();
            }, traverseDataPoints: function traverseDataPoints(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l,
                    c,
                    u,
                    p = this.options.series,
                    f = this.categoryAxis.options.categories || [],
                    d = h(p),
                    g = !this.options.invertAxes;for (t = 0; t < p.length; t++) {
                    for (i = p[t], n = 0, o = 0, r = 0; r < d; r++) {
                        a = oe.current.bindPoint(i, r), s = a.valueFields.value, l = a.fields.summary, c = n, l ? "total" === l.toLowerCase() ? (a.valueFields.value = n, c = 0, u = n) : (a.valueFields.value = o, u = c - o, o = 0) : B(s) && (o += s, n += s, u = n), e(a, { category: f[r], categoryIx: r, series: i, seriesIx: t, total: n, runningTotal: o, from: c, to: u, isVertical: g });
                    }
                }
            }, updateRange: function updateRange(e, t) {
                be.fn.updateRange.call(this, { value: t.to }, t);
            }, aboveAxis: function aboveAxis(e) {
                return e.value >= 0;
            }, plotRange: function plotRange(e) {
                return [e.from, e.to];
            }, createSegments: function createSegments() {
                var e,
                    t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s = this.options.series,
                    l = this.seriesPoints,
                    c = this.segments = [];for (e = 0; e < s.length; e++) {
                    if (t = s[e], i = l[e]) for (o = 0; o < i.length; o++) {
                        r = i[o], r && n && (a = new at(n, r, t), c.push(a), this.append(a)), n = r;
                    }
                }
            } }), at = oi.extend({ init: function init(e, t, i) {
                var n = this;oi.fn.init.call(n), n.from = e, n.to = t, n.series = i;
            }, options: { animation: { type: En, delay: Nn } }, linePoints: function linePoints() {
                var e,
                    t,
                    i = [],
                    n = this.from,
                    o = n.box,
                    r = this.to.box;return n.isVertical ? (e = n.aboveAxis ? o.y1 : o.y2, i.push([o.x1, e], [r.x2, e])) : (t = n.aboveAxis ? o.x2 : o.x1, i.push([t, o.y1], [t, r.y2])), i;
            }, createVisual: function createVisual() {
                var e, t;oi.fn.createVisual.call(this), e = this.series.line || {}, t = Oi.Path.fromPoints(this.linePoints(), { stroke: { color: e.color, width: e.width, opacity: e.opacity, dashType: e.dashType } }), vi(t), this.visual.append(t);
            } }), st = ni.extend({ init: function init(e) {
                var t = this;ni.fn.init.call(t, e), e = t.options, t.id = Nt.guid(), t.createTitle(), t.content = new oi(), t.chartContainer = new lt({}, t), t.append(t.content), t.axes = [], t.charts = [];
            }, options: { zIndex: -1, shrinkToFit: !0, title: { align: Xn }, visible: !0 }, createTitle: function createTitle() {
                var e = this,
                    t = e.options.title;(typeof t === "undefined" ? "undefined" : _typeof(t)) === vo && (t = Xt({}, t, { align: t.position, position: or })), e.title = xi.buildTitle(t, e, st.fn.options.title);
            }, appendAxis: function appendAxis(e) {
                var t = this;t.content.append(e), t.axes.push(e), e.pane = t;
            }, appendChart: function appendChart(e) {
                var t = this;t.chartContainer.parent !== t.content && t.content.append(t.chartContainer), t.charts.push(e), t.chartContainer.append(e), e.pane = t;
            }, empty: function empty() {
                var e,
                    t = this,
                    i = t.parent;if (i) {
                    for (e = 0; e < t.axes.length; e++) {
                        i.removeAxis(t.axes[e]);
                    }for (e = 0; e < t.charts.length; e++) {
                        i.removeChart(t.charts[e]);
                    }
                }t.axes = [], t.charts = [], t.content.destroy(), t.content.children = [], t.chartContainer.children = [];
            }, reflow: function reflow(e) {
                var t,
                    i = this;Ii(i.children) === i.content && (t = i.children.pop()), ni.fn.reflow.call(i, e), t && i.children.push(t), i.title && (i.contentBox.y1 += i.title.box.height());
            }, visualStyle: function visualStyle() {
                var e = ni.fn.visualStyle.call(this);return e.zIndex = -10, e;
            }, renderComplete: function renderComplete() {
                this.options.visible && this.createGridLines();
            }, stackRoot: i, clipRoot: i, createGridLines: function createGridLines() {
                var e,
                    t,
                    i,
                    n,
                    o,
                    r,
                    a = this,
                    s = a.axes,
                    l = s.concat(a.parent.axes),
                    c = [],
                    h = [];for (t = 0; t < s.length; t++) {
                    for (n = s[t], o = n.options.vertical, e = o ? c : h, i = 0; i < l.length; i++) {
                        0 === e.length && (r = l[i], o !== r.options.vertical && Ti(e, n.createGridLines(r)));
                    }
                }
            }, refresh: function refresh() {
                this.visual.clear(), this.content.parent = null, this.content.createGradient = e.proxy(this.createGradient, this), this.content.renderVisual(), this.content.parent = this, this.title && this.visual.append(this.title.visual), this.visual.append(this.content.visual), this.renderComplete();
            }, chartsBox: function chartsBox() {
                var e,
                    t,
                    i,
                    n,
                    o,
                    r = this.axes,
                    a = r.length,
                    s = new ii();for (n = 0; n < a; n++) {
                    i = r[n], e = i.options.vertical ? yr : vr, t = i.lineBox(), s[e + 1] = t[e + 1], s[e + 2] = t[e + 2];
                }if (0 === s.x2) for (o = this.parent.axes, a = o.length, n = 0; n < a; n++) {
                    i = o[n], i.options.vertical || (t = i.lineBox(), s.x1 = t.x1, s.x2 = t.x2);
                }return s;
            }, clipBox: function clipBox() {
                return this.chartContainer.clipBox;
            } }), lt = oi.extend({ init: function init(e, t) {
                var i = this;oi.fn.init.call(i, e), i.pane = t;
            }, shouldClip: function shouldClip() {
                var e,
                    t = this,
                    i = t.children,
                    n = i.length;for (e = 0; e < n; e++) {
                    if (i[e].options.clip === !0) return !0;
                }return !1;
            }, _clipBox: function _clipBox() {
                return this.pane.chartsBox();
            }, createVisual: function createVisual() {
                var e, t, i;this.visual = new Oi.Group({ zIndex: 0 }), this.shouldClip() && (e = this.clipBox = this._clipBox(), t = e.toRect(), i = Oi.Path.fromRect(t), this.visual.clip(i), this.unclipLabels());
            }, stackRoot: i, unclipLabels: function unclipLabels() {
                var e,
                    t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s = this,
                    l = s.children,
                    c = s.clipBox;for (i = 0; i < l.length; i++) {
                    for (e = l[i].points || {}, o = e.length, n = 0; n < o; n++) {
                        t = e[n], t && t.overlapsBox && t.overlapsBox(c) && (r = t.label, a = t.note, r && r.options.visible && (r.alignToClipBox && r.alignToClipBox(c), r.options.noclip = !0), a && a.options.visible && (a.options.noclip = !0));
                    }
                }
            }, destroy: function destroy() {
                oi.fn.destroy.call(this), delete this.parent;
            } }), ct = oi.extend({ init: function init(e, t) {
                var i = this;oi.fn.init.call(i, t), i.series = e, i.initSeries(), i.charts = [], i.options.legend.items = [], i.axes = [], i.crosshairs = [], i.createPanes(), i.render(), i.createCrosshairs();
            }, options: { series: [], plotArea: { margin: {} }, background: "", border: { color: Zi, width: 0 }, legend: { inactiveItems: { labels: { color: "#919191" }, markers: { color: "#919191" } } } }, initSeries: function initSeries() {
                var e,
                    t,
                    i = this.series;for (e = 0; e < i.length; e++) {
                    t = i[e], t.index = e;
                }
            }, createPanes: function createPanes() {
                function e(e, t) {
                    "string" == typeof e.title && (e.title = { text: e.title }), e.title = Xt({}, t.title, e.title);
                }var t,
                    i,
                    n,
                    o = this,
                    r = { title: { color: (o.options.title || {}).color } },
                    a = [],
                    s = o.options.panes || [],
                    l = Ot.max(s.length, 1);for (t = 0; t < l; t++) {
                    n = s[t] || {}, e(n, r), i = new st(n), i.paneIndex = t, a.push(i), o.append(i);
                }o.panes = a;
            }, createCrosshairs: function createCrosshairs(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a = this;for (e = e || a.panes, t = 0; t < e.length; t++) {
                    for (n = e[t], i = 0; i < n.axes.length; i++) {
                        o = n.axes[i], o.options.crosshair && o.options.crosshair.visible && (r = new wt(o, o.options.crosshair), a.crosshairs.push(r), n.content.append(r));
                    }
                }
            }, removeCrosshairs: function removeCrosshairs(e) {
                var t,
                    i,
                    n = this,
                    o = n.crosshairs,
                    r = e.axes;for (t = o.length - 1; t >= 0; t--) {
                    for (i = 0; i < r.length; i++) {
                        if (o[t].axis === r[i]) {
                            o.splice(t, 1);break;
                        }
                    }
                }
            }, hideCrosshairs: function hideCrosshairs() {
                var e,
                    t = this.crosshairs;for (e = 0; e < t.length; e++) {
                    t[e].hide();
                }
            }, findPane: function findPane(e) {
                var t,
                    i,
                    n = this,
                    o = n.panes;for (t = 0; t < o.length; t++) {
                    if (o[t].options.name === e) {
                        i = o[t];break;
                    }
                }return i || o[0];
            }, findPointPane: function findPointPane(e) {
                var t,
                    i,
                    n = this,
                    o = n.panes;for (t = 0; t < o.length; t++) {
                    if (o[t].box.containsPoint(e)) {
                        i = o[t];break;
                    }
                }return i;
            }, appendAxis: function appendAxis(e) {
                var t = this,
                    i = t.findPane(e.options.pane);i.appendAxis(e), t.axes.push(e), e.plotArea = t;
            }, removeAxis: function removeAxis(e) {
                var t,
                    i,
                    n = this,
                    o = [];for (t = 0; t < n.axes.length; t++) {
                    i = n.axes[t], e !== i ? o.push(i) : i.destroy();
                }n.axes = o;
            }, appendChart: function appendChart(e, t) {
                var i = this;i.charts.push(e), t ? t.appendChart(e) : i.append(e);
            }, removeChart: function removeChart(e) {
                var t,
                    i,
                    n = this,
                    o = [];for (t = 0; t < n.charts.length; t++) {
                    i = n.charts[t], i !== e ? o.push(i) : i.destroy();
                }n.charts = o;
            }, addToLegend: function addToLegend(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l,
                    c,
                    h = e.length,
                    u = [],
                    p = this.options.legend,
                    f = p.labels || {},
                    d = p.inactiveItems || {},
                    g = d.labels || {};for (t = 0; t < h; t++) {
                    i = e[t], l = i.visible !== !1, i.visibleInLegend !== !1 && (n = i.name || "", c = l ? f.template : g.template || f.template, c && (n = Kt(c)({ text: n, series: i })), o = i.color, s = i._defaults, Zt(o) && s && (o = s.color), l ? (r = {}, a = o) : (r = { color: g.color, font: g.font }, a = d.markers.color), n && u.push({ text: n, labels: r, markerColor: a, series: i, active: l }));
                }Ti(p.items, u);
            }, groupAxes: function groupAxes(e) {
                var t,
                    i,
                    n,
                    o,
                    r = [],
                    a = [];for (n = 0; n < e.length; n++) {
                    for (t = e[n].axes, o = 0; o < t.length; o++) {
                        i = t[o], i.options.vertical ? a.push(i) : r.push(i);
                    }
                }return { x: r, y: a, any: r.concat(a) };
            }, groupSeriesByPane: function groupSeriesByPane() {
                var e,
                    t,
                    i,
                    n = this,
                    o = n.series,
                    r = {};for (e = 0; e < o.length; e++) {
                    i = o[e], t = n.seriesPaneName(i), r[t] ? r[t].push(i) : r[t] = [i];
                }return r;
            }, filterVisibleSeries: function filterVisibleSeries(e) {
                var t,
                    i,
                    n = [];for (t = 0; t < e.length; t++) {
                    i = e[t], i.visible !== !1 && n.push(i);
                }return n;
            }, reflow: function reflow(e) {
                var t = this,
                    i = t.options.plotArea,
                    n = t.panes,
                    o = wi(i.margin);t.box = e.clone().unpad(o), t.reflowPanes(), t.reflowAxes(n), t.reflowCharts(n);
            }, redraw: function redraw(e) {
                var t,
                    i = this;for (e = [].concat(e), this.initSeries(), t = 0; t < e.length; t++) {
                    i.removeCrosshairs(e[t]), e[t].empty();
                }for (i.render(e), i.reflowAxes(i.panes), i.reflowCharts(e), i.createCrosshairs(e), t = 0; t < e.length; t++) {
                    e[t].refresh();
                }
            }, axisCrossingValues: function axisCrossingValues(e, t) {
                var i,
                    n = e.options,
                    o = [].concat(n.axisCrossingValues || n.axisCrossingValue),
                    r = t.length - o.length,
                    a = o[0] || 0;for (i = 0; i < r; i++) {
                    o.push(a);
                }return o;
            }, alignAxisTo: function alignAxisTo(e, t, i, n) {
                var o = e.getSlot(i, i, !0),
                    r = e.options.reverse ? 2 : 1,
                    a = t.getSlot(n, n, !0),
                    s = t.options.reverse ? 2 : 1,
                    l = e.box.translate(a[vr + s] - o[vr + r], a[yr + s] - o[yr + r]);e.pane !== t.pane && l.translate(0, e.pane.box.y1 - t.pane.box.y1), e.reflow(l);
            }, alignAxes: function alignAxes(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l = this,
                    c = e[0],
                    h = t[0],
                    u = l.axisCrossingValues(c, t),
                    p = l.axisCrossingValues(h, e),
                    f = {},
                    d = {},
                    g = {},
                    m = {};for (s = 0; s < t.length; s++) {
                    a = t[s], o = a.pane, r = o.id, i = ie(e, o) || c, n = u, i !== c && (n = l.axisCrossingValues(i, t)), l.alignAxisTo(a, i, p[s], n[s]), a.options._overlap || (Ci(a.lineBox().x1) === Ci(i.lineBox().x1) && (f[r] && a.reflow(a.box.alignTo(f[r].box, Xn).translate(-a.options.margin, 0)), f[r] = a), Ci(a.lineBox().x2) === Ci(i.lineBox().x2) && (a._mirrored || (a.options.labels.mirror = !a.options.labels.mirror, a._mirrored = !0), l.alignAxisTo(a, i, p[s], n[s]), d[r] && a.reflow(a.box.alignTo(d[r].box, Ro).translate(a.options.margin, 0)), d[r] = a), 0 !== s && h.pane === a.pane && (a.alignTo(h), a.reflow(a.box)));
                }for (s = 0; s < e.length; s++) {
                    a = e[s], o = a.pane, r = o.id, i = ie(t, o) || h, n = p, i !== h && (n = l.axisCrossingValues(i, e)), l.alignAxisTo(a, i, u[s], n[s]), a.options._overlap || (Ci(a.lineBox().y1) === Ci(i.lineBox().y1) && (a._mirrored || (a.options.labels.mirror = !a.options.labels.mirror, a._mirrored = !0), l.alignAxisTo(a, i, u[s], n[s]), g[r] && a.reflow(a.box.alignTo(g[r].box, or).translate(0, -a.options.margin)), g[r] = a), Ci(a.lineBox().y2, un) === Ci(i.lineBox().y2, un) && (m[r] && a.reflow(a.box.alignTo(m[r].box, Qi).translate(0, a.options.margin)), m[r] = a), 0 !== s && (a.alignTo(c), a.reflow(a.box)));
                }
            }, shrinkAxisWidth: function shrinkAxisWidth(e) {
                var t,
                    i,
                    n,
                    o = this,
                    r = o.groupAxes(e).any,
                    a = P(r),
                    s = 0;for (t = 0; t < e.length; t++) {
                    i = e[t], i.axes.length > 0 && (s = Ot.max(s, a.width() - i.contentBox.width()));
                }if (0 !== s) for (t = 0; t < r.length; t++) {
                    n = r[t], n.options.vertical || n.reflow(n.box.shrink(s, 0));
                }
            }, shrinkAxisHeight: function shrinkAxisHeight(e) {
                var t, i, n, o, r, a, s;for (t = 0; t < e.length; t++) {
                    if (i = e[t], n = i.axes, o = Ot.max(0, P(n).height() - i.contentBox.height()), 0 !== o) {
                        for (r = 0; r < n.length; r++) {
                            a = n[r], a.options.vertical && a.reflow(a.box.shrink(0, o));
                        }s = !0;
                    }
                }return s;
            }, fitAxes: function fitAxes(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l,
                    c = this,
                    h = c.groupAxes(e).any,
                    u = 0;for (s = 0; s < e.length; s++) {
                    if (r = e[s], t = r.axes, i = r.contentBox, t.length > 0) for (n = P(t), u = Ot.max(u, i.x1 - n.x1), o = Ot.max(i.y1 - n.y1, i.y2 - n.y2), l = 0; l < t.length; l++) {
                        a = t[l], a.reflow(a.box.translate(0, o));
                    }
                }for (s = 0; s < h.length; s++) {
                    a = h[s], a.reflow(a.box.translate(u, 0));
                }
            }, reflowAxes: function reflowAxes(e) {
                var t,
                    i = this,
                    n = i.groupAxes(e);for (t = 0; t < e.length; t++) {
                    i.reflowPaneAxes(e[t]);
                }n.x.length > 0 && n.y.length > 0 && (i.alignAxes(n.x, n.y), i.shrinkAxisWidth(e), i.autoRotateAxisLabels(n), i.alignAxes(n.x, n.y), i.shrinkAxisWidth(e) && i.alignAxes(n.x, n.y), i.shrinkAxisHeight(e), i.alignAxes(n.x, n.y), i.shrinkAxisHeight(e) && i.alignAxes(n.x, n.y), i.fitAxes(e));
            }, autoRotateAxisLabels: function autoRotateAxisLabels(e) {
                var t,
                    i,
                    n,
                    o = this.axes,
                    r = this.panes;for (i = 0; i < o.length; i++) {
                    t = o[i], t.autoRotateLabels() && (n = !0);
                }if (n) {
                    for (i = 0; i < r.length; i++) {
                        this.reflowPaneAxes(r[i]);
                    }e.x.length > 0 && e.y.length > 0 && (this.alignAxes(e.x, e.y), this.shrinkAxisWidth(r));
                }
            }, reflowPaneAxes: function reflowPaneAxes(e) {
                var t,
                    i = e.axes,
                    n = i.length;if (n > 0) for (t = 0; t < n; t++) {
                    i[t].reflow(e.contentBox);
                }
            }, reflowCharts: function reflowCharts(e) {
                var t,
                    i,
                    n = this,
                    o = n.charts,
                    r = o.length,
                    a = n.box;for (i = 0; i < r; i++) {
                    t = o[i].pane, t && !Ai(t, e) || o[i].reflow(a);
                }
            }, reflowPanes: function reflowPanes() {
                var e,
                    t,
                    i,
                    n,
                    o,
                    r = this,
                    a = r.box,
                    s = r.panes,
                    l = s.length,
                    c = a.height(),
                    h = l,
                    u = 0,
                    p = a.y1;for (e = 0; e < l; e++) {
                    t = s[e], n = t.options.height, t.options.width = a.width(), t.options.height ? (n.indexOf && n.indexOf("%") && (o = parseInt(n, 10) / 100, t.options.height = o * a.height()), t.reflow(a.clone()), c -= t.options.height) : u++;
                }for (e = 0; e < l; e++) {
                    t = s[e], t.options.height || (t.options.height = c / u);
                }for (e = 0; e < l; e++) {
                    t = s[e], i = a.clone().move(a.x1, p), t.reflow(i), h--, p += t.options.height;
                }
            }, backgroundBox: function backgroundBox() {
                var e,
                    t,
                    i,
                    n,
                    o,
                    r,
                    a = this,
                    s = a.axes,
                    l = s.length;for (i = 0; i < l; i++) {
                    for (o = s[i], n = 0; n < l; n++) {
                        r = s[n], o.options.vertical !== r.options.vertical && (e = o.lineBox().clone().wrap(r.lineBox()), t = t ? t.wrap(e) : e);
                    }
                }return t || a.box;
            }, chartsBoxes: function chartsBoxes() {
                var e,
                    t = this.panes,
                    i = [];for (e = 0; e < t.length; e++) {
                    i.push(t[e].chartsBox());
                }return i;
            }, addBackgroundPaths: function addBackgroundPaths(e) {
                var t,
                    i = this.chartsBoxes();for (t = 0; t < i.length; t++) {
                    e.paths.push(Oi.Path.fromRect(i[t].toRect()));
                }
            }, backgroundContainsPoint: function backgroundContainsPoint(e) {
                var t,
                    i = this.chartsBoxes();for (t = 0; t < i.length; t++) {
                    if (i[t].containsPoint(e)) return !0;
                }
            }, createVisual: function createVisual() {
                var e, t, i, n, o;oi.fn.createVisual.call(this), e = this.options.plotArea, t = e.border || {}, i = e.background, n = e.opacity, Pi.isTransparent(i) && (i = xr, n = 0), o = this._bgVisual = new Oi.MultiPath({ fill: { color: i, opacity: n }, stroke: { color: t.width ? t.color : "", width: t.width, dashType: t.dashType }, zIndex: -1 }), this.addBackgroundPaths(o), this.appendVisual(o);
            }, pointsByCategoryIndex: function pointsByCategoryIndex(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a = this.charts,
                    s = [];if (null !== e) for (t = 0; t < a.length; t++) {
                    if (r = a[t], "_navigator" !== r.pane.options.name && (n = a[t].categoryPoints[e], n && n.length)) for (i = 0; i < n.length; i++) {
                        o = n[i], o && Ri(o.value) && null !== o.value && s.push(o);
                    }
                }return s;
            }, pointsBySeriesIndex: function pointsBySeriesIndex(e) {
                return this.filterPoints(function (t) {
                    return t.series.index === e;
                });
            }, pointsBySeriesName: function pointsBySeriesName(e) {
                return this.filterPoints(function (t) {
                    return t.series.name === e;
                });
            }, filterPoints: function filterPoints(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a = this.charts,
                    s = [];for (n = 0; n < a.length; n++) {
                    for (r = a[n], t = r.points, o = 0; o < t.length; o++) {
                        i = t[o], i && e(i) && s.push(i);
                    }
                }return s;
            }, findPoint: function findPoint(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a = this.charts;for (n = 0; n < a.length; n++) {
                    for (r = a[n], t = r.points, o = 0; o < t.length; o++) {
                        if (i = t[o], i && e(i)) return i;
                    }
                }
            }, paneByPoint: function paneByPoint(e) {
                var t,
                    i,
                    n = this,
                    o = n.panes;for (i = 0; i < o.length; i++) {
                    if (t = o[i], t.box.containsPoint(e)) return t;
                }
            } }), ht = { hover: function hover(e, t) {
                this._dispatchEvent(e, t, ko);
            }, click: function click(e, t) {
                this._dispatchEvent(e, t, Ao);
            } }, ut = ct.extend({ init: function init(e, t) {
                var i,
                    n,
                    o = this;if (o.namedCategoryAxes = {}, o.namedValueAxes = {}, o.valueAxisRangeTracker = new pt(), e.length > 0) for (o.invertAxes = Ai(e[0].type, [qi, en, dr, ur, Co, Un, pr]), i = 0; i < e.length; i++) {
                    if (n = e[i].stack, n && "100%" === n.type) {
                        o.stack100 = !0;break;
                    }
                }ct.fn.init.call(o, e, t);
            }, options: { categoryAxis: { categories: [] }, valueAxis: {} }, render: function render(e) {
                var t = this;e = e || t.panes, t.createCategoryAxes(e), t.aggregateCategories(e), t.createCategoryAxesLabels(e), t.createCharts(e), t.createValueAxes(e);
            }, removeAxis: function removeAxis(e) {
                var t = this,
                    i = e.options.name;ct.fn.removeAxis.call(t, e), e instanceof ce ? delete t.namedCategoryAxes[i] : (t.valueAxisRangeTracker.reset(i), delete t.namedValueAxes[i]), e === t.categoryAxis && delete t.categoryAxis, e === t.valueAxis && delete t.valueAxis;
            }, createCharts: function createCharts(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s = this.groupSeriesByPane();for (t = 0; t < e.length; t++) {
                    if (i = e[t], n = s[i.options.name || "default"] || [], this.addToLegend(n), o = this.filterVisibleSeries(n)) for (r = this.groupSeriesByCategoryAxis(o), a = 0; a < r.length; a++) {
                        this.createChartGroup(r[a], i);
                    }
                }
            }, createChartGroup: function createChartGroup(e, t) {
                this.createAreaChart(O(e, [Hi, ur]), t), this.createBarChart(O(e, [hn, qi]), t), this.createRangeBarChart(O(e, [Po, Co]), t), this.createBulletChart(O(e, [en, fr]), t), this.createCandlestickChart(O(e, tn), t), this.createBoxPlotChart(O(e, [$i, pr]), t), this.createOHLCChart(O(e, yo), t), this.createWaterfallChart(O(e, [gr, Un]), t), this.createLineChart(O(e, [Kn, dr]), t);
            }, aggregateCategories: function aggregateCategories(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a = this,
                    s = a.srcSeries || a.series,
                    l = [];for (t = 0; t < s.length; t++) {
                    i = s[t], n = a.seriesCategoryAxis(i), o = a.findPane(n.options.pane), r = T(n.options.type, mn), (r || i.categoryField) && Ai(o, e) ? i = a.aggregateSeries(i, n) : (B(n.options.min) || B(n.options.max)) && (i = a.filterSeries(i, n)), l.push(i);
                }a.srcSeries = s, a.series = l;
            }, filterSeries: function filterSeries(e, t) {
                var i,
                    n,
                    o,
                    r = t.totalRangeIndices(),
                    a = t.options.justified,
                    s = Ai(e.type, [Kn, dr, Hi, ur]);return r.min = B(t.options.min) ? Ot.floor(r.min) : 0, r.max = B(t.options.max) ? a ? Ot.floor(r.max) + 1 : Ot.ceil(r.max) : e.data.length, e = Xt({}, e), s && (n = r.min - 1, o = t.options.srcCategories || [], n >= 0 && n < e.data.length && (i = n, e._outOfRangeMinPoint = { item: e.data[i], category: o[i], categoryIx: -1 }), r.max < e.data.length && (i = r.max, e._outOfRangeMaxPoint = { item: e.data[i], category: o[i], categoryIx: r.max - r.min })), t._seriesMax = Ot.max(t._seriesMax || 0, e.data.length), e.data = (e.data || []).slice(r.min, r.max), e;
            }, aggregateSeries: function aggregateSeries(e, t) {
                var i,
                    o,
                    r,
                    a,
                    s,
                    l,
                    c,
                    h = t.options,
                    u = T(t.options.type, mn),
                    d = h.categories,
                    g = h.srcCategories || d,
                    m = e.data,
                    x = [],
                    v = Xt({}, e),
                    y = Xt({}, e),
                    _ = h.dataItems || [],
                    b = p,
                    w = Pi.MIN_NUM,
                    A = Pi.MAX_NUM,
                    k = Ai(e.type, [Kn, dr, Hi, ur]);for (v.data = a = [], u && (b = f), i = 0; i < m.length; i++) {
                    o = e.categoryField ? b(e.categoryField, m[i]) : g[i], Ri(o) && (r = t.categoryIndex(o), 0 <= r && r < d.length ? (x[r] = x[r] || [], x[r].push(i)) : k && (r < 0 ? r == w ? l.points.push(i) : r > w && (w = r, l = { category: o, points: [i] }) : r >= d.length && (r == A ? c.points.push(i) : r < A && (A = r, c = { category: o, points: [i] }))));
                }for (s = new Rt(y, oe.current, n.current), i = 0; i < d.length; i++) {
                    a[i] = s.aggregatePoints(x[i], d[i]), x[i] && (_[i] = a[i]);
                }return l && a.length && (v._outOfRangeMinPoint = { item: s.aggregatePoints(l.points, l.category), categoryIx: w, category: l.category }), c && a.length && (v._outOfRangeMaxPoint = { item: s.aggregatePoints(c.points, c.category), categoryIx: A, category: c.category }), t.options.dataItems = _, v;
            }, appendChart: function appendChart(e, t) {
                for (var i = this, n = e.options.series, o = i.seriesCategoryAxis(n[0]), r = o.options.categories, a = Ot.max(0, h(n) - r.length); a--;) {
                    r.push("");
                }i.valueAxisRangeTracker.update(e.valueAxisRanges), ct.fn.appendChart.call(i, e, t);
            }, seriesPaneName: function seriesPaneName(t) {
                var i = this,
                    n = i.options,
                    o = t.axis,
                    r = [].concat(n.valueAxis),
                    a = e.grep(r, function (e) {
                    return e.name === o;
                })[0],
                    s = n.panes || [{}],
                    l = (s[0] || {}).name || "default",
                    c = (a || {}).pane || l;return c;
            }, seriesCategoryAxis: function seriesCategoryAxis(e) {
                var t = this,
                    i = e.categoryAxis,
                    n = i ? t.namedCategoryAxes[i] : t.categoryAxis;if (!n) throw Error("Unable to locate category axis with name " + i);return n;
            }, stackableChartOptions: function stackableChartOptions(e, t) {
                var i = e.stack,
                    n = i && "100%" === i.type,
                    o = t.options.clip;return { isStacked: i, isStacked100: n, clip: o };
            }, groupSeriesByCategoryAxis: function groupSeriesByCategoryAxis(t) {
                function i(i, n) {
                    return e.grep(t, function (e) {
                        return 0 === n && !e.categoryAxis || e.categoryAxis == i;
                    });
                }var n,
                    o,
                    r,
                    a = {},
                    s = e.map(t, function (e) {
                    var t = e.categoryAxis || "$$default$$";if (!a.hasOwnProperty(t)) return a[t] = !0, t;
                }),
                    l = [];for (n = 0; n < s.length; n++) {
                    o = s[n], r = i(o, n), 0 !== r.length && l.push(r);
                }return l;
            }, createBarChart: function createBarChart(e, t) {
                if (0 !== e.length) {
                    var i = this,
                        n = e[0],
                        o = new be(i, Ut({ series: e, invertAxes: i.invertAxes, gap: n.gap, spacing: n.spacing }, i.stackableChartOptions(n, t)));i.appendChart(o, t);
                }
            }, createRangeBarChart: function createRangeBarChart(e, t) {
                if (0 !== e.length) {
                    var i = this,
                        n = e[0],
                        o = new Ae(i, { series: e, invertAxes: i.invertAxes, gap: n.gap, spacing: n.spacing });i.appendChart(o, t);
                }
            }, createBulletChart: function createBulletChart(e, t) {
                if (0 !== e.length) {
                    var i = this,
                        n = e[0],
                        o = new ke(i, { series: e, invertAxes: i.invertAxes, gap: n.gap, spacing: n.spacing, clip: t.options.clip });i.appendChart(o, t);
                }
            }, createLineChart: function createLineChart(e, t) {
                if (0 !== e.length) {
                    var i = this,
                        n = e[0],
                        o = new De(i, Ut({ invertAxes: i.invertAxes, series: e }, i.stackableChartOptions(n, t)));i.appendChart(o, t);
                }
            }, createAreaChart: function createAreaChart(e, t) {
                if (0 !== e.length) {
                    var i = this,
                        n = e[0],
                        o = new He(i, Ut({ invertAxes: i.invertAxes, series: e }, i.stackableChartOptions(n, t)));i.appendChart(o, t);
                }
            }, createOHLCChart: function createOHLCChart(e, t) {
                if (0 !== e.length) {
                    var i = this,
                        n = e[0],
                        o = new Ke(i, { invertAxes: i.invertAxes, gap: n.gap, series: e, spacing: n.spacing, clip: t.options.clip });i.appendChart(o, t);
                }
            }, createCandlestickChart: function createCandlestickChart(e, t) {
                if (0 !== e.length) {
                    var i = this,
                        n = e[0],
                        o = new We(i, { invertAxes: i.invertAxes, gap: n.gap, series: e, spacing: n.spacing, clip: t.options.clip });i.appendChart(o, t);
                }
            }, createBoxPlotChart: function createBoxPlotChart(e, t) {
                if (0 !== e.length) {
                    var i = this,
                        n = e[0],
                        o = new Qe(i, { invertAxes: i.invertAxes, gap: n.gap, series: e, spacing: n.spacing, clip: t.options.clip });i.appendChart(o, t);
                }
            }, createWaterfallChart: function createWaterfallChart(e, t) {
                if (0 !== e.length) {
                    var i = this,
                        n = e[0],
                        o = new rt(i, { series: e, invertAxes: i.invertAxes, gap: n.gap, spacing: n.spacing });i.appendChart(o, t);
                }
            }, axisRequiresRounding: function axisRequiresRounding(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a = this,
                    s = O(a.series, Pr);for (i = 0; i < a.series.length; i++) {
                    o = a.series[i], o.type !== Kn && o.type !== Hi || (r = o.line, r && r.style === No && s.push(o));
                }for (i = 0; i < s.length; i++) {
                    if (n = s[i].categoryAxis || "", n === e || !n && 0 === t) return !0;
                }
            }, aggregatedAxis: function aggregatedAxis(e, t) {
                var i,
                    n,
                    o = this,
                    r = o.series;for (i = 0; i < r.length; i++) {
                    if (n = r[i].categoryAxis || "", (n === e || !n && 0 === t) && r[i].categoryField) return !0;
                }
            }, createCategoryAxesLabels: function createCategoryAxesLabels() {
                var e,
                    t = this.axes;for (e = 0; e < t.length; e++) {
                    t[e] instanceof ce && t[e].createLabels();
                }
            }, createCategoryAxes: function createCategoryAxes(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l,
                    c = this,
                    h = c.invertAxes,
                    u = [].concat(c.options.categoryAxis),
                    p = [];for (t = 0; t < u.length; t++) {
                    if (i = u[t], n = c.findPane(i.pane), Ai(n, e)) {
                        if (a = i.name, o = i.categories || [], r = i.type || "", i = Xt({ vertical: h, axisCrossingValue: h ? io : 0, _deferLabels: !0 }, i), Ri(i.justified) || (i.justified = c.isJustified()), c.axisRequiresRounding(a, t) && (i.justified = !1), s = N(i, o[0]) ? new he(i) : new ce(i), a) {
                            if (c.namedCategoryAxes[a]) throw Error("Category axis with name " + a + " is already defined");c.namedCategoryAxes[a] = s;
                        }s.axisIndex = t, p.push(s), c.appendAxis(s);
                    }
                }l = c.categoryAxis || p[0], c.categoryAxis = l, h ? c.axisY = l : c.axisX = l;
            }, isJustified: function isJustified() {
                var e,
                    t,
                    i = this,
                    n = i.series;for (e = 0; e < n.length; e++) {
                    if (t = n[e], !Ai(t.type, [Hi, ur])) return !1;
                }return !0;
            }, createValueAxes: function createValueAxes(e) {
                var t,
                    i,
                    n,
                    o,
                    r,
                    a,
                    s,
                    l,
                    c,
                    h = this,
                    u = h.valueAxisRangeTracker,
                    p = u.query(),
                    f = [].concat(h.options.valueAxis),
                    d = h.invertAxes,
                    g = { vertical: !d },
                    m = [];for (h.stack100 && (g.roundToMajorUnit = !1, g.labels = { format: "P0" }), c = 0; c < f.length; c++) {
                    if (t = f[c], i = h.findPane(t.pane), Ai(i, e)) {
                        if (l = t.name, s = T(t.type, Jn) ? { min: .1, max: 1 } : { min: 0, max: 1 }, r = u.query(l) || p || s, 0 === c && r && p && (r.min = Ot.min(r.min, p.min), r.max = Ot.max(r.max, p.max)), a = T(t.type, Jn) ? ci : hi, n = new a(r.min, r.max, Xt({}, g, t)), l) {
                            if (h.namedValueAxes[l]) throw Error("Value axis with name " + l + " is already defined");h.namedValueAxes[l] = n;
                        }n.axisIndex = c, m.push(n), h.appendAxis(n);
                    }
                }o = h.valueAxis || m[0], h.valueAxis = o, d ? h.axisX = o : h.axisY = o;
            }, _dispatchEvent: function _dispatchEvent(e, t, i) {
                var n,
                    o,
                    r,
                    a = this,
                    s = e._eventCoordinates(t),
                    l = new ui(s.x, s.y),
                    c = a.pointPane(l),
                    h = [],
                    u = [];if (c) {
                    for (n = c.axes, o = 0; o < n.length; o++) {
                        r = n[o], r.getValue ? I(u, r.getValue(l)) : I(h, r.getCategory(l));
                    }0 === h.length && I(h, a.categoryAxis.getCategory(l)), h.length > 0 && u.length > 0 && e.trigger(i, { element: bi(t), originalEvent: t, category: C(h), value: C(u) });
                }
            }, pointPane: function pointPane(e) {
                var t,
                    i,
                    n = this,
                    o = n.panes;for (i = 0; i < o.length; i++) {
                    if (t = o[i], t.contentBox.containsPoint(e)) return t;
                }
            }, updateAxisOptions: function updateAxisOptions(e, t) {
                var i = [].concat(e instanceof ce ? this.options.categoryAxis : this.options.valueAxis);Xt(i[e.axisIndex], t);
            } }), Xt(ut.fn, ht), pt = jt.extend({ init: function init() {
                var e = this;e.axisRanges = {};
            }, update: function update(e) {
                var t,
                    i,
                    n,
                    o = this,
                    r = o.axisRanges;for (n in e) {
                    t = r[n], i = e[n], r[n] = t = t || { min: io, max: ro }, t.min = Ot.min(t.min, i.min), t.max = Ot.max(t.max, i.max);
                }
            }, reset: function reset(e) {
                this.axisRanges[e] = t;
            }, query: function query(e) {
                return this.axisRanges[e];
            } }), ft = ct.extend({ init: function init(e, t) {
                var i = this;i.namedXAxes = {}, i.namedYAxes = {}, i.xAxisRangeTracker = new pt(), i.yAxisRangeTracker = new pt(), ct.fn.init.call(i, e, t);
            }, options: { xAxis: {}, yAxis: {} }, render: function render(e) {
                var t,
                    i,
                    n,
                    o,
                    r = this,
                    a = r.groupSeriesByPane();for (e = e || r.panes, t = 0; t < e.length; t++) {
                    i = e[t], n = a[i.options.name || "default"] || [], r.addToLegend(n), o = r.filterVisibleSeries(n), o && (r.createScatterChart(O(o, Bo), i), r.createScatterLineChart(O(o, Lo), i), r.createBubbleChart(O(o, Ji), i));
                }r.createAxes(e);
            }, appendChart: function appendChart(e, t) {
                var i = this;i.xAxisRangeTracker.update(e.xAxisRanges), i.yAxisRangeTracker.update(e.yAxisRanges), ct.fn.appendChart.call(i, e, t);
            }, removeAxis: function removeAxis(e) {
                var t = this,
                    i = e.options.name;ct.fn.removeAxis.call(t, e), e.options.vertical ? (t.yAxisRangeTracker.reset(i), delete t.namedYAxes[i]) : (t.xAxisRangeTracker.reset(i), delete t.namedXAxes[i]), e === t.axisX && delete t.axisX, e === t.axisY && delete t.axisY;
            }, seriesPaneName: function seriesPaneName(t) {
                var i = this,
                    n = i.options,
                    o = t.xAxis,
                    r = [].concat(n.xAxis),
                    a = e.grep(r, function (e) {
                    return e.name === o;
                })[0],
                    s = t.yAxis,
                    l = [].concat(n.yAxis),
                    c = e.grep(l, function (e) {
                    return e.name === s;
                })[0],
                    h = n.panes || [{}],
                    u = h[0].name || "default",
                    p = (a || {}).pane || (c || {}).pane || u;return p;
            }, createScatterChart: function createScatterChart(e, t) {
                var i = this;e.length > 0 && i.appendChart(new Ge(i, { series: e, clip: t.options.clip }), t);
            }, createScatterLineChart: function createScatterLineChart(e, t) {
                var i = this;e.length > 0 && i.appendChart(new qe(i, { series: e, clip: t.options.clip }), t);
            }, createBubbleChart: function createBubbleChart(e, t) {
                var i = this;e.length > 0 && i.appendChart(new Ye(i, { series: e, clip: t.options.clip }), t);
            }, createXYAxis: function createXYAxis(e, t, i) {
                var n,
                    o,
                    r,
                    a,
                    s,
                    l,
                    c,
                    h,
                    u = this,
                    p = e.name,
                    f = t ? u.namedYAxes : u.namedXAxes,
                    d = t ? u.yAxisRangeTracker : u.xAxisRangeTracker,
                    g = Xt({}, e, { vertical: t }),
                    m = T(g.type, Jn),
                    x = d.query(),
                    v = m ? { min: .1, max: 1 } : { min: 0, max: 1 },
                    y = d.query(p) || x || v,
                    _ = u.series,
                    b = [g.min, g.max];for (r = 0; r < _.length; r++) {
                    if (a = _[r], s = a[t ? "yAxis" : "xAxis"], s == g.name || 0 === i && !s) {
                        l = oe.current.bindPoint(a, 0).valueFields, b.push(l[t ? "y" : "x"]);break;
                    }
                }for (0 === i && x && (y.min = Ot.min(y.min, x.min), y.max = Ot.max(y.max, x.max)), h = 0; h < b.length; h++) {
                    if (b[h] instanceof Date) {
                        c = !0;break;
                    }
                }if (o = T(g.type, mn) || !g.type && c ? ue : m ? ci : hi, n = new o(y.min, y.max, g), p) {
                    if (f[p]) throw Error((t ? "Y" : "X") + " axis with name " + p + " is already defined");f[p] = n;
                }return u.appendAxis(n), n;
            }, createAxes: function createAxes(e) {
                var t,
                    i = this,
                    n = i.options,
                    o = [].concat(n.xAxis),
                    r = [],
                    a = [].concat(n.yAxis),
                    s = [];Et(o, function (n) {
                    t = i.findPane(this.pane), Ai(t, e) && r.push(i.createXYAxis(this, !1, n));
                }), Et(a, function (n) {
                    t = i.findPane(this.pane), Ai(t, e) && s.push(i.createXYAxis(this, !0, n));
                }), i.axisX = i.axisX || r[0], i.axisY = i.axisY || s[0];
            }, _dispatchEvent: function _dispatchEvent(e, t, i) {
                var n,
                    o,
                    r,
                    a,
                    s = this,
                    l = e._eventCoordinates(t),
                    c = new ui(l.x, l.y),
                    h = s.axes,
                    u = h.length,
                    p = [],
                    f = [];for (n = 0; n < u; n++) {
                    o = h[n], a = o.options.vertical ? f : p, r = o.getValue(c), null !== r && a.push(r);
                }p.length > 0 && f.length > 0 && e.trigger(i, { element: bi(t), originalEvent: t, x: C(p), y: C(f) });
            }, updateAxisOptions: function updateAxisOptions(e, t) {
                var i = e.options.vertical,
                    n = this.groupAxes(this.panes),
                    o = F(e, i ? n.y : n.x),
                    r = [].concat(i ? this.options.yAxis : this.options.xAxis)[o];Xt(r, t);
            } }), Xt(ft.fn, ht), dt = ct.extend({ render: function render() {
                var e = this,
                    t = e.series;e.createPieChart(t);
            }, createPieChart: function createPieChart(e) {
                var t = this,
                    i = e[0],
                    n = new it(t, { series: e, padding: i.padding, startAngle: i.startAngle, connectors: i.connectors, legend: t.options.legend });t.appendChart(n);
            }, appendChart: function appendChart(e, t) {
                ct.fn.appendChart.call(this, e, t), Ti(this.options.legend.items, e.legendItems);
            } }), gt = dt.extend({ render: function render() {
                var e = this,
                    t = e.series;e.createDonutChart(t);
            }, createDonutChart: function createDonutChart(e) {
                var t = this,
                    i = e[0],
                    n = new ot(t, { series: e, padding: i.padding, connectors: i.connectors, legend: t.options.legend });t.appendChart(n);
            } }), mt = Oi.Animation.extend({ options: { easing: "easeOutElastic", duration: Nn }, setup: function setup() {
                this.element.transform(zi.transform().scale(Ho, Ho, this.options.center));
            }, step: function step(e) {
                this.element.transform(zi.transform().scale(e, e, this.options.center));
            } }), Oi.AnimationFactory.current.register(bo, mt), xt = Oi.Animation.extend({ options: { easing: "easeOutElastic" }, setup: function setup() {
                var e = this.center = this.element.bbox().center();this.element.transform(zi.transform().scale(Ho, Ho, e));
            }, step: function step(e) {
                this.element.transform(zi.transform().scale(e, e, this.center));
            } }), Oi.AnimationFactory.current.register(Ji, xt), vt = jt.extend({ init: function init() {
                this._points = [];
            }, destroy: function destroy() {
                this._points = [];
            }, show: function show(e) {
                var t, i;for (e = [].concat(e), this.hide(), t = 0; t < e.length; t++) {
                    i = e[t], i && i.toggleHighlight && i.hasHighlight() && (this.togglePointHighlight(i, !0), this._points.push(i));
                }
            }, togglePointHighlight: function togglePointHighlight(e, t) {
                var i,
                    n = (e.options.highlight || {}).toggle;n ? (i = { category: e.category, series: e.series, dataItem: e.dataItem, value: e.value, stackValue: e.stackValue, preventDefault: W, visual: e.highlightVisual(), show: t }, n(i), i._defaultPrevented || e.toggleHighlight(t)) : e.toggleHighlight(t);
            }, hide: function hide() {
                for (var e = this._points; e.length;) {
                    this.togglePointHighlight(e.pop(), !1);
                }
            }, isHighlighted: function isHighlighted(e) {
                var t,
                    i,
                    n = this._points;for (t = 0; t < n.length; t++) {
                    if (i = n[t], e == i) return !0;
                }return !1;
            } }), yt = Gt.extend({ init: function init(t, i) {
                var n,
                    o,
                    r = this;Gt.fn.init.call(r), r.options = Xt({}, r.options, i), r.chartElement = t, r.template = yt.template, r.template || (r.template = yt.template = Di("<div class='" + fn + "tooltip " + fn + "chart-tooltip' style='display:none; position: absolute; font: #= d.font #;border: #= d.border.width #px solid;opacity: #= d.opacity #; filter: alpha(opacity=#= d.opacity * 100 #);'></div>")), n = wi(r.options.padding || {}, "auto"), r.element = e(r.template(r.options)).css({ "padding-top": n.top, "padding-right": n.right, "padding-bottom": n.bottom, "padding-left": n.left }), r.move = Ht(r.move, r), r._mouseleave = Ht(r._mouseleave, r), o = Nt.format("[{0}='content'],[{0}='scroller']", Nt.attr("role")), r._mobileScroller = t.closest(o).data("kendoMobileScroller");
            }, destroy: function destroy() {
                this._clearShowTimeout(), this.element && (this.element.off(lo).remove(), this.element = null);
            }, options: { border: { width: 1 }, opacity: 1, animation: { duration: rr } }, move: function move() {
                var e,
                    t = this,
                    i = t.options,
                    n = t.element;t.anchor && t.element && (e = t._offset(), t.visible || n.css({ top: e.top, left: e.left }), t.visible = !0, t._ensureElement(document.body), n.stop(!0, !0).show().animate({ left: e.left, top: e.top }, i.animation.duration));
            }, _clearShowTimeout: function _clearShowTimeout() {
                this.showTimeout && (clearTimeout(this.showTimeout), this.showTimeout = null);
            }, _padding: function _padding() {
                if (!this._chartPadding) {
                    var e = this.chartElement;this._chartPadding = { top: parseInt(e.css("paddingTop"), 10), left: parseInt(e.css("paddingLeft"), 10) };
                }return this._chartPadding;
            }, _offset: function _offset() {
                var t,
                    i,
                    n = this,
                    o = n._measure(),
                    r = n.anchor,
                    a = n._padding(),
                    s = n.chartElement.offset(),
                    l = Ci(r.y + a.top + s.top),
                    c = Ci(r.x + a.left + s.left),
                    h = Nt.support.zoomLevel(),
                    u = e(window),
                    p = window.pageYOffset || document.documentElement.scrollTop || 0,
                    f = window.pageXOffset || document.documentElement.scrollLeft || 0,
                    d = (this._mobileScroller || {}).movable;return d && 1 !== d.scale ? (t = zi.transform().scale(d.scale, d.scale, [d.x, d.y]), i = new zi.Point(c, l).transform(t), c = i.x, l = i.y) : (l += n._fit(l - p, o.height, $t(u) / h), c += n._fit(c - f, o.width, Qt(u) / h)), { top: l, left: c };
            }, setStyle: function setStyle(e, t) {
                var i,
                    n,
                    o = e.background,
                    r = e.border.color;t && (i = t.color || t.options.color, o = Mi(o, i), r = Mi(r, i)), Ri(e.color) || (n = new ri(o).percBrightness(), this.element.toggleClass(fn + cr, n > 180)), this.element.css({ backgroundColor: o, borderColor: r, font: e.font, color: e.color, opacity: e.opacity, borderWidth: e.border.width });
            }, show: function show() {
                this._clearShowTimeout(), this.showTimeout = setTimeout(this.move, sr);
            }, hide: function hide() {
                var e = this;clearTimeout(e.showTimeout), e._hideElement(), e.visible && (e.point = null, e.visible = !1, e.index = null);
            }, _measure: function _measure() {
                this._ensureElement();var e = { width: Qt(this.element), height: $t(this.element) };return e;
            }, _ensureElement: function _ensureElement() {
                this.element && this.element.appendTo(document.body).on(lo, this._mouseleave);
            }, _mouseleave: function _mouseleave(t) {
                var i = t.relatedTarget,
                    n = this.chartElement[0];i && i !== n && !e.contains(n, i) && (this.trigger(Yn), this.hide());
            }, _hideElement: function _hideElement() {
                var e = this,
                    t = this.element;t && t.fadeOut({ always: function always() {
                        e.visible || t.off(lo).remove();
                    } });
            }, _pointContent: function _pointContent(e) {
                var t,
                    i,
                    n = this,
                    o = Xt({}, n.options, e.options.tooltip);return Ri(e.value) && (t = "" + e.value), o.template ? (i = Kt(o.template), t = i({ value: e.value, category: e.category, series: e.series, dataItem: e.dataItem, percentage: e.percentage, runningTotal: e.runningTotal, total: e.total, low: e.low, high: e.high, xLow: e.xLow, xHigh: e.xHigh, yLow: e.yLow, yHigh: e.yHigh })) : o.format && (t = e.formatValue(o.format)), t;
            }, _pointAnchor: function _pointAnchor(e) {
                var t = this._measure();return e.tooltipAnchor(t.width, t.height);
            }, _fit: function _fit(e, t, i) {
                var n = 0;return e + t > i && (n = i - (e + t)), e < 0 && (n = -e), n;
            } }), _t = yt.extend({ show: function show(e) {
                var t = this,
                    i = Xt({}, t.options, e.options.tooltip);e && e.tooltipAnchor && t.element && (t.element.html(t._pointContent(e)), t.anchor = t._pointAnchor(e), t.anchor ? (t.setStyle(i, e), yt.fn.show.call(t, e)) : t.hide());
            } }), bt = yt.extend({ init: function init(e, t, i) {
                var n = this;yt.fn.init.call(n, e, i), n.plotArea = t;
            }, options: { sharedTemplate: "<table><th colspan='2'>#= categoryText #</th># for(var i = 0; i < points.length; i++) { ## var point = points[i]; #<tr># if(point.series.name) { # <td> #= point.series.name #:</td># } #<td>#= content(point) #</td></tr># } #</table>", categoryFormat: "{0:d}" }, showAt: function showAt(t, i) {
                var n, o, r;t = e.grep(t, function (e) {
                    var t = e.series.tooltip,
                        i = t && t.visible === !1;return !i;
                }), t.length > 0 && (n = t[0], o = this.plotArea.categoryAxis.getSlot(n.categoryIx), r = this._content(t, n.category), this.element.html(r), this.anchor = i ? this._slotAnchor(i, o) : this._defaultAnchor(n, o), this.setStyle(this.options, n), yt.fn.show.call(this));
            }, _slotAnchor: function _slotAnchor(e, t) {
                var i,
                    n = this,
                    o = n.plotArea,
                    r = o.categoryAxis,
                    a = this._measure(),
                    s = e.y - a.height / 2;return i = r.options.vertical ? ui(e.x, s) : ui(t.center().x, s);
            }, _defaultAnchor: function _defaultAnchor(e, t) {
                var i,
                    n = e.owner.pane.chartsBox(),
                    o = this.plotArea.categoryAxis.options.vertical,
                    r = n.center(),
                    a = t.center(),
                    s = this._measure();return i = o ? new ui(r.x, a.y) : new ui(a.x, r.y), i.x -= s.width / 2, i.y -= s.height / 2, i;
            }, _content: function _content(e, t) {
                var i,
                    n,
                    o = this;return i = Nt.template(o.options.sharedTemplate), n = i({ points: e, category: t, categoryText: yi(o.options.categoryFormat, t), content: o._pointContent });
            } }), wt = oi.extend({ init: function init(e, t) {
                oi.fn.init.call(this, t), this.axis = e, this.stickyMode = e instanceof ce;
            }, options: { color: Zi, width: 1, zIndex: -1, tooltip: { visible: !1 } }, showAt: function showAt(e) {
                this.point = e, this.moveLine(), this.line.visible(!0);var t = this.options.tooltip;t.visible && (this.tooltip || (this.tooltip = new At(this, Xt({}, t, { stickyMode: this.stickyMode }))), this.tooltip.showAt(e));
            }, hide: function hide() {
                this.line.visible(!1), this.tooltip && this.tooltip.hide();
            }, moveLine: function moveLine() {
                var e,
                    t,
                    i,
                    n = this,
                    o = n.axis,
                    r = o.options.vertical,
                    a = n.getBox(),
                    s = n.point,
                    l = r ? yr : vr;t = new zi.Point(a.x1, a.y1), i = r ? new zi.Point(a.x2, a.y1) : new zi.Point(a.x1, a.y2), s && (n.stickyMode ? (e = o.getSlot(o.pointCategoryIndex(s)), t[l] = i[l] = e.center()[l]) : t[l] = i[l] = s[l]), n.box = a, this.line.moveTo(t).lineTo(i);
            }, getBox: function getBox() {
                var e,
                    t,
                    i,
                    n = this,
                    o = n.axis,
                    r = o.pane.axes,
                    a = r.length,
                    s = o.options.vertical,
                    l = o.lineBox().clone(),
                    c = s ? vr : yr;for (i = 0; i < a; i++) {
                    t = r[i], t.options.vertical != s && (e ? e.wrap(t.lineBox()) : e = t.lineBox().clone());
                }return l[c + 1] = e[c + 1], l[c + 2] = e[c + 2], l;
            }, createVisual: function createVisual() {
                oi.fn.createVisual.call(this);var e = this.options;this.line = new Oi.Path({ stroke: { color: e.color, width: e.width, opacity: e.opacity, dashType: e.dashType }, visible: !1 }), this.moveLine(), this.visual.append(this.line);
            }, destroy: function destroy() {
                var e = this;e.tooltip && e.tooltip.destroy(), oi.fn.destroy.call(e);
            } }), At = yt.extend({ init: function init(e, t) {
                var i = this,
                    n = e.axis.getRoot().chart.element;i.crosshair = e, yt.fn.init.call(i, n, Xt({}, i.options, { background: e.axis.plotArea.options.seriesColors[0] }, t)), i.setStyle(i.options);
            }, options: { padding: 10 }, showAt: function showAt(e) {
                var t = this,
                    i = t.element;i && (t.point = e, t.element.html(t.content(e)), t.anchor = t.getAnchor(), t.move());
            }, move: function move() {
                var e = this,
                    t = e.element,
                    i = e._offset();e._ensureElement(), t.css({ top: i.top, left: i.left }).show();
            }, content: function content(e) {
                var t,
                    i,
                    n,
                    o = this,
                    r = o.options,
                    a = o.crosshair.axis,
                    s = a.options;return i = t = a[r.stickyMode ? "getCategory" : "getValue"](e), r.template ? (n = Kt(r.template), t = n({ value: i })) : r.format ? t = yi(r.format, i) : s.type === mn && (t = yi(s.labels.dateFormats[s.baseUnit], i)), t;
            }, getAnchor: function getAnchor() {
                var e,
                    t = this,
                    i = t.options,
                    n = i.position,
                    o = this.crosshair,
                    r = !o.axis.options.vertical,
                    a = o.line.bbox(),
                    s = this._measure(),
                    l = s.width / 2,
                    c = s.height / 2,
                    h = i.padding;return e = r ? n === Qi ? a.bottomLeft().translate(-l, h) : a.topLeft().translate(-l, -s.height - h) : n === Xn ? a.topLeft().translate(-s.width - h, -c) : a.topRight().translate(h, -c);
            }, hide: function hide() {
                this.element.hide(), this.point = null;
            }, destroy: function destroy() {
                yt.fn.destroy.call(this), this.point = null;
            } }), kt = { min: function min(e) {
                var t,
                    i,
                    n = io,
                    o = e.length;for (t = 0; t < o; t++) {
                    i = e[t], B(i) && (n = Ot.min(n, i));
                }return n === io ? e[0] : n;
            }, max: function max(e) {
                var t,
                    i,
                    n = ro,
                    o = e.length;for (t = 0; t < o; t++) {
                    i = e[t], B(i) && (n = Ot.max(n, i));
                }return n === ro ? e[0] : n;
            }, sum: function sum(e) {
                var t,
                    i,
                    n = e.length,
                    o = 0;for (t = 0; t < n; t++) {
                    i = e[t], B(i) && (o += i);
                }return o;
            }, sumOrNull: function sumOrNull(e) {
                var t = null;return L(e) && (t = kt.sum(e)), t;
            }, count: function count(e) {
                var t,
                    i,
                    n = e.length,
                    o = 0;for (t = 0; t < n; t++) {
                    i = e[t], null !== i && Ri(i) && o++;
                }return o;
            }, avg: function avg(e) {
                var t = e[0],
                    i = L(e);return i > 0 && (t = kt.sum(e) / i), t;
            }, first: function first(e) {
                var t,
                    i,
                    n = e.length;for (t = 0; t < n; t++) {
                    if (i = e[t], null !== i && Ri(i)) return i;
                }return e[0];
            } }, n.prototype = { register: function register(e, t) {
                for (var i = 0; i < e.length; i++) {
                    this._defaults[e[i]] = t;
                }
            }, query: function query(e) {
                return this._defaults[e];
            } }, n.current = new n(), St = Gt.extend({ init: function init(t, i, n) {
                var o,
                    r,
                    a = this,
                    s = t.element,
                    l = i.lineBox(),
                    c = a.getValueAxis(i),
                    h = c.lineBox(),
                    u = "." + fn;Gt.fn.init.call(a), a.options = Xt({}, a.options, n), n = a.options, a.chart = t, a.chartElement = s, a.categoryAxis = i, a._dateAxis = a.categoryAxis instanceof he, a.valueAxis = c, a._dateAxis && Xt(n, { min: d(n.min), max: d(n.max), from: d(n.from), to: d(n.to) }), a.template = St.template, a.template || (a.template = St.template = Di("<div class='" + fn + "selector' style='width: #= d.width #px; height: #= d.height #px; top: #= d.offset.top #px; left: #= d.offset.left #px;'><div class='" + fn + "mask'></div><div class='" + fn + "mask'></div><div class='" + fn + "selection'><div class='" + fn + "selection-bg'></div><div class='" + fn + "handle " + fn + "leftHandle'><div></div></div><div class='" + fn + "handle " + fn + "rightHandle'><div></div></div></div></div>")), r = { left: parseInt(s.css("paddingLeft"), 10), right: parseInt(s.css("paddingTop"), 10) }, a.options = Xt({}, { width: l.width(), height: h.height(), padding: r, offset: { left: h.x2 + r.left, top: h.y1 + r.right }, from: n.min, to: n.max }, n), a.options.visible && (a.wrapper = o = e(a.template(a.options)).appendTo(s), a.selection = o.find(u + "selection"), a.leftMask = o.find(u + "mask").first(), a.rightMask = o.find(u + "mask").last(), a.leftHandle = o.find(u + "leftHandle"), a.rightHandle = o.find(u + "rightHandle"), a.options.selection = { border: { left: parseFloat(a.selection.css("border-left-width"), 10), right: parseFloat(a.selection.css("border-right-width"), 10) } }, a.leftHandle.css("top", (a.selection.height() - a.leftHandle.height()) / 2), a.rightHandle.css("top", (a.selection.height() - a.rightHandle.height()) / 2), a.set(a._index(n.from), a._index(n.to)), a.bind(a.events, a.options), a.wrapper[0].style.cssText = a.wrapper[0].style.cssText, a.options.mousewheel !== !1 ? a.wrapper.on(fo, Ht(a._mousewheel, a)) : a.wrapper.on(fo, function (e) {
                    e.stopPropagation();
                }), Nt.UserEvents ? a.userEvents = new Nt.UserEvents(a.wrapper, { global: !0, stopPropagation: !0, multiTouch: !0, fastTap: !0, press: Ht(a._press, a), start: Ht(a._start, a), move: Ht(a._move, a), end: Ht(a._end, a), tap: Ht(a._tap, a), gesturestart: Ht(a._gesturechange, a), gesturechange: Ht(a._gesturechange, a) }) : a.leftHandle.add(a.rightHandle).removeClass(fn + "handle"));
            }, events: [Mo, zo, Oo], options: { visible: !0, mousewheel: { zoom: Ki }, min: ro, max: io }, destroy: function destroy() {
                var e = this,
                    t = e.userEvents;t && t.destroy(), clearTimeout(e._mwTimeout), e._state = null, e.wrapper && e.wrapper.remove();
            }, _rangeEventArgs: function _rangeEventArgs(e) {
                var t = this;return { axis: t.categoryAxis.options, from: t._value(e.from), to: t._value(e.to) };
            }, _start: function _start(t) {
                var i,
                    n = this,
                    o = n.options,
                    r = e(t.event.target);!n._state && r && (n.chart._unsetActivePoint(), n._state = { moveTarget: r.parents(".k-handle").add(r).first(), startLocation: t.x ? t.x.location : 0, range: { from: n._index(o.from), to: n._index(o.to) } }, i = n._rangeEventArgs({ from: n._index(o.from), to: n._index(o.to) }), n.trigger(Mo, i) && (n.userEvents.cancel(), n._state = null));
            }, _press: function _press(t) {
                var i, n;this._state ? i = this._state.moveTarget : (n = e(t.event.target), i = n.parents(".k-handle").add(n).first()), i.addClass("k-handle-active");
            }, _move: function _move(e) {
                if (this._state) {
                    var t = this,
                        i = t._state,
                        n = t.options,
                        o = t.categoryAxis.options.categories,
                        r = t._index(n.from),
                        a = t._index(n.to),
                        s = t._index(n.min),
                        l = t._index(n.max),
                        c = i.startLocation - e.x.location,
                        h = i.range,
                        u = { from: h.from, to: h.to },
                        p = h.to - h.from,
                        f = i.moveTarget,
                        d = t.wrapper.width() / (o.length - 1),
                        g = Ot.round(c / d);f && (e.preventDefault(), f.is(".k-selection, .k-selection-bg") ? (h.from = Ot.min(Ot.max(s, r - g), l - p), h.to = Ot.min(h.from + p, l)) : f.is(".k-leftHandle") ? (h.from = Ot.min(Ot.max(s, r - g), l - 1), h.to = Ot.max(h.from + 1, h.to)) : f.is(".k-rightHandle") && (h.to = Ot.min(Ot.max(s + 1, a - g), l), h.from = Ot.min(h.to - 1, h.from)), h.from === u.from && h.to === u.to || (t.move(h.from, h.to), t.trigger(zo, t._rangeEventArgs(h))));
                }
            }, _end: function _end() {
                var e,
                    t = this._state.range;this._state && (e = this._state.moveTarget, e && e.removeClass("k-handle-active"), delete this._state), this.set(t.from, t.to), this.trigger(Oo, this._rangeEventArgs(t));
            }, _gesturechange: function _gesturechange(e) {
                if (this._state) {
                    var t = this,
                        i = t.chart,
                        n = t._state,
                        o = t.options,
                        r = t.categoryAxis,
                        a = n.range,
                        s = i._toModelCoordinates(e.touches[0].x.location).x,
                        l = i._toModelCoordinates(e.touches[1].x.location).x,
                        c = Ot.min(s, l),
                        h = Ot.max(s, l);e.preventDefault(), n.moveTarget = null, a.from = r.pointCategoryIndex(new Jt.Point2D(c)) || o.min, a.to = r.pointCategoryIndex(new Jt.Point2D(h)) || o.max, t.move(a.from, a.to);
                }
            }, _tap: function _tap(e) {
                var t = this,
                    i = t.options,
                    n = t.chart._eventCoordinates(e),
                    o = t.categoryAxis,
                    r = o.pointCategoryIndex(new Jt.Point2D(n.x, o.box.y1)),
                    a = t._index(i.from),
                    s = t._index(i.to),
                    l = t._index(i.min),
                    c = t._index(i.max),
                    h = s - a,
                    u = a + h / 2,
                    p = Ot.round(u - r),
                    f = {},
                    d = 3 === e.event.which;t._state || d || (e.preventDefault(), t.chart._unsetActivePoint(), o.options.justified || p--, f.from = Ot.min(Ot.max(l, a - p), c - h), f.to = Ot.min(f.from + h, c), t._start(e), t._state && (t._state.range = f, t.trigger(zo, t._rangeEventArgs(f)), t._end()));
            }, _mousewheel: function _mousewheel(e) {
                var t,
                    i = this,
                    n = i.options,
                    o = Si(e);i._start({ event: { target: i.selection } }), i._state && (t = i._state.range, e.preventDefault(), e.stopPropagation(), Ot.abs(o) > 1 && (o *= wr), n.mousewheel.reverse && (o *= -1), i.expand(o) && i.trigger(zo, { axis: i.categoryAxis.options, delta: o, originalEvent: e, from: i._value(t.from), to: i._value(t.to) }), i._mwTimeout && clearTimeout(i._mwTimeout), i._mwTimeout = setTimeout(function () {
                    i._end();
                }, po));
            }, _index: function _index(e) {
                var t = e;return e instanceof Date && (t = this.categoryAxis.categoryIndex(e)), t;
            }, _value: function _value(e) {
                var t = this.categoryAxis.options.categories,
                    i = e;return this._dateAxis && (i = e > t.length - 1 ? this.options.max : t[Ot.ceil(e)]), i;
            }, _slot: function _slot(e) {
                var t = this.categoryAxis,
                    i = this._index(e);return t.getSlot(i, i, !0);
            }, move: function move(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a = this,
                    s = a.options,
                    l = s.offset,
                    c = s.padding,
                    h = s.selection.border;o = a._slot(e), i = Ci(o.x1 - l.left + c.left), a.leftMask.width(i), a.selection.css("left", i), o = a._slot(t), n = Ci(s.width - (o.x1 - l.left + c.left)), a.rightMask.width(n), r = s.width - n, r != s.width && (r += h.right), a.rightMask.css("left", r), a.selection.width(Ot.max(s.width - (i + n) - h.right, 0));
            }, set: function set(e, t) {
                var i = this,
                    n = i.options,
                    o = i._index(n.min),
                    r = i._index(n.max);e = Vi(i._index(e), o, r), t = Vi(i._index(t), e + 1, r), n.visible && i.move(e, t), n.from = i._value(e), n.to = i._value(t);
            }, expand: function expand(e) {
                var t = this,
                    i = t.options,
                    n = t._index(i.min),
                    o = t._index(i.max),
                    r = i.mousewheel.zoom,
                    a = t._index(i.from),
                    s = t._index(i.to),
                    l = { from: a, to: s },
                    c = Xt({}, l);if (t._state && (l = t._state.range), r !== Ro && (l.from = Vi(Vi(a - e, 0, s - 1), n, o)), r !== Xn && (l.to = Vi(Vi(s + e, l.from + 1, o), n, o)), l.from !== c.from || l.to !== c.to) return t.set(l.from, l.to), !0;
            }, getValueAxis: function getValueAxis(e) {
                var t,
                    i,
                    n = e.pane.axes,
                    o = n.length;for (t = 0; t < o; t++) {
                    if (i = n[t], i.options.vertical !== e.options.vertical) return i;
                }
            } }), Ct = jt.extend({ init: function init(e, t) {
                this.plotArea = e, this.options = Xt({}, this.options, t);
            }, options: { key: "none", lock: "none" }, start: function start(e) {
                return this._active = $(e.event, this.options.key);
            }, move: function move(e) {
                if (this._active) {
                    var t = this.axisRanges = this._panAxes(e, vr).concat(this._panAxes(e, yr));if (t.length) return this.axisRanges = t, Q(t);
                }
            }, end: function end() {
                var e = this._active;return this._active = !1, e;
            }, pan: function pan() {
                var e,
                    t,
                    i = this.plotArea,
                    n = this.axisRanges;if (n.length) {
                    for (t = 0; t < n.length; t++) {
                        e = n[t], i.updateAxisOptions(e.axis, e.range);
                    }i.redraw(i.panes);
                }
            }, destroy: function destroy() {
                delete this.plotArea;
            }, _panAxes: function _panAxes(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a = this.plotArea,
                    s = -e[t].delta,
                    l = (this.options.lock || "").toLowerCase(),
                    c = [];if (0 !== s && (l || "").toLowerCase() != t) for (i = a.axes, r = 0; r < i.length; r++) {
                    n = i[r], (t == vr && !n.options.vertical || t == yr && n.options.vertical) && (o = n.pan(s), o && (o.limitRange = !0, c.push({ axis: n, range: o })));
                }return c;
            } }), Pt = jt.extend({ init: function init(t, i) {
                this.chart = t, this.options = Xt({}, this.options, i), this._marquee = e("<div class='k-marquee'><div class='k-marquee-color'></div></div>");
            }, options: { key: "shift", lock: "none" }, start: function start(e) {
                var t, i, n, o, r;return !!($(e.event, this.options.key) && (t = this.chart, i = t._toModelCoordinates(e.x.client, e.y.client), n = this._zoomPane = t._plotArea.paneByPoint(i), n && n.clipBox())) && (o = n.clipBox().clone(), r = this._elementOffset(), o.translate(r.left, r.top), this._zoomPaneClipBox = o, this._marquee.appendTo(document.body).css({ left: e.x.client + 1, top: e.y.client + 1, width: 0, height: 0 }), !0);
            }, _elementOffset: function _elementOffset() {
                var e = this.chart.element,
                    t = e.offset();return { left: parseInt(e.css("paddingTop"), 10) + t.left, top: parseInt(e.css("paddingLeft"), 10) + t.top };
            }, move: function move(e) {
                var t,
                    i = this._zoomPane;i && (t = this._selectionPosition(e), this._marquee.css(t));
            }, end: function end(e) {
                var t,
                    i,
                    n,
                    o,
                    r = this._zoomPane;if (r) return t = this._elementOffset(), i = this._selectionPosition(e), i.left -= t.left, i.top -= t.top, n = { x: i.left, y: i.top }, o = { x: i.left + i.width, y: i.top + i.height }, this._updateAxisRanges(n, o), this._marquee.remove(), delete this._zoomPane, Q(this.axisRanges);
            }, zoom: function zoom() {
                var e,
                    t,
                    i,
                    n = this.axisRanges;if (n && n.length) {
                    for (e = this.chart._plotArea, i = 0; i < n.length; i++) {
                        t = n[i], e.updateAxisOptions(t.axis, t.range);
                    }e.redraw(e.panes);
                }
            }, destroy: function destroy() {
                this._marquee.remove(), delete this._marquee, delete this.chart;
            }, _updateAxisRanges: function _updateAxisRanges(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a = (this.options.lock || "").toLowerCase(),
                    s = [],
                    l = this._zoomPane.axes;for (o = 0; o < l.length; o++) {
                    i = l[o], n = i.options.vertical, a == vr && !n || a === yr && n || (r = i.pointsRange(e, t), r && s.push({ axis: i, range: r }));
                }this.axisRanges = s;
            }, _selectionPosition: function _selectionPosition(e) {
                var t = (this.options.lock || "").toLowerCase(),
                    i = Ot.min(e.x.startLocation, e.x.location),
                    n = Ot.min(e.y.startLocation, e.y.location),
                    o = Ot.abs(e.x.initialDelta),
                    r = Ot.abs(e.y.initialDelta),
                    a = this._zoomPaneClipBox;return t == vr && (i = a.x1, o = a.width()), t == yr && (n = a.y1, r = a.height()), e.x.location > a.x2 && (o = a.x2 - e.x.startLocation), e.x.location < a.x1 && (o = e.x.startLocation - a.x1), e.y.location > a.y2 && (r = a.y2 - e.y.startLocation), e.y.location < a.y1 && (r = e.y.startLocation - a.y1), { left: Ot.max(i, a.x1), top: Ot.max(n, a.y1), width: o, height: r };
            } }), Tt = jt.extend({ init: function init(e, t) {
                this.chart = e, this.options = Xt({}, this.options, t);
            }, updateRanges: function updateRanges(e) {
                var t,
                    i,
                    n,
                    o,
                    r = (this.options.lock || "").toLowerCase(),
                    a = [],
                    s = this.chart._plotArea.axes;for (n = 0; n < s.length; n++) {
                    t = s[n], i = t.options.vertical, r == vr && !i || r === yr && i || (o = t.zoomRange(-e), o && a.push({ axis: t, range: o }));
                }return this.axisRanges = a, Q(a);
            }, zoom: function zoom() {
                var e,
                    t,
                    i,
                    n = this.axisRanges;if (n && n.length) {
                    for (e = this.chart._plotArea, i = 0; i < n.length; i++) {
                        t = n[i], e.updateAxisOptions(t.axis, t.range);
                    }e.redraw(e.panes);
                }
            }, destroy: function destroy() {
                delete this.chart;
            } }), Rt = function Rt(e, t, i) {
            var n,
                o,
                r,
                a = this,
                s = t.canonicalFields(e),
                l = t.valueFields(e),
                c = t.sourceFields(e, s),
                h = a._seriesFields = [],
                u = i.query(e.type),
                p = e.aggregate || u;for (a._series = e, a._binder = t, n = 0; n < s.length; n++) {
                if (o = s[n], (typeof p === "undefined" ? "undefined" : _typeof(p)) === vo) r = p[o];else {
                    if (0 !== n && !Ai(o, l)) break;r = p;
                }r && h.push({ canonicalName: o, name: c[n], transform: Zt(r) ? r : kt[r] });
            }
        }, Rt.prototype = { aggregatePoints: function aggregatePoints(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a,
                    s = this,
                    l = s._bindPoints(e || []),
                    c = s._series,
                    h = s._seriesFields,
                    u = l.dataItems[0],
                    p = {};for (!u || B(u) || Dt(u) || (a = function a() {}, a.prototype = u, p = new a()), i = 0; i < h.length; i++) {
                    if (n = h[i], o = s._bindField(l.values, n.canonicalName), r = n.transform(o, c, l.dataItems, t), !(null === r || (typeof r === "undefined" ? "undefined" : _typeof(r)) !== vo || Ri(r.length) || r instanceof Date)) {
                        p = r;break;
                    }Ri(r) && (G(n.name, p), Nt.setter(n.name)(p, r));
                }return p;
            }, _bindPoints: function _bindPoints(e) {
                var t,
                    i,
                    n = this,
                    o = n._binder,
                    r = n._series,
                    a = [],
                    s = [];for (t = 0; t < e.length; t++) {
                    i = e[t], a.push(o.bindPoint(r, i)), s.push(r.data[i]);
                }return { values: a, dataItems: s };
            }, _bindField: function _bindField(e, t) {
                var i,
                    n,
                    o,
                    r,
                    a = [],
                    s = e.length;for (i = 0; i < s; i++) {
                    n = e[i], r = n.valueFields, o = Ri(r[t]) ? r[t] : n.fields[t], a.push(o);
                }return a;
            } }, It = jt.extend({ init: function init(e) {
                this._plotArea = e, this.visual = e.visual, this.backgroundVisual = e._bgVisual;
            } }), Vt = jt.extend({ init: function init(e, t) {
                this._chart = e, this._pane = t, this.visual = t.visual, this.chartsVisual = t.chartContainer.visual, this.name = t.options.name;
            }, series: function series() {
                var e,
                    t = this._chart,
                    i = t._plotArea.groupSeriesByPane(),
                    n = i[this.name || "default"],
                    o = [];if (n) for (e = 0; e < n.length; e++) {
                    o.push(new Lt(t, n[e]));
                }return o;
            } }), Bt = jt.extend({ init: function init(e) {
                this._axis = e, this.options = e.options;
            }, value: function value(e) {
                var t = this._axis,
                    i = t.getCategory ? t.getCategory(e) : t.getValue(e);return i;
            }, slot: function slot(e, t, i) {
                return Ri(i) || (i = !0), this._axis.slot(e, t, i);
            }, range: function range() {
                return this._axis.range();
            }, valueRange: function valueRange() {
                return this._axis.valueRange();
            } }), Lt = jt.extend({ init: function init(e, t) {
                this._chart = e, this._options = t;
            }, points: function points(e) {
                var t,
                    i,
                    n = this._points;return n || (t = this._seriesOptions(), i = this._chart._plotArea, this._points = n = i.pointsBySeriesIndex(t.index)), Nt.isFunction(e) && (n = this._filterPoints(n, e)), n;
            }, data: function data(e) {
                var t,
                    i,
                    n,
                    o,
                    r = this._seriesOptions();return e && (t = this._chart, i = t._plotArea, r.data = e, r.categoryField && (n = i.seriesCategoryAxis(r), o = [].concat(t.options.categoryAxis), t._bindCategoryAxisFromSeries(o[n.axisIndex], n.axisIndex)), t._noTransitionsRedraw(), this._clearFields()), r.data;
            }, findPoint: function findPoint(e) {
                var t,
                    i = this.points();for (t = 0; t < i.length; t++) {
                    if (e(i[t])) return i[t];
                }
            }, toggleHighlight: function toggleHighlight(e, t) {
                t = t ? Nt.isFunction(t) ? this.points(t) : Dt(t) ? t : [t] : this.points(), this._chart._togglePointsHighlight(e, t);
            }, toggleVisibility: function toggleVisibility(e, t) {
                var i,
                    n,
                    o = this._chart,
                    r = this._seriesOptions(),
                    a = Nt.isFunction(t);if (a) {
                    if (Ai(r.type, [bo, An, zn])) for (i = this._filterData(t), n = 0; n < i.length; n++) {
                        i[n].visible = e;
                    } else r.visible = function (i) {
                        return !t(i.dataItem) || e;
                    };
                } else r.visible = e, o._saveGroupVisibleState(r);o._noTransitionsRedraw(), this._clearFields();
            }, _filterData: function _filterData(e) {
                var t,
                    i = this._seriesOptions().data,
                    n = i.length,
                    o = [];for (t = 0; t < n; t++) {
                    e(i[t]) && o.push(i[t]);
                }return o;
            }, _filterPoints: function _filterPoints(e, t) {
                var i,
                    n = [],
                    o = e.length;for (i = 0; i < o; i++) {
                    t(e[i]) && n.push(e[i]);
                }return n;
            }, _seriesOptions: function _seriesOptions() {
                var e = this._series;return e || (e = this._series = this._chart._seriesOptions(this._options)), e;
            }, _clearFields: function _clearFields() {
                delete this._points, delete this._series;
            } }), Ut(e.easing, { easeOutElastic: function easeOutElastic(e, t, i, n) {
                var o = 1.70158,
                    r = 0,
                    a = n;return 0 === e ? i : 1 === e ? i + n : (r || (r = .5), a < Ot.abs(n) ? (a = n, o = r / 4) : o = r / (2 * Ot.PI) * Ot.asin(n / a), a * Ot.pow(2, -10 * e) * Ot.sin((1 * e - o) * (1.1 * Ot.PI) / r) + n + i);
            } }), Jt.ui.plugin(Rr), ne.current.register(ut, [qi, hn, Kn, dr, Hi, ur, tn, yo, en, fr, $i, pr, Po, Co, gr, Un]), ne.current.register(ft, [Bo, Lo, Ji]), ne.current.register(dt, [bo]), ne.current.register(gt, [An]), oe.current.register([qi, hn, Kn, dr, Hi, ur], [hr], [nn, cn, xo, Tn, Rn]), oe.current.register([Po, Co], [Mn, nr], [nn, cn, xo]), oe.current.register([gr, Un], [hr], [nn, cn, xo, Xo]), n.current.register([qi, hn, Kn, dr, Hi, ur, gr, Un], { value: eo, color: Dn, noteText: Dn, errorLow: no, errorHigh: eo }), n.current.register([Po, Co], { from: no, to: eo, color: Dn, noteText: Dn }), oe.current.register([Bo, Lo, Ji], [vr, yr], [cn, xo, In, Vn, Bn, Ln]), oe.current.register([Ji], [vr, yr, "size"], [cn, nn, xo]), oe.current.register([tn, yo], ["open", "high", "low", "close"], [nn, cn, "downColor", xo]), n.current.register([tn, yo], { open: eo, high: eo, low: no, close: eo, color: Dn, downColor: Dn, noteText: Dn }), oe.current.register([$i, pr], ["lower", "q1", "median", "q3", "upper", "mean", "outliers"], [nn, cn, xo]), n.current.register([$i, pr], { lower: eo, q1: eo, median: eo, q3: eo, upper: eo, mean: eo, outliers: Dn, color: Dn, noteText: Dn }), oe.current.register([en, fr], ["current", "target"], [nn, cn, "visibleInLegend", xo]), n.current.register([en, fr], { current: eo, target: eo, color: Dn, noteText: Dn }), oe.current.register([bo, An], [hr], [nn, cn, "explode", "visibleInLegend", "visible"]), Xt(Jt, { EQUALLY_SPACED_SERIES: Pr, Aggregates: kt, AreaChart: He, AreaSegment: Ue, AxisGroupRangeTracker: pt, Bar: me, BarChart: be, BarLabel: re, BubbleChart: Ye, Bullet: Se, BulletChart: ke, CandlestickChart: We, Candlestick: Xe, CategoricalChart: _e, CategoricalErrorBar: Te, CategoricalPlotArea: ut, CategoryAxis: ce, ChartAxis: Bt, ChartContainer: lt, ChartPane: Vt, ChartPlotArea: It, ChartSeries: Lt, ClipAnimation: Me, ClusterLayout: pe, Crosshair: wt, CrosshairTooltip: At, DateCategoryAxis: he, DateValueAxis: ue, DefaultAggregates: n, DonutChart: ot, DonutPlotArea: gt, DonutSegment: nt, ErrorBarBase: Pe, ErrorRangeCalculator: ye, Highlight: vt, SharedTooltip: bt, Legend: le, LegendItem: ae, LegendLayout: se, LineChart: De, LinePoint: Ie, LineSegment: Be, Pane: st, PieAnimation: mt, PieChart: it, PieChartMixin: tt, PiePlotArea: dt, PieSegment: et, PlotAreaBase: ct, PlotAreaEventsMixin: ht, PlotAreaFactory: ne, PointEventsMixin: de, RangeBar: we, RangeBarChart: Ae, ScatterChart: Ge, ScatterErrorBar: Re, ScatterLineChart: qe, Selection: St, SeriesAggregator: Rt, SeriesBinder: oe, ShapeElement: di, SplineSegment: Oe, SplineAreaSegment: Ne, StackWrap: fe, Tooltip: _t, OHLCChart: Ke, OHLCPoint: Ze, WaterfallChart: rt, WaterfallSegment: at, XYPlotArea: ft, MousewheelZoom: Tt, ZoomSelection: Pt, Pannable: Ct, addDuration: m, areNumbers: E, axisGroupBox: P, categoriesCount: h, ceilDate: y, countNumbers: L, duration: A, ensureTree: G, indexOf: F, isNumber: B, floorDate: v, filterSeriesByType: O, hasValue: K, lteDateIndex: V, evalOptions: M, seriesTotal: q, singleItemOrArray: C, sortDates: U, startOfWeek: x, transpose: j, toDate: d, toTime: g, uniqueDates: H });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, t, i) {
    (i || t)();
});;!function (e, define) {
    define("util/main.min", ["kendo.core.min"], e);
}(function () {
    return function () {
        function e(e) {
            return (typeof e === "undefined" ? "undefined" : _typeof(e)) !== z;
        }function n(e, n) {
            var i = t(n);return B.round(e * i) / i;
        }function t(e) {
            return e ? B.pow(10, e) : 1;
        }function i(e, n, t) {
            return B.max(B.min(e, t), n);
        }function r(e) {
            return e * U;
        }function o(e) {
            return e / U;
        }function a(e) {
            return "number" == typeof e && !isNaN(e);
        }function s(n, t) {
            return e(n) ? n : t;
        }function l(e) {
            return e * e;
        }function u(e) {
            var n,
                t = [];for (n in e) {
                t.push(n + e[n]);
            }return t.sort().join("");
        }function c(e) {
            var n,
                t = 2166136261;for (n = 0; n < e.length; ++n) {
                t += (t << 1) + (t << 4) + (t << 7) + (t << 8) + (t << 24), t ^= e.charCodeAt(n);
            }return t >>> 0;
        }function h(e) {
            return c(u(e));
        }function d(e) {
            var n,
                t = e.length,
                i = O,
                r = N;for (n = 0; n < t; n++) {
                r = B.max(r, e[n]), i = B.min(i, e[n]);
            }return { min: i, max: r };
        }function f(e) {
            return d(e).min;
        }function p(e) {
            return d(e).max;
        }function g(e) {
            return x(e).min;
        }function m(e) {
            return x(e).max;
        }function x(e) {
            var n,
                t,
                i,
                r = O,
                o = N;for (n = 0, t = e.length; n < t; n++) {
                i = e[n], null !== i && isFinite(i) && (r = B.min(r, i), o = B.max(o, i));
            }return { min: r === O ? void 0 : r, max: o === N ? void 0 : o };
        }function v(e) {
            if (e) return e[e.length - 1];
        }function A(e, n) {
            return e.push.apply(e, n), e;
        }function y(e) {
            return V.template(e, { useWithBlock: !1, paramName: "d" });
        }function w(n, t) {
            return e(t) && null !== t ? " " + n + "='" + t + "' " : "";
        }function b(e) {
            var n,
                t = "";for (n = 0; n < e.length; n++) {
                t += w(e[n][0], e[n][1]);
            }return t;
        }function C(n) {
            var t,
                i,
                r = "";for (t = 0; t < n.length; t++) {
                i = n[t][1], e(i) && (r += n[t][0] + ":" + i + ";");
            }if ("" !== r) return r;
        }function L(e) {
            return "string" != typeof e && (e += "px"), e;
        }function S(e) {
            var n,
                t,
                i = [];if (e) for (n = V.toHyphens(e).split("-"), t = 0; t < n.length; t++) {
                i.push("k-pos-" + n[t]);
            }return i.join(" ");
        }function k(n) {
            return "" === n || null === n || "none" === n || "transparent" === n || !e(n);
        }function _(e) {
            for (var n = { 1: "i", 10: "x", 100: "c", 2: "ii", 20: "xx", 200: "cc", 3: "iii", 30: "xxx", 300: "ccc", 4: "iv", 40: "xl", 400: "cd", 5: "v", 50: "l", 500: "d", 6: "vi", 60: "lx", 600: "dc", 7: "vii", 70: "lxx", 700: "dcc", 8: "viii", 80: "lxxx", 800: "dccc", 9: "ix", 90: "xc", 900: "cm", 1e3: "m" }, t = [1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], i = ""; e > 0;) {
                e < t[0] ? t.shift() : (i += n[t[0]], e -= t[0]);
            }return i;
        }function j(e) {
            var n, t, i, r, o;for (e = e.toLowerCase(), n = { i: 1, v: 5, x: 10, l: 50, c: 100, d: 500, m: 1e3 }, t = 0, i = 0, r = 0; r < e.length; ++r) {
                if (o = n[e.charAt(r)], !o) return null;t += o, o > i && (t -= 2 * i), i = o;
            }return t;
        }function G(e) {
            var n = Object.create(null);return function () {
                var t,
                    i = "";for (t = arguments.length; --t >= 0;) {
                    i += ":" + arguments[t];
                }return i in n ? n[i] : n[i] = e.apply(this, arguments);
            };
        }function P(e) {
            for (var n, t, i = [], r = 0, o = e.length; r < o;) {
                n = e.charCodeAt(r++), n >= 55296 && n <= 56319 && r < o ? (t = e.charCodeAt(r++), 56320 == (64512 & t) ? i.push(((1023 & n) << 10) + (1023 & t) + 65536) : (i.push(n), r--)) : i.push(n);
            }return i;
        }function M(e) {
            return e.map(function (e) {
                var n = "";return e > 65535 && (e -= 65536, n += String.fromCharCode(e >>> 10 & 1023 | 55296), e = 56320 | 1023 & e), n += String.fromCharCode(e);
            }).join("");
        }function T(e, n) {
            function t(e, t) {
                for (var i = [], r = 0, o = 0, a = 0; r < e.length && o < t.length;) {
                    n(e[r], t[o]) <= 0 ? i[a++] = e[r++] : i[a++] = t[o++];
                }return r < e.length && i.push.apply(i, e.slice(r)), o < t.length && i.push.apply(i, t.slice(o)), i;
            }return e.length < 2 ? e.slice() : function i(e) {
                var n, r, o;return e.length <= 1 ? e : (n = Math.floor(e.length / 2), r = e.slice(0, n), o = e.slice(n), r = i(r), o = i(o), t(r, o));
            }(e);
        }var B = Math,
            V = window.kendo,
            R = V.deepExtend,
            U = B.PI / 180,
            O = Number.MAX_VALUE,
            N = -Number.MAX_VALUE,
            z = "undefined",
            I = Date.now;I || (I = function I() {
            return new Date().getTime();
        }), R(V, { util: { MAX_NUM: O, MIN_NUM: N, append: A, arrayLimits: d, arrayMin: f, arrayMax: p, defined: e, deg: o, hashKey: c, hashObject: h, isNumber: a, isTransparent: k, last: v, limitValue: i, now: I, objectKey: u, round: n, rad: r, renderAttr: w, renderAllAttr: b, renderPos: S, renderSize: L, renderStyle: C, renderTemplate: y, sparseArrayLimits: x, sparseArrayMin: g, sparseArrayMax: m, sqr: l, valueOrDefault: s, romanToArabic: j, arabicToRoman: _, memoize: G, ucs2encode: M, ucs2decode: P, mergeSort: T } }), V.drawing.util = V.util, V.dataviz.util = V.util;
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("util/text-metrics.min", ["kendo.core.min", "util/main.min"], e);
}(function () {
    !function (e) {
        function n() {
            return { width: 0, height: 0, baseline: 0 };
        }function t(e, n, t) {
            return h.current.measure(e, n, t);
        }function i(e, n) {
            var t = [];if (e.length > 0 && document.fonts) {
                try {
                    t = e.map(function (e) {
                        return document.fonts.load(e);
                    });
                } catch (i) {
                    o.logToConsole(i);
                }Promise.all(t).then(n, n);
            } else n();
        }var r = document,
            o = window.kendo,
            a = o.Class,
            s = o.util,
            l = s.defined,
            u = a.extend({ init: function init(e) {
                this._size = e, this._length = 0, this._map = {};
            }, put: function put(e, n) {
                var t = this,
                    i = t._map,
                    r = { key: e, value: n };i[e] = r, t._head ? (t._tail.newer = r, r.older = t._tail, t._tail = r) : t._head = t._tail = r, t._length >= t._size ? (i[t._head.key] = null, t._head = t._head.newer, t._head.older = null) : t._length++;
            }, get: function get(e) {
                var n = this,
                    t = n._map[e];if (t) return t === n._head && t !== n._tail && (n._head = t.newer, n._head.older = null), t !== n._tail && (t.older && (t.older.newer = t.newer, t.newer.older = t.older), t.older = n._tail, t.newer = null, n._tail.newer = t, n._tail = t), t.value;
            } }),
            c = e("<div style='position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;padding: 0 !important; margin: 0 !important; border: 0 !important;line-height: normal !important; visibility: hidden !important; white-space: nowrap!important;' />")[0],
            h = a.extend({ init: function init(e) {
                this._cache = new u(1e3), this._initOptions(e);
            }, options: { baselineMarkerSize: 1 }, measure: function measure(t, i, o) {
                var a, u, h, d, f, p, g, m;if (!t) return n();if (a = s.objectKey(i), u = s.hashKey(t + a), h = this._cache.get(u), h) return h;d = n(), f = o ? o : c, p = this._baselineMarker().cloneNode(!1);for (g in i) {
                    m = i[g], l(m) && (f.style[g] = m);
                }return e(f).text(t), f.appendChild(p), r.body.appendChild(f), (t + "").length && (d.width = f.offsetWidth - this.options.baselineMarkerSize, d.height = f.offsetHeight, d.baseline = p.offsetTop + this.options.baselineMarkerSize), d.width > 0 && d.height > 0 && this._cache.put(u, d), f.parentNode.removeChild(f), d;
            }, _baselineMarker: function _baselineMarker() {
                return e("<div class='k-baseline-marker' style='display: inline-block; vertical-align: baseline;width: " + this.options.baselineMarkerSize + "px; height: " + this.options.baselineMarkerSize + "px;overflow: hidden;' />")[0];
            } });h.current = new h(), o.util.TextMetrics = h, o.util.LRUCache = u, o.util.loadFonts = i, o.util.measureText = t;
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("util/base64.min", ["util/main.min"], e);
}(function () {
    return function () {
        function e(e) {
            var t,
                i,
                r,
                a,
                s,
                l,
                u,
                c = "",
                h = 0;for (e = n(e); h < e.length;) {
                t = e.charCodeAt(h++), i = e.charCodeAt(h++), r = e.charCodeAt(h++), a = t >> 2, s = (3 & t) << 4 | i >> 4, l = (15 & i) << 2 | r >> 6, u = 63 & r, isNaN(i) ? l = u = 64 : isNaN(r) && (u = 64), c = c + o.charAt(a) + o.charAt(s) + o.charAt(l) + o.charAt(u);
            }return c;
        }function n(e) {
            var n,
                t,
                i = "";for (n = 0; n < e.length; n++) {
                t = e.charCodeAt(n), t < 128 ? i += r(t) : t < 2048 ? (i += r(192 | t >>> 6), i += r(128 | 63 & t)) : t < 65536 && (i += r(224 | t >>> 12), i += r(128 | t >>> 6 & 63), i += r(128 | 63 & t));
            }return i;
        }var t = window.kendo,
            i = t.deepExtend,
            r = String.fromCharCode,
            o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";i(t.util, { encodeBase64: e, encodeUTF8: n });
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("mixins/observers.min", ["kendo.core.min"], e);
}(function () {
    return function (e) {
        var n = Math,
            t = window.kendo,
            i = t.deepExtend,
            r = e.inArray,
            o = { observers: function observers() {
                return this._observers = this._observers || [];
            }, addObserver: function addObserver(e) {
                return this._observers ? this._observers.push(e) : this._observers = [e], this;
            }, removeObserver: function removeObserver(e) {
                var n = this.observers(),
                    t = r(e, n);return t != -1 && n.splice(t, 1), this;
            }, trigger: function trigger(e, n) {
                var t,
                    i,
                    r = this._observers;if (r && !this._suspended) for (i = 0; i < r.length; i++) {
                    t = r[i], t[e] && t[e](n);
                }return this;
            }, optionsChange: function optionsChange(e) {
                e = e || {}, e.element = this, this.trigger("optionsChange", e);
            }, geometryChange: function geometryChange() {
                this.trigger("geometryChange", { element: this });
            }, suspend: function suspend() {
                return this._suspended = (this._suspended || 0) + 1, this;
            }, resume: function resume() {
                return this._suspended = n.max((this._suspended || 0) - 1, 0), this;
            }, _observerField: function _observerField(e, n) {
                this[e] && this[e].removeObserver(this), this[e] = n, n.addObserver(this);
            } };i(t, { mixins: { ObserversMixin: o } });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("kendo.dataviz.chart.polar.min", ["kendo.dataviz.chart.min", "kendo.drawing.min"], e);
}(function () {
    return function (e, n) {
        function t(e, n) {
            return e.value.x - n.value.x;
        }function i(e, n) {
            return 180 - L.abs(L.abs(e - n) - 180);
        }var r,
            o,
            a,
            s,
            l,
            u,
            c,
            h,
            d,
            f,
            p,
            g,
            m,
            x,
            v,
            A,
            y,
            w,
            b,
            C,
            L = Math,
            S = window.kendo,
            k = S.deepExtend,
            _ = S.util,
            j = _.append,
            G = S.drawing,
            P = S.geometry,
            M = S.dataviz,
            T = M.AreaSegment,
            B = M.Axis,
            V = M.AxisGroupRangeTracker,
            R = M.BarChart,
            U = M.Box2D,
            O = M.CategoryAxis,
            N = M.CategoricalChart,
            z = M.CategoricalPlotArea,
            I = M.ChartElement,
            E = M.CurveProcessor,
            D = M.DonutSegment,
            F = M.LineChart,
            X = M.LineSegment,
            K = M.LogarithmicAxis,
            Y = M.NumericAxis,
            q = M.PlotAreaBase,
            Q = M.PlotAreaEventsMixin,
            H = M.PlotAreaFactory,
            W = M.Point2D,
            J = M.Ring,
            Z = M.ScatterChart,
            $ = M.ScatterLineChart,
            ee = M.SeriesBinder,
            ne = M.ShapeBuilder,
            te = M.SplineSegment,
            ie = M.SplineAreaSegment,
            re = M.eventTargetElement,
            oe = M.getSpacing,
            ae = M.filterSeriesByType,
            se = _.limitValue,
            le = M.round,
            ue = "arc",
            ce = "#000",
            he = M.COORD_PRECISION,
            de = .15,
            fe = L.PI / 180,
            pe = "gap",
            ge = "interpolate",
            me = "log",
            xe = "polarArea",
            ve = "polarLine",
            Ae = "polarScatter",
            ye = "radarArea",
            we = "radarColumn",
            be = "radarLine",
            Ce = "smooth",
            Le = "x",
            Se = "y",
            ke = "zero",
            _e = [xe, ve, Ae],
            je = [ye, we, be],
            Ge = { createGridLines: function createGridLines(e) {
                var n,
                    t,
                    i = this,
                    r = i.options,
                    o = L.abs(i.box.center().y - e.lineBox().y1),
                    a = !1,
                    s = [];return r.majorGridLines.visible && (n = i.majorGridLineAngles(e), a = !0, s = i.renderMajorGridLines(n, o, r.majorGridLines)), r.minorGridLines.visible && (t = i.minorGridLineAngles(e, a), j(s, i.renderMinorGridLines(t, o, r.minorGridLines, e, a))), s;
            }, renderMajorGridLines: function renderMajorGridLines(e, n, t) {
                return this.renderGridLines(e, n, t);
            }, renderMinorGridLines: function renderMinorGridLines(e, n, t, i, r) {
                var o = this.radiusCallback && this.radiusCallback(n, i, r);return this.renderGridLines(e, n, t, o);
            }, renderGridLines: function renderGridLines(e, n, t, i) {
                var r,
                    o,
                    a = { stroke: { width: t.width, color: t.color, dashType: t.dashType } },
                    s = this.box.center(),
                    l = new P.Circle([s.x, s.y], n),
                    u = this.gridLinesVisual();for (r = 0; r < e.length; r++) {
                    o = new G.Path(a), i && (l.radius = i(e[r])), o.moveTo(l.center).lineTo(l.pointAt(e[r])), u.append(o);
                }return u.children;
            }, gridLineAngles: function gridLineAngles(n, t, i, r, o) {
                var a = this,
                    s = a.intervals(t, i, r, o),
                    l = n.options,
                    u = l.visible && (l.line || {}).visible !== !1;return e.map(s, function (e) {
                    var n = a.intervalAngle(e);if (!u || 90 !== n) return n;
                });
            } },
            Pe = O.extend({ options: { startAngle: 90, labels: { margin: oe(10) }, majorGridLines: { visible: !0 }, justified: !0 }, range: function range() {
                return { min: 0, max: this.options.categories.length };
            }, reflow: function reflow(e) {
                this.box = e, this.reflowLabels();
            }, lineBox: function lineBox() {
                return this.box;
            }, reflowLabels: function reflowLabels() {
                var e,
                    n,
                    t = this,
                    i = t.options.labels,
                    r = i.skip || 0,
                    o = i.step || 1,
                    a = new U(),
                    s = t.labels;for (n = 0; n < s.length; n++) {
                    s[n].reflow(a), e = s[n].box, s[n].reflow(t.getSlot(r + n * o).adjacentBox(0, e.width(), e.height()));
                }
            }, intervals: function intervals(e, n, t, i) {
                var r,
                    o = this,
                    a = o.options,
                    s = a.categories.length,
                    l = 0,
                    u = s / e || 1,
                    c = 360 / u,
                    h = [];for (n = n || 0, t = t || 1, r = n; r < u; r += t) {
                    l = a.reverse ? 360 - r * c : r * c, l = le(l, he) % 360, i && M.inArray(l, i) || h.push(l);
                }return h;
            }, majorIntervals: function majorIntervals() {
                return this.intervals(1);
            }, minorIntervals: function minorIntervals() {
                return this.intervals(.5);
            }, intervalAngle: function intervalAngle(e) {
                return (360 + e + this.options.startAngle) % 360;
            }, majorAngles: function majorAngles() {
                return e.map(this.majorIntervals(), e.proxy(this.intervalAngle, this));
            }, createLine: function createLine() {
                return [];
            }, majorGridLineAngles: function majorGridLineAngles(e) {
                var n = this.options.majorGridLines;return this.gridLineAngles(e, 1, n.skip, n.step);
            }, minorGridLineAngles: function minorGridLineAngles(e, n) {
                var t = this.options,
                    i = t.minorGridLines,
                    r = t.majorGridLines,
                    o = n ? this.intervals(1, r.skip, r.step) : null;return this.gridLineAngles(e, .5, i.skip, i.step, o);
            }, radiusCallback: function radiusCallback(e, n, t) {
                var i, r, o, a;if (n.options.type !== ue) return i = 360 / (2 * this.options.categories.length), r = L.cos(i * fe) * e, o = this.majorAngles(), a = function a(n) {
                    return !t && M.inArray(n, o) ? e : r;
                };
            }, createPlotBands: function createPlotBands() {
                var e,
                    n,
                    t,
                    i,
                    r,
                    o,
                    a,
                    s = this,
                    l = s.options,
                    u = l.plotBands || [],
                    c = this._plotbandGroup = new G.Group({ zIndex: -1 });for (e = 0; e < u.length; e++) {
                    n = u[e], t = s.plotBandSlot(n), i = s.getSlot(n.from), r = n.from - L.floor(n.from), t.startAngle += r * i.angle, o = L.ceil(n.to) - n.to, t.angle -= (o + r) * i.angle, a = ne.current.createRing(t, { fill: { color: n.color, opacity: n.opacity }, stroke: { opacity: n.opacity } }), c.append(a);
                }s.appendVisual(c);
            }, plotBandSlot: function plotBandSlot(e) {
                return this.getSlot(e.from, e.to - 1);
            }, getSlot: function getSlot(e, n) {
                var t,
                    i,
                    r,
                    o = this,
                    a = o.options,
                    s = a.justified,
                    l = o.box,
                    u = o.majorAngles(),
                    c = u.length,
                    h = 360 / c;return a.reverse && !s && (e = (e + 1) % c), e = se(L.floor(e), 0, c - 1), i = u[e], s && (i -= h / 2, i < 0 && (i += 360)), n = se(L.ceil(n || e), e, c - 1), t = n - e + 1, r = h * t, new J(l.center(), 0, l.height() / 2, i, r);
            }, slot: function slot(e, n) {
                var t = this.getSlot(e, n),
                    i = t.startAngle + 180,
                    r = i + t.angle;return new P.Arc([t.c.x, t.c.y], { startAngle: i, endAngle: r, radiusX: t.r, radiusY: t.r });
            }, pointCategoryIndex: function pointCategoryIndex(e) {
                var n,
                    t,
                    i = this,
                    r = null,
                    o = i.options.categories.length;for (n = 0; n < o; n++) {
                    if (t = i.getSlot(n), t.containsPoint(e)) {
                        r = n;break;
                    }
                }return r;
            } });k(Pe.fn, Ge), r = { options: { majorGridLines: { visible: !0 } }, createPlotBands: function createPlotBands() {
                var e,
                    n,
                    t,
                    i,
                    r,
                    o,
                    a = this,
                    s = a.options,
                    l = s.plotBands || [],
                    u = s.majorGridLines.type,
                    c = a.plotArea.polarAxis,
                    h = c.majorAngles(),
                    d = c.box.center(),
                    f = this._plotbandGroup = new G.Group({ zIndex: -1 });for (e = 0; e < l.length; e++) {
                    n = l[e], t = { fill: { color: n.color, opacity: n.opacity }, stroke: { opacity: n.opacity } }, i = a.getSlot(n.from, n.to, !0), r = new J(d, d.y - i.y2, d.y - i.y1, 0, 360), o = u === ue ? ne.current.createRing(r, t) : G.Path.fromPoints(a.plotBandPoints(r, h), t).close(), f.append(o);
                }a.appendVisual(f);
            }, plotBandPoints: function plotBandPoints(e, n) {
                var t,
                    i = [],
                    r = [],
                    o = [e.c.x, e.c.y],
                    a = new P.Circle(o, e.ir),
                    s = new P.Circle(o, e.r);for (t = 0; t < n.length; t++) {
                    i.push(a.pointAt(n[t])), r.push(s.pointAt(n[t]));
                }return i.reverse(), i.push(i[0]), r.push(r[0]), r.concat(i);
            }, createGridLines: function createGridLines(e) {
                var n,
                    t = this,
                    i = t.options,
                    r = t.radarMajorGridLinePositions(),
                    o = e.majorAngles(),
                    a = e.box.center(),
                    s = [];return i.majorGridLines.visible && (s = t.renderGridLines(a, r, o, i.majorGridLines)), i.minorGridLines.visible && (n = t.radarMinorGridLinePositions(), j(s, t.renderGridLines(a, n, o, i.minorGridLines))), s;
            }, renderGridLines: function renderGridLines(e, n, t, i) {
                var r,
                    o,
                    a,
                    s,
                    l,
                    u = { stroke: { width: i.width, color: i.color, dashType: i.dashType } },
                    c = i.skip || 0,
                    h = i.step || 1,
                    d = this.gridLinesVisual();for (o = c; o < n.length; o += h) {
                    if (r = e.y - n[o], r > 0) if (s = new P.Circle([e.x, e.y], r), i.type === ue) d.append(new G.Circle(s, u));else {
                        for (l = new G.Path(u), a = 0; a < t.length; a++) {
                            l.lineTo(s.pointAt(t[a]));
                        }l.close(), d.append(l);
                    }
                }return d.children;
            }, getValue: function getValue(e) {
                var n,
                    t,
                    r,
                    o,
                    a,
                    s,
                    l,
                    u = this,
                    c = u.options,
                    h = u.lineBox(),
                    d = u.plotArea.polarAxis,
                    f = d.majorAngles(),
                    p = d.box.center(),
                    g = e.distanceTo(p),
                    m = g;return c.majorGridLines.type !== ue && f.length > 1 && (n = e.x - p.x, t = e.y - p.y, r = (L.atan2(t, n) / fe + 540) % 360, f.sort(function (e, n) {
                    return i(e, r) - i(n, r);
                }), o = i(f[0], f[1]) / 2, a = i(r, f[0]), s = 90 - o, l = 180 - a - s, m = g * (L.sin(l * fe) / L.sin(s * fe))), u.axisType().fn.getValue.call(u, new W(h.x1, h.y2 - m));
            } }, o = Y.extend({ radarMajorGridLinePositions: function radarMajorGridLinePositions() {
                return this.getTickPositions(this.options.majorUnit);
            }, radarMinorGridLinePositions: function radarMinorGridLinePositions() {
                var e = this,
                    n = e.options,
                    t = 0;return n.majorGridLines.visible && (t = n.majorUnit), e.getTickPositions(n.minorUnit, t);
            }, axisType: function axisType() {
                return Y;
            } }), k(o.fn, r), a = K.extend({ radarMajorGridLinePositions: function radarMajorGridLinePositions() {
                var e = this,
                    n = [];return e.traverseMajorTicksPositions(function (e) {
                    n.push(e);
                }, e.options.majorGridLines), n;
            }, radarMinorGridLinePositions: function radarMinorGridLinePositions() {
                var e = this,
                    n = [];return e.traverseMinorTicksPositions(function (e) {
                    n.push(e);
                }, e.options.minorGridLines), n;
            }, axisType: function axisType() {
                return K;
            } }), k(a.fn, r), s = B.extend({ init: function init(e) {
                var n = this;B.fn.init.call(n, e), e = n.options, e.minorUnit = e.minorUnit || n.options.majorUnit / 2;
            }, options: { type: "polar", startAngle: 0, reverse: !1, majorUnit: 60, min: 0, max: 360, labels: { margin: oe(10) }, majorGridLines: { color: ce, visible: !0, width: 1 }, minorGridLines: { color: "#aaa" } }, getDivisions: function getDivisions(e) {
                return Y.fn.getDivisions.call(this, e) - 1;
            }, reflow: function reflow(e) {
                this.box = e, this.reflowLabels();
            }, reflowLabels: function reflowLabels() {
                var e,
                    n,
                    t = this,
                    i = t.options,
                    r = i.labels,
                    o = r.skip || 0,
                    a = r.step || 1,
                    s = new U(),
                    l = t.intervals(i.majorUnit, o, a),
                    u = t.labels;for (n = 0; n < u.length; n++) {
                    u[n].reflow(s), e = u[n].box, u[n].reflow(t.getSlot(l[n]).adjacentBox(0, e.width(), e.height()));
                }
            }, lineBox: function lineBox() {
                return this.box;
            }, intervals: function intervals(e, n, t, i) {
                var r,
                    o,
                    a = this,
                    s = a.options,
                    l = a.getDivisions(e),
                    u = s.min,
                    c = [];for (n = n || 0, t = t || 1, o = n; o < l; o += t) {
                    r = (360 + u + o * e) % 360, i && M.inArray(r, i) || c.push(r);
                }return c;
            }, majorIntervals: function majorIntervals() {
                return this.intervals(this.options.majorUnit);
            }, minorIntervals: function minorIntervals() {
                return this.intervals(this.options.minorUnit);
            }, intervalAngle: function intervalAngle(e) {
                return (540 - e - this.options.startAngle) % 360;
            }, majorAngles: Pe.fn.majorAngles, createLine: function createLine() {
                return [];
            }, majorGridLineAngles: function majorGridLineAngles(e) {
                var n = this.options.majorGridLines;return this.gridLineAngles(e, this.options.majorUnit, n.skip, n.step);
            }, minorGridLineAngles: function minorGridLineAngles(e, n) {
                var t = this.options,
                    i = t.minorGridLines,
                    r = t.majorGridLines,
                    o = n ? this.intervals(t.majorUnit, r.skip, r.step) : null;return this.gridLineAngles(e, this.options.minorUnit, i.skip, i.step, o);
            }, createPlotBands: Pe.fn.createPlotBands, plotBandSlot: function plotBandSlot(e) {
                return this.getSlot(e.from, e.to);
            }, getSlot: function getSlot(e, n) {
                var t,
                    i = this,
                    r = i.options,
                    o = r.startAngle,
                    a = i.box;return e = se(e, r.min, r.max), n = se(n || e, e, r.max), r.reverse && (e *= -1, n *= -1), e = (540 - e - o) % 360, n = (540 - n - o) % 360, n < e && (t = e, e = n, n = t), new J(a.center(), 0, a.height() / 2, e, n - e);
            }, slot: function slot(e, n) {
                var t,
                    i,
                    r,
                    o,
                    a = this.options,
                    s = 360 - a.startAngle,
                    l = this.getSlot(e, n);return M.util.defined(n) || (n = e), r = L.min(e, n), o = L.max(e, n), a.reverse ? (t = r, i = o) : (t = 360 - o, i = 360 - r), t = (t + s) % 360, i = (i + s) % 360, new P.Arc([l.c.x, l.c.y], { startAngle: t, endAngle: i, radiusX: l.r, radiusY: l.r });
            }, getValue: function getValue(e) {
                var n = this,
                    t = n.options,
                    i = n.box.center(),
                    r = e.x - i.x,
                    o = e.y - i.y,
                    a = L.round(L.atan2(o, r) / fe),
                    s = t.startAngle;return t.reverse || (a *= -1, s *= -1), (a + s + 360) % 360;
            }, valueRange: function valueRange() {
                return { min: 0, max: 2 * L.PI };
            }, range: Y.fn.range, labelsCount: Y.fn.labelsCount, createAxisLabel: Y.fn.createAxisLabel }), k(s.fn, Ge), l = I.extend({ options: { gap: 1, spacing: 0 }, reflow: function reflow(e) {
                var n,
                    t,
                    i = this,
                    r = i.options,
                    o = i.children,
                    a = r.gap,
                    s = r.spacing,
                    l = o.length,
                    u = l + a + s * (l - 1),
                    c = e.angle / u,
                    h = e.startAngle + c * (a / 2);for (t = 0; t < l; t++) {
                    n = e.clone(), n.startAngle = h, n.angle = c, o[t].sector && (n.r = o[t].sector.r), o[t].reflow(n), o[t].sector = n, h += c + c * s;
                }
            } }), u = I.extend({ reflow: function reflow(e) {
                var n,
                    t,
                    i = this,
                    r = i.options.isReversed,
                    o = i.children,
                    a = o.length,
                    s = r ? a - 1 : 0,
                    l = r ? -1 : 1;for (i.box = new U(), t = s; t >= 0 && t < a; t += l) {
                    n = o[t].sector, n.startAngle = e.startAngle, n.angle = e.angle;
                }
            } }), c = D.extend({ init: function init(e, n) {
                D.fn.init.call(this, e, null, n);
            }, options: { overlay: { gradient: null }, labels: { distance: 10 } } }), h = R.extend({ pointType: function pointType() {
                return c;
            }, clusterType: function clusterType() {
                return l;
            }, stackType: function stackType() {
                return u;
            }, categorySlot: function categorySlot(e, n) {
                return e.getSlot(n);
            }, pointSlot: function pointSlot(e, n) {
                var t = e.clone(),
                    i = e.c.y;return t.r = i - n.y1, t.ir = i - n.y2, t;
            }, reflow: N.fn.reflow, reflowPoint: function reflowPoint(e, n) {
                e.sector = n, e.reflow();
            }, options: { clip: !1, animation: { type: "pie" } }, createAnimation: function createAnimation() {
                this.options.animation.center = this.box.toRect().center(), R.fn.createAnimation.call(this);
            } }), d = F.extend({ options: { clip: !1 }, pointSlot: function pointSlot(e, n) {
                var t = e.c.y - n.y1,
                    i = W.onCircle(e.c, e.middle(), t);return new U(i.x, i.y, i.x, i.y);
            }, createSegment: function createSegment(e, n, t) {
                var i,
                    r,
                    o = n.style;return r = o == Ce ? te : X, i = new r(e, n, t), e.length === n.data.length && (i.options.closed = !0), i;
            } }), f = T.extend({ points: function points() {
                return X.fn.points.call(this, this.stackPoints);
            } }), p = ie.extend({ closeFill: e.noop }), g = d.extend({ createSegment: function createSegment(e, n, t, i) {
                var r,
                    o,
                    a = this,
                    s = a.options,
                    l = s.isStacked,
                    u = (n.line || {}).style;return u === Ce ? (o = new p(e, i, l, n, t), o.options.closed = !0) : (l && t > 0 && i && (r = i.linePoints.slice(0).reverse()), e.push(e[0]), o = new f(e, r, n, t)), o;
            }, seriesMissingValues: function seriesMissingValues(e) {
                return e.missingValues || ke;
            } }), m = Z.extend({ pointSlot: function pointSlot(e, n) {
                var t = e.c.y - n.y1,
                    i = W.onCircle(e.c, e.startAngle, t);return new U(i.x, i.y, i.x, i.y);
            }, options: { clip: !1 } }), x = $.extend({ pointSlot: m.fn.pointSlot, options: { clip: !1 } }), v = T.extend({ points: function points() {
                var e = this,
                    n = e.parent,
                    t = n.plotArea,
                    i = t.polarAxis,
                    r = i.box.center(),
                    o = e.stackPoints,
                    a = X.fn.points.call(e, o);return a.unshift([r.x, r.y]), a.push([r.x, r.y]), a;
            } }), A = ie.extend({ closeFill: function closeFill(e) {
                var n = this._polarAxisCenter();e.lineTo(n.x, n.y);
            }, _polarAxisCenter: function _polarAxisCenter() {
                var e = this.parent,
                    n = e.plotArea,
                    t = n.polarAxis,
                    i = t.box.center();return i;
            }, strokeSegments: function strokeSegments() {
                var e,
                    n,
                    t,
                    i = this._strokeSegments;return i || (e = this._polarAxisCenter(), n = new E(!1), t = X.fn.points.call(this), t.push(e), i = this._strokeSegments = n.process(t), i.pop()), i;
            } }), y = x.extend({ createSegment: function createSegment(e, n, t) {
                var i,
                    r = (n.line || {}).style;return i = r == Ce ? new A(e, null, !1, n, t) : new v(e, [], n, t);
            }, createMissingValue: function createMissingValue(e, n) {
                var t;return M.hasValue(e.x) && n != ge && (t = { x: e.x, y: e.y }, n == ke && (t.y = 0)), t;
            }, seriesMissingValues: function seriesMissingValues(e) {
                return e.missingValues || ke;
            }, _hasMissingValuesGap: function _hasMissingValuesGap() {
                var e,
                    n = this.options.series;for (e = 0; e < n.length; e++) {
                    if (this.seriesMissingValues(n[e]) === pe) return !0;
                }
            }, sortPoints: function sortPoints(e) {
                var n, i, r;if (e.sort(t), this._hasMissingValuesGap()) for (r = 0; r < e.length; r++) {
                    i = e[r], i && (n = i.value, M.hasValue(n.y) || this.seriesMissingValues(i.series) !== pe || delete e[r]);
                }return e;
            } }), w = q.extend({ init: function init(e, n) {
                var t = this;t.valueAxisRangeTracker = new V(), q.fn.init.call(t, e, n);
            }, render: function render() {
                var e = this;e.addToLegend(e.series), e.createPolarAxis(), e.createCharts(), e.createValueAxis();
            }, alignAxes: function alignAxes() {
                var e = this.valueAxis,
                    n = e.range(),
                    t = e.options.reverse ? n.max : n.min,
                    i = e.getSlot(t),
                    r = this.polarAxis.getSlot(0).c,
                    o = e.box.translate(r.x - i.x1, r.y - i.y1);e.reflow(o);
            }, createValueAxis: function createValueAxis() {
                var e,
                    n,
                    t,
                    i,
                    r = this,
                    s = r.valueAxisRangeTracker,
                    l = s.query(),
                    u = r.valueAxisOptions({ roundToMajorUnit: !1, zIndex: -1 });u.type === me ? (t = a, i = { min: .1, max: 1 }) : (t = o, i = { min: 0, max: 1 }), e = s.query(name) || l || i, e && l && (e.min = L.min(e.min, l.min), e.max = L.max(e.max, l.max)), n = new t(e.min, e.max, u), r.valueAxis = n, r.appendAxis(n);
            }, reflowAxes: function reflowAxes() {
                var e,
                    n = this,
                    t = n.options.plotArea,
                    i = n.valueAxis,
                    r = n.polarAxis,
                    o = n.box,
                    a = L.min(o.width(), o.height()) * de,
                    s = oe(t.padding || {}, a),
                    l = o.clone().unpad(s),
                    u = l.clone().shrink(0, l.height() / 2);r.reflow(l), i.reflow(u), e = i.lineBox().height() - i.box.height(), i.reflow(i.box.unpad({ top: e })), n.axisBox = l, n.alignAxes(l);
            }, backgroundBox: function backgroundBox() {
                return this.box;
            } }), b = w.extend({ options: { categoryAxis: { categories: [] }, valueAxis: {} }, createPolarAxis: function createPolarAxis() {
                var e,
                    n = this;e = new Pe(n.options.categoryAxis), n.polarAxis = e, n.categoryAxis = e, n.appendAxis(e), n.aggregateCategories();
            }, valueAxisOptions: function valueAxisOptions(e) {
                var n = this;return n._hasBarCharts && k(e, { majorGridLines: { type: ue }, minorGridLines: { type: ue } }), n._isStacked100 && k(e, { roundToMajorUnit: !1, labels: { format: "P0" } }), k(e, n.options.valueAxis);
            }, appendChart: z.fn.appendChart, aggregateSeries: z.fn.aggregateSeries, aggregateCategories: function aggregateCategories() {
                z.fn.aggregateCategories.call(this, this.panes);
            }, filterSeries: function filterSeries(e) {
                return e;
            }, createCharts: function createCharts() {
                var e = this,
                    n = e.filterVisibleSeries(e.series),
                    t = e.panes[0];e.createAreaChart(ae(n, [ye]), t), e.createLineChart(ae(n, [be]), t), e.createBarChart(ae(n, [we]), t);
            }, chartOptions: function chartOptions(e) {
                var n,
                    t,
                    i = { series: e },
                    r = e[0];return r && (n = this.filterVisibleSeries(e), t = r.stack, i.isStacked = t && n.length > 1, i.isStacked100 = t && "100%" === t.type && n.length > 1, i.isStacked100 && (this._isStacked100 = !0)), i;
            }, createAreaChart: function createAreaChart(e, n) {
                if (0 !== e.length) {
                    var t = new g(this, this.chartOptions(e));this.appendChart(t, n);
                }
            }, createLineChart: function createLineChart(e, n) {
                if (0 !== e.length) {
                    var t = new d(this, this.chartOptions(e));this.appendChart(t, n);
                }
            }, createBarChart: function createBarChart(e, n) {
                var t, i, r;0 !== e.length && (t = e[0], i = this.chartOptions(e), i.gap = t.gap, i.spacing = t.spacing, r = new h(this, i), this.appendChart(r, n), this._hasBarCharts = !0);
            }, seriesCategoryAxis: function seriesCategoryAxis() {
                return this.categoryAxis;
            }, _dispatchEvent: function _dispatchEvent(e, n, t) {
                var i,
                    r,
                    o = this,
                    a = e._eventCoordinates(n),
                    s = new W(a.x, a.y);i = o.categoryAxis.getCategory(s), r = o.valueAxis.getValue(s), null !== i && null !== r && e.trigger(t, { element: re(n), category: i, value: r });
            }, createCrosshairs: e.noop }), k(b.fn, Q), C = w.extend({ options: { xAxis: {}, yAxis: {} }, createPolarAxis: function createPolarAxis() {
                var e,
                    n = this;e = new s(n.options.xAxis), n.polarAxis = e, n.axisX = e, n.appendAxis(e);
            }, valueAxisOptions: function valueAxisOptions(e) {
                var n = this;return k(e, { majorGridLines: { type: ue }, minorGridLines: { type: ue } }, n.options.yAxis);
            }, createValueAxis: function createValueAxis() {
                var e = this;w.fn.createValueAxis.call(e), e.axisY = e.valueAxis;
            }, appendChart: function appendChart(e, n) {
                var t = this;t.valueAxisRangeTracker.update(e.yAxisRanges), q.fn.appendChart.call(t, e, n);
            }, createCharts: function createCharts() {
                var e = this,
                    n = e.filterVisibleSeries(e.series),
                    t = e.panes[0];e.createLineChart(ae(n, [ve]), t), e.createScatterChart(ae(n, [Ae]), t), e.createAreaChart(ae(n, [xe]), t);
            }, createLineChart: function createLineChart(e, n) {
                if (0 !== e.length) {
                    var t = this,
                        i = new x(t, { series: e });t.appendChart(i, n);
                }
            }, createScatterChart: function createScatterChart(e, n) {
                if (0 !== e.length) {
                    var t = this,
                        i = new m(t, { series: e });t.appendChart(i, n);
                }
            }, createAreaChart: function createAreaChart(e, n) {
                if (0 !== e.length) {
                    var t = this,
                        i = new y(t, { series: e });t.appendChart(i, n);
                }
            }, _dispatchEvent: function _dispatchEvent(e, n, t) {
                var i,
                    r,
                    o = this,
                    a = e._eventCoordinates(n),
                    s = new W(a.x, a.y);i = o.axisX.getValue(s), r = o.axisY.getValue(s), null !== i && null !== r && e.trigger(t, { element: re(n), x: i, y: r });
            }, createCrosshairs: e.noop }), k(C.fn, Q), H.current.register(C, _e), H.current.register(b, je), ee.current.register(_e, [Le, Se], ["color"]), ee.current.register(je, ["value"], ["color"]), M.DefaultAggregates.current.register(je, { value: "max", color: "first" }), k(M, { PolarAreaChart: y, PolarAxis: s, PolarLineChart: x, PolarPlotArea: C, RadarAreaChart: g, RadarBarChart: h, RadarCategoryAxis: Pe, RadarClusterLayout: l, RadarLineChart: d, RadarNumericAxis: o, RadarPlotArea: b, SplinePolarAreaSegment: A, SplineRadarAreaSegment: p, RadarStackLayout: u });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
});;!function (e, define) {
    define("util/main.min", ["kendo.core.min"], e);
}(function () {
    return function () {
        function e(e) {
            return (typeof e === "undefined" ? "undefined" : _typeof(e)) !== E;
        }function n(e, n) {
            var i = t(n);return F.round(e * i) / i;
        }function t(e) {
            return e ? F.pow(10, e) : 1;
        }function i(e, n, t) {
            return F.max(F.min(e, t), n);
        }function r(e) {
            return e * V;
        }function o(e) {
            return e / V;
        }function a(e) {
            return "number" == typeof e && !isNaN(e);
        }function s(n, t) {
            return e(n) ? n : t;
        }function l(e) {
            return e * e;
        }function u(e) {
            var n,
                t = [];for (n in e) {
                t.push(n + e[n]);
            }return t.sort().join("");
        }function c(e) {
            var n,
                t = 2166136261;for (n = 0; n < e.length; ++n) {
                t += (t << 1) + (t << 4) + (t << 7) + (t << 8) + (t << 24), t ^= e.charCodeAt(n);
            }return t >>> 0;
        }function h(e) {
            return c(u(e));
        }function d(e) {
            var n,
                t = e.length,
                i = j,
                r = H;for (n = 0; n < t; n++) {
                r = F.max(r, e[n]), i = F.min(i, e[n]);
            }return { min: i, max: r };
        }function f(e) {
            return d(e).min;
        }function p(e) {
            return d(e).max;
        }function g(e) {
            return v(e).min;
        }function m(e) {
            return v(e).max;
        }function v(e) {
            var n,
                t,
                i,
                r = j,
                o = H;for (n = 0, t = e.length; n < t; n++) {
                i = e[n], null !== i && isFinite(i) && (r = F.min(r, i), o = F.max(o, i));
            }return { min: r === j ? void 0 : r, max: o === H ? void 0 : o };
        }function y(e) {
            if (e) return e[e.length - 1];
        }function w(e, n) {
            return e.push.apply(e, n), e;
        }function x(e) {
            return L.template(e, { useWithBlock: !1, paramName: "d" });
        }function b(n, t) {
            return e(t) && null !== t ? " " + n + "='" + t + "' " : "";
        }function _(e) {
            var n,
                t = "";for (n = 0; n < e.length; n++) {
                t += b(e[n][0], e[n][1]);
            }return t;
        }function k(n) {
            var t,
                i,
                r = "";for (t = 0; t < n.length; t++) {
                i = n[t][1], e(i) && (r += n[t][0] + ":" + i + ";");
            }if ("" !== r) return r;
        }function C(e) {
            return "string" != typeof e && (e += "px"), e;
        }function A(e) {
            var n,
                t,
                i = [];if (e) for (n = L.toHyphens(e).split("-"), t = 0; t < n.length; t++) {
                i.push("k-pos-" + n[t]);
            }return i.join(" ");
        }function P(n) {
            return "" === n || null === n || "none" === n || "transparent" === n || !e(n);
        }function M(e) {
            for (var n = { 1: "i", 10: "x", 100: "c", 2: "ii", 20: "xx", 200: "cc", 3: "iii", 30: "xxx", 300: "ccc", 4: "iv", 40: "xl", 400: "cd", 5: "v", 50: "l", 500: "d", 6: "vi", 60: "lx", 600: "dc", 7: "vii", 70: "lxx", 700: "dcc", 8: "viii", 80: "lxxx", 800: "dccc", 9: "ix", 90: "xc", 900: "cm", 1e3: "m" }, t = [1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], i = ""; e > 0;) {
                e < t[0] ? t.shift() : (i += n[t[0]], e -= t[0]);
            }return i;
        }function S(e) {
            var n, t, i, r, o;for (e = e.toLowerCase(), n = { i: 1, v: 5, x: 10, l: 50, c: 100, d: 500, m: 1e3 }, t = 0, i = 0, r = 0; r < e.length; ++r) {
                if (o = n[e.charAt(r)], !o) return null;t += o, o > i && (t -= 2 * i), i = o;
            }return t;
        }function O(e) {
            var n = Object.create(null);return function () {
                var t,
                    i = "";for (t = arguments.length; --t >= 0;) {
                    i += ":" + arguments[t];
                }return i in n ? n[i] : n[i] = e.apply(this, arguments);
            };
        }function I(e) {
            for (var n, t, i = [], r = 0, o = e.length; r < o;) {
                n = e.charCodeAt(r++), n >= 55296 && n <= 56319 && r < o ? (t = e.charCodeAt(r++), 56320 == (64512 & t) ? i.push(((1023 & n) << 10) + (1023 & t) + 65536) : (i.push(n), r--)) : i.push(n);
            }return i;
        }function N(e) {
            return e.map(function (e) {
                var n = "";return e > 65535 && (e -= 65536, n += String.fromCharCode(e >>> 10 & 1023 | 55296), e = 56320 | 1023 & e), n += String.fromCharCode(e);
            }).join("");
        }function z(e, n) {
            function t(e, t) {
                for (var i = [], r = 0, o = 0, a = 0; r < e.length && o < t.length;) {
                    n(e[r], t[o]) <= 0 ? i[a++] = e[r++] : i[a++] = t[o++];
                }return r < e.length && i.push.apply(i, e.slice(r)), o < t.length && i.push.apply(i, t.slice(o)), i;
            }return e.length < 2 ? e.slice() : function i(e) {
                var n, r, o;return e.length <= 1 ? e : (n = Math.floor(e.length / 2), r = e.slice(0, n), o = e.slice(n), r = i(r), o = i(o), t(r, o));
            }(e);
        }var F = Math,
            L = window.kendo,
            T = L.deepExtend,
            V = F.PI / 180,
            j = Number.MAX_VALUE,
            H = -Number.MAX_VALUE,
            E = "undefined",
            R = Date.now;R || (R = function R() {
            return new Date().getTime();
        }), T(L, { util: { MAX_NUM: j, MIN_NUM: H, append: w, arrayLimits: d, arrayMin: f, arrayMax: p, defined: e, deg: o, hashKey: c, hashObject: h, isNumber: a, isTransparent: P, last: y, limitValue: i, now: R, objectKey: u, round: n, rad: r, renderAttr: b, renderAllAttr: _, renderPos: A, renderSize: C, renderStyle: k, renderTemplate: x, sparseArrayLimits: v, sparseArrayMin: g, sparseArrayMax: m, sqr: l, valueOrDefault: s, romanToArabic: S, arabicToRoman: M, memoize: O, ucs2encode: N, ucs2decode: I, mergeSort: z } }), L.drawing.util = L.util, L.dataviz.util = L.util;
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("util/text-metrics.min", ["kendo.core.min", "util/main.min"], e);
}(function () {
    !function (e) {
        function n() {
            return { width: 0, height: 0, baseline: 0 };
        }function t(e, n, t) {
            return h.current.measure(e, n, t);
        }function i(e, n) {
            var t = [];if (e.length > 0 && document.fonts) {
                try {
                    t = e.map(function (e) {
                        return document.fonts.load(e);
                    });
                } catch (i) {
                    o.logToConsole(i);
                }Promise.all(t).then(n, n);
            } else n();
        }var r = document,
            o = window.kendo,
            a = o.Class,
            s = o.util,
            l = s.defined,
            u = a.extend({ init: function init(e) {
                this._size = e, this._length = 0, this._map = {};
            }, put: function put(e, n) {
                var t = this,
                    i = t._map,
                    r = { key: e, value: n };i[e] = r, t._head ? (t._tail.newer = r, r.older = t._tail, t._tail = r) : t._head = t._tail = r, t._length >= t._size ? (i[t._head.key] = null, t._head = t._head.newer, t._head.older = null) : t._length++;
            }, get: function get(e) {
                var n = this,
                    t = n._map[e];if (t) return t === n._head && t !== n._tail && (n._head = t.newer, n._head.older = null), t !== n._tail && (t.older && (t.older.newer = t.newer, t.newer.older = t.older), t.older = n._tail, t.newer = null, n._tail.newer = t, n._tail = t), t.value;
            } }),
            c = e("<div style='position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;padding: 0 !important; margin: 0 !important; border: 0 !important;line-height: normal !important; visibility: hidden !important; white-space: nowrap!important;' />")[0],
            h = a.extend({ init: function init(e) {
                this._cache = new u(1e3), this._initOptions(e);
            }, options: { baselineMarkerSize: 1 }, measure: function measure(t, i, o) {
                var a, u, h, d, f, p, g, m;if (!t) return n();if (a = s.objectKey(i), u = s.hashKey(t + a), h = this._cache.get(u), h) return h;d = n(), f = o ? o : c, p = this._baselineMarker().cloneNode(!1);for (g in i) {
                    m = i[g], l(m) && (f.style[g] = m);
                }return e(f).text(t), f.appendChild(p), r.body.appendChild(f), (t + "").length && (d.width = f.offsetWidth - this.options.baselineMarkerSize, d.height = f.offsetHeight, d.baseline = p.offsetTop + this.options.baselineMarkerSize), d.width > 0 && d.height > 0 && this._cache.put(u, d), f.parentNode.removeChild(f), d;
            }, _baselineMarker: function _baselineMarker() {
                return e("<div class='k-baseline-marker' style='display: inline-block; vertical-align: baseline;width: " + this.options.baselineMarkerSize + "px; height: " + this.options.baselineMarkerSize + "px;overflow: hidden;' />")[0];
            } });h.current = new h(), o.util.TextMetrics = h, o.util.LRUCache = u, o.util.loadFonts = i, o.util.measureText = t;
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("util/base64.min", ["util/main.min"], e);
}(function () {
    return function () {
        function e(e) {
            var t,
                i,
                r,
                a,
                s,
                l,
                u,
                c = "",
                h = 0;for (e = n(e); h < e.length;) {
                t = e.charCodeAt(h++), i = e.charCodeAt(h++), r = e.charCodeAt(h++), a = t >> 2, s = (3 & t) << 4 | i >> 4, l = (15 & i) << 2 | r >> 6, u = 63 & r, isNaN(i) ? l = u = 64 : isNaN(r) && (u = 64), c = c + o.charAt(a) + o.charAt(s) + o.charAt(l) + o.charAt(u);
            }return c;
        }function n(e) {
            var n,
                t,
                i = "";for (n = 0; n < e.length; n++) {
                t = e.charCodeAt(n), t < 128 ? i += r(t) : t < 2048 ? (i += r(192 | t >>> 6), i += r(128 | 63 & t)) : t < 65536 && (i += r(224 | t >>> 12), i += r(128 | t >>> 6 & 63), i += r(128 | 63 & t));
            }return i;
        }var t = window.kendo,
            i = t.deepExtend,
            r = String.fromCharCode,
            o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";i(t.util, { encodeBase64: e, encodeUTF8: n });
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("mixins/observers.min", ["kendo.core.min"], e);
}(function () {
    return function (e) {
        var n = Math,
            t = window.kendo,
            i = t.deepExtend,
            r = e.inArray,
            o = { observers: function observers() {
                return this._observers = this._observers || [];
            }, addObserver: function addObserver(e) {
                return this._observers ? this._observers.push(e) : this._observers = [e], this;
            }, removeObserver: function removeObserver(e) {
                var n = this.observers(),
                    t = r(e, n);return t != -1 && n.splice(t, 1), this;
            }, trigger: function trigger(e, n) {
                var t,
                    i,
                    r = this._observers;if (r && !this._suspended) for (i = 0; i < r.length; i++) {
                    t = r[i], t[e] && t[e](n);
                }return this;
            }, optionsChange: function optionsChange(e) {
                e = e || {}, e.element = this, this.trigger("optionsChange", e);
            }, geometryChange: function geometryChange() {
                this.trigger("geometryChange", { element: this });
            }, suspend: function suspend() {
                return this._suspended = (this._suspended || 0) + 1, this;
            }, resume: function resume() {
                return this._suspended = n.max((this._suspended || 0) - 1, 0), this;
            }, _observerField: function _observerField(e, n) {
                this[e] && this[e].removeObserver(this), this[e] = n, n.addObserver(this);
            } };i(t, { mixins: { ObserversMixin: o } });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("kendo.dataviz.chart.funnel.min", ["kendo.dataviz.chart.min", "kendo.drawing.min"], e);
}(function () {
    return function (e, n) {
        var t,
            i = window.kendo,
            r = i.deepExtend,
            o = e.extend,
            a = i.isFunction,
            s = i.template,
            l = i.util,
            u = l.append,
            c = i.drawing,
            h = i.geometry,
            d = i.dataviz,
            f = i.drawing.Color,
            p = d.ChartElement,
            g = d.PieChartMixin,
            m = d.PlotAreaBase,
            v = d.PlotAreaFactory,
            y = d.Point2D,
            w = d.Box2D,
            x = d.SeriesBinder,
            b = d.TextBox,
            _ = d.autoFormat,
            k = d.evalOptions,
            C = l.limitValue,
            A = d.seriesTotal,
            P = "category",
            M = "color",
            S = "funnel",
            O = "value",
            I = "black",
            N = "white",
            z = m.extend({ render: function render() {
                var e = this,
                    n = e.series;e.createFunnelChart(n);
            }, createFunnelChart: function createFunnelChart(e) {
                var n = this,
                    t = e[0],
                    i = new F(n, { series: e, legend: n.options.legend, neckRatio: t.neckRatio, dynamicHeight: t.dynamicHeight, dynamicSlope: t.dynamicSlope, segmentSpacing: t.segmentSpacing, highlight: t.highlight });n.appendChart(i);
            }, appendChart: function appendChart(e, n) {
                m.fn.appendChart.call(this, e, n), u(this.options.legend.items, e.legendItems);
            } }),
            F = p.extend({ init: function init(e, n) {
                var t = this;p.fn.init.call(t, n), t.plotArea = e, t.points = [], t.labels = [], t.legendItems = [], t.render();
            }, options: { neckRatio: .3, width: 300, dynamicSlope: !1, dynamicHeight: !0, segmentSpacing: 0, labels: { visible: !1, align: "center", position: "center" } }, formatPointValue: function formatPointValue(e, n) {
                return _(n, e.value);
            }, render: function render() {
                var e,
                    t,
                    i,
                    o,
                    s,
                    l,
                    u,
                    c = this,
                    h = c.options,
                    d = c.plotArea.options.seriesColors || [],
                    f = d.length,
                    p = h.series[0],
                    g = p.data;if (g) for (i = A(p), s = 0; s < g.length; s++) {
                    e = x.current.bindPoint(p, s), o = e.valueFields.value, null !== o && o !== n && (t = e.fields, a(p.color) || (p.color = t.color || d[s % f]), t = r({ index: s, owner: c, series: p, category: t.category, dataItem: g[s], percentage: Math.abs(o) / i, visibleInLegend: t.visibleInLegend, visible: t.visible }, t), l = c.createSegment(o, t), u = c.createLabel(o, t), l && u && l.append(u));
                }
            }, evalSegmentOptions: function evalSegmentOptions(e, n, t) {
                var i = t.series;k(e, { value: n, series: i, dataItem: t.dataItem, index: t.index }, { defaults: i._defaults, excluded: ["data", "toggle", "visual"] });
            }, createSegment: function createSegment(e, n) {
                var i,
                    a = this,
                    s = r({}, n.series);if (a.evalSegmentOptions(s, e, n), a.createLegendItem(e, s, n), n.visible !== !1) return i = new t(e, s, n), o(i, n), a.append(i), a.points.push(i), i;
            }, createLabel: function createLabel(e, n) {
                var t,
                    i,
                    o,
                    a = this,
                    l = n.series,
                    u = n.dataItem,
                    c = r({}, a.options.labels, l.labels),
                    h = e;if (c.visible) return c.template ? (i = s(c.template), h = i({ dataItem: u, value: e, percentage: n.percentage, category: n.category, series: l })) : c.format && (h = _(c.format, h)), c.color || "center" !== c.align || (o = new f(l.color).percBrightness(), c.color = o > 180 ? I : N), a.evalSegmentOptions(c, e, n), t = new b(h, r({ vAlign: c.position }, c)), a.labels.push(t), t;
            }, labelPadding: function labelPadding() {
                var e,
                    n,
                    t,
                    i,
                    r = this.labels,
                    o = { left: 0, right: 0 };for (i = 0; i < r.length; i++) {
                    e = r[i], n = e.options.align, "center" !== n && (t = r[i].box.width(), "left" === n ? o.left = Math.max(o.left, t) : o.right = Math.max(o.right, t));
                }return o;
            }, reflow: function reflow(n) {
                var t,
                    i,
                    r,
                    o,
                    a,
                    s,
                    l,
                    u,
                    c,
                    d,
                    f,
                    p,
                    g = this,
                    m = g.options,
                    v = g.points,
                    y = v.length,
                    w = m.neckRatio <= 1,
                    x = n.clone().unpad(g.labelPadding()),
                    b = x.width(),
                    _ = 0,
                    k = w ? 0 : (b - b / m.neckRatio) / 2,
                    A = m.segmentSpacing,
                    P = m.dynamicSlope,
                    M = x.height() - A * (y - 1),
                    S = w ? m.neckRatio * b : b;if (y) {
                    if (P) for (l = v[0], u = l, e.each(v, function (e, n) {
                        n.percentage > u.percentage && (u = n);
                    }), r = l.percentage / u.percentage * b, k = (b - r) / 2, t = 0; t < y; t++) {
                        a = v[t].percentage, c = v[t + 1], d = c ? c.percentage : a, o = v[t].points = [], i = m.dynamicHeight ? M * a : M / y, s = a ? (b - r * (d / a)) / 2 : d ? 0 : b / 2, s = C(s, 0, b), o.push(new h.Point(x.x1 + k, x.y1 + _)), o.push(new h.Point(x.x1 + b - k, x.y1 + _)), o.push(new h.Point(x.x1 + b - s, x.y1 + i + _)), o.push(new h.Point(x.x1 + s, x.y1 + i + _)), k = s, _ += i + A, r = C(b - 2 * s, 0, b);
                    } else for (f = w ? b : b - 2 * k, p = (f - S) / 2, t = 0; t < y; t++) {
                        o = v[t].points = [], a = v[t].percentage, s = m.dynamicHeight ? p * a : p / y, i = m.dynamicHeight ? M * a : M / y, o.push(new h.Point(x.x1 + k, x.y1 + _)), o.push(new h.Point(x.x1 + b - k, x.y1 + _)), o.push(new h.Point(x.x1 + b - k - s, x.y1 + i + _)), o.push(new h.Point(x.x1 + k + s, x.y1 + i + _)), k += s, _ += i + A;
                    }for (t = 0; t < y; t++) {
                        v[t].reflow(n);
                    }
                }
            } });r(F.fn, g), t = p.extend({ init: function init(e, n, t) {
                var i = this;p.fn.init.call(i, n), i.value = e, i.options.index = t.index;
            }, options: { color: N, border: { width: 1 } }, reflow: function reflow(e) {
                var n = this,
                    t = n.points,
                    i = n.children[0];n.box = new w(t[0].x, t[0].y, t[1].x, t[2].y), i && i.reflow(new w(e.x1, t[0].y, e.x2, t[2].y));
            }, createVisual: function createVisual() {
                var e,
                    n = this,
                    t = n.options;p.fn.createVisual.call(this), e = t.visual ? t.visual({ category: n.category, dataItem: n.dataItem, value: n.value, series: n.series, percentage: n.percentage, points: n.points, options: t, createVisual: function createVisual() {
                        return n.createPath();
                    } }) : n.createPath(), e && this.visual.append(e);
            }, createPath: function createPath() {
                var e = this.options,
                    n = e.border,
                    t = c.Path.fromPoints(this.points, { fill: { color: e.color, opacity: e.opacity }, stroke: { color: n.color, opacity: n.opacity, width: n.width } }).close();return t;
            }, createHighlight: function createHighlight(e) {
                return c.Path.fromPoints(this.points, e);
            }, highlightVisual: function highlightVisual() {
                return this.visual.children[0];
            }, highlightVisualArgs: function highlightVisualArgs() {
                var e = c.Path.fromPoints(this.points).close();return { options: this.options, path: e };
            }, highlightOverlay: function highlightOverlay(e, n) {
                var t,
                    i,
                    r,
                    a = this.options,
                    s = a.highlight || {};if (s.visible !== !1) return t = s.border || {}, i = o({}, n, { fill: s.color, stroke: t.color, strokeOpacity: t.opacity, strokeWidth: t.width, fillOpacity: s.opacity }), r = e.createPolyline(this.points, !0, i);
            }, tooltipAnchor: function tooltipAnchor(e) {
                var n = this.box;return new y(n.center().x - e / 2, n.y1);
            }, formatValue: function formatValue(e) {
                var n = this;return n.owner.formatPointValue(n, e);
            } }), r(t.fn, d.PointEventsMixin), v.current.register(z, [S]), x.current.register([S], [O], [P, M, "visibleInLegend", "visible"]), r(d, { FunnelChart: F, FunnelSegment: t });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
});;!function (t, define) {
    define("kendo.fx.min", ["kendo.core.min"], t);
}(function () {
    return function (t, e) {
        function i(t) {
            return parseInt(t, 10);
        }function r(t, e) {
            return i(t.css(e));
        }function n(t) {
            var e,
                i = [];for (e in t) {
                i.push(e);
            }return i;
        }function s(t) {
            for (var e in t) {
                L.indexOf(e) != -1 && Q.indexOf(e) == -1 && delete t[e];
            }return t;
        }function o(t, e) {
            var i,
                r,
                n,
                s,
                o = [],
                a = {};for (r in e) {
                i = r.toLowerCase(), s = H && L.indexOf(i) != -1, !E.hasHW3D && s && Q.indexOf(i) == -1 ? delete e[r] : (n = e[r], s ? o.push(r + "(" + n + ")") : a[r] = n);
            }return o.length && (a[at] = o.join(" ")), a;
        }function a(t, e) {
            var r, n, s;return H ? (r = t.css(at), r == J ? "scale" == e ? 1 : 0 : (n = r.match(RegExp(e + "\\s*\\(([\\d\\w\\.]+)")), s = 0, n ? s = i(n[1]) : (n = r.match(S) || [0, 0, 0, 0, 0], e = e.toLowerCase(), V.test(e) ? s = parseFloat(n[3] / n[2]) : "translatey" == e ? s = parseFloat(n[4] / n[2]) : "scale" == e ? s = parseFloat(n[2]) : "rotate" == e && (s = parseFloat(Math.atan2(n[2], n[1])))), s)) : parseFloat(t.css(e));
        }function c(t) {
            return t.charAt(0).toUpperCase() + t.substring(1);
        }function l(t, e) {
            var i = h.extend(e),
                r = i.prototype.directions;T[c(t)] = i, T.Element.prototype[t] = function (t, e, r, n) {
                return new i(this.element, t, e, r, n);
            }, N(r, function (e, r) {
                T.Element.prototype[t + c(r)] = function (t, e, n) {
                    return new i(this.element, r, t, e, n);
                };
            });
        }function d(t, i, r, n) {
            l(t, { directions: v, startValue: function startValue(t) {
                    return this._startValue = t, this;
                }, endValue: function endValue(t) {
                    return this._endValue = t, this;
                }, shouldHide: function shouldHide() {
                    return this._shouldHide;
                }, prepare: function prepare(t, s) {
                    var o,
                        a,
                        c = this,
                        l = "out" === this._direction,
                        d = c.element.data(i),
                        u = !(isNaN(d) || d == r);o = u ? d : e !== this._startValue ? this._startValue : l ? r : n, a = e !== this._endValue ? this._endValue : l ? n : r, this._reverse ? (t[i] = a, s[i] = o) : (t[i] = o, s[i] = a), c._shouldHide = s[i] === n;
                } });
        }function u(t, e) {
            var i = C.directions[e].vertical,
                r = t[i ? Y : X]() / 2 + "px";return _[e].replace("$size", r);
        }var f,
            p,
            h,
            m,
            v,
            x,
            _,
            g,
            y,
            k,
            b,
            w,
            C = window.kendo,
            T = C.effects,
            N = t.each,
            P = t.extend,
            z = t.proxy,
            E = C.support,
            R = E.browser,
            H = E.transforms,
            D = E.transitions,
            O = { scale: 0, scalex: 0, scaley: 0, scale3d: 0 },
            F = { translate: 0, translatex: 0, translatey: 0, translate3d: 0 },
            I = e !== document.documentElement.style.zoom && !H,
            S = /matrix3?d?\s*\(.*,\s*([\d\.\-]+)\w*?,\s*([\d\.\-]+)\w*?,\s*([\d\.\-]+)\w*?,\s*([\d\.\-]+)\w*?/i,
            A = /^(-?[\d\.\-]+)?[\w\s]*,?\s*(-?[\d\.\-]+)?[\w\s]*/i,
            V = /translatex?$/i,
            q = /(zoom|fade|expand)(\w+)/,
            M = /(zoom|fade|expand)/,
            $ = /[xy]$/i,
            L = ["perspective", "rotate", "rotatex", "rotatey", "rotatez", "rotate3d", "scale", "scalex", "scaley", "scalez", "scale3d", "skew", "skewx", "skewy", "translate", "translatex", "translatey", "translatez", "translate3d", "matrix", "matrix3d"],
            Q = ["rotate", "scale", "scalex", "scaley", "skew", "skewx", "skewy", "translate", "translatex", "translatey", "matrix"],
            W = { rotate: "deg", scale: "", skew: "px", translate: "px" },
            j = H.css,
            B = Math.round,
            U = "",
            G = "px",
            J = "none",
            K = "auto",
            X = "width",
            Y = "height",
            Z = "hidden",
            tt = "origin",
            et = "abortId",
            it = "overflow",
            rt = "translate",
            nt = "position",
            st = "completeCallback",
            ot = j + "transition",
            at = j + "transform",
            ct = j + "backface-visibility",
            lt = j + "perspective",
            dt = "1500px",
            ut = "perspective(" + dt + ")",
            ft = { left: { reverse: "right", property: "left", transition: "translatex", vertical: !1, modifier: -1 }, right: { reverse: "left", property: "left", transition: "translatex", vertical: !1, modifier: 1 }, down: { reverse: "up", property: "top", transition: "translatey", vertical: !0, modifier: 1 }, up: { reverse: "down", property: "top", transition: "translatey", vertical: !0, modifier: -1 }, top: { reverse: "bottom" }, bottom: { reverse: "top" }, "in": { reverse: "out", modifier: -1 }, out: { reverse: "in", modifier: 1 }, vertical: { reverse: "vertical" }, horizontal: { reverse: "horizontal" } };C.directions = ft, P(t.fn, { kendoStop: function kendoStop(t, e) {
                return D ? T.stopQueue(this, t || !1, e || !1) : this.stop(t, e);
            } }), H && !D && (N(Q, function (i, r) {
            t.fn[r] = function (i) {
                if (e === i) return a(this, r);var n = t(this)[0],
                    s = r + "(" + i + W[r.replace($, "")] + ")";return n.style.cssText.indexOf(at) == -1 ? t(this).css(at, s) : n.style.cssText = n.style.cssText.replace(RegExp(r + "\\(.*?\\)", "i"), s), this;
            }, t.fx.step[r] = function (e) {
                t(e.elem)[r](e.now);
            };
        }), f = t.fx.prototype.cur, t.fx.prototype.cur = function () {
            return Q.indexOf(this.prop) != -1 ? parseFloat(t(this.elem)[this.prop]()) : f.apply(this, arguments);
        }), C.toggleClass = function (t, e, i, r) {
            return e && (e = e.split(" "), D && (i = P({ exclusive: "all", duration: 400, ease: "ease-out" }, i), t.css(ot, i.exclusive + " " + i.duration + "ms " + i.ease), setTimeout(function () {
                t.css(ot, "").css(Y);
            }, i.duration)), N(e, function (e, i) {
                t.toggleClass(i, r);
            })), t;
        }, C.parseEffects = function (t, e) {
            var i = {};return "string" == typeof t ? N(t.split(" "), function (t, r) {
                var n = !M.test(r),
                    s = r.replace(q, function (t, e, i) {
                    return e + ":" + i.toLowerCase();
                }),
                    o = s.split(":"),
                    a = o[1],
                    c = {};o.length > 1 && (c.direction = e && n ? ft[a].reverse : a), i[o[0]] = c;
            }) : N(t, function (t) {
                var r = this.direction;r && e && !M.test(t) && (this.direction = ft[r].reverse), i[t] = this;
            }), i;
        }, D && P(T, { transition: function transition(e, i, r) {
                var s,
                    a,
                    c,
                    l,
                    d = 0,
                    u = e.data("keys") || [];r = P({ duration: 200, ease: "ease-out", complete: null, exclusive: "all" }, r), c = !1, l = function l() {
                    c || (c = !0, a && (clearTimeout(a), a = null), e.removeData(et).dequeue().css(ot, "").css(ot), r.complete.call(e));
                }, r.duration = t.fx ? t.fx.speeds[r.duration] || r.duration : r.duration, s = o(e, i), t.merge(u, n(s)), e.data("keys", t.unique(u)).height(), e.css(ot, r.exclusive + " " + r.duration + "ms " + r.ease).css(ot), e.css(s).css(at), D.event && (e.one(D.event, l), 0 !== r.duration && (d = 500)), a = setTimeout(l, r.duration + d), e.data(et, a), e.data(st, l);
            }, stopQueue: function stopQueue(t, e, i) {
                var r,
                    n = t.data("keys"),
                    s = !i && n,
                    o = t.data(st);return s && (r = C.getComputedStyles(t[0], n)), o && o(), s && t.css(r), t.removeData("keys").stop(e);
            } }), p = C.Class.extend({ init: function init(t, e) {
                var i = this;i.element = t, i.effects = [], i.options = e, i.restore = [];
            }, run: function run(e) {
                var i,
                    r,
                    n,
                    a,
                    c,
                    l,
                    d,
                    u = this,
                    f = e.length,
                    p = u.element,
                    h = u.options,
                    m = t.Deferred(),
                    v = {},
                    x = {};for (u.effects = e, m.then(t.proxy(u, "complete")), p.data("animating", !0), r = 0; r < f; r++) {
                    for (i = e[r], i.setReverse(h.reverse), i.setOptions(h), u.addRestoreProperties(i.restore), i.prepare(v, x), c = i.children(), n = 0, l = c.length; n < l; n++) {
                        c[n].duration(h.duration).run();
                    }
                }for (d in h.effects) {
                    P(x, h.effects[d].properties);
                }for (p.is(":visible") || P(v, { display: p.data("olddisplay") || "block" }), H && !h.reset && (a = p.data("targetTransform"), a && (v = P(a, v))), v = o(p, v), H && !D && (v = s(v)), p.css(v).css(at), r = 0; r < f; r++) {
                    e[r].setup();
                }return h.init && h.init(), p.data("targetTransform", x), T.animate(p, x, P({}, h, { complete: m.resolve })), m.promise();
            }, stop: function stop() {
                t(this.element).kendoStop(!0, !0);
            }, addRestoreProperties: function addRestoreProperties(t) {
                for (var e, i = this.element, r = 0, n = t.length; r < n; r++) {
                    e = t[r], this.restore.push(e), i.data(e) || i.data(e, i.css(e));
                }
            }, restoreCallback: function restoreCallback() {
                var t,
                    e,
                    i,
                    r = this.element;for (t = 0, e = this.restore.length; t < e; t++) {
                    i = this.restore[t], r.css(i, r.data(i));
                }
            }, complete: function complete() {
                var e = this,
                    i = 0,
                    r = e.element,
                    n = e.options,
                    s = e.effects,
                    o = s.length;for (r.removeData("animating").dequeue(), n.hide && r.data("olddisplay", r.css("display")).hide(), this.restoreCallback(), I && !H && setTimeout(t.proxy(this, "restoreCallback"), 0); i < o; i++) {
                    s[i].teardown();
                }n.completeCallback && n.completeCallback(r);
            } }), T.promise = function (t, e) {
            var i,
                r,
                n,
                s = [],
                o = new p(t, e),
                a = C.parseEffects(e.effects);e.effects = a;for (n in a) {
                i = T[c(n)], i && (r = new i(t, a[n].direction), s.push(r));
            }s[0] ? o.run(s) : (t.is(":visible") || t.css({ display: t.data("olddisplay") || "block" }).css("display"), e.init && e.init(), t.dequeue(), o.complete());
        }, P(T, { animate: function animate(i, n, o) {
                var a = o.transition !== !1;delete o.transition, D && "transition" in T && a ? T.transition(i, n, o) : H ? i.animate(s(n), { queue: !1, show: !1, hide: !1, duration: o.duration, complete: o.complete }) : i.each(function () {
                    var i = t(this),
                        s = {};N(L, function (t, o) {
                        var a,
                            c,
                            l,
                            d,
                            u,
                            f,
                            p,
                            h = n ? n[o] + " " : null;h && (c = n, o in O && n[o] !== e ? (a = h.match(A), H && P(c, { scale: +a[0] })) : o in F && n[o] !== e && (l = i.css(nt), d = "absolute" == l || "fixed" == l, i.data(rt) || (d ? i.data(rt, { top: r(i, "top") || 0, left: r(i, "left") || 0, bottom: r(i, "bottom"), right: r(i, "right") }) : i.data(rt, { top: r(i, "marginTop") || 0, left: r(i, "marginLeft") || 0 })), u = i.data(rt), a = h.match(A), a && (f = o == rt + "y" ? 0 : +a[1], p = o == rt + "y" ? +a[1] : +a[2], d ? (isNaN(u.right) ? isNaN(f) || P(c, { left: u.left + f }) : isNaN(f) || P(c, { right: u.right - f }), isNaN(u.bottom) ? isNaN(p) || P(c, { top: u.top + p }) : isNaN(p) || P(c, { bottom: u.bottom - p })) : (isNaN(f) || P(c, { marginLeft: u.left + f }), isNaN(p) || P(c, { marginTop: u.top + p })))), !H && "scale" != o && o in c && delete c[o], c && P(s, c));
                    }), R.msie && delete s.scale, i.animate(s, { queue: !1, show: !1, hide: !1, duration: o.duration, complete: o.complete });
                });
            } }), T.animatedPromise = T.promise, h = C.Class.extend({ init: function init(t, e) {
                var i = this;i.element = t, i._direction = e, i.options = {}, i._additionalEffects = [], i.restore || (i.restore = []);
            }, reverse: function reverse() {
                return this._reverse = !0, this.run();
            }, play: function play() {
                return this._reverse = !1, this.run();
            }, add: function add(t) {
                return this._additionalEffects.push(t), this;
            }, direction: function direction(t) {
                return this._direction = t, this;
            }, duration: function duration(t) {
                return this._duration = t, this;
            }, compositeRun: function compositeRun() {
                var t = this,
                    e = new p(t.element, { reverse: t._reverse, duration: t._duration }),
                    i = t._additionalEffects.concat([t]);return e.run(i);
            }, run: function run() {
                if (this._additionalEffects && this._additionalEffects[0]) return this.compositeRun();var e,
                    i,
                    r = this,
                    n = r.element,
                    a = 0,
                    c = r.restore,
                    l = c.length,
                    d = t.Deferred(),
                    u = {},
                    f = {},
                    p = r.children(),
                    h = p.length;for (d.then(t.proxy(r, "_complete")), n.data("animating", !0), a = 0; a < l; a++) {
                    e = c[a], n.data(e) || n.data(e, n.css(e));
                }for (a = 0; a < h; a++) {
                    p[a].duration(r._duration).run();
                }return r.prepare(u, f), n.is(":visible") || P(u, { display: n.data("olddisplay") || "block" }), H && (i = n.data("targetTransform"), i && (u = P(i, u))), u = o(n, u), H && !D && (u = s(u)), n.css(u).css(at), r.setup(), n.data("targetTransform", f), T.animate(n, f, { duration: r._duration, complete: d.resolve }), d.promise();
            }, stop: function stop() {
                var e = 0,
                    i = this.children(),
                    r = i.length;for (e = 0; e < r; e++) {
                    i[e].stop();
                }return t(this.element).kendoStop(!0, !0), this;
            }, restoreCallback: function restoreCallback() {
                var t,
                    e,
                    i,
                    r = this.element;for (t = 0, e = this.restore.length; t < e; t++) {
                    i = this.restore[t], r.css(i, r.data(i));
                }
            }, _complete: function _complete() {
                var e = this,
                    i = e.element;i.removeData("animating").dequeue(), e.restoreCallback(), e.shouldHide() && i.data("olddisplay", i.css("display")).hide(), I && !H && setTimeout(t.proxy(e, "restoreCallback"), 0), e.teardown();
            }, setOptions: function setOptions(t) {
                P(!0, this.options, t);
            }, children: function children() {
                return [];
            }, shouldHide: t.noop, setup: t.noop, prepare: t.noop, teardown: t.noop, directions: [], setReverse: function setReverse(t) {
                return this._reverse = t, this;
            } }), m = ["left", "right", "up", "down"], v = ["in", "out"], l("slideIn", { directions: m, divisor: function divisor(t) {
                return this.options.divisor = t, this;
            }, prepare: function prepare(t, e) {
                var i,
                    r = this,
                    n = r.element,
                    s = C._outerWidth,
                    o = C._outerHeight,
                    a = ft[r._direction],
                    c = -a.modifier * (a.vertical ? o(n) : s(n)),
                    l = c / (r.options && r.options.divisor || 1) + G,
                    d = "0px";r._reverse && (i = t, t = e, e = i), H ? (t[a.transition] = l, e[a.transition] = d) : (t[a.property] = l, e[a.property] = d);
            } }), l("tile", { directions: m, init: function init(t, e, i) {
                h.prototype.init.call(this, t, e), this.options = { previous: i };
            }, previousDivisor: function previousDivisor(t) {
                return this.options.previousDivisor = t, this;
            }, children: function children() {
                var t = this,
                    e = t._reverse,
                    i = t.options.previous,
                    r = t.options.previousDivisor || 1,
                    n = t._direction,
                    s = [C.fx(t.element).slideIn(n).setReverse(e)];return i && s.push(C.fx(i).slideIn(ft[n].reverse).divisor(r).setReverse(!e)), s;
            } }), d("fade", "opacity", 1, 0), d("zoom", "scale", 1, .01), l("slideMargin", { prepare: function prepare(t, e) {
                var i,
                    r = this,
                    n = r.element,
                    s = r.options,
                    o = n.data(tt),
                    a = s.offset,
                    c = r._reverse;c || null !== o || n.data(tt, parseFloat(n.css("margin-" + s.axis))), i = n.data(tt) || 0, e["margin-" + s.axis] = c ? i : i + a;
            } }), l("slideTo", { prepare: function prepare(t, e) {
                var i = this,
                    r = i.element,
                    n = i.options,
                    s = n.offset.split(","),
                    o = i._reverse;H ? (e.translatex = o ? 0 : s[0], e.translatey = o ? 0 : s[1]) : (e.left = o ? 0 : s[0], e.top = o ? 0 : s[1]), r.css("left");
            } }), l("expand", { directions: ["horizontal", "vertical"], restore: [it], prepare: function prepare(t, i) {
                var r = this,
                    n = r.element,
                    s = r.options,
                    o = r._reverse,
                    a = "vertical" === r._direction ? Y : X,
                    c = n[0].style[a],
                    l = n.data(a),
                    d = parseFloat(l || c),
                    u = B(n.css(a, K)[a]());t.overflow = Z, d = s && s.reset ? u || d : d || u, i[a] = (o ? 0 : d) + G, t[a] = (o ? d : 0) + G, l === e && n.data(a, c);
            }, shouldHide: function shouldHide() {
                return this._reverse;
            }, teardown: function teardown() {
                var t = this,
                    e = t.element,
                    i = "vertical" === t._direction ? Y : X,
                    r = e.data(i);r != K && r !== U || setTimeout(function () {
                    e.css(i, K).css(i);
                }, 0);
            } }), x = { position: "absolute", marginLeft: 0, marginTop: 0, scale: 1 }, l("transfer", { init: function init(t, e) {
                this.element = t, this.options = { target: e }, this.restore = [];
            }, setup: function setup() {
                this.element.appendTo(document.body);
            }, prepare: function prepare(t, e) {
                var i = this,
                    r = i.element,
                    n = T.box(r),
                    s = T.box(i.options.target),
                    o = a(r, "scale"),
                    c = T.fillScale(s, n),
                    l = T.transformOrigin(s, n);P(t, x), e.scale = 1, r.css(at, "scale(1)").css(at), r.css(at, "scale(" + o + ")"), t.top = n.top, t.left = n.left, t.transformOrigin = l.x + G + " " + l.y + G, i._reverse ? t.scale = c : e.scale = c;
            } }), _ = { top: "rect(auto auto $size auto)", bottom: "rect($size auto auto auto)", left: "rect(auto $size auto auto)", right: "rect(auto auto auto $size)" }, g = { top: { start: "rotatex(0deg)", end: "rotatex(180deg)" }, bottom: { start: "rotatex(-180deg)", end: "rotatex(0deg)" }, left: { start: "rotatey(0deg)", end: "rotatey(-180deg)" }, right: { start: "rotatey(180deg)", end: "rotatey(0deg)" } }, l("turningPage", { directions: m, init: function init(t, e, i) {
                h.prototype.init.call(this, t, e), this._container = i;
            }, prepare: function prepare(t, e) {
                var i = this,
                    r = i._reverse,
                    n = r ? ft[i._direction].reverse : i._direction,
                    s = g[n];t.zIndex = 1, i._clipInHalf && (t.clip = u(i._container, C.directions[n].reverse)), t[ct] = Z, e[at] = ut + (r ? s.start : s.end), t[at] = ut + (r ? s.end : s.start);
            }, setup: function setup() {
                this._container.append(this.element);
            }, face: function face(t) {
                return this._face = t, this;
            }, shouldHide: function shouldHide() {
                var t = this,
                    e = t._reverse,
                    i = t._face;return e && !i || !e && i;
            }, clipInHalf: function clipInHalf(t) {
                return this._clipInHalf = t, this;
            }, temporary: function temporary() {
                return this.element.addClass("temp-page"), this;
            } }), l("staticPage", { directions: m, init: function init(t, e, i) {
                h.prototype.init.call(this, t, e), this._container = i;
            }, restore: ["clip"], prepare: function prepare(t, e) {
                var i = this,
                    r = i._reverse ? ft[i._direction].reverse : i._direction;t.clip = u(i._container, r), t.opacity = .999, e.opacity = 1;
            }, shouldHide: function shouldHide() {
                var t = this,
                    e = t._reverse,
                    i = t._face;return e && !i || !e && i;
            }, face: function face(t) {
                return this._face = t, this;
            } }), l("pageturn", { directions: ["horizontal", "vertical"], init: function init(t, e, i, r) {
                h.prototype.init.call(this, t, e), this.options = {}, this.options.face = i, this.options.back = r;
            }, children: function children() {
                var t,
                    e = this,
                    i = e.options,
                    r = "horizontal" === e._direction ? "left" : "top",
                    n = C.directions[r].reverse,
                    s = e._reverse,
                    o = i.face.clone(!0).removeAttr("id"),
                    a = i.back.clone(!0).removeAttr("id"),
                    c = e.element;return s && (t = r, r = n, n = t), [C.fx(i.face).staticPage(r, c).face(!0).setReverse(s), C.fx(i.back).staticPage(n, c).setReverse(s), C.fx(o).turningPage(r, c).face(!0).clipInHalf(!0).temporary().setReverse(s), C.fx(a).turningPage(n, c).clipInHalf(!0).temporary().setReverse(s)];
            }, prepare: function prepare(t, e) {
                t[lt] = dt, t.transformStyle = "preserve-3d", t.opacity = .999, e.opacity = 1;
            }, teardown: function teardown() {
                this.element.find(".temp-page").remove();
            } }), l("flip", { directions: ["horizontal", "vertical"], init: function init(t, e, i, r) {
                h.prototype.init.call(this, t, e), this.options = {}, this.options.face = i, this.options.back = r;
            }, children: function children() {
                var t,
                    e = this,
                    i = e.options,
                    r = "horizontal" === e._direction ? "left" : "top",
                    n = C.directions[r].reverse,
                    s = e._reverse,
                    o = e.element;return s && (t = r, r = n, n = t), [C.fx(i.face).turningPage(r, o).face(!0).setReverse(s), C.fx(i.back).turningPage(n, o).setReverse(s)];
            }, prepare: function prepare(t) {
                t[lt] = dt, t.transformStyle = "preserve-3d";
            } }), y = !E.mobileOS.android, k = ".km-touch-scrollbar, .km-actionsheet-wrapper", l("replace", { _before: t.noop, _after: t.noop, init: function init(e, i, r) {
                h.prototype.init.call(this, e), this._previous = t(i), this._transitionClass = r;
            }, duration: function duration() {
                throw Error("The replace effect does not support duration setting; the effect duration may be customized through the transition class rule");
            }, beforeTransition: function beforeTransition(t) {
                return this._before = t, this;
            }, afterTransition: function afterTransition(t) {
                return this._after = t, this;
            }, _both: function _both() {
                return t().add(this._element).add(this._previous);
            }, _containerClass: function _containerClass() {
                var t = this._direction,
                    e = "k-fx k-fx-start k-fx-" + this._transitionClass;return t && (e += " k-fx-" + t), this._reverse && (e += " k-fx-reverse"), e;
            }, complete: function complete(e) {
                if (!(!this.deferred || e && t(e.target).is(k))) {
                    var i = this.container;i.removeClass("k-fx-end").removeClass(this._containerClass()).off(D.event, this.completeProxy), this._previous.hide().removeClass("k-fx-current"), this.element.removeClass("k-fx-next"), y && i.css(it, ""), this.isAbsolute || this._both().css(nt, ""), this.deferred.resolve(), delete this.deferred;
                }
            }, run: function run() {
                if (this._additionalEffects && this._additionalEffects[0]) return this.compositeRun();var e,
                    i = this,
                    r = i.element,
                    n = i._previous,
                    s = r.parents().filter(n.parents()).first(),
                    o = i._both(),
                    a = t.Deferred(),
                    c = r.css(nt);return s.length || (s = r.parent()), this.container = s, this.deferred = a, this.isAbsolute = "absolute" == c, this.isAbsolute || o.css(nt, "absolute"), y && (e = s.css(it), s.css(it, "hidden")), D ? (r.addClass("k-fx-hidden"), s.addClass(this._containerClass()), this.completeProxy = t.proxy(this, "complete"), s.on(D.event, this.completeProxy), C.animationFrame(function () {
                    r.removeClass("k-fx-hidden").addClass("k-fx-next"), n.css("display", "").addClass("k-fx-current"), i._before(n, r), C.animationFrame(function () {
                        s.removeClass("k-fx-start").addClass("k-fx-end"), i._after(n, r);
                    });
                })) : this.complete(), a.promise();
            }, stop: function stop() {
                this.complete();
            } }), b = C.Class.extend({ init: function init() {
                var t = this;t._tickProxy = z(t._tick, t), t._started = !1;
            }, tick: t.noop, done: t.noop, onEnd: t.noop, onCancel: t.noop, start: function start() {
                this.enabled() && (this.done() ? this.onEnd() : (this._started = !0, C.animationFrame(this._tickProxy)));
            }, enabled: function enabled() {
                return !0;
            }, cancel: function cancel() {
                this._started = !1, this.onCancel();
            }, _tick: function _tick() {
                var t = this;t._started && (t.tick(), t.done() ? (t._started = !1, t.onEnd()) : C.animationFrame(t._tickProxy));
            } }), w = b.extend({ init: function init(t) {
                var e = this;P(e, t), b.fn.init.call(e);
            }, done: function done() {
                return this.timePassed() >= this.duration;
            }, timePassed: function timePassed() {
                return Math.min(this.duration, new Date() - this.startDate);
            }, moveTo: function moveTo(t) {
                var e = this,
                    i = e.movable;e.initial = i[e.axis], e.delta = t.location - e.initial, e.duration = "number" == typeof t.duration ? t.duration : 300, e.tick = e._easeProxy(t.ease), e.startDate = new Date(), e.start();
            }, _easeProxy: function _easeProxy(t) {
                var e = this;return function () {
                    e.movable.moveAxis(e.axis, t(e.timePassed(), e.initial, e.delta, e.duration));
                };
            } }), P(w, { easeOutExpo: function easeOutExpo(t, e, i, r) {
                return t == r ? e + i : i * (-Math.pow(2, -10 * t / r) + 1) + e;
            }, easeOutBack: function easeOutBack(t, e, i, r, n) {
                return n = 1.70158, i * ((t = t / r - 1) * t * ((n + 1) * t + n) + 1) + e;
            } }), T.Animation = b, T.Transition = w, T.createEffect = l, T.box = function (e) {
            e = t(e);var i = e.offset();return i.width = C._outerWidth(e), i.height = C._outerHeight(e), i;
        }, T.transformOrigin = function (t, e) {
            var i = (t.left - e.left) * e.width / (e.width - t.width),
                r = (t.top - e.top) * e.height / (e.height - t.height);return { x: isNaN(i) ? 0 : i, y: isNaN(r) ? 0 : r };
        }, T.fillScale = function (t, e) {
            return Math.min(t.width / e.width, t.height / e.height);
        }, T.fitScale = function (t, e) {
            return Math.max(t.width / e.width, t.height / e.height);
        };
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
});;!function (t, define) {
    define("kendo.draganddrop.min", ["kendo.core.min", "kendo.userevents.min"], t);
}(function () {
    return function (t, e) {
        function n(e, n) {
            try {
                return t.contains(e, n) || e == n;
            } catch (r) {
                return !1;
            }
        }function r(t, e) {
            return parseInt(t.css(e), 10) || 0;
        }function i(t, e) {
            return Math.min(Math.max(t, e.min), e.max);
        }function o(t, e) {
            var n = D(t),
                i = _._outerWidth,
                o = _._outerHeight,
                a = n.left + r(t, "borderLeftWidth") + r(t, "paddingLeft"),
                s = n.top + r(t, "borderTopWidth") + r(t, "paddingTop"),
                l = a + t.width() - i(e, !0),
                c = s + t.height() - o(e, !0);return { x: { min: a, max: l }, y: { min: s, max: c } };
        }function a(n, r, i) {
            for (var o, a, s = 0, l = r && r.length, c = i && i.length; n && n.parentNode;) {
                for (s = 0; s < l; s++) {
                    if (o = r[s], o.element[0] === n) return { target: o, targetElement: n };
                }for (s = 0; s < c; s++) {
                    if (a = i[s], t.contains(a.element[0], n) && x.matchesSelector.call(n, a.options.filter)) return { target: a, targetElement: n };
                }n = n.parentNode;
            }return e;
        }function s(t, e) {
            var n,
                r = e.options.group,
                i = t[r];if (T.fn.destroy.call(e), i.length > 1) {
                for (n = 0; n < i.length; n++) {
                    if (i[n] == e) {
                        i.splice(n, 1);break;
                    }
                }
            } else i.length = 0, delete t[r];
        }function l(t) {
            var e,
                n,
                r,
                i = c()[0];return t[0] === i ? (n = i.scrollTop, r = i.scrollLeft, { top: n, left: r, bottom: n + b.height(), right: r + b.width() }) : (e = t.offset(), e.bottom = e.top + t.height(), e.right = e.left + t.width(), e);
        }function c() {
            return t(_.support.browser.chrome ? y.body : y.documentElement);
        }function u(e) {
            var n,
                r = c();if (!e || e === y.body || e === y.documentElement) return r;for (n = t(e)[0]; n && !_.isScrollable(n) && n !== y.body;) {
                n = n.parentNode;
            }return n === y.body ? r : t(n);
        }function h(t, e, n) {
            var r = { x: 0, y: 0 },
                i = 50;return t - n.left < i ? r.x = -(i - (t - n.left)) : n.right - t < i && (r.x = i - (n.right - t)), e - n.top < i ? r.y = -(i - (e - n.top)) : n.bottom - e < i && (r.y = i - (n.bottom - e)), r;
        }var d,
            f,
            p,
            g,
            v,
            m,
            _ = window.kendo,
            x = _.support,
            y = window.document,
            b = t(window),
            E = _.Class,
            T = _.ui.Widget,
            S = _.Observable,
            M = _.UserEvents,
            w = t.proxy,
            C = t.extend,
            D = _.getOffset,
            O = {},
            k = {},
            I = {},
            H = _.elementUnderCursor,
            W = "keyup",
            z = "change",
            P = "dragstart",
            U = "hold",
            L = "drag",
            A = "dragend",
            N = "dragcancel",
            V = "hintDestroyed",
            B = "dragenter",
            $ = "dragleave",
            F = "drop",
            j = S.extend({ init: function init(e, n) {
                var r = this,
                    i = e[0];r.capture = !1, i.addEventListener ? (t.each(_.eventMap.down.split(" "), function () {
                    i.addEventListener(this, w(r._press, r), !0);
                }), t.each(_.eventMap.up.split(" "), function () {
                    i.addEventListener(this, w(r._release, r), !0);
                })) : (t.each(_.eventMap.down.split(" "), function () {
                    i.attachEvent(this, w(r._press, r));
                }), t.each(_.eventMap.up.split(" "), function () {
                    i.attachEvent(this, w(r._release, r));
                })), S.fn.init.call(r), r.bind(["press", "release"], n || {});
            }, captureNext: function captureNext() {
                this.capture = !0;
            }, cancelCapture: function cancelCapture() {
                this.capture = !1;
            }, _press: function _press(t) {
                var e = this;e.trigger("press"), e.capture && t.preventDefault();
            }, _release: function _release(t) {
                var e = this;e.trigger("release"), e.capture && (t.preventDefault(), e.cancelCapture());
            } }),
            G = S.extend({ init: function init(e) {
                var n = this;S.fn.init.call(n), n.forcedEnabled = !1, t.extend(n, e), n.scale = 1, n.horizontal ? (n.measure = "offsetWidth", n.scrollSize = "scrollWidth", n.axis = "x") : (n.measure = "offsetHeight", n.scrollSize = "scrollHeight", n.axis = "y");
            }, makeVirtual: function makeVirtual() {
                t.extend(this, { virtual: !0, forcedEnabled: !0, _virtualMin: 0, _virtualMax: 0 });
            }, virtualSize: function virtualSize(t, e) {
                this._virtualMin === t && this._virtualMax === e || (this._virtualMin = t, this._virtualMax = e, this.update());
            }, outOfBounds: function outOfBounds(t) {
                return t > this.max || t < this.min;
            }, forceEnabled: function forceEnabled() {
                this.forcedEnabled = !0;
            }, getSize: function getSize() {
                return this.container[0][this.measure];
            }, getTotal: function getTotal() {
                return this.element[0][this.scrollSize];
            }, rescale: function rescale(t) {
                this.scale = t;
            }, update: function update(t) {
                var e = this,
                    n = e.virtual ? e._virtualMax : e.getTotal(),
                    r = n * e.scale,
                    i = e.getSize();(0 !== n || e.forcedEnabled) && (e.max = e.virtual ? -e._virtualMin : 0, e.size = i, e.total = r, e.min = Math.min(e.max, i - r), e.minScale = i / n, e.centerOffset = (r - i) / 2, e.enabled = e.forcedEnabled || r > i, t || e.trigger(z, e));
            } }),
            Q = S.extend({ init: function init(t) {
                var e = this;S.fn.init.call(e), e.x = new G(C({ horizontal: !0 }, t)), e.y = new G(C({ horizontal: !1 }, t)), e.container = t.container, e.forcedMinScale = t.minScale, e.maxScale = t.maxScale || 100, e.bind(z, t);
            }, rescale: function rescale(t) {
                this.x.rescale(t), this.y.rescale(t), this.refresh();
            }, centerCoordinates: function centerCoordinates() {
                return { x: Math.min(0, -this.x.centerOffset), y: Math.min(0, -this.y.centerOffset) };
            }, refresh: function refresh() {
                var t = this;t.x.update(), t.y.update(), t.enabled = t.x.enabled || t.y.enabled, t.minScale = t.forcedMinScale || Math.min(t.x.minScale, t.y.minScale), t.fitScale = Math.max(t.x.minScale, t.y.minScale), t.trigger(z);
            } }),
            q = S.extend({ init: function init(t) {
                var e = this;C(e, t), S.fn.init.call(e);
            }, outOfBounds: function outOfBounds() {
                return this.dimension.outOfBounds(this.movable[this.axis]);
            }, dragMove: function dragMove(t) {
                var e = this,
                    n = e.dimension,
                    r = e.axis,
                    i = e.movable,
                    o = i[r] + t;n.enabled && ((o < n.min && t < 0 || o > n.max && t > 0) && (t *= e.resistance), i.translateAxis(r, t), e.trigger(z, e));
            } }),
            J = E.extend({ init: function init(e) {
                var n,
                    r,
                    i,
                    o,
                    a = this;C(a, { elastic: !0 }, e), i = a.elastic ? .5 : 0, o = a.movable, a.x = n = new q({ axis: "x", dimension: a.dimensions.x, resistance: i, movable: o }), a.y = r = new q({ axis: "y", dimension: a.dimensions.y, resistance: i, movable: o }), a.userEvents.bind(["press", "move", "end", "gesturestart", "gesturechange"], { gesturestart: function gesturestart(t) {
                        a.gesture = t, a.offset = a.dimensions.container.offset();
                    }, press: function press(e) {
                        t(e.event.target).closest("a").is("[data-navigate-on-press=true]") && e.sender.cancel();
                    }, gesturechange: function gesturechange(t) {
                        var e,
                            i,
                            s,
                            l = a.gesture,
                            c = l.center,
                            u = t.center,
                            h = t.distance / l.distance,
                            d = a.dimensions.minScale,
                            f = a.dimensions.maxScale;o.scale <= d && h < 1 && (h += .8 * (1 - h)), o.scale * h >= f && (h = f / o.scale), i = o.x + a.offset.left, s = o.y + a.offset.top, e = { x: (i - c.x) * h + u.x - i, y: (s - c.y) * h + u.y - s }, o.scaleWith(h), n.dragMove(e.x), r.dragMove(e.y), a.dimensions.rescale(o.scale), a.gesture = t, t.preventDefault();
                    }, move: function move(t) {
                        t.event.target.tagName.match(/textarea|input/i) || (n.dimension.enabled || r.dimension.enabled ? (n.dragMove(t.x.delta), r.dragMove(t.y.delta), t.preventDefault()) : t.touch.skip());
                    }, end: function end(t) {
                        t.preventDefault();
                    } });
            } }),
            K = x.transitions.prefix + "Transform";f = x.hasHW3D ? function (t, e, n) {
            return "translate3d(" + t + "px," + e + "px,0) scale(" + n + ")";
        } : function (t, e, n) {
            return "translate(" + t + "px," + e + "px) scale(" + n + ")";
        }, p = S.extend({ init: function init(e) {
                var n = this;S.fn.init.call(n), n.element = t(e), n.element[0].style.webkitTransformOrigin = "left top", n.x = 0, n.y = 0, n.scale = 1, n._saveCoordinates(f(n.x, n.y, n.scale));
            }, translateAxis: function translateAxis(t, e) {
                this[t] += e, this.refresh();
            }, scaleTo: function scaleTo(t) {
                this.scale = t, this.refresh();
            }, scaleWith: function scaleWith(t) {
                this.scale *= t, this.refresh();
            }, translate: function translate(t) {
                this.x += t.x, this.y += t.y, this.refresh();
            }, moveAxis: function moveAxis(t, e) {
                this[t] = e, this.refresh();
            }, moveTo: function moveTo(t) {
                C(this, t), this.refresh();
            }, refresh: function refresh() {
                var t,
                    e = this,
                    n = e.x,
                    r = e.y;e.round && (n = Math.round(n), r = Math.round(r)), t = f(n, r, e.scale), t != e.coordinates && (_.support.browser.msie && _.support.browser.version < 10 ? (e.element[0].style.position = "absolute", e.element[0].style.left = e.x + "px", e.element[0].style.top = e.y + "px") : e.element[0].style[K] = t, e._saveCoordinates(t), e.trigger(z));
            }, _saveCoordinates: function _saveCoordinates(t) {
                this.coordinates = t;
            } }), g = T.extend({ init: function init(t, e) {
                var n,
                    r = this;T.fn.init.call(r, t, e), n = r.options.group, n in k ? k[n].push(r) : k[n] = [r];
            }, events: [B, $, F], options: { name: "DropTarget", group: "default" }, destroy: function destroy() {
                s(k, this);
            }, _trigger: function _trigger(t, e) {
                var n = this,
                    r = O[n.options.group];if (r) return n.trigger(t, C({}, e.event, { draggable: r, dropTarget: e.dropTarget }));
            }, _over: function _over(t) {
                this._trigger(B, t);
            }, _out: function _out(t) {
                this._trigger($, t);
            }, _drop: function _drop(t) {
                var e = this,
                    n = O[e.options.group];n && (n.dropped = !e._trigger(F, t));
            } }), g.destroyGroup = function (t) {
            var e,
                n = k[t] || I[t];if (n) {
                for (e = 0; e < n.length; e++) {
                    T.fn.destroy.call(n[e]);
                }n.length = 0, delete k[t], delete I[t];
            }
        }, g._cache = k, v = g.extend({ init: function init(t, e) {
                var n,
                    r = this;T.fn.init.call(r, t, e), n = r.options.group, n in I ? I[n].push(r) : I[n] = [r];
            }, destroy: function destroy() {
                s(I, this);
            }, options: { name: "DropTargetArea", group: "default", filter: null } }), m = T.extend({ init: function init(t, e) {
                var n = this;T.fn.init.call(n, t, e), n._activated = !1, n.userEvents = new M(n.element, { global: !0, allowSelection: !0, filter: n.options.filter, threshold: n.options.distance, start: w(n._start, n), hold: w(n._hold, n), move: w(n._drag, n), end: w(n._end, n), cancel: w(n._cancel, n), select: w(n._select, n) }), n._afterEndHandler = w(n._afterEnd, n), n._captureEscape = w(n._captureEscape, n);
            }, events: [U, P, L, A, N, V], options: { name: "Draggable", distance: _.support.touch ? 0 : 5, group: "default", cursorOffset: null, axis: null, container: null, filter: null, ignore: null, holdToDrag: !1, autoScroll: !1, dropped: !1 }, cancelHold: function cancelHold() {
                this._activated = !1;
            }, _captureEscape: function _captureEscape(t) {
                var e = this;t.keyCode === _.keys.ESC && (e._trigger(N, { event: t }), e.userEvents.cancel());
            }, _updateHint: function _updateHint(e) {
                var n,
                    r = this,
                    o = r.options,
                    a = r.boundaries,
                    s = o.axis,
                    l = r.options.cursorOffset;l ? n = { left: e.x.location + l.left, top: e.y.location + l.top } : (r.hintOffset.left += e.x.delta, r.hintOffset.top += e.y.delta, n = t.extend({}, r.hintOffset)), a && (n.top = i(n.top, a.y), n.left = i(n.left, a.x)), "x" === s ? delete n.top : "y" === s && delete n.left, r.hint.css(n);
            }, _shouldIgnoreTarget: function _shouldIgnoreTarget(e) {
                var n = this.options.ignore;return n && t(e).is(n);
            }, _select: function _select(t) {
                this._shouldIgnoreTarget(t.event.target) || t.preventDefault();
            }, _start: function _start(n) {
                var r,
                    i = this,
                    a = i.options,
                    s = a.container,
                    l = a.hint;return this._shouldIgnoreTarget(n.touch.initialTouch) || a.holdToDrag && !i._activated ? (i.userEvents.cancel(), e) : (i.currentTarget = n.target, i.currentTargetOffset = D(i.currentTarget), l && (i.hint && i.hint.stop(!0, !0).remove(), i.hint = _.isFunction(l) ? t(l.call(i, i.currentTarget)) : l, r = D(i.currentTarget), i.hintOffset = r, i.hint.css({ position: "absolute", zIndex: 2e4, left: r.left, top: r.top }).appendTo(y.body), i.angular("compile", function () {
                    i.hint.removeAttr("ng-repeat");for (var e = t(n.target); !e.data("$$kendoScope") && e.length;) {
                        e = e.parent();
                    }return { elements: i.hint.get(), scopeFrom: e.data("$$kendoScope") };
                })), O[a.group] = i, i.dropped = !1, s && (i.boundaries = o(s, i.hint)), t(y).on(W, i._captureEscape), i._trigger(P, n) && (i.userEvents.cancel(), i._afterEnd()), i.userEvents.capture(), e);
            }, _hold: function _hold(t) {
                this.currentTarget = t.target, this._trigger(U, t) ? this.userEvents.cancel() : this._activated = !0;
            }, _drag: function _drag(e) {
                var n, r;e.preventDefault(), n = this._elementUnderCursor(e), this.options.autoScroll && this._cursorElement !== n && (this._scrollableParent = u(n), this._cursorElement = n), this._lastEvent = e, this._processMovement(e, n), this.options.autoScroll && this._scrollableParent[0] && (r = h(e.x.location, e.y.location, l(this._scrollableParent)), this._scrollCompenstation = t.extend({}, this.hintOffset), this._scrollVelocity = r, 0 === r.y && 0 === r.x ? (clearInterval(this._scrollInterval), this._scrollInterval = null) : this._scrollInterval || (this._scrollInterval = setInterval(t.proxy(this, "_autoScroll"), 50))), this.hint && this._updateHint(e);
            }, _processMovement: function _processMovement(n, r) {
                this._withDropTarget(r, function (r, i) {
                    if (!r) return d && (d._trigger($, C(n, { dropTarget: t(d.targetElement) })), d = null), e;if (d) {
                        if (i === d.targetElement) return;d._trigger($, C(n, { dropTarget: t(d.targetElement) }));
                    }r._trigger(B, C(n, { dropTarget: t(i) })), d = C(r, { targetElement: i });
                }), this._trigger(L, C(n, { dropTarget: d, elementUnderCursor: r }));
            }, _autoScroll: function _autoScroll() {
                var t,
                    e,
                    n,
                    r,
                    i,
                    o,
                    a,
                    s,
                    l = this._scrollableParent[0],
                    u = this._scrollVelocity,
                    h = this._scrollCompenstation;l && (t = this._elementUnderCursor(this._lastEvent), this._processMovement(this._lastEvent, t), r = l === c()[0], r ? (e = y.body.scrollHeight > b.height(), n = y.body.scrollWidth > b.width()) : (e = l.offsetHeight <= l.scrollHeight, n = l.offsetWidth <= l.scrollWidth), i = l.scrollTop + u.y, o = e && i > 0 && i < l.scrollHeight, a = l.scrollLeft + u.x, s = n && a > 0 && a < l.scrollWidth, o && (l.scrollTop += u.y), s && (l.scrollLeft += u.x), r && (s || o) && (o && (h.top += u.y), s && (h.left += u.x), this.hint.css(h)));
            }, _end: function _end(e) {
                this._withDropTarget(this._elementUnderCursor(e), function (n, r) {
                    n && (n._drop(C({}, e, { dropTarget: t(r) })), d = null);
                }), this._cancel(this._trigger(A, e));
            }, _cancel: function _cancel(t) {
                var e = this;e._scrollableParent = null, this._cursorElement = null, clearInterval(this._scrollInterval), e._activated = !1, e.hint && !e.dropped ? setTimeout(function () {
                    e.hint.stop(!0, !0), t ? e._afterEndHandler() : e.hint.animate(e.currentTargetOffset, "fast", e._afterEndHandler);
                }, 0) : e._afterEnd();
            }, _trigger: function _trigger(t, e) {
                var n = this;return n.trigger(t, C({}, e.event, { x: e.x, y: e.y, currentTarget: n.currentTarget, initialTarget: e.touch ? e.touch.initialTouch : null, dropTarget: e.dropTarget, elementUnderCursor: e.elementUnderCursor }));
            }, _elementUnderCursor: function _elementUnderCursor(t) {
                var e = H(t),
                    r = this.hint;return r && n(r[0], e) && (r.hide(), e = H(t), e || (e = H(t)), r.show()), e;
            }, _withDropTarget: function _withDropTarget(t, e) {
                var n,
                    r = this.options.group,
                    i = k[r],
                    o = I[r];(i && i.length || o && o.length) && (n = a(t, i, o), n ? e(n.target, n.targetElement) : e());
            }, destroy: function destroy() {
                var t = this;T.fn.destroy.call(t), t._afterEnd(), t.userEvents.destroy(), this._scrollableParent = null, this._cursorElement = null, clearInterval(this._scrollInterval), t.currentTarget = null;
            }, _afterEnd: function _afterEnd() {
                var e = this;e.hint && e.hint.remove(), delete O[e.options.group], e.trigger("destroy"), e.trigger(V), t(y).off(W, e._captureEscape);
            } }), _.ui.plugin(g), _.ui.plugin(v), _.ui.plugin(m), _.TapCapture = j, _.containerBoundaries = o, C(_.ui, { Pane: J, PaneDimensions: Q, Movable: p }), _.ui.Draggable.utils = { autoScrollVelocity: h, scrollableViewPort: l, findScrollableParent: u };
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, n) {
    (n || e)();
});;!function (e, define) {
    define("kendo.mobile.scroller.min", ["kendo.fx.min", "kendo.draganddrop.min"], e);
}(function () {
    return function (e, i) {
        var n = window.kendo,
            t = n.mobile,
            s = n.effects,
            o = t.ui,
            l = e.proxy,
            a = e.extend,
            r = o.Widget,
            c = n.Class,
            h = n.ui.Movable,
            u = n.ui.Pane,
            d = n.ui.PaneDimensions,
            m = s.Transition,
            f = s.Animation,
            p = Math.abs,
            v = 500,
            b = .7,
            x = .96,
            y = 10,
            T = 55,
            w = .5,
            g = 5,
            _ = "km-scroller-release",
            E = "km-scroller-refresh",
            C = "pull",
            k = "change",
            S = "resize",
            z = "scroll",
            M = 2,
            A = f.extend({ init: function init(e) {
                var i = this;f.fn.init.call(i), a(i, e), i.userEvents.bind("gestureend", l(i.start, i)), i.tapCapture.bind("press", l(i.cancel, i));
            }, enabled: function enabled() {
                return this.movable.scale < this.dimensions.minScale;
            }, done: function done() {
                return this.dimensions.minScale - this.movable.scale < .01;
            }, tick: function tick() {
                var e = this.movable;e.scaleWith(1.1), this.dimensions.rescale(e.scale);
            }, onEnd: function onEnd() {
                var e = this.movable;e.scaleTo(this.dimensions.minScale), this.dimensions.rescale(e.scale);
            } }),
            O = f.extend({ init: function init(e) {
                var i = this;f.fn.init.call(i), a(i, e, { transition: new m({ axis: e.axis, movable: e.movable, onEnd: function onEnd() {
                            i._end();
                        } }) }), i.tapCapture.bind("press", function () {
                    i.cancel();
                }), i.userEvents.bind("end", l(i.start, i)), i.userEvents.bind("gestureend", l(i.start, i)), i.userEvents.bind("tap", l(i.onEnd, i));
            }, onCancel: function onCancel() {
                this.transition.cancel();
            }, freeze: function freeze(e) {
                var i = this;i.cancel(), i._moveTo(e);
            }, onEnd: function onEnd() {
                var e = this;e.paneAxis.outOfBounds() ? e._snapBack() : e._end();
            }, done: function done() {
                return p(this.velocity) < 1;
            }, start: function start(e) {
                var i,
                    n = this;n.dimension.enabled && (n.paneAxis.outOfBounds() ? n._snapBack() : (i = e.touch.id === M ? 0 : e.touch[n.axis].velocity, n.velocity = Math.max(Math.min(i * n.velocityMultiplier, T), -T), n.tapCapture.captureNext(), f.fn.start.call(n)));
            }, tick: function tick() {
                var e = this,
                    i = e.dimension,
                    n = e.paneAxis.outOfBounds() ? w : e.friction,
                    t = e.velocity *= n,
                    s = e.movable[e.axis] + t;!e.elastic && i.outOfBounds(s) && (s = Math.max(Math.min(s, i.max), i.min), e.velocity = 0), e.movable.moveAxis(e.axis, s);
            }, _end: function _end() {
                this.tapCapture.cancelCapture(), this.end();
            }, _snapBack: function _snapBack() {
                var e = this,
                    i = e.dimension,
                    n = e.movable[e.axis] > i.max ? i.max : i.min;e._moveTo(n);
            }, _moveTo: function _moveTo(e) {
                this.transition.moveTo({ location: e, duration: v, ease: m.easeOutExpo });
            } }),
            H = f.extend({ init: function init(e) {
                var i = this;n.effects.Animation.fn.init.call(this), a(i, e, { origin: {}, destination: {}, offset: {} });
            }, tick: function tick() {
                this._updateCoordinates(), this.moveTo(this.origin);
            }, done: function done() {
                return p(this.offset.y) < g && p(this.offset.x) < g;
            }, onEnd: function onEnd() {
                this.moveTo(this.destination), this.callback && this.callback.call();
            }, setCoordinates: function setCoordinates(e, i) {
                this.offset = {}, this.origin = e, this.destination = i;
            }, setCallback: function setCallback(e) {
                e && n.isFunction(e) ? this.callback = e : e = i;
            }, _updateCoordinates: function _updateCoordinates() {
                this.offset = { x: (this.destination.x - this.origin.x) / 4, y: (this.destination.y - this.origin.y) / 4 }, this.origin = { y: this.origin.y + this.offset.y, x: this.origin.x + this.offset.x };
            } }),
            B = c.extend({ init: function init(i) {
                var n = this,
                    t = "x" === i.axis,
                    s = e('<div class="km-touch-scrollbar km-' + (t ? "horizontal" : "vertical") + '-scrollbar" />');a(n, i, { element: s, elementSize: 0, movable: new h(s), scrollMovable: i.movable, alwaysVisible: i.alwaysVisible, size: t ? "width" : "height" }), n.scrollMovable.bind(k, l(n.refresh, n)), n.container.append(s), i.alwaysVisible && n.show();
            }, refresh: function refresh() {
                var e = this,
                    i = e.axis,
                    n = e.dimension,
                    t = n.size,
                    s = e.scrollMovable,
                    o = t / n.total,
                    l = Math.round(-s[i] * o),
                    a = Math.round(t * o);o >= 1 ? this.element.css("display", "none") : this.element.css("display", ""), l + a > t ? a = t - l : l < 0 && (a += l, l = 0), e.elementSize != a && (e.element.css(e.size, a + "px"), e.elementSize = a), e.movable.moveAxis(i, l);
            }, show: function show() {
                this.element.css({ opacity: b, visibility: "visible" });
            }, hide: function hide() {
                this.alwaysVisible || this.element.css({ opacity: 0 });
            } }),
            R = r.extend({ init: function init(t, s) {
                var o,
                    c,
                    m,
                    f,
                    v,
                    b,
                    x,
                    y,
                    T,
                    w = this;return r.fn.init.call(w, t, s), t = w.element, (w._native = w.options.useNative && n.support.hasNativeScrolling) ? (t.addClass("km-native-scroller").prepend('<div class="km-scroll-header"/>'), a(w, { scrollElement: t, fixedContainer: t.children().first() }), i) : (t.css("overflow", "hidden").addClass("km-scroll-wrapper").wrapInner('<div class="km-scroll-container"/>').prepend('<div class="km-scroll-header"/>'), o = t.children().eq(1), c = new n.TapCapture(t), m = new h(o), f = new d({ element: o, container: t, forcedEnabled: w.options.zoom }), v = this.options.avoidScrolling, b = new n.UserEvents(t, { touchAction: "pan-y", fastTap: !0, allowSelection: !0, preventDragEvent: !0, captureUpIfMoved: !0, multiTouch: w.options.zoom, start: function start(i) {
                        f.refresh();var n = p(i.x.velocity),
                            t = p(i.y.velocity),
                            s = 2 * n >= t,
                            o = e.contains(w.fixedContainer[0], i.event.target),
                            l = 2 * t >= n;!o && !v(i) && w.enabled && (f.x.enabled && s || f.y.enabled && l) ? b.capture() : b.cancel();
                    } }), x = new u({ movable: m, dimensions: f, userEvents: b, elastic: w.options.elastic }), y = new A({ movable: m, dimensions: f, userEvents: b, tapCapture: c }), T = new H({ moveTo: function moveTo(e) {
                        w.scrollTo(e.x, e.y);
                    } }), m.bind(k, function () {
                    w.scrollTop = -m.y, w.scrollLeft = -m.x, w.trigger(z, { scrollTop: w.scrollTop, scrollLeft: w.scrollLeft });
                }), w.options.mousewheelScrolling && t.on("DOMMouseScroll mousewheel", l(this, "_wheelScroll")), a(w, { movable: m, dimensions: f, zoomSnapBack: y, animatedScroller: T, userEvents: b, pane: x, tapCapture: c, pulled: !1, enabled: !0, scrollElement: o, scrollTop: 0, scrollLeft: 0, fixedContainer: t.children().first() }), w._initAxis("x"), w._initAxis("y"), w._wheelEnd = function () {
                    w._wheel = !1, w.userEvents.end(0, w._wheelY);
                }, f.refresh(), w.options.pullToRefresh && w._initPullToRefresh(), i);
            }, _wheelScroll: function _wheelScroll(e) {
                this._wheel || (this._wheel = !0, this._wheelY = 0, this.userEvents.press(0, this._wheelY)), clearTimeout(this._wheelTimeout), this._wheelTimeout = setTimeout(this._wheelEnd, 50);var i = n.wheelDeltaY(e);i && (this._wheelY += i, this.userEvents.move(0, this._wheelY)), e.preventDefault();
            }, makeVirtual: function makeVirtual() {
                this.dimensions.y.makeVirtual();
            }, virtualSize: function virtualSize(e, i) {
                this.dimensions.y.virtualSize(e, i);
            }, height: function height() {
                return this.dimensions.y.size;
            }, scrollHeight: function scrollHeight() {
                return this.scrollElement[0].scrollHeight;
            }, scrollWidth: function scrollWidth() {
                return this.scrollElement[0].scrollWidth;
            }, options: { name: "Scroller", zoom: !1, pullOffset: 140, visibleScrollHints: !1, elastic: !0, useNative: !1, mousewheelScrolling: !0, avoidScrolling: function avoidScrolling() {
                    return !1;
                }, pullToRefresh: !1, messages: { pullTemplate: "Pull to refresh", releaseTemplate: "Release to refresh", refreshTemplate: "Refreshing" } }, events: [C, z, S], _resize: function _resize() {
                this._native || this.contentResized();
            }, setOptions: function setOptions(e) {
                var i = this;r.fn.setOptions.call(i, e), e.pullToRefresh && i._initPullToRefresh();
            }, reset: function reset() {
                this._native ? this.scrollElement.scrollTop(0) : (this.movable.moveTo({ x: 0, y: 0 }), this._scale(1));
            }, contentResized: function contentResized() {
                this.dimensions.refresh(), this.pane.x.outOfBounds() && this.movable.moveAxis("x", this.dimensions.x.min), this.pane.y.outOfBounds() && this.movable.moveAxis("y", this.dimensions.y.min);
            }, zoomOut: function zoomOut() {
                var e = this.dimensions;e.refresh(), this._scale(e.fitScale), this.movable.moveTo(e.centerCoordinates());
            }, enable: function enable() {
                this.enabled = !0;
            }, disable: function disable() {
                this.enabled = !1;
            }, scrollTo: function scrollTo(e, i) {
                this._native ? (this.scrollElement.scrollLeft(p(e)), this.scrollElement.scrollTop(p(i))) : (this.dimensions.refresh(), this.movable.moveTo({ x: e, y: i }));
            }, animatedScrollTo: function animatedScrollTo(e, i, n) {
                var t, s;this._native ? this.scrollTo(e, i) : (t = { x: this.movable.x, y: this.movable.y }, s = { x: e, y: i }, this.animatedScroller.setCoordinates(t, s), this.animatedScroller.setCallback(n), this.animatedScroller.start());
            }, pullHandled: function pullHandled() {
                var e = this;e.refreshHint.removeClass(E), e.hintContainer.html(e.pullTemplate({})), e.yinertia.onEnd(), e.xinertia.onEnd(), e.userEvents.cancel();
            }, destroy: function destroy() {
                r.fn.destroy.call(this), this.userEvents && this.userEvents.destroy();
            }, _scale: function _scale(e) {
                this.dimensions.rescale(e), this.movable.scaleTo(e);
            }, _initPullToRefresh: function _initPullToRefresh() {
                var e = this;e.dimensions.y.forceEnabled(), e.pullTemplate = n.template(e.options.messages.pullTemplate), e.releaseTemplate = n.template(e.options.messages.releaseTemplate), e.refreshTemplate = n.template(e.options.messages.refreshTemplate), e.scrollElement.prepend('<span class="km-scroller-pull"><span class="km-icon"></span><span class="km-loading-left"></span><span class="km-loading-right"></span><span class="km-template">' + e.pullTemplate({}) + "</span></span>"), e.refreshHint = e.scrollElement.children().first(), e.hintContainer = e.refreshHint.children(".km-template"), e.pane.y.bind("change", l(e._paneChange, e)), e.userEvents.bind("end", l(e._dragEnd, e));
            }, _dragEnd: function _dragEnd() {
                var e = this;e.pulled && (e.pulled = !1, e.refreshHint.removeClass(_).addClass(E), e.hintContainer.html(e.refreshTemplate({})), e.yinertia.freeze(e.options.pullOffset / 2), e.trigger("pull"));
            }, _paneChange: function _paneChange() {
                var e = this;e.movable.y / w > e.options.pullOffset ? e.pulled || (e.pulled = !0, e.refreshHint.removeClass(E).addClass(_), e.hintContainer.html(e.releaseTemplate({}))) : e.pulled && (e.pulled = !1, e.refreshHint.removeClass(_), e.hintContainer.html(e.pullTemplate({})));
            }, _initAxis: function _initAxis(e) {
                var i = this,
                    n = i.movable,
                    t = i.dimensions[e],
                    s = i.tapCapture,
                    o = i.pane[e],
                    l = new B({ axis: e, movable: n, dimension: t, container: i.element, alwaysVisible: i.options.visibleScrollHints });t.bind(k, function () {
                    l.refresh();
                }), o.bind(k, function () {
                    l.show();
                }), i[e + "inertia"] = new O({ axis: e, paneAxis: o, movable: n, tapCapture: s, userEvents: i.userEvents, dimension: t, elastic: i.options.elastic, friction: i.options.friction || x, velocityMultiplier: i.options.velocityMultiplier || y, end: function end() {
                        l.hide(), i.trigger("scrollEnd", { axis: e, scrollTop: i.scrollTop, scrollLeft: i.scrollLeft });
                    } });
            } });o.plugin(R);
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, i, n) {
    (n || i)();
});;!function (t, define) {
    define("kendo.toolbar.min", ["kendo.core.min", "kendo.userevents.min", "kendo.popup.min"], t);
}(function () {
    return function (t, e) {
        function o() {
            var t,
                e = this.options.anchor,
                o = E(e);_.wrap(this.element).addClass("k-split-wrapper"), t = "border-box" !== this.element.css("box-sizing") ? o - (E(this.element) - this.element.width()) : o, this.element.css({ fontFamily: e.css("font-family"), "min-width": t });
        }function i(t) {
            t.target.is(".k-toggle-button") || t.target.toggleClass(M, "press" == t.type);
        }function n(e) {
            return e = t(e), e.hasClass("km-actionsheet") ? e.closest(".km-popup-wrapper") : e.addClass("km-widget km-actionsheet").wrap('<div class="km-actionsheet-wrapper km-actionsheet-tablet km-widget km-popup"></div>').parent().wrap('<div class="km-popup-wrapper k-popup"></div>').parent();
        }function s(t) {
            t.preventDefault();
        }function l(e, o) {
            var i = "next" === o ? t.fn.next : t.fn.prev,
                n = "next" === o ? t.fn.first : t.fn.last,
                s = i.call(e);return s.is(":kendoFocusable") || !s.length ? s : s.find(":kendoFocusable").length ? n.call(s.find(":kendoFocusable")) : l(s, o);
        }var a,
            r,
            d,
            p,
            h,
            u,
            c,
            f,
            m,
            b,
            v,
            g,
            w,
            k,
            C,
            y,
            _ = window.kendo,
            A = _.Class,
            x = _.ui.Widget,
            B = t.proxy,
            T = _.isFunction,
            O = _.keys,
            E = _._outerWidth,
            I = "k-toolbar",
            U = "k-button",
            P = "k-overflow-button",
            z = "k-toggle-button",
            G = "k-button-group",
            F = "k-split-button",
            H = "k-separator",
            D = "k-popup",
            R = "k-toolbar-resizable",
            M = "k-state-active",
            S = "k-state-disabled",
            W = "k-state-hidden",
            N = "k-group-start",
            K = "k-group-end",
            j = "k-primary",
            Q = "k-icon",
            V = "k-i-",
            q = "k-button-icon",
            J = "k-button-icontext",
            L = "k-list-container k-split-container",
            X = "k-split-button-arrow",
            Y = "k-overflow-anchor",
            Z = "k-overflow-container",
            $ = "k-toolbar-first-visible",
            tt = "k-toolbar-last-visible",
            et = "click",
            ot = "toggle",
            it = "open",
            nt = "close",
            st = "overflowOpen",
            lt = "overflowClose",
            at = "never",
            rt = "auto",
            dt = "always",
            pt = "k-overflow-hidden",
            ht = _.attr("uid");_.toolbar = {}, a = { overflowAnchor: '<div tabindex="0" class="k-overflow-anchor"></div>', overflowContainer: '<ul class="k-overflow-container k-list-container"></ul>' }, _.toolbar.registerComponent = function (t, e, o) {
            a[t] = { toolbar: e, overflow: o };
        }, r = _.Class.extend({ addOverflowAttr: function addOverflowAttr() {
                this.element.attr(_.attr("overflow"), this.options.overflow || rt);
            }, addUidAttr: function addUidAttr() {
                this.element.attr(ht, this.options.uid);
            }, addIdAttr: function addIdAttr() {
                this.options.id && this.element.attr("id", this.options.id);
            }, addOverflowIdAttr: function addOverflowIdAttr() {
                this.options.id && this.element.attr("id", this.options.id + "_overflow");
            }, attributes: function attributes() {
                this.options.attributes && this.element.attr(this.options.attributes);
            }, show: function show() {
                this.element.removeClass(W).show(), this.options.hidden = !1;
            }, hide: function hide() {
                this.element.addClass(W).hide(), this.options.hidden = !0;
            }, remove: function remove() {
                this.element.remove();
            }, enable: function enable(t) {
                t === e && (t = !0), this.element.toggleClass(S, !t), this.options.enable = t;
            }, twin: function twin() {
                var t = this.element.attr(ht);return this.overflow ? this.toolbar.element.find("[" + ht + "='" + t + "']").data(this.options.type) : this.toolbar.options.resizable ? this.toolbar.popup.element.find("[" + ht + "='" + t + "']").data(this.options.type) : e;
            } }), _.toolbar.Item = r, d = r.extend({ init: function init(o, i) {
                var n = t(o.useButtonTag ? '<button tabindex="0"></button>' : '<a href tabindex="0"></a>');this.element = n, this.options = o, this.toolbar = i, this.attributes(), o.primary && n.addClass(j), o.togglable && (n.addClass(z), this.toggle(o.selected)), o.url === e || o.useButtonTag || (n.attr("href", o.url), o.mobile && n.attr(_.attr("role"), "button")), o.group && (n.attr(_.attr("group"), o.group), this.group = this.toolbar.addToGroup(this, o.group)), !o.togglable && o.click && T(o.click) && (this.clickHandler = o.click), o.togglable && o.toggle && T(o.toggle) && (this.toggleHandler = o.toggle);
            }, toggle: function toggle(t, e) {
                t = !!t, this.group && t ? this.group.select(this) : this.group || this.select(t), e && this.twin() && this.twin().toggle(t);
            }, getParentGroup: function getParentGroup() {
                if (this.options.isChild) return this.element.closest("." + G).data("buttonGroup");
            }, _addGraphics: function _addGraphics() {
                var e,
                    o,
                    i,
                    n = this.element,
                    s = this.options.icon,
                    l = this.options.spriteCssClass,
                    a = this.options.imageUrl;(l || a || s) && (e = !0, n.contents().filter(function () {
                    return !t(this).hasClass("k-sprite") && !t(this).hasClass(Q) && !t(this).hasClass("k-image");
                }).each(function (o, i) {
                    (1 == i.nodeType || 3 == i.nodeType && t.trim(i.nodeValue).length > 0) && (e = !1);
                }), n.addClass(e ? q : J)), s ? (o = n.children("span." + Q).first(), o[0] || (o = t('<span class="' + Q + '"></span>').prependTo(n)), o.addClass(V + s)) : l ? (o = n.children("span.k-sprite").first(), o[0] || (o = t('<span class="k-sprite"></span>').prependTo(n)), o.addClass(l)) : a && (i = n.children("img.k-image").first(), i[0] || (i = t('<img alt="icon" class="k-image" />').prependTo(n)), i.attr("src", a));
            } }), _.toolbar.Button = d, p = d.extend({ init: function init(t, e) {
                d.fn.init.call(this, t, e);var o = this.element;o.addClass(U), this.addIdAttr(), t.align && o.addClass("k-align-" + t.align), "overflow" != t.showText && t.text && o.html(t.mobile ? '<span class="km-text">' + t.text + "</span>" : t.text), t.hasIcon = "overflow" != t.showIcon && (t.icon || t.spriteCssClass || t.imageUrl), t.hasIcon && this._addGraphics(), this.addUidAttr(), this.addOverflowAttr(), this.enable(t.enable), t.hidden && this.hide(), this.element.data({ type: "button", button: this });
            }, select: function select(t) {
                t === e && (t = !1), this.element.toggleClass(M, t), this.options.selected = t;
            } }), _.toolbar.ToolBarButton = p, h = d.extend({ init: function init(t, e) {
                this.overflow = !0, d.fn.init.call(this, t, e);var o = this.element;"toolbar" != t.showText && t.text && o.html(t.mobile ? '<span class="km-text">' + t.text + "</span>" : '<span class="k-text">' + t.text + "</span>"), t.hasIcon = "toolbar" != t.showIcon && (t.icon || t.spriteCssClass || t.imageUrl), t.hasIcon && this._addGraphics(), t.isChild || this._wrap(), this.addOverflowIdAttr(), this.attributes(), this.addUidAttr(), this.addOverflowAttr(), this.enable(t.enable), o.addClass(P + " " + U), t.hidden && this.hide(), this.element.data({ type: "button", button: this });
            }, _wrap: function _wrap() {
                this.element = this.element.wrap("<li></li>").parent();
            }, overflowHidden: function overflowHidden() {
                this.element.addClass(pt);
            }, select: function select(t) {
                t === e && (t = !1), this.options.isChild ? this.element.toggleClass(M, t) : this.element.find(".k-button").toggleClass(M, t), this.options.selected = t;
            } }), _.toolbar.OverflowButton = h, _.toolbar.registerComponent("button", p, h), u = r.extend({ createButtons: function createButtons(e) {
                var o,
                    i,
                    n = this.options,
                    s = n.buttons || [];for (i = 0; i < s.length; i++) {
                    s[i].uid || (s[i].uid = _.guid()), o = new e(t.extend({ mobile: n.mobile, isChild: !0, type: "button" }, s[i]), this.toolbar), o.element.appendTo(this.element);
                }
            }, refresh: function refresh() {
                this.element.children().filter(":not('." + W + "'):first").addClass(N), this.element.children().filter(":not('." + W + "'):last").addClass(K);
            } }), _.toolbar.ButtonGroup = u, c = u.extend({ init: function init(e, o) {
                var i = this.element = t("<div></div>");this.options = e, this.toolbar = o, this.addIdAttr(), e.align && i.addClass("k-align-" + e.align), this.createButtons(p), this.attributes(), this.addUidAttr(), this.addOverflowAttr(), this.refresh(), i.addClass(G), this.element.data({ type: "buttonGroup", buttonGroup: this });
            } }), _.toolbar.ToolBarButtonGroup = c, f = u.extend({ init: function init(e, o) {
                var i = this.element = t("<li></li>");this.options = e, this.toolbar = o, this.overflow = !0, this.addOverflowIdAttr(), this.createButtons(h), this.attributes(), this.addUidAttr(), this.addOverflowAttr(), this.refresh(), i.addClass((e.mobile ? "" : G) + " k-overflow-group"), this.element.data({ type: "buttonGroup", buttonGroup: this });
            }, overflowHidden: function overflowHidden() {
                this.element.addClass(pt);
            } }), _.toolbar.OverflowButtonGroup = f, _.toolbar.registerComponent("buttonGroup", c, f), m = r.extend({ init: function init(e, o) {
                var i = this.element = t('<div class="' + F + '" tabindex="0"></div>');this.options = e, this.toolbar = o, this.mainButton = new p(t.extend({}, e, { hidden: !1 }), o), this.arrowButton = t('<a class="' + U + " " + X + '"><span class="' + (e.mobile ? "km-icon km-arrowdown" : "k-icon k-i-arrow-s") + '"></span></a>'), this.popupElement = t('<ul class="' + L + '"></ul>'), this.mainButton.element.removeAttr("href tabindex").appendTo(i), this.arrowButton.appendTo(i), this.popupElement.appendTo(i), e.align && i.addClass("k-align-" + e.align), e.id || (e.id = e.uid), i.attr("id", e.id + "_wrapper"), this.addOverflowAttr(), this.addUidAttr(), this.createMenuButtons(), this.createPopup(), this._navigatable(), this.mainButton.main = !0, this.enable(e.enable), e.hidden && this.hide(), i.data({ type: "splitButton", splitButton: this, kendoPopup: this.popup });
            }, _navigatable: function _navigatable() {
                var e = this;e.popupElement.on("keydown", "." + U, function (o) {
                    var i = t(o.target).parent();o.preventDefault(), o.keyCode === O.ESC || o.keyCode === O.TAB || o.altKey && o.keyCode === O.UP ? (e.toggle(), e.focus()) : o.keyCode === O.DOWN ? l(i, "next").focus() : o.keyCode === O.UP ? l(i, "prev").focus() : o.keyCode !== O.SPACEBAR && o.keyCode !== O.ENTER || e.toolbar.userEvents.trigger("tap", { target: t(o.target) });
                });
            }, createMenuButtons: function createMenuButtons() {
                var e,
                    o,
                    i = this.options,
                    n = i.menuButtons;for (o = 0; o < n.length; o++) {
                    e = new p(t.extend({ mobile: i.mobile, type: "button", click: i.click }, n[o]), this.toolbar), e.element.wrap("<li></li>").parent().appendTo(this.popupElement);
                }
            }, createPopup: function createPopup() {
                var e = this.options,
                    i = this.element;this.popupElement.attr("id", e.id + "_optionlist").attr(ht, e.rootUid), e.mobile && (this.popupElement = n(this.popupElement)), this.popup = this.popupElement.kendoPopup({ appendTo: e.mobile ? t(e.mobile).children(".km-pane") : null, anchor: i, isRtl: this.toolbar._isRtl, copyAnchorStyles: !1, animation: e.animation, open: o, activate: function activate() {
                        this.element.find(":kendoFocusable").first().focus();
                    }, close: function close() {
                        i.focus();
                    } }).data("kendoPopup"), this.popup.element.on(et, "a.k-button", s);
            }, remove: function remove() {
                this.popup.element.off(et, "a.k-button"), this.popup.destroy(), this.element.remove();
            }, toggle: function toggle() {
                this.popup.toggle();
            }, enable: function enable(t) {
                t === e && (t = !0), this.mainButton.enable(t), this.options.enable = t;
            }, focus: function focus() {
                this.element.focus();
            }, hide: function hide() {
                this.popup && this.popup.close(), this.element.addClass(W).hide(), this.options.hidden = !0;
            }, show: function show() {
                this.element.removeClass(W).hide(), this.options.hidden = !1;
            } }), _.toolbar.ToolBarSplitButton = m, b = r.extend({ init: function init(e, o) {
                var i,
                    n,
                    s = this.element = t('<li class="' + F + '"></li>'),
                    l = e.menuButtons;for (this.options = e, this.toolbar = o, this.overflow = !0, this.mainButton = new h(t.extend({ isChild: !0 }, e)), this.mainButton.element.appendTo(s), n = 0; n < l.length; n++) {
                    i = new h(t.extend({ mobile: e.mobile, isChild: !0 }, l[n]), this.toolbar), i.element.appendTo(s);
                }this.addUidAttr(), this.addOverflowAttr(), this.mainButton.main = !0, s.data({ type: "splitButton", splitButton: this });
            }, overflowHidden: function overflowHidden() {
                this.element.addClass(pt);
            } }), _.toolbar.OverflowSplitButton = b, _.toolbar.registerComponent("splitButton", m, b), v = r.extend({ init: function init(e, o) {
                var i = this.element = t("<div>&nbsp;</div>");this.element = i, this.options = e, this.toolbar = o, this.attributes(), this.addIdAttr(), this.addUidAttr(), this.addOverflowAttr(), i.addClass(H), i.data({ type: "separator", separator: this });
            } }), g = r.extend({ init: function init(e, o) {
                var i = this.element = t("<li>&nbsp;</li>");this.element = i, this.options = e, this.toolbar = o, this.overflow = !0, this.attributes(), this.addUidAttr(), this.addOverflowIdAttr(), i.addClass(H), i.data({ type: "separator", separator: this });
            }, overflowHidden: function overflowHidden() {
                this.element.addClass(pt);
            } }), _.toolbar.registerComponent("separator", v, g), w = r.extend({ init: function init(e, o, i) {
                var n = T(e) ? e(o) : e;n = n instanceof jQuery ? n.wrap("<div></div>").parent() : t("<div></div>").html(n), this.element = n, this.options = o, this.options.type = "template", this.toolbar = i, this.attributes(), this.addUidAttr(), this.addIdAttr(), this.addOverflowAttr(), n.data({ type: "template", template: this });
            } }), _.toolbar.TemplateItem = w, k = r.extend({ init: function init(e, o, i) {
                var n = t(T(e) ? e(o) : e);n = n instanceof jQuery ? n.wrap("<li></li>").parent() : t("<li></li>").html(n), this.element = n, this.options = o, this.options.type = "template", this.toolbar = i, this.overflow = !0, this.attributes(), this.addUidAttr(), this.addOverflowIdAttr(), this.addOverflowAttr(), n.data({ type: "template", template: this });
            }, overflowHidden: function overflowHidden() {
                this.element.addClass(pt);
            } }), _.toolbar.OverflowTemplateItem = k, C = A.extend({ init: function init(t) {
                this.name = t, this.buttons = [];
            }, add: function add(t) {
                this.buttons[this.buttons.length] = t;
            }, remove: function remove(e) {
                var o = t.inArray(e, this.buttons);this.buttons.splice(o, 1);
            }, select: function select(t) {
                var e, o;for (o = 0; o < this.buttons.length; o++) {
                    e = this.buttons[o], e.select(!1);
                }t.select(!0), t.twin() && t.twin().select(!0);
            } }), y = x.extend({ init: function init(e, o) {
                var n,
                    l = this;if (x.fn.init.call(l, e, o), o = l.options, e = l.wrapper = l.element, e.addClass(I + " k-widget"), this.uid = _.guid(), this._isRtl = _.support.isRtl(e), this._groups = {}, e.attr(ht, this.uid), l.isMobile = "boolean" == typeof o.mobile ? o.mobile : l.element.closest(".km-root")[0], l.animation = l.isMobile ? { open: { effects: "fade" } } : {}, l.isMobile && (e.addClass("km-widget"), Q = "km-icon", V = "km-", U = "km-button", G = "km-buttongroup km-widget", M = "km-state-active", S = "km-state-disabled"), o.resizable ? (l._renderOverflow(), e.addClass(R), l.overflowUserEvents = new _.UserEvents(l.element, { threshold: 5, allowSelection: !0, filter: "." + Y, tap: B(l._toggleOverflow, l) }), l._resizeHandler = _.onResize(function () {
                    l.resize();
                })) : l.popup = { element: t([]) }, o.items && o.items.length) for (n = 0; n < o.items.length; n++) {
                    l.add(o.items[n]);
                }l.userEvents = new _.UserEvents(document, { threshold: 5, allowSelection: !0, filter: "[" + ht + "=" + this.uid + "] a." + U + ", [" + ht + "=" + this.uid + "] ." + P, tap: B(l._buttonClick, l), press: i, release: i }), l.element.on(et, "a.k-button", s), l._navigatable(), o.resizable && l.popup.element.on(et, NaN, s), o.resizable && this._toggleOverflowAnchor(), _.notify(l);
            }, events: [et, ot, it, nt, st, lt], options: { name: "ToolBar", items: [], resizable: !0, mobile: null }, addToGroup: function addToGroup(t, e) {
                var o;return o = this._groups[e] ? this._groups[e] : this._groups[e] = new C(), o.add(t), o;
            }, destroy: function destroy() {
                var e = this;e.element.find("." + F).each(function (e, o) {
                    t(o).data("kendoPopup").destroy();
                }), e.element.off(et, "a.k-button"), e.userEvents.destroy(), e.options.resizable && (_.unbindResize(e._resizeHandler), e.overflowUserEvents.destroy(), e.popup.element.off(et, "a.k-button"), e.popup.destroy()), x.fn.destroy.call(e);
            }, add: function add(e) {
                var o,
                    i,
                    n,
                    s = a[e.type],
                    l = e.template,
                    r = this,
                    d = r.isMobile ? "" : "k-item k-state-default",
                    p = e.overflowTemplate;if (t.extend(e, { uid: _.guid(), animation: r.animation, mobile: r.isMobile, rootUid: r.uid }), e.menuButtons) for (n = 0; n < e.menuButtons.length; n++) {
                    t.extend(e.menuButtons[n], { uid: _.guid() });
                }l && !p ? e.overflow = at : e.overflow || (e.overflow = rt), e.overflow !== at && r.options.resizable && (p ? i = new k(p, e, r) : s && (i = new s.overflow(e, r), i.element.addClass(d)), i && (e.overflow === rt && i.overflowHidden(), i.element.appendTo(r.popup.container), r.angular("compile", function () {
                    return { elements: i.element.get() };
                }))), e.overflow !== dt && (l ? o = new w(l, e, r) : s && (o = new s.toolbar(e, r)), o && (r.options.resizable ? (o.element.appendTo(r.element).css("visibility", "hidden"), r._shrink(r.element.innerWidth()), o.element.css("visibility", "visible")) : o.element.appendTo(r.element), r.angular("compile", function () {
                    return { elements: o.element.get() };
                })));
            }, _getItem: function _getItem(e) {
                var o,
                    i,
                    n,
                    s,
                    l = this.options.resizable;return o = this.element.find(e), o.length || (o = t(".k-split-container[data-uid=" + this.uid + "]").find(e)), s = o.length ? o.data("type") : "", i = o.data(s), i ? (i.main && (o = o.parent("." + F), s = "splitButton", i = o.data(s)), l && (n = i.twin())) : l && (o = this.popup.element.find(e), s = o.length ? o.data("type") : "", n = o.data(s), n && n.main && (o = o.parent("." + F), s = "splitButton", n = o.data(s))), { type: s, toolbar: i, overflow: n };
            }, remove: function remove(t) {
                var e = this._getItem(t);e.toolbar && e.toolbar.remove(), e.overflow && e.overflow.remove(), this.resize(!0);
            }, hide: function hide(t) {
                var e = this._getItem(t);e.toolbar && ("button" === e.toolbar.options.type && e.toolbar.options.isChild ? (e.toolbar.hide(), e.toolbar.getParentGroup().refresh()) : e.toolbar.options.hidden || e.toolbar.hide()), e.overflow && ("button" === e.overflow.options.type && e.overflow.options.isChild ? (e.overflow.hide(), e.overflow.getParentGroup().refresh()) : e.overflow.options.hidden || e.overflow.hide()), this.resize(!0);
            }, show: function show(t) {
                var e = this._getItem(t);e.toolbar && ("button" === e.toolbar.options.type && e.toolbar.options.isChild ? (e.toolbar.show(), e.toolbar.getParentGroup().refresh()) : e.toolbar.options.hidden && e.toolbar.show()), e.overflow && ("button" === e.overflow.options.type && e.overflow.options.isChild ? (e.toolbar.show(), e.overflow.getParentGroup().refresh()) : e.overflow.options.hidden && e.overflow.show()), this.resize(!0);
            }, enable: function enable(t, o) {
                var i = this._getItem(t);e === o && (o = !0), i.toolbar && i.toolbar.enable(o), i.overflow && i.overflow.enable(o);
            }, getSelectedFromGroup: function getSelectedFromGroup(t) {
                return this.element.find("." + z + "[data-group='" + t + "']").filter("." + M);
            }, toggle: function toggle(o, i) {
                var n = t(o),
                    s = n.data("button");s.options.togglable && (i === e && (i = !0), s.toggle(i, !0));
            }, _renderOverflow: function _renderOverflow() {
                var e = this,
                    o = a.overflowContainer,
                    i = e._isRtl,
                    s = i ? "left" : "right";e.overflowAnchor = t(a.overflowAnchor).addClass(U), e.element.append(e.overflowAnchor), e.isMobile ? (e.overflowAnchor.append('<span class="km-icon km-more"></span>'), o = n(o)) : e.overflowAnchor.append('<span class="k-icon k-i-arrow-s"></span>'), e.popup = new _.ui.Popup(o, { origin: "bottom " + s, position: "top " + s, anchor: e.overflowAnchor, isRtl: i, animation: e.animation, appendTo: e.isMobile ? t(e.isMobile).children(".km-pane") : null, copyAnchorStyles: !1, open: function open(o) {
                        var n = _.wrap(e.popup.element).addClass("k-overflow-wrapper");e.isMobile ? e.popup.container.css("max-height", parseFloat(t(".km-content:visible").innerHeight()) - 15 + "px") : n.css("margin-left", (i ? -1 : 1) * ((E(n) - n.width()) / 2 + 1)), e.trigger(st) && o.preventDefault();
                    }, activate: function activate() {
                        this.element.find(":kendoFocusable").first().focus();
                    }, close: function close(t) {
                        e.trigger(lt) && t.preventDefault(), this.element.focus();
                    } }), e.popup.element.on("keydown", "." + U, function (o) {
                    var i,
                        n = t(o.target),
                        s = n.parent(),
                        a = s.is("." + G) || s.is("." + F);o.preventDefault(), o.keyCode === O.ESC || o.keyCode === O.TAB || o.altKey && o.keyCode === O.UP ? (e._toggleOverflow(), e.overflowAnchor.focus()) : o.keyCode === O.DOWN ? (i = !a || a && n.is(":last-child") ? s : n, l(i, "next").focus()) : o.keyCode === O.UP ? (i = !a || a && n.is(":first-child") ? s : n, l(i, "prev").focus()) : o.keyCode !== O.SPACEBAR && o.keyCode !== O.ENTER || e.userEvents.trigger("tap", { target: t(o.target) });
                }), e.popup.container = e.isMobile ? e.popup.element.find("." + Z) : e.popup.element, e.popup.container.attr(ht, this.uid);
            }, _toggleOverflowAnchor: function _toggleOverflowAnchor() {
                var t = !1;t = this.options.mobile ? this.popup.element.find("." + Z).children(":not(." + pt + ", ." + D + ")").length > 0 : this.popup.element.children(":not(." + pt + ", ." + D + ")").length > 0, this.overflowAnchor.css(t ? { visibility: "visible", width: "" } : { visibility: "hidden", width: "1px" });
            }, _buttonClick: function _buttonClick(o) {
                var i,
                    n,
                    s,
                    l,
                    a,
                    r,
                    d,
                    p = this,
                    h = o.target.closest("." + X).length;return o.preventDefault(), h ? (p._toggle(o), e) : (n = t(o.target).closest("." + U, p.element), n.hasClass(Y) || (s = n.data("button"), !s && p.popup && (n = t(o.target).closest("." + P, p.popup.container), s = n.parent("li").data("button")), s && s.options.enable && (s.options.togglable ? (a = T(s.toggleHandler) ? s.toggleHandler : null, s.toggle(!s.options.selected, !0), r = { target: n, group: s.options.group, checked: s.options.selected, id: s.options.id }, a && a.call(p, r), p.trigger(ot, r)) : (a = T(s.clickHandler) ? s.clickHandler : null, r = { sender: p, target: n, id: s.options.id }, a && a.call(p, r), p.trigger(et, r)), s.options.url && (s.options.attributes && s.options.attributes.target && (d = s.options.attributes.target), window.open(s.options.url, d || "_self")), n.hasClass(P) && p.popup.close(), l = n.closest(".k-split-container"), l[0] && (i = l.data("kendoPopup"), (i ? i : l.parents(".km-popup-wrapper").data("kendoPopup")).close()))), e);
            }, _navigatable: function _navigatable() {
                var e = this;e.element.attr("tabindex", 0).focus(function () {
                    var e = t(this).find(":kendoFocusable:first");e.is("." + Y) && (e = l(e, "next")), e[0].focus();
                }).on("keydown", B(e._keydown, e));
            }, _keydown: function _keydown(o) {
                var i,
                    n,
                    s,
                    l,
                    a,
                    r,
                    d,
                    p = t(o.target),
                    h = o.keyCode,
                    u = this.element.children(":not(.k-separator):visible");return h === O.TAB && (i = p.parentsUntil(this.element).last(), n = !1, s = !1, i.length || (i = p), i.is("." + Y) && (o.shiftKey && o.preventDefault(), u.last().is(":kendoFocusable") ? u.last().focus() : u.last().find(":kendoFocusable").last().focus()), o.shiftKey || u.index(i) !== u.length - 1 || (n = !i.is("." + G) || p.is(":last-child")), l = u.index(i) === u.not(".k-overflow-anchor").first().index(), o.shiftKey && l && (s = !i.is("." + G) || p.is(":first-child")), n && this.overflowAnchor && "hidden" !== this.overflowAnchor.css("visibility") && (o.preventDefault(), this.overflowAnchor.focus()), s && (o.preventDefault(), a = this._getPrevFocusable(this.wrapper), a && a.focus())), o.altKey && h === O.DOWN ? (r = t(document.activeElement).data("splitButton"), d = t(document.activeElement).is("." + Y), r ? r.toggle() : d && this._toggleOverflow(), e) : h !== O.SPACEBAR && h !== O.ENTER || p.is("input, checkbox") ? e : (o.preventDefault(), p.is("." + F) && (p = p.children().first()), this.userEvents.trigger("tap", { target: p }), e);
            }, _getPrevFocusable: function _getPrevFocusable(o) {
                if (o.is("html")) return o;var i,
                    n,
                    s = o.prevAll();return s.each(function () {
                    return n = t(this), n.is(":kendoFocusable") ? (i = n, !1) : n.find(":kendoFocusable").length > 0 ? (i = n.find(":kendoFocusable").last(), !1) : e;
                }), i ? i : this._getPrevFocusable(o.parent());
            }, _toggle: function _toggle(e) {
                var o,
                    i = t(e.target).closest("." + F).data("splitButton");e.preventDefault(), i.options.enable && (o = i.popup.element.is(":visible") ? this.trigger(nt, { target: i.element }) : this.trigger(it, { target: i.element }), o || i.toggle());
            }, _toggleOverflow: function _toggleOverflow() {
                this.popup.toggle();
            }, _resize: function _resize(t) {
                var e = t.width;this.options.resizable && (this.popup.close(), this._shrink(e), this._stretch(e), this._markVisibles(), this._toggleOverflowAnchor());
            }, _childrenWidth: function _childrenWidth() {
                var e = 0;return this.element.children(":visible:not('." + W + "')").each(function () {
                    e += E(t(this), !0);
                }), Math.ceil(e);
            }, _shrink: function _shrink(t) {
                var e, o, i;if (t < this._childrenWidth()) for (o = this.element.children(":visible:not([data-overflow='never'], ." + Y + ")"), i = o.length - 1; i >= 0 && (e = o.eq(i), !(t > this._childrenWidth())); i--) {
                    this._hideItem(e);
                }
            }, _stretch: function _stretch(t) {
                var e, o, i;if (t > this._childrenWidth()) for (o = this.element.children(":hidden:not('." + W + "')"), i = 0; i < o.length && (e = o.eq(i), !(t < this._childrenWidth()) && this._showItem(e, t)); i++) {}
            }, _hideItem: function _hideItem(t) {
                t.hide(), this.popup && this.popup.container.find(">li[data-uid='" + t.data("uid") + "']").removeClass(pt);
            }, _showItem: function _showItem(t, e) {
                return !!(t.length && e > this._childrenWidth() + E(t, !0)) && (t.show(), this.popup && this.popup.container.find(">li[data-uid='" + t.data("uid") + "']").addClass(pt), !0);
            }, _markVisibles: function _markVisibles() {
                var t = this.popup.container.children(),
                    e = this.element.children(":not(.k-overflow-anchor)"),
                    o = t.filter(":not(.k-overflow-hidden)"),
                    i = e.filter(":visible");t.add(e).removeClass($ + " " + tt), o.first().add(i.first()).addClass($), o.last().add(i.last()).addClass(tt);
            } }), _.ui.plugin(y);
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, o) {
    (o || e)();
});;!function (t, define) {
    define("util/main.min", ["kendo.core.min"], t);
}(function () {
    return function () {
        function t(t) {
            return (typeof t === "undefined" ? "undefined" : _typeof(t)) !== U;
        }function e(t, e) {
            var n = i(e);return z.round(t * n) / n;
        }function i(t) {
            return t ? z.pow(10, t) : 1;
        }function n(t, e, i) {
            return z.max(z.min(t, i), e);
        }function o(t) {
            return t * R;
        }function s(t) {
            return t / R;
        }function r(t) {
            return "number" == typeof t && !isNaN(t);
        }function a(e, i) {
            return t(e) ? e : i;
        }function h(t) {
            return t * t;
        }function c(t) {
            var e,
                i = [];for (e in t) {
                i.push(e + t[e]);
            }return i.sort().join("");
        }function d(t) {
            var e,
                i = 2166136261;for (e = 0; e < t.length; ++e) {
                i += (i << 1) + (i << 4) + (i << 7) + (i << 8) + (i << 24), i ^= t.charCodeAt(e);
            }return i >>> 0;
        }function l(t) {
            return d(c(t));
        }function u(t) {
            var e,
                i = t.length,
                n = A,
                o = O;for (e = 0; e < i; e++) {
                o = z.max(o, t[e]), n = z.min(n, t[e]);
            }return { min: n, max: o };
        }function f(t) {
            return u(t).min;
        }function p(t) {
            return u(t).max;
        }function g(t) {
            return _(t).min;
        }function m(t) {
            return _(t).max;
        }function _(t) {
            var e,
                i,
                n,
                o = A,
                s = O;for (e = 0, i = t.length; e < i; e++) {
                n = t[e], null !== n && isFinite(n) && (o = z.min(o, n), s = z.max(s, n));
            }return { min: o === A ? void 0 : o, max: s === O ? void 0 : s };
        }function v(t) {
            if (t) return t[t.length - 1];
        }function y(t, e) {
            return t.push.apply(t, e), t;
        }function w(t) {
            return B.template(t, { useWithBlock: !1, paramName: "d" });
        }function x(e, i) {
            return t(i) && null !== i ? " " + e + "='" + i + "' " : "";
        }function b(t) {
            var e,
                i = "";for (e = 0; e < t.length; e++) {
                i += x(t[e][0], t[e][1]);
            }return i;
        }function C(e) {
            var i,
                n,
                o = "";for (i = 0; i < e.length; i++) {
                n = e[i][1], t(n) && (o += e[i][0] + ":" + n + ";");
            }if ("" !== o) return o;
        }function S(t) {
            return "string" != typeof t && (t += "px"), t;
        }function k(t) {
            var e,
                i,
                n = [];if (t) for (e = B.toHyphens(t).split("-"), i = 0; i < e.length; i++) {
                n.push("k-pos-" + e[i]);
            }return n.join(" ");
        }function T(e) {
            return "" === e || null === e || "none" === e || "transparent" === e || !t(e);
        }function M(t) {
            for (var e = { 1: "i", 10: "x", 100: "c", 2: "ii", 20: "xx", 200: "cc", 3: "iii", 30: "xxx", 300: "ccc", 4: "iv", 40: "xl", 400: "cd", 5: "v", 50: "l", 500: "d", 6: "vi", 60: "lx", 600: "dc", 7: "vii", 70: "lxx", 700: "dcc", 8: "viii", 80: "lxxx", 800: "dccc", 9: "ix", 90: "xc", 900: "cm", 1e3: "m" }, i = [1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], n = ""; t > 0;) {
                t < i[0] ? i.shift() : (n += e[i[0]], t -= i[0]);
            }return n;
        }function D(t) {
            var e, i, n, o, s;for (t = t.toLowerCase(), e = { i: 1, v: 5, x: 10, l: 50, c: 100, d: 500, m: 1e3 }, i = 0, n = 0, o = 0; o < t.length; ++o) {
                if (s = e[t.charAt(o)], !s) return null;i += s, s > n && (i -= 2 * n), n = s;
            }return i;
        }function I(t) {
            var e = Object.create(null);return function () {
                var i,
                    n = "";for (i = arguments.length; --i >= 0;) {
                    n += ":" + arguments[i];
                }return n in e ? e[n] : e[n] = t.apply(this, arguments);
            };
        }function P(t) {
            for (var e, i, n = [], o = 0, s = t.length; o < s;) {
                e = t.charCodeAt(o++), e >= 55296 && e <= 56319 && o < s ? (i = t.charCodeAt(o++), 56320 == (64512 & i) ? n.push(((1023 & e) << 10) + (1023 & i) + 65536) : (n.push(e), o--)) : n.push(e);
            }return n;
        }function L(t) {
            return t.map(function (t) {
                var e = "";return t > 65535 && (t -= 65536, e += String.fromCharCode(t >>> 10 & 1023 | 55296), t = 56320 | 1023 & t), e += String.fromCharCode(t);
            }).join("");
        }function E(t, e) {
            function i(t, i) {
                for (var n = [], o = 0, s = 0, r = 0; o < t.length && s < i.length;) {
                    e(t[o], i[s]) <= 0 ? n[r++] = t[o++] : n[r++] = i[s++];
                }return o < t.length && n.push.apply(n, t.slice(o)), s < i.length && n.push.apply(n, i.slice(s)), n;
            }return t.length < 2 ? t.slice() : function n(t) {
                var e, o, s;return t.length <= 1 ? t : (e = Math.floor(t.length / 2), o = t.slice(0, e), s = t.slice(e), o = n(o), s = n(s), i(o, s));
            }(t);
        }var z = Math,
            B = window.kendo,
            N = B.deepExtend,
            R = z.PI / 180,
            A = Number.MAX_VALUE,
            O = -Number.MAX_VALUE,
            U = "undefined",
            V = Date.now;V || (V = function V() {
            return new Date().getTime();
        }), N(B, { util: { MAX_NUM: A, MIN_NUM: O, append: y, arrayLimits: u, arrayMin: f, arrayMax: p, defined: t, deg: s, hashKey: d, hashObject: l, isNumber: r, isTransparent: T, last: v, limitValue: n, now: V, objectKey: c, round: e, rad: o, renderAttr: x, renderAllAttr: b, renderPos: k, renderSize: S, renderStyle: C, renderTemplate: w, sparseArrayLimits: _, sparseArrayMin: g, sparseArrayMax: m, sqr: h, valueOrDefault: a, romanToArabic: D, arabicToRoman: M, memoize: I, ucs2encode: L, ucs2decode: P, mergeSort: E } }), B.drawing.util = B.util, B.dataviz.util = B.util;
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("util/text-metrics.min", ["kendo.core.min", "util/main.min"], t);
}(function () {
    !function (t) {
        function e() {
            return { width: 0, height: 0, baseline: 0 };
        }function i(t, e, i) {
            return l.current.measure(t, e, i);
        }function n(t, e) {
            var i = [];if (t.length > 0 && document.fonts) {
                try {
                    i = t.map(function (t) {
                        return document.fonts.load(t);
                    });
                } catch (n) {
                    s.logToConsole(n);
                }Promise.all(i).then(e, e);
            } else e();
        }var o = document,
            s = window.kendo,
            r = s.Class,
            a = s.util,
            h = a.defined,
            c = r.extend({ init: function init(t) {
                this._size = t, this._length = 0, this._map = {};
            }, put: function put(t, e) {
                var i = this,
                    n = i._map,
                    o = { key: t, value: e };n[t] = o, i._head ? (i._tail.newer = o, o.older = i._tail, i._tail = o) : i._head = i._tail = o, i._length >= i._size ? (n[i._head.key] = null, i._head = i._head.newer, i._head.older = null) : i._length++;
            }, get: function get(t) {
                var e = this,
                    i = e._map[t];if (i) return i === e._head && i !== e._tail && (e._head = i.newer, e._head.older = null), i !== e._tail && (i.older && (i.older.newer = i.newer, i.newer.older = i.older), i.older = e._tail, i.newer = null, e._tail.newer = i, e._tail = i), i.value;
            } }),
            d = t("<div style='position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;padding: 0 !important; margin: 0 !important; border: 0 !important;line-height: normal !important; visibility: hidden !important; white-space: nowrap!important;' />")[0],
            l = r.extend({ init: function init(t) {
                this._cache = new c(1e3), this._initOptions(t);
            }, options: { baselineMarkerSize: 1 }, measure: function measure(i, n, s) {
                var r, c, l, u, f, p, g, m;if (!i) return e();if (r = a.objectKey(n), c = a.hashKey(i + r), l = this._cache.get(c), l) return l;u = e(), f = s ? s : d, p = this._baselineMarker().cloneNode(!1);for (g in n) {
                    m = n[g], h(m) && (f.style[g] = m);
                }return t(f).text(i), f.appendChild(p), o.body.appendChild(f), (i + "").length && (u.width = f.offsetWidth - this.options.baselineMarkerSize, u.height = f.offsetHeight, u.baseline = p.offsetTop + this.options.baselineMarkerSize), u.width > 0 && u.height > 0 && this._cache.put(c, u), f.parentNode.removeChild(f), u;
            }, _baselineMarker: function _baselineMarker() {
                return t("<div class='k-baseline-marker' style='display: inline-block; vertical-align: baseline;width: " + this.options.baselineMarkerSize + "px; height: " + this.options.baselineMarkerSize + "px;overflow: hidden;' />")[0];
            } });l.current = new l(), s.util.TextMetrics = l, s.util.LRUCache = c, s.util.loadFonts = n, s.util.measureText = i;
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("util/base64.min", ["util/main.min"], t);
}(function () {
    return function () {
        function t(t) {
            var i,
                n,
                o,
                r,
                a,
                h,
                c,
                d = "",
                l = 0;for (t = e(t); l < t.length;) {
                i = t.charCodeAt(l++), n = t.charCodeAt(l++), o = t.charCodeAt(l++), r = i >> 2, a = (3 & i) << 4 | n >> 4, h = (15 & n) << 2 | o >> 6, c = 63 & o, isNaN(n) ? h = c = 64 : isNaN(o) && (c = 64), d = d + s.charAt(r) + s.charAt(a) + s.charAt(h) + s.charAt(c);
            }return d;
        }function e(t) {
            var e,
                i,
                n = "";for (e = 0; e < t.length; e++) {
                i = t.charCodeAt(e), i < 128 ? n += o(i) : i < 2048 ? (n += o(192 | i >>> 6), n += o(128 | 63 & i)) : i < 65536 && (n += o(224 | i >>> 12), n += o(128 | i >>> 6 & 63), n += o(128 | 63 & i));
            }return n;
        }var i = window.kendo,
            n = i.deepExtend,
            o = String.fromCharCode,
            s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n(i.util, { encodeBase64: t, encodeUTF8: e });
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("mixins/observers.min", ["kendo.core.min"], t);
}(function () {
    return function (t) {
        var e = Math,
            i = window.kendo,
            n = i.deepExtend,
            o = t.inArray,
            s = { observers: function observers() {
                return this._observers = this._observers || [];
            }, addObserver: function addObserver(t) {
                return this._observers ? this._observers.push(t) : this._observers = [t], this;
            }, removeObserver: function removeObserver(t) {
                var e = this.observers(),
                    i = o(t, e);return i != -1 && e.splice(i, 1), this;
            }, trigger: function trigger(t, e) {
                var i,
                    n,
                    o = this._observers;if (o && !this._suspended) for (n = 0; n < o.length; n++) {
                    i = o[n], i[t] && i[t](e);
                }return this;
            }, optionsChange: function optionsChange(t) {
                t = t || {}, t.element = this, this.trigger("optionsChange", t);
            }, geometryChange: function geometryChange() {
                this.trigger("geometryChange", { element: this });
            }, suspend: function suspend() {
                return this._suspended = (this._suspended || 0) + 1, this;
            }, resume: function resume() {
                return this._suspended = e.max((this._suspended || 0) - 1, 0), this;
            }, _observerField: function _observerField(t, e) {
                this[t] && this[t].removeObserver(this), this[t] = e, e.addObserver(this);
            } };n(i, { mixins: { ObserversMixin: s } });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/diagram/utils.min", ["kendo.core.min"], t);
}(function () {
    !function (t, e) {
        function i(t, i, n) {
            function o(t) {
                for (var e = 1; t * e % 1;) {
                    e *= 10;
                }return e;
            }var s, r, a, h;if (e === t || e === i) return [];if (n && l.sign(i - t) != l.sign(n)) throw "The sign of the increment should allow to reach the stop-value.";if (n = n || 1, t = t || 0, i = i || t, (i - t) / n === 1 / 0) throw "Infinite range defined.";if (s = [], r = -1, h = o(Math.abs(n)), t *= h, i *= h, n *= h, t > i && n > 0 && (n = -n), n < 0) for (; (a = t + n * ++r) >= i;) {
                s.push(a / h);
            } else for (; (a = t + n * ++r) <= i;) {
                s.push(a / h);
            }return s;
        }function n(t, e) {
            if (t == e) return 0;var i = e.x - t.x,
                n = t.y - e.y,
                o = Math.atan(i / n);return n >= 0 ? i < 0 ? o + 2 * Math.PI : o : o + Math.PI;
        }var o,
            s,
            r = window.kendo,
            a = r.dataviz.diagram = {},
            h = r.deepExtend,
            c = t.isArray,
            d = 1e-6,
            l = {};h(l, { isNearZero: function isNearZero(t) {
                return Math.abs(t) < d;
            }, isDefined: function isDefined(t) {
                return e !== t;
            }, isUndefined: function isUndefined(t) {
                return e === t || null === t;
            }, isObject: function isObject(t) {
                return t === Object(t);
            }, has: function has(t, e) {
                return Object.hasOwnProperty.call(t, e);
            }, isString: function isString(t) {
                return "[object String]" == Object.prototype.toString.call(t);
            }, isBoolean: function isBoolean(t) {
                return "[object Boolean]" == Object.prototype.toString.call(t);
            }, isType: function isType(t, e) {
                return Object.prototype.toString.call(t) == "[object " + e + "]";
            }, isNumber: function isNumber(t) {
                return !isNaN(parseFloat(t)) && isFinite(t);
            }, isEmpty: function isEmpty(t) {
                if (null === t) return !0;if (c(t) || l.isString(t)) return 0 === t.length;for (var e in t) {
                    if (l.has(t, e)) return !1;
                }return !0;
            }, simpleExtend: function simpleExtend(t, e) {
                if (l.isObject(e)) for (var i in e) {
                    t[i] = e[i];
                }
            }, initArray: function initArray(t, e) {
                var i,
                    n = [];for (i = 0; i < t; ++i) {
                    n[i] = e;
                }return n;
            }, serializePoints: function serializePoints(t) {
                var e,
                    i,
                    n = [];for (e = 0; e < t.length; e++) {
                    i = t[e], n.push(i.x + ";" + i.y);
                }return n.join(";");
            }, deserializePoints: function deserializePoints(t) {
                var e,
                    i = t.split(";"),
                    n = [];if (i.length % 2 !== 0) throw "Not an array of points.";for (e = 0; e < i.length; e += 2) {
                    n.push(new a.Point(parseInt(i[e], 10), parseInt(i[e + 1], 10)));
                }return n;
            }, randomInteger: function randomInteger(t, e) {
                return parseInt(Math.floor(Math.random() * e) + t, 10);
            }, DFT: function DFT(t, e) {
                var i, n;if (e(t), t.childNodes) for (i = 0; i < t.childNodes.length; i++) {
                    n = t.childNodes[i], this.DFT(n, e);
                }
            }, getMatrixAngle: function getMatrixAngle(t) {
                return null === t || 0 === t.d ? 0 : 180 * Math.atan2(t.b, t.d) / Math.PI;
            }, getMatrixScaling: function getMatrixScaling(t) {
                var e = Math.sqrt(t.a * t.a + t.c * t.c),
                    i = Math.sqrt(t.b * t.b + t.d * t.d);return [e, i];
            } }), l.sign = function (t) {
            return t ? t < 0 ? -1 : 1 : 0;
        }, l.findAngle = function (t, e) {
            return 180 * n(t, e) / Math.PI;
        }, l.forEach = function (t, e, i) {
            for (var n = 0; n < t.length; n++) {
                e.call(i, t[n], n, t);
            }
        }, l.any = function (t, e) {
            for (var i = 0; i < t.length; ++i) {
                if (e(t[i])) return t[i];
            }return null;
        }, l.remove = function (t, e) {
            for (var i; (i = l.indexOf(t, e)) !== -1;) {
                t.splice(i, 1);
            }return t;
        }, l.contains = function (t, e) {
            return l.indexOf(t, e) !== -1;
        }, l.indexOf = function (e, i) {
            return t.inArray(i, e);
        }, l.fold = function (t, e, i, n) {
            var o,
                s,
                r = arguments.length > 2;for (o = 0; o < t.length; o++) {
                s = t[o], r ? i = e.call(n, i, s, o, t) : (i = s, r = !0);
            }if (!r) throw "Reduce of empty array with no initial value";return i;
        }, l.find = function (t, e, i) {
            var n;return l.any(t, function (t, o, s) {
                return !!e.call(i, t, o, s) && (n = t, !0);
            }), n;
        }, l.first = function (t, e, i) {
            return 0 === t.length ? null : l.isUndefined(e) ? t[0] : l.find(t, e, i);
        }, l.insert = function (t, e, i) {
            return t.splice(i, 0, e), t;
        }, l.all = function (t, e, i) {
            var n,
                o,
                s = !0;for (o = 0; o < t.length && (n = t[o], s = s && e.call(i, n, o, t), s); o++) {}return s;
        }, l.clear = function (t) {
            t.splice(0, t.length);
        }, l.bisort = function (t, e, i) {
            if (l.isUndefined(t)) throw "First array is not specified.";if (l.isUndefined(e)) throw "Second array is not specified.";if (t.length != e.length) throw "The two arrays should have equal length";var n,
                o = [];for (n = 0; n < t.length; n++) {
                o.push({ x: t[n], y: e[n] });
            }for (o.sort(l.isUndefined(i) ? function (t, e) {
                return t.x - e.x;
            } : function (t, e) {
                return i(t.x, e.x);
            }), l.clear(t), l.clear(e), n = 0; n < o.length; n++) {
                t.push(o[n].x), e.push(o[n].y);
            }
        }, l.addRange = function (t, e) {
            t.push.apply(t, e);
        }, o = { easeInOut: function easeInOut(t) {
                return -Math.cos(t * Math.PI) / 2 + .5;
            } }, s = r.Class.extend({ init: function init() {
                this.adapters = [], this.target = 0, this.tick = 0, this.interval = 20, this.duration = 800, this.lastTime = null, this.handlers = [];var t = this;this.transition = o.easeInOut, this.timerDelegate = function () {
                    t.onTimerEvent();
                };
            }, addAdapter: function addAdapter(t) {
                this.adapters.push(t);
            }, onComplete: function onComplete(t) {
                this.handlers.push(t);
            }, removeHandler: function removeHandler(e) {
                this.handlers = t.grep(this.handlers, function (t) {
                    return t !== e;
                });
            }, trigger: function trigger() {
                var t = this;this.handlers && l.forEach(this.handlers, function (e) {
                    return e.call(null !== t.caller ? t.caller : t);
                });
            }, onStep: function onStep() {}, seekTo: function seekTo(t) {
                this.seekFromTo(this.tick, t);
            }, seekFromTo: function seekFromTo(t, e) {
                this.target = Math.max(0, Math.min(1, e)), this.tick = Math.max(0, Math.min(1, t)), this.lastTime = new Date().getTime(), this.intervalId || (this.intervalId = window.setInterval(this.timerDelegate, this.interval));
            }, stop: function stop() {
                this.intervalId && (window.clearInterval(this.intervalId), this.intervalId = null, this.trigger());
            }, play: function play(t) {
                0 !== this.adapters.length && (null !== t && (this.caller = t), this.initState(), this.seekFromTo(0, 1));
            }, reverse: function reverse() {
                this.seekFromTo(1, 0);
            }, initState: function initState() {
                if (0 !== this.adapters.length) for (var t = 0; t < this.adapters.length; t++) {
                    this.adapters[t].initState();
                }
            }, propagate: function propagate() {
                var t,
                    e = this.transition(this.tick);for (t = 0; t < this.adapters.length; t++) {
                    this.adapters[t].update(e);
                }
            }, onTimerEvent: function onTimerEvent() {
                var t,
                    e = new Date().getTime(),
                    i = e - this.lastTime;this.lastTime = e, t = i / this.duration * (this.tick < this.target ? 1 : -1), Math.abs(t) >= Math.abs(this.tick - this.target) ? this.tick = this.target : this.tick += t;try {
                    this.propagate();
                } finally {
                    this.onStep.call(this), this.target == this.tick && this.stop();
                }
            } }), r.deepExtend(a, { init: function init(t) {
                r.init(t, a.ui);
            }, Utils: l, Range: i, Ticker: s });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/diagram/math.min", ["dataviz/diagram/utils.min", "kendo.dataviz.core.min"], t);
}(function () {
    !function (t, e) {
        function i(t) {
            return Math.abs(t) < z;
        }function n(t, e, n, o, s) {
            var r,
                a,
                h,
                c,
                d = (e.x - t.x) * (o.y - n.y) - (e.y - t.y) * (o.x - n.x);if (!i(d) && (r = (t.y - n.y) * (o.x - n.x) - (t.x - n.x) * (o.y - n.y), a = (t.y - n.y) * (e.x - t.x) - (t.x - n.x) * (e.y - t.y), h = r / d, c = a / d, !s || !(h < 0 || h > 1 || c < 0 || c > 1))) return new D(t.x + h * (e.x - t.x), t.y + h * (e.y - t.y));
        }function o(t, e) {
            var i, n, o;do {
                i = 2 * Math.random() - 1, n = 2 * Math.random() - 1, o = i * i + n * n;
            } while (!o || o > 1);return t + e * i * Math.sqrt(-2 * Math.log(o) / o);
        }function s(t) {
            var e, i, n;for (M.isUndefined(t) && (t = 10), e = "", i = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", n = t; n > 0; --n) {
                e += i.charAt(Math.round(Math.random() * (i.length - 1)));
            }return e;
        }var r,
            a,
            h,
            c,
            d,
            l,
            u,
            f,
            p,
            g,
            m,
            _,
            v,
            y,
            w,
            x,
            b = window.kendo,
            C = b.dataviz.diagram,
            S = b.Class,
            k = b.deepExtend,
            T = b.dataviz,
            M = C.Utils,
            D = T.Point2D,
            I = b.isFunction,
            P = M.contains,
            L = t.map,
            E = 3,
            z = 1e-6;k(D.fn, { plus: function plus(t) {
                return new D(this.x + t.x, this.y + t.y);
            }, minus: function minus(t) {
                return new D(this.x - t.x, this.y - t.y);
            }, offset: function offset(t) {
                return new D(this.x - t, this.y - t);
            }, times: function times(t) {
                return new D(this.x * t, this.y * t);
            }, normalize: function normalize() {
                return 0 === this.length() ? new D() : this.times(1 / this.length());
            }, length: function length() {
                return Math.sqrt(this.x * this.x + this.y * this.y);
            }, toString: function toString() {
                return "(" + this.x + "," + this.y + ")";
            }, lengthSquared: function lengthSquared() {
                return this.x * this.x + this.y * this.y;
            }, middleOf: function middleOf(t, e) {
                return new D(e.x - t.x, e.y - t.y).times(.5).plus(t);
            }, toPolar: function toPolar(t) {
                var e,
                    i,
                    n,
                    o = 1;if (t && (o = 180 / Math.PI), e = Math.atan2(Math.abs(this.y), Math.abs(this.x)), i = Math.PI / 2, n = this.length(), 0 === this.x) {
                    if (0 === this.y) return new l(0, 0);if (this.y > 0) return new l(n, o * i);if (this.y < 0) return new l(n, 3 * o * i);
                } else if (this.x > 0) {
                    if (0 === this.y) return new l(n, 0);if (this.y > 0) return new l(n, o * e);if (this.y < 0) return new l(n, o * (4 * i - e));
                } else {
                    if (0 === this.y) return new l(n, 2 * i);if (this.y > 0) return new l(n, o * (2 * i - e));if (this.y < 0) return new l(n, o * (2 * i + e));
                }
            }, isOnLine: function isOnLine(t, e) {
                var i, n, o, s, r;return t.x > e.x && (i = e, e = t, t = i), n = new a(t.x, t.y).inflate(E, E), o = new a(e.x, e.y).inflate(E, E), !!n.union(o).contains(this) && (t.x === e.x || t.y === e.y || (t.y < e.y ? (s = n.x + (o.x - n.x) * (this.y - (n.y + n.height)) / (o.y + o.height - (n.y + n.height)), r = n.x + n.width + (o.x + o.width - (n.x + n.width)) * (this.y - n.y) / (o.y - n.y)) : (s = n.x + (o.x - n.x) * (this.y - n.y) / (o.y - n.y), r = n.x + n.width + (o.x + o.width - (n.x + n.width)) * (this.y - (n.y + n.height)) / (o.y + o.height - (n.y + n.height))), this.x > s && this.x < r));
            } }), k(D, { parse: function parse(t) {
                var e = t.slice(1, t.length - 1),
                    i = e.split(","),
                    n = parseInt(i[0], 10),
                    o = parseInt(i[1], 10);if (!isNaN(n) && !isNaN(o)) return new D(n, o);
            } }), r = S.extend({ init: function init(t, e, i) {
                this.point = t, this.left = e, this.right = i;
            } }), a = S.extend({ init: function init(t, e, i, n) {
                this.x = t || 0, this.y = e || 0, this.width = i || 0, this.height = n || 0;
            }, contains: function contains(t) {
                return t.x >= this.x && t.x <= this.x + this.width && t.y >= this.y && t.y <= this.y + this.height;
            }, inflate: function inflate(t, i) {
                return i === e && (i = t), this.x -= t, this.y -= i, this.width += 2 * t + 1, this.height += 2 * i + 1, this;
            }, offset: function offset(t, e) {
                var i = t,
                    n = e;return t instanceof D && (i = t.x, n = t.y), this.x += i, this.y += n, this;
            }, union: function union(t) {
                var e = Math.min(this.x, t.x),
                    i = Math.min(this.y, t.y),
                    n = Math.max(this.x + this.width, t.x + t.width),
                    o = Math.max(this.y + this.height, t.y + t.height);return new a(e, i, n - e, o - i);
            }, center: function center() {
                return new D(this.x + this.width / 2, this.y + this.height / 2);
            }, top: function top() {
                return new D(this.x + this.width / 2, this.y);
            }, right: function right() {
                return new D(this.x + this.width, this.y + this.height / 2);
            }, bottom: function bottom() {
                return new D(this.x + this.width / 2, this.y + this.height);
            }, left: function left() {
                return new D(this.x, this.y + this.height / 2);
            }, topLeft: function topLeft() {
                return new D(this.x, this.y);
            }, topRight: function topRight() {
                return new D(this.x + this.width, this.y);
            }, bottomLeft: function bottomLeft() {
                return new D(this.x, this.y + this.height);
            }, bottomRight: function bottomRight() {
                return new D(this.x + this.width, this.y + this.height);
            }, clone: function clone() {
                return new a(this.x, this.y, this.width, this.height);
            }, isEmpty: function isEmpty() {
                return !this.width && !this.height;
            }, equals: function equals(t) {
                return this.x === t.x && this.y === t.y && this.width === t.width && this.height === t.height;
            }, rotatedBounds: function rotatedBounds(t) {
                var e = this.clone(),
                    i = this.rotatedPoints(t),
                    n = i[0],
                    o = i[1],
                    s = i[2],
                    r = i[3];return e.x = Math.min(s.x, n.x, o.x, r.x), e.y = Math.min(s.y, n.y, o.y, r.y), e.width = Math.max(s.x, n.x, o.x, r.x) - e.x, e.height = Math.max(s.y, n.y, o.y, r.y) - e.y, e;
            }, rotatedPoints: function rotatedPoints(t) {
                var e = this,
                    i = e.center(),
                    n = e.bottomRight().rotate(i, 360 - t),
                    o = e.topLeft().rotate(i, 360 - t),
                    s = e.topRight().rotate(i, 360 - t),
                    r = e.bottomLeft().rotate(i, 360 - t);return [o, s, n, r];
            }, toString: function toString(t) {
                return t = t || " ", this.x + t + this.y + t + this.width + t + this.height;
            }, scale: function scale(t, e, i, n, o) {
                var s,
                    r,
                    a,
                    h = this.topLeft(),
                    c = this.center();h.rotate(c, 360 - o).rotate(n, o), s = i.minus(h), r = new D(s.x * t, s.y * e), a = s.minus(r), h = h.plus(a), h.rotate(n, 360 - o).rotate(c, o), this.x = h.x, this.y = h.y, this.width *= t, this.height *= e;
            }, zoom: function zoom(t) {
                return this.x *= t, this.y *= t, this.width *= t, this.height *= t, this;
            }, overlaps: function overlaps(t) {
                var e = this.bottomRight(),
                    i = t.bottomRight(),
                    n = !(e.x < t.x || e.y < t.y || i.x < this.x || i.y < this.y);return n;
            } }), h = S.extend({ init: function init(t, e) {
                this.width = t, this.height = e;
            } }), h.prototype.Empty = new h(0, 0), a.toRect = function (t) {
            return t instanceof a || (t = new a(t.x, t.y, t.width, t.height)), t;
        }, a.empty = function () {
            return new a(0, 0, 0, 0);
        }, a.fromPoints = function (t, e) {
            if (isNaN(t.x) || isNaN(t.y) || isNaN(e.x) || isNaN(e.y)) throw "Some values are NaN.";return new a(Math.min(t.x, e.x), Math.min(t.y, e.y), Math.abs(t.x - e.x), Math.abs(t.y - e.y));
        }, c = { lines: function lines(t, e, i, o) {
                return n(t, e, i, o);
            }, segments: function segments(t, e, i, o) {
                return n(t, e, i, o, !0);
            }, rectWithLine: function rectWithLine(t, e, i) {
                return c.segments(e, i, t.topLeft(), t.topRight()) || c.segments(e, i, t.topRight(), t.bottomRight()) || c.segments(e, i, t.bottomLeft(), t.bottomRight()) || c.segments(e, i, t.topLeft(), t.bottomLeft());
            }, rects: function rects(t, e, i) {
                var n,
                    o,
                    s = e.topLeft(),
                    r = e.topRight(),
                    a = e.bottomLeft(),
                    h = e.bottomRight(),
                    d = e.center();return i && (s = s.rotate(d, i), r = r.rotate(d, i), a = a.rotate(d, i), h = h.rotate(d, i)), n = t.contains(s) || t.contains(r) || t.contains(a) || t.contains(h) || c.rectWithLine(t, s, r) || c.rectWithLine(t, s, a) || c.rectWithLine(t, r, h) || c.rectWithLine(t, a, h), n || (s = t.topLeft(), r = t.topRight(), a = t.bottomLeft(), h = t.bottomRight(), i && (o = 360 - i, s = s.rotate(d, o), r = r.rotate(d, o), a = a.rotate(d, o), h = h.rotate(d, o)), n = e.contains(s) || e.contains(r) || e.contains(a) || e.contains(h)), n;
            } }, d = S.extend({ init: function init(t) {
                this.container = a.toRect(t);
            }, align: function align(t, e) {
                var i,
                    n = e.toLowerCase().split(" ");for (i = 0; i < n.length; i++) {
                    t = this._singleAlign(t, n[i]);
                }return t;
            }, _singleAlign: function _singleAlign(t, e) {
                return I(this[e]) ? this[e](t) : t;
            }, left: function left(t) {
                return this._align(t, this._left);
            }, center: function center(t) {
                return this._align(t, this._center);
            }, right: function right(t) {
                return this._align(t, this._right);
            }, stretch: function stretch(t) {
                return this._align(t, this._stretch);
            }, top: function top(t) {
                return this._align(t, this._top);
            }, middle: function middle(t) {
                return this._align(t, this._middle);
            }, bottom: function bottom(t) {
                return this._align(t, this._bottom);
            }, _left: function _left(t, e) {
                e.x = t.x;
            }, _center: function _center(t, e) {
                e.x = (t.width - e.width) / 2 || 0;
            }, _right: function _right(t, e) {
                e.x = t.width - e.width;
            }, _top: function _top(t, e) {
                e.y = t.y;
            }, _middle: function _middle(t, e) {
                e.y = (t.height - e.height) / 2 || 0;
            }, _bottom: function _bottom(t, e) {
                e.y = t.height - e.height;
            }, _stretch: function _stretch(t, e) {
                e.x = 0, e.y = 0, e.height = t.height, e.width = t.width;
            }, _align: function _align(t, e) {
                return t = a.toRect(t), e(this.container, t), t;
            } }), l = S.extend({ init: function init(t, e) {
                this.r = t, this.angle = e;
            } }), u = S.extend({ init: function init(t, e, i, n, o, s) {
                this.a = t || 0, this.b = e || 0, this.c = i || 0, this.d = n || 0, this.e = o || 0, this.f = s || 0;
            }, plus: function plus(t) {
                this.a += t.a, this.b += t.b, this.c += t.c, this.d += t.d, this.e += t.e, this.f += t.f;
            }, minus: function minus(t) {
                this.a -= t.a, this.b -= t.b, this.c -= t.c, this.d -= t.d, this.e -= t.e, this.f -= t.f;
            }, times: function times(t) {
                return new u(this.a * t.a + this.c * t.b, this.b * t.a + this.d * t.b, this.a * t.c + this.c * t.d, this.b * t.c + this.d * t.d, this.a * t.e + this.c * t.f + this.e, this.b * t.e + this.d * t.f + this.f);
            }, apply: function apply(t) {
                return new D(this.a * t.x + this.c * t.y + this.e, this.b * t.x + this.d * t.y + this.f);
            }, applyRect: function applyRect(t) {
                return a.fromPoints(this.apply(t.topLeft()), this.apply(t.bottomRight()));
            }, toString: function toString() {
                return "matrix(" + this.a + " " + this.b + " " + this.c + " " + this.d + " " + this.e + " " + this.f + ")";
            } }), k(u, { fromSVGMatrix: function fromSVGMatrix(t) {
                var e = new u();return e.a = t.a, e.b = t.b, e.c = t.c, e.d = t.d, e.e = t.e, e.f = t.f, e;
            }, fromMatrixVector: function fromMatrixVector(t) {
                var e = new u();return e.a = t.a, e.b = t.b, e.c = t.c, e.d = t.d, e.e = t.e, e.f = t.f, e;
            }, fromList: function fromList(t) {
                if (6 !== t.length) throw "The given list should consist of six elements.";var e = new u();return e.a = t[0], e.b = t[1], e.c = t[2], e.d = t[3], e.e = t[4], e.f = t[5], e;
            }, translation: function translation(t, e) {
                var i = new u();return i.a = 1, i.b = 0, i.c = 0, i.d = 1, i.e = t, i.f = e, i;
            }, unit: function unit() {
                return new u(1, 0, 0, 1, 0, 0);
            }, rotation: function rotation(t, e, i) {
                var n = new u();return n.a = Math.cos(t * Math.PI / 180), n.b = Math.sin(t * Math.PI / 180), n.c = -n.b, n.d = n.a, n.e = e - e * n.a + i * n.b || 0, n.f = i - i * n.a - e * n.b || 0, n;
            }, scaling: function scaling(t, e) {
                var i = new u();return i.a = t, i.b = 0, i.c = 0, i.d = e, i.e = 0, i.f = 0, i;
            }, parse: function parse(t) {
                var e, i;if (t) {
                    if (t = t.trim(), "matrix" === t.slice(0, 6).toLowerCase()) {
                        if (i = t.slice(7, t.length - 1).trim(), e = i.split(","), 6 === e.length) return u.fromList(L(e, function (t) {
                            return parseFloat(t);
                        }));if (e = i.split(" "), 6 === e.length) return u.fromList(L(e, function (t) {
                            return parseFloat(t);
                        }));
                    }if ("(" === t.slice(0, 1) && ")" === t.slice(t.length - 1) && (t = t.substr(1, t.length - 1)), t.indexOf(",") > 0 && (e = t.split(","), 6 === e.length)) return u.fromList(L(e, function (t) {
                        return parseFloat(t);
                    }));if (t.indexOf(" ") > 0 && (e = t.split(" "), 6 === e.length)) return u.fromList(L(e, function (t) {
                        return parseFloat(t);
                    }));
                }return e;
            } }), f = S.extend({ init: function init(t, e, i, n, o, s) {
                this.a = t || 0, this.b = e || 0, this.c = i || 0, this.d = n || 0, this.e = o || 0, this.f = s || 0;
            }, fromMatrix: function fromMatrix(t) {
                var e = new f();return e.a = t.a, e.b = t.b, e.c = t.c, e.d = t.d, e.e = t.e, e.f = t.f, e;
            } }), p = { _distanceToLineSquared: function _distanceToLineSquared(t, e, i) {
                function n(t, e) {
                    return (t.x - e.x) * (t.x - e.x) + (t.y - e.y) * (t.y - e.y);
                }if (e === i) return n(t, e);var o = i.x - e.x,
                    s = i.y - e.y,
                    r = (t.x - e.x) * o + (t.y - e.y) * s;return r < 0 ? n(e, t) : (r = (i.x - t.x) * o + (i.y - t.y) * s, r < 0 ? n(i, t) : (r = (i.x - t.x) * s - (i.y - t.y) * o, r * r / (o * o + s * s)));
            }, distanceToLine: function distanceToLine(t, e, i) {
                return Math.sqrt(this._distanceToLineSquared(t, e, i));
            }, distanceToPolyline: function distanceToPolyline(t, e) {
                var i,
                    n,
                    o,
                    s,
                    r = Number.MAX_VALUE;if (M.isUndefined(e) || 0 === e.length) return Number.MAX_VALUE;for (i = 0; i < e.length - 1; i++) {
                    n = e[i], o = e[i + 1], s = this._distanceToLineSquared(t, n, o), s < r && (r = s);
                }return Math.sqrt(r);
            } }, g = b.Class.extend({ init: function init() {
                this._buckets = [], this.length = 0;
            }, add: function add(t, e) {
                var i = this._createGetBucket(t);return M.isDefined(e) && (i.value = e), i;
            }, get: function get(t) {
                return this._bucketExists(t) ? this._createGetBucket(t) : null;
            }, set: function set(t, e) {
                this.add(t, e);
            }, containsKey: function containsKey(t) {
                return this._bucketExists(t);
            }, remove: function remove(t) {
                if (this._bucketExists(t)) {
                    var e = this._hash(t);return delete this._buckets[e], this.length--, t;
                }
            }, forEach: function forEach(t) {
                var e,
                    i,
                    n,
                    o,
                    s = this._hashes();for (e = 0, i = s.length; e < i; e++) {
                    n = s[e], o = this._buckets[n], M.isUndefined(o) || t(o);
                }
            }, clone: function clone() {
                var t,
                    e,
                    i,
                    n,
                    o = new g(),
                    s = this._hashes();for (t = 0, e = s.length; t < e; t++) {
                    i = s[t], n = this._buckets[i], M.isUndefined(n) || o.add(n.key, n.value);
                }return o;
            }, _hashes: function _hashes() {
                var t,
                    e = [];for (t in this._buckets) {
                    this._buckets.hasOwnProperty(t) && e.push(t);
                }return e;
            }, _bucketExists: function _bucketExists(t) {
                var e = this._hash(t);return M.isDefined(this._buckets[e]);
            }, _createGetBucket: function _createGetBucket(t) {
                var e = this._hash(t),
                    i = this._buckets[e];return M.isUndefined(i) && (i = { key: t }, this._buckets[e] = i, this.length++), i;
            }, _hash: function _hash(t) {
                if (M.isNumber(t)) return t;if (M.isString(t)) return this._hashString(t);if (M.isObject(t)) return this._objectHashId(t);throw "Unsupported key type.";
            }, _hashString: function _hashString(t) {
                var e,
                    i,
                    n = 0;if (0 === t.length) return n;for (e = 0; e < t.length; e++) {
                    i = t.charCodeAt(e), n = 32 * n - n + i;
                }return n;
            }, _objectHashId: function _objectHashId(t) {
                var e = t._hashId;return M.isUndefined(e) && (e = s(), t._hashId = e), e;
            } }), m = b.Observable.extend({ init: function init(e) {
                var i,
                    n = this;if (b.Observable.fn.init.call(n), this._hashTable = new g(), this.length = 0, M.isDefined(e)) if (t.isArray(e)) for (i = 0; i < e.length; i++) {
                    this.add(e[i]);
                } else e.forEach(function (t, e) {
                    this.add(t, e);
                }, this);
            }, add: function add(t, e) {
                var i = this._hashTable.get(t);i || (i = this._hashTable.add(t), this.length++, this.trigger("changed")), i.value = e;
            }, set: function set(t, e) {
                this.add(t, e);
            }, get: function get(t) {
                var e = this._hashTable.get(t);if (e) return e.value;throw Error("Cannot find key " + t);
            }, containsKey: function containsKey(t) {
                return this._hashTable.containsKey(t);
            }, remove: function remove(t) {
                if (this.containsKey(t)) return this.trigger("changed"), this.length--, this._hashTable.remove(t);
            }, forEach: function forEach(t, e) {
                this._hashTable.forEach(function (i) {
                    t.call(e, i.key, i.value);
                });
            }, forEachValue: function forEachValue(t, e) {
                this._hashTable.forEach(function (i) {
                    t.call(e, i.value);
                });
            }, forEachKey: function forEachKey(t, e) {
                this._hashTable.forEach(function (i) {
                    t.call(e, i.key);
                });
            }, keys: function keys() {
                var t = [];return this.forEachKey(function (e) {
                    t.push(e);
                }), t;
            } }), _ = b.Class.extend({ init: function init() {
                this._tail = null, this._head = null, this.length = 0;
            }, enqueue: function enqueue(t) {
                var e = { value: t, next: null };this._head ? (this._tail.next = e, this._tail = this._tail.next) : (this._head = e, this._tail = this._head), this.length++;
            }, dequeue: function dequeue() {
                if (this.length < 1) throw Error("The queue is empty.");var t = this._head.value;return this._head = this._head.next, this.length--, t;
            }, contains: function contains(t) {
                for (var e = this._head; e;) {
                    if (e.value === t) return !0;e = e.next;
                }return !1;
            } }), v = b.Observable.extend({ init: function init(t) {
                var e = this;b.Observable.fn.init.call(e), this._hashTable = new g(), this.length = 0, M.isDefined(t) && (t instanceof g ? t.forEach(function (t) {
                    this.add(t);
                }) : t instanceof m && t.forEach(function (t, e) {
                    this.add({ key: t, value: e });
                }, this));
            }, contains: function contains(t) {
                return this._hashTable.containsKey(t);
            }, add: function add(t) {
                var e = this._hashTable.get(t);e || (this._hashTable.add(t, t), this.length++, this.trigger("changed"));
            }, get: function get(t) {
                return this.contains(t) ? this._hashTable.get(t).value : null;
            }, hash: function hash(t) {
                return this._hashTable._hash(t);
            }, remove: function remove(t) {
                this.contains(t) && (this._hashTable.remove(t), this.length--, this.trigger("changed"));
            }, forEach: function forEach(t, e) {
                this._hashTable.forEach(function (e) {
                    t(e.value);
                }, e);
            }, toArray: function toArray() {
                var t = [];return this.forEach(function (e) {
                    t.push(e);
                }), t;
            } }), y = b.Class.extend({ init: function init(t, e) {
                if (this.links = [], this.outgoing = [], this.incoming = [], this.weight = 1, this.id = M.isDefined(t) ? t : s(), M.isDefined(e)) {
                    this.associatedShape = e;var i = e.bounds();this.width = i.width, this.height = i.height, this.x = i.x, this.y = i.y;
                } else this.associatedShape = null;this.data = null, this.type = "Node", this.shortForm = "Node '" + this.id + "'", this.isVirtual = !1;
            }, isIsolated: function isIsolated() {
                return M.isEmpty(this.links);
            }, bounds: function bounds(t) {
                return M.isDefined(t) ? (this.x = t.x, this.y = t.y, this.width = t.width, this.height = t.height, e) : new C.Rect(this.x, this.y, this.width, this.height);
            }, isLinkedTo: function isLinkedTo(t) {
                var e = this;return M.any(e.links, function (i) {
                    return i.getComplement(e) === t;
                });
            }, getChildren: function getChildren() {
                var t, e, i, n;if (0 === this.outgoing.length) return [];for (t = [], e = 0, i = this.outgoing.length; e < i; e++) {
                    n = this.outgoing[e], t.push(n.getComplement(this));
                }return t;
            }, getParents: function getParents() {
                var t, e, i, n;if (0 === this.incoming.length) return [];for (t = [], e = 0, i = this.incoming.length; e < i; e++) {
                    n = this.incoming[e], t.push(n.getComplement(this));
                }return t;
            }, clone: function clone() {
                var t = new y();return M.isDefined(this.weight) && (t.weight = this.weight), M.isDefined(this.balance) && (t.balance = this.balance), M.isDefined(this.owner) && (t.owner = this.owner), t.associatedShape = this.associatedShape, t.x = this.x, t.y = this.y, t.width = this.width, t.height = this.height, t;
            }, adjacentTo: function adjacentTo(t) {
                return null !== this.isLinkedTo(t);
            }, removeLink: function removeLink(t) {
                t.source === this && (M.remove(this.links, t), M.remove(this.outgoing, t), t.source = null), t.target === this && (M.remove(this.links, t), M.remove(this.incoming, t), t.target = null);
            }, hasLinkTo: function hasLinkTo(t) {
                return M.any(this.outgoing, function (e) {
                    return e.target === t;
                });
            }, degree: function degree() {
                return this.links.length;
            }, incidentWith: function incidentWith(t) {
                return P(this.links, t);
            }, getLinksWith: function getLinksWith(t) {
                return M.all(this.links, function (e) {
                    return e.getComplement(this) === t;
                }, this);
            }, getNeighbors: function getNeighbors() {
                var t = [];return M.forEach(this.incoming, function (e) {
                    t.push(e.getComplement(this));
                }, this), M.forEach(this.outgoing, function (e) {
                    t.push(e.getComplement(this));
                }, this), t;
            } }), w = b.Class.extend({ init: function init(t, e, i, n) {
                if (M.isUndefined(t)) throw "The source of the new link is not set.";if (M.isUndefined(e)) throw "The target of the new link is not set.";var o, r;o = M.isString(t) ? new y(t) : t, r = M.isString(e) ? new y(e) : e, this.source = o, this.target = r, this.source.links.push(this), this.target.links.push(this), this.source.outgoing.push(this), this.target.incoming.push(this), this.id = M.isDefined(i) ? i : s(), this.associatedConnection = M.isDefined(n) ? n : null, this.type = "Link", this.shortForm = "Link '" + this.source.id + "->" + this.target.id + "'";
            }, getComplement: function getComplement(t) {
                if (this.source !== t && this.target !== t) throw "The given node is not incident with this link.";return this.source === t ? this.target : this.source;
            }, getCommonNode: function getCommonNode(t) {
                return this.source === t.source || this.source === t.target ? this.source : this.target === t.source || this.target === t.target ? this.target : null;
            }, isBridging: function isBridging(t, e) {
                return this.source === t && this.target === e || this.source === e && this.target === t;
            }, getNodes: function getNodes() {
                return [this.source, this.target];
            }, incidentWith: function incidentWith(t) {
                return this.source === t || this.target === t;
            }, adjacentTo: function adjacentTo(t) {
                return P(this.source.links, t) || P(this.target.links, t);
            }, changeSource: function changeSource(t) {
                M.remove(this.source.links, this), M.remove(this.source.outgoing, this), t.links.push(this), t.outgoing.push(this), this.source = t;
            }, changeTarget: function changeTarget(t) {
                M.remove(this.target.links, this), M.remove(this.target.incoming, this), t.links.push(this), t.incoming.push(this), this.target = t;
            }, changesNodes: function changesNodes(t, e) {
                this.source === t ? this.changeSource(e) : this.target === t && this.changeTarget(e);
            }, reverse: function reverse() {
                var t = this.source,
                    e = this.target;return this.source = e, M.remove(t.outgoing, this), this.source.outgoing.push(this), this.target = t, M.remove(e.incoming, this), this.target.incoming.push(this), this;
            }, directTo: function directTo(t) {
                if (this.source !== t && this.target !== t) throw "The given node is not incident with this link.";this.target !== t && this.reverse();
            }, createReverseEdge: function createReverseEdge() {
                var t = this.clone();return t.reverse(), t.reversed = !0, t;
            }, clone: function clone() {
                var t = new w(this.source, this.target);return t;
            } }), x = b.Class.extend({ init: function init(t) {
                this.links = [], this.nodes = [], this._nodeMap = new m(), this.diagram = null, this._root = null, M.isDefined(t) ? M.isString(t) ? this.id = t : (this.diagram = t, this.id = t.id) : this.id = s(), this.bounds = new a(), this._hasCachedRelationships = !1, this.type = "Graph";
            }, cacheRelationships: function cacheRelationships(t) {
                var e, i, n;if (M.isUndefined(t) && (t = !1), !this._hasCachedRelationships || t) {
                    for (e = 0, i = this.nodes.length; e < i; e++) {
                        n = this.nodes[e], n.children = this.getChildren(n), n.parents = this.getParents(n);
                    }this._hasCachedRelationships = !0;
                }
            }, assignLevels: function assignLevels(t, e, i) {
                var n, o, s, r;if (!t) throw "Start node not specified.";for (M.isUndefined(e) && (e = 0), this.cacheRelationships(), M.isUndefined(i) && (i = new m(), M.forEach(this.nodes, function (t) {
                    i.add(t, !1);
                })), i.set(t, !0), t.level = e, n = t.children, o = 0, s = n.length; o < s; o++) {
                    r = n[o], r && !i.get(r) && this.assignLevels(r, e + 1, i);
                }
            }, root: function root(t) {
                if (M.isUndefined(t)) {
                    if (this._root) return this._root;var e = M.first(this.nodes, function (t) {
                        return 0 === t.incoming.length;
                    });return e ? e : M.first(this.nodes);
                }this._root = t;
            }, getConnectedComponents: function getConnectedComponents() {
                var t, e, i, n, o;for (this.componentIndex = 0, this.setItemIndices(), t = M.initArray(this.nodes.length, -1), e = 0; e < this.nodes.length; e++) {
                    t[e] === -1 && (this._collectConnectedNodes(t, e), this.componentIndex++);
                }for (i = [], n = 0; n < this.componentIndex; ++n) {
                    i[n] = new x();
                }for (n = 0; n < t.length; ++n) {
                    o = i[t[n]], o.addNodeAndOutgoings(this.nodes[n]);
                }return i.sort(function (t, e) {
                    return e.nodes.length - t.nodes.length;
                }), i;
            }, _collectConnectedNodes: function _collectConnectedNodes(t, e) {
                t[e] = this.componentIndex;var i = this.nodes[e];M.forEach(i.links, function (e) {
                    var n = e.getComplement(i),
                        o = n.index;t[o] === -1 && this._collectConnectedNodes(t, o);
                }, this);
            }, calcBounds: function calcBounds() {
                var t, e, i, n;if (this.isEmpty()) return this.bounds = new a();for (t = null, e = 0, i = this.nodes.length; e < i; e++) {
                    n = this.nodes[e], t = t ? t.union(n.bounds()) : n.bounds();
                }return this.bounds = t;
            }, getSpanningTree: function getSpanningTree(t) {
                var e,
                    i,
                    n,
                    o,
                    s,
                    r,
                    a,
                    h,
                    c,
                    d,
                    l,
                    u,
                    f = new x(),
                    p = new m();for (f.root = t.clone(), f.root.level = 0, f.root.id = t.id, p.add(t, f.root), t.level = 0, n = [], o = [], f._addNode(f.root), n.push(t), o.push(t), s = 1; o.length > 0;) {
                    for (r = o.pop(), a = 0; a < r.links.length; a++) {
                        h = r.links[a], c = h.getComplement(r), P(n, c) || (c.level = r.level + 1, s < c.level + 1 && (s = c.level + 1), P(o, c) || o.push(c), P(n, c) || n.push(c), p.containsKey(r) ? e = p.get(r) : (e = r.clone(), e.level = r.level, e.id = r.id, p.add(r, e)), p.containsKey(c) ? i = p.get(c) : (i = c.clone(), i.level = c.level, i.id = c.id, p.add(c, i)), d = new w(e, i), f.addLink(d));
                    }
                }for (l = [], u = 0; u < s; u++) {
                    l.push([]);
                }return M.forEach(f.nodes, function (t) {
                    l[t.level].push(t);
                }), f.treeLevels = l, f.cacheRelationships(), f;
            }, takeRandomNode: function takeRandomNode(e, i) {
                if (M.isUndefined(e) && (e = []), M.isUndefined(i) && (i = 4), 0 === this.nodes.length) return null;if (1 === this.nodes.length) return P(e, this.nodes[0]) ? null : this.nodes[0];var n = t.grep(this.nodes, function (t) {
                    return !P(e, t) && t.degree() <= i;
                });return M.isEmpty(n) ? null : n[M.randomInteger(0, n.length)];
            }, isEmpty: function isEmpty() {
                return M.isEmpty(this.nodes);
            }, isHealthy: function isHealthy() {
                return M.all(this.links, function (t) {
                    return P(this.nodes, t.source) && P(this.nodes, t.target);
                }, this);
            }, getParents: function getParents(t) {
                if (!this.hasNode(t)) throw "The given node is not part of this graph.";return t.getParents();
            }, getChildren: function getChildren(t) {
                if (!this.hasNode(t)) throw "The given node is not part of this graph.";return t.getChildren();
            }, addLink: function addLink(t, i, n) {
                var o, s, r;if (M.isUndefined(t)) throw "The source of the link is not defined.";if (M.isUndefined(i)) {
                    if (M.isDefined(t.type) && "Link" === t.type) return this.addExistingLink(t), e;throw "The target of the link is not defined.";
                }return o = this.getNode(t), M.isUndefined(o) && (o = this.addNode(t)), s = this.getNode(i), M.isUndefined(s) && (s = this.addNode(i)), r = new w(o, s), M.isDefined(n) && (r.owner = n), this.links.push(r), r;
            }, removeAllLinks: function removeAllLinks() {
                for (; this.links.length > 0;) {
                    var t = this.links[0];this.removeLink(t);
                }
            }, addExistingLink: function addExistingLink(t) {
                var e, i;this.hasLink(t) || (this.links.push(t), this.hasNode(t.source.id) ? (e = this.getNode(t.source.id), t.changeSource(e)) : this.addNode(t.source), this.hasNode(t.target.id) ? (i = this.getNode(t.target.id), t.changeTarget(i)) : this.addNode(t.target));
            }, hasLink: function hasLink(t) {
                if (M.isString(t)) return M.any(this.links, function (e) {
                    return e.id === t;
                });if ("Link" === t.type) return P(this.links, t);throw "The given object is neither an identifier nor a Link.";
            }, getNode: function getNode(t) {
                var e = t.id || t;if (this._nodeMap.containsKey(e)) return this._nodeMap.get(e);
            }, hasNode: function hasNode(t) {
                var e = t.id || t;return this._nodeMap.containsKey(e);
            }, _addNode: function _addNode(t) {
                this.nodes.push(t), this._nodeMap.add(t.id, t);
            }, _removeNode: function _removeNode(t) {
                M.remove(this.nodes, t), this._nodeMap.remove(t.id);
            }, removeNode: function removeNode(t) {
                var e,
                    i,
                    n,
                    o,
                    s = t;if (M.isString(t) && (s = this.getNode(t)), !M.isDefined(s)) throw "The identifier should be a Node or the Id (string) of a node.";for (e = s.links, s.links = [], i = 0, n = e.length; i < n; i++) {
                    o = e[i], this.removeLink(o);
                }this._removeNode(s);
            }, areConnected: function areConnected(t, e) {
                return M.any(this.links, function (i) {
                    return i.source == t && i.target == e || i.source == e && i.target == t;
                });
            }, removeLink: function removeLink(t) {
                M.remove(this.links, t), M.remove(t.source.outgoing, t), M.remove(t.source.links, t), M.remove(t.target.incoming, t), M.remove(t.target.links, t);
            }, addNode: function addNode(t, e, i) {
                var n = null;if (!M.isDefined(t)) throw "No Node or identifier for a new Node is given.";if (M.isString(t)) {
                    if (this.hasNode(t)) return this.getNode(t);n = new y(t);
                } else {
                    if (this.hasNode(t)) return this.getNode(t);n = t;
                }return M.isDefined(e) && n.bounds(e), M.isDefined(i) && (n.owner = i), this._addNode(n), n;
            }, addNodeAndOutgoings: function addNodeAndOutgoings(t) {
                this.hasNode(t) || this._addNode(t);var e = t.outgoing;t.outgoing = [], M.forEach(e, function (t) {
                    this.addExistingLink(t);
                }, this);
            }, setItemIndices: function setItemIndices() {
                var t;for (t = 0; t < this.nodes.length; ++t) {
                    this.nodes[t].index = t;
                }for (t = 0; t < this.links.length; ++t) {
                    this.links[t].index = t;
                }
            }, clone: function clone(t) {
                var e,
                    i = new x(),
                    n = M.isDefined(t) && t === !0;return n && (i.nodeMap = new m(), i.linkMap = new m()), e = new m(), M.forEach(this.nodes, function (t) {
                    var o = t.clone();e.set(t, o), i._addNode(o), n && i.nodeMap.set(o, t);
                }), M.forEach(this.links, function (t) {
                    if (e.containsKey(t.source) && e.containsKey(t.target)) {
                        var o = i.addLink(e.get(t.source), e.get(t.target));n && i.linkMap.set(o, t);
                    }
                }), i;
            }, linearize: function linearize(t) {
                return x.Utils.linearize(this, t);
            }, depthFirstTraversal: function depthFirstTraversal(t, e) {
                var i, n;if (M.isUndefined(t)) throw "You need to supply a starting node.";if (M.isUndefined(e)) throw "You need to supply an action.";if (!this.hasNode(t)) throw "The given start-node is not part of this graph";i = this.getNode(t), n = [], this._dftIterator(i, e, n);
            }, _dftIterator: function _dftIterator(t, e, i) {
                var n, o, s, r;for (e(t), i.push(t), n = t.getChildren(), o = 0, s = n.length; o < s; o++) {
                    r = n[o], P(i, r) || this._dftIterator(r, e, i);
                }
            }, breadthFirstTraversal: function breadthFirstTraversal(t, e) {
                var i, n, o, s, r, a, h, c;if (M.isUndefined(t)) throw "You need to supply a starting node.";if (M.isUndefined(e)) throw "You need to supply an action.";if (!this.hasNode(t)) throw "The given start-node is not part of this graph";for (i = this.getNode(t), n = new _(), o = [], n.enqueue(i); n.length > 0;) {
                    for (s = n.dequeue(), e(s), o.push(s), r = s.getChildren(), a = 0, h = r.length; a < h; a++) {
                        c = r[a], P(o, c) || P(n, c) || n.enqueue(c);
                    }
                }
            }, _stronglyConnectedComponents: function _stronglyConnectedComponents(t, e, i, n, o, s, r) {
                var a, h, c, d, l;for (i.add(e, r), n.add(e, r), r++, s.push(e), a = e.getChildren(), c = 0, d = a.length; c < d; c++) {
                    h = a[c], i.containsKey(h) ? P(s, h) && n.add(e, Math.min(n.get(e), i.get(h))) : (this._stronglyConnectedComponents(t, h, i, n, o, s, r), n.add(e, Math.min(n.get(e), n.get(h))));
                }if (n.get(e) === i.get(e)) {
                    l = [];do {
                        h = s.pop(), l.push(h);
                    } while (h !== e);(!t || l.length > 1) && o.push(l);
                }
            }, findCycles: function findCycles(t) {
                var e, i, n, o, s, r, a;for (M.isUndefined(t) && (t = !0), e = new m(), i = new m(), n = [], o = [], s = 0, r = this.nodes.length; s < r; s++) {
                    a = this.nodes[s], e.containsKey(a) || this._stronglyConnectedComponents(t, a, e, i, n, o, 0);
                }return n;
            }, isAcyclic: function isAcyclic() {
                return M.isEmpty(this.findCycles());
            }, isSubGraph: function isSubGraph(t) {
                var e = t.linearize(),
                    i = this.linearize();return M.all(e, function (t) {
                    return P(i, t);
                });
            }, makeAcyclic: function makeAcyclic() {
                var t, e, i, n, o, s, r, a, h, c, d, l, u, f, p, g, _, v, y, w, x, b, C, S, k, T, D, I, P, L, E, z;if (this.isEmpty() || this.nodes.length <= 1 || this.links.length <= 1) return [];if (2 == this.nodes.length) {
                    if (t = [], this.links.length > 1) for (e = this.links[0], i = e.source, n = 0, o = this.links.length; n < o; n++) {
                        s = this.links[n], s.source != i && (r = s.reverse(), t.push(r));
                    }return t;
                }for (a = this.clone(!0), h = this.nodes.length, c = new m(), d = function d(t) {
                    return 0 === t.outgoing.length ? 2 - h : 0 === t.incoming.length ? h - 2 : t.outgoing.length - t.incoming.length;
                }, l = function l(t, e) {
                    var i = d(t, h);e.containsKey(i) || e.set(i, []), e.get(i).push(t);
                }, M.forEach(a.nodes, function (t) {
                    l(t, c);
                }), u = [], f = []; a.nodes.length > 0;) {
                    if (c.containsKey(2 - h)) for (v = c.get(2 - h); v.length > 0;) {
                        for (g = v.pop(), y = 0; y < g.links.length; y++) {
                            w = g.links[y], p = w.getComplement(g), _ = d(p, h), M.remove(c.get(_), p), p.removeLink(w), l(p, c);
                        }a._removeNode(g), f.unshift(g);
                    }if (c.containsKey(h - 2)) for (x = c.get(h - 2); x.length > 0;) {
                        for (p = x.pop(), b = 0; b < p.links.length; b++) {
                            C = p.links[b], g = C.getComplement(p), _ = d(g, h), M.remove(c.get(_), g), g.removeLink(C), l(g, c);
                        }u.push(p), a._removeNode(p);
                    }if (a.nodes.length > 0) for (S = h - 3; S > 2 - h; S--) {
                        if (c.containsKey(S) && c.get(S).length > 0) {
                            for (k = c.get(S), T = k.pop(), D = 0; D < T.links.length; D++) {
                                I = T.links[D], P = I.getComplement(T), _ = d(P, h), M.remove(c.get(_), P), P.removeLink(I), l(P, c);
                            }u.push(T), a._removeNode(T);break;
                        }
                    }
                }for (u = u.concat(f), L = new m(), E = 0; E < this.nodes.length; E++) {
                    L.set(a.nodeMap.get(u[E]), E);
                }return z = [], M.forEach(this.links, function (t) {
                    L.get(t.source) > L.get(t.target) && (t.reverse(), z.push(t));
                }), z;
            } }), x.Predefined = { EightGraph: function EightGraph() {
                return x.Utils.parse(["1->2", "2->3", "3->4", "4->1", "3->5", "5->6", "6->7", "7->3"]);
            }, Mindmap: function Mindmap() {
                return x.Utils.parse(["0->1", "0->2", "0->3", "0->4", "0->5", "1->6", "1->7", "7->8", "2->9", "9->10", "9->11", "3->12", "12->13", "13->14", "4->15", "4->16", "15->17", "15->18", "18->19", "18->20", "14->21", "14->22", "5->23", "23->24", "23->25", "6->26"]);
            }, ThreeGraph: function ThreeGraph() {
                return x.Utils.parse(["1->2", "2->3", "3->1"]);
            }, BinaryTree: function BinaryTree(t) {
                return M.isUndefined(t) && (t = 5), x.Utils.createBalancedTree(t, 2);
            }, Linear: function Linear(t) {
                return M.isUndefined(t) && (t = 10), x.Utils.createBalancedTree(t, 1);
            }, Tree: function Tree(t, e) {
                return x.Utils.createBalancedTree(t, e);
            }, Forest: function Forest(t, e, i) {
                return x.Utils.createBalancedForest(t, e, i);
            }, Workflow: function Workflow() {
                return x.Utils.parse(["0->1", "1->2", "2->3", "1->4", "4->3", "3->5", "5->6", "6->3", "6->7", "5->4"]);
            }, Grid: function Grid(t, e) {
                var i,
                    n,
                    o,
                    s,
                    r,
                    a = new C.Graph();if (t <= 0 && e <= 0) return a;for (i = 0; i < t + 1; i++) {
                    for (n = null, o = 0; o < e + 1; o++) {
                        s = new y("" + i + "." + o), a.addNode(s), n && a.addLink(n, s), i > 0 && (r = a.getNode("" + (i - 1) + "." + o), a.addLink(r, s)), n = s;
                    }
                }return a;
            } }, x.Utils = { parse: function parse(t) {
                var e,
                    i,
                    n,
                    o,
                    s,
                    r = new C.Graph(),
                    a = t.slice();for (i = 0, n = a.length; i < n; i++) {
                    if (o = a[i], M.isString(o)) {
                        if (o.indexOf("->") < 0) throw "The link should be specified as 'a->b'.";if (s = o.split("->"), 2 != s.length) throw "The link should be specified as 'a->b'.";e = new w(s[0], s[1]), r.addLink(e);
                    }if (M.isObject(o)) {
                        if (!e) throw "Specification found before Link definition.";b.deepExtend(e, o);
                    }
                }return r;
            }, linearize: function linearize(t, e) {
                var i, n, o, s;if (M.isUndefined(t)) throw "Expected an instance of a Graph object in slot one.";for (M.isUndefined(e) && (e = !1), i = [], n = 0, o = t.links.length; n < o; n++) {
                    s = t.links[n], i.push(s.source.id + "->" + s.target.id), e && i.push({ id: s.id });
                }return i;
            }, _addShape: function _addShape(t, e, i, n) {
                return M.isUndefined(e) && (e = new C.Point(0, 0)), M.isUndefined(i) && (i = s()), n = b.deepExtend({ width: 20, height: 20, id: i, radius: 10, fill: "#778899", data: "circle", undoable: !1, x: e.x, y: e.y }, n), t.addShape(n);
            }, _addConnection: function _addConnection(t, e, i, n) {
                return t.connect(e, i, n);
            }, createDiagramFromGraph: function createDiagramFromGraph(t, e, i, n) {
                var o, s, r, h, c, d, l, u, f, p, g, m, _, v, y, w;if (M.isUndefined(t)) throw "The diagram surface is undefined.";if (M.isUndefined(e)) throw "No graph specification defined.";for (M.isUndefined(i) && (i = !0), M.isUndefined(n) && (n = !1), o = t.element.clientWidth || 200, s = t.element.clientHeight || 200, r = [], d = 0, l = e.nodes.length; d < l; d++) {
                    h = e.nodes[d], u = h.position, M.isUndefined(u) && (u = M.isDefined(h.x) && M.isDefined(h.y) ? new D(h.x, h.y) : new D(M.randomInteger(10, o - 20), M.randomInteger(10, s - 20))), f = {}, "0" === h.id || n && b.deepExtend(f, { width: 150 * Math.random() + 20, height: 80 * Math.random() + 50, data: "rectangle", fill: { color: "#778899" } }), c = this._addShape(t, u, h.id, f), p = c.bounds(), M.isDefined(p) && (h.x = p.x, h.y = p.y, h.width = p.width, h.height = p.height), r[h.id] = c;
                }for (g = 0; g < e.links.length; g++) {
                    m = e.links[g], _ = r[m.source.id], M.isUndefined(_) || (v = r[m.target.id], M.isUndefined(v) || this._addConnection(t, _, v, { id: m.id }));
                }if (i) for (y = new t.SpringLayout(t), y.layoutGraph(e, { limitToView: !1 }), w = 0; w < e.nodes.length; w++) {
                    h = e.nodes[w], c = r[h.id], c.bounds(new a(h.x, h.y, h.width, h.height));
                }
            }, createBalancedTree: function createBalancedTree(t, e) {
                var i, n, o, s, r, a, h, c, d, l;if (M.isUndefined(t) && (t = 3), M.isUndefined(e) && (e = 3), i = new C.Graph(), n = -1, o = [], t <= 0 || e <= 0) return i;for (r = new y("" + ++n), i.addNode(r), i.root = r, o.push(r), a = 0; a < t; a++) {
                    for (s = [], h = 0; h < o.length; h++) {
                        for (c = o[h], d = 0; d < e; d++) {
                            l = new y("" + ++n), i.addLink(c, l), s.push(l);
                        }
                    }o = s;
                }return i;
            }, createBalancedForest: function createBalancedForest(t, e, i) {
                var n, o, s, r, a, h, c, d, l, u, f;if (M.isUndefined(t) && (t = 3), M.isUndefined(e) && (e = 3), M.isUndefined(i) && (i = 5), n = new C.Graph(), o = -1, s = [], t <= 0 || e <= 0 || i <= 0) return n;for (a = 0; a < i; a++) {
                    for (h = new y("" + ++o), n.addNode(h), s = [h], c = 0; c < t; c++) {
                        for (r = [], d = 0; d < s.length; d++) {
                            for (l = s[d], u = 0; u < e; u++) {
                                f = new y("" + ++o), n.addLink(l, f), r.push(f);
                            }
                        }s = r;
                    }
                }return n;
            }, createRandomConnectedGraph: function createRandomConnectedGraph(t, e, i) {
                var n, o, s, r, a, h, c, d, l, u;if (M.isUndefined(t) && (t = 40), M.isUndefined(e) && (e = 4), M.isUndefined(i) && (i = !1), n = new C.Graph(), o = -1, t <= 0) return n;if (s = new y("" + ++o), n.addNode(s), 1 === t) return n;if (t > 1) {
                    for (r = 1; r < t && (a = n.takeRandomNode([], e), a); r++) {
                        h = n.addNode("" + r), n.addLink(a, h);
                    }if (!i && t > 1) for (c = M.randomInteger(1, t), d = 0; d < c; d++) {
                        l = n.takeRandomNode([], e), u = n.takeRandomNode([], e), l && u && !n.areConnected(l, u) && n.addLink(l, u);
                    }return n;
                }
            }, randomDiagram: function randomDiagram(t, e, i, n, o) {
                var s = b.dataviz.diagram.Graph.Utils.createRandomConnectedGraph(e, i, n);x.Utils.createDiagramFromGraph(t, s, !1, o);
            } }, b.deepExtend(C, { init: function init(t) {
                b.init(t, C.ui);
            }, Point: D, Intersect: c, Geometry: p, Rect: a, Size: h, RectAlign: d, Matrix: u, MatrixVector: f, normalVariable: o, randomId: s, Dictionary: m, HashTable: g, Queue: _, Set: v, Node: y, Link: w, Graph: x, PathDefiner: r });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/diagram/svg.min", ["kendo.drawing.min", "dataviz/diagram/math.min"], t);
}(function () {
    !function (t, e) {
        function i(t, e) {
            var i,
                n,
                o,
                s = this.options,
                r = !1;for (o = 0; o < e.length; o++) {
                n = e[o], i = t[n], O(i) && s[n] !== i && (s[n] = i, r = !0);
            }return r;
        }function n(t) {
            return { x: t.x || 0, y: t.y || 0, width: t.width || 0, height: t.height || 0 };
        }function o(t) {
            if (t) {
                var e = t;return U(e) && (e = { color: e }), e.color && (e.color = s(e.color)), e;
            }
        }function s(t) {
            var e;return e = t != K ? new F.Color(t).toHex() : t;
        }function r(t, e) {
            var i = e.x - t.x,
                n = e.y - t.y,
                o = P.util.deg(Math.atan2(n, i));return o;
        }function a(t, e) {
            return new F.Segment(new H.Point(t, e));
        }function h(t) {
            if (t) return new H.Rect([t.x, t.y], [t.width, t.height]);
        }var c,
            d,
            l,
            u,
            f,
            p,
            g,
            m,
            _,
            v,
            y,
            w,
            x,
            b,
            C,
            S,
            k,
            T,
            M,
            D,
            I,
            P = window.kendo,
            L = P.dataviz.diagram,
            E = P.Class,
            z = P.deepExtend,
            B = L.Point,
            N = L.Rect,
            R = L.Matrix,
            A = L.Utils,
            O = A.isNumber,
            U = A.isString,
            V = L.MatrixVector,
            H = P.geometry,
            F = P.drawing,
            G = P.util.defined,
            q = t.inArray,
            K = "transparent",
            W = { none: "none", arrowStart: "ArrowStart", filledCircle: "FilledCircle", arrowEnd: "ArrowEnd" },
            X = 360,
            j = "start",
            Y = "end",
            Q = "width",
            J = "height",
            Z = "x",
            $ = "y";L.Markers = W, c = E.extend({ init: function init(t, e) {
                this.x = t, this.y = e;
            }, toMatrix: function toMatrix() {
                return R.scaling(this.x, this.y);
            }, toString: function toString() {
                return P.format("scale({0},{1})", this.x, this.y);
            }, invert: function invert() {
                return new c(1 / this.x, 1 / this.y);
            } }), d = E.extend({ init: function init(t, e) {
                this.x = t, this.y = e;
            }, toMatrixVector: function toMatrixVector() {
                return new V(0, 0, 0, 0, this.x, this.y);
            }, toMatrix: function toMatrix() {
                return R.translation(this.x, this.y);
            }, toString: function toString() {
                return P.format("translate({0},{1})", this.x, this.y);
            }, plus: function plus(t) {
                this.x += t.x, this.y += t.y;
            }, times: function times(t) {
                this.x *= t, this.y *= t;
            }, length: function length() {
                return Math.sqrt(this.x * this.x + this.y * this.y);
            }, normalize: function normalize() {
                0 !== this.Length && this.times(1 / this.length());
            }, invert: function invert() {
                return new d(-this.x, -this.y);
            } }), l = E.extend({ init: function init(t, e, i) {
                this.x = e || 0, this.y = i || 0, this.angle = t;
            }, toString: function toString() {
                return this.x && this.y ? P.format("rotate({0},{1},{2})", this.angle, this.x, this.y) : P.format("rotate({0})", this.angle);
            }, toMatrix: function toMatrix() {
                return R.rotation(this.angle, this.x, this.y);
            }, center: function center() {
                return new B(this.x, this.y);
            }, invert: function invert() {
                return new l(X - this.angle, this.x, this.y);
            } }), l.ZERO = new l(0), l.create = function (t) {
            return new l(t.angle, t.x, t.y);
        }, l.parse = function (t) {
            var e = t.slice(1, t.length - 1).split(","),
                i = e[0],
                n = e[1],
                o = e[2],
                s = new l(i, n, o);return s;
        }, u = E.extend({ init: function init(t, i, n, o, s, r) {
                this.translate = new d(t, i), n !== e && o !== e && (this.scale = new c(n, o)), s !== e && (this.rotate = r ? new l(s, r.x, r.y) : new l(s));
            }, toString: function toString() {
                var t = function t(_t4) {
                    return _t4 ? "" + _t4 : "";
                };return t(this.translate) + t(this.rotate) + t(this.scale);
            }, render: function render(t) {
                t._transform = this, t._renderTransform();
            }, toMatrix: function toMatrix() {
                var t = R.unit();return this.translate && (t = t.times(this.translate.toMatrix())), this.rotate && (t = t.times(this.rotate.toMatrix())), this.scale && (t = t.times(this.scale.toMatrix())), t;
            }, invert: function invert() {
                var t,
                    i,
                    n = this.rotate ? this.rotate.invert() : e,
                    o = n ? n.toMatrix() : R.unit(),
                    s = this.scale ? this.scale.invert() : e,
                    r = s ? s.toMatrix() : R.unit(),
                    a = new B(-this.translate.x, -this.translate.y);return a = o.times(r).apply(a), t = new d(a.x, a.y), i = new u(), i.translate = t, i.rotate = n, i.scale = s, i;
            } }), f = { _setScale: function _setScale() {
                var t = this.options,
                    e = this._originWidth,
                    i = this._originHeight,
                    n = t.width / e,
                    o = t.height / i;O(n) || (n = 1), O(o) || (o = 1), this._transform.scale = new c(n, o);
            }, _setTranslate: function _setTranslate() {
                var t = this.options,
                    e = t.x || 0,
                    i = t.y || 0;this._transform.translate = new d(e, i);
            }, _initSize: function _initSize() {
                var t = this.options,
                    e = !1;t.autoSize !== !1 && (G(t.width) || G(t.height)) && (this._measure(!0), this._setScale(), e = !0), (G(t.x) || G(t.y)) && (this._setTranslate(), e = !0), e && this._renderTransform();
            }, _updateSize: function _updateSize(t) {
                var e = !1;return this.options.autoSize !== !1 && this._diffNumericOptions(t, [Q, J]) && (e = !0, this._measure(!0), this._setScale()), this._diffNumericOptions(t, [Z, $]) && (e = !0, this._setTranslate()), e && this._renderTransform(), e;
            } }, p = E.extend({ init: function init(t) {
                var e = this;e.options = z({}, e.options, t), e.id = e.options.id, e._originSize = N.empty(), e._transform = new u();
            }, visible: function visible(t) {
                return this.drawingContainer().visible(t);
            }, redraw: function redraw(t) {
                t && t.id && (this.id = t.id);
            }, position: function position(t, i) {
                var n = this.options;return G(t) ? (G(i) ? (n.x = t, n.y = i) : t instanceof B && (n.x = t.x, n.y = t.y), this._transform.translate = new d(n.x, n.y), this._renderTransform(), e) : new B(n.x, n.y);
            }, rotate: function rotate(t, e) {
                return G(t) && (this._transform.rotate = new l(t, e.x, e.y), this._renderTransform()), this._transform.rotate || l.ZERO;
            }, drawingContainer: function drawingContainer() {
                return this.drawingElement;
            }, _renderTransform: function _renderTransform() {
                var t = this._transform.toMatrix();this.drawingContainer().transform(new H.Matrix(t.a, t.b, t.c, t.d, t.e, t.f));
            }, _hover: function _hover() {}, _diffNumericOptions: i, _measure: function _measure(t) {
                var e, i, n;return !this._measured || t ? (i = this._boundingBox() || new H.Rect(), n = i.topLeft(), e = new N(n.x, n.y, i.width(), i.height()), this._originSize = e, this._originWidth = e.width, this._originHeight = e.height, this._measured = !0) : e = this._originSize, e;
            }, _boundingBox: function _boundingBox() {
                return this.drawingElement.rawBBox();
            } }), g = p.extend({ init: function init(t) {
                p.fn.init.call(this, t), t = this.options, t.fill = o(t.fill), t.stroke = o(t.stroke);
            }, options: { stroke: { color: "gray", width: 1 }, fill: { color: K } }, fill: function fill(t, e) {
                this._fill({ color: s(t), opacity: e });
            }, stroke: function stroke(t, e, i) {
                this._stroke({ color: s(t), width: e, opacity: i });
            }, redraw: function redraw(t) {
                var e, i;t && (e = t.stroke, i = t.fill, e && this._stroke(o(e)), i && this._fill(o(i)), p.fn.redraw.call(this, t));
            }, _hover: function _hover(t) {
                var e,
                    i = this.drawingElement,
                    n = this.options,
                    s = n.hover;s && s.fill && (e = t ? o(s.fill) : n.fill, i.fill(e.color, e.opacity));
            }, _stroke: function _stroke(t) {
                var e,
                    i = this.options;z(i, { stroke: t }), t = i.stroke, e = null, t.width > 0 && (e = { color: t.color, width: t.width, opacity: t.opacity, dashType: t.dashType }), this.drawingElement.options.set("stroke", e);
            }, _fill: function _fill(t) {
                var e,
                    i,
                    n,
                    o = this.options;z(o, { fill: t || {} }), e = o.fill, e.gradient ? (i = e.gradient, n = "radial" === i.type ? F.RadialGradient : F.LinearGradient, this.drawingElement.fill(new n(i))) : this.drawingElement.fill(e.color, e.opacity);
            } }), m = g.extend({ init: function init(t) {
                t = this._textColor(t), g.fn.init.call(this, t), this._font(), this._initText(), this._initSize();
            }, options: { fontSize: 15, fontFamily: "sans-serif", stroke: { width: 0 }, fill: { color: "black" }, autoSize: !0 }, _initText: function _initText() {
                var t = this.options;this.drawingElement = new F.Text(G(t.text) ? t.text : "", new H.Point(), { font: t.font }), this._fill(), this._stroke();
            }, _textColor: function _textColor(t) {
                return t && t.color && (t = z({}, t, { fill: { color: t.color } })), t;
            }, _font: function _font() {
                var t,
                    e = this.options;e.fontFamily && G(e.fontSize) ? (t = [], e.fontStyle && t.push(e.fontStyle), e.fontWeight && t.push(e.fontWeight), t.push(e.fontSize + (O(e.fontSize) ? "px" : "")), t.push(e.fontFamily), e.font = t.join(" ")) : delete e.font;
            }, content: function content(t) {
                return this.drawingElement.content(t);
            }, redraw: function redraw(t) {
                var e, i;t && (e = !1, i = this.options, t = this._textColor(t), g.fn.redraw.call(this, t), (t.fontFamily || G(t.fontSize) || t.fontStyle || t.fontWeight) && (z(i, { fontFamily: t.fontFamily, fontSize: t.fontSize, fontStyle: t.fontStyle, fontWeight: t.fontWeight }), this._font(), this.drawingElement.options.set("font", i.font), e = !0), t.text && (this.content(t.text), e = !0), !this._updateSize(t) && e && this._initSize());
            } }), z(m.fn, f), _ = g.extend({ init: function init(t) {
                g.fn.init.call(this, t), this._initPath(), this._setPosition();
            }, _setPosition: function _setPosition() {
                var t = this.options,
                    e = t.x,
                    i = t.y;(G(e) || G(i)) && this.position(e || 0, i || 0);
            }, redraw: function redraw(t) {
                t && (g.fn.redraw.call(this, t), this._diffNumericOptions(t, [Q, J]) && this._drawPath(), this._diffNumericOptions(t, [Z, $]) && this._setPosition());
            }, _initPath: function _initPath() {
                var t = this.options;this.drawingElement = new F.Path({ stroke: t.stroke, closed: !0 }), this._fill(), this._drawPath();
            }, _drawPath: function _drawPath() {
                var t = this.drawingElement,
                    e = n(this.options),
                    i = e.width,
                    o = e.height;t.segments.elements([a(0, 0), a(i, 0), a(i, o), a(0, o)]);
            } }), v = g.extend({ init: function init(t) {
                g.fn.init.call(this, t);var e = this.options.anchor;this.anchor = new H.Point(e.x, e.y), this.createElement();
            }, options: { stroke: { color: K, width: 0 }, fill: { color: "black" } }, _transformToPath: function _transformToPath(t, e) {
                var i = e.transform();return t && i && (t = t.transformCopy(i)), t;
            }, redraw: function redraw(t) {
                t && (t.position && (this.options.position = t.position), g.fn.redraw.call(this, t));
            } }), y = v.extend({ options: { radius: 4, anchor: { x: 0, y: 0 } }, createElement: function createElement() {
                var t = this.options;this.drawingElement = new F.Circle(new H.Circle(this.anchor, t.radius), { fill: t.fill, stroke: t.stroke });
            }, positionMarker: function positionMarker(t) {
                var e,
                    i,
                    n = this.options,
                    o = n.position,
                    s = t.segments;e = o == j ? s[0] : s[s.length - 1], e && (i = this._transformToPath(e.anchor(), t), this.drawingElement.transform(H.transform().translate(i.x, i.y)));
            } }), w = v.extend({ options: { path: "M 0 0 L 10 5 L 0 10 L 3 5 z", anchor: { x: 10, y: 5 } }, createElement: function createElement() {
                var t = this.options;this.drawingElement = F.Path.parse(t.path, { fill: t.fill, stroke: t.stroke });
            }, positionMarker: function positionMarker(t) {
                var e,
                    i,
                    n = this._linePoints(t),
                    o = n.start,
                    s = n.end,
                    a = H.transform();o && a.rotate(r(o, s), s), s && (e = this.anchor, i = s.clone().translate(-e.x, -e.y), a.translate(i.x, i.y)), this.drawingElement.transform(a);
            }, _linePoints: function _linePoints(t) {
                var e,
                    i,
                    n,
                    o,
                    s,
                    r = this.options,
                    a = t.segments;if (r.position == j ? (n = a[0], n && (i = n.anchor(), e = n.controlOut(), o = a[1], !e && o && (e = o.anchor()))) : (n = a[a.length - 1], n && (i = n.anchor(), e = n.controlIn(), s = a[a.length - 2], !e && s && (e = s.anchor()))), i) return { start: this._transformToPath(e, t), end: this._transformToPath(i, t) };
            } }), x = { _getPath: function _getPath(t) {
                var e = this.drawingElement;if (e instanceof F.MultiPath && (e = t == j ? e.paths[0] : e.paths[e.paths.length - 1]), e && e.segments.length) return e;
            }, _normalizeMarkerOptions: function _normalizeMarkerOptions(t) {
                var e = t.startCap,
                    i = t.endCap;U(e) && (t.startCap = { type: e }), U(i) && (t.endCap = { type: i });
            }, _removeMarker: function _removeMarker(t) {
                var e = this._markers[t];e && (this.drawingContainer().remove(e.drawingElement), delete this._markers[t]);
            }, _createMarkers: function _createMarkers() {
                var t = this.options;this._normalizeMarkerOptions(t), this._markers = {}, this._markers[j] = this._createMarker(t.startCap, j), this._markers[Y] = this._createMarker(t.endCap, Y);
            }, _createMarker: function _createMarker(t, i) {
                var n,
                    o,
                    s = (t || {}).type,
                    r = this._getPath(i);return r ? (s == W.filledCircle ? n = y : s == W.arrowStart || s == W.arrowEnd ? n = w : this._removeMarker(i), n ? (o = new n(z({}, t, { position: i })), o.positionMarker(r), this.drawingContainer().append(o.drawingElement), o) : e) : (this._removeMarker(i), e);
            }, _positionMarker: function _positionMarker(t) {
                var e,
                    i = this._markers[t];i && (e = this._getPath(t), e ? i.positionMarker(e) : this._removeMarker(t));
            }, _capMap: { start: "startCap", end: "endCap" }, _redrawMarker: function _redrawMarker(t, e, i) {
                var n, o, s, r, a;return this._normalizeMarkerOptions(i), n = this.options, o = this._capMap[e], s = (n[o] || {}).type, r = i[o], a = !1, r ? (n[o] = z({}, n[o], r), r.type && s != r.type ? (this._removeMarker(e), this._markers[e] = this._createMarker(n[o], e), a = !0) : this._markers[e] && this._markers[e].redraw(r)) : t && !this._markers[e] && n[o] && (this._markers[e] = this._createMarker(n[o], e), a = !0), a;
            }, _redrawMarkers: function _redrawMarkers(t, e) {
                !this._redrawMarker(t, j, e) && t && this._positionMarker(j), !this._redrawMarker(t, Y, e) && t && this._positionMarker(Y);
            } }, b = g.extend({ init: function init(t) {
                g.fn.init.call(this, t), this.container = new F.Group(), this._createElements(), this._initSize();
            }, options: { autoSize: !0 }, drawingContainer: function drawingContainer() {
                return this.container;
            }, data: function data(t) {
                var i = this.options;return t ? (i.data != t && (i.data = t, this._setData(t), this._initSize(), this._redrawMarkers(!0, {})), e) : i.data;
            }, redraw: function redraw(t) {
                var e, i;t && (g.fn.redraw.call(this, t), e = this.options, i = t.data, G(i) && e.data != i ? (e.data = i, this._setData(i), this._updateSize(t) || this._initSize(), this._redrawMarkers(!0, t)) : (this._updateSize(t), this._redrawMarkers(!1, t)));
            }, _createElements: function _createElements() {
                var t = this.options;this.drawingElement = F.Path.parse(t.data || "", { stroke: t.stroke }), this._fill(), this.container.append(this.drawingElement), this._createMarkers();
            }, _setData: function _setData(t) {
                var e = this.drawingElement,
                    i = F.Path.parse(t || ""),
                    n = i.paths.slice(0);i.paths.elements([]), e.paths.elements(n);
            } }), z(b.fn, f), z(b.fn, x), C = g.extend({ init: function init(t) {
                g.fn.init.call(this, t), this.container = new F.Group(), this._initPath(), this._createMarkers();
            }, drawingContainer: function drawingContainer() {
                return this.container;
            }, redraw: function redraw(t) {
                var e, i;t && (t = t || {}, e = t.from, i = t.to, e && (this.options.from = e), i && (this.options.to = i), e || i ? (this._drawPath(), this._redrawMarkers(!0, t)) : this._redrawMarkers(!1, t), g.fn.redraw.call(this, t));
            }, _initPath: function _initPath() {
                var t = this.options,
                    e = this.drawingElement = new F.Path({ stroke: t.stroke });this._fill(), this._drawPath(), this.container.append(e);
            }, _drawPath: function _drawPath() {
                var t = this.options,
                    e = this.drawingElement,
                    i = t.from || new B(),
                    n = t.to || new B();e.segments.elements([a(i.x, i.y), a(n.x, n.y)]);
            } }), z(C.fn, x), S = g.extend({ init: function init(t) {
                g.fn.init.call(this, t), this.container = new F.Group(), this._initPath(), this._createMarkers();
            }, drawingContainer: function drawingContainer() {
                return this.container;
            }, points: function points(t) {
                var i = this.options;return t ? (i.points = t, this._updatePath(), e) : i.points;
            }, redraw: function redraw(t) {
                if (t) {
                    var e = t.points;g.fn.redraw.call(this, t), e && this._pointsDiffer(e) ? (this.points(e), this._redrawMarkers(!0, t)) : this._redrawMarkers(!1, t);
                }
            }, _initPath: function _initPath() {
                var t = this.options;this.drawingElement = new F.Path({ stroke: t.stroke }), this._fill(), this.container.append(this.drawingElement), t.points && this._updatePath();
            }, _pointsDiffer: function _pointsDiffer(t) {
                var e,
                    i = this.options.points,
                    n = i.length !== t.length;if (!n) for (e = 0; e < t.length; e++) {
                    if (i[e].x !== t[e].x || i[e].y !== t[e].y) {
                        n = !0;break;
                    }
                }return n;
            }, _updatePath: function _updatePath() {
                var t,
                    e,
                    i = this.drawingElement,
                    n = this.options,
                    o = n.points,
                    s = [];for (e = 0; e < o.length; e++) {
                    t = o[e], s.push(a(t.x, t.y));
                }i.segments.elements(s);
            }, options: { points: [] } }), z(S.fn, x), k = p.extend({ init: function init(t) {
                p.fn.init.call(this, t), this._initImage();
            }, redraw: function redraw(t) {
                t && (t.source && this.drawingElement.src(t.source), this._diffNumericOptions(t, [Q, J, Z, $]) && this.drawingElement.rect(this._rect()), p.fn.redraw.call(this, t));
            }, _initImage: function _initImage() {
                var t = this.options,
                    e = this._rect();this.drawingElement = new F.Image(t.source, e, {});
            }, _rect: function _rect() {
                var t = n(this.options),
                    e = new H.Point(t.x, t.y),
                    i = new H.Size(t.width, t.height);return new H.Rect(e, i);
            } }), T = p.extend({ init: function init(t) {
                this.children = [], p.fn.init.call(this, t), this.drawingElement = new F.Group(), this._initSize();
            }, options: { autoSize: !1 }, append: function append(t) {
                this.drawingElement.append(t.drawingContainer()), this.children.push(t), this._childrenChange = !0;
            }, remove: function remove(t) {
                this._remove(t) && (this._childrenChange = !0);
            }, _remove: function _remove(t) {
                var e = q(t, this.children);if (e >= 0) return this.drawingElement.removeAt(e), this.children.splice(e, 1), !0;
            }, clear: function clear() {
                this.drawingElement.clear(), this.children = [], this._childrenChange = !0;
            }, toFront: function toFront(t) {
                var e, i;for (i = 0; i < t.length; i++) {
                    e = t[i], this._remove(e) && this.append(e);
                }
            }, toBack: function toBack(t) {
                this._reorderChildren(t, 0);
            }, toIndex: function toIndex(t, e) {
                this._reorderChildren(t, e);
            }, _reorderChildren: function _reorderChildren(t, e) {
                var i,
                    n,
                    o,
                    s,
                    r,
                    a = this.drawingElement,
                    h = a.children.slice(0),
                    c = this.children,
                    d = O(e);for (i = 0; i < t.length; i++) {
                    r = t[i], s = r.drawingContainer(), n = q(r, c), n >= 0 && (h.splice(n, 1), c.splice(n, 1), o = d ? e : e[i], h.splice(o, 0, s), c.splice(o, 0, r));
                }a.clear(), a.append.apply(a, h);
            }, redraw: function redraw(t) {
                t && (this._childrenChange ? (this._childrenChange = !1, this._updateSize(t) || this._initSize()) : this._updateSize(t), p.fn.redraw.call(this, t));
            }, _boundingBox: function _boundingBox() {
                var t,
                    e,
                    i,
                    n,
                    o = this.children;for (n = 0; n < o.length; n++) {
                    e = o[n], e.visible() && e._includeInBBox !== !1 && (i = e.drawingContainer().clippedBBox(null), i && (t = t ? H.Rect.union(t, i) : i));
                }return t;
            } }), z(T.fn, f), M = T.extend({ init: function init(t, e) {
                this.children = [], p.fn.init.call(this, e), this.drawingElement = new F.Layout(h(t), e), this._initSize();
            }, rect: function rect(t) {
                if (t) this.drawingElement.rect(h(t));else {
                    var e = this.drawingElement.rect();if (e) return new N(e.origin.x, e.origin.y, e.size.width, e.size.height);
                }
            }, reflow: function reflow() {
                this.drawingElement.reflow();
            }, redraw: function redraw(t) {
                P.deepExtend(this.drawingElement.options, t), T.fn.redraw.call(this, t);
            } }), D = g.extend({ init: function init(t) {
                g.fn.init.call(this, t), this._initCircle(), this._initSize();
            }, redraw: function redraw(t) {
                if (t) {
                    var e = this.options;t.center && (z(e, { center: t.center }), this._center.move(e.center.x, e.center.y)), this._diffNumericOptions(t, ["radius"]) && this._circle.setRadius(e.radius), this._updateSize(t), g.fn.redraw.call(this, t);
                }
            }, _initCircle: function _initCircle() {
                var t,
                    e = this.options,
                    i = e.width,
                    n = e.height,
                    o = e.radius;G(o) || (G(i) || (i = n), G(n) || (n = i), e.radius = o = Math.min(i, n) / 2), t = e.center || { x: o, y: o }, this._center = new H.Point(t.x, t.y), this._circle = new H.Circle(this._center, o), this.drawingElement = new F.Circle(this._circle, { stroke: e.stroke }), this._fill();
            } }), z(D.fn, f), I = E.extend({ init: function init(t, e) {
                e = e || {}, this.element = t, this.surface = F.Surface.create(t, e), P.isFunction(this.surface.translate) && (this.translate = this._translate), this.drawingElement = new F.Group(), this._viewBox = new N(0, 0, e.width, e.height), this.size(this._viewBox);
            }, bounds: function bounds() {
                var t = this.drawingElement.clippedBBox();return new N(0, 0, t.width(), t.height());
            }, size: function size(t) {
                var e = this._viewBox;return G(t) && (e.width = t.width, e.height = t.height, this.surface.setSize(t)), { width: e.width, height: e.height };
            }, _translate: function _translate(t, e) {
                var i = this._viewBox;return G(t) && G(e) && (i.x = t, i.y = e, this.surface.translate({ x: t, y: e })), { x: i.x, y: i.y };
            }, draw: function draw() {
                this.surface.draw(this.drawingElement);
            }, append: function append(t) {
                return this.drawingElement.append(t.drawingContainer()), this;
            }, remove: function remove(t) {
                this.drawingElement.remove(t.drawingContainer());
            }, insertBefore: function insertBefore() {}, clear: function clear() {
                this.drawingElement.clear();
            }, destroy: function destroy(e) {
                this.surface.destroy(), e && t(this.element).remove();
            } }), P.deepExtend(L, { init: function init(t) {
                P.init(t, L.ui);
            }, diffNumericOptions: i, Element: p, Scale: c, Translation: d, Rotation: l, Circle: D, Group: T, Rectangle: _, Canvas: I, Path: b, Layout: M, Line: C, MarkerBase: v, ArrowMarker: w, CircleMarker: y, Polyline: S, CompositeTransform: u, TextBlock: m, Image: k, VisualBase: g });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/diagram/services.min", ["kendo.drawing.min", "dataviz/diagram/svg.min"], t);
}(function () {
    !function (t, e) {
        function i(t, e) {
            return e.charCodeAt(0) == t || e.toUpperCase().charCodeAt(0) == t;
        }function n(t, e) {
            var i;return t.x == -1 && t.y == -1 ? i = e.bottomRight() : 1 == t.x && 1 == t.y ? i = e.topLeft() : t.x == -1 && 1 == t.y ? i = e.topRight() : 1 == t.x && t.y == -1 ? i = e.bottomLeft() : 0 === t.x && t.y == -1 ? i = e.bottom() : 0 === t.x && 1 == t.y ? i = e.top() : 1 == t.x && 0 === t.y ? i = e.left() : t.x == -1 && 0 === t.y && (i = e.right()), i;
        }function o(t) {
            var e = t.options.editable;return e && e.drag !== !1;
        }function s(t, e) {
            var i, n, o, s;for (s = 0; s < t.connectors.length; s++) {
                if (i = t.connectors[s], n = i.position(), o = new q(n.x, n.y), o.inflate(ot, ot), o.contains(e)) return i;
            }
        }function r(t) {
            return t.ctrlKey === !1 && t.altKey === !1 && t.shiftKey === !1;
        }var a,
            h,
            c,
            d,
            l,
            u,
            f,
            p,
            g,
            m,
            _,
            v,
            y,
            w,
            x,
            b,
            C,
            S,
            k,
            T,
            M,
            D,
            I,
            P,
            L,
            E,
            z,
            B,
            N,
            R,
            A,
            O,
            U = window.kendo,
            V = U.dataviz,
            H = V.diagram,
            F = U.Class,
            G = H.Group,
            q = H.Rect,
            K = H.Rectangle,
            W = H.Utils,
            X = W.isUndefined,
            j = H.Point,
            Y = H.Circle,
            Q = H.Ticker,
            J = U.deepExtend,
            Z = U.ui.Movable,
            $ = U.support.browser,
            tt = U.util.defined,
            et = t.inArray,
            it = t.proxy,
            nt = { arrow: "default", grip: "pointer", cross: "pointer", add: "pointer", move: "move", select: "pointer", south: "s-resize", east: "e-resize", west: "w-resize", north: "n-resize", rowresize: "row-resize", colresize: "col-resize" },
            ot = 10,
            st = "Auto",
            rt = "Top",
            at = "Right",
            ht = "Left",
            ct = "Bottom",
            dt = 10,
            lt = 10,
            ut = "dragStart",
            ft = "drag",
            pt = "dragEnd",
            gt = "itemRotate",
            mt = "itemBoundsChange",
            _t = 5,
            vt = 5,
            yt = "mouseEnter",
            wt = "mouseLeave",
            xt = "zoomStart",
            bt = "zoomEnd",
            Ct = -2e4,
            St = 2e4,
            kt = .9,
            Tt = .93,
            Mt = 5,
            Dt = "transparent",
            It = "pan",
            Pt = "rotated",
            Lt = "source",
            Et = "target",
            zt = { "-1": Lt, 1: Et };H.Cursors = nt, a = U.Class.extend({ init: function init(t) {
                this.layoutState = t, this.diagram = t.diagram;
            }, initState: function initState() {
                function t(t, e) {
                    var i = this.diagram.getShapeById(t);i && (this.subjects.push(i), this.froms.push(i.bounds().topLeft()), this.tos.push(e.topLeft()));
                }this.froms = [], this.tos = [], this.subjects = [], this.layoutState.nodeMap.forEach(t, this);
            }, update: function update(t) {
                if (!(this.subjects.length <= 0)) for (var e = 0; e < this.subjects.length; e++) {
                    this.subjects[e].position(new j(this.froms[e].x + (this.tos[e].x - this.froms[e].x) * t, this.froms[e].y + (this.tos[e].y - this.froms[e].y) * t));
                }
            } }), h = F.extend({ init: function init(t, e, i) {
                this.animate = !X(i) && i, this._initialState = t, this._finalState = e, this.title = "Diagram layout";
            }, undo: function undo() {
                this.setState(this._initialState);
            }, redo: function redo() {
                this.setState(this._finalState);
            }, setState: function setState(t) {
                var e,
                    i = t.diagram;this.animate ? (t.linkMap.forEach(function (t, e) {
                    var n = i.getShapeById(t);n.visible(!1), n && n.points(e);
                }), e = new Q(), e.addAdapter(new a(t)), e.onComplete(function () {
                    t.linkMap.forEach(function (t) {
                        var e = i.getShapeById(t);e.visible(!0);
                    });
                }), e.play()) : (t.nodeMap.forEach(function (t, e) {
                    var n = i.getShapeById(t);n && n.position(e.topLeft());
                }), t.linkMap.forEach(function (t, e) {
                    var n = i.getShapeById(t);n && n.points(e);
                }));
            } }), c = F.extend({ init: function init(t) {
                this.units = [], this.title = "Composite unit", t !== e && this.units.push(t);
            }, add: function add(t) {
                this.units.push(t);
            }, undo: function undo() {
                for (var t = 0; t < this.units.length; t++) {
                    this.units[t].undo();
                }
            }, redo: function redo() {
                for (var t = 0; t < this.units.length; t++) {
                    this.units[t].redo();
                }
            } }), d = F.extend({ init: function init(t, e, i) {
                this.item = t, this._redoSource = e, this._redoTarget = i, tt(e) && (this._undoSource = t.source()), tt(i) && (this._undoTarget = t.target()), this.title = "Connection Editing";
            }, undo: function undo() {
                this._undoSource !== e && this.item._updateConnector(this._undoSource, "source"), this._undoTarget !== e && this.item._updateConnector(this._undoTarget, "target"), this.item.updateModel();
            }, redo: function redo() {
                this._redoSource !== e && this.item._updateConnector(this._redoSource, "source"), this._redoTarget !== e && this.item._updateConnector(this._redoTarget, "target"), this.item.updateModel();
            } }), l = F.extend({ init: function init(t, e, i) {
                this.item = t, this._undoSource = e, this._undoTarget = i, this._redoSource = t.source(), this._redoTarget = t.target(), this.title = "Connection Editing";
            }, undo: function undo() {
                this.item._updateConnector(this._undoSource, "source"), this.item._updateConnector(this._undoTarget, "target"), this.item.updateModel();
            }, redo: function redo() {
                this.item._updateConnector(this._redoSource, "source"), this.item._updateConnector(this._redoTarget, "target"), this.item.updateModel();
            } }), u = F.extend({ init: function init(t) {
                this.connection = t, this.diagram = t.diagram, this.targetConnector = t.targetConnector, this.title = "Delete connection";
            }, undo: function undo() {
                this.diagram._addConnection(this.connection, !1);
            }, redo: function redo() {
                this.diagram.remove(this.connection, !1);
            } }), f = F.extend({ init: function init(t) {
                this.shape = t, this.diagram = t.diagram, this.title = "Deletion";
            }, undo: function undo() {
                this.diagram._addShape(this.shape, !1), this.shape.select(!1);
            }, redo: function redo() {
                this.shape.select(!1), this.diagram.remove(this.shape, !1);
            } }), p = F.extend({ init: function init(t, e, i) {
                var n, o;for (this.shapes = t, this.undoStates = e, this.title = "Transformation", this.redoStates = [], this.adorner = i, n = 0; n < this.shapes.length; n++) {
                    o = this.shapes[n], this.redoStates.push(o.bounds());
                }
            }, undo: function undo() {
                var t, e;for (t = 0; t < this.shapes.length; t++) {
                    e = this.shapes[t], e.bounds(this.undoStates[t]), e.hasOwnProperty("layout") && e.layout(e, this.redoStates[t], this.undoStates[t]), e.updateModel();
                }this.adorner && (this.adorner.refreshBounds(), this.adorner.refresh());
            }, redo: function redo() {
                var t, e;for (t = 0; t < this.shapes.length; t++) {
                    e = this.shapes[t], e.bounds(this.redoStates[t]), e.hasOwnProperty("layout") && e.layout(e, this.undoStates[t], this.redoStates[t]), e.updateModel();
                }this.adorner && (this.adorner.refreshBounds(), this.adorner.refresh());
            } }), g = F.extend({ init: function init(t, e) {
                this.connection = t, this.diagram = e, this.title = "New connection";
            }, undo: function undo() {
                this.diagram.remove(this.connection, !1);
            }, redo: function redo() {
                this.diagram._addConnection(this.connection, !1);
            } }), m = F.extend({ init: function init(t, e) {
                this.shape = t, this.diagram = e, this.title = "New shape";
            }, undo: function undo() {
                this.diagram.deselect(), this.diagram.remove(this.shape, !1);
            }, redo: function redo() {
                this.diagram._addShape(this.shape, !1);
            } }), _ = F.extend({ init: function init(t, e, i) {
                this.initial = t, this.finalPos = e, this.diagram = i, this.title = "Pan Unit";
            }, undo: function undo() {
                this.diagram.pan(this.initial);
            }, redo: function redo() {
                this.diagram.pan(this.finalPos);
            } }), v = F.extend({ init: function init(t, e, i) {
                var n, o;for (this.shapes = e, this.undoRotates = i, this.title = "Rotation", this.redoRotates = [], this.redoAngle = t._angle, this.adorner = t, this.center = t._innerBounds.center(), n = 0; n < this.shapes.length; n++) {
                    o = this.shapes[n], this.redoRotates.push(o.rotate().angle);
                }
            }, undo: function undo() {
                var t, e;for (t = 0; t < this.shapes.length; t++) {
                    e = this.shapes[t], e.rotate(this.undoRotates[t], this.center, !1), e.hasOwnProperty("layout") && e.layout(e), e.updateModel();
                }this.adorner && (this.adorner._initialize(), this.adorner.refresh());
            }, redo: function redo() {
                var t, e;for (t = 0; t < this.shapes.length; t++) {
                    e = this.shapes[t], e.rotate(this.redoRotates[t], this.center, !1), e.hasOwnProperty("layout") && e.layout(e), e.updateModel();
                }this.adorner && (this.adorner._initialize(), this.adorner.refresh());
            } }), y = F.extend({ init: function init(t, e, i) {
                this.diagram = t, this.indices = i, this.items = e, this.title = "Rotate Unit";
            }, undo: function undo() {
                this.diagram._toIndex(this.items, this.indices);
            }, redo: function redo() {
                this.diagram.toFront(this.items, !1);
            } }), w = F.extend({ init: function init(t, e, i) {
                this.diagram = t, this.indices = i, this.items = e, this.title = "Rotate Unit";
            }, undo: function undo() {
                this.diagram._toIndex(this.items, this.indices);
            }, redo: function redo() {
                this.diagram.toBack(this.items, !1);
            } }), x = U.Observable.extend({ init: function init(t) {
                U.Observable.fn.init.call(this, t), this.bind(this.events, t), this.stack = [], this.index = 0, this.capacity = 100;
            }, events: ["undone", "redone"], begin: function begin() {
                this.composite = new c();
            }, cancel: function cancel() {
                this.composite = e;
            }, commit: function commit(t) {
                this.composite.units.length > 0 && this._restart(this.composite, t), this.composite = e;
            }, addCompositeItem: function addCompositeItem(t) {
                this.composite ? this.composite.add(t) : this.add(t);
            }, add: function add(t, e) {
                this._restart(t, e);
            }, pop: function pop() {
                this.index > 0 && (this.stack.pop(), this.index--);
            }, count: function count() {
                return this.stack.length;
            }, undo: function undo() {
                this.index > 0 && (this.index--, this.stack[this.index].undo(), this.trigger("undone"));
            }, redo: function redo() {
                this.stack.length > 0 && this.index < this.stack.length && (this.stack[this.index].redo(), this.index++, this.trigger("redone"));
            }, _restart: function _restart(t, e) {
                this.stack.splice(this.index, this.stack.length - this.index), this.stack.push(t), e !== !1 ? this.redo() : this.index++, this.stack.length > this.capacity && (this.stack.splice(0, this.stack.length - this.capacity), this.index = this.capacity);
            }, clear: function clear() {
                this.stack = [], this.index = 0;
            } }), b = F.extend({ init: function init(t) {
                this.toolService = t;
            }, start: function start() {}, move: function move() {}, end: function end() {}, tryActivate: function tryActivate() {
                return !1;
            }, getCursor: function getCursor() {
                return nt.arrow;
            } }), C = b.extend({ init: function init(e) {
                var i,
                    n,
                    o,
                    s,
                    r = this,
                    a = U.support.mobileOS ? Tt : kt;b.fn.init.call(r, e), i = r.toolService.diagram, n = i.canvas, o = i.scroller = r.scroller = t(i.scrollable).kendoMobileScroller({ friction: a, velocityMultiplier: Mt, mousewheelScrolling: !1, zoom: !1, scroll: it(r._move, r) }).data("kendoMobileScroller"), n.translate && (r.movableCanvas = new Z(n.element)), s = function s(t, e, i) {
                    t.makeVirtual(), t.virtualSize(e || Ct, i || St);
                }, s(o.dimensions.x), s(o.dimensions.y), o.disable();
            }, tryActivate: function tryActivate(t, e) {
                var i = this.toolService,
                    n = i.diagram.options.pannable,
                    o = e.ctrlKey;return tt(n.key) && (o = n.key && "none" != n.key ? e[n.key + "Key"] : r(e) && !tt(i.hoveredItem)), n !== !1 && o && !tt(i.hoveredAdorner) && !tt(i._hoveredConnector);
            }, start: function start() {
                this.scroller.enable();
            }, move: function move() {}, _move: function _move(t) {
                var e = this,
                    i = e.toolService.diagram,
                    n = i.canvas,
                    o = new j(t.scrollLeft, t.scrollTop);n.translate ? (i._storePan(o.times(-1)), e.movableCanvas.moveTo(o), n.translate(o.x, o.y)) : o = o.plus(i._pan.times(-1)), i.trigger(It, { pan: o });
            }, end: function end() {
                this.scroller.disable();
            }, getCursor: function getCursor() {
                return nt.move;
            } }), S = F.extend({ init: function init(t) {
                this.toolService = t;
            }, tryActivate: function tryActivate() {
                return !0;
            }, start: function start(t, e) {
                var i = this.toolService,
                    n = i.diagram,
                    o = i.hoveredItem;o && (i.selectSingle(o, e), o.adorner && (this.adorner = o.adorner, this.handle = this.adorner._hitTest(t))), this.handle || (this.handle = n._resizingAdorner._hitTest(t), this.handle && (this.adorner = n._resizingAdorner)), this.adorner && (this.adorner.isDragHandle(this.handle) && n.trigger(ut, { shapes: this.adorner.shapes, connections: [] }) ? (i.startPoint = t, i.end(t)) : this.adorner.start(t));
            }, move: function move(t) {
                this.adorner && (this.adorner.move(this.handle, t), this.adorner.isDragHandle(this.handle) && this.toolService.diagram.trigger(ft, { shapes: this.adorner.shapes, connections: [] }));
            }, end: function end() {
                var t,
                    i = this.toolService.diagram,
                    n = this.adorner;n && (n.isDragHandle(this.handle) && i.trigger(pt, { shapes: n.shapes, connections: [] }) ? n.cancel() : (t = n.stop(), t && i.undoRedoService.add(t, !1))), this.adorner = e, this.handle = e;
            }, getCursor: function getCursor(t) {
                return this.toolService.hoveredItem ? this.toolService.hoveredItem._getCursor(t) : nt.arrow;
            } }), k = F.extend({ init: function init(t) {
                this.toolService = t;
            }, tryActivate: function tryActivate(t, e) {
                var i = this.toolService,
                    n = i.diagram.options.selectable,
                    o = n && n.multiple !== !1;return o && (o = n.key && "none" != n.key ? e[n.key + "Key"] : r(e)), o && !tt(i.hoveredItem) && !tt(i.hoveredAdorner);
            }, start: function start(t) {
                var e = this.toolService.diagram;e.deselect(), e.selector.start(t);
            }, move: function move(t) {
                var e = this.toolService.diagram;e.selector.move(t);
            }, end: function end(t, e) {
                var i = this.toolService.diagram,
                    n = this.toolService.hoveredItem,
                    o = i.selector.bounds();n && n.isSelected || e.ctrlKey || i.deselect(), o.isEmpty() || i.selectArea(o), i.selector.end();
            }, getCursor: function getCursor() {
                return nt.arrow;
            } }), T = F.extend({ init: function init(t) {
                this.toolService = t, this.type = "ConnectionTool";
            }, tryActivate: function tryActivate() {
                return this.toolService._hoveredConnector;
            }, start: function start(t, e) {
                var i = this.toolService,
                    n = i.diagram,
                    s = i._hoveredConnector,
                    r = n._createConnection({}, s._c, t);o(r) && !n.trigger(ut, { shapes: [], connections: [r], connectionHandle: Et }) && n._addConnection(r) ? (i._connectionManipulation(r, s._c.shape, !0), i._removeHover(), i.selectSingle(i.activeConnection, e), "touchmove" == e.type && (n._cachedTouchTarget = s.visual)) : (r.source(null), i.end(t));
            }, move: function move(t) {
                var e = this.toolService,
                    i = e.activeConnection;return i.target(t), e.diagram.trigger(ft, { shapes: [], connections: [i], connectionHandle: Et }), !0;
            }, end: function end(t) {
                var e,
                    i = this.toolService,
                    n = i.diagram,
                    o = i.activeConnection,
                    s = i.hoveredItem,
                    r = i._hoveredConnector,
                    a = n._cachedTouchTarget;o && (e = r && r._c != o.sourceConnector ? r._c : s && s instanceof H.Shape ? s.getConnector(st) || s.getConnector(t) : t, o.target(e), n.trigger(pt, { shapes: [], connections: [o], connectionHandle: Et }) ? (n.remove(o, !1), n.undoRedoService.pop()) : (o.updateModel(), n._syncConnectionChanges()), i._connectionManipulation(), a && (n._connectorsAdorner.visual.remove(a), n._cachedTouchTarget = null));
            }, getCursor: function getCursor() {
                return nt.arrow;
            } }), M = F.extend({ init: function init(t) {
                this.toolService = t, this.type = "ConnectionTool";
            }, tryActivate: function tryActivate(t, e) {
                var i = this.toolService,
                    n = i.diagram,
                    o = n.options.selectable,
                    s = i.hoveredItem,
                    r = o !== !1 && s && s.path && !(s.isSelected && e.ctrlKey);return r && (this._c = s), r;
            }, start: function start(t, e) {
                var i,
                    n,
                    s,
                    r = this.toolService,
                    a = this._c;r.selectSingle(a, e), i = a.adorner, i && (n = i._hitTest(t), s = zt[n]), o(a) && i && !r.diagram.trigger(ut, { shapes: [], connections: [a], connectionHandle: s }) ? (this.handle = n, this.handleName = s, i.start(t)) : (r.startPoint = t, r.end(t));
            }, move: function move(t) {
                var e = this._c.adorner;if (o(this._c) && e) return e.move(this.handle, t), this.toolService.diagram.trigger(ft, { shapes: [], connections: [this._c], connectionHandle: this.handleName }), !0;
            }, end: function end(t) {
                var e,
                    i = this._c,
                    n = i.adorner,
                    s = this.toolService,
                    r = s.diagram;n && o(i) && (e = n.stop(t), r.trigger(pt, { shapes: [], connections: [i], connectionHandle: this.handleName }) ? e.undo() : (r.undoRedoService.add(e, !1), i.updateModel(), r._syncConnectionChanges()));
            }, getCursor: function getCursor() {
                return nt.move;
            } }), D = F.extend({ init: function init(t) {
                this.diagram = t, this.tools = [new C(this), new M(this), new T(this), new k(this), new S(this)], this.activeTool = e;
            }, start: function start(t, e) {
                return e = J({}, e), this.activeTool && this.activeTool.end(t, e), this._updateHoveredItem(t), this._activateTool(t, e), this.activeTool.start(t, e), this._updateCursor(t), this.diagram.focus(), this.diagram.canvas.surface.suspendTracking(), this.startPoint = t, !0;
            }, move: function move(t, e) {
                e = J({}, e);var i = !0;return this.activeTool && (i = this.activeTool.move(t, e)), i && this._updateHoveredItem(t), this._updateCursor(t), !0;
            }, end: function end(t, i) {
                return i = J({}, i), this.activeTool && this.activeTool.end(t, i), this.diagram.canvas.surface.resumeTracking(), this.activeTool = e, this._updateCursor(t), !0;
            }, keyDown: function keyDown(t, e) {
                var n,
                    o = this.diagram;if (e = J({ ctrlKey: !1, metaKey: !1, altKey: !1 }, e), !e.ctrlKey && !e.metaKey || e.altKey) {
                    if (46 === t || 8 === t) return n = this.diagram._triggerRemove(o.select()), n.length && (this.diagram.remove(n, !0), this.diagram._syncChanges(), this.diagram._destroyToolBar()), !0;if (27 === t) return this._discardNewConnection(), o.deselect(), o._destroyToolBar(), !0;
                } else {
                    if (i(t, "a")) return o.selectAll(), o._destroyToolBar(), !0;if (i(t, "z")) return o.undo(), o._destroyToolBar(), !0;if (i(t, "y")) return o.redo(), o._destroyToolBar(), !0;i(t, "c") ? (o.copy(), o._destroyToolBar()) : i(t, "x") ? (o.cut(), o._destroyToolBar()) : i(t, "v") ? (o.paste(), o._destroyToolBar()) : i(t, "l") ? (o.layout(), o._destroyToolBar()) : i(t, "d") && (o._destroyToolBar(), o.copy(), o.paste());
                }
            }, wheel: function wheel(t, e) {
                var i = this.diagram,
                    n = e.delta,
                    o = i.zoom(),
                    s = i.options,
                    r = s.zoomRate,
                    a = { point: t, meta: e, zoom: o };if (!i.trigger(xt, a)) return n < 0 ? o += r : o -= r, o = U.dataviz.round(Math.max(s.zoomMin, Math.min(s.zoomMax, o)), 2), a.zoom = o, i.zoom(o, a), i.trigger(bt, a), !0;
            }, setTool: function setTool(t, e) {
                t.toolService = this, this.tools[e] = t;
            }, selectSingle: function selectSingle(t, e) {
                var i,
                    n = this.diagram,
                    o = n.options.selectable;o && !t.isSelected && t.options.selectable !== !1 && (i = e.ctrlKey && o.multiple !== !1, n.select(t, { addToSelection: i }));
            }, _discardNewConnection: function _discardNewConnection() {
                this.newConnection && (this.diagram.remove(this.newConnection), this.newConnection = e);
            }, _activateTool: function _activateTool(t, e) {
                var i, n;for (i = 0; i < this.tools.length; i++) {
                    if (n = this.tools[i], n.tryActivate(t, e)) {
                        this.activeTool = n;break;
                    }
                }
            }, _updateCursor: function _updateCursor(t) {
                var e = this.diagram.element,
                    i = this.activeTool ? this.activeTool.getCursor(t) : this.hoveredAdorner ? this.hoveredAdorner._getCursor(t) : this.hoveredItem ? this.hoveredItem._getCursor(t) : nt.arrow;e.css({ cursor: i }), $.msie && 7 == $.version && (e[0].style.cssText = e[0].style.cssText);
            }, _connectionManipulation: function _connectionManipulation(t, i, n) {
                this.activeConnection = t, this.disabledShape = i, this.newConnection = n ? this.activeConnection : e;
            }, _updateHoveredItem: function _updateHoveredItem(t) {
                var i = this._hitTest(t),
                    n = this.diagram;i == this.hoveredItem || this.disabledShape && i == this.disabledShape || (this.hoveredItem && (n.trigger(wt, { item: this.hoveredItem }), this.hoveredItem._hover(!1)), i && i.options.enable ? (n.trigger(yt, { item: i }), this.hoveredItem = i, this.hoveredItem._hover(!0)) : this.hoveredItem = e);
            }, _removeHover: function _removeHover() {
                this.hoveredItem && (this.hoveredItem._hover(!1), this.hoveredItem = e);
            }, _hitTest: function _hitTest(t) {
                var i,
                    n,
                    o,
                    s,
                    r = this.diagram;if (this._hoveredConnector && (this._hoveredConnector._hover(!1), this._hoveredConnector = e), r._connectorsAdorner._visible && (i = r._connectorsAdorner._hitTest(t))) return i;if (i = this.diagram._resizingAdorner._hitTest(t)) {
                    if (this.hoveredAdorner = r._resizingAdorner, 0 !== i.x || 0 !== i.y) return;i = e;
                } else this.hoveredAdorner = e;if (!this.activeTool || "ConnectionTool" !== this.activeTool.type) {
                    for (s = [], o = 0; o < r._selectedItems.length; o++) {
                        n = r._selectedItems[o], n instanceof H.Connection && s.push(n);
                    }i = this._hitTestItems(s, t);
                }return i || this._hitTestElements(t);
            }, _hitTestElements: function _hitTestElements(t) {
                var e,
                    i,
                    n,
                    o,
                    r = this.diagram,
                    a = this._hitTestItems(r.shapes, t),
                    h = this._hitTestItems(r.connections, t);return this.activeTool && "ConnectionTool" == this.activeTool.type || !a || !h || s(a, t) || (i = r.mainLayer, n = et(a.visual, i.children), o = et(h.visual, i.children), e = n > o ? a : h), e || a || h;
            }, _hitTestItems: function _hitTestItems(t, e) {
                var i, n, o;for (i = t.length - 1; i >= 0; i--) {
                    if (n = t[i], o = n._hitTest(e)) return o;
                }
            } }), I = U.Class.extend({ init: function init() {} }), P = I.extend({ init: function init(t) {
                var e = this;I.fn.init.call(e), this.connection = t;
            }, hitTest: function hitTest(t) {
                var e = this.getBounds().inflate(ot);return !!e.contains(t) && H.Geometry.distanceToPolyline(t, this.connection.allPoints()) < ot;
            }, getBounds: function getBounds() {
                var t,
                    e = this.connection.allPoints(),
                    i = e[0],
                    n = e[e.length - 1],
                    o = Math.max(i.x, n.x),
                    s = Math.min(i.x, n.x),
                    r = Math.min(i.y, n.y),
                    a = Math.max(i.y, n.y);for (t = 1; t < e.length - 1; ++t) {
                    o = Math.max(o, e[t].x), s = Math.min(s, e[t].x), r = Math.min(r, e[t].y), a = Math.max(a, e[t].y);
                }return new q(s, r, o - s, a - r);
            } }), L = P.extend({ init: function init(t) {
                var e = this;P.fn.init.call(e), this.connection = t;
            }, route: function route() {} }), E = P.extend({ SAME_SIDE_DISTANCE_RATIO: 5, init: function init(t) {
                var e = this;P.fn.init.call(e), this.connection = t;
            }, routePoints: function routePoints(t, e, i, n) {
                var o;return o = i && n ? this._connectorPoints(t, e, i, n) : this._floatingPoints(t, e, i);
            }, route: function route() {
                var t = this.connection._resolvedSourceConnector,
                    e = this.connection._resolvedTargetConnector,
                    i = this.connection.sourcePoint(),
                    n = this.connection.targetPoint(),
                    o = this.routePoints(i, n, t, e);this.connection.points(o);
            }, _connectorSides: [{ name: "Top", axis: "y", boundsPoint: "topLeft", secondarySign: 1 }, { name: "Left", axis: "x", boundsPoint: "topLeft", secondarySign: 1 }, { name: "Bottom", axis: "y", boundsPoint: "bottomRight", secondarySign: -1 }, { name: "Right", axis: "x", boundsPoint: "bottomRight", secondarySign: -1 }], _connectorSide: function _connectorSide(t, e) {
                var i,
                    n,
                    o,
                    s,
                    r,
                    a = t.position(),
                    h = t.shape.bounds(Pt),
                    c = { topLeft: h.topLeft(), bottomRight: h.bottomRight() },
                    d = this._connectorSides,
                    l = U.util.MAX_NUM;for (r = 0; r < d.length; r++) {
                    s = d[r], o = s.axis, i = Math.round(Math.abs(a[o] - c[s.boundsPoint][o])), i < l ? (l = i, n = s) : i === l && (a[o] - e[o]) * s.secondarySign > (a[n.axis] - e[n.axis]) * n.secondarySign && (n = s);
                }return n.name;
            }, _sameSideDistance: function _sameSideDistance(t) {
                var e = t.shape.bounds(Pt);return Math.min(e.width, e.height) / this.SAME_SIDE_DISTANCE_RATIO;
            }, _connectorPoints: function _connectorPoints(t, e, i, n) {
                var o,
                    s,
                    r = this._connectorSide(i, e),
                    a = this._connectorSide(n, t),
                    h = e.x - t.x,
                    c = e.y - t.y,
                    d = this._sameSideDistance(i),
                    l = [];return r === rt || r == ct ? a == rt || a == ct ? r == a ? (s = r == rt ? Math.min(t.y, e.y) - d : Math.max(t.y, e.y) + d, l = [new j(t.x, s), new j(e.x, s)]) : l = [new j(t.x, t.y + c / 2), new j(e.x, t.y + c / 2)] : l = [new j(t.x, e.y)] : a == ht || a == at ? r == a ? (o = r == ht ? Math.min(t.x, e.x) - d : Math.max(t.x, e.x) + d, l = [new j(o, t.y), new j(o, e.y)]) : l = [new j(t.x + h / 2, t.y), new j(t.x + h / 2, t.y + c)] : l = [new j(e.x, t.y)], l;
            }, _floatingPoints: function _floatingPoints(t, e, i) {
                var n,
                    o,
                    s,
                    r = i ? this._connectorSide(i, e) : null,
                    a = this._startHorizontal(t, e, r),
                    h = [t, t, e, e],
                    c = e.x - t.x,
                    d = e.y - t.y,
                    l = h.length;for (s = 1; s < l - 1; ++s) {
                    a ? s % 2 !== 0 ? (n = c / (l / 2), o = 0) : (n = 0, o = d / ((l - 1) / 2)) : s % 2 !== 0 ? (n = 0, o = d / (l / 2)) : (n = c / ((l - 1) / 2), o = 0), h[s] = new j(h[s - 1].x + n, h[s - 1].y + o);
                }return s--, h[l - 2] = a && s % 2 !== 0 || !a && s % 2 === 0 ? new j(h[l - 1].x, h[l - 2].y) : new j(h[l - 2].x, h[l - 1].y), [h[1], h[2]];
            }, _startHorizontal: function _startHorizontal(t, e, i) {
                var n;return n = null !== i && (i === at || i === ht) || Math.abs(t.x - e.x) > Math.abs(t.y - e.y);
            } }), z = F.extend({ init: function init(t, e) {
                var i = this;i.diagram = t, i.options = J({}, i.options, e), i.visual = new G(), i.diagram._adorners.push(i);
            }, refresh: function refresh() {} }), B = z.extend({ init: function init(t, e) {
                var i,
                    n,
                    o,
                    s = this;s.connection = t, i = s.connection.diagram, s._ts = i.toolService, z.fn.init.call(s, i, e), n = s.connection.sourcePoint(), o = s.connection.targetPoint(), s.spVisual = new Y(J(s.options.handles, { center: n })), s.epVisual = new Y(J(s.options.handles, { center: o })), s.visual.append(s.spVisual), s.visual.append(s.epVisual);
            }, options: { handles: {} }, _getCursor: function _getCursor() {
                return nt.move;
            }, start: function start(t) {
                switch (this.handle = this._hitTest(t), this.startPoint = t, this._initialSource = this.connection.source(), this._initialTarget = this.connection.target(), this.handle) {case -1:
                        this.connection.targetConnector && this._ts._connectionManipulation(this.connection, this.connection.targetConnector.shape);break;case 1:
                        this.connection.sourceConnector && this._ts._connectionManipulation(this.connection, this.connection.sourceConnector.shape);}
            }, move: function move(t, e) {
                switch (t) {case -1:
                        this.connection.source(e);break;case 1:
                        this.connection.target(e);break;default:
                        var i = e.minus(this.startPoint);this.startPoint = e, this.connection.sourceConnector || this.connection.source(this.connection.sourcePoint().plus(i)), this.connection.targetConnector || this.connection.target(this.connection.targetPoint().plus(i));}return this.refresh(), !0;
            }, stop: function stop(t) {
                var i,
                    n = this.diagram.toolService,
                    o = n.hoveredItem;return i = n._hoveredConnector ? n._hoveredConnector._c : o && o instanceof H.Shape ? o.getConnector(st) || o.getConnector(t) : t, this.handle === -1 ? this.connection.source(i) : 1 === this.handle && this.connection.target(i), this.handle = e, this._ts._connectionManipulation(), new l(this.connection, this._initialSource, this._initialTarget);
            }, _hitTest: function _hitTest(t) {
                var e = this.connection.sourcePoint(),
                    i = this.connection.targetPoint(),
                    n = this.options.handles.width / 2 + ot,
                    o = this.options.handles.height / 2 + ot,
                    s = e.distanceTo(t),
                    r = i.distanceTo(t),
                    a = new q(e.x, e.y).inflate(n, o).contains(t),
                    h = new q(i.x, i.y).inflate(n, o).contains(t),
                    c = 0;return a && (!h || s < r) ? c = -1 : h && (!a || r < s) && (c = 1), c;
            }, refresh: function refresh() {
                this.spVisual.redraw({ center: this.diagram.modelToLayer(this.connection.sourcePoint()) }), this.epVisual.redraw({ center: this.diagram.modelToLayer(this.connection.targetPoint()) });
            } }), N = z.extend({ init: function init(t, e) {
                var i = this;z.fn.init.call(i, t, e), i._refreshHandler = function (t) {
                    t.item == i.shape && i.refresh();
                };
            }, show: function show(t) {
                var e,
                    i,
                    n,
                    o = this;for (o._visible = !0, o.shape = t, o.diagram.bind(mt, o._refreshHandler), e = t.connectors.length, o.connectors = [], o._clearVisual(), i = 0; i < e; i++) {
                    n = new O(t.connectors[i]), o.connectors.push(n), o.visual.append(n.visual);
                }o.visual.visible(!0), o.refresh();
            }, _clearVisual: function _clearVisual() {
                var t = this;t.diagram._cachedTouchTarget ? t._keepCachedTouchTarget() : t.visual.clear();
            }, _keepCachedTouchTarget: function _keepCachedTouchTarget() {
                var t,
                    e = this,
                    i = e.visual.children,
                    n = i.length,
                    o = et(e.diagram._cachedTouchTarget, i);for (t = n - 1; t >= 0; t--) {
                    t != o && e.visual.remove(i[t]);
                }
            }, destroy: function destroy() {
                var t = this;t.diagram.unbind(mt, t._refreshHandler), t.shape = e, t._visible = e, t.visual.visible(!1);
            }, _hitTest: function _hitTest(t) {
                var e, i;for (i = 0; i < this.connectors.length; i++) {
                    if (e = this.connectors[i], e._hitTest(t)) {
                        e._hover(!0), this.diagram.toolService._hoveredConnector = e;break;
                    }
                }
            }, refresh: function refresh() {
                if (this.shape) {
                    var e = this.shape.bounds();e = this.diagram.modelToLayer(e), this.visual.position(e.topLeft()), t.each(this.connectors, function () {
                        this.refresh();
                    });
                }
            } }), R = z.extend({ init: function init(t, e) {
                var i = this;z.fn.init.call(i, t, e), i._manipulating = !1, i.map = [], i.shapes = [], i._initSelection(), i._createHandles(), i.redraw(), i.diagram.bind("select", function (t) {
                    i._initialize(t.selected);
                }), i._refreshHandler = function () {
                    i._internalChange || (i.refreshBounds(), i.refresh());
                }, i._rotatedHandler = function () {
                    1 == i.shapes.length && (i._angle = i.shapes[0].rotate().angle), i._refreshHandler();
                }, i.diagram.bind(mt, i._refreshHandler).bind(gt, i._rotatedHandler), i.refreshBounds(), i.refresh();
            }, options: { handles: { fill: { color: "#fff" }, stroke: { color: "#282828" }, height: 7, width: 7, hover: { fill: { color: "#282828" }, stroke: { color: "#282828" } } }, selectable: { stroke: { color: "#778899", width: 1, dashType: "dash" }, fill: { color: Dt } }, offset: 10 }, _initSelection: function _initSelection() {
                var t = this,
                    e = t.diagram,
                    i = e.options.selectable,
                    n = J({}, t.options.selectable, i);t.rect = new K(n), t.visual.append(t.rect);
            }, _resizable: function _resizable() {
                return this.options.editable && this.options.editable.resize !== !1;
            }, _handleOptions: function _handleOptions() {
                return (this.options.editable.resize || {}).handles || this.options.handles;
            }, _createHandles: function _createHandles() {
                var t, e, i, n;if (this._resizable()) for (t = this._handleOptions(), n = -1; n <= 1; n++) {
                    for (i = -1; i <= 1; i++) {
                        0 === n && 0 === i || (e = new K(t), e.drawingElement._hover = it(this._hover, this), this.map.push({ x: n, y: i, visual: e }), this.visual.append(e));
                    }
                }
            }, bounds: function bounds(t) {
                return t ? (this._innerBounds = t.clone(), this._bounds = this.diagram.modelToLayer(t).inflate(this.options.offset, this.options.offset), e) : this._bounds;
            }, _hitTest: function _hitTest(t) {
                var e,
                    i,
                    n,
                    o,
                    s = this.diagram.modelToLayer(t),
                    r = this.map.length;if (this._angle && (s = s.clone().rotate(this._bounds.center(), this._angle)), this._resizable()) for (e = 0; e < r; e++) {
                    if (o = this.map[e], i = new j(o.x, o.y), n = this._getHandleBounds(i), n.offset(this._bounds.x, this._bounds.y), n.contains(s)) return i;
                }if (this._bounds.contains(s)) return new j(0, 0);
            }, _getHandleBounds: function _getHandleBounds(t) {
                if (this._resizable()) {
                    var e = this._handleOptions(),
                        i = e.width,
                        n = e.height,
                        o = new q(0, 0, i, n);return t.x < 0 ? o.x = -i / 2 : 0 === t.x ? o.x = Math.floor(this._bounds.width / 2) - i / 2 : t.x > 0 && (o.x = this._bounds.width + 1 - i / 2), t.y < 0 ? o.y = -n / 2 : 0 === t.y ? o.y = Math.floor(this._bounds.height / 2) - n / 2 : t.y > 0 && (o.y = this._bounds.height + 1 - n / 2), o;
                }
            }, _getCursor: function _getCursor(t) {
                var e,
                    i = this._hitTest(t);if (i && i.x >= -1 && i.x <= 1 && i.y >= -1 && i.y <= 1 && this._resizable()) {
                    if (e = this._angle, e && (e = 360 - e, i.rotate(new j(0, 0), e), i = new j(Math.round(i.x), Math.round(i.y))), i.x == -1 && i.y == -1) return "nw-resize";if (1 == i.x && 1 == i.y) return "se-resize";if (i.x == -1 && 1 == i.y) return "sw-resize";if (1 == i.x && i.y == -1) return "ne-resize";if (0 === i.x && i.y == -1) return "n-resize";if (0 === i.x && 1 == i.y) return "s-resize";if (1 == i.x && 0 === i.y) return "e-resize";if (i.x == -1 && 0 === i.y) return "w-resize";
                }return this._manipulating ? nt.move : nt.select;
            }, _initialize: function _initialize() {
                var t,
                    e,
                    i = this,
                    n = i.diagram.select();for (i.shapes = [], t = 0; t < n.length; t++) {
                    e = n[t], e instanceof H.Shape && (i.shapes.push(e), e._rotationOffset = new j());
                }i._angle = 1 == i.shapes.length ? i.shapes[0].rotate().angle : 0, i._startAngle = i._angle, i._rotates(), i._positions(), i.refreshBounds(), i.refresh(), i.redraw();
            }, _rotates: function _rotates() {
                var t,
                    e,
                    i = this;for (i.initialRotates = [], t = 0; t < i.shapes.length; t++) {
                    e = i.shapes[t], i.initialRotates.push(e.rotate().angle);
                }
            }, _positions: function _positions() {
                var t,
                    e,
                    i = this;for (i.initialStates = [], t = 0; t < i.shapes.length; t++) {
                    e = i.shapes[t], i.initialStates.push(e.bounds());
                }
            }, _hover: function _hover(t, e) {
                if (this._resizable()) {
                    var i = this._handleOptions(),
                        n = i.hover,
                        o = i.stroke,
                        s = i.fill;t && W.isDefined(n.stroke) && (o = J({}, o, n.stroke)), t && W.isDefined(n.fill) && (s = n.fill), e.stroke(o.color, o.width, o.opacity), e.fill(s.color, s.opacity);
                }
            }, start: function start(t) {
                var e, i;for (this._sp = t, this._cp = t, this._lp = t, this._manipulating = !0, this._internalChange = !0, this.shapeStates = [], e = 0; e < this.shapes.length; e++) {
                    i = this.shapes[e], this.shapeStates.push(i.bounds());
                }
            }, redraw: function redraw() {
                var t,
                    e,
                    i = this._resizable();for (t = 0; t < this.map.length; t++) {
                    e = this.map[t], e.visual.visible(i);
                }
            }, angle: function angle(t) {
                return tt(t) && (this._angle = t), this._angle;
            }, rotate: function rotate() {
                var t,
                    e,
                    i = this._innerBounds.center(),
                    n = this.angle();for (this._internalChange = !0, t = 0; t < this.shapes.length; t++) {
                    e = this.shapes[t], n = (n + this.initialRotates[t] - this._startAngle) % 360, e.rotate(n, i);
                }this.refresh();
            }, move: function move(t, i) {
                var s,
                    r,
                    a,
                    h,
                    c,
                    d,
                    l,
                    u,
                    f,
                    p,
                    g,
                    m,
                    _,
                    v,
                    y = new j(),
                    w = new j(),
                    x = 0;if (t.y === -2 && t.x === -1) {
                    for (h = this._innerBounds.center(), this._angle = this._truncateAngle(W.findAngle(h, i)), d = 0; d < this.shapes.length; d++) {
                        c = this.shapes[d], l = (this._angle + this.initialRotates[d] - this._startAngle) % 360, c.rotate(l, h), c.hasOwnProperty("layout") && c.layout(c), this._rotating = !0;
                    }this.refresh();
                } else {
                    if (this.shouldSnap()) {
                        if (m = this._truncateDistance(i.minus(this._lp)), 0 === m.x && 0 === m.y) return this._cp = i, e;s = m, this._lp = new j(this._lp.x + m.x, this._lp.y + m.y);
                    } else s = i.minus(this._cp);for (this.isDragHandle(t) ? (w = y = s, r = !0) : (this._angle && s.rotate(new j(0, 0), this._angle), t.x == -1 ? y.x = s.x : 1 == t.x && (w.x = s.x), t.y == -1 ? y.y = s.y : 1 == t.y && (w.y = s.y)), r || (f = n(t, this._innerBounds), p = (this._innerBounds.width + s.x * t.x) / this._innerBounds.width, g = (this._innerBounds.height + s.y * t.y) / this._innerBounds.height), d = 0; d < this.shapes.length; d++) {
                        if (c = this.shapes[d], a = c.bounds(), r) {
                            if (!o(c)) continue;u = this._displaceBounds(a, y, w, r);
                        } else u = a.clone(), u.scale(p, g, f, this._innerBounds.center(), c.rotate().angle), _ = u.center(), _.rotate(a.center(), -this._angle), u = new q(_.x - u.width / 2, _.y - u.height / 2, u.width, u.height);u.width >= c.options.minWidth && u.height >= c.options.minHeight && (v = a, c.bounds(u), c.hasOwnProperty("layout") && c.layout(c, v, u), v.width === u.width && v.height === u.height || c.rotate(c.rotate().angle), x += 1);
                    }x && (x == d ? (u = this._displaceBounds(this._innerBounds, y, w, r), this.bounds(u)) : this.refreshBounds(), this.refresh()), this._positions();
                }this._cp = i;
            }, isDragHandle: function isDragHandle(t) {
                return 0 === t.x && 0 === t.y;
            }, cancel: function cancel() {
                var t,
                    i = this.shapes,
                    n = this.shapeStates;for (t = 0; t < i.length; t++) {
                    i[t].bounds(n[t]);
                }this.refreshBounds(), this.refresh(), this._manipulating = e, this._internalChange = e, this._rotating = e;
            }, _truncatePositionToGuides: function _truncatePositionToGuides(t) {
                return this.diagram.ruler ? this.diagram.ruler.truncatePositionToGuides(t) : t;
            }, _truncateSizeToGuides: function _truncateSizeToGuides(t) {
                return this.diagram.ruler ? this.diagram.ruler.truncateSizeToGuides(t) : t;
            }, _truncateAngle: function _truncateAngle(t) {
                var e = this.snapOptions(),
                    i = Math.max(e.angle || lt, vt);return e ? Math.floor(t % 360 / i) * i : t % 360;
            }, _truncateDistance: function _truncateDistance(t) {
                var e, i;return t instanceof H.Point ? new H.Point(this._truncateDistance(t.x), this._truncateDistance(t.y)) : (e = this.snapOptions() || {}, i = Math.max(e.size || dt, _t), e ? Math.floor(t / i) * i : t);
            }, snapOptions: function snapOptions() {
                var t = this.diagram.options.editable,
                    e = ((t || {}).drag || {}).snap || {};return e;
            }, shouldSnap: function shouldSnap() {
                var t = this.diagram.options.editable,
                    e = (t || {}).drag,
                    i = (e || {}).snap;return t !== !1 && e !== !1 && i !== !1;
            }, _displaceBounds: function _displaceBounds(t, e, i, n) {
                var o,
                    s = t.topLeft().plus(e),
                    r = t.bottomRight().plus(i),
                    a = q.fromPoints(s, r);return n || (o = a.center(), o.rotate(t.center(), -this._angle), a = new q(o.x - a.width / 2, o.y - a.height / 2, a.width, a.height)), a;
            }, stop: function stop() {
                var t, i, n, o;if (this._cp != this._sp) if (this._rotating) t = new v(this, this.shapes, this.initialRotates), this._rotating = !1;else if (this._diffStates()) {
                    if (this.diagram.ruler) for (i = 0; i < this.shapes.length; i++) {
                        n = this.shapes[i], o = n.bounds(), o = this._truncateSizeToGuides(this._truncatePositionToGuides(o)), n.bounds(o), this.refreshBounds(), this.refresh();
                    }for (i = 0; i < this.shapes.length; i++) {
                        n = this.shapes[i], n.updateModel();
                    }t = new p(this.shapes, this.shapeStates, this), this.diagram._syncShapeChanges();
                }return this._manipulating = e, this._internalChange = e, this._rotating = e, t;
            }, _diffStates: function _diffStates() {
                var t,
                    e = this.shapes,
                    i = this.shapeStates;for (t = 0; t < e.length; t++) {
                    if (!e[t].bounds().equals(i[t])) return !0;
                }return !1;
            }, refreshBounds: function refreshBounds() {
                var t = 1 == this.shapes.length ? this.shapes[0].bounds().clone() : this.diagram.boundingBox(this.shapes, !0);this.bounds(t);
            }, refresh: function refresh() {
                var e,
                    i,
                    n,
                    o,
                    s = this;this.shapes.length > 0 ? (i = this.bounds(), this.visual.visible(!0), this.visual.position(i.topLeft()), t.each(this.map, function () {
                    e = s._getHandleBounds(new j(this.x, this.y)), this.visual.position(e.topLeft());
                }), this.visual.position(i.topLeft()), n = new j(i.width / 2, i.height / 2), this.visual.rotate(this._angle, n), this.rect.redraw({ width: i.width, height: i.height }), this.rotationThumb && (o = this.options.editable.rotate.thumb, this._rotationThumbBounds = new q(i.center().x, i.y + o.y, 0, 0).inflate(o.width), this.rotationThumb.redraw({ x: i.width / 2 - o.width / 2 }))) : this.visual.visible(!1);
            } }), A = F.extend({ init: function init(t) {
                var e = t.options.selectable;this.options = J({}, this.options, e), this.visual = new K(this.options), this.diagram = t;
            }, options: { stroke: { color: "#778899", width: 1, dashType: "dash" }, fill: { color: Dt } }, start: function start(t) {
                this._sp = this._ep = t, this.refresh(), this.diagram._adorn(this, !0);
            }, end: function end() {
                this._sp = this._ep = e, this.diagram._adorn(this, !1);
            }, bounds: function bounds(t) {
                return t && (this._bounds = t), this._bounds;
            }, move: function move(t) {
                this._ep = t, this.refresh();
            }, refresh: function refresh() {
                if (this._sp) {
                    var t = q.fromPoints(this.diagram.modelToLayer(this._sp), this.diagram.modelToLayer(this._ep));this.bounds(q.fromPoints(this._sp, this._ep)), this.visual.position(t.topLeft()), this.visual.redraw({ height: t.height + 1, width: t.width + 1 });
                }
            } }), O = F.extend({ init: function init(t) {
                this.options = J({}, t.options), this._c = t, this.visual = new Y(this.options), this.refresh();
            }, _hover: function _hover(t) {
                var e = this.options,
                    i = e.hover,
                    n = e.stroke,
                    o = e.fill;t && W.isDefined(i.stroke) && (n = J({}, n, i.stroke)), t && W.isDefined(i.fill) && (o = i.fill), this.visual.redraw({ stroke: n, fill: o });
            }, refresh: function refresh() {
                var t = this._c.shape.diagram.modelToView(this._c.position()),
                    e = t.minus(this._c.shape.bounds("transformed").topLeft()),
                    i = new q(t.x, t.y, 0, 0);i.inflate(this.options.width / 2, this.options.height / 2), this._visualBounds = i, this.visual.redraw({ center: new j(e.x, e.y) });
            }, _hitTest: function _hitTest(t) {
                var e = this._c.shape.diagram.modelToView(t);return this._visualBounds.contains(e);
            } }), J(H, { CompositeUnit: c, TransformUnit: p, PanUndoUnit: _, AddShapeUnit: m, AddConnectionUnit: g, DeleteShapeUnit: f, DeleteConnectionUnit: u, ConnectionEditAdorner: B, ConnectionTool: T, ConnectorVisual: O, UndoRedoService: x, ResizingAdorner: R, Selector: A, ToolService: D, ConnectorsAdorner: N, LayoutUndoUnit: h, ConnectionEditUnit: d, ToFrontUnit: y, ToBackUnit: w, ConnectionRouterBase: I, PolylineRouter: L, CascadingRouter: E, SelectionTool: k, ScrollerTool: C, PointerTool: S, ConnectionEditTool: M, RotateUnit: v });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/diagram/layout.min", ["dataviz/diagram/math.min"], t);
}(function () {
    !function (t, e) {
        var i = window.kendo,
            n = i.dataviz.diagram,
            o = n.Graph,
            s = n.Node,
            r = n.Link,
            a = i.deepExtend,
            h = n.Size,
            c = n.Rect,
            d = n.Dictionary,
            l = n.Set,
            u = n.Graph,
            f = n.Utils,
            p = n.Point,
            g = 1e-6,
            m = Math.PI / 180,
            _ = f.contains,
            v = t.grep,
            y = i.Class.extend({ defaultOptions: { type: "Tree", subtype: "Down", roots: null, animate: !1, limitToView: !1, friction: .9, nodeDistance: 50, iterations: 300, horizontalSeparation: 90, verticalSeparation: 50, underneathVerticalTopOffset: 15, underneathHorizontalOffset: 15, underneathVerticalSeparation: 15, grid: { width: 1500, offsetX: 50, offsetY: 50, componentSpacingX: 20, componentSpacingY: 20 }, layerSeparation: 50, layeredIterations: 2, startRadialAngle: 0, endRadialAngle: 360, radialSeparation: 150, radialFirstLevelSeparation: 200, keepComponentsInOneRadialLayout: !1, ignoreContainers: !0, layoutContainerChildren: !1, ignoreInvisible: !0, animateTransitions: !1 }, init: function init() {}, gridLayoutComponents: function gridLayoutComponents(t) {
                var e, i, n, o, s, r, a, h, c, d, l, u, g, m, _;if (!t) throw "No components supplied.";for (f.forEach(t, function (t) {
                    t.calcBounds();
                }), t.sort(function (t, e) {
                    return e.bounds.width - t.bounds.width;
                }), e = this.options.grid.width, i = this.options.grid.componentSpacingX, n = this.options.grid.componentSpacingY, o = 0, s = this.options.grid.offsetX, r = this.options.grid.offsetY, a = s, h = r, d = [], l = []; t.length > 0;) {
                    for (a >= e && (a = s, h += o + n, o = 0), u = t.pop(), this.moveToOffset(u, new p(a, h)), c = 0; c < u.nodes.length; c++) {
                        l.push(u.nodes[c]);
                    }for (c = 0; c < u.links.length; c++) {
                        d.push(u.links[c]);
                    }g = u.bounds, m = g.height, (m <= 0 || isNaN(m)) && (m = 0), _ = g.width, (_ <= 0 || isNaN(_)) && (_ = 0), m >= o && (o = m), a += _ + i;
                }return { nodes: l, links: d };
            }, moveToOffset: function moveToOffset(t, e) {
                var i,
                    n,
                    o,
                    s,
                    r,
                    a,
                    h,
                    d,
                    l = t.bounds,
                    u = e.x - l.x,
                    f = e.y - l.y;for (i = 0; i < t.nodes.length; i++) {
                    o = t.nodes[i], s = o.bounds(), 0 === s.width && 0 === s.height && 0 === s.x && 0 === s.y && (s = new c(0, 0, 0, 0)), s.x += u, s.y += f, o.bounds(s);
                }for (i = 0; i < t.links.length; i++) {
                    if (r = t.links[i], r.points) {
                        for (a = [], h = r.points, n = 0; n < h.length; n++) {
                            d = h[n], d.x += u, d.y += f, a.push(d);
                        }r.points = a;
                    }
                }return this.currentHorizontalOffset += l.width + this.options.grid.offsetX, new p(u, f);
            }, transferOptions: function transferOptions(t) {
                this.options = i.deepExtend({}, this.defaultOptions), f.isUndefined(t) || (this.options = i.deepExtend(this.options, t || {}));
            } }),
            w = i.Class.extend({ init: function init(t) {
                this.nodeMap = new d(), this.shapeMap = new d(), this.nodes = [], this.edges = [], this.edgeMap = new d(), this.finalNodes = [], this.finalLinks = [], this.ignoredConnections = [], this.ignoredShapes = [], this.hyperMap = new d(), this.hyperTree = new o(), this.finalGraph = null, this.diagram = t;
            }, convert: function convert(t) {
                if (f.isUndefined(this.diagram)) throw "No diagram to convert.";return this.options = i.deepExtend({ ignoreInvisible: !0, ignoreContainers: !0, layoutContainerChildren: !1 }, t || {}), this.clear(), this._renormalizeShapes(), this._renormalizeConnections(), this.finalNodes = new d(this.nodes), this.finalLinks = new d(this.edges), this.finalGraph = new o(), this.finalNodes.forEach(function (t) {
                    this.finalGraph.addNode(t);
                }, this), this.finalLinks.forEach(function (t) {
                    this.finalGraph.addExistingLink(t);
                }, this), this.finalGraph;
            }, mapConnection: function mapConnection(t) {
                return this.edgeMap.get(t.id);
            }, mapShape: function mapShape(t) {
                return this.nodeMap.get(t.id);
            }, getEdge: function getEdge(t, e) {
                return f.first(t.links, function (i) {
                    return i.getComplement(t) === e;
                });
            }, clear: function clear() {
                this.finalGraph = null, this.hyperTree = !this.options.ignoreContainers && this.options.layoutContainerChildren ? new u() : null, this.hyperMap = !this.options.ignoreContainers && this.options.layoutContainerChildren ? new d() : null, this.nodeMap = new d(), this.shapeMap = new d(), this.nodes = [], this.edges = [], this.edgeMap = new d(), this.ignoredConnections = [], this.ignoredShapes = [], this.finalNodes = [], this.finalLinks = [];
            }, listToRoot: function listToRoot(t) {
                var e = [],
                    i = t.container;if (!i) return e;for (e.push(i); i.parentContainer;) {
                    i = i.parentContainer, e.push(i);
                }return e.reverse(), e;
            }, firstNonIgnorableContainer: function firstNonIgnorableContainer(t) {
                return t.isContainer && !this._isIgnorableItem(t) ? t : t.parentContainer ? this.firstNonIgnorableContainer(t.parentContainer) : null;
            }, isContainerConnection: function isContainerConnection(t, e) {
                return !(!t.isContainer || !this.isDescendantOf(t, e)) || e.isContainer && this.isDescendantOf(e, t);
            }, isDescendantOf: function isDescendantOf(t, e) {
                var i, n, o, s;if (!t.isContainer) throw "Expecting a container.";if (t === e) return !1;if (_(t.children, e)) return !0;for (i = [], n = 0, o = t.children.length; n < o; n++) {
                    s = t.children[n], s.isContainer && this.isDescendantOf(s, e) && i.push(s);
                }return i.length > 0;
            }, isIgnorableItem: function isIgnorableItem(t) {
                return this.options.ignoreInvisible ? (!t.isCollapsed || !this._isVisible(t)) && !(!t.isCollapsed && this._isVisible(t)) : t.isCollapsed && !this._isTop(t);
            }, isShapeMapped: function isShapeMapped(t) {
                return t.isCollapsed && !this._isVisible(t) && !this._isTop(t);
            }, leastCommonAncestor: function leastCommonAncestor(t, e) {
                var i, n, o, s, r, a;if (!t) throw "Parameter should not be null.";if (!e) throw "Parameter should not be null.";if (!this.hyperTree) throw "No hypertree available.";if (i = this.listToRoot(t), n = this.listToRoot(e), o = null, f.isEmpty(i) || f.isEmpty(n)) return this.hyperTree.root.data;for (s = i[0], r = n[0], a = 0; s === r && (o = i[a], a++, !(a >= i.length || a >= n.length));) {
                    s = i[a], r = n[a];
                }return o ? v(this.hyperTree.nodes, function (t) {
                    return t.data.container === o;
                }) : this.hyperTree.root.data;
            }, _isTop: function _isTop(t) {
                return !t.parentContainer;
            }, _isVisible: function _isVisible(t) {
                return !!t.visible() && (t.parentContainer ? this._isVisible(t.parentContainer) : t.visible());
            }, _isCollapsed: function _isCollapsed(t) {
                return !(!t.isContainer || !t.isCollapsed) || t.parentContainer && this._isCollapsed(t.parentContainer);
            }, _renormalizeShapes: function _renormalizeShapes() {
                var t, e, i, n;if (!this.options.ignoreContainers) throw "Containers are not supported yet, but stay tuned.";for (t = 0, e = this.diagram.shapes.length; t < e; t++) {
                    i = this.diagram.shapes[t], this.options.ignoreInvisible && !this._isVisible(i) || i.isContainer ? this.ignoredShapes.push(i) : (n = new s(i.id, i), n.isVirtual = !1, this.nodeMap.add(i.id, n), this.nodes.push(n));
                }
            }, _renormalizeConnections: function _renormalizeConnections() {
                var t, e, i, n, o, s, a, h;if (0 !== this.diagram.connections.length) for (t = 0, e = this.diagram.connections.length; t < e; t++) {
                    if (i = this.diagram.connections[t], this.isIgnorableItem(i)) this.ignoredConnections.push(i);else if (n = i.sourceConnector ? i.sourceConnector.shape : null, o = i.targetConnector ? i.targetConnector.shape : null, n && o) {
                        if (!_(this.ignoredShapes, n) || this.shapeMap.containsKey(n)) {
                            if (!_(this.ignoredShapes, o) || this.shapeMap.containsKey(o)) {
                                if (this.shapeMap.containsKey(n) && (n = this.shapeMap[n]), this.shapeMap.containsKey(o) && (o = this.shapeMap[o]), s = this.mapShape(n), a = this.mapShape(o), s === a || this.areConnectedAlready(s, a)) this.ignoredConnections.push(i);else {
                                    if (null === s || null === a) throw "A shape was not mapped to a node.";if (!this.options.ignoreContainers) throw "Containers are not supported yet, but stay tuned.";s.isVirtual || a.isVirtual ? this.ignoredConnections.push(i) : (h = new r(s, a, i.id, i), this.edgeMap.add(i.id, h), this.edges.push(h));
                                }
                            } else this.ignoredConnections.push(i);
                        } else this.ignoredConnections.push(i);
                    } else this.ignoredConnections.push(i);
                }
            }, areConnectedAlready: function areConnectedAlready(t, e) {
                return f.any(this.edges, function (i) {
                    return i.source === t && i.target === e || i.source === e && i.target === t;
                });
            } }),
            x = y.extend({ init: function init(t) {
                var e = this;if (y.fn.init.call(e), f.isUndefined(t)) throw "Diagram is not specified.";this.diagram = t;
            }, layout: function layout(t) {
                var e, i, o, s, r, a;if (this.transferOptions(t), e = new w(this.diagram), i = e.convert(t), !i.isEmpty() && (o = i.getConnectedComponents(), !f.isEmpty(o))) {
                    for (s = 0; s < o.length; s++) {
                        r = o[s], this.layoutGraph(r, t);
                    }return a = this.gridLayoutComponents(o), new n.LayoutState(this.diagram, a);
                }
            }, layoutGraph: function layoutGraph(t, e) {
                var i, n, o;for (f.isDefined(e) && this.transferOptions(e), this.graph = t, i = 9 * this.options.nodeDistance, this.temperature = i, n = this._expectedBounds(), this.width = n.width, this.height = n.height, o = 0; o < this.options.iterations; o++) {
                    this.refineStage = o >= 5 * this.options.iterations / 6, this.tick(), this.temperature = this.refineStage ? i / 30 : i * (1 - o / (2 * this.options.iterations));
                }
            }, tick: function tick() {
                var t, e, i;for (t = 0; t < this.graph.nodes.length; t++) {
                    this._repulsion(this.graph.nodes[t]);
                }for (t = 0; t < this.graph.links.length; t++) {
                    this._attraction(this.graph.links[t]);
                }for (t = 0; t < this.graph.nodes.length; t++) {
                    if (e = this.graph.nodes[t], i = Math.sqrt(e.dx * e.dx + e.dy * e.dy), 0 === i) return;e.x += Math.min(i, this.temperature) * e.dx / i, e.y += Math.min(i, this.temperature) * e.dy / i, this.options.limitToView && (e.x = Math.min(this.width, Math.max(e.width / 2, e.x)), e.y = Math.min(this.height, Math.max(e.height / 2, e.y)));
                }
            }, _shake: function _shake(t) {
                var e = Math.random() * this.options.nodeDistance / 4,
                    i = 2 * Math.random() * Math.PI;t.x += e * Math.cos(i), t.y -= e * Math.sin(i);
            }, _InverseSquareForce: function _InverseSquareForce(t, e, i) {
                var n, o, s, r, a, h, c;return this.refineStage ? (o = e.x - i.x, s = e.y - i.y, r = e.width / 2, a = e.height / 2, h = i.width / 2, c = i.height / 2, n = Math.pow(o, 2) / Math.pow(r + h + this.options.nodeDistance, 2) + Math.pow(s, 2) / Math.pow(a + c + this.options.nodeDistance, 2)) : n = Math.pow(t, 2) / Math.pow(this.options.nodeDistance, 2), 4 * n / 3;
            }, _SquareForce: function _SquareForce(t, e, i) {
                return 1 / this._InverseSquareForce(t, e, i);
            }, _repulsion: function _repulsion(t) {
                t.dx = 0, t.dy = 0, f.forEach(this.graph.nodes, function (e) {
                    var i, n, o, s;if (e !== t) {
                        for (; t.x === e.x && t.y === e.y;) {
                            this._shake(e);
                        }i = t.x - e.x, n = t.y - e.y, o = Math.sqrt(i * i + n * n), s = 2 * this._SquareForce(o, t, e), t.dx += i / o * s, t.dy += n / o * s;
                    }
                }, this);
            }, _attraction: function _attraction(t) {
                var e,
                    i,
                    n,
                    o,
                    s,
                    r,
                    a = t.target,
                    h = t.source;if (h !== a) {
                    for (; h.x === a.x && h.y === a.y;) {
                        this._shake(a);
                    }e = h.x - a.x, i = h.y - a.y, n = Math.sqrt(e * e + i * i), o = 5 * this._InverseSquareForce(n, h, a), s = e / n * o, r = i / n * o, a.dx += s, a.dy += r, h.dx -= s, h.dy -= r;
                }
            }, _expectedBounds: function _expectedBounds() {
                var t,
                    e,
                    i,
                    n,
                    o,
                    s = this.graph.nodes.length,
                    r = 1.5,
                    a = 4;return 0 === s ? t : (t = f.fold(this.graph.nodes, function (t, e) {
                    var i = e.width * e.height;return i > 0 ? t += Math.sqrt(i) : 0;
                }, 0, this), e = t / s, i = e * Math.ceil(Math.sqrt(s)), n = i * Math.sqrt(r), o = i / Math.sqrt(r), { width: n * a, height: o * a });
            } }),
            b = i.Class.extend({ init: function init(t) {
                this.center = null, this.options = t;
            }, layout: function layout(t, e) {
                if (this.graph = t, this.graph.nodes && 0 !== this.graph.nodes.length) {
                    if (!_(this.graph.nodes, e)) throw "The given root is not in the graph.";this.center = e, this.graph.cacheRelationships(), this.layoutSwitch();
                }
            }, layoutLeft: function layoutLeft(t) {
                var e, i, n, o, s, r, a, c;for (this.setChildrenDirection(this.center, "Left", !1), this.setChildrenLayout(this.center, "Default", !1), e = 0, i = 0, o = 0; o < t.length; o++) {
                    s = t[o], s.TreeDirection = "Left", r = this.measure(s, h.Empty), i = Math.max(i, r.Width), e += r.height + this.options.verticalSeparation;
                }for (e -= this.options.verticalSeparation, a = this.center.x - this.options.horizontalSeparation, n = this.center.y + (this.center.height - e) / 2, o = 0; o < t.length; o++) {
                    s = t[o], c = new p(a - s.Size.width, n), this.arrange(s, c), n += s.Size.height + this.options.verticalSeparation;
                }
            }, layoutRight: function layoutRight(t) {
                var e, i, n, o, s, r, a, c;for (this.setChildrenDirection(this.center, "Right", !1), this.setChildrenLayout(this.center, "Default", !1), e = 0, i = 0, o = 0; o < t.length; o++) {
                    s = t[o], s.TreeDirection = "Right", r = this.measure(s, h.Empty), i = Math.max(i, r.Width), e += r.height + this.options.verticalSeparation;
                }for (e -= this.options.verticalSeparation, a = this.center.x + this.options.horizontalSeparation + this.center.width, n = this.center.y + (this.center.height - e) / 2, o = 0; o < t.length; o++) {
                    s = t[o], c = new p(a, n), this.arrange(s, c), n += s.Size.height + this.options.verticalSeparation;
                }
            }, layoutUp: function layoutUp(t) {
                var e, i, n, o, s, r, a;for (this.setChildrenDirection(this.center, "Up", !1), this.setChildrenLayout(this.center, "Default", !1), e = 0, o = 0; o < t.length; o++) {
                    n = t[o], n.TreeDirection = "Up", s = this.measure(n, h.Empty), e += s.width + this.options.horizontalSeparation;
                }for (e -= this.options.horizontalSeparation, r = this.center.x + this.center.width / 2 - e / 2, o = 0; o < t.length; o++) {
                    n = t[o], i = this.center.y - this.options.verticalSeparation - n.Size.height, a = new p(r, i), this.arrange(n, a), r += n.Size.width + this.options.horizontalSeparation;
                }
            }, layoutDown: function layoutDown(t) {
                var e, i, n, o, s, r, a;for (this.setChildrenDirection(this.center, "Down", !1), this.setChildrenLayout(this.center, "Default", !1), n = 0, i = 0; i < t.length; i++) {
                    e = t[i], e.treeDirection = "Down", s = this.measure(e, h.Empty), n += s.width + this.options.horizontalSeparation;
                }for (n -= this.options.horizontalSeparation, r = this.center.x + this.center.width / 2 - n / 2, o = this.center.y + this.options.verticalSeparation + this.center.height, i = 0; i < t.length; i++) {
                    e = t[i], a = new p(r, o), this.arrange(e, a), r += e.Size.width + this.options.horizontalSeparation;
                }
            }, layoutRadialTree: function layoutRadialTree() {
                var t, e;if (this.setChildrenDirection(this.center, "Radial", !1), this.setChildrenLayout(this.center, "Default", !1), this.previousRoot = null, t = this.options.startRadialAngle * m, e = this.options.endRadialAngle * m, e <= t) throw "Final angle should not be less than the start angle.";this.maxDepth = 0, this.origin = new p(this.center.x, this.center.y), this.calculateAngularWidth(this.center, 0), this.maxDepth > 0 && this.radialLayout(this.center, this.options.radialFirstLevelSeparation, t, e), this.center.Angle = e - t;
            }, tipOverTree: function tipOverTree(t, e) {
                var i, n, o, s, r, a, c;for (f.isUndefined(e) && (e = 0), this.setChildrenDirection(this.center, "Down", !1), this.setChildrenLayout(this.center, "Default", !1), this.setChildrenLayout(this.center, "Underneath", !1, e), i = 0, s = 0; s < t.length; s++) {
                    o = t[s], o.TreeDirection = "Down", r = this.measure(o, h.Empty), i += r.width + this.options.horizontalSeparation;
                }for (i -= this.options.horizontalSeparation, i -= t[t.length - 1].width, i += t[t.length - 1].associatedShape.bounds().width, a = this.center.x + this.center.width / 2 - i / 2, n = this.center.y + this.options.verticalSeparation + this.center.height, s = 0; s < t.length; s++) {
                    o = t[s], c = new p(a, n), this.arrange(o, c), a += o.Size.width + this.options.horizontalSeparation;
                }
            }, calculateAngularWidth: function calculateAngularWidth(t, e) {
                var i, n, o, s, r, a, h;if (e > this.maxDepth && (this.maxDepth = e), i = 0, n = 1e3, o = 1e3, s = 0 === e ? 0 : Math.sqrt(n * n + o * o) / e, t.children.length > 0) {
                    for (r = 0, a = t.children.length; r < a; r++) {
                        h = t.children[r], i += this.calculateAngularWidth(h, e + 1);
                    }i = Math.max(s, i);
                } else i = s;return t.sectorAngle = i, i;
            }, sortChildren: function sortChildren(t) {
                var e,
                    i,
                    n,
                    o,
                    s,
                    r,
                    a,
                    h,
                    c,
                    d,
                    l,
                    u = 0;if (t.parents.length > 1) throw "Node is not part of a tree.";if (i = t.parents[0], i && (n = new p(i.x, i.y), o = new p(t.x, t.y), u = this.normalizeAngle(Math.atan2(n.y - o.y, n.x - o.x))), s = t.children.length, 0 === s) return null;for (r = [], a = [], e = 0; e < s; ++e) {
                    h = t.children[e], c = new p(h.x, h.y), a[e] = e, r[e] = this.normalizeAngle(-u + Math.atan2(c.y - c.y, c.x - c.x));
                }for (f.bisort(r, a), d = [], l = t.children, e = 0; e < s; ++e) {
                    d.push(l[a[e]]);
                }return d;
            }, normalizeAngle: function normalizeAngle(t) {
                for (; t > 2 * Math.PI;) {
                    t -= 2 * Math.PI;
                }for (; t < 0;) {
                    t += 2 * Math.PI;
                }return t;
            }, radialLayout: function radialLayout(t, e, i, n) {
                var o,
                    s,
                    r,
                    a,
                    h,
                    c = n - i,
                    d = c / 2,
                    l = t.sectorAngle,
                    u = 0,
                    f = this.sortChildren(t);for (o = 0, s = f.length; o < s; o++) {
                    r = f[o], a = r, h = a.sectorAngle / l, r.children.length > 0 && this.radialLayout(r, e + this.options.radialSeparation, i + u * c, i + (u + h) * c), this.setPolarLocation(r, e, i + u * c + h * d), a.angle = h * c, u += h;
                }
            }, setPolarLocation: function setPolarLocation(t, e, i) {
                t.x = this.origin.x + e * Math.cos(i), t.y = this.origin.y + e * Math.sin(i), t.BoundingRectangle = new c(t.x, t.y, t.width, t.height);
            }, setChildrenDirection: function setChildrenDirection(t, e, i) {
                var n = t.treeDirection;this.graph.depthFirstTraversal(t, function (t) {
                    t.treeDirection = e;
                }), i || (t.treeDirection = n);
            }, setChildrenLayout: function setChildrenLayout(t, e, i, n) {
                f.isUndefined(n) && (n = 0);var o = t.childrenLayout;n > 0 ? (this.graph.assignLevels(t), this.graph.depthFirstTraversal(t, function (t) {
                    t.level >= n + 1 && (t.childrenLayout = e);
                })) : (this.graph.depthFirstTraversal(t, function (t) {
                    t.childrenLayout = e;
                }), i || (t.childrenLayout = o));
            }, measure: function measure(t, e) {
                var i,
                    n,
                    o,
                    s,
                    r,
                    a,
                    c,
                    d = 0,
                    l = 0,
                    u = new h(0, 0);if (!t) throw "";if (n = t.associatedShape.bounds(), o = n.width, s = n.height, 1 !== t.parents.length) throw "Node not in a spanning tree.";if (r = t.parents[0], "Undefined" === t.treeDirection && (t.treeDirection = r.treeDirection), f.isEmpty(t.children)) u = new h(Math.abs(o) < g ? 50 : o, Math.abs(s) < g ? 25 : s);else if (1 === t.children.length) {
                    switch (t.treeDirection) {case "Radial":
                            i = this.measure(t.children[0], e), d = o + this.options.radialSeparation * Math.cos(t.AngleToParent) + i.width, l = s + Math.abs(this.options.radialSeparation * Math.sin(t.AngleToParent)) + i.height;break;case "Left":case "Right":
                            switch (t.childrenLayout) {case "TopAlignedWithParent":
                                    break;case "BottomAlignedWithParent":
                                    break;case "Underneath":
                                    i = this.measure(t.children[0], e), d = o + i.width + this.options.underneathHorizontalOffset, l = s + this.options.underneathVerticalTopOffset + i.height;break;case "Default":
                                    i = this.measure(t.children[0], e), d = o + this.options.horizontalSeparation + i.width, l = Math.max(s, i.height);break;default:
                                    throw "Unhandled TreeDirection in the Radial layout measuring.";}break;case "Up":case "Down":
                            switch (t.childrenLayout) {case "TopAlignedWithParent":case "BottomAlignedWithParent":
                                    break;case "Underneath":
                                    i = this.measure(t.children[0], e), d = Math.max(o, i.width + this.options.underneathHorizontalOffset), l = s + this.options.underneathVerticalTopOffset + i.height;break;case "Default":
                                    i = this.measure(t.children[0], e), l = s + this.options.verticalSeparation + i.height, d = Math.max(o, i.width);break;default:
                                    throw "Unhandled TreeDirection in the Down layout measuring.";}break;default:
                            throw "Unhandled TreeDirection in the layout measuring.";}u = new h(d, l);
                } else {
                    switch (t.treeDirection) {case "Left":case "Right":
                            switch (t.childrenLayout) {case "TopAlignedWithParent":case "BottomAlignedWithParent":
                                    break;case "Underneath":
                                    for (d = o, l = s + this.options.underneathVerticalTopOffset, a = 0; a < t.children.length; a++) {
                                        c = t.children[a], i = this.measure(c, e), d = Math.max(d, i.width + this.options.underneathHorizontalOffset), l += i.height + this.options.underneathVerticalSeparation;
                                    }l -= this.options.underneathVerticalSeparation;break;case "Default":
                                    for (d = o, l = 0, a = 0; a < t.children.length; a++) {
                                        c = t.children[a], i = this.measure(c, e), d = Math.max(d, o + this.options.horizontalSeparation + i.width), l += i.height + this.options.verticalSeparation;
                                    }l -= this.options.verticalSeparation;break;default:
                                    throw "Unhandled TreeDirection in the Right layout measuring.";}break;case "Up":case "Down":
                            switch (t.childrenLayout) {case "TopAlignedWithParent":case "BottomAlignedWithParent":
                                    break;case "Underneath":
                                    for (d = o, l = s + this.options.underneathVerticalTopOffset, a = 0; a < t.children.length; a++) {
                                        c = t.children[a], i = this.measure(c, e), d = Math.max(d, i.width + this.options.underneathHorizontalOffset), l += i.height + this.options.underneathVerticalSeparation;
                                    }l -= this.options.underneathVerticalSeparation;break;case "Default":
                                    for (d = 0, l = 0, a = 0; a < t.children.length; a++) {
                                        c = t.children[a], i = this.measure(c, e), d += i.width + this.options.horizontalSeparation, l = Math.max(l, i.height + this.options.verticalSeparation + s);
                                    }d -= this.options.horizontalSeparation;break;default:
                                    throw "Unhandled TreeDirection in the Down layout measuring.";}break;default:
                            throw "Unhandled TreeDirection in the layout measuring.";}u = new h(d, l);
                }return t.SectorAngle = Math.sqrt(d * d / 4 + l * l / 4), t.Size = u, u;
            }, arrange: function arrange(t, e) {
                var i,
                    n,
                    o,
                    s,
                    r,
                    a,
                    h,
                    d,
                    l = t.associatedShape.bounds(),
                    u = l.width,
                    m = l.height;if (f.isEmpty(t.children)) t.x = e.x, t.y = e.y, t.BoundingRectangle = new c(e.x, e.y, u, m);else switch (t.treeDirection) {case "Left":
                        switch (t.childrenLayout) {case "TopAlignedWithParent":case "BottomAlignedWithParent":
                                break;case "Underneath":
                                for (d = e, t.x = d.x, t.y = d.y, t.BoundingRectangle = new c(t.x, t.y, t.width, t.height), h = e.y + m + this.options.underneathVerticalTopOffset, i = 0; i < s.children.length; i++) {
                                    s = s.children[i], a = d.x - s.associatedShape.width - this.options.underneathHorizontalOffset, n = new p(a, h), this.arrange(s, n), h += s.Size.height + this.options.underneathVerticalSeparation;
                                }break;case "Default":
                                for (d = new p(e.x + t.Size.width - u, e.y + (t.Size.height - m) / 2), t.x = d.x, t.y = d.y, t.BoundingRectangle = new c(t.x, t.y, t.width, t.height), a = d.x - this.options.horizontalSeparation, h = e.y, i = 0; i < t.children.length; i++) {
                                    s = t.children[i], n = new p(a - s.Size.width, h), this.arrange(s, n), h += s.Size.height + this.options.verticalSeparation;
                                }break;default:
                                throw "Unsupported TreeDirection";}break;case "Right":
                        switch (t.childrenLayout) {case "TopAlignedWithParent":case "BottomAlignedWithParent":
                                break;case "Underneath":
                                for (d = e, t.x = d.x, t.y = d.y, t.BoundingRectangle = new c(t.x, t.y, t.width, t.height), a = e.x + u + this.options.underneathHorizontalOffset, h = e.y + m + this.options.underneathVerticalTopOffset, i = 0; i < t.children.length; i++) {
                                    s = t.children[i], n = new p(a, h), this.arrange(s, n), h += s.Size.height + this.options.underneathVerticalSeparation;
                                }break;case "Default":
                                for (d = new p(e.x, e.y + (t.Size.height - m) / 2), t.x = d.x, t.y = d.y, t.BoundingRectangle = new c(t.x, t.y, t.width, t.height), a = e.x + u + this.options.horizontalSeparation, h = e.y, i = 0; i < t.children.length; i++) {
                                    s = t.children[i], n = new p(a, h), this.arrange(s, n), h += s.Size.height + this.options.verticalSeparation;
                                }break;default:
                                throw "Unsupported TreeDirection";}break;case "Up":
                        if (d = new p(e.x + (t.Size.width - u) / 2, e.y + t.Size.height - m), t.x = d.x, t.y = d.y, t.BoundingRectangle = new c(t.x, t.y, t.width, t.height), Math.abs(d.x - e.x) < g) {
                            for (r = 0, i = 0; i < t.children.length; i++) {
                                o = t.children[i], r += o.Size.width + this.options.horizontalSeparation;
                            }r -= this.options.horizontalSeparation, a = e.x + (u - r) / 2;
                        } else a = e.x;for (i = 0; i < t.children.length; i++) {
                            s = t.children[i], h = d.y - this.options.verticalSeparation - s.Size.height, n = new p(a, h), this.arrange(s, n), a += s.Size.width + this.options.horizontalSeparation;
                        }break;case "Down":
                        switch (t.childrenLayout) {case "TopAlignedWithParent":case "BottomAlignedWithParent":
                                break;case "Underneath":
                                for (d = e, t.x = d.x, t.y = d.y, t.BoundingRectangle = new c(t.x, t.y, t.width, t.height), a = e.x + this.options.underneathHorizontalOffset, h = e.y + m + this.options.underneathVerticalTopOffset, i = 0; i < t.children.length; i++) {
                                    s = t.children[i], n = new p(a, h), this.arrange(s, n), h += s.Size.height + this.options.underneathVerticalSeparation;
                                }break;case "Default":
                                if (d = new p(e.x + (t.Size.width - u) / 2, e.y), t.x = d.x, t.y = d.y, t.BoundingRectangle = new c(t.x, t.y, t.width, t.height), Math.abs(d.x - e.x) < g) {
                                    for (r = 0, i = 0; i < t.children.length; i++) {
                                        o = t.children[i], r += o.Size.width + this.options.horizontalSeparation;
                                    }r -= this.options.horizontalSeparation, a = e.x + (u - r) / 2;
                                } else a = e.x;for (i = 0; i < t.children.length; i++) {
                                    s = t.children[i], h = d.y + this.options.verticalSeparation + m, n = new p(a, h), this.arrange(s, n), a += s.Size.width + this.options.horizontalSeparation;
                                }break;default:
                                throw "Unsupported TreeDirection";}break;case "None":
                        break;default:
                        throw "Unsupported TreeDirection";}
            }, layoutSwitch: function layoutSwitch() {
                var t, e, i, n, o, s;if (this.center && !f.isEmpty(this.center.children)) switch (t = this.options.subtype, f.isUndefined(t) && (t = "Down"), s = this.center.children, t.toLowerCase()) {case "radial":case "radialtree":
                        this.layoutRadialTree();break;case "mindmaphorizontal":case "mindmap":
                        e = this.center.children, 1 === this.center.children.length ? this.layoutRight(e) : (o = s.length / 2, i = v(this.center.children, function (t) {
                            return f.indexOf(s, t) < o;
                        }), n = v(this.center.children, function (t) {
                            return f.indexOf(s, t) >= o;
                        }), this.layoutLeft(i), this.layoutRight(n));break;case "mindmapvertical":
                        e = this.center.children, 1 === this.center.children.length ? this.layoutDown(e) : (o = s.length / 2, i = v(this.center.children, function (t) {
                            return f.indexOf(s, t) < o;
                        }), n = v(this.center.children, function (t) {
                            return f.indexOf(s, t) >= o;
                        }), this.layoutUp(i), this.layoutDown(n));break;case "right":
                        this.layoutRight(this.center.children);break;case "left":
                        this.layoutLeft(this.center.children);break;case "up":case "bottom":
                        this.layoutUp(this.center.children);break;case "down":case "top":
                        this.layoutDown(this.center.children);break;case "tipover":case "tipovertree":
                        if (this.options.tipOverTreeStartLevel < 0) throw "The tip-over level should be a positive integer.";this.tipOverTree(this.center.children, this.options.tipOverTreeStartLevel);break;case "undefined":case "none":}
            } }),
            C = y.extend({ init: function init(t) {
                var e = this;if (y.fn.init.call(e), f.isUndefined(t)) throw "No diagram specified.";this.diagram = t;
            }, layout: function layout(t) {
                var e, i;return this.transferOptions(t), e = new w(this.diagram), this.graph = e.convert(), i = this.layoutComponents(), new n.LayoutState(this.diagram, i);
            }, layoutComponents: function layoutComponents() {
                var t, e, i, n, o, s, r, a;if (!this.graph.isEmpty() && (t = this.graph.getConnectedComponents(), !f.isEmpty(t))) {
                    for (e = new b(this.options), i = [], n = 0; n < t.length; n++) {
                        if (o = t[n], s = this.getTree(o), !s) throw "Failed to find a spanning tree for the component.";r = s.root, a = s.tree, e.layout(a, r), i.push(a);
                    }return this.gridLayoutComponents(i);
                }
            }, getTree: function getTree(t) {
                var e,
                    i,
                    n,
                    o,
                    s,
                    r = null;if (this.options.roots && this.options.roots.length > 0) for (e = 0, i = t.nodes.length; e < i; e++) {
                    for (n = t.nodes[e], o = 0; o < this.options.roots.length; o++) {
                        if (s = this.options.roots[o], s === n.associatedShape) {
                            r = n;break;
                        }
                    }
                }if (!r && (r = t.root(), !r)) throw "Unable to find a root for the tree.";return this.getTreeForRoot(t, r);
            }, getTreeForRoot: function getTreeForRoot(t, e) {
                var i = t.getSpanningTree(e);return f.isUndefined(i) || i.isEmpty() ? null : { tree: i, root: i.root };
            } }),
            S = y.extend({ init: function init(t) {
                var e = this;if (y.fn.init.call(e), f.isUndefined(t)) throw "Diagram is not specified.";this.diagram = t;
            }, layout: function layout(t) {
                var e, i, o, s, r, a;if (this.transferOptions(t), e = new w(this.diagram), i = e.convert(t), !i.isEmpty() && (o = i.getConnectedComponents(), !f.isEmpty(o))) {
                    for (s = 0; s < o.length; s++) {
                        r = o[s], this.layoutGraph(r, t);
                    }return a = this.gridLayoutComponents(o), new n.LayoutState(this.diagram, a);
                }
            }, _initRuntimeProperties: function _initRuntimeProperties() {
                var t, e;for (t = 0; t < this.graph.nodes.length; t++) {
                    e = this.graph.nodes[t], e.layer = -1, e.downstreamLinkCount = 0, e.upstreamLinkCount = 0, e.isVirtual = !1, e.uBaryCenter = 0, e.dBaryCenter = 0, e.upstreamPriority = 0, e.downstreamPriority = 0, e.gridPosition = 0;
                }
            }, _prepare: function _prepare(t) {
                var e,
                    i,
                    n,
                    o,
                    s,
                    r,
                    a,
                    h,
                    c,
                    l,
                    u,
                    p = [],
                    g = new d(),
                    m = 0;for (f.forEach(t.nodes, function (t) {
                    0 === t.incoming.length && (g.set(t, 0), p.push(t));
                }); p.length > 0;) {
                    for (s = p.shift(), e = 0; e < s.outgoing.length; e++) {
                        n = s.outgoing[e], r = n.target, o = g.containsKey(r) ? Math.max(g.get(s) + 1, g.get(r)) : g.get(s) + 1, g.set(r, o), o > m && (m = o), _(p, r) || p.push(r);
                    }
                }for (a = g.keys(), a.sort(function (t, e) {
                    var i = g.get(t),
                        n = g.get(e);return f.sign(n - i);
                }), h = 0; h < a.length; ++h) {
                    if (c = a[h], l = Number.MAX_VALUE, 0 !== c.outgoing.length) {
                        for (i = 0; i < c.outgoing.length; ++i) {
                            n = c.outgoing[i], l = Math.min(l, g.get(n.target));
                        }l > 1 && g.set(c, l - 1);
                    }
                }for (this.layers = [], e = 0; e < m + 1; e++) {
                    u = [], u.linksTo = {}, this.layers.push(u);
                }for (g.forEach(function (t, e) {
                    t.layer = e, this.layers[e].push(t);
                }, this), i = 0; i < this.layers.length; i++) {
                    for (u = this.layers[i], e = 0; e < u.length; e++) {
                        u[e].gridPosition = e;
                    }
                }
            }, layoutGraph: function layoutGraph(t, e) {
                if (f.isUndefined(t)) throw "No graph given or graph analysis of the diagram failed.";f.isDefined(e) && this.transferOptions(e), this.graph = t, t.setItemIndices();var i = t.makeAcyclic();this._initRuntimeProperties(), this._prepare(t, e), this._dummify(), this._optimizeCrossings(), this._swapPairs(), this.arrangeNodes(), this._moveThingsAround(), this._dedummify(), f.forEach(i, function (t) {
                    t.points && t.points.reverse();
                });
            }, setMinDist: function setMinDist(t, e, i) {
                var n = t.layer,
                    o = t.layerIndex;this.minDistances[n][o] = i;
            }, getMinDist: function getMinDist(t, e) {
                var i,
                    n = 0,
                    o = t.layerIndex,
                    s = e.layerIndex,
                    r = t.layer,
                    a = Math.min(o, s),
                    h = Math.max(o, s);for (i = a; i < h; ++i) {
                    n += this.minDistances[r][i];
                }return n;
            }, placeLeftToRight: function placeLeftToRight(t) {
                var e,
                    i,
                    n,
                    o,
                    s,
                    r,
                    a,
                    h,
                    c,
                    l,
                    u = new d();for (n = 0; n < this.layers.length; ++n) {
                    if (o = t[n]) {
                        for (e = 0; e < o.length; e++) {
                            i = o[e], u.containsKey(i) || this.placeLeft(i, u, n);
                        }for (s = Number.POSITIVE_INFINITY, e = 0; e < o.length; e++) {
                            i = o[e], r = this.rightSibling(i), r && this.nodeLeftClass.get(r) !== n && (s = Math.min(s, u.get(r) - u.get(i) - this.getMinDist(i, r)));
                        }if (s === Number.POSITIVE_INFINITY) {
                            for (a = [], e = 0; e < o.length; e++) {
                                for (i = o[e], h = [], f.addRange(h, this.upNodes.get(i)), f.addRange(h, this.downNodes.get(i)), c = 0; c < h.length; c++) {
                                    l = h[c], this.nodeLeftClass.get(l) < n && a.push(u.get(l) - u.get(i));
                                }
                            }a.sort(), s = 0 === a.length ? 0 : a.length % 2 === 1 ? a[this.intDiv(a.length, 2)] : (a[this.intDiv(a.length, 2) - 1] + a[this.intDiv(a.length, 2)]) / 2;
                        }for (e = 0; e < o.length; e++) {
                            i = o[e], u.set(i, u.get(i) + s);
                        }
                    }
                }return u;
            }, placeRightToLeft: function placeRightToLeft(t) {
                var e,
                    i,
                    n,
                    o,
                    s,
                    r,
                    a,
                    h,
                    c,
                    l,
                    u = new d();for (n = 0; n < this.layers.length; ++n) {
                    if (o = t[n]) {
                        for (e = 0; e < o.length; e++) {
                            i = o[e], u.containsKey(i) || this.placeRight(i, u, n);
                        }for (s = Number.NEGATIVE_INFINITY, e = 0; e < o.length; e++) {
                            i = o[e], r = this.leftSibling(i), r && this.nodeRightClass.get(r) !== n && (s = Math.max(s, u.get(r) - u.get(i) + this.getMinDist(r, i)));
                        }if (s === Number.NEGATIVE_INFINITY) {
                            for (a = [], e = 0; e < o.length; e++) {
                                for (i = o[e], h = [], f.addRange(h, this.upNodes.get(i)), f.addRange(h, this.downNodes.get(i)), c = 0; c < h.length; c++) {
                                    l = h[c], this.nodeRightClass.get(l) < n && a.push(u.get(i) - u.get(l));
                                }
                            }a.sort(), s = 0 === a.length ? 0 : a.length % 2 === 1 ? a[this.intDiv(a.length, 2)] : (a[this.intDiv(a.length, 2) - 1] + a[this.intDiv(a.length, 2)]) / 2;
                        }for (e = 0; e < o.length; e++) {
                            i = o[e], u.set(i, u.get(i) + s);
                        }
                    }
                }return u;
            }, _getLeftWing: function _getLeftWing() {
                var t = { value: null },
                    e = this.computeClasses(t, 1);return this.nodeLeftClass = t.value, e;
            }, _getRightWing: function _getRightWing() {
                var t = { value: null },
                    e = this.computeClasses(t, -1);return this.nodeRightClass = t.value, e;
            }, computeClasses: function computeClasses(t, e) {
                var i,
                    n,
                    o,
                    s,
                    r,
                    a,
                    h,
                    c,
                    l,
                    u = 0,
                    f = t.value = new d();for (i = 0; i < this.layers.length; ++i) {
                    for (u = i, n = this.layers[i], o = 1 === e ? 0 : n.length - 1; 0 <= o && o < n.length; o += e) {
                        if (s = n[o], f.containsKey(s)) u = f.get(s);else if (f.set(s, u), s.isVirtual) for (r = this._nodesInLink(s), a = 0; a < r.length; a++) {
                            h = r[a], f.set(h, u);
                        }
                    }
                }for (c = [], l = 0; l < this.layers.length; l++) {
                    c.push(null);
                }return f.forEach(function (t, e) {
                    null === c[e] && (c[e] = []), c[e].push(t);
                }), c;
            }, _isVerticalLayout: function _isVerticalLayout() {
                return "up" === this.options.subtype.toLowerCase() || "down" === this.options.subtype.toLowerCase() || "vertical" === this.options.subtype.toLowerCase();
            }, _isHorizontalLayout: function _isHorizontalLayout() {
                return "right" === this.options.subtype.toLowerCase() || "left" === this.options.subtype.toLowerCase() || "horizontal" === this.options.subtype.toLowerCase();
            }, _isIncreasingLayout: function _isIncreasingLayout() {
                return "right" === this.options.subtype.toLowerCase() || "down" === this.options.subtype.toLowerCase();
            }, _moveThingsAround: function _moveThingsAround() {
                function t(t, e) {
                    var i,
                        n,
                        o = Number.MIN_VALUE;for (i = 0; i < t.length; ++i) {
                        n = t[i], o = e._isVerticalLayout() ? Math.max(o, n.height) : Math.max(o, n.width);
                    }return o;
                }var e, i, n, o, s, r, a, h, c, l, u, p, g, m, _, v, y, w, x, b, C, S, k, T, M, D, I;for (i = 0; i < this.layers.length; ++i) {
                    o = this.layers[i], o.sort(this._gridPositionComparer);
                }for (this.minDistances = [], i = 0; i < this.layers.length; ++i) {
                    for (o = this.layers[i], this.minDistances[i] = [], s = 0; s < o.length; ++s) {
                        n = o[s], n.layerIndex = s, this.minDistances[i][s] = this.options.nodeDistance, s < o.length - 1 && (this.minDistances[i][s] += this._isVerticalLayout() ? (n.width + o[s + 1].width) / 2 : (n.height + o[s + 1].height) / 2);
                    }
                }for (this.downNodes = new d(), this.upNodes = new d(), f.forEach(this.graph.nodes, function (t) {
                    this.downNodes.set(t, []), this.upNodes.set(t, []);
                }, this), f.forEach(this.graph.links, function (t) {
                    var e = t.source,
                        i = t.target,
                        n = null,
                        o = null;e.layer > i.layer ? (n = t.source, o = t.target) : (o = t.source, n = t.target), this.downNodes.get(o).push(n), this.upNodes.get(n).push(o);
                }, this), this.downNodes.forEachValue(function (t) {
                    t.sort(this._gridPositionComparer);
                }, this), this.upNodes.forEachValue(function (t) {
                    t.sort(this._gridPositionComparer);
                }, this), i = 0; i < this.layers.length - 1; ++i) {
                    for (o = this.layers[i], r = 0; r < o.length - 1; r++) {
                        if (a = o[r], a.isVirtual && (h = this.downNodes.get(a)[0], h.isVirtual)) for (s = r + 1; s < o.length; ++s) {
                            n = o[s], n.isVirtual && (c = this.downNodes.get(n)[0], c.isVirtual && h.gridPosition > c.gridPosition && (l = h.gridPosition, h.gridPosition = c.gridPosition, c.gridPosition = l, u = h.layerIndex, p = c.layerIndex, this.layers[i + 1][u] = c, this.layers[i + 1][p] = h, h.layerIndex = p, c.layerIndex = u));
                        }
                    }
                }for (g = this._getLeftWing(), m = this._getRightWing(), _ = this.placeLeftToRight(g), v = this.placeRightToLeft(m), y = new d(), f.forEach(this.graph.nodes, function (t) {
                    y.set(t, (_.get(t) + v.get(t)) / 2);
                }), w = new d(), x = new d(), i = 0; i < this.layers.length; ++i) {
                    for (o = this.layers[i], b = -1, C = -1, s = 0; s < o.length; ++s) {
                        n = o[s], w.set(n, 0), x.set(n, !1), n.isVirtual && (b === -1 ? b = s : b === s - 1 ? b = s : (C = s, w.set(o[b], 0), y.get(n) - y.get(o[b]) === this.getMinDist(o[b], n) ? x.set(o[b], !0) : x.set(o[b], !1), b = s));
                    }
                }for (S = [1, -1], f.forEach(S, function (t) {
                    var i,
                        n,
                        o,
                        s,
                        r,
                        a,
                        h,
                        c = 1 === t ? 0 : this.layers.length - 1;
                    for (i = c; 0 <= i && i < this.layers.length; i += t) {
                        if (n = this.layers[i], o = this._firstVirtualNode(n), s = null, r = null, o !== -1) for (s = n[o], r = [], e = 0; e < o; e++) {
                            r.push(n[e]);
                        } else s = null, r = n;if (r.length > 0) {
                            for (this._sequencer(y, null, s, t, r), e = 0; e < r.length - 1; ++e) {
                                this.setMinDist(r[e], r[e + 1], y.get(r[e + 1]) - y.get(r[e]));
                            }s && this.setMinDist(r[r.length - 1], s, y.get(s) - y.get(r[r.length - 1]));
                        }for (; s;) {
                            if (a = this.nextVirtualNode(n, s)) {
                                if (w.get(s) === t) {
                                    for (o = s.layerIndex, h = a.layerIndex, r = [], e = o + 1; e < h; e++) {
                                        r.push(n[e]);
                                    }r.length > 0 && this._sequencer(y, s, a, t, r), x.set(s, !0);
                                }
                            } else {
                                for (o = s.layerIndex, r = [], e = o + 1; e < n.length; e++) {
                                    r.push(n[e]);
                                }if (r.length > 0) {
                                    for (this._sequencer(y, s, null, t, r), e = 0; e < r.length - 1; ++e) {
                                        this.setMinDist(r[e], r[e + 1], y.get(r[e + 1]) - y.get(r[e]));
                                    }this.setMinDist(s, r[0], y.get(r[0]) - y.get(s));
                                }
                            }s = a;
                        }this.adjustDirections(i, t, w, x);
                    }
                }, this), k = this._isIncreasingLayout() ? 0 : this.layers.length - 1, T = function T(t, e) {
                    return e._isIncreasingLayout() ? t < e.layers.length : t >= 0;
                }, M = this._isIncreasingLayout() ? 1 : -1, D = 0, e = k; T(e, this); e += M) {
                    for (o = this.layers[e], I = t(o, this), s = 0; s < o.length; ++s) {
                        n = o[s], this._isVerticalLayout() ? (n.x = y.get(n), n.y = D + I / 2) : (n.x = D + I / 2, n.y = y.get(n));
                    }D += this.options.layerSeparation + I;
                }
            }, adjustDirections: function adjustDirections(t, e, i, n) {
                var o, s, r, a, h, c, d, l, u, f, p, g, m, _;if (!(t + e < 0 || t + e >= this.layers.length)) for (o = null, s = null, r = this.layers[t + e], a = 0; a < r.length; ++a) {
                    if (h = r[a], h.isVirtual && (c = this.getNeighborOnLayer(h, t), c.isVirtual)) {
                        if (o) {
                            for (d = n.get(s), l = this.layers[t], u = s.layerIndex, f = c.layerIndex, p = u + 1; p < f; ++p) {
                                l[p].isVirtual && (d = d && n.get(l[p]));
                            }if (d) for (i.set(o, e), g = o.layerIndex, m = h.layerIndex, _ = g + 1; _ < m; ++_) {
                                r[_].isVirtual && i.set(r[_], e);
                            }
                        }o = h, s = c;
                    }
                }
            }, getNeighborOnLayer: function getNeighborOnLayer(t, e) {
                var i = this.upNodes.get(t)[0];return i.layer === e ? i : (i = this.downNodes.get(t)[0], i.layer === e ? i : null);
            }, _sequencer: function _sequencer(t, e, i, n, o) {
                if (1 === o.length && this._sequenceSingle(t, e, i, n, o[0]), o.length > 1) {
                    var s = o.length,
                        r = this.intDiv(s, 2);this._sequencer(t, e, i, n, o.slice(0, r)), this._sequencer(t, e, i, n, o.slice(r)), this.combineSequences(t, e, i, n, o);
                }
            }, _sequenceSingle: function _sequenceSingle(t, e, i, n, o) {
                var s = n === -1 ? this.downNodes.get(o) : this.upNodes.get(o),
                    r = s.length;0 !== r && (r % 2 === 1 ? t.set(o, t.get(s[this.intDiv(r, 2)])) : t.set(o, (t.get(s[this.intDiv(r, 2) - 1]) + t.get(s[this.intDiv(r, 2)])) / 2), e && t.set(o, Math.max(t.get(o), t.get(e) + this.getMinDist(e, o))), i && t.set(o, Math.min(t.get(o), t.get(i) - this.getMinDist(o, i))));
            }, combineSequences: function combineSequences(t, e, i, n, o) {
                var s,
                    r,
                    a,
                    h,
                    c,
                    d,
                    l,
                    u,
                    f,
                    p,
                    g = o.length,
                    m = this.intDiv(g, 2),
                    _ = [];for (s = 0; s < m; ++s) {
                    for (r = 0, h = n === -1 ? this.downNodes.get(o[s]) : this.upNodes.get(o[s]), a = 0; a < h.length; ++a) {
                        c = h[a], t.get(c) >= t.get(o[s]) ? r++ : (r--, _.push({ k: t.get(c) + this.getMinDist(o[s], o[m - 1]), v: 2 }));
                    }_.push({ k: t.get(o[s]) + this.getMinDist(o[s], o[m - 1]), v: r });
                }for (e && _.push({ k: t.get(e) + this.getMinDist(e, o[m - 1]), v: Number.MAX_VALUE }), _.sort(this._positionDescendingComparer), l = [], s = m; s < g; ++s) {
                    for (r = 0, h = n === -1 ? this.downNodes.get(o[s]) : this.upNodes.get(o[s]), a = 0; a < h.length; ++a) {
                        c = h[a], t.get(c) <= t.get(o[s]) ? r++ : (r--, l.push({ k: t.get(c) - this.getMinDist(o[s], o[m]), v: 2 }));
                    }l.push({ k: t.get(o[s]) - this.getMinDist(o[s], o[m]), v: r });
                }for (i && l.push({ k: t.get(i) - this.getMinDist(i, o[m]), v: Number.MAX_VALUE }), l.sort(this._positionAscendingComparer), u = 0, f = 0, p = this.getMinDist(o[m - 1], o[m]); t.get(o[m]) - t.get(o[m - 1]) < p;) {
                    if (u < f) {
                        if (0 === _.length) {
                            t.set(o[m - 1], t.get(o[m]) - p);break;
                        }d = _.shift(), u += d.v, t.set(o[m - 1], d.k), t.set(o[m - 1], Math.max(t.get(o[m - 1]), t.get(o[m]) - p));
                    } else {
                        if (0 === l.length) {
                            t.set(o[m], t.get(o[m - 1]) + p);break;
                        }d = l.shift(), f += d.v, t.set(o[m], d.k), t.set(o[m], Math.min(t.get(o[m]), t.get(o[m - 1]) + p));
                    }
                }for (s = m - 2; s >= 0; s--) {
                    t.set(o[s], Math.min(t.get(o[s]), t.get(o[m - 1]) - this.getMinDist(o[s], o[m - 1])));
                }for (s = m + 1; s < g; s++) {
                    t.set(o[s], Math.max(t.get(o[s]), t.get(o[m]) + this.getMinDist(o[s], o[m])));
                }
            }, placeLeft: function placeLeft(t, e, i) {
                var n = Number.NEGATIVE_INFINITY;f.forEach(this._getComposite(t), function (t) {
                    var o = this.leftSibling(t);o && this.nodeLeftClass.get(o) === this.nodeLeftClass.get(t) && (e.containsKey(o) || this.placeLeft(o, e, i), n = Math.max(n, e.get(o) + this.getMinDist(o, t)));
                }, this), n === Number.NEGATIVE_INFINITY && (n = 0), f.forEach(this._getComposite(t), function (t) {
                    e.set(t, n);
                });
            }, placeRight: function placeRight(t, e, i) {
                var n = Number.POSITIVE_INFINITY;f.forEach(this._getComposite(t), function (t) {
                    var o = this.rightSibling(t);o && this.nodeRightClass.get(o) === this.nodeRightClass.get(t) && (e.containsKey(o) || this.placeRight(o, e, i), n = Math.min(n, e.get(o) - this.getMinDist(t, o)));
                }, this), n === Number.POSITIVE_INFINITY && (n = 0), f.forEach(this._getComposite(t), function (t) {
                    e.set(t, n);
                });
            }, leftSibling: function leftSibling(t) {
                var e = this.layers[t.layer],
                    i = t.layerIndex;return 0 === i ? null : e[i - 1];
            }, rightSibling: function rightSibling(t) {
                var e = this.layers[t.layer],
                    i = t.layerIndex;return i === e.length - 1 ? null : e[i + 1];
            }, _getComposite: function _getComposite(t) {
                return t.isVirtual ? this._nodesInLink(t) : [t];
            }, arrangeNodes: function arrangeNodes() {
                var t, e, i, n, o, s, r, a;for (e = 0; e < this.layers.length; e++) {
                    for (n = this.layers[e], i = 0; i < n.length; i++) {
                        o = n[i], o.upstreamPriority = o.upstreamLinkCount, o.downstreamPriority = o.downstreamLinkCount;
                    }
                }for (s = 2, r = 0; r < s; r++) {
                    for (t = this.layers.length - 1; t >= 1; t--) {
                        this.layoutLayer(!1, t);
                    }for (t = 0; t < this.layers.length - 1; t++) {
                        this.layoutLayer(!0, t);
                    }
                }for (a = Number.MAX_VALUE, e = 0; e < this.layers.length; e++) {
                    for (n = this.layers[e], i = 0; i < n.length; i++) {
                        o = n[i], a = Math.min(a, o.gridPosition);
                    }
                }if (a < 0) for (e = 0; e < this.layers.length; e++) {
                    for (n = this.layers[e], i = 0; i < n.length; i++) {
                        o = n[i], o.gridPosition = o.gridPosition - a;
                    }
                }
            }, layoutLayer: function layoutLayer(t, e) {
                var i, n, o, s;for (n = t ? this.layers[i = e + 1] : this.layers[i = e - 1], o = [], s = 0; s < n.length; s++) {
                    o.push(n[s]);
                }o.sort(function (t, e) {
                    var i = (t.upstreamPriority + t.downstreamPriority) / 2,
                        n = (e.upstreamPriority + e.downstreamPriority) / 2;return Math.abs(i - n) < 1e-4 ? 0 : i < n ? 1 : -1;
                }), f.forEach(o, function (t) {
                    var e = t.gridPosition,
                        i = this.calcBaryCenter(t),
                        o = (t.upstreamPriority + t.downstreamPriority) / 2;if (!(Math.abs(e - i) < 1e-4 || Math.abs(e - i) < .2501)) if (e < i) for (; e < i && this.moveRight(t, n, o);) {
                        e = t.gridPosition;
                    } else for (; e > i && this.moveLeft(t, n, o);) {
                        e = t.gridPosition;
                    }
                }, this), i > 0 && this.calcDownData(i - 1), i < this.layers.length - 1 && this.calcUpData(i + 1);
            }, moveRight: function moveRight(t, e, i) {
                var n,
                    o,
                    s = f.indexOf(e, t);return s === e.length - 1 ? (t.gridPosition = t.gridPosition + .5, !0) : (n = e[s + 1], o = (n.upstreamPriority + n.downstreamPriority) / 2, n.gridPosition > t.gridPosition + 1 ? (t.gridPosition = t.gridPosition + .5, !0) : !(o > i || Math.abs(o - i) < 1e-4) && !!this.moveRight(n, e, i) && (t.gridPosition = t.gridPosition + .5, !0));
            }, moveLeft: function moveLeft(t, e, i) {
                var n,
                    o,
                    s = f.indexOf(e, t);return 0 === s ? (t.gridPosition = t.gridPosition - .5, !0) : (n = e[s - 1], o = (n.upstreamPriority + n.downstreamPriority) / 2, n.gridPosition < t.gridPosition - 1 ? (t.gridPosition = t.gridPosition - .5, !0) : !(o > i || Math.abs(o - i) < 1e-4) && !!this.moveLeft(n, e, i) && (t.gridPosition = t.gridPosition - .5, !0));
            }, mapVirtualNode: function mapVirtualNode(t, e) {
                this.nodeToLinkMap.set(t, e), this.linkToNodeMap.containsKey(e) || this.linkToNodeMap.set(e, []), this.linkToNodeMap.get(e).push(t);
            }, _nodesInLink: function _nodesInLink(t) {
                return this.linkToNodeMap.get(this.nodeToLinkMap.get(t));
            }, _dummify: function _dummify() {
                var t, e, i, n, o, a, h, c, l, u, p, g, m, _, v, y, w, x, b, C;for (this.linkToNodeMap = new d(), this.nodeToLinkMap = new d(), l = this.graph.links.slice(0), u = this.layers, p = function p(t, e, i) {
                    u[t].linksTo[e] = u[t].linksTo[e] || [], u[t].linksTo[e].push(i);
                }, c = 0; c < l.length; c++) {
                    if (g = l[c], m = g.source, _ = g.target, v = m.layer, y = _.layer, w = m.gridPosition, x = _.gridPosition, b = (x - w) / Math.abs(y - v), C = m, v - y > 1) {
                        for (h = v - 1; h > y; h--) {
                            for (i = new s(), i.x = m.x, i.y = m.y, i.width = m.width / 100, i.height = m.height / 100, t = u[h], e = (h - y) * b + w, e > t.length && (e = t.length), w >= u[v].length - 1 && x >= u[y].length - 1 ? e = t.length : 0 === w && 0 === x && (e = 0), i.layer = h, i.uBaryCenter = 0, i.dBaryCenter = 0, i.upstreamLinkCount = 0, i.downstreamLinkCount = 0, i.gridPosition = e, i.isVirtual = !0, f.insert(t, i, e), o = e + 1; o < t.length; o++) {
                                n = t[o], n.gridPosition = n.gridPosition + 1;
                            }a = new r(C, i), a.depthOfDumminess = 0, p(h - 1, h, a), C = i, this.graph._addNode(i), this.graph.addLink(a), i.index = this.graph.nodes.length - 1, this.mapVirtualNode(i, g);
                        }p(y - 1, y, a), g.changeSource(C), g.depthOfDumminess = v - y - 1;
                    } else if (v - y < -1) {
                        for (h = v + 1; h < y; h++) {
                            for (i = new s(), i.x = m.x, i.y = m.y, i.width = m.width / 100, i.height = m.height / 100, t = u[h], e = (h - v) * b + w, e > t.length && (e = t.length), w >= u[v].length - 1 && x >= u[y].length - 1 ? e = t.length : 0 === w && 0 === x && (e = 0), i.layer = h, i.uBaryCenter = 0, i.dBaryCenter = 0, i.upstreamLinkCount = 0, i.downstreamLinkCount = 0, i.gridPosition = e, i.isVirtual = !0, e &= e, f.insert(t, i, e), o = e + 1; o < t.length; o++) {
                                n = t[o], n.gridPosition = n.gridPosition + 1;
                            }a = new r(C, i), a.depthOfDumminess = 0, p(h - 1, h, a), C = i, this.graph._addNode(i), this.graph.addLink(a), i.index = this.graph.nodes.length - 1, this.mapVirtualNode(i, g);
                        }p(y - 1, y, g), g.changeSource(C), g.depthOfDumminess = y - v - 1;
                    } else p(v, y, g);
                }
            }, _dedummify: function _dedummify() {
                for (var t, e, i, n, o, s, r, a, h = !0; h;) {
                    for (h = !1, t = 0; t < this.graph.links.length; t++) {
                        if (e = this.graph.links[t], e.depthOfDumminess) {
                            for (i = [], i.unshift({ x: e.target.x, y: e.target.y }), i.unshift({ x: e.source.x, y: e.source.y }), n = e, o = e.depthOfDumminess, s = 0; s < o; s++) {
                                r = n.source, a = r.incoming[0], i.unshift({ x: a.source.x, y: a.source.y }), n = a;
                            }e.changeSource(n.source), e.depthOfDumminess = 0, i.length > 2 ? (i.splice(0, 1), i.splice(i.length - 1), e.points = i) : e.points = [], h = !0;break;
                        }
                    }
                }
            }, _optimizeCrossings: function _optimizeCrossings() {
                for (var t, e = -1, i = 3, n = 0; 0 !== e && !(n++ > i);) {
                    for (e = 0, t = this.layers.length - 1; t >= 1; t--) {
                        e += this.optimizeLayerCrossings(!1, t);
                    }for (t = 0; t < this.layers.length - 1; t++) {
                        e += this.optimizeLayerCrossings(!0, t);
                    }
                }
            }, calcUpData: function calcUpData(t) {
                var e, i, n, o, s, r, a, h, c;if (0 !== t) {
                    for (e = this.layers[t], s = new l(), r = this.layers[t - 1], i = 0; i < r.length; i++) {
                        s.add(r[i]);
                    }for (i = 0; i < e.length; i++) {
                        for (a = e[i], h = 0, c = 0, n = 0; n < a.incoming.length; n++) {
                            o = a.incoming[n], s.contains(o.source) && (c++, h += o.source.gridPosition);
                        }for (n = 0; n < a.outgoing.length; n++) {
                            o = a.outgoing[n], s.contains(o.target) && (c++, h += o.target.gridPosition);
                        }c > 0 ? (a.uBaryCenter = h / c, a.upstreamLinkCount = c) : (a.uBaryCenter = i, a.upstreamLinkCount = 0);
                    }
                }
            }, calcDownData: function calcDownData(t) {
                var e, i, n, o, s, r, a, h, c;if (t !== this.layers.length - 1) {
                    for (e = this.layers[t], s = new l(), r = this.layers[t + 1], i = 0; i < r.length; i++) {
                        s.add(r[i]);
                    }for (i = 0; i < e.length; i++) {
                        for (a = e[i], h = 0, c = 0, n = 0; n < a.incoming.length; n++) {
                            o = a.incoming[n], s.contains(o.source) && (c++, h += o.source.gridPosition);
                        }for (n = 0; n < a.outgoing.length; n++) {
                            o = a.outgoing[n], s.contains(o.target) && (c++, h += o.target.gridPosition);
                        }c > 0 ? (a.dBaryCenter = h / c, a.downstreamLinkCount = c) : (a.dBaryCenter = i, a.downstreamLinkCount = 0);
                    }
                }
            }, optimizeLayerCrossings: function optimizeLayerCrossings(t, e) {
                var i, n, o, s, r, a, h, c;for (n = t ? this.layers[i = e + 1] : this.layers[i = e - 1], o = n.slice(0), t ? this.calcUpData(i) : this.calcDownData(i), s = this, n.sort(function (t, e) {
                    var i,
                        n = s.calcBaryCenter(t),
                        o = s.calcBaryCenter(e);return Math.abs(n - o) < 1e-4 ? t.degree() === e.degree() ? s.compareByIndex(t, e) : t.degree() < e.degree() ? 1 : -1 : (i = 1e3 * (o - n), i > 0 ? -1 : i < 0 ? 1 : s.compareByIndex(t, e));
                }), a = 0, r = 0; r < n.length; r++) {
                    n[r] !== o[r] && a++;
                }if (a > 0) for (h = 0, r = 0; r < n.length; r++) {
                    c = n[r], c.gridPosition = h++;
                }return a;
            }, _swapPairs: function _swapPairs() {
                for (var t, e, i, n, o, s, r, a, h, c, d, l, u, f, p, g, m, _ = this.options.layeredIterations, v = 0;;) {
                    if (v++ > _) break;for (t = v % 4 <= 1, e = v % 4 === 1, i = t ? 0 : this.layers.length - 1; t ? i <= this.layers.length - 1 : i >= 0; i += t ? 1 : -1) {
                        for (n = this.layers[i], o = !1, s = !0, r = 0, a = 0; a < n.length - 1; a++) {
                            h = 0, c = 0, d = 0, s ? (0 !== i && (h = this.countLinksCrossingBetweenTwoLayers(i - 1, i)), i !== this.layers.length - 1 && (c = this.countLinksCrossingBetweenTwoLayers(i, i + 1)), t ? h *= 2 : c *= 2, d = h + c) : d = r, 0 !== d && (l = n[a], u = n[a + 1], f = l.gridPosition, p = u.gridPosition, n[a] = u, n[a + 1] = l, l.gridPosition = p, u.gridPosition = f, h = 0, 0 !== i && (h = this.countLinksCrossingBetweenTwoLayers(i - 1, i)), c = 0, i !== this.layers.length - 1 && (c = this.countLinksCrossingBetweenTwoLayers(i, i + 1)), t ? h *= 2 : c *= 2, g = h + c, m = !1, m = e ? g >= d : g > d, m ? (l = n[a], u = n[a + 1], f = l.gridPosition, p = u.gridPosition, n[a] = u, n[a + 1] = l, l.gridPosition = p, u.gridPosition = f, r = d, s = !1) : (o = !0, s = !0));
                        }o && (i !== this.layers.length - 1 && this.calcUpData(i + 1), 0 !== i && this.calcDownData(i - 1));
                    }
                }
            }, countLinksCrossingBetweenTwoLayers: function countLinksCrossingBetweenTwoLayers(t, e) {
                var i,
                    n,
                    o,
                    s,
                    r,
                    a,
                    h,
                    c,
                    d,
                    l,
                    u,
                    f,
                    p = this.layers[t].linksTo[e],
                    g = 0,
                    m = p.length;for (h = 0; h < m; h++) {
                    for (i = p[h], c = h + 1; c < m; c++) {
                        n = p[c], i.target.layer === e ? (o = i.source, s = i.target) : (o = i.target, s = i.source), n.target.layer === e ? (r = n.source, a = n.target) : (r = n.target, a = n.source), d = o.gridPosition, l = s.gridPosition, u = r.gridPosition, f = a.gridPosition, (d - u) * (l - f) < 0 && g++;
                    }
                }return g;
            }, calcBaryCenter: function calcBaryCenter(t) {
                var e = t.upstreamLinkCount,
                    i = t.downstreamLinkCount,
                    n = t.uBaryCenter,
                    o = t.dBaryCenter;return e > 0 && i > 0 ? (n + o) / 2 : e > 0 ? n : i > 0 ? o : 0;
            }, _gridPositionComparer: function _gridPositionComparer(t, e) {
                return t.gridPosition < e.gridPosition ? -1 : t.gridPosition > e.gridPosition ? 1 : 0;
            }, _positionAscendingComparer: function _positionAscendingComparer(t, e) {
                return t.k < e.k ? -1 : t.k > e.k ? 1 : 0;
            }, _positionDescendingComparer: function _positionDescendingComparer(t, e) {
                return t.k < e.k ? 1 : t.k > e.k ? -1 : 0;
            }, _firstVirtualNode: function _firstVirtualNode(t) {
                for (var e = 0; e < t.length; e++) {
                    if (t[e].isVirtual) return e;
                }return -1;
            }, compareByIndex: function compareByIndex(t, e) {
                var i = t.index,
                    n = e.index;return i < n ? 1 : i > n ? -1 : 0;
            }, intDiv: function intDiv(t, e) {
                return (t - t % e) / e;
            }, nextVirtualNode: function nextVirtualNode(t, e) {
                var i,
                    n = e.layerIndex;for (i = n + 1; i < t.length; ++i) {
                    if (t[i].isVirtual) return t[i];
                }return null;
            } }),
            k = i.Class.extend({ init: function init(t, e) {
                if (f.isUndefined(t)) throw "No diagram given";this.diagram = t, this.nodeMap = new d(), this.linkMap = new d(), this.capture(e ? e : t);
            }, capture: function capture(t) {
                var e, i, o, s, r, a, h, d, l;if (t instanceof n.Graph) {
                    for (s = 0; s < t.nodes.length; s++) {
                        e = t.nodes[s], o = e.associatedShape, this.nodeMap.set(o.visual.id, new c(e.x, e.y, e.width, e.height));
                    }for (s = 0; s < t.links.length; s++) {
                        a = t.links[s], r = a.associatedConnection, this.linkMap.set(r.visual.id, a.points());
                    }
                } else if (t instanceof Array) for (i = t, s = 0; s < i.length; s++) {
                    e = i[s], o = e.associatedShape, o && this.nodeMap.set(o.visual.id, new c(e.x, e.y, e.width, e.height));
                } else if (t.hasOwnProperty("links") && t.hasOwnProperty("nodes")) {
                    for (i = t.nodes, h = t.links, s = 0; s < i.length; s++) {
                        e = i[s], o = e.associatedShape, o && this.nodeMap.set(o.visual.id, new c(e.x, e.y, e.width, e.height));
                    }for (s = 0; s < h.length; s++) {
                        a = h[s], r = a.associatedConnection, r && this.linkMap.set(r.visual.id, a.points);
                    }
                } else {
                    for (d = this.diagram.shapes, l = this.diagram.connections, s = 0; s < d.length; s++) {
                        o = d[s], this.nodeMap.set(o.visual.id, o.bounds());
                    }for (s = 0; s < l.length; s++) {
                        r = l[s], this.linkMap.set(r.visual.id, r.points());
                    }
                }
            } });a(n, { init: function init(t) {
                i.init(t, n.ui);
            }, SpringLayout: x, TreeLayout: C, GraphAdapter: w, LayeredLayout: S, LayoutBase: y, LayoutState: k });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/diagram/dom.min", ["kendo.data.min", "kendo.draganddrop.min", "kendo.toolbar.min", "kendo.editable.min", "kendo.window.min", "kendo.dropdownlist.min", "kendo.dataviz.core.min", "kendo.dataviz.themes.min", "dataviz/diagram/svg.min", "dataviz/diagram/services.min", "dataviz/diagram/layout.min"], t);
}(function () {
    !function (t, e) {
        function i(t) {
            var e = t.originalEvent,
                i = 0;return e.wheelDelta ? (i = -e.wheelDelta / 40, i = i > 0 ? xt.ceil(i) : xt.floor(i)) : e.detail && (i = e.detail), i;
        }function n(t) {
            return t.options.name.toLowerCase() === zt.toLowerCase();
        }function o(t, e) {
            var i,
                o,
                s,
                r,
                a = Ot;for (s = 0; s < e.length; s++) {
                o = e[s], n(o) || (r = t.distanceTo(o.position()), r < a && (a = r, i = o));
            }return i;
        }function s(t, e) {
            var i,
                n,
                o,
                s = [],
                r = t.drawingContainer().children,
                a = r.length;for (i = 0; i < e.length; i++) {
                for (n = e[i], o = 0; o < a; o++) {
                    if (r[o] == n.drawingContainer()) {
                        s.push(o);break;
                    }
                }
            }return s;
        }function r(t) {
            var e = {};return t = t || {}, mt(t.text) && null !== t.text && (e.text = t.text), mt(t.x) && null !== t.x && (e.x = t.x), mt(t.y) && null !== t.y && (e.y = t.y), mt(t.width) && null !== t.width && (e.width = t.width), mt(t.height) && null !== t.height && (e.height = t.height), mt(t.type) && null !== t.type && (e.type = t.type), e;
        }function a(t) {
            var e = {};return t = t || {}, mt(t.text) && null !== t.text && (e.content = t.text), mt(t.type) && null !== t.type && (e.type = t.type), mt(t.from) && null !== t.from && (e.from = t.from), mt(t.fromConnector) && null !== t.fromConnector && (e.fromConnector = t.fromConnector), mt(t.fromX) && null !== t.fromX && (e.fromX = t.fromX), mt(t.fromY) && null !== t.fromY && (e.fromY = t.fromY), mt(t.to) && null !== t.to && (e.to = t.to), mt(t.toConnector) && null !== t.toConnector && (e.toConnector = t.toConnector), mt(t.toX) && null !== t.toX && (e.toX = t.toX), mt(t.toY) && null !== t.toY && (e.toY = t.toY), e;
        }function h(e, i) {
            var n,
                o = this.dataSource.reader.model;o && (n = o.fn.fields.text ? "text" : o.idField, t("<input name='" + i.field + "' />").appendTo(e).kendoDropDownList({ dataValueField: o.idField, dataTextField: n, dataSource: this.dataSource.data().toJSON(), optionLabel: " ", valuePrimitive: !0 }));
        }function c(t) {
            this.dataItem = t, this.callbacks = [];
        }function d() {
            this.items = {};
        }function l(t) {
            var e = t;return t instanceof kendo.data.Model && (e = t.toJSON(), e[t.idField] = t._defaultId), e;
        }function u(t) {
            var e,
                i,
                n = [],
                o = [];for (i = 0; i < t.length; i++) {
                e = t[i], e instanceof x ? o.push(e) : n.push(e);
            }return { shapes: o, connections: n };
        }function f(t, e) {
            return t.reader.model ? new t.reader.model(e) : new kendo.data.ObservableObject(e);
        }function p(t, e) {
            mt(e[t]) && e.set(t, null);
        }function g(t, e, i) {
            var n, o;for (o = 0; o < i.length; o++) {
                n = i[o], e && !mt(e[n]) && (e[n] = t[n]);
            }
        }function m(t) {
            var e = t.drawingContainer().clippedBBox(null);0 === e.origin.x && 0 === e.origin.y || t.position(-e.origin.x, -e.origin.y);
        }function _(t) {
            t.preventDefault();
        }var v,
            y,
            w,
            x,
            b,
            C,
            S,
            k,
            T,
            M,
            D,
            I,
            P = kendo.dataviz,
            L = kendo.drawing,
            E = kendo.geometry,
            z = P.diagram,
            B = kendo.ui.Widget,
            N = kendo.Class,
            R = t.proxy,
            A = kendo.deepExtend,
            O = kendo._outerWidth,
            U = kendo._outerHeight,
            V = t.extend,
            H = kendo.data.HierarchicalDataSource,
            F = z.Canvas,
            G = z.Group,
            q = z.Rectangle,
            K = z.Circle,
            W = z.CompositeTransform,
            X = z.Rect,
            j = z.Path,
            Y = z.DeleteShapeUnit,
            Q = z.DeleteConnectionUnit,
            J = z.TextBlock,
            Z = z.Image,
            $ = z.Point,
            tt = z.Intersect,
            et = z.ConnectionEditAdorner,
            it = z.UndoRedoService,
            nt = z.ToolService,
            ot = z.Selector,
            st = z.ResizingAdorner,
            rt = z.ConnectorsAdorner,
            at = z.Cursors,
            ht = z.Utils,
            ct = kendo.Observable,
            dt = z.ToBackUnit,
            lt = z.ToFrontUnit,
            ut = z.PolylineRouter,
            ft = z.CascadingRouter,
            pt = ht.isUndefined,
            gt = ht.isDefined,
            mt = kendo.util.defined,
            _t = t.isArray,
            vt = kendo.isFunction,
            yt = ht.isString,
            wt = t.isPlainObject,
            xt = Math,
            bt = ".kendoDiagram",
            Ct = "cascading",
            St = "itemBoundsChange",
            kt = "change",
            Tt = "click",
            Mt = "drag",
            Dt = "dragEnd",
            It = "dragStart",
            Pt = "mouseEnter",
            Lt = "mouseLeave",
            Et = "error",
            zt = "Auto",
            Bt = "Top",
            Nt = "Right",
            Rt = "Left",
            At = "Bottom",
            Ot = 9007199254740992,
            Ut = "select",
            Vt = "itemRotate",
            Ht = "pan",
            Ft = "zoomStart",
            Gt = "zoomEnd",
            qt = "none",
            Kt = 600,
            Wt = 600,
            Xt = "rectangle",
            jt = 100,
            Yt = 100,
            Qt = 20,
            Jt = 20,
            Zt = 0,
            $t = "Yellow",
            te = Number.MAX_VALUE,
            ee = -Number.MAX_VALUE,
            ie = "absolute",
            ne = "transformed",
            oe = "rotated",
            se = "transparent",
            re = "width",
            ae = "height",
            he = "x",
            ce = "y",
            de = "DOMMouseScroll" + bt + " mousewheel" + bt,
            le = .05,
            ue = 5,
            fe = '<a class="k-button k-button-icontext #=className#" href="\\#"><span class="#=iconClass# #=imageClass#"></span>#=text#</a>',
            pe = 5;z.DefaultConnectors = [{ name: Bt }, { name: At }, { name: Rt }, { name: Nt }, { name: zt, position: function position(t) {
                return t.getPosition("center");
            } }], v = { cancel: { text: "Cancel", imageClass: "k-i-cancel", className: "k-diagram-cancel", iconClass: "k-icon" }, update: { text: "Update", imageClass: "k-i-update", className: "k-diagram-update", iconClass: "k-icon" } }, z.shapeDefaults = function (t) {
            var e = { type: Xt, path: "", autoSize: !0, visual: null, x: Zt, y: Zt, minWidth: Qt, minHeight: Jt, width: jt, height: Yt, hover: {}, editable: { connect: !0, tools: [] }, connectors: z.DefaultConnectors, rotation: { angle: 0 } };return ht.simpleExtend(e, t), e;
        }, y = ct.extend({ init: function init(t) {
                var e = this;e.dataItem = (t || {}).dataItem, ct.fn.init.call(e), e.options = A({ id: z.randomId() }, e.options, t), e.isSelected = !1, e.visual = new G({ id: e.options.id, autoSize: e.options.autoSize }), e.id = e.options.id, e._template();
            }, options: { hover: {}, cursor: at.grip, content: { align: "center middle" }, selectable: !0, serializable: !0, enable: !0 }, _getCursor: function _getCursor(t) {
                return this.adorner ? this.adorner._getCursor(t) : this.options.cursor;
            }, visible: function visible(t) {
                return pt(t) ? this.visual.visible() : (this.visual.visible(t), e);
            }, bounds: function bounds() {}, refresh: function refresh() {
                this.visual.redraw();
            }, position: function position(t) {
                this.options.x = t.x, this.options.y = t.y, this.visual.position(t);
            }, toString: function toString() {
                return this.options.id;
            }, serialize: function serialize() {
                var t = A({}, { options: this.options });return this.dataItem && (t.dataItem = "" + this.dataItem), t;
            }, _content: function _content(t) {
                var i, n, o;return t !== e && (i = this.options, z.Utils.isString(t) ? i.content.text = t : A(i.content, t), n = i.content, o = this._contentVisual, o ? this._updateContentVisual(n) : this._createContentVisual(n)), this.options.content.text;
            }, _createContentVisual: function _createContentVisual(t) {
                t.text && (this._contentVisual = new J(t), this._contentVisual._includeInBBox = !1, this.visual.append(this._contentVisual));
            }, _updateContentVisual: function _updateContentVisual(t) {
                this._contentVisual.redraw(t);
            }, _hitTest: function _hitTest(t) {
                var e = this.bounds();return this.visible() && e.contains(t) && this.options.enable;
            }, _template: function _template() {
                var t,
                    e,
                    i = this;i.options.content.template && (t = i.dataItem || {}, e = kendo.template(i.options.content.template, { paramName: "dataItem" }), i.options.content.text = e(t));
            }, _canSelect: function _canSelect() {
                return this.options.selectable !== !1;
            }, toJSON: function toJSON() {
                return { id: this.options.id };
            } }), w = N.extend({ init: function init(t, e) {
                this.options = A({}, this.options, e), this.connections = [], this.shape = t;
            }, options: { width: 7, height: 7, fill: { color: $t }, hover: {} }, position: function position() {
                return this.options.position ? this.options.position(this.shape) : this.shape.getPosition(this.options.name);
            }, toJSON: function toJSON() {
                return { shapeId: "" + this.shape, connector: this.options.name };
            } }), w.parse = function (t, e) {
            var i,
                n,
                o = e.split(":"),
                s = o[0],
                r = o[1] || zt;for (i = 0; i < t.shapes.length; i++) {
                if (n = t.shapes[i], n.options.id == s) return n.getConnector(r.trim());
            }
        }, x = y.extend({ init: function init(t, e) {
                var i = this;y.fn.init.call(i, t), this.diagram = e, this.updateOptionsFromModel(), t = i.options, i.connectors = [], i.type = t.type, i.createShapeVisual(), i.updateBounds(), i.content(i.content()), i._createConnectors();
            }, options: z.shapeDefaults(), _setOptionsFromModel: function _setOptionsFromModel(t) {
                var e = r(t || this.dataItem);this.options = A({}, this.options, e), this.redrawVisual();
            }, updateOptionsFromModel: function updateOptionsFromModel(t, e) {
                var i, n;this.diagram && this.diagram._isEditable && (i = r(t || this.dataItem), t && e ? P.inArray(e, ["x", "y", "width", "height"]) ? (n = this.bounds(), n[e] = t[e], this.bounds(n)) : (this.options.visual ? this._redrawVisual() : i.type && (this.options = A({}, this.options, i), this._redrawVisual()), this.options.content && (this._template(), this.content(this.options.content))) : this.options = A({}, this.options, i));
            }, _redrawVisual: function _redrawVisual() {
                this.visual.clear(), this._contentVisual = null, this.options.dataItem = this.dataItem, this.createShapeVisual(), this.updateBounds();
            }, redrawVisual: function redrawVisual() {
                this._redrawVisual(), this.options.content && (this._template(), this.content(this.options.content));
            }, updateModel: function updateModel(t) {
                var e,
                    i,
                    n = this.diagram;n && n._isEditable && (e = this._bounds, i = this.dataItem, i && (n._suspendModelRefresh(), mt(i.x) && e.x !== i.x && i.set("x", e.x), mt(i.y) && e.y !== i.y && i.set("y", e.y), mt(i.width) && e.width !== i.width && i.set("width", e.width), mt(i.height) && e.height !== i.height && i.set("height", e.height), this.dataItem = i, n._resumeModelRefresh(), t && n._syncShapeChanges()));
            }, updateBounds: function updateBounds() {
                var t = this.visual._measure(!0),
                    e = this.options;this.bounds(new X(e.x, e.y, t.width, t.height)), this._rotate(), this._alignContent();
            }, content: function content(t) {
                var e = this._content(t);return this._alignContent(), e;
            }, _alignContent: function _alignContent() {
                var t,
                    e,
                    i,
                    n,
                    o,
                    s = this.options.content || {},
                    r = this._contentVisual;r && s.align && (t = this.visual._measure(), e = new z.RectAlign(t), i = r.drawingElement.bbox(null), n = new X(0, 0, i.width(), i.height()), o = e.align(n, s.align), r.position(o.topLeft()));
            }, _createConnectors: function _createConnectors() {
                var t,
                    e,
                    i = this.options,
                    n = i.connectors.length,
                    o = i.connectorDefaults;for (e = 0; e < n; e++) {
                    t = new w(this, A({}, o, i.connectors[e])), this.connectors.push(t);
                }
            }, bounds: function bounds(t) {
                var e, i;if (t) {
                    if (yt(t)) switch (t) {case ne:
                            e = this._transformedBounds();break;case ie:
                            e = this._transformedBounds(), i = this.diagram._pan, e.x += i.x, e.y += i.y;break;case oe:
                            e = this._rotatedBounds();break;default:
                            e = this._bounds;} else this._setBounds(t), this._triggerBoundsChange(), this.diagram && this.diagram._layouting || this.refreshConnections();
                } else e = this._bounds;return e;
            }, _setBounds: function _setBounds(t) {
                var e = this.options,
                    i = t.topLeft(),
                    n = e.x = i.x,
                    o = e.y = i.y,
                    s = e.width = xt.max(t.width, e.minWidth),
                    r = e.height = xt.max(t.height, e.minHeight);this._bounds = new X(n, o, s, r), this.visual.redraw({ x: n, y: o, width: s, height: r });
            }, position: function position(t) {
                return t ? (this.bounds(new X(t.x, t.y, this._bounds.width, this._bounds.height)), e) : this._bounds.topLeft();
            }, clone: function clone() {
                var t = this.serialize();return t.options.id = z.randomId(), this.diagram && this.diagram._isEditable && mt(this.dataItem) && (t.options.dataItem = l(this.dataItem)), new x(t.options);
            }, select: function select(t) {
                var e,
                    i,
                    n = this.diagram;if (pt(t) && (t = !0), this._canSelect() && this.isSelected != t) return e = [], i = [], this.isSelected = t, this.isSelected ? (n._selectedItems.push(this), e.push(this)) : (ht.remove(n._selectedItems, this), i.push(this)), n._internalSelection || n._selectionChanged(e, i), !0;
            }, rotate: function rotate(t, i, n) {
                var o,
                    s,
                    r,
                    a,
                    h = this.visual.rotate();return t !== e && (n !== !1 && this.diagram && this.diagram.undoRedoService && t !== h.angle && this.diagram.undoRedoService.add(new z.RotateUnit(this.diagram._resizingAdorner, [this], [h.angle]), !1), o = this.bounds(), s = new $(o.width / 2, o.height / 2), i && (r = t - h.angle, a = o.center().rotate(i, 360 - r).minus(s), this._rotationOffset = this._rotationOffset.plus(a.minus(o.topLeft())), this.position(a)), this.visual.rotate(t, s), this.options.rotation.angle = t, this.diagram && this.diagram._connectorsAdorner && this.diagram._connectorsAdorner.refresh(), this.refreshConnections(), this.diagram && this.diagram.trigger(Vt, { item: this })), h;
            }, connections: function connections(t) {
                var e,
                    i,
                    n,
                    o,
                    s,
                    r,
                    a,
                    h = [];for (e = 0; e < this.connectors.length; e++) {
                    for (s = this.connectors[e], o = s.connections, i = 0, o; i < o.length; i++) {
                        n = o[i], "out" == t ? (r = n.source(), r.shape && r.shape == this && h.push(n)) : "in" == t ? (a = n.target(), a.shape && a.shape == this && h.push(n)) : h.push(n);
                    }
                }return h;
            }, refreshConnections: function refreshConnections() {
                t.each(this.connections(), function () {
                    this.refresh();
                });
            }, getConnector: function getConnector(t) {
                var e, i;if (!yt(t)) return t instanceof $ ? o(t, this.connectors) : this.connectors.length ? this.connectors[0] : null;for (t = t.toLocaleLowerCase(), e = 0; e < this.connectors.length; e++) {
                    if (i = this.connectors[e], i.options.name.toLocaleLowerCase() == t) return i;
                }
            }, getPosition: function getPosition(t) {
                var e = this.bounds(),
                    i = t.charAt(0).toLowerCase() + t.slice(1);return vt(e[i]) ? this._transformPoint(e[i]()) : e.center();
            }, redraw: function redraw(t) {
                var e, i;t && (e = this.options, this.shapeVisual.redraw(this._visualOptions(t)), this._diffNumericOptions(t, [re, ae, he, ce]) && (this.bounds(new X(e.x, e.y, e.width, e.height)), i = !0), t.connectors && (e.connectors = t.connectors, this._updateConnectors()), e = A(e, t), (t.rotation || i) && this._rotate(), e.content && this.content(e.content));
            }, _updateConnectors: function _updateConnectors() {
                var t,
                    e,
                    i,
                    n,
                    o = this.connections();for (this.connectors = [], this._createConnectors(), n = 0; n < o.length; n++) {
                    t = o[n], e = t.source(), i = t.target(), e.shape && e.shape === this ? t.source(this.getConnector(e.options.name) || null) : i.shape && i.shape === this && t.target(this.getConnector(i.options.name) || null), t.updateModel();
                }
            }, _diffNumericOptions: z.diffNumericOptions, _visualOptions: function _visualOptions(t) {
                return { data: t.path, source: t.source, hover: t.hover, fill: t.fill, stroke: t.stroke };
            }, _triggerBoundsChange: function _triggerBoundsChange() {
                this.diagram && this.diagram.trigger(St, { item: this, bounds: this._bounds.clone() });
            }, _transformPoint: function _transformPoint(t) {
                var e = this.rotate(),
                    i = this.bounds(),
                    n = i.topLeft();return e.angle && t.rotate(e.center().plus(n), 360 - e.angle), t;
            }, _transformedBounds: function _transformedBounds() {
                var t = this.bounds(),
                    e = t.topLeft(),
                    i = t.bottomRight();return X.fromPoints(this.diagram.modelToView(e), this.diagram.modelToView(i));
            }, _rotatedBounds: function _rotatedBounds() {
                var t = this.bounds().rotatedBounds(this.rotate().angle),
                    e = t.topLeft(),
                    i = t.bottomRight();return X.fromPoints(e, i);
            }, _rotate: function _rotate() {
                var t = this.options.rotation;t && t.angle && this.rotate(t.angle), this._rotationOffset = new $();
            }, _hover: function _hover(t) {
                var e = this.options,
                    i = e.hover,
                    n = e.stroke,
                    o = e.fill;t && gt(i.stroke) && (n = A({}, n, i.stroke)), t && gt(i.fill) && (o = i.fill), this.shapeVisual.redraw({ stroke: n, fill: o }), e.editable && e.editable.connect && this.diagram._showConnectors(this, t);
            }, _hitTest: function _hitTest(t) {
                if (this.visible()) {
                    var e,
                        i = this.bounds(),
                        n = this.rotate().angle;if (t.isEmpty && !t.isEmpty()) return tt.rects(t, i, n ? n : 0);if (e = t.clone().rotate(i.center(), n), i.contains(e)) return this;
                }
            }, toJSON: function toJSON() {
                return { shapeId: this.options.id };
            }, createShapeVisual: function createShapeVisual() {
                var t,
                    e = this.options,
                    i = this._visualOptions(e),
                    n = e.visual,
                    o = (e.type + "").toLocaleLowerCase();i.width = e.width, i.height = e.height, vt(n) ? t = n.call(this, e) : i.data ? (t = new j(i), m(t)) : t = "rectangle" == o ? new q(i) : "circle" == o ? new K(i) : "text" == o ? new J(i) : "image" == o ? new Z(i) : new j(i), this.shapeVisual = t, this.visual.append(this.shapeVisual);
            } }), b = y.extend({ init: function init(t, e, i) {
                var n = this;y.fn.init.call(n, i), this.updateOptionsFromModel(), this._initRouter(), n.path = new z.Polyline(n.options), n.path.fill(se), n.visual.append(n.path), n._sourcePoint = n._targetPoint = new $(), n._setSource(t), n._setTarget(e), n.content(n.options.content), n.definers = [], mt(i) && i.points && n.points(i.points);
            }, options: { hover: { stroke: {} }, startCap: qt, endCap: qt, points: [], selectable: !0, fromConnector: zt, toConenctor: zt }, _setOptionsFromModel: function _setOptionsFromModel(t) {
                this.updateOptionsFromModel(t || this.dataItem);
            }, updateOptionsFromModel: function updateOptionsFromModel(t) {
                var e, i, n, o;this.diagram && this.diagram._isEditable && (e = this.diagram._dataMap, i = a(t || this.dataItem), t ? (mt(i.from) ? (n = e[i.from], n && mt(i.fromConnector) && (n = n.getConnector(i.fromConnector)), this.source(n)) : mt(i.fromX) && mt(i.fromY) && this.source(new $(i.fromX, i.fromY)), mt(i.to) ? (o = e[i.to], o && mt(i.toConnector) && (o = o.getConnector(i.toConnector)), this.target(o)) : mt(i.toX) && mt(i.toY) && this.target(new $(i.toX, i.toY)), mt(i.type) && this.type() !== i.type && (this.points([]), this.type(i.type)), this.dataItem = t, this._template(), this.redraw(this.options)) : this.options = A({}, i, this.options));
            }, updateModel: function updateModel(t) {
                if (this.diagram && this.diagram._isEditable && this.diagram.connectionsDataSource) {
                    var e = this.diagram.connectionsDataSource.getByUid(this.dataItem.uid);e && (this.diagram._suspendModelRefresh(), mt(this.options.fromX) && null !== this.options.fromX ? (p("from", e), p("fromConnector", e), e.set("fromX", this.options.fromX), e.set("fromY", this.options.fromY)) : (e.set("from", this.options.from), mt(e.fromConnector) && e.set("fromConnector", this.sourceConnector ? this.sourceConnector.options.name : null), p("fromX", e), p("fromY", e)), mt(this.options.toX) && null !== this.options.toX ? (p("to", e), p("toConnector", e), e.set("toX", this.options.toX), e.set("toY", this.options.toY)) : (e.set("to", this.options.to), mt(e.toConnector) && e.set("toConnector", this.targetConnector ? this.targetConnector.options.name : null), p("toX", e), p("toY", e)), mt(this.options.type) && mt(e.type) && e.set("type", this.options.type), this.dataItem = e, this.diagram._resumeModelRefresh(), t && this.diagram._syncConnectionChanges());
                }
            }, sourcePoint: function sourcePoint() {
                return this._resolvedSourceConnector ? this._resolvedSourceConnector.position() : this._sourcePoint;
            }, _setSource: function _setSource(t) {
                var i,
                    n = t instanceof x,
                    o = this.options.fromConnector || zt;n && !t.getConnector(o) || (t !== e && (this.from = t), this._removeFromSourceConnector(), null === t ? this.sourceConnector && (this._sourcePoint = (this._resolvedSourceConnector || this.sourceConnector).position(), this._clearSourceConnector(), this._setFromOptions(null, this._sourcePoint)) : t instanceof w ? (i = t.shape.dataItem, i && this._setFromOptions(i.id), this.sourceConnector = t, this.sourceConnector.connections.push(this)) : t instanceof $ ? (this._setFromOptions(null, t), this._sourcePoint = t, this.sourceConnector && this._clearSourceConnector()) : n && (i = t.dataItem, i && this._setFromOptions(i.id), this.sourceConnector = t.getConnector(o), this.sourceConnector.connections.push(this)));
            }, source: function source(t, e) {
                return gt(t) && (e && this.diagram && this.diagram.undoRedoService.addCompositeItem(new z.ConnectionEditUnit(this, t)), this._setSource(t), this.refresh()), this.sourceConnector ? this.sourceConnector : this._sourcePoint;
            }, _setFromOptions: function _setFromOptions(t, e) {
                this.options.from = t, e ? (this.options.fromX = e.x, this.options.fromY = e.y) : (this.options.fromX = null, this.options.fromY = null);
            }, sourceDefiner: function sourceDefiner(t) {
                if (!t) return this._sourceDefiner || (this._sourceDefiner = new z.PathDefiner(this.sourcePoint(), null, null)), this._sourceDefiner;if (!(t instanceof z.PathDefiner)) throw "The sourceDefiner needs to be a PathDefiner.";t.left = null, this._sourceDefiner = t, this.source(t.point);
            }, targetPoint: function targetPoint() {
                return this._resolvedTargetConnector ? this._resolvedTargetConnector.position() : this._targetPoint;
            }, _setTarget: function _setTarget(t) {
                var i,
                    n = t instanceof x,
                    o = this.options.toConnector || zt;n && !t.getConnector(o) || (t !== e && (this.to = t), this._removeFromTargetConnector(), null === t ? this.targetConnector && (this._targetPoint = (this._resolvedTargetConnector || this.targetConnector).position(), this._clearTargetConnector(), this._setToOptions(null, this._targetPoint)) : t instanceof w ? (i = t.shape.dataItem, i && this._setToOptions(i.id), this.targetConnector = t, this.targetConnector.connections.push(this)) : t instanceof $ ? (this._setToOptions(null, t), this._targetPoint = t, this.targetConnector && this._clearTargetConnector()) : n && (i = t.dataItem, i && this._setToOptions(i.id), this.targetConnector = t.getConnector(o), this.targetConnector.connections.push(this)));
            }, target: function target(t, i) {
                return gt(t) && (i && this.diagram && this.diagram.undoRedoService.addCompositeItem(new z.ConnectionEditUnit(this, e, t)), this._setTarget(t), this.refresh()), this.targetConnector ? this.targetConnector : this._targetPoint;
            }, _setToOptions: function _setToOptions(t, e) {
                this.options.to = t, e ? (this.options.toX = e.x, this.options.toY = e.y) : (this.options.toX = null, this.options.toY = null);
            }, targetDefiner: function targetDefiner(t) {
                if (!t) return this._targetDefiner || (this._targetDefiner = new z.PathDefiner(this.targetPoint(), null, null)), this._targetDefiner;if (!(t instanceof z.PathDefiner)) throw "The sourceDefiner needs to be a PathDefiner.";t.right = null, this._targetDefiner = t, this.target(t.point);
            }, _updateConnectors: function _updateConnectors() {
                this._updateConnector(this.source(), "source"), this._updateConnector(this.target(), "target");
            }, _updateConnector: function _updateConnector(t, e) {
                var i,
                    n,
                    o,
                    s,
                    r = this,
                    a = r.diagram;t instanceof w && !a.getShapeById(t.shape.id) ? (i = t.shape.dataItem, n = t.options.name, o = function o() {
                    var o = a._dataMap[i.id];t = o.getConnector(n), r[e](t, !1), r.updateModel();
                }, a._dataMap[i.id] ? o() : (s = a._inactiveShapeItems.getByUid(i.uid), s && a._deferredConnectionUpdates.push(s.onActivate(o)))) : r[e](t, !1);
            }, content: function content(t) {
                var e = this._content(t);return mt(t) && this._alignContent(), e;
            }, _createContentVisual: function _createContentVisual(t) {
                var e;return vt(t.visual) ? e = t.visual.call(this, t) : t.text && (e = new J(t)), e && (this._contentVisual = e, e._includeInBBox = !1, this.visual.append(e)), e;
            }, _updateContentVisual: function _updateContentVisual(t) {
                vt(t.visual) ? (this.visual.remove(this._contentVisual), this._createContentVisual(t)) : this._contentVisual.redraw(t);
            }, _alignContent: function _alignContent() {
                var t, e, i, n, o, s, r, a, h, c, d, l, u, f, p, g;if (this._contentVisual) {
                    for (t = pe, e = this.allPoints(), i = xt.floor(e.length / 2), n = i - 1; n > 0 && e[n].equals(e[i]);) {
                        n--, i++;
                    }o = e[i], s = e[n], r = this._contentVisual._measure(), a = r.width, h = r.height, c = e.length % 2 === 0, d = s.distanceTo(o), c && e.length > 2 && d > 0 && (s.y === o.y && d < a || s.x === o.x && d < h) && (c = !1, t = 0), c ? (u = kendo.util.deg(xt.atan2(o.y - s.y, o.x - s.x)), l = new $((o.x - s.x) / 2 + s.x, (o.y - s.y) / 2 + s.y), 90 === xt.abs(u) ? (l.x += t, l.y -= h / 2) : u % 180 === 0 ? (l.x -= a / 2, l.y -= h + t) : u < -90 || 0 < u && u < 90 ? l.y -= h : (u < 0 || u > 90) && (l.x -= a, l.y -= h)) : (f = xt.floor(e.length / 2), l = e[f].clone(), s = e[f - 1], o = e[f + 1], p = s.x <= l.x && o.x <= l.x ? t : -r.width - t, g = s.y <= l.y && o.y <= l.y ? t : -r.height - t, l.x += p, l.y += g), this._contentVisual.position(l);
                }
            }, select: function select(t) {
                var i,
                    n,
                    o = this.diagram;if (this._canSelect() && this.isSelected !== t) return this.isSelected = t, i = [], n = [], this.isSelected ? (this.adorner = new et(this, this.options.selection), o._adorn(this.adorner, !0), o._selectedItems.push(this), i.push(this)) : this.adorner && (o._adorn(this.adorner, !1), ht.remove(o._selectedItems, this), this.adorner = e, n.push(this)), this.adorner && this.adorner.refresh(), o._internalSelection || o._selectionChanged(i, n), !0;
            }, bounds: function bounds(t) {
                return !t || yt(t) ? this._bounds : (this._bounds = t, e);
            }, type: function type(t) {
                var i = this.options;return t ? (t !== i.type && (i.type = t, this._initRouter(), this.refresh()), e) : i.type;
            }, _initRouter: function _initRouter() {
                var t = (this.options.type || "").toLowerCase();this._router = t == Ct ? new ft(this) : new ut(this);
            }, points: function points(t) {
                var e, i, n, o;if (!t) {
                    if (n = [], gt(this.definers)) for (o = 0; o < this.definers.length; o++) {
                        n.push(this.definers[o].point);
                    }return n;
                }for (this.definers = [], e = 0; e < t.length; e++) {
                    if (i = t[e], i instanceof z.Point) this.definers.push(new z.PathDefiner(i));else {
                        if (!i.hasOwnProperty("x") || !i.hasOwnProperty("y")) throw "A Connection point needs to be a Point or an object with x and y properties.";this.definers.push(new z.PathDefiner(new $(i.x, i.y)));
                    }
                }
            }, allPoints: function allPoints() {
                var t,
                    e = [this.sourcePoint()];if (this.definers) for (t = 0; t < this.definers.length; t++) {
                    e.push(this.definers[t].point);
                }return e.push(this.targetPoint()), e;
            }, refresh: function refresh() {
                this._resolveConnectors(), this._refreshPath(), this._alignContent(), this.adorner && this.adorner.refresh();
            }, _resolveConnectors: function _resolveConnectors() {
                var t,
                    e,
                    i,
                    s,
                    r = this,
                    a = r.source(),
                    h = r.target();a instanceof $ ? t = a : a instanceof w && (i = n(a) ? a.shape.connectors : [a]), h instanceof $ ? e = h : h instanceof w && (s = n(h) ? h.shape.connectors : [h]), t ? s && (r._resolvedTargetConnector = o(t, s)) : i && (e ? r._resolvedSourceConnector = o(e, i) : s && this._resolveAutoConnectors(i, s));
            }, _resolveAutoConnectors: function _resolveAutoConnectors(t, e) {
                var i,
                    o,
                    s,
                    r,
                    a,
                    h,
                    c,
                    d,
                    l,
                    u,
                    f,
                    p = Ot,
                    g = Ot;for (l = 0; l < t.length; l++) {
                    if (c = t[l], !n(c)) for (s = c.position(), u = 0; u < e.length; u++) {
                        d = e[u], n(d) || (r = d.position(), f = xt.round(s.distanceTo(r)), f < p && this.diagram && this._testRoutePoints(s, r, c, d) && (p = f, i = c, o = d), f < g && (a = c, h = d, g = f));
                    }
                }i && (a = i, h = o), this._resolvedSourceConnector = a, this._resolvedTargetConnector = h;
            }, _testRoutePoints: function _testRoutePoints(t, e, i, n) {
                var o,
                    s,
                    r,
                    a,
                    h,
                    c = this._router,
                    d = !0;if (c instanceof ft) for (o = c.routePoints(t, e, i, n), o.unshift(t), o.push(e), h = 1; h < o.length; h++) {
                    if (s = o[h - 1], r = o[h], a = new X(xt.min(s.x, r.x), xt.min(s.y, r.y), xt.abs(s.x - r.x), xt.abs(s.y - r.y)), a.width > 0 && (a.x++, a.width -= 2), a.height > 0 && (a.y++, a.height -= 2), !a.isEmpty() && this.diagram._shapesQuadTree.hitTestRect(a)) {
                        d = !1;break;
                    }
                }return d;
            }, redraw: function redraw(t) {
                if (t) {
                    this.options = A({}, this.options, t);var e = this.options.points;mt(e) && e.length > 0 && (this.points(e), this._refreshPath()), (t && t.content || t.text) && this.content(t.content), this.path.redraw({ fill: t.fill, stroke: t.stroke, startCap: t.startCap, endCap: t.endCap });
                }
            }, clone: function clone() {
                var t = this.serialize();return this.diagram && this.diagram._isEditable && mt(this.dataItem) && (t.options.dataItem = l(this.dataItem)), new b(this.from, this.to, t.options);
            }, serialize: function serialize() {
                var t = this.from.toJSON ? this.from.toJSON : "" + this.from,
                    e = this.to.toJSON ? this.to.toJSON : "" + this.to,
                    i = A({}, { options: this.options, from: t, to: e });return mt(this.dataItem) && (i.dataItem = "" + this.dataItem), i.options.points = this.points(), i;
            }, _hitTest: function _hitTest(t) {
                if (this.visible()) {
                    var e = new $(t.x, t.y),
                        i = this.sourcePoint(),
                        n = this.targetPoint();if (t.isEmpty && !t.isEmpty() && t.contains(i) && t.contains(n)) return this;if (this._router.hitTest(e)) return this;
                }
            }, _hover: function _hover(t) {
                var e = (this.options.stroke || {}).color;t && gt(this.options.hover.stroke.color) && (e = this.options.hover.stroke.color), this.path.redraw({ stroke: { color: e } });
            }, _refreshPath: function _refreshPath() {
                mt(this.path) && (this._drawPath(), this.bounds(this._router.getBounds()));
            }, _drawPath: function _drawPath() {
                var t, e, i;this._router && this._router.route(), t = this.sourcePoint(), e = this.targetPoint(), i = this.points(), this.path.redraw({ points: [t].concat(i, [e]) });
            }, _clearSourceConnector: function _clearSourceConnector() {
                this.sourceConnector = e, this._resolvedSourceConnector = e;
            }, _clearTargetConnector: function _clearTargetConnector() {
                this.targetConnector = e, this._resolvedTargetConnector = e;
            }, _removeFromSourceConnector: function _removeFromSourceConnector() {
                this.sourceConnector && ht.remove(this.sourceConnector.connections, this);
            }, _removeFromTargetConnector: function _removeFromTargetConnector() {
                this.targetConnector && ht.remove(this.targetConnector.connections, this);
            }, toJSON: function toJSON() {
                var t,
                    e,
                    i,
                    n = this;return n.from && n.from.toJSON ? t = n.from.toJSON() : (i = n._sourcePoint, t = { x: i.x, y: i.y }), n.to && n.to.toJSON ? e = n.to.toJSON() : (i = n._targetPoint, e = { x: i.x, y: i.y }), { from: t, to: e };
            } }), C = B.extend({ init: function init(t, e) {
                var i = this;kendo.destroy(t), B.fn.init.call(i, t, e), i._initTheme(), i._initElements(), i._extendLayoutOptions(i.options), i._initDefaults(e), i._interactionDefaults(), i._initCanvas(), i.mainLayer = new G({ id: "main-layer" }), i.canvas.append(i.mainLayer), i._shapesQuadTree = new I(i), i._pan = new $(), i._adorners = [], i.adornerLayer = new G({ id: "adorner-layer" }), i.canvas.append(i.adornerLayer), i._createHandlers(), i._initialize(), i._resizingAdorner = new st(i, { editable: i.options.editable }), i._connectorsAdorner = new rt(i), i._adorn(i._resizingAdorner, !0), i._adorn(i._connectorsAdorner, !0), i.selector = new ot(i), i._clipboard = [], i.pauseMouseHandlers = !1, i._fetchFreshData(), i._createGlobalToolBar(), i._createOptionElements(), i.zoom(i.options.zoom), i.canvas.draw();
            }, options: { name: "Diagram", theme: "default", layout: "", zoomRate: .1, zoom: 1, zoomMin: 0, zoomMax: 2, dataSource: {}, draggable: !0, template: "", autoBind: !0, editable: { rotate: {}, resize: {}, text: !0, tools: [], drag: { snap: { size: 10, angle: 10 } }, remove: !0 }, pannable: {}, selectable: { key: "none" }, tooltip: { enabled: !0, format: "{0}" }, copy: { enabled: !0, offsetX: 20, offsetY: 20 }, shapeDefaults: z.shapeDefaults({ undoable: !0 }), connectionDefaults: { editable: { tools: [] }, type: Ct }, shapes: [], connections: [] }, events: [Gt, Ft, Ht, Ut, Vt, St, kt, Tt, Pt, Lt, "toolBarClick", "save", "cancel", "edit", "remove", "add", "dataBound", It, Mt, Dt], items: function items() {
                return t();
            }, _createGlobalToolBar: function _createGlobalToolBar() {
                var t,
                    e = this.options.editable;e && (t = e.tools, !this._isEditable || t === !1 || t && 0 !== t.length || (t = ["createShape", "undo", "redo", "rotateClockwise", "rotateAnticlockwise"]), t && t.length && (this.toolBar = new S(this, { tools: t || {}, click: R(this._toolBarClick, this), modal: !1 }), this.toolBar.element.css({ textAlign: "left" }), this.element.prepend(this.toolBar.element), this._resize()));
            }, createShape: function createShape() {
                var t, e, i, n, o, s;(this.editor && this.editor.end() || !this.editor) && (t = this.dataSource, e = t.view() || [], i = e.length, n = f(t, {}), o = this._createShape(n, {}), this.trigger("add", { shape: o }) || (t.insert(i, n), s = this._inactiveShapeItems.getByUid(n.uid), s.element = o, this.edit(o)));
            }, _createShape: function _createShape(t, e) {
                e = A({}, this.options.shapeDefaults, e), e.dataItem = t;var i = new x(e, this);return i;
            }, createConnection: function createConnection() {
                var t, e, i, n, o;(this.editor && this.editor.end() || !this.editor) && (t = this.connectionsDataSource, e = t.view() || [], i = e.length, n = f(t, {}), o = this._createConnection(n), this.trigger("add", { connection: o }) || (this._connectionsDataMap[n.uid] = o, t.insert(i, n), this.addConnection(o, !1), this.edit(o)));
            }, _createConnection: function _createConnection(t, e, i) {
                var n,
                    o = A({}, this.options.connectionDefaults);return o.dataItem = t, n = new b(e || new $(), i || new $(), o);
            }, editModel: function editModel(t, e) {
                var i, n, o, s;if (this.cancelEdit(), o = this.options.editable, "shape" == e) i = o.shapeEditors, n = o.shapeTemplate;else {
                    if ("connection" != e) return;s = R(h, this), i = A({}, { from: s, to: s }, o.connectionEditors), n = o.connectionTemplate;
                }this.editor = new T(this.element, { update: R(this._update, this), cancel: R(this._cancel, this), model: t, type: e, target: this, editors: i, template: n }), this.trigger("edit", this._editArgs());
            }, edit: function edit(t) {
                if (t.dataItem) {
                    var e = t instanceof x ? "shape" : "connection";this.editModel(t.dataItem, e);
                }
            }, cancelEdit: function cancelEdit() {
                this.editor && (this._getEditDataSource().cancelChanges(this.editor.model), this._destroyEditor());
            }, saveEdit: function saveEdit() {
                this.editor && this.editor.end() && !this.trigger("save", this._editArgs()) && this._getEditDataSource().sync();
            }, _update: function _update() {
                this.editor && this.editor.end() && !this.trigger("save", this._editArgs()) && (this._getEditDataSource().sync(), this._destroyEditor());
            }, _cancel: function _cancel() {
                var t, e;this.editor && !this.trigger("cancel", this._editArgs()) && (t = this.editor.model, this._getEditDataSource().cancelChanges(t), e = this._connectionsDataMap[t.uid] || this._dataMap[t.id], e && e._setOptionsFromModel(t), this._destroyEditor());
            }, _getEditDataSource: function _getEditDataSource() {
                return "shape" === this.editor.options.type ? this.dataSource : this.connectionsDataSource;
            }, _editArgs: function _editArgs() {
                var t = { container: this.editor.wrapper };return t[this.editor.options.type] = this.editor.model, t;
            }, _destroyEditor: function _destroyEditor() {
                this.editor && (this.editor.close(), this.editor = null);
            }, _initElements: function _initElements() {
                this.wrapper = this.element.empty().css("position", "relative").attr("tabindex", 0).addClass("k-widget k-diagram"), this.scrollable = t("<div />").appendTo(this.element);
            }, _initDefaults: function _initDefaults(t) {
                var e = this.options,
                    i = e.editable,
                    n = e.shapeDefaults,
                    o = e.connectionDefaults,
                    s = (t || {}).shapeDefaults;i === !1 ? (n.editable = !1, o.editable = !1) : (g(i, n.editable, ["drag", "remove", "connect"]), g(i, o.editable, ["drag", "remove"])), s && s.connectors && (e.shapeDefaults.connectors = s.connectors);
            }, _interactionDefaults: function _interactionDefaults() {
                var t = this.options,
                    e = t.selectable,
                    i = t.pannable,
                    n = kendo.support.mobileOS;e && !mt(e.multiple) && (t.selectable = A({ multiple: !n }, t.selectable)), i && !mt(i.key) && (t.pannable = A({ key: n ? "none" : "ctrl" }, t.pannable));
            }, _initCanvas: function _initCanvas() {
                var e = t("<div class='k-layer'></div>").appendTo(this.scrollable)[0],
                    i = this.viewport();this.canvas = new F(e, { width: i.width || Kt, height: i.height || Wt });
            }, _createHandlers: function _createHandlers() {
                var t = this,
                    e = t.element;e.on(de, R(t._wheel, t)).on("keydown" + bt, R(t._keydown, t)), t._userEvents = new kendo.UserEvents(this.scrollable, { multiTouch: !0, fastTap: !0, tap: R(t._tap, t), start: R(t._dragStart, t), move: R(t._drag, t), end: R(t._dragEnd, t), gesturestart: R(t._gestureStart, t), gesturechange: R(t._gestureChange, t), gestureend: R(t._gestureEnd, t) }), t.toolService = new nt(t), this.scrollable.on("mouseover" + bt, R(t._mouseover, t)).on("mouseout" + bt, R(t._mouseout, t)).on("mousemove" + bt, R(t._mouseMove, t)).on("mousedown" + bt, R(t._mouseDown, t)).on("mouseup" + bt, R(t._mouseUp, t)), this._syncHandler = R(t._syncChanges, t), t._resizeHandler = R(t.resize, t, !1), kendo.onResize(t._resizeHandler), this.bind(Ft, R(t._destroyToolBar, t)), this.bind(Ht, R(t._destroyToolBar, t));
            }, _dragStart: function _dragStart(t) {
                var e, i;this._pauseMouseHandlers = !0, e = this._eventPositions(t, !0), i = t.event, this.toolService.start(e, this._meta(i)) && (this._destroyToolBar(), i.preventDefault());
            }, _drag: function _drag(t) {
                var e = this._eventPositions(t),
                    i = t.event;this.toolService.move(e, this._meta(i)) && i.preventDefault();
            }, _dragEnd: function _dragEnd(t) {
                var e, i;this._pauseMouseHandlers = !1, e = this._eventPositions(t), i = t.event, this.toolService.end(e, this._meta(i)) && (this._createToolBar(), i.preventDefault());
            }, _mouseMove: function _mouseMove(t) {
                if (!this._pauseMouseHandlers) {
                    var e = this._eventPositions(t);this.toolService._updateHoveredItem(e), this.toolService._updateCursor(e);
                }
            }, _mouseDown: function _mouseDown() {
                this._pauseMouseHandlers = !0;
            }, _mouseUp: function _mouseUp() {
                this._pauseMouseHandlers = !1;
            }, _tap: function _tap(t) {
                var e,
                    i,
                    n,
                    o = this.toolService,
                    s = this.options.selectable,
                    r = this._eventPositions(t),
                    a = this.focus();o._updateHoveredItem(r), o.hoveredItem ? (e = o.hoveredItem, this.trigger("click", { item: e, point: r }), s && e.options.selectable !== !1 && (i = s.multiple !== !1, n = kendo.support.mobileOS || this._meta(t.event).ctrlKey, e.isSelected ? n ? (this._destroyToolBar(), e.select(!1)) : this._createToolBar(a) : (this._destroyToolBar(), this.select(e, { addToSelection: i && n }), this._createToolBar(a)))) : s && (this._destroyToolBar(), this.deselect());
            }, _keydown: function _keydown(t) {
                this.toolService.keyDown(t.keyCode, this._meta(t)) && t.preventDefault();
            }, _wheel: function _wheel(t) {
                var e = i(t),
                    n = this._eventPositions(t),
                    o = A(this._meta(t), { delta: e });this.toolService.wheel(n, o) && t.preventDefault();
            }, _meta: function _meta(t) {
                return { ctrlKey: t.ctrlKey, metaKey: t.metaKey, altKey: t.altKey, shiftKey: t.shiftKey, type: t.type };
            }, _eventPositions: function _eventPositions(t, e) {
                var i, n;return t.touch ? (n = e ? "startLocation" : "location", i = new $(t.x[n], t.y[n])) : i = new $(t.pageX, t.pageY), this.documentToModel(i);
            }, _gestureStart: function _gestureStart(t) {
                var e, i;this._destroyToolBar(), this.scroller.disable(), e = this.documentToModel(new $(t.center.x, t.center.y)), i = { point: e, zoom: this.zoom() }, this.trigger(Ft, i) || (this._gesture = t, this._initialCenter = e);
            }, _gestureChange: function _gestureChange(t) {
                var e,
                    i,
                    n = this._gesture,
                    o = this._initialCenter,
                    s = this.documentToView(new $(t.center.x, t.center.y)),
                    r = t.distance / n.distance,
                    a = this._zoom,
                    h = !1;xt.abs(r - 1) >= le && (this._zoom = a = this._getValidZoom(a * r), this.options.zoom = a, this._gesture = t, h = !0), e = o.times(a), i = s.minus(e), (h || this._pan.distanceTo(i) >= ue) && (this._panTransform(i), this._updateAdorners()), t.preventDefault();
            }, _gestureEnd: function _gestureEnd() {
                this.options.pannable !== !1 && this.scroller.enable(), this.trigger(Gt, { point: this._initialCenter, zoom: this.zoom() });
            }, _resize: function _resize() {
                var t = this.viewport();this.canvas && this.canvas.size(t), this.scrollable && this.toolBar && this.scrollable.height(t.height);
            }, _mouseover: function _mouseover(t) {
                var e = t.target._kendoNode;e && e.srcElement._hover && e.srcElement._hover(!0, e.srcElement);
            }, _mouseout: function _mouseout(t) {
                var e = t.target._kendoNode;e && e.srcElement._hover && e.srcElement._hover(!1, e.srcElement);
            }, _initTheme: function _initTheme() {
                var t = this,
                    e = P.ui.themes || {},
                    i = ((t.options || {}).theme || "").toLowerCase(),
                    n = (e[i] || {}).diagram;t.options = A({}, n, t.options), t.options.editable === !0 && A(t.options, { editable: (n || {}).editable });
            }, _createOptionElements: function _createOptionElements() {
                var t = this.options,
                    e = t.shapes.length;e && this._createShapes(), t.connections.length && this._createConnections(), e && t.layout && this.layout(t.layout);
            }, _createShapes: function _createShapes() {
                var t,
                    e,
                    i = this,
                    n = i.options,
                    o = n.shapes;for (e = 0; e < o.length; e++) {
                    t = o[e], i.addShape(t);
                }
            }, _createConnections: function _createConnections() {
                var t,
                    e,
                    i,
                    n,
                    o = this,
                    s = o.options,
                    r = s.connectionDefaults,
                    a = s.connections;for (n = 0; n < a.length; n++) {
                    t = a[n], e = o._findConnectionTarget(t.from), i = o._findConnectionTarget(t.to), o.connect(e, i, A({}, r, t));
                }
            }, _findConnectionTarget: function _findConnectionTarget(t) {
                var e, i, n;return t = t || {}, e = this, i = yt(t) ? t : t.shapeId || t.id, i ? (n = e.getShapeById(i), t.connector && (n = n.getConnector(t.connector))) : n = new $(t.x || 0, t.y || 0), n;
            }, destroy: function destroy() {
                var t = this;B.fn.destroy.call(t), this._userEvents && this._userEvents.destroy(), kendo.unbindResize(t._resizeHandler), t.clear(), t.element.off(bt), t.scroller.wrapper.off(bt), t.canvas.destroy(!0), t.canvas = e, t._destroyEditor(), t.destroyScroller(), t._destroyGlobalToolBar(), t._destroyToolBar();
            }, destroyScroller: function destroyScroller() {
                var t = this.scroller;t && (t.destroy(), t.element.remove(), this.scroller = null);
            }, save: function save() {
                var t,
                    e,
                    i,
                    n = { shapes: [], connections: [] };for (t = 0; t < this.shapes.length; t++) {
                    i = this.shapes[t], i.options.serializable && n.shapes.push(i.options);
                }for (t = 0; t < this.connections.length; t++) {
                    e = this.connections[t], n.connections.push(A({}, e.options, e.toJSON()));
                }return n;
            }, focus: function focus() {
                if (!this.element.is(kendo._activeElement())) {
                    var t,
                        e = this.element,
                        i = e[0],
                        n = [],
                        o = [],
                        s = document.documentElement;do {
                        i = i.parentNode, i.scrollHeight > i.clientHeight && (n.push(i), o.push(i.scrollTop));
                    } while (i != s);for (e.focus(), t = 0; t < n.length; t++) {
                        n[t].scrollTop = o[t];
                    }return !0;
                }
            }, load: function load(t) {
                this.clear(), this.setOptions(t), this._createShapes(), this._createConnections();
            }, setOptions: function setOptions(t) {
                A(this.options, t);
            }, clear: function clear() {
                var t = this;t.select(!1), t.mainLayer.clear(), t._shapesQuadTree.clear(), t._initialize();
            }, connect: function connect(t, e, i) {
                var n, o;return this.connectionsDataSource && this._isEditable ? (o = this.connectionsDataSource.add({}), n = this._connectionsDataMap[o.uid], n.source(t), n.target(e), n.redraw(i), n.updateModel()) : (n = new b(t, e, A({}, this.options.connectionDefaults, i)), this.addConnection(n)), n;
            }, connected: function connected(t, e) {
                var i, n;for (i = 0; i < this.connections.length; i++) {
                    if (n = this.connections[i], n.from == t && n.to == e) return !0;
                }return !1;
            }, addConnection: function addConnection(t, e) {
                return e !== !1 && this.undoRedoService.add(new z.AddConnectionUnit(t, this), !1), t.diagram = this, t._setOptionsFromModel(), t.refresh(), this.mainLayer.append(t.visual), this.connections.push(t), this.trigger(kt, { added: [t], removed: [] }), t;
            }, _addConnection: function _addConnection(t, e) {
                var i,
                    n = this.connectionsDataSource;if (n && this._isEditable) {
                    if (i = f(n, l(t.dataItem)), t.dataItem = i, t.updateModel(), !this.trigger("add", { connection: t })) return this._connectionsDataMap[i.uid] = t, n.add(i), this.addConnection(t, e), t._updateConnectors(), t;
                } else if (!this.trigger("add", { connection: t })) return this.addConnection(t, e), t._updateConnectors(), t;
            }, addShape: function addShape(t, e) {
                var i,
                    n = this.options.shapeDefaults;if (t instanceof x) i = t;else {
                    if (t instanceof kendo.Class) return;n = A({}, n, t || {}), i = new x(n, this);
                }return e !== !1 && this.undoRedoService.add(new z.AddShapeUnit(i, this), !1), this.shapes.push(i), i.diagram !== this && (this._shapesQuadTree.insert(i), i.diagram = this), this.mainLayer.append(i.visual), this.trigger(kt, { added: [i], removed: [] }), i;
            }, _addShape: function _addShape(t, e) {
                var i,
                    n,
                    o = this,
                    s = o.dataSource;if (s && this._isEditable) {
                    if (i = f(s, l(t.dataItem)), t.dataItem = i, t.updateModel(), !this.trigger("add", { shape: t })) return this.dataSource.add(i), n = this._inactiveShapeItems.getByUid(i.uid), n.element = t, n.undoable = e, t;
                } else if (!this.trigger("add", { shape: t })) return this.addShape(t, e);
            }, remove: function remove(t, e) {
                var i, n, o, s;for (t = _t(t) ? t.slice(0) : [t], i = u(t), n = i.shapes, o = i.connections, mt(e) || (e = !0), e && this.undoRedoService.begin(), this._suspendModelRefresh(), s = n.length - 1; s >= 0; s--) {
                    this._removeItem(n[s], e, o);
                }for (s = o.length - 1; s >= 0; s--) {
                    this._removeItem(o[s], e);
                }this._resumeModelRefresh(), e && this.undoRedoService.commit(!1), this.trigger(kt, { added: [], removed: t });
            }, _removeShapeDataItem: function _removeShapeDataItem(t) {
                this._isEditable && (this.dataSource.remove(t.dataItem), delete this._dataMap[t.dataItem.id]);
            }, _removeConnectionDataItem: function _removeConnectionDataItem(t) {
                this._isEditable && (this.connectionsDataSource.remove(t.dataItem), delete this._connectionsDataMap[t.dataItem.uid]);
            }, _triggerRemove: function _triggerRemove(t) {
                var e,
                    i,
                    n,
                    o,
                    s = [];for (o = 0; o < t.length; o++) {
                    e = t[o], n = e.options.editable, i = e instanceof x ? { shape: e } : { connection: e }, n && n.remove !== !1 && !this.trigger("remove", i) && s.push(e);
                }return s;
            }, undo: function undo() {
                this.undoRedoService.undo();
            }, redo: function redo() {
                this.undoRedoService.redo();
            }, select: function select(t, e) {
                if (!gt(t)) return this._selectedItems;e = A({ addToSelection: !1 }, e);var i,
                    n,
                    o = e.addToSelection,
                    s = [],
                    r = [];for (o || this.deselect(), this._internalSelection = !0, t instanceof Array ? s = t : t instanceof y && (s = [t]), i = 0; i < s.length; i++) {
                    n = s[i], n.select(!0) && r.push(n);
                }this._selectionChanged(r, []), this._internalSelection = !1;
            }, selectAll: function selectAll() {
                this.select(this.shapes.concat(this.connections));
            }, selectArea: function selectArea(t) {
                var e, i, n, o;if (this._internalSelection = !0, o = [], t instanceof X) for (i = this.shapes.concat(this.connections), e = 0; e < i.length; e++) {
                    n = i[e], t && !n._hitTest(t) || !n.options.enable || n.select(!0) && o.push(n);
                }this._selectionChanged(o, []), this._internalSelection = !1;
            }, deselect: function deselect(t) {
                this._internalSelection = !0;var e,
                    i,
                    n = [],
                    o = [];for (t instanceof Array ? o = t : t instanceof y ? o.push(t) : gt(t) || (o = this._selectedItems.slice(0)), i = 0; i < o.length; i++) {
                    e = o[i], e.select(!1) && n.push(e);
                }this._selectionChanged([], n), this._internalSelection = !1;
            }, toFront: function toFront(t, e) {
                var i, n, o;t || (t = this._selectedItems.slice()), i = this._getDiagramItems(t), !mt(e) || e ? (n = s(this.mainLayer, i.visuals), o = new lt(this, t, n), this.undoRedoService.add(o)) : (this.mainLayer.toFront(i.visuals), this._fixOrdering(i, !0));
            }, toBack: function toBack(t, e) {
                var i, n, o;t || (t = this._selectedItems.slice()), i = this._getDiagramItems(t), !mt(e) || e ? (n = s(this.mainLayer, i.visuals), o = new dt(this, t, n), this.undoRedoService.add(o)) : (this.mainLayer.toBack(i.visuals), this._fixOrdering(i, !1));
            }, bringIntoView: function bringIntoView(t, e) {
                var i,
                    n,
                    o,
                    s,
                    r = this.viewport(),
                    a = new z.RectAlign(r);0 !== r.width && 0 !== r.height && (e = A({ animate: !1, align: "center middle" }, e), "none" == e.align && (e.align = "center middle"), t instanceof y ? n = t.bounds(ne) : _t(t) ? n = this.boundingBox(t) : t instanceof X && (n = t.clone()), o = n.clone(), n.zoom(this._zoom), (n.width > r.width || n.height > r.height) && (this._zoom = this._getValidZoom(xt.min(r.width / o.width, r.height / o.height)), n = o.clone().zoom(this._zoom)), this._zoomMainLayer(), i = n.clone(), a.align(n, e.align), s = n.topLeft().minus(i.topLeft()), this.pan(s.times(-1), e.animate));
            }, alignShapes: function alignShapes(t) {
                var e, i, n, o, s, r, a;if (pt(t) && (t = "Left"), e = this.select(), 0 !== e.length) {
                    switch (t.toLowerCase()) {case "left":case "top":
                            i = te;break;case "right":case "bottom":
                            i = ee;}for (o = 0; o < e.length; o++) {
                        if (n = e[o], n instanceof x) switch (t.toLowerCase()) {case "left":
                                i = xt.min(i, n.options.x);break;case "top":
                                i = xt.min(i, n.options.y);break;case "right":
                                i = xt.max(i, n.options.x);break;case "bottom":
                                i = xt.max(i, n.options.y);}
                    }for (s = [], r = [], o = 0; o < e.length; o++) {
                        if (n = e[o], n instanceof x) switch (r.push(n), s.push(n.bounds()), t.toLowerCase()) {case "left":case "right":
                                n.position(new $(i, n.options.y));break;case "top":case "bottom":
                                n.position(new $(n.options.x, i));}
                    }a = new z.TransformUnit(r, s), this.undoRedoService.add(a, !1);
                }
            }, zoom: function zoom(t, e) {
                var i, n, o, s;return t && (i = e ? e.point : new z.Point(0, 0), t = this._zoom = this._getValidZoom(t), pt(i) || (i = new z.Point(xt.round(i.x), xt.round(i.y)), n = i.times(t), o = this.modelToView(i), s = o.minus(n), this._storePan(new z.Point(xt.round(s.x), xt.round(s.y)))), e && (e.zoom = t), this._panTransform(), this.canvas.surface.hideTooltip(), this._updateAdorners()), this._zoom;
            }, _getPan: function _getPan(t) {
                var e = this.canvas;return e.translate || (t = t.plus(this._pan)), t;
            }, pan: function pan(t, i) {
                var n, o;return t instanceof $ ? (n = this, o = n.scroller, t = n._getPan(t), t = t.times(-1), i ? o.animatedScrollTo(t.x, t.y, function () {
                    n._updateAdorners();
                }) : (o.scrollTo(t.x, t.y), n._updateAdorners()), e) : this._pan.times(-1);
            }, viewport: function viewport() {
                var t = this.element,
                    e = t.width(),
                    i = t.height();return this.toolBar && (i -= U(this.toolBar.element)), new X(0, 0, e, i);
            }, copy: function copy() {
                var t, e;if (this.options.copy.enabled) for (this._clipboard = [], this._copyOffset = 1, t = 0; t < this._selectedItems.length; t++) {
                    e = this._selectedItems[t], this._clipboard.push(e);
                }
            }, cut: function cut() {
                var t, e;if (this.options.copy.enabled) {
                    for (this._clipboard = [], this._copyOffset = 0, t = 0; t < this._selectedItems.length; t++) {
                        e = this._selectedItems[t], this._clipboard.push(e);
                    }this.remove(this._clipboard, !0);
                }
            }, paste: function paste() {
                var t, e, i, n, o, s, r, a;if (this._clipboard.length > 0) {
                    for (n = {}, o = u(this._clipboard), s = o.connections, r = o.shapes, a = { x: this._copyOffset * this.options.copy.offsetX, y: this._copyOffset * this.options.copy.offsetY }, this.deselect(), i = 0; i < r.length; i++) {
                        t = r[i], e = t.clone(), n[t.id] = e, e.position(new $(t.options.x + a.x, t.options.y + a.y)), e.diagram = this, e = this._addShape(e), e && e.select();
                    }for (i = 0; i < s.length; i++) {
                        t = s[i], e = this._addConnection(t.clone()), e && (this._updateCopiedConnection(e, t, "source", n, a), this._updateCopiedConnection(e, t, "target", n, a), e.select(!0), e.updateModel());
                    }this._syncChanges(), this._copyOffset += 1;
                }
            }, _updateCopiedConnection: function _updateCopiedConnection(t, e, i, n, o) {
                var s,
                    r,
                    a,
                    h = e[i](),
                    c = this;h instanceof w && n[h.shape.id] ? (a = n[h.shape.id], c.getShapeById(a.id) ? t[i](a.getConnector(h.options.name)) : (r = c._inactiveShapeItems.getByUid(a.dataItem.uid), r && (s = function s(e) {
                    a = c._dataMap[e.id], t[i](a.getConnector(h.options.name)), t.updateModel();
                }, c._deferredConnectionUpdates.push(r.onActivate(s))))) : t[i](new $(e[i + "Point"]().x + o.x, e[i + "Point"]().y + o.y));
            }, boundingBox: function boundingBox(t, e) {
                var i,
                    n,
                    o,
                    s = X.empty(),
                    r = gt(t) ? this._getDiagramItems(t) : { shapes: this.shapes };if (r.shapes.length > 0) for (n = r.shapes[0], s = n.bounds(oe), o = 1; o < r.shapes.length; o++) {
                    n = r.shapes[o], i = n.bounds(oe), e === !0 && (i.x -= n._rotationOffset.x, i.y -= n._rotationOffset.y), s = s.union(i);
                }return s;
            }, _containerOffset: function _containerOffset() {
                var t = this.element.offset();return this.toolBar && (t.top += U(this.toolBar.element)), t;
            }, documentToView: function documentToView(t) {
                var e = this._containerOffset();return new $(t.x - e.left, t.y - e.top);
            }, viewToDocument: function viewToDocument(t) {
                var e = this._containerOffset();return new $(t.x + e.left, t.y + e.top);
            }, viewToModel: function viewToModel(t) {
                return this._transformWithMatrix(t, this._matrixInvert);
            }, modelToView: function modelToView(t) {
                return this._transformWithMatrix(t, this._matrix);
            }, modelToLayer: function modelToLayer(t) {
                return this._transformWithMatrix(t, this._layerMatrix);
            }, layerToModel: function layerToModel(t) {
                return this._transformWithMatrix(t, this._layerMatrixInvert);
            }, documentToModel: function documentToModel(t) {
                var e = this.documentToView(t);return this.canvas.translate || (e.x = e.x + this.scroller.scrollLeft, e.y = e.y + this.scroller.scrollTop), this.viewToModel(e);
            }, modelToDocument: function modelToDocument(t) {
                return this.viewToDocument(this.modelToView(t));
            }, _transformWithMatrix: function _transformWithMatrix(t, e) {
                var i,
                    n,
                    o = t;return t instanceof $ ? e && (o = e.apply(t)) : (i = this._transformWithMatrix(t.topLeft(), e), n = this._transformWithMatrix(t.bottomRight(), e), o = X.fromPoints(i, n)), o;
            }, setDataSource: function setDataSource(t) {
                this.options.dataSource = t, this._dataSource(), this.options.autoBind && this.dataSource.fetch();
            }, setConnectionsDataSource: function setConnectionsDataSource(t) {
                this.options.connectionsDataSource = t, this._connectionDataSource(), this.options.autoBind && this.connectionsDataSource.fetch();
            }, layout: function layout(t) {
                var e, i, n, o, s;switch (this._layouting = !0, pt(t) && (t = this.options.layout), e = pt(t) || pt(t.type) ? "Tree" : t.type, e.toLowerCase()) {case "tree":
                        i = new z.TreeLayout(this);break;case "layered":
                        i = new z.LayeredLayout(this);break;case "forcedirected":case "force":case "spring":case "springembedder":
                        i = new z.SpringLayout(this);break;default:
                        throw "Layout algorithm '" + e + "' is not supported.";}n = new z.LayoutState(this), o = i.layout(t), o && (s = new z.LayoutUndoUnit(n, o, t ? t.animate : null), this.undoRedoService.add(s)), this._layouting = !1, this._redrawConnections();
            }, getShapeById: function getShapeById(t) {
                var e;return (e = ht.first(this.shapes, function (e) {
                    return e.visual.id === t;
                })) ? e : e = ht.first(this.connections, function (e) {
                    return e.visual.id === t;
                });
            }, getShapeByModelId: function getShapeByModelId(t) {
                var e;return e = this._isEditable ? this._dataMap[t] : ht.first(this.shapes, function (e) {
                    return (e.dataItem || {}).id === t;
                });
            }, getShapeByModelUid: function getShapeByModelUid(t) {
                var e;return e = this._isEditable ? ht.first(this.shapes, function (e) {
                    return (e.dataItem || {}).uid === t;
                }) : this._dataMap[t];
            }, getConnectionByModelId: function getConnectionByModelId(t) {
                var e;return this.connectionsDataSource && (e = ht.first(this.connections, function (e) {
                    return (e.dataItem || {}).id === t;
                })), e;
            }, getConnectionByModelUid: function getConnectionByModelUid(t) {
                var e;return this.connectionsDataSource && (e = this._connectionsDataMap[t]), e;
            }, _extendLayoutOptions: function _extendLayoutOptions(t) {
                t.layout && (t.layout = A({}, z.LayoutBase.fn.defaultOptions || {}, t.layout));
            }, _selectionChanged: function _selectionChanged(t, e) {
                (t.length || e.length) && this.trigger(Ut, { selected: t, deselected: e });
            }, _getValidZoom: function _getValidZoom(t) {
                return xt.min(xt.max(t, this.options.zoomMin), this.options.zoomMax);
            }, _panTransform: function _panTransform(t) {
                var e = this,
                    i = t || e._pan;e.canvas.translate ? (e.scroller.scrollTo(i.x, i.y), e._zoomMainLayer()) : (e._storePan(i), e._transformMainLayer());
            }, _finishPan: function _finishPan() {
                this.trigger(Ht, { total: this._pan, delta: Number.NaN });
            }, _storePan: function _storePan(t) {
                this._pan = t, this._storeViewMatrix();
            }, _zoomMainLayer: function _zoomMainLayer() {
                var t = this._zoom,
                    e = new W(0, 0, t, t);e.render(this.mainLayer), this._storeLayerMatrix(e), this._storeViewMatrix();
            }, _transformMainLayer: function _transformMainLayer() {
                var t = this._pan,
                    e = this._zoom,
                    i = new W(t.x, t.y, e, e);i.render(this.mainLayer), this._storeLayerMatrix(i), this._storeViewMatrix();
            }, _storeLayerMatrix: function _storeLayerMatrix(t) {
                this._layerMatrix = t.toMatrix(), this._layerMatrixInvert = t.invert().toMatrix();
            }, _storeViewMatrix: function _storeViewMatrix() {
                var t = this._pan,
                    e = this._zoom,
                    i = new W(t.x, t.y, e, e);this._matrix = i.toMatrix(), this._matrixInvert = i.invert().toMatrix();
            }, _toIndex: function _toIndex(t, e) {
                var i = this._getDiagramItems(t);this.mainLayer.toIndex(i.visuals, e), this._fixOrdering(i, !1);
            }, _fixOrdering: function _fixOrdering(t, e) {
                var i,
                    n,
                    o = e ? this.shapes.length - 1 : 0,
                    s = e ? this.connections.length - 1 : 0;for (i = 0; i < t.shapes.length; i++) {
                    n = t.shapes[i], ht.remove(this.shapes, n), ht.insert(this.shapes, n, o);
                }for (i = 0; i < t.cons.length; i++) {
                    n = t.cons[i], ht.remove(this.connections, n), ht.insert(this.connections, n, s);
                }
            }, _getDiagramItems: function _getDiagramItems(t) {
                var e,
                    i,
                    n = {},
                    o = t;for (n.visuals = [], n.shapes = [], n.cons = [], t ? _t(t) || (o = [t]) : o = this._selectedItems.slice(), e = 0; e < o.length; e++) {
                    i = o[e], i instanceof x ? (n.shapes.push(i), n.visuals.push(i.visual)) : i instanceof b && (n.cons.push(i), n.visuals.push(i.visual));
                }return n;
            }, _removeItem: function _removeItem(t, e, i) {
                t.select(!1), t instanceof x ? (this._removeShapeDataItem(t), this._removeShape(t, e, i)) : t instanceof b && (this._removeConnectionDataItem(t), this._removeConnection(t, e)), this.mainLayer.remove(t.visual);
            }, _removeShape: function _removeShape(t, e, i) {
                var n,
                    o,
                    s,
                    r,
                    a = [],
                    h = [];for (this.toolService._removeHover(), e && this.undoRedoService.addCompositeItem(new Y(t)), ht.remove(this.shapes, t), this._shapesQuadTree.remove(t), n = 0; n < t.connectors.length; n++) {
                    for (s = t.connectors[n], r = 0; r < s.connections.length; r++) {
                        o = s.connections[r], i && P.inArray(o, i) || (o.sourceConnector == s ? a.push(o) : o.targetConnector == s && h.push(o));
                    }
                }for (n = 0; n < a.length; n++) {
                    a[n].source(null, e), a[n].updateModel();
                }for (n = 0; n < h.length; n++) {
                    h[n].target(null, e), h[n].updateModel();
                }
            }, _removeConnection: function _removeConnection(t, e) {
                t.sourceConnector && ht.remove(t.sourceConnector.connections, t), t.targetConnector && ht.remove(t.targetConnector.connections, t), e && this.undoRedoService.addCompositeItem(new Q(t)), ht.remove(this.connections, t);
            }, _removeDataItems: function _removeDataItems(t, e) {
                var i, n, o, s;for (t = _t(t) ? t : [t]; t.length;) {
                    if (i = t.shift(), o = this._dataMap[i.uid], o && (this._removeShapeConnections(o), this._removeItem(o, !1), delete this._dataMap[i.uid], e && i.hasChildren && i.loaded())) for (n = i.children.data(), s = 0; s < n.length; s++) {
                        t.push(n[s]);
                    }
                }
            }, _removeShapeConnections: function _removeShapeConnections(t) {
                var e,
                    i = t.connections();if (i) for (e = 0; e < i.length; e++) {
                    this._removeItem(i[e], !1);
                }
            }, _addDataItem: function _addDataItem(t, e) {
                var i, n;if (mt(t)) return (i = this._dataMap[t.id]) ? i : (n = A({}, this.options.shapeDefaults), n.dataItem = t, i = new x(n, this), this.addShape(i, e !== !1), this._dataMap[t.id] = i, i);
            }, _addDataItemByUid: function _addDataItemByUid(t) {
                var e, i;if (mt(t)) return (e = this._dataMap[t.uid]) ? e : (i = A({}, this.options.shapeDefaults), i.dataItem = t, e = new x(i, this), this.addShape(e), this._dataMap[t.uid] = e, e);
            }, _addDataItems: function _addDataItems(t, e) {
                var i, n, o, s, r;for (n = 0; n < t.length; n++) {
                    i = t[n], o = this._addDataItemByUid(i), s = this._addDataItemByUid(e), s && !this.connected(s, o) && (r = this.connect(s, o));
                }
            }, _refreshSource: function _refreshSource(t) {
                var e,
                    i,
                    n = this,
                    o = t.node,
                    s = t.action,
                    r = t.items,
                    a = n.options;if (t.field) for (e = 0; e < r.length; e++) {
                    this._dataMap[r[e].uid] && this._dataMap[r[e].uid].redrawVisual();
                } else {
                    if ("remove" == s) this._removeDataItems(t.items, !0);else for (s && "itemloaded" !== s || this._bindingRoots || (this._bindingRoots = !0, i = !0), s || o || n.clear(), this._addDataItems(r, o), e = 0; e < r.length; e++) {
                        r[e].load();
                    }a.layout && (i || "remove" == s || "add" == s) && n.layout(a.layout), i && (this.trigger("dataBound"), this._bindingRoots = !1);
                }
            }, _addItem: function _addItem(t) {
                t instanceof x ? this.addShape(t) : t instanceof b && this.addConnection(t);
            }, _createToolBar: function _createToolBar(t) {
                var e,
                    i,
                    n,
                    o,
                    s,
                    r,
                    a,
                    h,
                    c,
                    d = this.toolService.diagram;this.singleToolBar || 1 !== d.select().length || (e = d.select()[0], e && e.options.editable !== !1 && (i = e.options.editable, n = i.tools, this._isEditable && 0 === n.length && (e instanceof x ? n = ["edit", "rotateClockwise", "rotateAnticlockwise"] : e instanceof b && (n = ["edit"]), i && i.remove !== !1 && n.push("delete")), n && n.length && (o = 20, this.singleToolBar = new S(d, { tools: n, click: R(this._toolBarClick, this), modal: !0 }), r = O(this.singleToolBar._popup.element), a = U(this.singleToolBar._popup.element), e instanceof x ? (h = this.modelToView(e.bounds(oe)), s = $(h.x, h.y).minus($((r - h.width) / 2, a + o))) : e instanceof b && (c = this.modelToView(e.bounds()), s = $(c.x, c.y).minus($((r - c.width - 20) / 2, a + o))), s ? (this.canvas.translate || (s = s.minus($(this.scroller.scrollLeft, this.scroller.scrollTop))), s = this.viewToDocument(s), s = $(xt.max(s.x, 0), xt.max(s.y, 0)), this.singleToolBar.showAt(s), t && this.singleToolBar._popup.one("close", _)) : this._destroyToolBar())));
            }, _toolBarClick: function _toolBarClick(t) {
                this.trigger("toolBarClick", t), this._destroyToolBar();
            }, _normalizePointZoom: function _normalizePointZoom(t) {
                return t.times(1 / this.zoom());
            }, _initialize: function _initialize() {
                this.shapes = [], this._selectedItems = [], this.connections = [], this._dataMap = {}, this._connectionsDataMap = {}, this._inactiveShapeItems = new d(), this._deferredConnectionUpdates = [], this.undoRedoService = new it({ undone: this._syncHandler, redone: this._syncHandler }), this.id = z.randomId();
            }, _fetchFreshData: function _fetchFreshData() {
                var t = this;t._dataSource(), t._isEditable && t._connectionDataSource(), t.options.autoBind && (t._isEditable ? (this._loadingShapes = !0, this._loadingConnections = !0, t.dataSource.fetch(), t.connectionsDataSource.fetch()) : t.dataSource.fetch());
            }, _dataSource: function _dataSource() {
                var t, e;mt(this.options.connectionsDataSource) ? (this._isEditable = !0, t = this.options.dataSource || {}, e = _t(t) ? { data: t } : t, this.dataSource && this._shapesRefreshHandler ? this.dataSource.unbind("change", this._shapesRefreshHandler).unbind("requestStart", this._shapesRequestStartHandler).unbind("error", this._shapesErrorHandler) : (this._shapesRefreshHandler = R(this._refreshShapes, this), this._shapesRequestStartHandler = R(this._shapesRequestStart, this), this._shapesErrorHandler = R(this._error, this)), this.dataSource = kendo.data.DataSource.create(e).bind("change", this._shapesRefreshHandler).bind("requestStart", this._shapesRequestStartHandler).bind("error", this._shapesErrorHandler)) : (this._treeDataSource(), this._isEditable = !1);
            }, _connectionDataSource: function _connectionDataSource() {
                var t,
                    e = this.options.connectionsDataSource;e && (t = _t(e) ? { data: e } : e, this.connectionsDataSource && this._connectionsRefreshHandler ? this.connectionsDataSource.unbind("change", this._connectionsRefreshHandler).unbind("requestStart", this._connectionsRequestStartHandler).unbind("error", this._connectionsErrorHandler) : (this._connectionsRefreshHandler = R(this._refreshConnections, this), this._connectionsRequestStartHandler = R(this._connectionsRequestStart, this), this._connectionsErrorHandler = R(this._connectionsError, this)), this.connectionsDataSource = kendo.data.DataSource.create(t).bind("change", this._connectionsRefreshHandler).bind("requestStart", this._connectionsRequestStartHandler).bind("error", this._connectionsErrorHandler));
            }, _shapesRequestStart: function _shapesRequestStart(t) {
                "read" == t.type && (this._loadingShapes = !0);
            }, _connectionsRequestStart: function _connectionsRequestStart(t) {
                "read" == t.type && (this._loadingConnections = !0);
            }, _error: function _error() {
                this._loadingShapes = !1;
            }, _connectionsError: function _connectionsError() {
                this._loadingConnections = !1;
            }, _refreshShapes: function _refreshShapes(t) {
                "remove" === t.action ? this._shouldRefresh() && this._removeShapes(t.items) : "itemchange" === t.action ? this._shouldRefresh() && this._updateShapes(t.items, t.field) : "add" === t.action ? this._inactiveShapeItems.add(t.items) : "sync" === t.action ? this._syncShapes(t.items) : this.refresh();
            }, _shouldRefresh: function _shouldRefresh() {
                return !this._suspended;
            }, _suspendModelRefresh: function _suspendModelRefresh() {
                this._suspended = (this._suspended || 0) + 1;
            }, _resumeModelRefresh: function _resumeModelRefresh() {
                this._suspended = xt.max((this._suspended || 0) - 1, 0);
            }, refresh: function refresh() {
                this._loadingShapes = !1, this._loadingConnections || this._rebindShapesAndConnections();
            }, _rebindShapesAndConnections: function _rebindShapesAndConnections() {
                this.clear(), this._addShapes(this.dataSource.view()), this.connectionsDataSource && this._addConnections(this.connectionsDataSource.view(), !1), this.options.layout ? this.layout(this.options.layout) : this._redrawConnections(), this.trigger("dataBound");
            }, refreshConnections: function refreshConnections() {
                this._loadingConnections = !1, this._loadingShapes || this._rebindShapesAndConnections();
            }, _redrawConnections: function _redrawConnections() {
                var t,
                    e = this.connections;for (t = 0; t < e.length; t++) {
                    e[t].refresh();
                }
            }, _removeShapes: function _removeShapes(t) {
                var e,
                    i,
                    n = this._dataMap;for (i = 0; i < t.length; i++) {
                    e = t[i], n[e.id] && (this.remove(n[e.id], !1), n[e.id] = null);
                }
            }, _syncShapes: function _syncShapes() {
                var t = this,
                    e = t._inactiveShapeItems;e.forEach(function (i) {
                    var n = i.dataItem,
                        o = i.element;n.isNew() || (o ? (o._setOptionsFromModel(), t.addShape(o, i.undoable), t._dataMap[n.id] = o) : t._addDataItem(n), i.activate(), e.remove(n));
                });
            }, _updateShapes: function _updateShapes(t, e) {
                var i, n, o;for (i = 0; i < t.length; i++) {
                    n = t[i], o = this._dataMap[n.id], o && o.updateOptionsFromModel(n, e);
                }
            }, _addShapes: function _addShapes(t) {
                for (var e = 0; e < t.length; e++) {
                    this._addDataItem(t[e], !1);
                }
            }, _refreshConnections: function _refreshConnections(t) {
                "remove" === t.action ? this._shouldRefresh() && this._removeConnections(t.items) : "add" === t.action ? this._addConnections(t.items) : "sync" === t.action || ("itemchange" === t.action ? this._shouldRefresh() && this._updateConnections(t.items) : this.refreshConnections());
            }, _removeConnections: function _removeConnections(t) {
                for (var e = 0; e < t.length; e++) {
                    this.remove(this._connectionsDataMap[t[e].uid], !1), this._connectionsDataMap[t[e].uid] = null;
                }
            }, _updateConnections: function _updateConnections(t) {
                var e, i, n;for (e = 0; e < t.length; e++) {
                    i = t[e], n = this._connectionsDataMap[i.uid], n.updateOptionsFromModel(i);
                }
            }, _addConnections: function _addConnections(t, e) {
                var i,
                    n,
                    o = t.length;for (i = 0; i < o; i++) {
                    n = t[i], this._addConnectionDataItem(n, e);
                }
            }, _addConnectionDataItem: function _addConnectionDataItem(t, e) {
                var i, n, o, s;this._connectionsDataMap[t.uid] || (i = this._validateConnector(t.from), mt(i) && null !== i || (i = new $(t.fromX, t.fromY)), n = this._validateConnector(t.to), mt(n) && null !== n || (n = new $(t.toX, t.toY)), mt(i) && mt(n) && (o = A({}, this.options.connectionDefaults), o.dataItem = t, s = new b(i, n, o), this._connectionsDataMap[t.uid] = s, this.addConnection(s, e)));
            }, _validateConnector: function _validateConnector(t) {
                var e;return mt(t) && null !== t && (e = this._dataMap[t]), e;
            }, _treeDataSource: function _treeDataSource() {
                var t = this,
                    e = t.options,
                    i = e.dataSource;if (i = _t(i) ? { data: i } : i, i instanceof kendo.data.DataSource && !(i instanceof kendo.data.HierarchicalDataSource)) throw Error("Incorrect DataSource type. If a single dataSource instance is set to the diagram then it should be a HierarchicalDataSource. You should set only the options instead of an instance or a HierarchicalDataSource instance or supply connectionsDataSource as well.");i.fields || (i.fields = [{ field: "text" }, { field: "url" }, { field: "spriteCssClass" }, { field: "imageUrl" }]), t.dataSource && t._refreshHandler && t._unbindDataSource(), t._refreshHandler = R(t._refreshSource, t), t._errorHandler = R(t._error, t), t.dataSource = H.create(i).bind(kt, t._refreshHandler).bind(Et, t._errorHandler);
            }, _unbindDataSource: function _unbindDataSource() {
                var t = this;t.dataSource.unbind(kt, t._refreshHandler).unbind(Et, t._errorHandler);
            }, _adorn: function _adorn(t, i) {
                i !== e && t && (i ? (this._adorners.push(t), this.adornerLayer.append(t.visual)) : (ht.remove(this._adorners, t), this.adornerLayer.remove(t.visual)));
            }, _showConnectors: function _showConnectors(t, e) {
                e ? this._connectorsAdorner.show(t) : this._connectorsAdorner.destroy();
            }, _updateAdorners: function _updateAdorners() {
                var t,
                    e,
                    i = this._adorners;for (t = 0; t < i.length; t++) {
                    e = i[t], e.refreshBounds && e.refreshBounds(), e.refresh();
                }
            }, _refresh: function _refresh() {
                for (var t = 0; t < this.connections.length; t++) {
                    this.connections[t].refresh();
                }
            }, _destroyToolBar: function _destroyToolBar() {
                this.singleToolBar && (this.singleToolBar.hide(), this.singleToolBar.destroy(), this.singleToolBar = null);
            }, _destroyGlobalToolBar: function _destroyGlobalToolBar() {
                this.toolBar && (this.toolBar.hide(), this.toolBar.destroy(), this.toolBar = null);
            }, exportDOMVisual: function exportDOMVisual() {
                var t = this.canvas._viewBox,
                    e = E.transform().translate(-t.x, -t.y),
                    i = new E.Rect([0, 0], [t.width, t.height]),
                    n = L.Path.fromRect(i),
                    o = new L.Group({ transform: e }),
                    s = new L.Group({ clip: n }),
                    r = this.canvas.drawingElement.children[0];return s.append(o), o.children.push(r), s;
            }, exportVisual: function exportVisual() {
                var t = E.transform().scale(1 / this._zoom),
                    e = new L.Group({ transform: t }),
                    i = this.mainLayer.drawingElement;return e.children.push(i), e;
            }, _syncChanges: function _syncChanges() {
                this._syncShapeChanges(), this._syncConnectionChanges();
            }, _syncShapeChanges: function _syncShapeChanges() {
                this.dataSource && this._isEditable && this.dataSource.sync();
            }, _syncConnectionChanges: function _syncConnectionChanges() {
                var e = this;e.connectionsDataSource && e._isEditable && (t.when.apply(t, e._deferredConnectionUpdates).then(function () {
                    e.connectionsDataSource.sync();
                }), e.deferredConnectionUpdates = []);
            } }), P.ExportMixin.extend(C.fn, !0), kendo.PDFMixin && kendo.PDFMixin.extend(C.fn), S = kendo.Observable.extend({ init: function init(t, e) {
                kendo.Observable.fn.init.call(this), this.diagram = t, this.options = A({}, this.options, e), this._tools = [], this.createToolBar(), this.createTools(), this.appendTools(), this.options.modal && this.createPopup(), this.bind(this.events, e);
            }, events: ["click"], createPopup: function createPopup() {
                this.container = t("<div/>").append(this.element), this._popup = this.container.kendoPopup({}).getKendoPopup();
            }, appendTools: function appendTools() {
                var t, e;for (t = 0; t < this._tools.length; t++) {
                    e = this._tools[t], (e.buttons && e.buttons.length || !mt(e.buttons)) && this._toolBar.add(e);
                }
            }, createToolBar: function createToolBar() {
                this.element = t("<div/>"), this._toolBar = this.element.kendoToolBar({ click: R(this.click, this), resizable: !1 }).getKendoToolBar(), this.element.css("border", "none");
            }, createTools: function createTools() {
                for (var t = 0; t < this.options.tools.length; t++) {
                    this.createTool(this.options.tools[t]);
                }
            }, createTool: function createTool(t) {
                wt(t) || (t = { name: t });var e = t.name + "Tool";this[e] ? this[e](t) : this._tools.push(A({}, t, { attributes: this._setAttributes({ action: t.name }) }));
            }, showAt: function showAt(t) {
                this._popup && this._popup.open(t.x, t.y);
            }, hide: function hide() {
                this._popup && this._popup.close();
            }, newGroup: function newGroup() {
                return { type: "buttonGroup", buttons: [] };
            }, editTool: function editTool() {
                this._tools.push({ spriteCssClass: "k-icon k-i-pencil", showText: "overflow", type: "button", text: "Edit", attributes: this._setAttributes({ action: "edit" }) });
            }, deleteTool: function deleteTool() {
                this._tools.push({ spriteCssClass: "k-icon k-i-close", showText: "overflow", type: "button", text: "Delete", attributes: this._setAttributes({ action: "delete" }) });
            }, rotateAnticlockwiseTool: function rotateAnticlockwiseTool(t) {
                this._appendGroup("rotate"), this._rotateGroup.buttons.push({ spriteCssClass: "k-icon k-i-rotateccw", showText: "overflow", text: "RotateAnticlockwise", group: "rotate", attributes: this._setAttributes({ action: "rotateAnticlockwise", step: t.step }) });
            }, rotateClockwiseTool: function rotateClockwiseTool(t) {
                this._appendGroup("rotate"), this._rotateGroup.buttons.push({ spriteCssClass: "k-icon k-i-rotatecw", attributes: this._setAttributes({ action: "rotateClockwise", step: t.step }), showText: "overflow", text: "RotateClockwise", group: "rotate" });
            }, createShapeTool: function createShapeTool() {
                this._appendGroup("create"), this._createGroup.buttons.push({ spriteCssClass: "k-icon k-i-shape", showText: "overflow", text: "CreateShape", group: "create", attributes: this._setAttributes({ action: "createShape" }) });
            }, createConnectionTool: function createConnectionTool() {
                this._appendGroup("create"), this._createGroup.buttons.push({ spriteCssClass: "k-icon k-i-connector", showText: "overflow", text: "CreateConnection", group: "create", attributes: this._setAttributes({ action: "createConnection" }) });
            }, undoTool: function undoTool() {
                this._appendGroup("history"), this._historyGroup.buttons.push({ spriteCssClass: "k-icon k-i-undo", showText: "overflow", text: "Undo", group: "history", attributes: this._setAttributes({ action: "undo" }) });
            }, redoTool: function redoTool() {
                this._appendGroup("history"), this._historyGroup.buttons.push({ spriteCssClass: "k-icon k-i-redo", showText: "overflow", text: "Redo", group: "history", attributes: this._setAttributes({ action: "redo" }) });
            }, _appendGroup: function _appendGroup(t) {
                var e = "_" + t + "Group";this[e] || (this[e] = this.newGroup(), this._tools.push(this[e]));
            }, _setAttributes: function _setAttributes(t) {
                var e = {};return t.action && (e[kendo.attr("action")] = t.action), t.step && (e[kendo.attr("step")] = t.step), e;
            }, _getAttributes: function _getAttributes(t) {
                var e,
                    i = {},
                    n = t.attr(kendo.attr("action"));return n && (i.action = n), e = t.attr(kendo.attr("step")), e && (i.step = e), i;
            }, click: function click(e) {
                var i = this._getAttributes(t(e.target)),
                    n = i.action;n && this[n] && this[n](i), this.trigger("click", this.eventData(n, e.target));
            }, eventData: function eventData(t, e) {
                var i,
                    n,
                    o = this.selectedElements(),
                    s = o.length,
                    r = [],
                    a = [];for (n = 0; n < s; n++) {
                    i = o[n], i instanceof x ? r.push(i) : a.push(i);
                }return { shapes: r, connections: a, action: t, target: e };
            }, "delete": function _delete() {
                var t = this.diagram,
                    e = t._triggerRemove(this.selectedElements());e.length && (this.diagram.remove(e, !0), this.diagram._syncChanges());
            }, edit: function edit() {
                var t = this.selectedElements();1 === t.length && this.diagram.edit(t[0]);
            }, rotateClockwise: function rotateClockwise(t) {
                var e = parseFloat(t.step || 90);this._rotate(e);
            }, rotateAnticlockwise: function rotateAnticlockwise(t) {
                var e = parseFloat(t.step || 90);this._rotate(-e);
            }, _rotate: function _rotate(t) {
                var e = this.diagram._resizingAdorner;e.angle(e.angle() + t), e.rotate();
            }, selectedElements: function selectedElements() {
                return this.diagram.select();
            }, createShape: function createShape() {
                this.diagram.createShape();
            }, createConnection: function createConnection() {
                this.diagram.createConnection();
            }, undo: function undo() {
                this.diagram.undo();
            }, redo: function redo() {
                this.diagram.redo();
            }, destroy: function destroy() {
                this.diagram = null, this.element = null, this.options = null, this._toolBar && this._toolBar.destroy(), this._popup && this._popup.destroy();
            } }), k = kendo.Observable.extend({ init: function init(t, e) {
                kendo.Observable.fn.init.call(this), this.options = V(!0, {}, this.options, e), this.element = t, this.model = this.options.model, this.fields = this._getFields(), this._initContainer(), this.createEditable();
            }, options: { editors: {} }, _initContainer: function _initContainer() {
                this.wrapper = this.element;
            }, createEditable: function createEditable() {
                var t = this.options;this.editable = new kendo.ui.Editable(this.wrapper, { fields: this.fields, target: t.target, clearContainer: !1, model: this.model });
            }, _isEditable: function _isEditable(t) {
                return this.model.editable && this.model.editable(t);
            }, _getFields: function _getFields() {
                var t,
                    e,
                    i,
                    n = [],
                    o = this.model.fields;for (t in o) {
                    e = {}, this._isEditable(t) && (i = this.options.editors[t], i && (e.editor = i), e.field = t, n.push(e));
                }return n;
            }, end: function end() {
                return this.editable.end();
            }, destroy: function destroy() {
                this.editable.destroy(), this.editable.element.find("[" + kendo.attr("container-for") + "]").empty(), this.model = this.wrapper = this.element = this.columns = this.editable = null;
            } }), T = k.extend({ init: function init(t, e) {
                k.fn.init.call(this, t, e), this.bind(this.events, this.options), this.open();
            }, events: ["update", "cancel"], options: { window: { modal: !0, resizable: !1, draggable: !0, title: "Edit", visible: !1 } }, _initContainer: function _initContainer() {
                var e,
                    i = this;this.wrapper = t('<div class="k-popup-edit-form"/>').attr(kendo.attr("uid"), this.model.uid), e = "", this.options.template ? (e += this._renderTemplate(), this.fields = []) : e += this._renderFields(), e += this._renderButtons(), this.wrapper.append(t('<div class="k-edit-form-container"/>').append(e)), this.window = new kendo.ui.Window(this.wrapper.appendTo(this.element), this.options.window), this.window.bind("close", function (t) {
                    t.userTriggered && (t.sender.element.focus(), i._cancelClick(t));
                }), this._attachButtonEvents();
            }, _renderTemplate: function _renderTemplate() {
                var t = this.options.template;return "string" == typeof t && (t = window.unescape(t)), t = kendo.template(t)(this.model);
            }, _renderFields: function _renderFields() {
                var t,
                    e,
                    i = "";for (t = 0; t < this.fields.length; t++) {
                    e = this.fields[t], i += '<div class="k-edit-label"><label for="' + e.field + '">' + (e.field || "") + "</label></div>", this._isEditable(e.field) && (i += "<div " + kendo.attr("container-for") + '="' + e.field + '" class="k-edit-field"></div>');
                }return i;
            }, _renderButtons: function _renderButtons() {
                var t = '<div class="k-edit-buttons k-state-default">';return t += this._createButton("update"), t += this._createButton("cancel"), t += "</div>";
            }, _createButton: function _createButton(t) {
                return kendo.template(fe)(v[t]);
            }, _attachButtonEvents: function _attachButtonEvents() {
                this._cancelClickHandler = R(this._cancelClick, this), this.window.element.on(Tt + bt, "a.k-diagram-cancel", this._cancelClickHandler), this._updateClickHandler = R(this._updateClick, this), this.window.element.on(Tt + bt, "a.k-diagram-update", this._updateClickHandler);
            }, _updateClick: function _updateClick(t) {
                t.preventDefault(), this.trigger("update");
            }, _cancelClick: function _cancelClick(t) {
                t.preventDefault(), this.trigger("cancel");
            }, open: function open() {
                this.window.center().open();
            }, close: function close() {
                this.window.bind("deactivate", R(this.destroy, this)).close();
            }, destroy: function destroy() {
                this.window.close().destroy(), this.window.element.off(Tt + bt, "a.k-diagram-cancel", this._cancelClickHandler), this.window.element.off(Tt + bt, "a.k-diagram-update", this._updateClickHandler), this._cancelClickHandler = null, this._editUpdateClickHandler = null, this.window = null, k.fn.destroy.call(this);
            } }), c.fn = c.prototype = { onActivate: function onActivate(e) {
                var i = t.Deferred();return this.callbacks.push({ callback: e, deferred: i }), i;
            }, activate: function activate() {
                var t,
                    e,
                    i = this.callbacks;for (e = 0; e < i.length; e++) {
                    t = this.callbacks[e], t.callback(this.dataItem), t.deferred.resolve();
                }this.callbacks = [];
            } }, d.fn = d.prototype = { add: function add(t) {
                for (var e = 0; e < t.length; e++) {
                    this.items[t[e].uid] = new c(t[e]);
                }
            }, forEach: function forEach(t) {
                for (var e in this.items) {
                    t(this.items[e]);
                }
            }, getByUid: function getByUid(t) {
                return this.items[t];
            }, remove: function remove(t) {
                delete this.items[t.uid];
            } }, M = N.extend({ init: function init() {
                this.shapes = [];
            }, _add: function _add(t, e) {
                this.shapes.push({ bounds: e, shape: t }), t._quadNode = this;
            }, insert: function insert(t, e) {
                this._add(t, e);
            }, remove: function remove(t) {
                var e,
                    i = this.shapes,
                    n = i.length;for (e = 0; e < n; e++) {
                    if (i[e].shape === t) {
                        i.splice(e, 1);break;
                    }
                }
            }, hitTestRect: function hitTestRect(t) {
                var e,
                    i = this.shapes,
                    n = i.length;for (e = 0; e < n; e++) {
                    if (this._testRect(i[e].shape, t)) return !0;
                }
            }, _testRect: function _testRect(t, e) {
                var i,
                    n = t.rotate().angle,
                    o = t.bounds();return i = n ? tt.rects(e, o, -n) : o.overlaps(e);
            } }), D = M.extend({ init: function init(t) {
                M.fn.init.call(this), this.children = [], this.rect = t;
            }, inBounds: function inBounds(t) {
                var e = this.rect,
                    i = e.bottomRight(),
                    n = t.bottomRight(),
                    o = e.x <= t.x && e.y <= t.y && n.x <= i.x && n.y <= i.y;return o;
            }, overlapsBounds: function overlapsBounds(t) {
                return this.rect.overlaps(t);
            }, insert: function insert(t, e) {
                var i,
                    n = !1,
                    o = this.children,
                    s = o.length;if (this.inBounds(e)) {
                    if (!s && this.shapes.length < 4) this._add(t, e);else {
                        for (s || this._initChildren(), i = 0; i < o.length; i++) {
                            if (o[i].insert(t, e)) {
                                n = !0;break;
                            }
                        }n || this._add(t, e);
                    }n = !0;
                }return n;
            }, _initChildren: function _initChildren() {
                var t,
                    e,
                    i = this.rect,
                    n = this.children,
                    o = this.shapes,
                    s = i.center(),
                    r = i.width / 2,
                    a = i.height / 2;for (n.push(new D(new X(i.x, i.y, r, a)), new D(new X(s.x, i.y, r, a)), new D(new X(i.x, s.y, r, a)), new D(new X(s.x, s.y, r, a))), e = o.length - 1; e >= 0; e--) {
                    for (t = 0; t < n.length; t++) {
                        if (n[t].insert(o[e].shape, o[e].bounds)) {
                            o.splice(e, 1);break;
                        }
                    }
                }
            }, hitTestRect: function hitTestRect(t) {
                var e,
                    i = this.children,
                    n = i.length,
                    o = !1;if (this.overlapsBounds(t)) if (M.fn.hitTestRect.call(this, t)) o = !0;else for (e = 0; e < n; e++) {
                    if (i[e].hitTestRect(t)) {
                        o = !0;break;
                    }
                }return o;
            } }), I = N.extend({ ROOT_SIZE: 1e3, init: function init(t) {
                var e = R(this._boundsChange, this);t.bind(St, e), t.bind(Vt, e), this.initRoots();
            }, initRoots: function initRoots() {
                this.rootMap = {}, this.root = new M();
            }, clear: function clear() {
                this.initRoots();
            }, _boundsChange: function _boundsChange(t) {
                t.item._quadNode && t.item._quadNode.remove(t.item), this.insert(t.item);
            }, insert: function insert(t) {
                var e = t.bounds(oe),
                    i = this.ROOT_SIZE,
                    n = this.getSectors(e),
                    o = n[0][0],
                    s = n[1][0];this.inRoot(n) ? this.root.insert(t, e) : (this.rootMap[o] || (this.rootMap[o] = {}), this.rootMap[o][s] || (this.rootMap[o][s] = new D(new X(o * i, s * i, i, i))), this.rootMap[o][s].insert(t, e));
            }, remove: function remove(t) {
                t._quadNode && t._quadNode.remove(t);
            }, inRoot: function inRoot(t) {
                return t[0].length > 1 || t[1].length > 1;
            }, getSectors: function getSectors(t) {
                var e,
                    i,
                    n = this.ROOT_SIZE,
                    o = t.bottomRight(),
                    s = xt.floor(o.x / n),
                    r = xt.floor(o.y / n),
                    a = [[], []];for (e = xt.floor(t.x / n); e <= s; e++) {
                    a[0].push(e);
                }for (i = xt.floor(t.y / n); i <= r; i++) {
                    a[1].push(i);
                }return a;
            }, hitTestRect: function hitTestRect(t) {
                var e,
                    i,
                    n,
                    o,
                    s,
                    r = this.getSectors(t);if (this.root.hitTestRect(t)) return !0;for (e = 0; e < r[0].length; e++) {
                    for (n = r[0][e], i = 0; i < r[1].length; i++) {
                        if (o = r[1][i], s = (this.rootMap[n] || {})[o], s && s.hitTestRect(t)) return !0;
                    }
                }return !1;
            } }), P.ui.plugin(C), A(z, { Shape: x, Connection: b, Connector: w, DiagramToolBar: S, QuadNode: D, QuadRoot: M, ShapesQuadTree: I, PopupEditor: T });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("kendo.dataviz.diagram.min", ["kendo.data.min", "kendo.draganddrop.min", "kendo.userevents.min", "kendo.mobile.scroller.min", "kendo.drawing.min", "dataviz/diagram/utils.min", "dataviz/diagram/math.min", "dataviz/diagram/svg.min", "dataviz/diagram/services.min", "dataviz/diagram/layout.min", "dataviz/diagram/dom.min"], t);
}(function () {
    return window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
});;!function (e, define) {
    define("util/main.min", ["kendo.core.min"], e);
}(function () {
    return function () {
        function e(e) {
            return (typeof e === "undefined" ? "undefined" : _typeof(e)) !== O;
        }function n(e, n) {
            var i = t(n);return P.round(e * i) / i;
        }function t(e) {
            return e ? P.pow(10, e) : 1;
        }function i(e, n, t) {
            return P.max(P.min(e, t), n);
        }function o(e) {
            return e * X;
        }function r(e) {
            return e / X;
        }function a(e) {
            return "number" == typeof e && !isNaN(e);
        }function s(n, t) {
            return e(n) ? n : t;
        }function l(e) {
            return e * e;
        }function c(e) {
            var n,
                t = [];for (n in e) {
                t.push(n + e[n]);
            }return t.sort().join("");
        }function u(e) {
            var n,
                t = 2166136261;for (n = 0; n < e.length; ++n) {
                t += (t << 1) + (t << 4) + (t << 7) + (t << 8) + (t << 24), t ^= e.charCodeAt(n);
            }return t >>> 0;
        }function d(e) {
            return u(c(e));
        }function p(e) {
            var n,
                t = e.length,
                i = E,
                o = N;for (n = 0; n < t; n++) {
                o = P.max(o, e[n]), i = P.min(i, e[n]);
            }return { min: i, max: o };
        }function h(e) {
            return p(e).min;
        }function f(e) {
            return p(e).max;
        }function g(e) {
            return v(e).min;
        }function m(e) {
            return v(e).max;
        }function v(e) {
            var n,
                t,
                i,
                o = E,
                r = N;for (n = 0, t = e.length; n < t; n++) {
                i = e[n], null !== i && isFinite(i) && (o = P.min(o, i), r = P.max(r, i));
            }return { min: o === E ? void 0 : o, max: r === N ? void 0 : r };
        }function w(e) {
            if (e) return e[e.length - 1];
        }function x(e, n) {
            return e.push.apply(e, n), e;
        }function b(e) {
            return B.template(e, { useWithBlock: !1, paramName: "d" });
        }function y(n, t) {
            return e(t) && null !== t ? " " + n + "='" + t + "' " : "";
        }function k(e) {
            var n,
                t = "";for (n = 0; n < e.length; n++) {
                t += y(e[n][0], e[n][1]);
            }return t;
        }function A(n) {
            var t,
                i,
                o = "";for (t = 0; t < n.length; t++) {
                i = n[t][1], e(i) && (o += n[t][0] + ":" + i + ";");
            }if ("" !== o) return o;
        }function _(e) {
            return "string" != typeof e && (e += "px"), e;
        }function T(e) {
            var n,
                t,
                i = [];if (e) for (n = B.toHyphens(e).split("-"), t = 0; t < n.length; t++) {
                i.push("k-pos-" + n[t]);
            }return i.join(" ");
        }function z(n) {
            return "" === n || null === n || "none" === n || "transparent" === n || !e(n);
        }function S(e) {
            for (var n = { 1: "i", 10: "x", 100: "c", 2: "ii", 20: "xx", 200: "cc", 3: "iii", 30: "xxx", 300: "ccc", 4: "iv", 40: "xl", 400: "cd", 5: "v", 50: "l", 500: "d", 6: "vi", 60: "lx", 600: "dc", 7: "vii", 70: "lxx", 700: "dcc", 8: "viii", 80: "lxxx", 800: "dccc", 9: "ix", 90: "xc", 900: "cm", 1e3: "m" }, t = [1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], i = ""; e > 0;) {
                e < t[0] ? t.shift() : (i += n[t[0]], e -= t[0]);
            }return i;
        }function R(e) {
            var n, t, i, o, r;for (e = e.toLowerCase(), n = { i: 1, v: 5, x: 10, l: 50, c: 100, d: 500, m: 1e3 }, t = 0, i = 0, o = 0; o < e.length; ++o) {
                if (r = n[e.charAt(o)], !r) return null;t += r, r > i && (t -= 2 * i), i = r;
            }return t;
        }function j(e) {
            var n = Object.create(null);return function () {
                var t,
                    i = "";for (t = arguments.length; --t >= 0;) {
                    i += ":" + arguments[t];
                }return i in n ? n[i] : n[i] = e.apply(this, arguments);
            };
        }function C(e) {
            for (var n, t, i = [], o = 0, r = e.length; o < r;) {
                n = e.charCodeAt(o++), n >= 55296 && n <= 56319 && o < r ? (t = e.charCodeAt(o++), 56320 == (64512 & t) ? i.push(((1023 & n) << 10) + (1023 & t) + 65536) : (i.push(n), o--)) : i.push(n);
            }return i;
        }function M(e) {
            return e.map(function (e) {
                var n = "";return e > 65535 && (e -= 65536, n += String.fromCharCode(e >>> 10 & 1023 | 55296), e = 56320 | 1023 & e), n += String.fromCharCode(e);
            }).join("");
        }function U(e, n) {
            function t(e, t) {
                for (var i = [], o = 0, r = 0, a = 0; o < e.length && r < t.length;) {
                    n(e[o], t[r]) <= 0 ? i[a++] = e[o++] : i[a++] = t[r++];
                }return o < e.length && i.push.apply(i, e.slice(o)), r < t.length && i.push.apply(i, t.slice(r)), i;
            }return e.length < 2 ? e.slice() : function i(e) {
                var n, o, r;return e.length <= 1 ? e : (n = Math.floor(e.length / 2), o = e.slice(0, n), r = e.slice(n), o = i(o), r = i(r), t(o, r));
            }(e);
        }var P = Math,
            B = window.kendo,
            L = B.deepExtend,
            X = P.PI / 180,
            E = Number.MAX_VALUE,
            N = -Number.MAX_VALUE,
            O = "undefined",
            V = Date.now;V || (V = function V() {
            return new Date().getTime();
        }), L(B, { util: { MAX_NUM: E, MIN_NUM: N, append: x, arrayLimits: p, arrayMin: h, arrayMax: f, defined: e, deg: r, hashKey: u, hashObject: d, isNumber: a, isTransparent: z, last: w, limitValue: i, now: V, objectKey: c, round: n, rad: o, renderAttr: y, renderAllAttr: k, renderPos: T, renderSize: _, renderStyle: A, renderTemplate: b, sparseArrayLimits: v, sparseArrayMin: g, sparseArrayMax: m, sqr: l, valueOrDefault: s, romanToArabic: R, arabicToRoman: S, memoize: j, ucs2encode: M, ucs2decode: C, mergeSort: U } }), B.drawing.util = B.util, B.dataviz.util = B.util;
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("util/text-metrics.min", ["kendo.core.min", "util/main.min"], e);
}(function () {
    !function (e) {
        function n() {
            return { width: 0, height: 0, baseline: 0 };
        }function t(e, n, t) {
            return d.current.measure(e, n, t);
        }function i(e, n) {
            var t = [];if (e.length > 0 && document.fonts) {
                try {
                    t = e.map(function (e) {
                        return document.fonts.load(e);
                    });
                } catch (i) {
                    r.logToConsole(i);
                }Promise.all(t).then(n, n);
            } else n();
        }var o = document,
            r = window.kendo,
            a = r.Class,
            s = r.util,
            l = s.defined,
            c = a.extend({ init: function init(e) {
                this._size = e, this._length = 0, this._map = {};
            }, put: function put(e, n) {
                var t = this,
                    i = t._map,
                    o = { key: e, value: n };i[e] = o, t._head ? (t._tail.newer = o, o.older = t._tail, t._tail = o) : t._head = t._tail = o, t._length >= t._size ? (i[t._head.key] = null, t._head = t._head.newer, t._head.older = null) : t._length++;
            }, get: function get(e) {
                var n = this,
                    t = n._map[e];if (t) return t === n._head && t !== n._tail && (n._head = t.newer, n._head.older = null), t !== n._tail && (t.older && (t.older.newer = t.newer, t.newer.older = t.older), t.older = n._tail, t.newer = null, n._tail.newer = t, n._tail = t), t.value;
            } }),
            u = e("<div style='position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;padding: 0 !important; margin: 0 !important; border: 0 !important;line-height: normal !important; visibility: hidden !important; white-space: nowrap!important;' />")[0],
            d = a.extend({ init: function init(e) {
                this._cache = new c(1e3), this._initOptions(e);
            }, options: { baselineMarkerSize: 1 }, measure: function measure(t, i, r) {
                var a, c, d, p, h, f, g, m;if (!t) return n();if (a = s.objectKey(i), c = s.hashKey(t + a), d = this._cache.get(c), d) return d;p = n(), h = r ? r : u, f = this._baselineMarker().cloneNode(!1);for (g in i) {
                    m = i[g], l(m) && (h.style[g] = m);
                }return e(h).text(t), h.appendChild(f), o.body.appendChild(h), (t + "").length && (p.width = h.offsetWidth - this.options.baselineMarkerSize, p.height = h.offsetHeight, p.baseline = f.offsetTop + this.options.baselineMarkerSize), p.width > 0 && p.height > 0 && this._cache.put(c, p), h.parentNode.removeChild(h), p;
            }, _baselineMarker: function _baselineMarker() {
                return e("<div class='k-baseline-marker' style='display: inline-block; vertical-align: baseline;width: " + this.options.baselineMarkerSize + "px; height: " + this.options.baselineMarkerSize + "px;overflow: hidden;' />")[0];
            } });d.current = new d(), r.util.TextMetrics = d, r.util.LRUCache = c, r.util.loadFonts = i, r.util.measureText = t;
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("util/base64.min", ["util/main.min"], e);
}(function () {
    return function () {
        function e(e) {
            var t,
                i,
                o,
                a,
                s,
                l,
                c,
                u = "",
                d = 0;for (e = n(e); d < e.length;) {
                t = e.charCodeAt(d++), i = e.charCodeAt(d++), o = e.charCodeAt(d++), a = t >> 2, s = (3 & t) << 4 | i >> 4, l = (15 & i) << 2 | o >> 6, c = 63 & o, isNaN(i) ? l = c = 64 : isNaN(o) && (c = 64), u = u + r.charAt(a) + r.charAt(s) + r.charAt(l) + r.charAt(c);
            }return u;
        }function n(e) {
            var n,
                t,
                i = "";for (n = 0; n < e.length; n++) {
                t = e.charCodeAt(n), t < 128 ? i += o(t) : t < 2048 ? (i += o(192 | t >>> 6), i += o(128 | 63 & t)) : t < 65536 && (i += o(224 | t >>> 12), i += o(128 | t >>> 6 & 63), i += o(128 | 63 & t));
            }return i;
        }var t = window.kendo,
            i = t.deepExtend,
            o = String.fromCharCode,
            r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";i(t.util, { encodeBase64: e, encodeUTF8: n });
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("mixins/observers.min", ["kendo.core.min"], e);
}(function () {
    return function (e) {
        var n = Math,
            t = window.kendo,
            i = t.deepExtend,
            o = e.inArray,
            r = { observers: function observers() {
                return this._observers = this._observers || [];
            }, addObserver: function addObserver(e) {
                return this._observers ? this._observers.push(e) : this._observers = [e], this;
            }, removeObserver: function removeObserver(e) {
                var n = this.observers(),
                    t = o(e, n);return t != -1 && n.splice(t, 1), this;
            }, trigger: function trigger(e, n) {
                var t,
                    i,
                    o = this._observers;if (o && !this._suspended) for (i = 0; i < o.length; i++) {
                    t = o[i], t[e] && t[e](n);
                }return this;
            }, optionsChange: function optionsChange(e) {
                e = e || {}, e.element = this, this.trigger("optionsChange", e);
            }, geometryChange: function geometryChange() {
                this.trigger("geometryChange", { element: this });
            }, suspend: function suspend() {
                return this._suspended = (this._suspended || 0) + 1, this;
            }, resume: function resume() {
                return this._suspended = n.max((this._suspended || 0) - 1, 0), this;
            }, _observerField: function _observerField(e, n) {
                this[e] && this[e].removeObserver(this), this[e] = n, n.addObserver(this);
            } };i(t, { mixins: { ObserversMixin: r } });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("kendo.dataviz.gauge.min", ["kendo.dataviz.core.min", "kendo.drawing.min", "kendo.dataviz.themes.min"], e);
}(function () {
    return function (e, n) {
        function t(e, n) {
            var t = e.box,
                i = e.children[0].box,
                r = n.border || {},
                a = n.background || "",
                s = new R(),
                l = j.fromRect(new C([t.x1, t.y1], [t.width(), t.height()]), { stroke: {} }),
                c = new M(e.text, new S(i.x1, i.y1), { font: n.font, fill: { color: n.color } }),
                u = o(c.bbox().clone(), n.padding),
                d = j.fromRect(u, { stroke: { color: r.width ? r.color : "", width: r.width, dashType: r.dashType, lineJoin: "round", lineCap: "round" }, fill: { color: a } });return s.append(l), s.append(d), s.append(c), s;
        }function i(e, n, t) {
            var i = b(e.from) ? e.from : D,
                o = b(e.to) ? e.to : V;return e.from = l.max(l.min(o, i), n), e.to = l.min(l.max(o, i), t), e;
        }function o(e, n) {
            var t = e.getOrigin(),
                i = e.getSize(),
                o = A(n);return e.setOrigin([t.x - o.left, t.y - o.top]), e.setSize([i.width + (o.left + o.right), i.height + (o.top + o.bottom)]), e;
        }function r(e, n) {
            var t = A(n);return t.left = -t.left, t.top = -t.top, t.right = -t.right, t.bottom = -t.bottom, o(e, t);
        }var a,
            s,
            l = Math,
            c = window.kendo,
            u = c.util,
            d = c.ui.Widget,
            p = c.deepExtend,
            h = c.dataviz,
            f = h.autoMajorUnit,
            g = h.ChartElement,
            m = h.NumericAxis,
            v = h.Axis,
            w = h.Box2D,
            x = c.Class,
            b = u.defined,
            y = u.isNumber,
            k = h.interpolateValue,
            A = h.getSpacing,
            _ = h.round,
            T = h.geometry,
            z = h.drawing,
            S = T.Point,
            R = z.Group,
            j = z.Path,
            C = T.Rect,
            M = z.Text,
            U = 150,
            P = 250,
            B = "arrow",
            L = "arrowPointer",
            X = "barPointer",
            E = "#000",
            N = .05,
            O = h.COORD_PRECISION,
            V = Number.MAX_VALUE,
            D = -Number.MAX_VALUE,
            Y = 200,
            G = .5,
            F = 200,
            I = 60,
            K = 60,
            Q = 5,
            W = l.PI / 180,
            H = 180,
            J = "inside",
            q = "linear",
            Z = "needle",
            $ = "outside",
            ee = "radialPointer",
            ne = "x",
            te = "y",
            ie = x.extend({ init: function init(e, n) {
                var t = this,
                    i = e.options;g.fn.init.call(t, n), n = t.options, n.fill = n.color, t.scale = e, n.value = b(n.value) ? l.min(l.max(n.value, i.min), i.max) : i.min;
            }, options: { color: E }, value: function value(e) {
                var t = this,
                    i = t.options,
                    o = i.value,
                    r = t.scale.options;return 0 === arguments.length ? o : (i._oldValue = i._oldValue !== n ? i.value : r.min, i.value = l.min(l.max(e, r.min), r.max), t.elements && t.repaint(), n);
            } }),
            oe = ie.extend({ options: { shape: Z, cap: { size: N }, arrow: { width: 16, height: 14 }, animation: { type: ee, duration: U } }, setRadius: function setRadius(e) {
                var n = this;e && (n.elements.clear(), n.render(n.parent, n.center, e));
            }, setAngle: function setAngle(e) {
                this.elements.transform(T.transform().rotate(e, this.center));
            }, repaint: function repaint() {
                var e = this,
                    n = e.scale,
                    t = e.options,
                    i = n.slotAngle(t._oldValue),
                    o = n.slotAngle(t.value);t.animation.transitions === !1 ? e.setAngle(o) : new he(e.elements, p(t.animation, { oldAngle: i, newAngle: o })).play();
            }, render: function render() {
                var e = this,
                    n = e.scale,
                    t = n.arc.center,
                    i = e.options,
                    o = new R();return i.animation !== !1 && p(i.animation, { startAngle: 0, center: t, reverse: n.options.reverse }), i.shape === Z ? o.append(e._renderNeedle(), e._renderCap()) : o.append(e._renderArrow()), e.elements = o, e.setAngle(W), o;
            }, reflow: function reflow(e) {
                var n = this,
                    t = n.center = e.center,
                    i = n.radius = e.getRadiusX(),
                    o = n.capSize = Math.round(i * n.options.cap.size);n.bbox = C.fromPoints(new S(t.x - o, t.y - o), new S(t.x + o, t.y + o));
            }, _renderNeedle: function _renderNeedle() {
                var e = this,
                    n = e.options,
                    t = e.scale.options.minorTicks.size,
                    i = e.center,
                    o = n.color,
                    r = new j({ fill: { color: o }, stroke: { color: o, width: G } });return r.moveTo(i.x + e.radius - t, i.y).lineTo(i.x, i.y - e.capSize / 2).lineTo(i.x, i.y + e.capSize / 2).close(), r;
            }, _renderCap: function _renderCap() {
                var e = this,
                    n = e.options,
                    t = n.cap.color || n.color,
                    i = new T.Circle(e.center, e.capSize),
                    o = new z.Circle(i, { fill: { color: t }, stroke: { color: t } });return o;
            } }),
            re = m.extend({ init: function init(e) {
                var n = this;n.options = p({}, n.options, e), n.options.majorUnit = n.options.majorUnit || f(n.options.min, n.options.max), n.options.minorUnit = n.options.minorUnit || n.options.majorUnit / 10, v.fn.init.call(n, n.options);
            }, options: { min: 0, max: 100, majorTicks: { size: 15, align: J, color: E, width: G, visible: !0 }, minorTicks: { size: 10, align: J, color: E, width: G, visible: !0 }, startAngle: -30, endAngle: 210, labels: { position: J, padding: 2 } }, render: function render(e, n) {
                var t = this,
                    i = t.renderArc(e, n);t.bbox = i.bbox(), t.labelElements = t.renderLabels(), t.ticks = t.renderTicks(), t.ranges = t.renderRanges();
            }, reflow: function reflow(e) {
                var t = this,
                    i = e.center(),
                    o = l.min(e.height(), e.width()) / 2;return t.bbox === n ? t.render(i, o) : (t.bbox = t.arc.bbox(), t.radius(t.arc.getRadiusX()), t.repositionRanges(), t.renderLabels(), n);
            }, slotAngle: function slotAngle(e) {
                var n,
                    t = this.options,
                    i = t.startAngle,
                    o = t.reverse,
                    r = t.endAngle - i,
                    a = t.min,
                    s = t.max;return n = o ? t.endAngle - (e - a) / (s - a) * r : (e - a) / (s - a) * r + i, n + H;
            }, renderLabels: function renderLabels() {
                var e,
                    i,
                    o,
                    r,
                    a,
                    s,
                    c,
                    u,
                    d,
                    p,
                    f,
                    g,
                    m,
                    v,
                    w = this,
                    x = w.options,
                    b = x.majorTicks.size,
                    y = w.arc.clone(),
                    k = y.getRadiusX(),
                    A = w.tickAngles(y, x.majorUnit),
                    _ = w.labels,
                    z = _.length,
                    j = x.labels,
                    M = j.padding,
                    U = .05 * k,
                    P = x.rangeSize = x.rangeSize || .1 * k,
                    B = x.ranges || [],
                    L = new R();for (w.options.rangeDistance !== n ? U = w.options.rangeDistance : w.options.rangeDistance = U, j.position === J && (k -= b, B.length && w.labelElements === n && (k -= P + U), y.setRadiusX(k).setRadiusY(k)), c = 0; c < z; c++) {
                    a = _[c], e = a.box.width() / 2, i = a.box.height() / 2, r = A[c], o = (r - H) * W, p = j.position === J, s = y.pointAt(r), u = s.x + l.cos(o) * (e + M) * (p ? 1 : -1), d = s.y + l.sin(o) * (i + M) * (p ? 1 : -1), a.reflow(new h.Box2D(u - e, d - i, u + e, d + i)), g = new S(a.box.x1, a.box.y1), w.labelElements === n ? (f = t(a, x.labels), L.append(f)) : (f = w.labelElements.children[c], m = f.bbox().origin, v = f.transform() || T.transform(), v.translate(g.x - m.x, g.y - m.y), f.transform(v)), w.bbox = C.union(w.bbox, f.bbox());
                }return L;
            }, repositionRanges: function repositionRanges() {
                var e,
                    n,
                    t,
                    i = this,
                    o = i.ranges.children,
                    r = i.options.rangeSize,
                    a = i.options.rangeDistance;if (o.length > 0) {
                    for (e = i.getRangeRadius(), i.options.labels.position === J && (e += r + a), n = e + r / 2, t = 0; t < o.length; t++) {
                        o[t]._geometry.setRadiusX(n).setRadiusY(n);
                    }i.bbox = C.union(i.bbox, i.ranges.bbox());
                }
            }, renderRanges: function renderRanges() {
                var e,
                    n,
                    t,
                    i,
                    o,
                    r,
                    a = this,
                    s = a.arc,
                    l = new R(),
                    c = a.rangeSegments(),
                    u = c.length,
                    d = a.options.reverse,
                    p = a.options.rangeSize,
                    h = a.options.rangeDistance;if (u) for (i = a.getRangeRadius(), a.radius(a.radius() - p - h), r = 0; r < u; r++) {
                    t = c[r], e = a.slotAngle(t[d ? "to" : "from"]), n = a.slotAngle(t[d ? "from" : "to"]), n - e !== 0 && (o = new T.Arc(s.center, { radiusX: i + p / 2, radiusY: i + p / 2, startAngle: e, endAngle: n }), l.append(new z.Arc(o, { stroke: { width: p, color: t.color, opacity: t.opacity } })));
                }return l;
            }, rangeSegments: function rangeSegments() {
                function e(e, n, t, i) {
                    return { from: e, to: n, color: t, opacity: i };
                }var n,
                    t,
                    o,
                    r,
                    a,
                    s = this,
                    l = s.options,
                    c = l.ranges || [],
                    u = c.length,
                    d = l.rangePlaceholderColor,
                    p = [],
                    h = l.min,
                    f = l.max;if (u) for (p.push(e(h, f, d)), r = 0; r < u; r++) {
                    for (n = i(c[r], h, f), t = p.length, a = 0; a < t; a++) {
                        if (o = p[a], o.from <= n.from && n.from <= o.to) {
                            p.push(e(n.from, n.to, n.color, n.opacity)), o.from <= n.to && n.to <= o.to && p.push(e(n.to, o.to, d, n.opacity)), o.to = n.from;break;
                        }
                    }
                }return p;
            }, getRangeRadius: function getRangeRadius() {
                var e,
                    n = this,
                    t = n.options,
                    i = t.majorTicks.size,
                    o = t.rangeSize,
                    r = t.rangeDistance,
                    a = n.arc;return e = t.labels.position === $ ? a.getRadiusX() - i - r - o : a.getRadiusX() - o;
            }, renderArc: function renderArc(e, n) {
                var t = this,
                    i = t.options,
                    o = t.arc = new T.Arc(e, { radiusX: n, radiusY: n, startAngle: i.startAngle + H, endAngle: i.endAngle + H });return o;
            }, renderTicks: function renderTicks() {
                function e(e, n, t, i) {
                    var o,
                        r,
                        a,
                        s = new R(),
                        l = e.center,
                        c = e.getRadiusX(),
                        u = i.visible;if (u) for (o = 0; o < n.length; o++) {
                        r = e.pointAt(n[o]), a = new S(l.x + c - i.size, l.y).rotate(n[o], l), s.append(new j({ stroke: { color: i.color, width: i.width } }).moveTo(r).lineTo(a));
                    }return s;
                }var n = this,
                    t = n.arc,
                    i = n.options,
                    o = i.labels.position,
                    r = new R(),
                    a = i.majorTicks.size,
                    s = i.minorTicks.size,
                    l = t.clone(),
                    c = l.getRadiusX();return n.majorTickAngles = n.tickAngles(t, i.majorUnit), n.majorTicks = e(l, n.majorTickAngles, i.majorUnit, i.majorTicks), r.append(n.majorTicks), n._tickDifference = a - s, o === $ && l.setRadiusX(c - a + s).setRadiusY(c - a + s), n.minorTickAngles = n.normalizeTickAngles(n.tickAngles(t, i.minorUnit)), n.minorTicks = e(l, n.minorTickAngles, i.minorUnit, i.minorTicks, i.majorUnit), r.append(n.minorTicks), r;
            }, normalizeTickAngles: function normalizeTickAngles(e) {
                var n,
                    t = this,
                    i = t.options,
                    o = i.majorUnit / i.minorUnit;for (n = e.length - 1; n >= 0; n--) {
                    n % o === 0 && e.splice(n, 1);
                }return e;
            }, tickAngles: function tickAngles(e, n) {
                var t,
                    i = this,
                    o = i.options,
                    r = o.reverse,
                    a = o.max - o.min,
                    s = e.endAngle - e.startAngle,
                    l = e.startAngle,
                    c = a / n,
                    u = s / c,
                    d = [];for (r && (l += s, u = -u), t = 0; t < c; t++) {
                    d.push(_(l, O)), l += u;
                }return _(l) <= e.endAngle && d.push(l), d;
            }, radius: function radius(e) {
                var t = this;return e ? (t.arc.setRadiusX(e).setRadiusY(e), t.repositionTicks(t.majorTicks.children, t.majorTickAngles), t.repositionTicks(t.minorTicks.children, t.minorTickAngles, !0), n) : t.arc.getRadiusX();
            }, repositionTicks: function repositionTicks(e, n, t) {
                var i,
                    o,
                    r,
                    a,
                    s,
                    l = this,
                    c = t ? l._tickDifference || 0 : 0,
                    u = l.arc,
                    d = u.getRadiusX();for (t && l.options.labels.position === $ && 0 !== c && (u = l.arc.clone(), u.setRadiusX(d - c).setRadiusY(d - c)), i = 0; i < e.length; i++) {
                    o = u.pointAt(n[i]), r = e[i].segments, a = o.x - r[0].anchor().x, s = o.y - r[0].anchor().y, e[i].transform(new T.Transformation().translate(a, s));
                }
            } }),
            ae = d.extend({ init: function init(n, t) {
                var i,
                    o,
                    r,
                    a,
                    s,
                    l = this,
                    u = h.ui.themes || {};if (c.destroy(n), e(n).empty(), d.fn.init.call(l, n), l.wrapper = l.element, l._originalOptions = p({}, t), i = p({}, l.options, t), r = i.theme, a = u[r] || u[r.toLowerCase()], o = r && a ? a.gauge : {}, l.options = p({}, o, i), e.isArray(i.pointer)) for (s = 0; s < i.pointer.length; s++) {
                    l.options.pointer[s] = p({}, o.pointer, i.pointer[s]);
                }l.element.addClass("k-gauge"), l.surface = l._createSurface(), l.redraw();
            }, options: { plotArea: {}, theme: "default", renderAs: "", pointer: {}, scale: {}, gaugeArea: {} }, destroy: function destroy() {
                this.surface.destroy(), d.fn.destroy.call(this);
            }, value: function value(e) {
                var t = this,
                    i = t.pointers[0];return 0 === arguments.length ? i.value() : (i.value(e), t._setValueOptions(e), n);
            }, _draw: function _draw() {
                var e = this.surface;e.clear(), e.draw(this._visuals);
            }, exportVisual: function exportVisual() {
                return this._visuals;
            }, allValues: function allValues(n) {
                var t,
                    i = this,
                    o = i.pointers,
                    r = [];if (0 === arguments.length) {
                    for (t = 0; t < o.length; t++) {
                        r.push(o[t].value());
                    }return r;
                }if (e.isArray(n)) for (t = 0; t < n.length; t++) {
                    y(n[t]) && o[t].value(n[t]);
                }i._setValueOptions(n);
            }, _setValueOptions: function _setValueOptions(e) {
                var n,
                    t = [].concat(this.options.pointer);for (e = [].concat(e), n = 0; n < e.length; n++) {
                    t[n].value = e[n];
                }
            }, _resize: function _resize() {
                var e,
                    n = this,
                    t = n.options.transitions;for (n.options.transitions = !1, e = 0; e < n.pointers.length; e++) {
                    n.pointers[e].options.animation.transitions = !1;
                }for (n.redraw(), n.options.transitions = t, e = 0; e < n.pointers.length; e++) {
                    n.pointers[e].options.animation.transitions = t;
                }
            }, redraw: function redraw() {
                var e,
                    n = this,
                    t = p(n._getSize(), n.options.gaugeArea),
                    i = new C([0, 0], [t.width, t.height]);n.surface.clear(), n.gaugeArea = n._createGaugeArea(), n.surface.element.css({ width: t.width, height: t.height }), n._createModel(), e = r(i.bbox(), n._gaugeAreaMargin), n.reflow(e);
            }, _createGaugeArea: function _createGaugeArea() {
                var e,
                    n = this,
                    t = n.options.gaugeArea,
                    i = n.surface.size(),
                    o = t.border || {},
                    a = new C([0, 0], [i.width, i.height]);return n._gaugeAreaMargin = t.margin || Q, o.width > 0 && (a = r(a, o.width)), e = j.fromRect(a, { stroke: { color: o.width ? o.color : "", width: o.width, dashType: o.dashType, lineJoin: "round", lineCap: "round" }, fill: { color: t.background } });
            }, _createSurface: function _createSurface() {
                var n,
                    t = this,
                    i = t.options,
                    o = t._getSize();return o = i.gaugeArea ? p(o, i.gaugeArea) : o, n = e("<div></div>").appendTo(t.element).css({ width: o.width, height: o.height }), new z.Surface.create(n, { type: i.renderAs });
            }, getSize: function getSize() {
                return this._getSize();
            }, _getSize: function _getSize() {
                var e = this,
                    n = e.element,
                    t = n.width(),
                    i = n.height();return t || (t = F), i || (i = Y), { width: t, height: i };
            } }),
            se = ae.extend({ init: function init(e, n) {
                var t = this;ae.fn.init.call(t, e, n), c.notify(t, h.ui);
            }, options: { name: "RadialGauge", transitions: !0, gaugeArea: { background: "" } }, reflow: function reflow(e) {
                var n,
                    t = this,
                    i = t.pointers;for (t.scale.reflow(e), t._initialPlotArea = t.scale.bbox, n = 0; n < i.length; n++) {
                    i[n].reflow(t.scale.arc), t._initialPlotArea = C.union(t._initialPlotArea, i[n].bbox);
                }t.fitScale(e), t.alignScale(e), t._buildVisual(t.gaugeArea, i, t.scale), t._draw();
            }, _buildVisual: function _buildVisual(e, n, t) {
                var i,
                    o,
                    r = new R();for (r.append(e), r.append(t.ticks), r.append(t.ranges), o = 0; o < n.length; o++) {
                    i = n[o], i.render(), r.append(i.elements), i.value(i.options.value);
                }r.append(t.labelElements), this._visuals = r;
            }, fitScale: function fitScale(e) {
                for (var n, t, i, o, r, a = this, s = a.scale, c = s.arc, u = a._initialPlotArea, d = l.abs(a.getDiff(u, e)), p = _(d, O), h = _(-d, O), f = 0, g = 0; !(!(g++ < 100) || (f = r === i ? f + 1 : 0, f > 5) || p != o && (n = a.getPlotBox(p, e, c), 0 <= n && n <= 2) || h != o && (i = a.getPlotBox(h, e, c), 0 <= i && i <= 2) || (o = n > 0 && i > 0 ? 2 * p : n < 0 && i < 0 ? 2 * h : _((p + h) / 2 || 1, O), t = a.getPlotBox(o, e, c), 0 <= t && t <= 2));) {
                    r = i, t > 0 ? (h = o, i = t) : (p = o, n = t);
                }
            }, getPlotBox: function getPlotBox(e, n, t) {
                var i,
                    o = this,
                    r = o.scale,
                    a = o.pointers,
                    s = t.getRadiusX();for (t = t.clone(), t.setRadiusX(s + e).setRadiusY(s + e), r.arc = t, r.reflow(n), o.plotBbox = r.bbox, i = 0; i < a.length; i++) {
                    a[i].reflow(t), o.plotBbox = C.union(o.plotBbox, a[i].bbox);
                }return o.getDiff(o.plotBbox, n);
            }, getDiff: function getDiff(e, n) {
                return l.min(n.width() - e.width(), n.height() - e.height());
            }, alignScale: function alignScale(e) {
                var n,
                    t = this,
                    i = t.plotBbox.center(),
                    o = e.center(),
                    r = i.x - o.x,
                    a = i.y - o.y,
                    s = t.scale,
                    l = t.pointers;for (s.arc.center.x -= r, s.arc.center.y -= a, s.reflow(e), n = 0; n < l.length; n++) {
                    l[n].reflow(s.arc), t.plotBbox = C.union(s.bbox, l[n].bbox);
                }
            }, _createModel: function _createModel() {
                var n,
                    t,
                    i = this,
                    o = i.options,
                    r = o.pointer,
                    a = i.scale = new re(o.scale);for (i.pointers = [], r = e.isArray(r) ? r : [r], t = 0; t < r.length; t++) {
                    n = new oe(a, p({}, r[t], { animation: { transitions: o.transitions } })), i.pointers.push(n);
                }
            } }),
            le = ae.extend({ init: function init(e, n) {
                var t = this;ae.fn.init.call(t, e, n), c.notify(t, h.ui);
            }, options: { name: "LinearGauge", transitions: !0, gaugeArea: { background: "" }, scale: { vertical: !0 } }, reflow: function reflow(e) {
                var n,
                    t = this,
                    i = t.pointers,
                    o = e.origin.x,
                    r = e.origin.y,
                    a = new h.Box2D(o, r, o + e.width(), r + e.height());for (t.scale.reflow(a), n = 0; n < i.length; n++) {
                    i[n].reflow();
                }t.bbox = t._getBox(a), t._alignElements(), t._shrinkElements(), t._buildVisual(), t._draw();
            }, _buildVisual: function _buildVisual() {
                var e,
                    n,
                    t = this,
                    i = new R(),
                    o = t.scale.render(),
                    r = t.pointers;for (i.append(t.gaugeArea), i.append(o), n = 0; n < r.length; n++) {
                    e = r[n], i.append(e.render()), e.value(e.options.value);
                }t._visuals = i;
            }, _createModel: function _createModel() {
                var n,
                    t,
                    i,
                    o = this,
                    r = o.options,
                    a = r.pointer,
                    s = o.scale = new ce(r.scale);for (o.pointers = [], a = e.isArray(a) ? a : [a], i = 0; i < a.length; i++) {
                    t = p({}, a[i], { animation: { transitions: r.transitions } }), n = t.shape === B ? new de(s, t) : new pe(s, t), o.pointers.push(n);
                }
            }, _getSize: function _getSize() {
                var e = this,
                    n = e.element,
                    t = n.width(),
                    i = n.height(),
                    o = e.options.scale.vertical;return t || (t = o ? I : F), i || (i = o ? Y : K), { width: t, height: i };
            }, _getBox: function _getBox(e) {
                var n,
                    t,
                    i = this,
                    o = i.scale,
                    r = i.pointers,
                    a = e.center(),
                    s = r[0].box.clone().wrap(o.box);for (t = 0; t < r.length; t++) {
                    s.wrap(r[t].box.clone());
                }return o.options.vertical ? (n = s.width() / 2, s = new w(a.x - n, e.y1, a.x + n, e.y2)) : (n = s.height() / 2, s = new w(e.x1, a.y - n, e.x2, a.y + n)), s;
            }, _alignElements: function _alignElements() {
                var e,
                    n,
                    t = this,
                    i = t.scale,
                    o = t.pointers,
                    r = i.box,
                    a = o[0].box.clone().wrap(i.box),
                    s = t.bbox;for (n = 0; n < o.length; n++) {
                    a.wrap(o[n].box.clone());
                }for (i.options.vertical ? (e = s.center().x - a.center().x, i.reflow(new w(r.x1 + e, s.y1, r.x2 + e, s.y2))) : (e = s.center().y - a.center().y, i.reflow(new w(s.x1, r.y1 + e, s.x2, r.y2 + e))), n = 0; n < o.length; n++) {
                    o[n].reflow(t.bbox);
                }
            }, _shrinkElements: function _shrinkElements() {
                var e,
                    n = this,
                    t = n.scale,
                    i = n.pointers,
                    o = t.box.clone(),
                    r = t.options.vertical ? "y" : "x",
                    a = i[0].box;for (e = 0; e < i.length; e++) {
                    a.wrap(i[e].box.clone());
                }for (o[r + 1] += l.max(o[r + 1] - a[r + 1], 0), o[r + 2] -= l.max(a[r + 2] - o[r + 2], 0), t.reflow(o), e = 0; e < i.length; e++) {
                    i[e].reflow(n.bbox);
                }
            } }),
            ce = m.extend({ init: function init(e) {
                var n = this;n.options = p({}, n.options, e), n.options = p({}, n.options, { labels: { mirror: n.options.mirror } }), n.options.majorUnit = n.options.majorUnit || f(n.options.min, n.options.max), v.fn.init.call(n, n.options), n.options.minorUnit = n.options.minorUnit || n.options.majorUnit / 10;
            }, options: { min: 0, max: 50, majorTicks: { size: 15, align: J, color: E, width: G, visible: !0 }, minorTicks: { size: 10, align: J, color: E, width: G, visible: !0 }, line: { width: G }, labels: { position: J, padding: 2 }, mirror: !1, _alignLines: !1 }, render: function render() {
                var e = this,
                    n = e.elements = new R(),
                    t = e.renderLabels(),
                    i = e.renderLine(),
                    o = e.renderTicks(),
                    r = e.renderRanges();return n.append(i, t, o, r), n;
            }, renderRanges: function renderRanges() {
                var e,
                    n,
                    t,
                    o,
                    r,
                    a = this,
                    s = a.options,
                    l = s.min,
                    c = s.max,
                    u = s.ranges || [],
                    d = s.vertical,
                    p = s.labels.mirror,
                    h = new R(),
                    f = u.length,
                    g = s.rangeSize || s.minorTicks.size / 2;if (f) for (r = 0; r < f; r++) {
                    e = i(u[r], l, c), n = a.getSlot(e.from, e.to), t = d ? a.lineBox() : n, o = d ? n : a.lineBox(), d ? t.x1 -= g * (p ? -1 : 1) : o.y2 += g * (p ? -1 : 1), h.append(j.fromRect(new C([t.x1, o.y1], [t.x2 - t.x1, o.y2 - o.y1]), { fill: { color: e.color, opacity: e.opacity }, stroke: {} }));
                }return h;
            }, renderLabels: function renderLabels() {
                var e,
                    n = this,
                    i = n.options,
                    o = n.labels,
                    r = new R();for (e = 0; e < o.length; e++) {
                    r.append(t(o[e], i.labels));
                }return r;
            }, renderLine: function renderLine() {
                var e,
                    n = this,
                    t = n.options,
                    i = t.line,
                    o = n.lineBox(),
                    r = new R();return i.width > 0 && i.visible && (e = new j({ stroke: { color: i.color, dashType: i.dashType, width: i.width } }), e.moveTo(o.x1, o.y1).lineTo(o.x2, o.y2), r.append(e)), r;
            }, renderTicks: function renderTicks() {
                function e(e, i) {
                    var a,
                        l = e.length;if (i.visible) for (a = i.skip; a < l; a += i.step) {
                        a % i.skipUnit !== 0 && (s.tickX = r ? o.x2 : o.x2 - i.size, s.tickY = r ? o.y1 - i.size : o.y1, s.position = e[a], t.append(n.renderAxisTick(s, i)));
                    }
                }var n = this,
                    t = new R(),
                    i = n.options,
                    o = n.lineBox(),
                    r = i.labels.mirror,
                    a = i.majorTicks.visible ? i.majorUnit : 0,
                    s = { _alignLines: i._alignLines, vertical: i.vertical };return e(n.getMajorTickPositions(), i.majorTicks), e(n.getMinorTickPositions(), p({}, { skipUnit: a / i.minorUnit }, i.minorTicks)), t;
            }, renderAxisTick: function renderAxisTick(e, n) {
                var t,
                    i,
                    o,
                    r = e.tickX,
                    a = e.tickY,
                    s = e.position;return e.vertical ? (t = new S(r, s), i = new S(r + n.size, s)) : (t = new S(s, a), i = new S(s, a + n.size)), o = new j({ stroke: { color: n.color, width: n.width } }).moveTo(t).lineTo(i);
            } }),
            ue = ie.extend({ init: function init(e, n) {
                var t = this;ie.fn.init.call(t, e, n), t.options = p({ track: { visible: b(n.track) } }, t.options);
            }, options: { shape: X, track: { border: { width: 1 } }, color: E, border: { width: 1 }, opacity: 1, margin: A(3), animation: { type: X }, visible: !0 }, reflow: function reflow() {
                var e,
                    n,
                    t,
                    i = this,
                    o = i.options,
                    r = i.scale,
                    a = r.lineBox(),
                    s = o.track.size || o.size,
                    l = o.size / 2,
                    c = r.options.mirror,
                    u = A(o.margin),
                    d = r.options.vertical,
                    p = d ? u[c ? "left" : "right"] : u[c ? "bottom" : "top"];p = c ? -p : p, d ? (t = new w(a.x1 + p, a.y1, a.x1 + p, a.y2), c ? t.x1 -= s : t.x2 += s, o.shape !== X && (n = new w(a.x2 + p, a.y1 - l, a.x2 + p, a.y2 + l), e = n)) : (t = new w(a.x1, a.y1 - p, a.x2, a.y1 - p), c ? t.y2 += s : t.y1 -= s, o.shape !== X && (n = new w(a.x1 - l, a.y1 - p, a.x2 + l, a.y1 - p), e = n)), i.trackBox = t, i.pointerRangeBox = n, i.box = e || t.clone().pad(o.border.width);
            }, getElementOptions: function getElementOptions() {
                var e = this.options;return { fill: { color: e.color, opacity: e.opacity }, stroke: b(e.border) ? { color: e.border.width ? e.border.color || e.color : "", width: e.border.width, dashType: e.border.dashType, opacity: e.opacity } : null };
            }, _margin: function _margin() {
                var e = this,
                    n = e.options,
                    t = e.scale,
                    i = t.options.mirror,
                    o = A(n.margin),
                    r = t.options.vertical,
                    a = r ? o[i ? "left" : "right"] : o[i ? "bottom" : "top"];return a;
            } }),
            de = ue.extend({ init: function init(e, t) {
                ue.fn.init.call(this, e, t), this.options.size === n && (this.options.size = .6 * this.scale.options.majorTicks.size);
            }, pointerShape: function pointerShape() {
                var e,
                    n,
                    t = this,
                    i = t.options,
                    o = t.scale,
                    r = i.size,
                    a = o.options.vertical,
                    s = r / 2,
                    l = o.options.mirror ? -1 : 1,
                    c = o.options.reverse;return a ? (e = c ? "y2" : "y1", n = [new S(0, 0 - s), new S(0 - l * r, 0), new S(0, 0 + s)]) : (e = c ? "x1" : "x2", n = [new S(0 - s, 0), new S(0, 0 + l * r), new S(0 + s, 0)]), n;
            }, repaint: function repaint() {
                var e = this,
                    n = e.scale,
                    t = e.options,
                    i = new a(e.elements, p(t.animation, { vertical: n.options.vertical, mirror: n.options.mirror, margin: e._margin(t.margin), from: n.getSlot(t._oldValue), to: n.getSlot(t.value) }));t.animation.transitions === !1 && (i.options.duration = 0), i.setup(), i.play();
            }, render: function render() {
                var e,
                    n = this,
                    t = n.options,
                    i = new R(),
                    o = n.scale,
                    r = n.getElementOptions(),
                    a = n.pointerShape(t.value);return t.animation.type = L, i = new j({ stroke: r.stroke, fill: r.fill }).moveTo(a[0]).lineTo(a[1]).lineTo(a[2]).close(), e = o.getSlot(t.value), i.transform(T.transform().translate(e.x1, e.y1)), n.elements = i, i;
            } }),
            pe = ue.extend({ init: function init(e, t) {
                ue.fn.init.call(this, e, t), this.options.size === n && (this.options.size = .3 * this.scale.options.majorTicks.size);
            }, pointerShape: function pointerShape(e) {
                var n,
                    t,
                    i,
                    o = this,
                    r = o.options,
                    a = o.scale,
                    s = a.options.vertical,
                    l = a.options.mirror,
                    c = l == s ? -1 : 1,
                    u = r.size * c,
                    d = a.getSlot(a.options.min),
                    p = a.getSlot(e),
                    h = s ? te : ne,
                    f = s ? ne : te,
                    g = o._margin() * c,
                    m = new S();return m[h] = d[h + "1"], m[f] = d[f + "1"], n = new S(), n[h] = p[h + "1"], n[f] = p[f + "1"], s ? (m.translate(g, 0), n.translate(g, 0)) : (m.translate(0, g), n.translate(0, g)), t = n.clone(), i = m.clone(), s ? (t.translate(u, 0), i.translate(u, 0)) : (t.translate(0, u), i.translate(0, u)), [m, n, t, i];
            }, repaint: function repaint() {
                var e,
                    n = this,
                    t = n.scale,
                    i = n.options,
                    o = n.pointerShape(i.value),
                    r = n.elements.children[0],
                    a = n.pointerShape(i._oldValue);r.moveTo(o[0]).lineTo(o[1]).lineTo(o[2]).lineTo(o[3]).close(), e = new s(r, p(i.animation, { reverse: t.options.reverse, vertical: t.options.vertical, oldPoints: [a[1], a[2]], newPoints: [o[1], o[2]] })), i.animation.transitions === !1 && (e.options.duration = 0), e.setup(), e.play();
            }, render: function render() {
                var e = this,
                    n = new R(),
                    t = e.getElementOptions(),
                    i = new j({ stroke: t.stroke, fill: t.fill });return n.append(i), e.elements = n, n;
            } }),
            he = z.Animation.extend({ init: function init(e, n) {
                z.Animation.fn.init.call(this, e, n), n = this.options, n.duration = l.max(l.abs(n.newAngle - n.oldAngle) / n.duration * 1e3, 1);
            }, options: { easing: q, duration: U }, step: function step(e) {
                var n = this,
                    t = n.options,
                    i = k(t.oldAngle, t.newAngle, e);n.element.transform(T.transform().rotate(i, t.center));
            } });z.AnimationFactory.current.register(ee, he), a = z.Animation.extend({ options: { easing: q, duration: P }, setup: function setup() {
                var e,
                    n,
                    t = this.options,
                    i = t.margin,
                    o = t.from,
                    r = t.to,
                    a = t.vertical ? "x1" : "y1";t.mirror == t.vertical ? (o[a] -= i, r[a] -= i) : (o[a] += i, r[a] += i), e = this.fromScale = new S(o.x1, o.y1), n = this.toScale = new S(r.x1, r.y1), 0 !== t.duration && (t.duration = l.max(e.distanceTo(n) / t.duration * 1e3, 1));
            }, step: function step(e) {
                var n = k(this.fromScale.x, this.toScale.x, e),
                    t = k(this.fromScale.y, this.toScale.y, e);this.element.transform(T.transform().translate(n, t));
            } }), z.AnimationFactory.current.register(L, a), s = z.Animation.extend({ options: { easing: q, speed: P }, setup: function setup() {
                var e = this.options,
                    n = e.newPoints,
                    t = e.oldPoints,
                    i = this.axis = e.vertical ? te : ne,
                    o = this.to = n[0][i],
                    r = this.from = t[0][i];0 !== e.duration && (e.duration = l.max(l.abs(o - r) / e.speed * 1e3, 1)), this._set(r);
            }, step: function step(e) {
                var n = k(this.from, this.to, e);this._set(n);
            }, _set: function _set(e) {
                var n = "set" + this.axis.toUpperCase(),
                    t = this.options.newPoints;t[0][n](e), t[1][n](e);
            } }), z.AnimationFactory.current.register(X, s), h.ui.plugin(se), h.ui.plugin(le), h.ExportMixin.extend(ae.fn), p(h, { Gauge: ae, RadialPointer: oe, LinearPointer: ue, ArrowLinearPointer: de, BarLinearPointer: pe, LinearScale: ce, RadialScale: re, LinearGauge: le, RadialGauge: se });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
});;!function (t, define) {
    define("kendo.tooltip.min", ["kendo.core.min", "kendo.popup.min"], t);
}(function () {
    return function (t, o) {
        function e(t) {
            for (; t.length;) {
                n(t), t = t.parent();
            }
        }function n(t) {
            var o = t.data(s.ns + "title");o && (t.attr("title", o), t.removeData(s.ns + "title"));
        }function i(t) {
            var o = t.attr("title");o && (t.data(s.ns + "title", o), t.attr("title", ""));
        }function r(t) {
            for (; t.length && !t.is("body");) {
                i(t), t = t.parent();
            }
        }var s = window.kendo,
            a = s.ui.Widget,
            l = s.ui.Popup,
            c = s.isFunction,
            u = t.isPlainObject,
            p = t.extend,
            f = t.proxy,
            d = t(document),
            h = s.isLocalUrl,
            m = "_tt_active",
            g = "aria-describedby",
            w = "show",
            v = "hide",
            k = "error",
            _ = "contentLoad",
            y = "requestStart",
            b = "k-content-frame",
            H = '<div role="tooltip" class="k-widget k-tooltip#if (!autoHide) {# k-tooltip-closable#}#">#if (!autoHide) {# <div class="k-tooltip-button"><a href="\\#" class="k-icon k-i-close">close</a></div> #}#<div class="k-tooltip-content"></div>#if (callout){ #<div class="k-callout k-callout-#=dir#"></div>#}#</div>',
            T = s.template("<iframe frameborder='0' class='" + b + "' src='#= content.url #'>This page requires frames in order to show content</iframe>"),
            C = ".kendoTooltip",
            D = { bottom: { origin: "bottom center", position: "top center" }, top: { origin: "top center", position: "bottom center" }, left: { origin: "center left", position: "center right", collision: "fit flip" }, right: { origin: "center right", position: "center left", collision: "fit flip" }, center: { position: "center center", origin: "center center" } },
            x = { top: "bottom", bottom: "top", left: "right", right: "left", center: "center" },
            O = { bottom: "n", top: "s", left: "e", right: "w", center: "n" },
            j = { horizontal: { offset: "top", size: "outerHeight" }, vertical: { offset: "left", size: "outerWidth" } },
            A = function A(t) {
            return t.target.data(s.ns + "title");
        },
            K = a.extend({ init: function init(t, o) {
                var e,
                    n = this;a.fn.init.call(n, t, o), e = n.options.position.match(/left|right/) ? "horizontal" : "vertical", n.dimensions = j[e], n._documentKeyDownHandler = f(n._documentKeyDown, n), n.element.on(n.options.showOn + C, n.options.filter, f(n._showOn, n)).on("mouseenter" + C, n.options.filter, f(n._mouseenter, n)), this.options.autoHide && n.element.on("mouseleave" + C, n.options.filter, f(n._mouseleave, n));
            }, options: { name: "Tooltip", filter: "", content: A, showAfter: 100, callout: !0, position: "bottom", showOn: "mouseenter", autoHide: !0, width: null, height: null, animation: { open: { effects: "fade:in", duration: 0 }, close: { effects: "fade:out", duration: 40, hide: !0 } } }, events: [w, v, _, k, y], _mouseenter: function _mouseenter(o) {
                r(t(o.currentTarget));
            }, _showOn: function _showOn(o) {
                var e = this,
                    n = t(o.currentTarget);e.options.showOn && e.options.showOn.match(/click|focus/) ? e._show(n) : (clearTimeout(e.timeout), e.timeout = setTimeout(function () {
                    e._show(n);
                }, e.options.showAfter));
            }, _appendContent: function _appendContent(t) {
                var o,
                    e = this,
                    n = e.options.content,
                    i = e.content,
                    r = e.options.iframe;u(n) && n.url ? ("iframe" in e.options || (r = !h(n.url)), e.trigger(y, { options: n, target: t }), r ? (i.hide(), o = i.find("." + b)[0], o ? o.src = n.url || o.src : i.html(T({ content: n })), i.find("." + b).off("load" + C).on("load" + C, function () {
                    e.trigger(_), i.show();
                })) : (i.empty(), s.ui.progress(i, !0), e._ajaxRequest(n))) : n && c(n) ? (n = n({ sender: this, target: t }), i.html(n || "")) : i.html(n), e.angular("compile", function () {
                    return { elements: i };
                });
            }, _ajaxRequest: function _ajaxRequest(t) {
                var o = this;jQuery.ajax(p({ type: "GET", dataType: "html", cache: !1, error: function error(t, e) {
                        s.ui.progress(o.content, !1), o.trigger(k, { status: e, xhr: t });
                    }, success: f(function (t) {
                        s.ui.progress(o.content, !1), o.content.html(t), o.trigger(_);
                    }, o) }, t));
            }, _documentKeyDown: function _documentKeyDown(t) {
                t.keyCode === s.keys.ESC && this.hide();
            }, refresh: function refresh() {
                var t = this,
                    o = t.popup;o && o.options.anchor && t._appendContent(o.options.anchor);
            }, hide: function hide() {
                this.popup && this.popup.close();
            }, show: function show(t) {
                t = t || this.element, r(t), this._show(t);
            }, _show: function _show(t) {
                var o = this,
                    n = o.target();o.popup || o._initPopup(), n && n[0] != t[0] && (o.popup.close(), o.popup.element.kendoStop(!0, !0)), n && n[0] == t[0] || (o._appendContent(t), o.popup.options.anchor = t), o.popup.one("deactivate", function () {
                    e(t), t.removeAttr(g), this.element.removeAttr("id").attr("aria-hidden", !0), d.off("keydown" + C, o._documentKeyDownHandler);
                }), o.popup.open();
            }, _initPopup: function _initPopup() {
                var o = this,
                    e = o.options,
                    n = t(s.template(H)({ callout: e.callout && "center" !== e.position, dir: O[e.position], autoHide: e.autoHide }));o.popup = new l(n, p({ activate: function activate() {
                        var t = this.options.anchor,
                            n = t[0].id || o.element[0].id;n && (t.attr(g, n + m), this.element.attr("id", n + m)), e.callout && o._positionCallout(), this.element.removeAttr("aria-hidden"), d.on("keydown" + C, o._documentKeyDownHandler), o.trigger(w);
                    }, close: function close() {
                        o.trigger(v);
                    }, copyAnchorStyles: !1, animation: e.animation }, D[e.position])), n.css({ width: e.width, height: e.height }), o.content = n.find(".k-tooltip-content"), o.arrow = n.find(".k-callout"), e.autoHide ? n.on("mouseleave" + C, f(o._mouseleave, o)) : n.on("click" + C, ".k-tooltip-button", f(o._closeButtonClick, o));
            }, _closeButtonClick: function _closeButtonClick(t) {
                t.preventDefault(), this.hide();
            }, _mouseleave: function _mouseleave(o) {
                if (this.popup) {
                    var n = t(o.currentTarget),
                        i = n.offset(),
                        r = o.pageX,
                        a = o.pageY;if (i.right = i.left + s._outerWidth(n), i.bottom = i.top + s._outerHeight(n), r > i.left && r < i.right && a > i.top && a < i.bottom) return;this.popup.close();
                } else e(t(o.currentTarget));clearTimeout(this.timeout);
            }, _positionCallout: function _positionCallout() {
                var o = this,
                    e = o.options.position,
                    n = o.dimensions,
                    i = n.offset,
                    r = o.popup,
                    s = r.options.anchor,
                    a = t(s).offset(),
                    l = parseInt(o.arrow.css("border-top-width"), 10),
                    c = t(r.element).offset(),
                    u = O[r.flipped ? x[e] : e],
                    p = a[i] - c[i] + t(s)[n.size]() / 2 - l;o.arrow.removeClass("k-callout-n k-callout-s k-callout-w k-callout-e").addClass("k-callout-" + u).css(i, p);
            }, target: function target() {
                return this.popup ? this.popup.options.anchor : null;
            }, destroy: function destroy() {
                var t = this.popup;t && (t.element.off(C), t.destroy()), clearTimeout(this.timeout), this.element.off(C), d.off("keydown" + C, this._documentKeyDownHandler), a.fn.destroy.call(this);
            } });s.ui.plugin(K);
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, o, e) {
    (e || o)();
});;!function (t, define) {
    define("util/main.min", ["kendo.core.min"], t);
}(function () {
    return function () {
        function t(t) {
            return (typeof t === "undefined" ? "undefined" : _typeof(t)) !== R;
        }function e(t, e) {
            var n = i(e);return N.round(t * n) / n;
        }function i(t) {
            return t ? N.pow(10, t) : 1;
        }function n(t, e, i) {
            return N.max(N.min(t, i), e);
        }function o(t) {
            return t * j;
        }function a(t) {
            return t / j;
        }function r(t) {
            return "number" == typeof t && !isNaN(t);
        }function s(e, i) {
            return t(e) ? e : i;
        }function h(t) {
            return t * t;
        }function l(t) {
            var e,
                i = [];for (e in t) {
                i.push(e + t[e]);
            }return i.sort().join("");
        }function c(t) {
            var e,
                i = 2166136261;for (e = 0; e < t.length; ++e) {
                i += (i << 1) + (i << 4) + (i << 7) + (i << 8) + (i << 24), i ^= t.charCodeAt(e);
            }return i >>> 0;
        }function u(t) {
            return c(l(t));
        }function d(t) {
            var e,
                i = t.length,
                n = D,
                o = V;for (e = 0; e < i; e++) {
                o = N.max(o, t[e]), n = N.min(n, t[e]);
            }return { min: n, max: o };
        }function f(t) {
            return d(t).min;
        }function p(t) {
            return d(t).max;
        }function m(t) {
            return v(t).min;
        }function _(t) {
            return v(t).max;
        }function v(t) {
            var e,
                i,
                n,
                o = D,
                a = V;for (e = 0, i = t.length; e < i; e++) {
                n = t[e], null !== n && isFinite(n) && (o = N.min(o, n), a = N.max(a, n));
            }return { min: o === D ? void 0 : o, max: a === V ? void 0 : a };
        }function g(t) {
            if (t) return t[t.length - 1];
        }function y(t, e) {
            return t.push.apply(t, e), t;
        }function w(t) {
            return P.template(t, { useWithBlock: !1, paramName: "d" });
        }function b(e, i) {
            return t(i) && null !== i ? " " + e + "='" + i + "' " : "";
        }function x(t) {
            var e,
                i = "";for (e = 0; e < t.length; e++) {
                i += b(t[e][0], t[e][1]);
            }return i;
        }function k(e) {
            var i,
                n,
                o = "";for (i = 0; i < e.length; i++) {
                n = e[i][1], t(n) && (o += e[i][0] + ":" + n + ";");
            }if ("" !== o) return o;
        }function z(t) {
            return "string" != typeof t && (t += "px"), t;
        }function T(t) {
            var e,
                i,
                n = [];if (t) for (e = P.toHyphens(t).split("-"), i = 0; i < e.length; i++) {
                n.push("k-pos-" + e[i]);
            }return n.join(" ");
        }function S(e) {
            return "" === e || null === e || "none" === e || "transparent" === e || !t(e);
        }function C(t) {
            for (var e = { 1: "i", 10: "x", 100: "c", 2: "ii", 20: "xx", 200: "cc", 3: "iii", 30: "xxx", 300: "ccc", 4: "iv", 40: "xl", 400: "cd", 5: "v", 50: "l", 500: "d", 6: "vi", 60: "lx", 600: "dc", 7: "vii", 70: "lxx", 700: "dcc", 8: "viii", 80: "lxxx", 800: "dccc", 9: "ix", 90: "xc", 900: "cm", 1e3: "m" }, i = [1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], n = ""; t > 0;) {
                t < i[0] ? i.shift() : (n += e[i[0]], t -= i[0]);
            }return n;
        }function E(t) {
            var e, i, n, o, a;for (t = t.toLowerCase(), e = { i: 1, v: 5, x: 10, l: 50, c: 100, d: 500, m: 1e3 }, i = 0, n = 0, o = 0; o < t.length; ++o) {
                if (a = e[t.charAt(o)], !a) return null;i += a, a > n && (i -= 2 * n), n = a;
            }return i;
        }function L(t) {
            var e = Object.create(null);return function () {
                var i,
                    n = "";for (i = arguments.length; --i >= 0;) {
                    n += ":" + arguments[i];
                }return n in e ? e[n] : e[n] = t.apply(this, arguments);
            };
        }function A(t) {
            for (var e, i, n = [], o = 0, a = t.length; o < a;) {
                e = t.charCodeAt(o++), e >= 55296 && e <= 56319 && o < a ? (i = t.charCodeAt(o++), 56320 == (64512 & i) ? n.push(((1023 & e) << 10) + (1023 & i) + 65536) : (n.push(e), o--)) : n.push(e);
            }return n;
        }function M(t) {
            return t.map(function (t) {
                var e = "";return t > 65535 && (t -= 65536, e += String.fromCharCode(t >>> 10 & 1023 | 55296), t = 56320 | 1023 & t), e += String.fromCharCode(t);
            }).join("");
        }function O(t, e) {
            function i(t, i) {
                for (var n = [], o = 0, a = 0, r = 0; o < t.length && a < i.length;) {
                    e(t[o], i[a]) <= 0 ? n[r++] = t[o++] : n[r++] = i[a++];
                }return o < t.length && n.push.apply(n, t.slice(o)), a < i.length && n.push.apply(n, i.slice(a)), n;
            }return t.length < 2 ? t.slice() : function n(t) {
                var e, o, a;return t.length <= 1 ? t : (e = Math.floor(t.length / 2), o = t.slice(0, e), a = t.slice(e), o = n(o), a = n(a), i(o, a));
            }(t);
        }var N = Math,
            P = window.kendo,
            I = P.deepExtend,
            j = N.PI / 180,
            D = Number.MAX_VALUE,
            V = -Number.MAX_VALUE,
            R = "undefined",
            Z = Date.now;Z || (Z = function Z() {
            return new Date().getTime();
        }), I(P, { util: { MAX_NUM: D, MIN_NUM: V, append: y, arrayLimits: d, arrayMin: f, arrayMax: p, defined: t, deg: a, hashKey: c, hashObject: u, isNumber: r, isTransparent: S, last: g, limitValue: n, now: Z, objectKey: l, round: e, rad: o, renderAttr: b, renderAllAttr: x, renderPos: T, renderSize: z, renderStyle: k, renderTemplate: w, sparseArrayLimits: v, sparseArrayMin: m, sparseArrayMax: _, sqr: h, valueOrDefault: s, romanToArabic: E, arabicToRoman: C, memoize: L, ucs2encode: M, ucs2decode: A, mergeSort: O } }), P.drawing.util = P.util, P.dataviz.util = P.util;
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("util/text-metrics.min", ["kendo.core.min", "util/main.min"], t);
}(function () {
    !function (t) {
        function e() {
            return { width: 0, height: 0, baseline: 0 };
        }function i(t, e, i) {
            return u.current.measure(t, e, i);
        }function n(t, e) {
            var i = [];if (t.length > 0 && document.fonts) {
                try {
                    i = t.map(function (t) {
                        return document.fonts.load(t);
                    });
                } catch (n) {
                    a.logToConsole(n);
                }Promise.all(i).then(e, e);
            } else e();
        }var o = document,
            a = window.kendo,
            r = a.Class,
            s = a.util,
            h = s.defined,
            l = r.extend({ init: function init(t) {
                this._size = t, this._length = 0, this._map = {};
            }, put: function put(t, e) {
                var i = this,
                    n = i._map,
                    o = { key: t, value: e };n[t] = o, i._head ? (i._tail.newer = o, o.older = i._tail, i._tail = o) : i._head = i._tail = o, i._length >= i._size ? (n[i._head.key] = null, i._head = i._head.newer, i._head.older = null) : i._length++;
            }, get: function get(t) {
                var e = this,
                    i = e._map[t];if (i) return i === e._head && i !== e._tail && (e._head = i.newer, e._head.older = null), i !== e._tail && (i.older && (i.older.newer = i.newer, i.newer.older = i.older), i.older = e._tail, i.newer = null, e._tail.newer = i, e._tail = i), i.value;
            } }),
            c = t("<div style='position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;padding: 0 !important; margin: 0 !important; border: 0 !important;line-height: normal !important; visibility: hidden !important; white-space: nowrap!important;' />")[0],
            u = r.extend({ init: function init(t) {
                this._cache = new l(1e3), this._initOptions(t);
            }, options: { baselineMarkerSize: 1 }, measure: function measure(i, n, a) {
                var r, l, u, d, f, p, m, _;if (!i) return e();if (r = s.objectKey(n), l = s.hashKey(i + r), u = this._cache.get(l), u) return u;d = e(), f = a ? a : c, p = this._baselineMarker().cloneNode(!1);for (m in n) {
                    _ = n[m], h(_) && (f.style[m] = _);
                }return t(f).text(i), f.appendChild(p), o.body.appendChild(f), (i + "").length && (d.width = f.offsetWidth - this.options.baselineMarkerSize, d.height = f.offsetHeight, d.baseline = p.offsetTop + this.options.baselineMarkerSize), d.width > 0 && d.height > 0 && this._cache.put(l, d), f.parentNode.removeChild(f), d;
            }, _baselineMarker: function _baselineMarker() {
                return t("<div class='k-baseline-marker' style='display: inline-block; vertical-align: baseline;width: " + this.options.baselineMarkerSize + "px; height: " + this.options.baselineMarkerSize + "px;overflow: hidden;' />")[0];
            } });u.current = new u(), a.util.TextMetrics = u, a.util.LRUCache = l, a.util.loadFonts = n, a.util.measureText = i;
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("util/base64.min", ["util/main.min"], t);
}(function () {
    return function () {
        function t(t) {
            var i,
                n,
                o,
                r,
                s,
                h,
                l,
                c = "",
                u = 0;for (t = e(t); u < t.length;) {
                i = t.charCodeAt(u++), n = t.charCodeAt(u++), o = t.charCodeAt(u++), r = i >> 2, s = (3 & i) << 4 | n >> 4, h = (15 & n) << 2 | o >> 6, l = 63 & o, isNaN(n) ? h = l = 64 : isNaN(o) && (l = 64), c = c + a.charAt(r) + a.charAt(s) + a.charAt(h) + a.charAt(l);
            }return c;
        }function e(t) {
            var e,
                i,
                n = "";for (e = 0; e < t.length; e++) {
                i = t.charCodeAt(e), i < 128 ? n += o(i) : i < 2048 ? (n += o(192 | i >>> 6), n += o(128 | 63 & i)) : i < 65536 && (n += o(224 | i >>> 12), n += o(128 | i >>> 6 & 63), n += o(128 | 63 & i));
            }return n;
        }var i = window.kendo,
            n = i.deepExtend,
            o = String.fromCharCode,
            a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n(i.util, { encodeBase64: t, encodeUTF8: e });
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("mixins/observers.min", ["kendo.core.min"], t);
}(function () {
    return function (t) {
        var e = Math,
            i = window.kendo,
            n = i.deepExtend,
            o = t.inArray,
            a = { observers: function observers() {
                return this._observers = this._observers || [];
            }, addObserver: function addObserver(t) {
                return this._observers ? this._observers.push(t) : this._observers = [t], this;
            }, removeObserver: function removeObserver(t) {
                var e = this.observers(),
                    i = o(t, e);return i != -1 && e.splice(i, 1), this;
            }, trigger: function trigger(t, e) {
                var i,
                    n,
                    o = this._observers;if (o && !this._suspended) for (n = 0; n < o.length; n++) {
                    i = o[n], i[t] && i[t](e);
                }return this;
            }, optionsChange: function optionsChange(t) {
                t = t || {}, t.element = this, this.trigger("optionsChange", t);
            }, geometryChange: function geometryChange() {
                this.trigger("geometryChange", { element: this });
            }, suspend: function suspend() {
                return this._suspended = (this._suspended || 0) + 1, this;
            }, resume: function resume() {
                return this._suspended = e.max((this._suspended || 0) - 1, 0), this;
            }, _observerField: function _observerField(t, e) {
                this[t] && this[t].removeObserver(this), this[t] = e, e.addObserver(this);
            } };n(i, { mixins: { ObserversMixin: a } });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/map/location.min", ["kendo.drawing.min"], t);
}(function () {
    !function (t, e) {
        var i,
            n = Math,
            o = n.abs,
            a = n.atan,
            r = n.atan2,
            s = n.cos,
            h = n.max,
            l = n.min,
            c = n.sin,
            u = n.tan,
            d = window.kendo,
            f = d.Class,
            p = d.dataviz,
            m = d.deepExtend,
            _ = d.util,
            v = _.defined,
            g = _.deg,
            y = _.rad,
            w = _.round,
            b = _.sqr,
            x = _.valueOrDefault,
            k = f.extend({ init: function init(t, e) {
                1 === arguments.length ? (this.lat = t[0], this.lng = t[1]) : (this.lat = t, this.lng = e);
            }, DISTANCE_ITERATIONS: 100, DISTANCE_CONVERGENCE: 1e-12, DISTANCE_PRECISION: 2, FORMAT: "{0:N6},{1:N6}", toArray: function toArray() {
                return [this.lat, this.lng];
            }, equals: function equals(t) {
                return t && t.lat === this.lat && t.lng === this.lng;
            }, clone: function clone() {
                return new k(this.lat, this.lng);
            }, round: function round(t) {
                return this.lng = w(this.lng, t), this.lat = w(this.lat, t), this;
            }, wrap: function wrap() {
                return this.lng = this.lng % 180, this.lat = this.lat % 90, this;
            }, distanceTo: function distanceTo(t, e) {
                return this.greatCircleTo(t, e).distance;
            }, destination: function destination(t, e, i) {
                var o, a, h, l, u;return e = y(e), i = i || p.map.datums.WGS84, o = y(this.lat), a = y(this.lng), h = t / d.dataviz.map.datums.WGS84.a, l = n.asin(c(o) * s(h) + s(o) * c(h) * s(e)), u = a + r(c(e) * c(h) * s(o), s(h) - c(o) * c(l)), new k(g(l), g(u));
            }, greatCircleTo: function greatCircleTo(t, e) {
                var i, h, l, d, f, m, _, v, x, z, T, S, C, E, L, A, M, O, N, P, I, j, D, V, R, Z, F, U, G;if (t = k.create(t), e = e || p.map.datums.WGS84, !t || this.clone().round(8).equals(t.clone().round(8))) return { distance: 0, azimuthFrom: 0, azimuthTo: 0 };for (i = e.a, h = e.b, l = e.f, d = y(t.lng - this.lng), f = a((1 - l) * u(y(this.lat))), m = c(f), _ = s(f), v = a((1 - l) * u(y(t.lat))), x = c(v), z = s(v), T = d, C = this.DISTANCE_ITERATIONS, E = !1; !E && C-- > 0;) {
                    L = c(T), A = s(T), M = n.sqrt(b(z * L) + b(_ * x - m * z * A)), N = m * x + _ * z * A, I = r(M, N), j = _ * z * L / M, O = 1 - b(j), P = 0, 0 !== O && (P = N - 2 * m * x / O), S = T, D = l / 16 * O * (4 + l * (4 - 3 * O)), T = d + (1 - D) * l * j * (I + D * M * (P + D * N * (-1 + 2 * b(P)))), E = o(T - S) <= this.DISTANCE_CONVERGENCE;
                }return V = O * (b(i) - b(h)) / b(h), R = 1 + V / 16384 * (4096 + V * (-768 + V * (320 - 175 * V))), Z = V / 1024 * (256 + V * (-128 + V * (74 - 47 * V))), F = Z * M * (P + Z / 4 * (N * (-1 + 2 * b(P)) - Z / 6 * P * (-3 + 4 * b(M)) * (-3 + 4 * b(P)))), U = r(z * L, _ * x - m * z * A), G = r(_ * L, -m * z + _ * x * A), { distance: w(h * R * (I - F), this.DISTANCE_PRECISION), azimuthFrom: g(U), azimuthTo: g(G) };
            } });k.fn.toString = function () {
            return d.format(this.FORMAT, this.lat, this.lng);
        }, k.fromLngLat = function (t) {
            return new k(t[1], t[0]);
        }, k.fromLatLng = function (t) {
            return new k(t[0], t[1]);
        }, k.create = function (t, e) {
            if (v(t)) return t instanceof k ? t.clone() : 1 === arguments.length && 2 === t.length ? k.fromLatLng(t) : new k(t, e);
        }, i = f.extend({ init: function init(t, e) {
                t = k.create(t), e = k.create(e), t.lng + 180 > e.lng + 180 && t.lat + 90 < e.lat + 90 ? (this.se = t, this.nw = e) : (this.se = e, this.nw = t);
            }, contains: function contains(t) {
                var e = this.nw,
                    i = this.se,
                    n = x(t.lng, t[1]),
                    o = x(t.lat, t[0]);return t && n + 180 >= e.lng + 180 && n + 180 <= i.lng + 180 && o + 90 >= i.lat + 90 && o + 90 <= e.lat + 90;
            }, center: function center() {
                var t = this.nw,
                    e = this.se,
                    i = t.lng + (e.lng - t.lng) / 2,
                    n = t.lat + (e.lat - t.lat) / 2;return new k(n, i);
            }, containsAny: function containsAny(t) {
                var e,
                    i = !1;for (e = 0; e < t.length; e++) {
                    i = i || this.contains(t[e]);
                }return i;
            }, include: function include(t) {
                var e = this.nw,
                    i = this.se,
                    n = x(t.lng, t[1]),
                    o = x(t.lat, t[0]);e.lng = l(e.lng, n), e.lat = h(e.lat, o), i.lng = h(i.lng, n), i.lat = l(i.lat, o);
            }, includeAll: function includeAll(t) {
                for (var e = 0; e < t.length; e++) {
                    this.include(t[e]);
                }
            }, edges: function edges() {
                var t = this.nw,
                    e = this.se;return { nw: this.nw, ne: new k(t.lat, e.lng), se: this.se, sw: new k(e.lat, t.lng) };
            }, toArray: function toArray() {
                var t = this.nw,
                    e = this.se;return [t, new k(t.lat, e.lng), e, new k(e.lat, t.lng)];
            }, overlaps: function overlaps(t) {
                return this.containsAny(t.toArray()) || t.containsAny(this.toArray());
            } }), i.World = new i([90, -180], [-90, 180]), i.create = function (t, n) {
            return t instanceof i ? t : t && n ? new i(t, n) : t && 4 === t.length && !n ? new i([t[0], t[1]], [t[2], t[3]]) : e;
        }, m(p, { map: { Extent: i, Location: k } });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/map/attribution.min", ["kendo.drawing.min"], t);
}(function () {
    !function () {
        var t = window.kendo,
            e = t.ui.Widget,
            i = t.template,
            n = t.util.valueOrDefault,
            o = t.util.defined,
            a = e.extend({ init: function init(t, i) {
                e.fn.init.call(this, t, i), this._initOptions(i), this.items = [], this.element.addClass("k-widget k-attribution");
            }, options: { name: "Attribution", separator: "&nbsp;|&nbsp;", itemTemplate: "#= text #" }, filter: function filter(t, e) {
                this._extent = t, this._zoom = e, this._render();
            }, add: function add(t) {
                o(t) && ("string" == typeof t && (t = { text: t }), this.items.push(t), this._render());
            }, remove: function remove(t) {
                var e,
                    i,
                    n = [];for (e = 0; e < this.items.length; e++) {
                    i = this.items[e], i.text !== t && n.push(i);
                }this.items = n, this._render();
            }, clear: function clear() {
                this.items = [], this.element.empty();
            }, _render: function _render() {
                var t,
                    e,
                    n,
                    o = [],
                    a = i(this.options.itemTemplate);for (t = 0; t < this.items.length; t++) {
                    e = this.items[t], n = this._itemText(e), "" !== n && o.push(a({ text: n }));
                }o.length > 0 ? this.element.empty().append(o.join(this.options.separator)).show() : this.element.hide();
            }, _itemText: function _itemText(t) {
                var e = "",
                    i = this._inZoomLevel(t.minZoom, t.maxZoom),
                    n = this._inArea(t.extent);return i && n && (e += t.text), e;
            }, _inZoomLevel: function _inZoomLevel(t, e) {
                var i = !0;return t = n(t, -Number.MAX_VALUE), e = n(e, Number.MAX_VALUE), i = this._zoom > t && this._zoom < e;
            }, _inArea: function _inArea(t) {
                var e = !0;return t && (e = t.contains(this._extent)), e;
            } });t.dataviz.ui.plugin(a);
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/map/navigator.min", ["kendo.core.min"], t);
}(function () {
    !function (t) {
        function e(t) {
            return i.format('<button class="k-button k-navigator-{0}"><span class="k-icon k-i-arrow-{0}"/></button>', t);
        }var i = window.kendo,
            n = i.ui.Widget,
            o = i.keys,
            a = t.proxy,
            r = ".kendoNavigator",
            s = e("n") + e("e") + e("s") + e("w"),
            h = n.extend({ init: function init(t, e) {
                n.fn.init.call(this, t, e), this._initOptions(e), this.element.addClass("k-widget k-header k-shadow k-navigator").append(s).on("click" + r, ".k-button", a(this, "_click"));var o = this.element.parent().closest("[" + i.attr("role") + "]");this._keyroot = o.length > 0 ? o : this.element, this._tabindex(this._keyroot), this._keydown = a(this._keydown, this), this._keyroot.on("keydown", this._keydown);
            }, options: { name: "Navigator", panStep: 1 }, events: ["pan"], dispose: function dispose() {
                this._keyroot.off("keydown", this._keydown);
            }, _pan: function _pan(t, e) {
                var i = this.options.panStep;this.trigger("pan", { x: t * i, y: e * i });
            }, _click: function _click(e) {
                var i = 0,
                    n = 0,
                    o = t(e.currentTarget);o.is(".k-navigator-n") ? n = 1 : o.is(".k-navigator-s") ? n = -1 : o.is(".k-navigator-e") ? i = 1 : o.is(".k-navigator-w") && (i = -1), this._pan(i, n), e.preventDefault();
            }, _keydown: function _keydown(t) {
                switch (t.which) {case o.UP:
                        this._pan(0, 1), t.preventDefault();break;case o.DOWN:
                        this._pan(0, -1), t.preventDefault();break;case o.RIGHT:
                        this._pan(1, 0), t.preventDefault();break;case o.LEFT:
                        this._pan(-1, 0), t.preventDefault();}
            } });i.dataviz.ui.plugin(h);
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/map/zoom.min", ["kendo.core.min"], t);
}(function () {
    !function (t) {
        function e(t, e) {
            return i.format('<button class="k-button k-zoom-{0}" title="zoom-{0}">{1}</button>', t, e);
        }var i = window.kendo,
            n = i.ui.Widget,
            o = i.keys,
            a = t.proxy,
            r = ".kendoZoomControl",
            s = e("in", "+") + e("out", "-"),
            h = 187,
            l = 189,
            c = 61,
            u = 173,
            d = n.extend({ init: function init(t, e) {
                n.fn.init.call(this, t, e), this._initOptions(e), this.element.addClass("k-widget k-zoom-control k-button-wrap k-buttons-horizontal").append(s).on("click" + r, ".k-button", a(this, "_click"));var o = this.element.parent().closest("[" + i.attr("role") + "]");this._keyroot = o.length > 0 ? o : this.element, this._tabindex(this._keyroot), this._keydown = a(this._keydown, this), this._keyroot.on("keydown", this._keydown);
            }, options: { name: "ZoomControl", zoomStep: 1 }, events: ["change"], _change: function _change(t) {
                var e = this.options.zoomStep;this.trigger("change", { delta: t * e });
            }, _click: function _click(e) {
                var i = t(e.currentTarget),
                    n = 1;i.is(".k-zoom-out") && (n = -1), this._change(n), e.preventDefault();
            }, _keydown: function _keydown(t) {
                switch (t.which) {case o.NUMPAD_PLUS:case h:case c:
                        this._change(1);break;case o.NUMPAD_MINUS:case l:case u:
                        this._change(-1);}
            } });i.dataviz.ui.plugin(d);
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/map/crs.min", ["dataviz/map/location.min", "kendo.drawing.min"], t);
}(function () {
    !function (t, e) {
        var i = Math,
            n = i.atan,
            o = i.exp,
            a = i.pow,
            r = i.sin,
            s = i.log,
            h = i.tan,
            l = window.kendo,
            c = l.Class,
            u = l.dataviz,
            d = l.deepExtend,
            f = l.geometry,
            p = f.Point,
            m = u.map,
            _ = m.Location,
            v = l.util,
            g = v.rad,
            y = v.deg,
            w = v.limitValue,
            b = i.PI,
            x = b / 2,
            k = b / 4,
            z = b / 180,
            T = { a: 6378137, b: 6356752.314245179, f: .0033528106647474805, e: .08181919084262149 },
            S = c.extend({ init: function init(t) {
                this._initOptions(t);
            }, MAX_LNG: 180, MAX_LAT: 85.0840590501, INVERSE_ITERATIONS: 15, INVERSE_CONVERGENCE: 1e-12, options: { centralMeridian: 0, datum: T }, forward: function forward(t, e) {
                var i = this,
                    n = i.options,
                    o = n.datum,
                    a = o.a,
                    r = n.centralMeridian,
                    s = w(t.lat, -i.MAX_LAT, i.MAX_LAT),
                    h = e ? w(t.lng, -i.MAX_LNG, i.MAX_LNG) : t.lng,
                    l = g(h - r) * a,
                    c = i._projectLat(s);return new p(l, c);
            }, _projectLat: function _projectLat(t) {
                var e = this.options.datum,
                    i = e.e,
                    n = e.a,
                    o = g(t),
                    l = h(k + o / 2),
                    c = i * r(o),
                    u = a((1 - c) / (1 + c), i / 2);return n * s(l * u);
            }, inverse: function inverse(t, e) {
                var i = this,
                    n = i.options,
                    o = n.datum,
                    a = o.a,
                    r = n.centralMeridian,
                    s = t.x / (z * a) + r,
                    h = w(i._inverseY(t.y), -i.MAX_LAT, i.MAX_LAT);return e && (s = w(s, -i.MAX_LNG, i.MAX_LNG)), new _(h, s);
            }, _inverseY: function _inverseY(t) {
                var e,
                    s,
                    h,
                    l,
                    c = this,
                    u = c.options.datum,
                    d = u.a,
                    f = u.e,
                    p = f / 2,
                    m = o(-t / d),
                    _ = x - 2 * n(m);for (e = 0; e <= c.INVERSE_ITERATIONS && (s = f * r(_), h = a((1 - s) / (1 + s), p), l = x - 2 * n(m * h) - _, _ += l, !(i.abs(l) <= c.INVERSE_CONVERGENCE)); e++) {}return y(_);
            } }),
            C = S.extend({ MAX_LAT: 85.0511287798, _projectLat: function _projectLat(t) {
                var e = this.options.datum.a,
                    i = g(t),
                    n = h(k + i / 2);return e * s(n);
            }, _inverseY: function _inverseY(t) {
                var e = this.options.datum.a,
                    i = o(-t / e);return y(x - 2 * n(i));
            } }),
            E = c.extend({ forward: function forward(t) {
                return new p(t.lng, t.lat);
            }, inverse: function inverse(t) {
                return new _(t.y, t.x);
            } }),
            L = c.extend({ init: function init() {
                var t = this,
                    e = t._proj = new C(),
                    i = this.c = 2 * b * e.options.datum.a;this._tm = f.transform().translate(.5, .5).scale(1 / i, -1 / i), this._itm = f.transform().scale(i, -i).translate(-.5, -.5);
            }, toPoint: function toPoint(t, e, i) {
                var n = this._proj.forward(t, i);return n.transform(this._tm).scale(e || 1);
            }, toLocation: function toLocation(t, e, i) {
                return t = t.clone().scale(1 / (e || 1)).transform(this._itm), this._proj.inverse(t, i);
            } }),
            A = c.extend({ init: function init() {
                this._proj = new S();
            }, toPoint: function toPoint(t) {
                return this._proj.forward(t);
            }, toLocation: function toLocation(t) {
                return this._proj.inverse(t);
            } }),
            M = c.extend({ init: function init() {
                this._proj = new E();
            }, toPoint: function toPoint(t) {
                return this._proj.forward(t);
            }, toLocation: function toLocation(t) {
                return this._proj.inverse(t);
            } });d(u, { map: { crs: { EPSG3395: A, EPSG3857: L, EPSG4326: M }, datums: { WGS84: T }, projections: { Equirectangular: E, Mercator: S, SphericalMercator: C } } });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/map/layers/base.min", ["kendo.core.min", "dataviz/map/location.min"], t);
}(function () {
    !function (t, e) {
        var i = t.proxy,
            n = window.kendo,
            o = n.Class,
            a = n.dataviz,
            r = n.deepExtend,
            s = a.map.Extent,
            h = n.util,
            l = h.defined,
            c = o.extend({ init: function init(e, n) {
                this._initOptions(n), this.map = e, this.element = t("<div class='k-layer'></div>").css({ zIndex: this.options.zIndex, opacity: this.options.opacity }).appendTo(e.scrollElement), this._beforeReset = i(this._beforeReset, this), this._reset = i(this._reset, this), this._resize = i(this._resize, this), this._panEnd = i(this._panEnd, this), this._activate(), this._updateAttribution();
            }, destroy: function destroy() {
                this._deactivate();
            }, show: function show() {
                this.reset(), this._activate(), this._applyExtent(!0);
            }, hide: function hide() {
                this._deactivate(), this._setVisibility(!1);
            }, reset: function reset() {
                this._beforeReset(), this._reset();
            }, _reset: function _reset() {
                this._applyExtent();
            }, _beforeReset: t.noop, _resize: t.noop, _panEnd: function _panEnd() {
                this._applyExtent();
            }, _applyExtent: function _applyExtent() {
                var t = this.options,
                    e = this.map.zoom(),
                    i = !l(t.minZoom) || e >= t.minZoom,
                    n = !l(t.maxZoom) || e <= t.maxZoom,
                    o = s.create(t.extent),
                    a = !o || o.overlaps(this.map.extent());this._setVisibility(i && n && a);
            }, _setVisibility: function _setVisibility(t) {
                this.element.css("display", t ? "" : "none");
            }, _activate: function _activate() {
                var t = this.map;t.bind("beforeReset", this._beforeReset), t.bind("reset", this._reset), t.bind("resize", this._resize), t.bind("panEnd", this._panEnd);
            }, _deactivate: function _deactivate() {
                var t = this.map;t.unbind("beforeReset", this._beforeReset), t.unbind("reset", this._reset), t.unbind("resize", this._resize), t.unbind("panEnd", this._panEnd);
            }, _updateAttribution: function _updateAttribution() {
                var t = this.map.attribution;t && t.add(this.options.attribution);
            } });r(a, { map: { layers: { Layer: c } } });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/map/layers/shape.min", ["dataviz/map/layers/base.min", "dataviz/map/location.min"], t);
}(function () {
    !function (t, e) {
        var i = t.proxy,
            n = window.kendo,
            o = n.Class,
            a = n.data.DataSource,
            r = n.dataviz,
            s = n.deepExtend,
            h = n.util.last,
            l = n.util.defined,
            c = n.geometry,
            u = n.drawing,
            d = u.Group,
            f = r.map,
            p = f.Location,
            m = f.layers.Layer,
            _ = m.extend({ init: function init(t, e) {
                this._pan = i(this._pan, this), m.fn.init.call(this, t, e), this.surface = u.Surface.create(this.element, { width: t.scrollElement.width(), height: t.scrollElement.height() }), this._initRoot(), this.movable = new n.ui.Movable(this.surface.element), this._markers = [], this._click = this._handler("shapeClick"), this.surface.bind("click", this._click), this._mouseenter = this._handler("shapeMouseEnter"), this.surface.bind("mouseenter", this._mouseenter), this._mouseleave = this._handler("shapeMouseLeave"), this.surface.bind("mouseleave", this._mouseleave), this._initDataSource();
            }, options: { autoBind: !0 }, destroy: function destroy() {
                m.fn.destroy.call(this), this.surface.destroy(), this.dataSource.unbind("change", this._dataChange);
            }, setDataSource: function setDataSource(t) {
                this.dataSource && this.dataSource.unbind("change", this._dataChange), this.dataSource = n.data.DataSource.create(t), this.dataSource.bind("change", this._dataChange), this.options.autoBind && this.dataSource.fetch();
            }, _reset: function _reset() {
                m.fn._reset.call(this), this._translateSurface(), this._data && this._load(this._data);
            }, _initRoot: function _initRoot() {
                this._root = new d(), this.surface.draw(this._root);
            }, _beforeReset: function _beforeReset() {
                this.surface.clear(), this._initRoot();
            }, _resize: function _resize() {
                this.surface.size(this.map.size());
            }, _initDataSource: function _initDataSource() {
                var t = this.options.dataSource;this._dataChange = i(this._dataChange, this), this.dataSource = a.create(t).bind("change", this._dataChange), t && this.options.autoBind && this.dataSource.fetch();
            }, _dataChange: function _dataChange(t) {
                this._data = t.sender.view(), this._load(this._data);
            }, _load: function _load(t) {
                var e, i, n;for (this._clearMarkers(), this._loader || (this._loader = new v(this.map, this.options.style, this)), e = new d(), i = 0; i < t.length; i++) {
                    n = this._loader.parse(t[i]), n && e.append(n);
                }this._root.clear(), this._root.append(e);
            }, shapeCreated: function shapeCreated(t) {
                var e,
                    i = !1;return t instanceof u.Circle && (i = l(this._createMarker(t))), i || (e = { layer: this, shape: t }, i = this.map.trigger("shapeCreated", e)), i;
            }, featureCreated: function featureCreated(t) {
                t.layer = this, this.map.trigger("shapeFeatureCreated", t);
            }, _createMarker: function _createMarker(t) {
                var e = this.map.markers.bind({ location: t.location }, t.dataItem);return e && this._markers.push(e), e;
            }, _clearMarkers: function _clearMarkers() {
                for (var t = 0; t < this._markers.length; t++) {
                    this.map.markers.remove(this._markers[t]);
                }this._markers = [];
            }, _pan: function _pan() {
                this._panning || (this._panning = !0, this.surface.suspendTracking());
            }, _panEnd: function _panEnd(t) {
                m.fn._panEnd.call(this, t), this._translateSurface(), this.surface.resumeTracking(), this._panning = !1;
            }, _translateSurface: function _translateSurface() {
                var t = this.map,
                    e = t.locationToView(t.extent().nw);this.surface.translate && (this.surface.translate(e), this.movable.moveTo({ x: e.x, y: e.y }));
            }, _handler: function _handler(t) {
                var e = this;return function (i) {
                    if (i.element) {
                        var n = { layer: e, shape: i.element, originalEvent: i.originalEvent };e.map.trigger(t, n);
                    }
                };
            }, _activate: function _activate() {
                m.fn._activate.call(this), this.map.bind("pan", this._pan);
            }, _deactivate: function _deactivate() {
                m.fn._deactivate.call(this), this.map.unbind("pan", this._pan);
            } }),
            v = o.extend({ init: function init(t, e, i) {
                this.observer = i, this.locator = t, this.style = e;
            }, parse: function parse(t) {
                var e = new d(),
                    i = !0;return "Feature" === t.type ? (i = !1, this._loadGeometryTo(e, t.geometry, t), this._featureCreated(e, t)) : this._loadGeometryTo(e, t, t), i && e.children.length < 2 && (e = e.children[0]), e;
            }, _shapeCreated: function _shapeCreated(t) {
                var e = !1;return this.observer && this.observer.shapeCreated && (e = this.observer.shapeCreated(t)), e;
            }, _featureCreated: function _featureCreated(t, e) {
                this.observer && this.observer.featureCreated && this.observer.featureCreated({ group: t, dataItem: e, properties: e.properties });
            }, _loadGeometryTo: function _loadGeometryTo(t, e, i) {
                var n,
                    o,
                    a = e.coordinates;switch (e.type) {case "LineString":
                        o = this._loadPolygon(t, [a], i), this._setLineFill(o);break;case "MultiLineString":
                        for (n = 0; n < a.length; n++) {
                            o = this._loadPolygon(t, [a[n]], i), this._setLineFill(o);
                        }break;case "Polygon":
                        this._loadPolygon(t, a, i);break;case "MultiPolygon":
                        for (n = 0; n < a.length; n++) {
                            this._loadPolygon(t, a[n], i);
                        }break;case "Point":
                        this._loadPoint(t, a, i);break;case "MultiPoint":
                        for (n = 0; n < a.length; n++) {
                            this._loadPoint(t, a[n], i);
                        }}
            }, _setLineFill: function _setLineFill(t) {
                var e = t.segments;(e.length < 4 || !e[0].anchor().equals(h(e).anchor())) && (t.options.fill = null);
            }, _loadShape: function _loadShape(t, e) {
                return this._shapeCreated(e) || t.append(e), e;
            }, _loadPolygon: function _loadPolygon(t, e, i) {
                var n = this._buildPolygon(e);return n.dataItem = i, this._loadShape(t, n);
            }, _buildPolygon: function _buildPolygon(t) {
                var e,
                    i,
                    n,
                    o = t.length > 1 ? u.MultiPath : u.Path,
                    a = new o(this.style);for (e = 0; e < t.length; e++) {
                    for (i = 0; i < t[e].length; i++) {
                        n = this.locator.locationToView(p.fromLngLat(t[e][i])), 0 === i ? a.moveTo(n.x, n.y) : a.lineTo(n.x, n.y);
                    }
                }return a;
            }, _loadPoint: function _loadPoint(t, e, i) {
                var n = p.fromLngLat(e),
                    o = this.locator.locationToView(n),
                    a = new c.Circle(o, 10),
                    r = new u.Circle(a, this.style);return r.dataItem = i, r.location = n, this._loadShape(t, r);
            } });s(n.data, { schemas: { geojson: { type: "json", data: function data(t) {
                        return "FeatureCollection" === t.type ? t.features : "GeometryCollection" === t.type ? t.geometries : t;
                    } } }, transports: { geojson: { read: { dataType: "json" } } } }), s(r, { map: { layers: { shape: _, ShapeLayer: _ }, GeoJSONLoader: v } });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/map/layers/bubble.min", ["dataviz/map/layers/shape.min"], t);
}(function () {
    !function (t, e) {
        var i = window.kendo,
            n = i.getter,
            o = i.dataviz,
            a = i.deepExtend,
            r = i.util,
            s = r.defined,
            h = i.geometry,
            l = i.drawing,
            c = o.map,
            u = c.Location,
            d = c.layers.ShapeLayer,
            f = d.extend({ options: { autoBind: !0, locationField: "location", valueField: "value", minSize: 0, maxSize: 100, scale: "sqrt", symbol: "circle" }, _load: function _load(t) {
                var e, i, o, a, r, h, l, c, d, f, p;if (this.surface.clear(), 0 !== t.length) for (e = this.options, i = n(e.valueField), t = t.slice(0), t.sort(function (t, e) {
                    return i(e) - i(t);
                }), o = this._scaleType(), r = 0; r < t.length; r++) {
                    h = t[r], l = n(e.locationField)(h), c = n(e.valueField)(h), s(l) && s(c) && (a || (a = new o([0, c], [e.minSize, e.maxSize])), l = u.create(l), d = this.map.locationToView(l), f = a.map(c), p = this._createSymbol({ center: d, size: f, style: e.style, dataItem: h, location: l }), p.dataItem = h, p.location = l, p.value = c, this._drawSymbol(p));
                }
            }, _scaleType: function _scaleType() {
                var t = this.options.scale;return i.isFunction(t) ? t : o.map.scales[t];
            }, _createSymbol: function _createSymbol(t) {
                var e = this.options.symbol;return i.isFunction(e) || (e = o.map.symbols[e]), e(t);
            }, _drawSymbol: function _drawSymbol(t) {
                var e = { layer: this, shape: t },
                    i = this.map.trigger("shapeCreated", e);i || this.surface.draw(t);
            } }),
            p = i.Class.extend({ init: function init(t, e) {
                var i, n;this._domain = t, this._range = e, i = Math.sqrt(t[1]) - Math.sqrt(t[0]), n = e[1] - e[0], this._ratio = n / i;
            }, map: function map(t) {
                var e = (Math.sqrt(t) - Math.sqrt(this._domain[0])) * this._ratio;return this._range[0] + e;
            } }),
            m = { circle: function circle(t) {
                var e = new h.Circle(t.center, t.size / 2);return new l.Circle(e, t.style);
            }, square: function square(t) {
                var e = new l.Path(t.style),
                    i = t.size / 2,
                    n = t.center;return e.moveTo(n.x - i, n.y - i).lineTo(n.x + i, n.y - i).lineTo(n.x + i, n.y + i).lineTo(n.x - i, n.y + i).close(), e;
            } };a(o, { map: { layers: { bubble: f, BubbleLayer: f }, scales: { sqrt: p }, symbols: m } });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/map/layers/tile.min", ["dataviz/map/layers/base.min", "dataviz/map/location.min"], t);
}(function () {
    !function (t, e) {
        function i(t) {
            return new u(p(t.x), p(t.y));
        }var n = Math,
            o = t.proxy,
            a = window.kendo,
            r = a.Class,
            s = a.template,
            h = a.dataviz,
            l = a.deepExtend,
            c = a.geometry,
            u = c.Point,
            d = h.map.layers.Layer,
            f = a.util,
            p = f.round,
            m = f.renderSize,
            _ = f.limitValue,
            v = d.extend({ init: function init(t, e) {
                d.fn.init.call(this, t, e), "string" == typeof this.options.subdomains && (this.options.subdomains = this.options.subdomains.split(""));var i = this._viewType();this._view = new i(this.element, this.options);
            }, destroy: function destroy() {
                d.fn.destroy.call(this), this._view.destroy(), this._view = null;
            }, _beforeReset: function _beforeReset() {
                var t = this.map,
                    e = t.locationToLayer(t.extent().nw).round();this._view.viewOrigin(e);
            }, _reset: function _reset() {
                d.fn._reset.call(this), this._updateView(), this._view.reset();
            }, _viewType: function _viewType() {
                return g;
            }, _activate: function _activate() {
                d.fn._activate.call(this), a.support.mobileOS || (this._pan || (this._pan = a.throttle(o(this._render, this), 100)), this.map.bind("pan", this._pan));
            }, _deactivate: function _deactivate() {
                d.fn._deactivate.call(this), this._pan && this.map.unbind("pan", this._pan);
            }, _updateView: function _updateView() {
                var t = this._view,
                    e = this.map,
                    i = e.extent(),
                    n = { nw: e.locationToLayer(i.nw).round(), se: e.locationToLayer(i.se).round() };t.center(e.locationToLayer(e.center())), t.extent(n), t.zoom(e.zoom());
            }, _resize: function _resize() {
                this._render();
            }, _panEnd: function _panEnd(t) {
                d.fn._panEnd.call(this, t), this._render();
            }, _render: function _render() {
                this._updateView(), this._view.render();
            } }),
            g = r.extend({ init: function init(t, e) {
                this.element = t, this._initOptions(e), this.pool = new w();
            }, options: { tileSize: 256, subdomains: ["a", "b", "c"], urlTemplate: "" }, center: function center(t) {
                this._center = t;
            }, extent: function extent(t) {
                this._extent = t;
            }, viewOrigin: function viewOrigin(t) {
                this._viewOrigin = t;
            }, zoom: function zoom(t) {
                this._zoom = t;
            }, pointToTileIndex: function pointToTileIndex(t) {
                return new u(n.floor(t.x / this.options.tileSize), n.floor(t.y / this.options.tileSize));
            }, tileCount: function tileCount() {
                var t = this.size(),
                    e = this.pointToTileIndex(this._extent.nw),
                    i = this._extent.nw,
                    o = this.indexToPoint(e).translate(-i.x, -i.y);return { x: n.ceil((n.abs(o.x) + t.width) / this.options.tileSize), y: n.ceil((n.abs(o.y) + t.height) / this.options.tileSize) };
            }, size: function size() {
                var t = this._extent.nw,
                    e = this._extent.se,
                    i = e.clone().translate(-t.x, -t.y);return { width: i.x, height: i.y };
            }, indexToPoint: function indexToPoint(t) {
                var e = t.x,
                    i = t.y;return new u(e * this.options.tileSize, i * this.options.tileSize);
            }, subdomainText: function subdomainText() {
                var t = this.options.subdomains;return t[this.subdomainIndex++ % t.length];
            }, destroy: function destroy() {
                this.element.empty(), this.pool.empty();
            }, reset: function reset() {
                this.pool.reset(), this.subdomainIndex = 0, this.render();
            }, render: function render() {
                var t,
                    e,
                    i,
                    n = this.tileCount(),
                    o = this.pointToTileIndex(this._extent.nw);for (e = 0; e < n.x; e++) {
                    for (i = 0; i < n.y; i++) {
                        t = this.createTile({ x: o.x + e, y: o.y + i }), t.visible || t.show();
                    }
                }
            }, createTile: function createTile(t) {
                var e = this.tileOptions(t),
                    i = this.pool.get(this._center, e);return 0 === i.element.parent().length && this.element.append(i.element), i;
            }, tileOptions: function tileOptions(t) {
                var e = this.wrapIndex(t),
                    n = this.indexToPoint(t),
                    o = this._viewOrigin,
                    a = n.clone().translate(-o.x, -o.y);return { index: e, currentIndex: t, point: n, offset: i(a), zoom: this._zoom, size: this.options.tileSize, subdomain: this.subdomainText(), urlTemplate: this.options.urlTemplate, errorUrlTemplate: this.options.errorUrlTemplate };
            }, wrapIndex: function wrapIndex(t) {
                var e = n.pow(2, this._zoom);return { x: this.wrapValue(t.x, e), y: _(t.y, 0, e - 1) };
            }, wrapValue: function wrapValue(t, e) {
                var i = n.abs(t) % e;return t = t >= 0 ? i : e - (0 === i ? e : i);
            } }),
            y = r.extend({ init: function init(t, e) {
                this.id = t, this.visible = !0, this._initOptions(e), this.createElement(), this.show();
            }, options: { urlTemplate: "", errorUrlTemplate: "" }, createElement: function createElement() {
                this.element = t("<img style='position: absolute; display: block;' />").css({ width: this.options.size, height: this.options.size }).on("error", o(function (t) {
                    this.errorUrl() ? t.target.setAttribute("src", this.errorUrl()) : t.target.removeAttribute("src");
                }, this));
            }, show: function show() {
                var t,
                    e = this.element[0];e.style.top = m(this.options.offset.y), e.style.left = m(this.options.offset.x), t = this.url(), t && e.setAttribute("src", t), e.style.visibility = "visible", this.visible = !0;
            }, hide: function hide() {
                this.element[0].style.visibility = "hidden", this.visible = !1;
            }, url: function url() {
                var t = s(this.options.urlTemplate);return t(this.urlOptions());
            }, errorUrl: function errorUrl() {
                var t = s(this.options.errorUrlTemplate);return t(this.urlOptions());
            }, urlOptions: function urlOptions() {
                var t = this.options;return { zoom: t.zoom, subdomain: t.subdomain, z: t.zoom, x: t.index.x, y: t.index.y, s: t.subdomain, quadkey: t.quadkey, q: t.quadkey, culture: t.culture, c: t.culture };
            }, destroy: function destroy() {
                this.element && (this.element.remove(), this.element = null);
            } }),
            w = r.extend({ init: function init() {
                this._items = [];
            }, options: { maxSize: 100 }, get: function get(t, e) {
                return this._items.length >= this.options.maxSize && this._remove(t), this._create(e);
            }, empty: function empty() {
                var t,
                    e = this._items;for (t = 0; t < e.length; t++) {
                    e[t].destroy();
                }this._items = [];
            }, reset: function reset() {
                var t,
                    e = this._items;for (t = 0; t < e.length; t++) {
                    e[t].hide();
                }
            }, _create: function _create(t) {
                var e,
                    i,
                    n = this._items,
                    o = f.hashKey("" + t.point + ("" + t.offset) + t.zoom + t.urlTemplate);for (i = 0; i < n.length; i++) {
                    if (n[i].id === o) {
                        e = n[i];break;
                    }
                }return e ? e.show() : (e = new y(o, t), this._items.push(e)), e;
            }, _remove: function _remove(t) {
                var e,
                    i,
                    n = this._items,
                    o = -1,
                    a = -1;for (e = 0; e < n.length; e++) {
                    i = n[e].options.point.distanceTo(t), i > o && !n[e].visible && (a = e, o = i);
                }a !== -1 && (n[a].destroy(), n.splice(a, 1));
            } });l(h, { map: { layers: { tile: v, TileLayer: v, ImageTile: y, TilePool: w, TileView: g } } });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/map/layers/bing.min", ["dataviz/map/layers/tile.min"], t);
}(function () {
    !function (t, e) {
        var i = window.kendo,
            n = i.dataviz,
            o = i.deepExtend,
            a = i.util.defined,
            r = n.map.Extent,
            s = n.map.Location,
            h = n.map.layers.TileLayer,
            l = n.map.layers.TileView,
            c = h.extend({ init: function init(e, i) {
                this.options.baseUrl = this._scheme() + "://dev.virtualearth.net/REST/v1/Imagery/Metadata/", h.fn.init.call(this, e, i), this._onMetadata = t.proxy(this._onMetadata, this), this._fetchMetadata();
            }, options: { imagerySet: "road" }, _fetchMetadata: function _fetchMetadata() {
                var e = this.options;if (!e.key) throw Error("Bing tile layer: API key is required");t.ajax({ url: e.baseUrl + e.imagerySet, data: { output: "json", include: "ImageryProviders", key: e.key, uriScheme: this._scheme() }, type: "get", dataType: "jsonp", jsonp: "jsonp", success: this._onMetadata });
            }, _scheme: function _scheme(t) {
                return t = t || window.location.protocol, "https" === t.replace(":", "") ? "https" : "http";
            }, _onMetadata: function _onMetadata(t) {
                var e, i;t && t.resourceSets.length && (e = this.resource = t.resourceSets[0].resources[0], o(this._view.options, { urlTemplate: e.imageUrl.replace("{subdomain}", "#= subdomain #").replace("{quadkey}", "#= quadkey #").replace("{culture}", "#= culture #"), subdomains: e.imageUrlSubdomains }), i = this.options, a(i.minZoom) || (i.minZoom = e.zoomMin), a(i.maxZoom) || (i.maxZoom = e.zoomMax), this._addAttribution(), "none" !== this.element.css("display") && this._reset());
            }, _viewType: function _viewType() {
                return u;
            }, _addAttribution: function _addAttribution() {
                var t,
                    e,
                    i,
                    n,
                    o,
                    a = this.map.attribution;if (a && (t = this.resource.imageryProviders)) for (e = 0; e < t.length; e++) {
                    for (i = t[e], n = 0; n < i.coverageAreas.length; n++) {
                        o = i.coverageAreas[n], a.add({ text: i.attribution, minZoom: o.zoomMin, maxZoom: o.zoomMax, extent: new r(new s(o.bbox[2], o.bbox[1]), new s(o.bbox[0], o.bbox[3])) });
                    }
                }
            }, imagerySet: function imagerySet(t) {
                return t ? (this.options.imagerySet = t, this.map.attribution.clear(), this._fetchMetadata(), e) : this.options.imagerySet;
            } }),
            u = l.extend({ options: { culture: "en-US" }, tileOptions: function tileOptions(t) {
                var e = l.fn.tileOptions.call(this, t);return e.culture = this.options.culture, e.quadkey = this.tileQuadKey(this.wrapIndex(t)), e;
            }, tileQuadKey: function tileQuadKey(t) {
                var e,
                    i,
                    n,
                    o = "";for (n = this._zoom; n > 0; n--) {
                    e = 0, i = 1 << n - 1, 0 !== (t.x & i) && e++, 0 !== (t.y & i) && (e += 2), o += e;
                }return o;
            } });o(n, { map: { layers: { bing: c, BingLayer: c, BingView: u } } });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/map/layers/marker.min", ["dataviz/map/layers/base.min", "dataviz/map/location.min", "kendo.data.min", "kendo.tooltip.min"], t);
}(function () {
    !function (t, e) {
        var i = document,
            n = Math,
            o = t.inArray,
            a = t.proxy,
            r = window.kendo,
            s = r.Class,
            h = r.data.DataSource,
            l = r.ui.Tooltip,
            c = r.dataviz,
            u = r.deepExtend,
            d = c.map,
            f = d.Location,
            p = d.layers.Layer,
            m = p.extend({ init: function init(t, e) {
                p.fn.init.call(this, t, e), this._markerClick = a(this._markerClick, this), this.element.on("click", ".k-marker", this._markerClick), this.items = [], this._initDataSource();
            }, destroy: function destroy() {
                p.fn.destroy.call(this), this.element.off("click", ".k-marker", this._markerClick), this.dataSource.unbind("change", this._dataChange), this.clear();
            }, options: { zIndex: 1e3, autoBind: !0, dataSource: {}, locationField: "location", titleField: "title" }, add: function add(e) {
                if (!t.isArray(e)) return this._addOne(e);for (var i = 0; i < e.length; i++) {
                    this._addOne(e[i]);
                }
            }, remove: function remove(t) {
                t.destroy();var e = o(t, this.items);e > -1 && this.items.splice(e, 1);
            }, clear: function clear() {
                for (var t = 0; t < this.items.length; t++) {
                    this.items[t].destroy();
                }this.items = [];
            }, update: function update(t) {
                var e,
                    i = t.location();i && (t.showAt(this.map.locationToView(i)), e = { marker: t, layer: this }, this.map.trigger("markerActivate", e));
            }, _reset: function _reset() {
                var t, e;for (p.fn._reset.call(this), t = this.items, e = 0; e < t.length; e++) {
                    this.update(t[e]);
                }
            }, bind: function bind(t, e) {
                var i,
                    n,
                    o = d.Marker.create(t, this.options);if (o.dataItem = e, i = { marker: o, layer: this }, n = this.map.trigger("markerCreated", i), !n) return this.add(o), o;
            }, setDataSource: function setDataSource(t) {
                this.dataSource && this.dataSource.unbind("change", this._dataChange), this.dataSource = r.data.DataSource.create(t), this.dataSource.bind("change", this._dataChange), this.options.autoBind && this.dataSource.fetch();
            }, _addOne: function _addOne(t) {
                var e = _.create(t, this.options);return e.addTo(this), e;
            }, _initDataSource: function _initDataSource() {
                var t = this.options.dataSource;this._dataChange = a(this._dataChange, this), this.dataSource = h.create(t).bind("change", this._dataChange), t && this.options.autoBind && this.dataSource.fetch();
            }, _dataChange: function _dataChange(t) {
                this._load(t.sender.view());
            }, _load: function _load(t) {
                var e, i, n, o;for (this._data = t, this.clear(), e = r.getter(this.options.locationField), i = r.getter(this.options.titleField), n = 0; n < t.length; n++) {
                    o = t[n], this.bind({ location: e(o), title: i(o) }, o);
                }
            }, _markerClick: function _markerClick(e) {
                var i = { marker: t(e.target).data("kendoMarker"), layer: this };this.map.trigger("markerClick", i);
            } }),
            _ = s.extend({ init: function init(t) {
                this.options = t || {};
            }, addTo: function addTo(t) {
                this.layer = t.markers || t, this.layer.items.push(this), this.layer.update(this);
            }, location: function location(t) {
                return t ? (this.options.location = f.create(t).toArray(), this.layer && this.layer.update(this), this) : f.create(this.options.location);
            }, showAt: function showAt(t) {
                this.render(), this.element.css({ left: n.round(t.x), top: n.round(t.y) }), this.tooltip && this.tooltip.popup && this.tooltip.popup._position();
            }, hide: function hide() {
                this.element && (this.element.remove(), this.element = null), this.tooltip && (this.tooltip.destroy(), this.tooltip = null);
            }, destroy: function destroy() {
                this.layer = null, this.hide();
            }, render: function render() {
                var e, n;this.element || (e = this.options, n = this.layer, this.element = t(i.createElement("span")).addClass("k-marker k-marker-" + r.toHyphens(e.shape || "pin")).attr("title", e.title).attr(e.attributes || {}).data("kendoMarker", this).css("zIndex", e.zIndex), n && n.element.append(this.element), this.renderTooltip());
            }, renderTooltip: function renderTooltip() {
                var t,
                    e,
                    i = this,
                    n = i.options.title,
                    o = i.options.tooltip || {};o && l && (t = o.template, t && (e = r.template(t), o.content = function (t) {
                    return t.location = i.location(), t.marker = i, e(t);
                }), (n || o.content || o.contentUrl) && (this.tooltip = new l(this.element, o), this.tooltip.marker = this));
            } });_.create = function (t, e) {
            return t instanceof _ ? t : new _(u({}, e, t));
        }, u(c, { map: { layers: { marker: m, MarkerLayer: m }, Marker: _ } });
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("dataviz/map/main.min", ["dataviz/map/crs.min", "dataviz/map/location.min"], t);
}(function () {
    !function (t, e) {
        var i = document,
            n = Math,
            o = n.min,
            a = n.pow,
            r = t.proxy,
            s = window.kendo,
            h = s.ui.Widget,
            l = s.deepExtend,
            c = s.dataviz,
            u = c.ui,
            d = s.geometry,
            f = d.Point,
            p = c.map,
            m = p.Extent,
            _ = p.Location,
            v = p.crs.EPSG3857,
            g = s.util,
            y = g.defined,
            w = g.limitValue,
            b = g.renderPos,
            x = g.valueOrDefault,
            k = "k-",
            z = .9,
            T = .93,
            S = "DOMMouseScroll mousewheel",
            C = 5,
            E = h.extend({ init: function init(t, e) {
                s.destroy(t), h.fn.init.call(this, t), this._initOptions(e), this.bind(this.events, e), this.crs = new v(), this.element.addClass(k + this.options.name.toLowerCase()).css("position", "relative").empty().append(i.createElement("div")), this._viewOrigin = this._getOrigin(), this._initScroller(), this._initMarkers(), this._initControls(), this._initLayers(), this._reset(), this._mousewheel = r(this._mousewheel, this), this.element.bind("click", r(this._click, this)), this.element.bind(S, this._mousewheel);
            }, options: { name: "Map", controls: { attribution: !0, navigator: { panStep: 100 }, zoom: !0 }, layers: [], layerDefaults: { shape: { style: { fill: { color: "#fff" }, stroke: { color: "#aaa", width: .5 } } }, bubble: { style: { fill: { color: "#fff", opacity: .5 }, stroke: { color: "#aaa", width: .5 } } }, marker: { shape: "pinTarget", tooltip: { position: "top" } } }, center: [0, 0], zoom: 3, minSize: 256, minZoom: 1, maxZoom: 19, markers: [], markerDefaults: { shape: "pinTarget", tooltip: { position: "top" } }, wraparound: !0 }, events: ["beforeReset", "click", "markerActivate", "markerClick", "markerCreated", "pan", "panEnd", "reset", "shapeClick", "shapeCreated", "shapeFeatureCreated", "shapeMouseEnter", "shapeMouseLeave", "zoomEnd", "zoomStart"], destroy: function destroy() {
                this.scroller.destroy(), this.navigator && this.navigator.destroy(), this.attribution && this.attribution.destroy(), this.zoomControl && this.zoomControl.destroy(), this.markers.destroy();for (var t = 0; t < this.layers.length; t++) {
                    this.layers[t].destroy();
                }h.fn.destroy.call(this);
            }, zoom: function zoom(t) {
                var e = this.options;return y(t) ? (t = n.round(w(t, e.minZoom, e.maxZoom)), e.zoom !== t && (e.zoom = t, this._reset()), this) : e.zoom;
            }, center: function center(t) {
                return t ? (this.options.center = _.create(t).toArray(), this._reset(), this) : _.create(this.options.center);
            }, extent: function extent(t) {
                return t ? (this._setExtent(t), this) : this._getExtent();
            }, setOptions: function setOptions(t) {
                h.fn.setOptions.call(this, t), this._reset();
            }, locationToLayer: function locationToLayer(t, e) {
                var i = !this.options.wraparound;return t = _.create(t), this.crs.toPoint(t, this._layerSize(e), i);
            }, layerToLocation: function layerToLocation(t, e) {
                var i = !this.options.wraparound;return t = f.create(t), this.crs.toLocation(t, this._layerSize(e), i);
            }, locationToView: function locationToView(t) {
                var e, i;return t = _.create(t), e = this.locationToLayer(this._viewOrigin), i = this.locationToLayer(t), i.translateWith(e.scale(-1));
            }, viewToLocation: function viewToLocation(t, e) {
                var i = this.locationToLayer(this._getOrigin(), e);return t = f.create(t), t = t.clone().translateWith(i), this.layerToLocation(t, e);
            }, eventOffset: function eventOffset(t) {
                var e = this.element.offset(),
                    i = t.originalEvent || t,
                    n = x(i.pageX, i.clientX) - e.left,
                    o = x(i.pageY, i.clientY) - e.top;return new d.Point(n, o);
            }, eventToView: function eventToView(t) {
                var e = this.eventOffset(t);return this.locationToView(this.viewToLocation(e));
            }, eventToLayer: function eventToLayer(t) {
                return this.locationToLayer(this.eventToLocation(t));
            }, eventToLocation: function eventToLocation(t) {
                var e = this.eventOffset(t);return this.viewToLocation(e);
            }, viewSize: function viewSize() {
                var t = this.element,
                    e = this._layerSize(),
                    i = t.width();return this.options.wraparound || (i = o(e, i)), { width: i, height: o(e, t.height()) };
            }, exportVisual: function exportVisual() {
                return this._reset(), !1;
            }, _setOrigin: function _setOrigin(t, e) {
                var i,
                    n = this.viewSize();return t = this._origin = _.create(t), i = this.locationToLayer(t, e), i.x += n.width / 2, i.y += n.height / 2, this.options.center = this.layerToLocation(i, e).toArray(), this;
            }, _getOrigin: function _getOrigin(t) {
                var e,
                    i = this.viewSize();return !t && this._origin || (e = this.locationToLayer(this.center()), e.x -= i.width / 2, e.y -= i.height / 2, this._origin = this.layerToLocation(e)), this._origin;
            }, _setExtent: function _setExtent(t) {
                var e, i, o, a, r, s, h;for (t = m.create(t), this.center(t.center()), e = this.element.width(), i = this.element.height(), o = this.options.maxZoom; o >= this.options.minZoom && (a = this.locationToLayer(t.nw, o), r = this.locationToLayer(t.se, o), s = n.abs(r.x - a.x), h = n.abs(r.y - a.y), !(s <= e && h <= i)); o--) {}this.zoom(o);
            }, _getExtent: function _getExtent() {
                var t,
                    e = this._getOrigin(),
                    i = this.locationToLayer(e),
                    n = this.viewSize();return i.x += n.width, i.y += n.height, t = this.layerToLocation(i), new m(e, t);
            }, _zoomAround: function _zoomAround(t, e) {
                this._setOrigin(this.layerToLocation(t, e), e), this.zoom(e);
            }, _initControls: function _initControls() {
                var t = this.options.controls;u.Attribution && t.attribution && this._createAttribution(t.attribution), s.support.mobileOS || (u.Navigator && t.navigator && this._createNavigator(t.navigator), u.ZoomControl && t.zoom && this._createZoomControl(t.zoom));
            }, _createControlElement: function _createControlElement(e, i) {
                var n = e.position || i,
                    o = "." + b(n).replace(" ", "."),
                    a = t(".k-map-controls" + o, this.element);return 0 === a.length && (a = t("<div>").addClass("k-map-controls " + b(n)).appendTo(this.element)), t("<div>").appendTo(a);
            }, _createAttribution: function _createAttribution(t) {
                var e = this._createControlElement(t, "bottomRight");this.attribution = new u.Attribution(e, t);
            }, _createNavigator: function _createNavigator(t) {
                var e = this._createControlElement(t, "topLeft"),
                    i = this.navigator = new u.Navigator(e, t);this._navigatorPan = r(this._navigatorPan, this), i.bind("pan", this._navigatorPan), this._navigatorCenter = r(this._navigatorCenter, this), i.bind("center", this._navigatorCenter);
            }, _navigatorPan: function _navigatorPan(t) {
                var e = this,
                    i = e.scroller,
                    n = i.scrollLeft + t.x,
                    o = i.scrollTop - t.y,
                    a = this._virtualSize,
                    r = this.element.height(),
                    s = this.element.width();n = w(n, a.x.min, a.x.max - s), o = w(o, a.y.min, a.y.max - r), e.scroller.one("scroll", function (t) {
                    e._scrollEnd(t);
                }), e.scroller.scrollTo(-n, -o);
            }, _navigatorCenter: function _navigatorCenter() {
                this.center(this.options.center);
            }, _createZoomControl: function _createZoomControl(t) {
                var e = this._createControlElement(t, "topLeft"),
                    i = this.zoomControl = new u.ZoomControl(e, t);this._zoomControlChange = r(this._zoomControlChange, this), i.bind("change", this._zoomControlChange);
            }, _zoomControlChange: function _zoomControlChange(t) {
                this.trigger("zoomStart", { originalEvent: t }) || (this.zoom(this.zoom() + t.delta), this.trigger("zoomEnd", { originalEvent: t }));
            }, _initScroller: function _initScroller() {
                var t = s.support.mobileOS ? T : z,
                    e = this.options.zoomable !== !1,
                    i = this.scroller = new s.mobile.ui.Scroller(this.element.children(0), { friction: t, velocityMultiplier: C, zoom: e, mousewheelScrolling: !1 });i.bind("scroll", r(this._scroll, this)), i.bind("scrollEnd", r(this._scrollEnd, this)), i.userEvents.bind("gesturestart", r(this._scaleStart, this)), i.userEvents.bind("gestureend", r(this._scale, this)), this.scrollElement = i.scrollElement;
            }, _initLayers: function _initLayers() {
                var t,
                    e,
                    i,
                    n,
                    o,
                    a = this.options.layers,
                    r = this.layers = [];for (t = 0; t < a.length; t++) {
                    e = a[t], i = e.type || "shape", n = this.options.layerDefaults[i], o = c.map.layers[i], r.push(new o(this, l({}, n, e)));
                }
            }, _initMarkers: function _initMarkers() {
                this.markers = new p.layers.MarkerLayer(this, this.options.markerDefaults), this.markers.add(this.options.markers);
            }, _scroll: function _scroll(t) {
                var e = this.locationToLayer(this._viewOrigin).round(),
                    i = t.sender.movable,
                    n = new d.Point(i.x, i.y).scale(-1).scale(1 / i.scale);e.x += n.x, e.y += n.y, this._scrollOffset = n, this._setOrigin(this.layerToLocation(e)), this.trigger("pan", { originalEvent: t, origin: this._getOrigin(), center: this.center() });
            }, _scrollEnd: function _scrollEnd(t) {
                this._scrollOffset && this._panComplete() && (this._scrollOffset = null, this._panEndTS = new Date(), this.trigger("panEnd", { originalEvent: t, origin: this._getOrigin(), center: this.center() }));
            }, _panComplete: function _panComplete() {
                return new Date() - (this._panEndTS || 0) > 50;
            }, _scaleStart: function _scaleStart(t) {
                if (this.trigger("zoomStart", { originalEvent: t })) {
                    var e = t.touches[1];e && e.cancel();
                }
            }, _scale: function _scale(t) {
                var e = this.scroller.movable.scale,
                    i = this._scaleToZoom(e),
                    n = new d.Point(t.center.x, t.center.y),
                    o = this.viewToLocation(n, i),
                    a = this.locationToLayer(o, i),
                    r = a.translate(-n.x, -n.y);this._zoomAround(r, i), this.trigger("zoomEnd", { originalEvent: t });
            }, _scaleToZoom: function _scaleToZoom(t) {
                var e = this._layerSize() * t,
                    i = e / this.options.minSize,
                    o = n.log(i) / n.log(2);return n.round(o);
            }, _reset: function _reset() {
                this.attribution && this.attribution.filter(this.center(), this.zoom()), this._viewOrigin = this._getOrigin(!0), this._resetScroller(), this.trigger("beforeReset"), this.trigger("reset");
            }, _resetScroller: function _resetScroller() {
                var t,
                    e,
                    i,
                    n,
                    o = this.scroller,
                    r = o.dimensions.x,
                    s = o.dimensions.y,
                    h = this._layerSize(),
                    l = this.extent().nw,
                    c = this.locationToLayer(l).round();o.movable.round = !0, o.reset(), o.userEvents.cancel(), t = this.zoom(), o.dimensions.forcedMinScale = a(2, this.options.minZoom - t), o.dimensions.maxScale = a(2, this.options.maxZoom - t), e = { min: -c.x, max: h - c.x }, i = { min: -c.y, max: h - c.y }, this.options.wraparound && (e.max = 20 * h, e.min = -e.max), this.options.pannable === !1 && (n = this.viewSize(), e.min = i.min = 0, e.max = n.width, i.max = n.height), r.makeVirtual(), s.makeVirtual(), r.virtualSize(e.min, e.max), s.virtualSize(i.min, i.max), this._virtualSize = { x: e, y: i };
            }, _renderLayers: function _renderLayers() {
                var t,
                    e,
                    i,
                    n,
                    o,
                    a = this.options.layers,
                    r = this.layers = [],
                    s = this.scrollWrap;for (s.empty(), t = 0; t < a.length; t++) {
                    e = a[t], i = e.type || "shape", n = this.options.layerDefaults[i], o = c.map.layers[i], r.push(new o(this, l({}, n, e)));
                }
            }, _layerSize: function _layerSize(t) {
                return t = x(t, this.options.zoom), this.options.minSize * a(2, t);
            }, _click: function _click(t) {
                if (this._panComplete()) {
                    var e = this.eventOffset(t);this.trigger("click", { originalEvent: t, location: this.viewToLocation(e) });
                }
            }, _mousewheel: function _mousewheel(t) {
                var e, i, n, o, a, r, s, h;t.preventDefault(), e = c.mwDelta(t) > 0 ? -1 : 1, i = this.options, n = this.zoom(), o = w(n + e, i.minZoom, i.maxZoom), i.zoomable !== !1 && o !== n && (this.trigger("zoomStart", { originalEvent: t }) || (a = this.eventOffset(t), r = this.viewToLocation(a), s = this.locationToLayer(r, o), h = s.translate(-a.x, -a.y), this._zoomAround(h, o), this.trigger("zoomEnd", { originalEvent: t })));
            } });c.ui.plugin(E);
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
}), function (t, define) {
    define("kendo.dataviz.map.min", ["kendo.data.min", "kendo.userevents.min", "kendo.tooltip.min", "kendo.mobile.scroller.min", "kendo.draganddrop.min", "kendo.dataviz.core.min", "dataviz/map/location.min", "dataviz/map/attribution.min", "dataviz/map/navigator.min", "dataviz/map/zoom.min", "dataviz/map/crs.min", "dataviz/map/layers/base.min", "dataviz/map/layers/shape.min", "dataviz/map/layers/bubble.min", "dataviz/map/layers/tile.min", "dataviz/map/layers/bing.min", "dataviz/map/layers/marker.min", "dataviz/map/main.min"], t);
}(function () {
    return window.kendo;
}, "function" == typeof define && define.amd ? define : function (t, e, i) {
    (i || e)();
});;!function (e, define) {
    define("util/main.min", ["kendo.core.min"], e);
}(function () {
    return function () {
        function e(e) {
            return (typeof e === "undefined" ? "undefined" : _typeof(e)) !== K;
        }function n(e, n) {
            var i = t(n);return W.round(e * i) / i;
        }function t(e) {
            return e ? W.pow(10, e) : 1;
        }function i(e, n, t) {
            return W.max(W.min(e, t), n);
        }function r(e) {
            return e * L;
        }function o(e) {
            return e / L;
        }function a(e) {
            return "number" == typeof e && !isNaN(e);
        }function s(n, t) {
            return e(n) ? n : t;
        }function u(e) {
            return e * e;
        }function l(e) {
            var n,
                t = [];for (n in e) {
                t.push(n + e[n]);
            }return t.sort().join("");
        }function d(e) {
            var n,
                t = 2166136261;for (n = 0; n < e.length; ++n) {
                t += (t << 1) + (t << 4) + (t << 7) + (t << 8) + (t << 24), t ^= e.charCodeAt(n);
            }return t >>> 0;
        }function h(e) {
            return d(l(e));
        }function c(e) {
            var n,
                t = e.length,
                i = U,
                r = F;for (n = 0; n < t; n++) {
                r = W.max(r, e[n]), i = W.min(i, e[n]);
            }return { min: i, max: r };
        }function f(e) {
            return c(e).min;
        }function p(e) {
            return c(e).max;
        }function m(e) {
            return v(e).min;
        }function g(e) {
            return v(e).max;
        }function v(e) {
            var n,
                t,
                i,
                r = U,
                o = F;for (n = 0, t = e.length; n < t; n++) {
                i = e[n], null !== i && isFinite(i) && (r = W.min(r, i), o = W.max(o, i));
            }return { min: r === U ? void 0 : r, max: o === F ? void 0 : o };
        }function _(e) {
            if (e) return e[e.length - 1];
        }function b(e, n) {
            return e.push.apply(e, n), e;
        }function w(e) {
            return D.template(e, { useWithBlock: !1, paramName: "d" });
        }function y(n, t) {
            return e(t) && null !== t ? " " + n + "='" + t + "' " : "";
        }function x(e) {
            var n,
                t = "";for (n = 0; n < e.length; n++) {
                t += y(e[n][0], e[n][1]);
            }return t;
        }function k(n) {
            var t,
                i,
                r = "";for (t = 0; t < n.length; t++) {
                i = n[t][1], e(i) && (r += n[t][0] + ":" + i + ";");
            }if ("" !== r) return r;
        }function A(e) {
            return "string" != typeof e && (e += "px"), e;
        }function C(e) {
            var n,
                t,
                i = [];if (e) for (n = D.toHyphens(e).split("-"), t = 0; t < n.length; t++) {
                i.push("k-pos-" + n[t]);
            }return i.join(" ");
        }function M(n) {
            return "" === n || null === n || "none" === n || "transparent" === n || !e(n);
        }function S(e) {
            for (var n = { 1: "i", 10: "x", 100: "c", 2: "ii", 20: "xx", 200: "cc", 3: "iii", 30: "xxx", 300: "ccc", 4: "iv", 40: "xl", 400: "cd", 5: "v", 50: "l", 500: "d", 6: "vi", 60: "lx", 600: "dc", 7: "vii", 70: "lxx", 700: "dcc", 8: "viii", 80: "lxxx", 800: "dccc", 9: "ix", 90: "xc", 900: "cm", 1e3: "m" }, t = [1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], i = ""; e > 0;) {
                e < t[0] ? t.shift() : (i += n[t[0]], e -= t[0]);
            }return i;
        }function z(e) {
            var n, t, i, r, o;for (e = e.toLowerCase(), n = { i: 1, v: 5, x: 10, l: 50, c: 100, d: 500, m: 1e3 }, t = 0, i = 0, r = 0; r < e.length; ++r) {
                if (o = n[e.charAt(r)], !o) return null;t += o, o > i && (t -= 2 * i), i = o;
            }return t;
        }function N(e) {
            var n = Object.create(null);return function () {
                var t,
                    i = "";for (t = arguments.length; --t >= 0;) {
                    i += ":" + arguments[t];
                }return i in n ? n[i] : n[i] = e.apply(this, arguments);
            };
        }function T(e) {
            for (var n, t, i = [], r = 0, o = e.length; r < o;) {
                n = e.charCodeAt(r++), n >= 55296 && n <= 56319 && r < o ? (t = e.charCodeAt(r++), 56320 == (64512 & t) ? i.push(((1023 & n) << 10) + (1023 & t) + 65536) : (i.push(n), r--)) : i.push(n);
            }return i;
        }function j(e) {
            return e.map(function (e) {
                var n = "";return e > 65535 && (e -= 65536, n += String.fromCharCode(e >>> 10 & 1023 | 55296), e = 56320 | 1023 & e), n += String.fromCharCode(e);
            }).join("");
        }function O(e, n) {
            function t(e, t) {
                for (var i = [], r = 0, o = 0, a = 0; r < e.length && o < t.length;) {
                    n(e[r], t[o]) <= 0 ? i[a++] = e[r++] : i[a++] = t[o++];
                }return r < e.length && i.push.apply(i, e.slice(r)), o < t.length && i.push.apply(i, t.slice(o)), i;
            }return e.length < 2 ? e.slice() : function i(e) {
                var n, r, o;return e.length <= 1 ? e : (n = Math.floor(e.length / 2), r = e.slice(0, n), o = e.slice(n), r = i(r), o = i(o), t(r, o));
            }(e);
        }var W = Math,
            D = window.kendo,
            E = D.deepExtend,
            L = W.PI / 180,
            U = Number.MAX_VALUE,
            F = -Number.MAX_VALUE,
            K = "undefined",
            P = Date.now;P || (P = function P() {
            return new Date().getTime();
        }), E(D, { util: { MAX_NUM: U, MIN_NUM: F, append: b, arrayLimits: c, arrayMin: f, arrayMax: p, defined: e, deg: o, hashKey: d, hashObject: h, isNumber: a, isTransparent: M, last: _, limitValue: i, now: P, objectKey: l, round: n, rad: r, renderAttr: y, renderAllAttr: x, renderPos: C, renderSize: A, renderStyle: k, renderTemplate: w, sparseArrayLimits: v, sparseArrayMin: m, sparseArrayMax: g, sqr: u, valueOrDefault: s, romanToArabic: z, arabicToRoman: S, memoize: N, ucs2encode: j, ucs2decode: T, mergeSort: O } }), D.drawing.util = D.util, D.dataviz.util = D.util;
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("util/text-metrics.min", ["kendo.core.min", "util/main.min"], e);
}(function () {
    !function (e) {
        function n() {
            return { width: 0, height: 0, baseline: 0 };
        }function t(e, n, t) {
            return h.current.measure(e, n, t);
        }function i(e, n) {
            var t = [];if (e.length > 0 && document.fonts) {
                try {
                    t = e.map(function (e) {
                        return document.fonts.load(e);
                    });
                } catch (i) {
                    o.logToConsole(i);
                }Promise.all(t).then(n, n);
            } else n();
        }var r = document,
            o = window.kendo,
            a = o.Class,
            s = o.util,
            u = s.defined,
            l = a.extend({ init: function init(e) {
                this._size = e, this._length = 0, this._map = {};
            }, put: function put(e, n) {
                var t = this,
                    i = t._map,
                    r = { key: e, value: n };i[e] = r, t._head ? (t._tail.newer = r, r.older = t._tail, t._tail = r) : t._head = t._tail = r, t._length >= t._size ? (i[t._head.key] = null, t._head = t._head.newer, t._head.older = null) : t._length++;
            }, get: function get(e) {
                var n = this,
                    t = n._map[e];if (t) return t === n._head && t !== n._tail && (n._head = t.newer, n._head.older = null), t !== n._tail && (t.older && (t.older.newer = t.newer, t.newer.older = t.older), t.older = n._tail, t.newer = null, n._tail.newer = t, n._tail = t), t.value;
            } }),
            d = e("<div style='position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;padding: 0 !important; margin: 0 !important; border: 0 !important;line-height: normal !important; visibility: hidden !important; white-space: nowrap!important;' />")[0],
            h = a.extend({ init: function init(e) {
                this._cache = new l(1e3), this._initOptions(e);
            }, options: { baselineMarkerSize: 1 }, measure: function measure(t, i, o) {
                var a, l, h, c, f, p, m, g;if (!t) return n();if (a = s.objectKey(i), l = s.hashKey(t + a), h = this._cache.get(l), h) return h;c = n(), f = o ? o : d, p = this._baselineMarker().cloneNode(!1);for (m in i) {
                    g = i[m], u(g) && (f.style[m] = g);
                }return e(f).text(t), f.appendChild(p), r.body.appendChild(f), (t + "").length && (c.width = f.offsetWidth - this.options.baselineMarkerSize, c.height = f.offsetHeight, c.baseline = p.offsetTop + this.options.baselineMarkerSize), c.width > 0 && c.height > 0 && this._cache.put(l, c), f.parentNode.removeChild(f), c;
            }, _baselineMarker: function _baselineMarker() {
                return e("<div class='k-baseline-marker' style='display: inline-block; vertical-align: baseline;width: " + this.options.baselineMarkerSize + "px; height: " + this.options.baselineMarkerSize + "px;overflow: hidden;' />")[0];
            } });h.current = new h(), o.util.TextMetrics = h, o.util.LRUCache = l, o.util.loadFonts = i, o.util.measureText = t;
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("util/base64.min", ["util/main.min"], e);
}(function () {
    return function () {
        function e(e) {
            var t,
                i,
                r,
                a,
                s,
                u,
                l,
                d = "",
                h = 0;for (e = n(e); h < e.length;) {
                t = e.charCodeAt(h++), i = e.charCodeAt(h++), r = e.charCodeAt(h++), a = t >> 2, s = (3 & t) << 4 | i >> 4, u = (15 & i) << 2 | r >> 6, l = 63 & r, isNaN(i) ? u = l = 64 : isNaN(r) && (l = 64), d = d + o.charAt(a) + o.charAt(s) + o.charAt(u) + o.charAt(l);
            }return d;
        }function n(e) {
            var n,
                t,
                i = "";for (n = 0; n < e.length; n++) {
                t = e.charCodeAt(n), t < 128 ? i += r(t) : t < 2048 ? (i += r(192 | t >>> 6), i += r(128 | 63 & t)) : t < 65536 && (i += r(224 | t >>> 12), i += r(128 | t >>> 6 & 63), i += r(128 | 63 & t));
            }return i;
        }var t = window.kendo,
            i = t.deepExtend,
            r = String.fromCharCode,
            o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";i(t.util, { encodeBase64: e, encodeUTF8: n });
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("mixins/observers.min", ["kendo.core.min"], e);
}(function () {
    return function (e) {
        var n = Math,
            t = window.kendo,
            i = t.deepExtend,
            r = e.inArray,
            o = { observers: function observers() {
                return this._observers = this._observers || [];
            }, addObserver: function addObserver(e) {
                return this._observers ? this._observers.push(e) : this._observers = [e], this;
            }, removeObserver: function removeObserver(e) {
                var n = this.observers(),
                    t = r(e, n);return t != -1 && n.splice(t, 1), this;
            }, trigger: function trigger(e, n) {
                var t,
                    i,
                    r = this._observers;if (r && !this._suspended) for (i = 0; i < r.length; i++) {
                    t = r[i], t[e] && t[e](n);
                }return this;
            }, optionsChange: function optionsChange(e) {
                e = e || {}, e.element = this, this.trigger("optionsChange", e);
            }, geometryChange: function geometryChange() {
                this.trigger("geometryChange", { element: this });
            }, suspend: function suspend() {
                return this._suspended = (this._suspended || 0) + 1, this;
            }, resume: function resume() {
                return this._suspended = n.max((this._suspended || 0) - 1, 0), this;
            }, _observerField: function _observerField(e, n) {
                this[e] && this[e].removeObserver(this), this[e] = n, n.addObserver(this);
            } };i(t, { mixins: { ObserversMixin: o } });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
}), function (e, define) {
    define("kendo.dataviz.sparkline.min", ["kendo.dataviz.chart.min"], e);
}(function () {
    return function (e, n) {
        function t(e) {
            return "number" == typeof e ? [e] : e;
        }var i = window.kendo,
            r = i.dataviz,
            o = r.ui.Chart,
            a = i.data.ObservableArray,
            s = r.SharedTooltip,
            u = i.deepExtend,
            l = e.isArray,
            d = e.proxy,
            h = r.inArray,
            c = Math,
            f = "k-",
            p = 150,
            m = 150,
            g = "bar",
            v = "bullet",
            _ = "pie",
            b = "leave",
            w = [g, v],
            y = o.extend({ init: function init(n, i) {
                var r = this,
                    s = r.stage = e("<span />"),
                    d = i || {};n = e(n).addClass(f + "sparkline").empty().append(s), r._initialWidth = c.floor(n.width()), d = t(d), (l(d) || d instanceof a) && (d = { seriesDefaults: { data: d } }), d.series || (d.series = [{ data: t(d.data) }]), u(d, { seriesDefaults: { type: d.type } }), (h(d.series[0].type, w) || h(d.seriesDefaults.type, w)) && (d = u({}, { categoryAxis: { crosshair: { visible: !1 } } }, d)), o.fn.init.call(r, n, d);
            }, options: { name: "Sparkline", chartArea: { margin: 2 }, axisDefaults: { visible: !1, majorGridLines: { visible: !1 }, valueAxis: { narrowRange: !0 } }, seriesDefaults: { type: "line", area: { line: { width: .5 } }, bar: { stack: !0 }, padding: 2, width: .5, overlay: { gradient: null }, highlight: { visible: !1 }, border: { width: 0 }, markers: { size: 2, visible: !1 } }, tooltip: { visible: !0, shared: !0 }, categoryAxis: { crosshair: { visible: !0, tooltip: { visible: !1 } } }, legend: { visible: !1 }, transitions: !1, pointWidth: 5, panes: [{ clip: !1 }] }, _modelOptions: function _modelOptions() {
                var n,
                    t,
                    i = this,
                    r = i.options,
                    o = i._initialWidth,
                    a = i.stage;return i.stage.children().hide(), t = e("<span>&nbsp;</span>"), i.stage.append(t), n = u({ width: o ? o : i._autoWidth(), height: a.height(), transitions: r.transitions }, r.chartArea, { inline: !0, align: !1 }), a.css({ width: n.width, height: n.height }), t.remove(), i.stage.children().show(), i.surface.resize(), n;
            }, _createTooltip: function _createTooltip() {
                var e,
                    n = this,
                    t = n.options,
                    i = n.element;return e = n._sharedTooltip() ? new x(i, n._plotArea, t.tooltip) : o.fn._createTooltip.call(n), e.bind(b, d(n._tooltipleave, n)), e;
            }, _surfaceWrap: function _surfaceWrap() {
                return this.stage;
            }, _autoWidth: function _autoWidth() {
                var e,
                    n,
                    t,
                    i = this,
                    o = i.options,
                    a = r.getSpacing(o.chartArea.margin),
                    s = o.series,
                    u = i.dataSource.total(),
                    l = 0;for (n = 0; n < s.length; n++) {
                    if (t = s[n], t.type === g) return p;if (t.type === v) return m;if (t.type === _) return i.stage.height();t.data && (l = c.max(l, t.data.length));
                }return e = c.max(u, l) * o.pointWidth, e > 0 && (e += a.left + a.right), e;
            } }),
            x = s.extend({ options: { animation: { duration: 0 } }, _anchor: function _anchor(e, n) {
                var t = s.fn._anchor.call(this, e, n),
                    i = this._measure();return t.y = -i.height - this.options.offset, t;
            }, _hideElement: function _hideElement() {
                this.element && this.element.hide().remove();
            } });r.ui.plugin(y), u(r, { SparklineSharedTooltip: x });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, n, t) {
    (t || n)();
});;!function (e, define) {
    define("util/main.min", ["kendo.core.min"], e);
}(function () {
    return function () {
        function e(e) {
            return (typeof e === "undefined" ? "undefined" : _typeof(e)) !== R;
        }function t(e, t) {
            var n = i(t);return N.round(e * n) / n;
        }function i(e) {
            return e ? N.pow(10, e) : 1;
        }function n(e, t, i) {
            return N.max(N.min(e, i), t);
        }function o(e) {
            return e * F;
        }function r(e) {
            return e / F;
        }function a(e) {
            return "number" == typeof e && !isNaN(e);
        }function s(t, i) {
            return e(t) ? t : i;
        }function l(e) {
            return e * e;
        }function c(e) {
            var t,
                i = [];for (t in e) {
                i.push(t + e[t]);
            }return i.sort().join("");
        }function u(e) {
            var t,
                i = 2166136261;for (t = 0; t < e.length; ++t) {
                i += (i << 1) + (i << 4) + (i << 7) + (i << 8) + (i << 24), i ^= e.charCodeAt(t);
            }return i >>> 0;
        }function d(e) {
            return u(c(e));
        }function h(e) {
            var t,
                i = e.length,
                n = O,
                o = L;for (t = 0; t < i; t++) {
                o = N.max(o, e[t]), n = N.min(n, e[t]);
            }return { min: n, max: o };
        }function f(e) {
            return h(e).min;
        }function p(e) {
            return h(e).max;
        }function m(e) {
            return g(e).min;
        }function v(e) {
            return g(e).max;
        }function g(e) {
            var t,
                i,
                n,
                o = O,
                r = L;for (t = 0, i = e.length; t < i; t++) {
                n = e[t], null !== n && isFinite(n) && (o = N.min(o, n), r = N.max(r, n));
            }return { min: o === O ? void 0 : o, max: r === L ? void 0 : r };
        }function _(e) {
            if (e) return e[e.length - 1];
        }function x(e, t) {
            return e.push.apply(e, t), e;
        }function b(e) {
            return j.template(e, { useWithBlock: !1, paramName: "d" });
        }function y(t, i) {
            return e(i) && null !== i ? " " + t + "='" + i + "' " : "";
        }function w(e) {
            var t,
                i = "";for (t = 0; t < e.length; t++) {
                i += y(e[t][0], e[t][1]);
            }return i;
        }function A(t) {
            var i,
                n,
                o = "";for (i = 0; i < t.length; i++) {
                n = t[i][1], e(n) && (o += t[i][0] + ":" + n + ";");
            }if ("" !== o) return o;
        }function S(e) {
            return "string" != typeof e && (e += "px"), e;
        }function C(e) {
            var t,
                i,
                n = [];if (e) for (t = j.toHyphens(e).split("-"), i = 0; i < t.length; i++) {
                n.push("k-pos-" + t[i]);
            }return n.join(" ");
        }function k(t) {
            return "" === t || null === t || "none" === t || "transparent" === t || !e(t);
        }function D(e) {
            for (var t = { 1: "i", 10: "x", 100: "c", 2: "ii", 20: "xx", 200: "cc", 3: "iii", 30: "xxx", 300: "ccc", 4: "iv", 40: "xl", 400: "cd", 5: "v", 50: "l", 500: "d", 6: "vi", 60: "lx", 600: "dc", 7: "vii", 70: "lxx", 700: "dcc", 8: "viii", 80: "lxxx", 800: "dccc", 9: "ix", 90: "xc", 900: "cm", 1e3: "m" }, i = [1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], n = ""; e > 0;) {
                e < i[0] ? i.shift() : (n += t[i[0]], e -= i[0]);
            }return n;
        }function T(e) {
            var t, i, n, o, r;for (e = e.toLowerCase(), t = { i: 1, v: 5, x: 10, l: 50, c: 100, d: 500, m: 1e3 }, i = 0, n = 0, o = 0; o < e.length; ++o) {
                if (r = t[e.charAt(o)], !r) return null;i += r, r > n && (i -= 2 * n), n = r;
            }return i;
        }function E(e) {
            var t = Object.create(null);return function () {
                var i,
                    n = "";for (i = arguments.length; --i >= 0;) {
                    n += ":" + arguments[i];
                }return n in t ? t[n] : t[n] = e.apply(this, arguments);
            };
        }function M(e) {
            for (var t, i, n = [], o = 0, r = e.length; o < r;) {
                t = e.charCodeAt(o++), t >= 55296 && t <= 56319 && o < r ? (i = e.charCodeAt(o++), 56320 == (64512 & i) ? n.push(((1023 & t) << 10) + (1023 & i) + 65536) : (n.push(t), o--)) : n.push(t);
            }return n;
        }function z(e) {
            return e.map(function (e) {
                var t = "";return e > 65535 && (e -= 65536, t += String.fromCharCode(e >>> 10 & 1023 | 55296), e = 56320 | 1023 & e), t += String.fromCharCode(e);
            }).join("");
        }function U(e, t) {
            function i(e, i) {
                for (var n = [], o = 0, r = 0, a = 0; o < e.length && r < i.length;) {
                    t(e[o], i[r]) <= 0 ? n[a++] = e[o++] : n[a++] = i[r++];
                }return o < e.length && n.push.apply(n, e.slice(o)), r < i.length && n.push.apply(n, i.slice(r)), n;
            }return e.length < 2 ? e.slice() : function n(e) {
                var t, o, r;return e.length <= 1 ? e : (t = Math.floor(e.length / 2), o = e.slice(0, t), r = e.slice(t), o = n(o), r = n(r), i(o, r));
            }(e);
        }var N = Math,
            j = window.kendo,
            B = j.deepExtend,
            F = N.PI / 180,
            O = Number.MAX_VALUE,
            L = -Number.MAX_VALUE,
            R = "undefined",
            H = Date.now;H || (H = function H() {
            return new Date().getTime();
        }), B(j, { util: { MAX_NUM: O, MIN_NUM: L, append: x, arrayLimits: h, arrayMin: f, arrayMax: p, defined: e, deg: r, hashKey: u, hashObject: d, isNumber: a, isTransparent: k, last: _, limitValue: n, now: H, objectKey: c, round: t, rad: o, renderAttr: y, renderAllAttr: w, renderPos: C, renderSize: S, renderStyle: A, renderTemplate: b, sparseArrayLimits: g, sparseArrayMin: m, sparseArrayMax: v, sqr: l, valueOrDefault: s, romanToArabic: T, arabicToRoman: D, memoize: E, ucs2encode: z, ucs2decode: M, mergeSort: U } }), j.drawing.util = j.util, j.dataviz.util = j.util;
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, t, i) {
    (i || t)();
}), function (e, define) {
    define("util/text-metrics.min", ["kendo.core.min", "util/main.min"], e);
}(function () {
    !function (e) {
        function t() {
            return { width: 0, height: 0, baseline: 0 };
        }function i(e, t, i) {
            return d.current.measure(e, t, i);
        }function n(e, t) {
            var i = [];if (e.length > 0 && document.fonts) {
                try {
                    i = e.map(function (e) {
                        return document.fonts.load(e);
                    });
                } catch (n) {
                    r.logToConsole(n);
                }Promise.all(i).then(t, t);
            } else t();
        }var o = document,
            r = window.kendo,
            a = r.Class,
            s = r.util,
            l = s.defined,
            c = a.extend({ init: function init(e) {
                this._size = e, this._length = 0, this._map = {};
            }, put: function put(e, t) {
                var i = this,
                    n = i._map,
                    o = { key: e, value: t };n[e] = o, i._head ? (i._tail.newer = o, o.older = i._tail, i._tail = o) : i._head = i._tail = o, i._length >= i._size ? (n[i._head.key] = null, i._head = i._head.newer, i._head.older = null) : i._length++;
            }, get: function get(e) {
                var t = this,
                    i = t._map[e];if (i) return i === t._head && i !== t._tail && (t._head = i.newer, t._head.older = null), i !== t._tail && (i.older && (i.older.newer = i.newer, i.newer.older = i.older), i.older = t._tail, i.newer = null, t._tail.newer = i, t._tail = i), i.value;
            } }),
            u = e("<div style='position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;padding: 0 !important; margin: 0 !important; border: 0 !important;line-height: normal !important; visibility: hidden !important; white-space: nowrap!important;' />")[0],
            d = a.extend({ init: function init(e) {
                this._cache = new c(1e3), this._initOptions(e);
            }, options: { baselineMarkerSize: 1 }, measure: function measure(i, n, r) {
                var a, c, d, h, f, p, m, v;if (!i) return t();if (a = s.objectKey(n), c = s.hashKey(i + a), d = this._cache.get(c), d) return d;h = t(), f = r ? r : u, p = this._baselineMarker().cloneNode(!1);for (m in n) {
                    v = n[m], l(v) && (f.style[m] = v);
                }return e(f).text(i), f.appendChild(p), o.body.appendChild(f), (i + "").length && (h.width = f.offsetWidth - this.options.baselineMarkerSize, h.height = f.offsetHeight, h.baseline = p.offsetTop + this.options.baselineMarkerSize), h.width > 0 && h.height > 0 && this._cache.put(c, h), f.parentNode.removeChild(f), h;
            }, _baselineMarker: function _baselineMarker() {
                return e("<div class='k-baseline-marker' style='display: inline-block; vertical-align: baseline;width: " + this.options.baselineMarkerSize + "px; height: " + this.options.baselineMarkerSize + "px;overflow: hidden;' />")[0];
            } });d.current = new d(), r.util.TextMetrics = d, r.util.LRUCache = c, r.util.loadFonts = n, r.util.measureText = i;
    }(window.kendo.jQuery);
}, "function" == typeof define && define.amd ? define : function (e, t, i) {
    (i || t)();
}), function (e, define) {
    define("util/base64.min", ["util/main.min"], e);
}(function () {
    return function () {
        function e(e) {
            var i,
                n,
                o,
                a,
                s,
                l,
                c,
                u = "",
                d = 0;for (e = t(e); d < e.length;) {
                i = e.charCodeAt(d++), n = e.charCodeAt(d++), o = e.charCodeAt(d++), a = i >> 2, s = (3 & i) << 4 | n >> 4, l = (15 & n) << 2 | o >> 6, c = 63 & o, isNaN(n) ? l = c = 64 : isNaN(o) && (c = 64), u = u + r.charAt(a) + r.charAt(s) + r.charAt(l) + r.charAt(c);
            }return u;
        }function t(e) {
            var t,
                i,
                n = "";for (t = 0; t < e.length; t++) {
                i = e.charCodeAt(t), i < 128 ? n += o(i) : i < 2048 ? (n += o(192 | i >>> 6), n += o(128 | 63 & i)) : i < 65536 && (n += o(224 | i >>> 12), n += o(128 | i >>> 6 & 63), n += o(128 | 63 & i));
            }return n;
        }var i = window.kendo,
            n = i.deepExtend,
            o = String.fromCharCode,
            r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n(i.util, { encodeBase64: e, encodeUTF8: t });
    }(), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, t, i) {
    (i || t)();
}), function (e, define) {
    define("mixins/observers.min", ["kendo.core.min"], e);
}(function () {
    return function (e) {
        var t = Math,
            i = window.kendo,
            n = i.deepExtend,
            o = e.inArray,
            r = { observers: function observers() {
                return this._observers = this._observers || [];
            }, addObserver: function addObserver(e) {
                return this._observers ? this._observers.push(e) : this._observers = [e], this;
            }, removeObserver: function removeObserver(e) {
                var t = this.observers(),
                    i = o(e, t);return i != -1 && t.splice(i, 1), this;
            }, trigger: function trigger(e, t) {
                var i,
                    n,
                    o = this._observers;if (o && !this._suspended) for (n = 0; n < o.length; n++) {
                    i = o[n], i[e] && i[e](t);
                }return this;
            }, optionsChange: function optionsChange(e) {
                e = e || {}, e.element = this, this.trigger("optionsChange", e);
            }, geometryChange: function geometryChange() {
                this.trigger("geometryChange", { element: this });
            }, suspend: function suspend() {
                return this._suspended = (this._suspended || 0) + 1, this;
            }, resume: function resume() {
                return this._suspended = t.max((this._suspended || 0) - 1, 0), this;
            }, _observerField: function _observerField(e, t) {
                this[e] && this[e].removeObserver(this), this[e] = t, t.addObserver(this);
            } };n(i, { mixins: { ObserversMixin: r } });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, t, i) {
    (i || t)();
}), function (e, define) {
    define("kendo.dataviz.stock.min", ["kendo.dataviz.chart.min"], e);
}(function () {
    return function (e, t) {
        function i() {}function n(e) {
            return i.prototype = e, new i();
        }var o,
            r = window.kendo,
            a = r.Class,
            s = r.Observable,
            l = r.deepExtend,
            c = Math,
            u = e.proxy,
            d = r.util,
            h = d.last,
            f = d.renderTemplate,
            p = r.dataviz,
            m = d.defined,
            v = p.filterSeriesByType,
            g = r.template,
            _ = p.ui.Chart,
            x = p.Selection,
            b = p.addDuration,
            y = d.limitValue,
            w = p.lteDateIndex,
            A = p.toDate,
            S = p.toTime,
            C = 28,
            k = "change",
            D = "k-",
            T = "drag",
            E = "dragEnd",
            M = "_navigator",
            z = M,
            U = p.EQUALLY_SPACED_SERIES,
            N = 3,
            j = "zoom",
            B = "zoomEnd",
            F = _.extend({ init: function init(t, i) {
                e(t).addClass(D + "chart"), _.fn.init.call(this, t, i);
            }, _applyDefaults: function _applyDefaults(e, t) {
                var i = this,
                    n = i.element.width() || p.DEFAULT_WIDTH,
                    o = { seriesDefaults: { categoryField: e.dateField }, axisDefaults: { categoryAxis: { name: "default", majorGridLines: { visible: !1 }, labels: { step: 2 }, majorTicks: { visible: !1 }, maxDateGroups: c.floor(n / C) } } };t && (t = l({}, t, o)), O.setup(e, t), _.fn._applyDefaults.call(i, e, t);
            }, setOptions: function setOptions(e) {
                this._destroyNavigator(), _.fn.setOptions.call(this, e);
            }, _initDataSource: function _initDataSource(e) {
                var t,
                    i,
                    n = e || {},
                    o = n.dataSource,
                    r = o && o.serverFiltering,
                    a = [].concat(n.categoryAxis)[0],
                    s = n.navigator || {},
                    c = s.select,
                    u = c && c.from && c.to;r && u && (t = [].concat(o.filter || []), i = new p.DateCategoryAxis(l({ baseUnit: "fit" }, a, { categories: [c.from, c.to] })), o.filter = O.buildFilter(i.range().min, c.to).concat(t)), _.fn._initDataSource.call(this, e);
            }, options: { name: "StockChart", dateField: "date", axisDefaults: { categoryAxis: { type: "date", baseUnit: "fit", justified: !0 }, valueAxis: { narrowRange: !0, labels: { format: "C" } } }, navigator: { select: {}, seriesDefaults: { markers: { visible: !1 }, tooltip: { visible: !0, template: "#= kendo.toString(category, 'd') #" }, line: { width: 2 } }, hint: {}, visible: !0 }, tooltip: { visible: !0 }, legend: { visible: !1 } }, _resize: function _resize() {
                var e = this.options.transitions;this.options.transitions = !1, this._fullRedraw(), this.options.transitions = e;
            }, _redraw: function _redraw() {
                var e = this,
                    t = e._navigator;!this._dirty() && t && t.dataSource ? t.redrawSlaves() : e._fullRedraw();
            }, _dirty: function _dirty() {
                var t = this.options,
                    i = [].concat(t.series, t.navigator.series),
                    n = e.grep(i, function (e) {
                    return e && e.visible;
                }).length,
                    o = this._seriesCount !== n;return this._seriesCount = n, o;
            }, _fullRedraw: function _fullRedraw() {
                var e = this,
                    t = e._navigator;t || (t = e._navigator = e.navigator = new O(e)), t._setRange(), _.fn._redraw.call(e), t._initSelection();
            }, _onDataChanged: function _onDataChanged() {
                var e = this;_.fn._onDataChanged.call(e), e._dataBound = !0;
            }, _bindCategoryAxis: function _bindCategoryAxis(e, t, i) {
                var n,
                    o = this,
                    r = o.options.categoryAxis,
                    a = r.length;if (_.fn._bindCategoryAxis.apply(this, arguments), e.name === z) for (; i < a;) {
                    n = r[i++], n.pane == M && (n.categories = e.categories);
                }
            }, _trackSharedTooltip: function _trackSharedTooltip(e) {
                var t = this,
                    i = t._plotArea,
                    n = i.paneByPoint(e);n && n.options.name === M ? t._unsetActivePoint() : _.fn._trackSharedTooltip.call(t, e);
            }, _destroyNavigator: function _destroyNavigator() {
                this._navigator.destroy(), this._navigator = null;
            }, destroy: function destroy() {
                this._destroyNavigator(), _.fn.destroy.call(this);
            } }),
            O = s.extend({ init: function init(e) {
                var t = this;t.chart = e, t.options = l({}, t.options, e.options.navigator), t._initDataSource(), m(t.options.hint.visible) || (t.options.hint.visible = t.options.visible), e.bind(T, u(t._drag, t)), e.bind(E, u(t._dragEnd, t)), e.bind(j, u(t._zoom, t)), e.bind(B, u(t._zoomEnd, t));
            }, options: {}, _initDataSource: function _initDataSource() {
                var e = this,
                    t = e.options,
                    i = t.autoBind,
                    n = t.dataSource;m(i) || (i = e.chart.options.autoBind), e._dataChangedHandler = u(e._onDataChanged, e), n && (e.dataSource = r.data.DataSource.create(n).bind(k, e._dataChangedHandler), i && e.dataSource.fetch());
            }, _onDataChanged: function _onDataChanged() {
                var e,
                    t,
                    i,
                    n,
                    o,
                    r = this,
                    a = r.chart,
                    s = a.options.series,
                    l = s.length,
                    c = a.options.categoryAxis,
                    u = c.length,
                    d = r.dataSource.view();for (e = 0; e < l; e++) {
                    i = s[e], i.axis == z && a._isBindable(i) && (i.data = d);
                }for (t = 0; t < u; t++) {
                    n = c[t], n.pane == M && (n.name == z ? (a._bindCategoryAxis(n, d, t), o = n.categories) : n.categories = o);
                }a._model && (r.redraw(), r._setRange(), (!a.options.dataSource || a.options.dataSource && a._dataBound) && r.redrawSlaves());
            }, destroy: function destroy() {
                var e = this,
                    t = e.dataSource;t && t.unbind(k, e._dataChangeHandler), e.selection && e.selection.destroy();
            }, redraw: function redraw() {
                this._redrawSelf(), this._initSelection();
            }, _initSelection: function _initSelection() {
                var t = this,
                    i = t.chart,
                    r = t.options,
                    a = t.mainAxis(),
                    s = n(a),
                    l = a.range(),
                    c = l.min,
                    u = l.max,
                    h = a.options.categories,
                    f = t.options.select,
                    p = t.selection,
                    m = A(f.from),
                    v = A(f.to);0 !== h.length && (p && (p.destroy(), p.wrapper.remove()), s.box = a.box, p = t.selection = new x(i, s, { min: c, max: u, from: m || c, to: v || u, selectStart: e.proxy(t._selectStart, t), select: e.proxy(t._select, t), selectEnd: e.proxy(t._selectEnd, t), mousewheel: d.valueOrDefault(f.mousewheel, { zoom: "left" }), visible: r.visible }), r.hint.visible && (t.hint = new o(i.element, { min: c, max: u, template: r.hint.template, format: r.hint.format })));
            }, _setRange: function _setRange() {
                var e,
                    t = this.chart._createPlotArea(!0),
                    i = t.namedCategoryAxes[z],
                    n = i.range(),
                    o = n.min,
                    r = n.max,
                    a = this.options.select || {},
                    s = A(a.from) || o;s < o && (s = o), e = A(a.to) || r, e > r && (e = r), this.options.select = l({}, a, { from: s, to: e }), this.filterAxes();
            }, _redrawSelf: function _redrawSelf(e) {
                var t = this.chart._plotArea;t && t.redraw(h(t.panes), e);
            }, redrawSlaves: function redrawSlaves() {
                var e = this,
                    t = e.chart,
                    i = t._plotArea,
                    n = i.panes.slice(0, -1);i.srcSeries = t.options.series, i.redraw(n);
            }, _drag: function _drag(e) {
                var t,
                    i,
                    n,
                    o = this,
                    r = o.chart,
                    a = r._eventCoordinates(e.originalEvent),
                    s = o.mainAxis(),
                    l = s.datesRange(),
                    c = s.pane.box.containsPoint(a),
                    u = r._plotArea.categoryAxis,
                    d = e.axisRanges[u.options.name],
                    h = o.options.select,
                    f = o.selection;d && !c && f && (t = h.from && h.to ? S(h.to) - S(h.from) : S(f.options.to) - S(f.options.from), i = A(y(S(d.min), l.min, S(l.max) - t)), n = A(y(S(i) + t, S(l.min) + t, l.max)), o.options.select = { from: i, to: n }, o._liveDrag() && (o.filterAxes(), o.redrawSlaves()), f.set(i, n), o.showHint(i, n));
            }, _dragEnd: function _dragEnd() {
                var e = this;e.filterAxes(), e.filterDataSource(), e.redrawSlaves(), e.hint && e.hint.hide();
            }, _liveDrag: function _liveDrag() {
                var e = r.support,
                    t = e.touch,
                    i = e.browser,
                    n = i.mozilla,
                    o = i.msie && i.version < 9;return !t && !n && !o;
            }, readSelection: function readSelection() {
                var e = this,
                    t = e.selection,
                    i = t.options,
                    n = e.options.select;n.from = i.from, n.to = i.to;
            }, filterAxes: function filterAxes() {
                var e,
                    t,
                    i = this,
                    n = i.options.select || {},
                    o = i.chart,
                    r = o.options.categoryAxis,
                    a = n.from,
                    s = n.to;for (e = 0; e < r.length; e++) {
                    t = r[e], t.pane !== M && (t.min = A(a), t.max = A(s));
                }
            }, filterDataSource: function filterDataSource() {
                var e,
                    t = this,
                    i = t.options.select || {},
                    n = t.chart,
                    o = n.dataSource,
                    r = o && o.options.serverFiltering;t.dataSource && r && (e = new p.DateCategoryAxis(l({ baseUnit: "fit" }, n.options.categoryAxis[0], { categories: [i.from, i.to] })).options, o.filter(O.buildFilter(b(e.min, -e.baseUnitStep, e.baseUnit), b(e.max, e.baseUnitStep, e.baseUnit))));
            }, _zoom: function _zoom(e) {
                var t,
                    i,
                    n = this,
                    o = n.chart,
                    a = e.delta,
                    s = o._plotArea.categoryAxis,
                    l = n.options.select,
                    u = n.selection,
                    d = n.mainAxis().options.categories;u && (t = w(u.options.from, d), i = w(u.options.to, d), e.originalEvent.preventDefault(), c.abs(a) > 1 && (a *= N), i - t > 1 ? (u.expand(a), n.readSelection()) : (s.options.min = l.from, l.from = s.scaleRange(-e.delta).min), r.support.touch || (n.filterAxes(), n.redrawSlaves()), u.set(l.from, l.to), n.showHint(n.options.select.from, n.options.select.to));
            }, _zoomEnd: function _zoomEnd(e) {
                this._dragEnd(e);
            }, showHint: function showHint(e, t) {
                var i = this,
                    n = i.chart,
                    o = n._plotArea;i.hint && i.hint.show(e, t, o.backgroundBox());
            }, _selectStart: function _selectStart(e) {
                var t = this.chart;t._selectStart.call(t, e);
            }, _select: function _select(e) {
                var t = this,
                    i = t.chart;t.showHint(e.from, e.to), i._select.call(i, e);
            }, _selectEnd: function _selectEnd(e) {
                var t = this,
                    i = t.chart;t.hint && t.hint.hide(), t.readSelection(), t.filterAxes(), t.filterDataSource(), t.redrawSlaves(), i._selectEnd.call(i, e);
            }, mainAxis: function mainAxis() {
                var e = this.chart._plotArea;if (e) return e.namedCategoryAxes[z];
            }, select: function select(e, t) {
                var i = this.options.select;return e && t && (i.from = A(e), i.to = A(t), this.filterAxes(), this.filterDataSource(), this.redrawSlaves(), this.selection.set(e, t)), { from: i.from, to: i.to };
            } });O.setup = function (e, t) {
            if (e = e || {}, t = t || {}, !e.__navi) {
                e.__navi = !0;var i = l({}, t.navigator, e.navigator),
                    n = e.panes = [].concat(e.panes),
                    o = l({}, i.pane, { name: M });i.visible || (o.visible = !1, o.height = .1), n.push(o), O.attachAxes(e, i), O.attachSeries(e, i, t);
            }
        }, O.attachAxes = function (e, t) {
            var i = t.series || [],
                n = e.categoryAxis = [].concat(e.categoryAxis),
                o = e.valueAxis = [].concat(e.valueAxis),
                r = v(i, U),
                a = 0 === r.length,
                s = l({ type: "date", pane: M, roundToBaseUnit: !a, justified: a, _collapse: !1, majorTicks: { visible: !0 }, tooltip: { visible: !1 }, labels: { step: 1 }, autoBind: !t.dataSource, autoBaseUnitSteps: { minutes: [1], hours: [1, 2], days: [1, 2], weeks: [], months: [1], years: [1] }, _overlap: !0 }),
                c = t.categoryAxis;n.push(l({}, s, { maxDateGroups: 200 }, c, { name: z, title: null, baseUnit: "fit", baseUnitStep: "auto", labels: { visible: !1 }, majorTicks: { visible: !1 } }), l({}, s, c, { name: z + "_labels", maxDateGroups: 20, baseUnitStep: "auto", plotBands: [], autoBaseUnitSteps: { minutes: [] } }), l({}, s, c, { name: z + "_ticks", maxDateGroups: 200, majorTicks: { width: .5 }, plotBands: [], title: null, labels: { visible: !1, mirror: !0 } })), o.push(l({ name: z, pane: M, majorGridLines: { visible: !1 }, visible: !1 }, t.valueAxis));
        }, O.attachSeries = function (e, t, i) {
            var n,
                o = e.series = e.series || [],
                r = [].concat(t.series || []),
                a = i.seriesColors,
                s = t.seriesDefaults;for (n = 0; n < r.length; n++) {
                o.push(l({ color: a[n % a.length], categoryField: t.dateField, visibleInLegend: !1, tooltip: { visible: !1 } }, s, r[n], { axis: z, categoryAxis: z, autoBind: !t.dataSource }));
            }
        }, O.buildFilter = function (e, t) {
            return [{ field: "Date", operator: "gte", value: A(e) }, { field: "Date", operator: "lt", value: A(t) }];
        }, o = a.extend({ init: function init(t, i) {
                var n = this;n.options = l({}, n.options, i), n.container = t, n.chartPadding = { top: parseInt(t.css("paddingTop"), 10), left: parseInt(t.css("paddingLeft"), 10) }, n.template = n.template, n.template || (n.template = n.template = f("<div class='" + D + "navigator-hint' style='display: none; position: absolute; top: 1px; left: 1px;'><div class='" + D + "tooltip " + D + "chart-tooltip'>&nbsp;</div><div class='" + D + "scroll' /></div>")), n.element = e(n.template()).appendTo(t);
            }, options: { format: "{0:d} - {1:d}", hideDelay: 500 }, show: function show(e, t, i) {
                var n,
                    o = this,
                    a = A(S(e) + S(t - e) / 2),
                    s = o.options,
                    l = r.format(o.options.format, e, t),
                    c = o.element.find("." + D + "tooltip"),
                    u = o.element.find("." + D + "scroll"),
                    d = .4 * i.width(),
                    h = i.center().x - d,
                    f = i.center().x,
                    p = f - h,
                    m = s.max - s.min,
                    v = p / m,
                    _ = a - s.min;o._hideTimeout && clearTimeout(o._hideTimeout), o._visible || (o.element.stop(!1, !0).css("visibility", "hidden").show(), o._visible = !0), s.template && (n = g(s.template), l = n({ from: e, to: t })), c.html(l).css({ left: i.center().x - r._outerWidth(c) / 2, top: i.y1 }), u.css({ width: d, left: h + _ * v, top: i.y1 + parseInt(c.css("margin-top"), 10) + parseInt(c.css("border-top-width"), 10) + c.height() / 2 }), o.element.css("visibility", "visible");
            }, hide: function hide() {
                var e = this;e._hideTimeout && clearTimeout(e._hideTimeout), e._hideTimeout = setTimeout(function () {
                    e._visible = !1, e.element.fadeOut("slow");
                }, e.options.hideDelay);
            } }), p.ui.plugin(F), l(p, { Navigator: O });
    }(window.kendo.jQuery), window.kendo;
}, "function" == typeof define && define.amd ? define : function (e, t, i) {
    (i || t)();
});;
"use strict";

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; };

/*!
 * Masonry PACKAGED v4.1.1
 * Cascading grid layout library
 * http://masonry.desandro.com
 * MIT License
 * by David DeSandro
 */

!function (t, e) {
  "function" == typeof define && define.amd ? define("jquery-bridget/jquery-bridget", ["jquery"], function (i) {
    return e(t, i);
  }) : "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) && module.exports ? module.exports = e(t, require("jquery")) : t.jQueryBridget = e(t, t.jQuery);
}(window, function (t, e) {
  "use strict";
  function i(i, r, a) {
    function h(t, e, n) {
      var o,
          r = "$()." + i + '("' + e + '")';return t.each(function (t, h) {
        var u = a.data(h, i);if (!u) return void s(i + " not initialized. Cannot call methods, i.e. " + r);var d = u[e];if (!d || "_" == e.charAt(0)) return void s(r + " is not a valid method");var l = d.apply(u, n);o = void 0 === o ? l : o;
      }), void 0 !== o ? o : t;
    }function u(t, e) {
      t.each(function (t, n) {
        var o = a.data(n, i);o ? (o.option(e), o._init()) : (o = new r(n, e), a.data(n, i, o));
      });
    }a = a || e || t.jQuery, a && (r.prototype.option || (r.prototype.option = function (t) {
      a.isPlainObject(t) && (this.options = a.extend(!0, this.options, t));
    }), a.fn[i] = function (t) {
      if ("string" == typeof t) {
        var e = o.call(arguments, 1);return h(this, t, e);
      }return u(this, t), this;
    }, n(a));
  }function n(t) {
    !t || t && t.bridget || (t.bridget = i);
  }var o = Array.prototype.slice,
      r = t.console,
      s = "undefined" == typeof r ? function () {} : function (t) {
    r.error(t);
  };return n(e || t.jQuery), i;
}), function (t, e) {
  "function" == typeof define && define.amd ? define("ev-emitter/ev-emitter", e) : "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) && module.exports ? module.exports = e() : t.EvEmitter = e();
}("undefined" != typeof window ? window : undefined, function () {
  function t() {}var e = t.prototype;return e.on = function (t, e) {
    if (t && e) {
      var i = this._events = this._events || {},
          n = i[t] = i[t] || [];return -1 == n.indexOf(e) && n.push(e), this;
    }
  }, e.once = function (t, e) {
    if (t && e) {
      this.on(t, e);var i = this._onceEvents = this._onceEvents || {},
          n = i[t] = i[t] || {};return n[e] = !0, this;
    }
  }, e.off = function (t, e) {
    var i = this._events && this._events[t];if (i && i.length) {
      var n = i.indexOf(e);return -1 != n && i.splice(n, 1), this;
    }
  }, e.emitEvent = function (t, e) {
    var i = this._events && this._events[t];if (i && i.length) {
      var n = 0,
          o = i[n];e = e || [];for (var r = this._onceEvents && this._onceEvents[t]; o;) {
        var s = r && r[o];s && (this.off(t, o), delete r[o]), o.apply(this, e), n += s ? 0 : 1, o = i[n];
      }return this;
    }
  }, t;
}), function (t, e) {
  "use strict";
  "function" == typeof define && define.amd ? define("get-size/get-size", [], function () {
    return e();
  }) : "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) && module.exports ? module.exports = e() : t.getSize = e();
}(window, function () {
  "use strict";
  function t(t) {
    var e = parseFloat(t),
        i = -1 == t.indexOf("%") && !isNaN(e);return i && e;
  }function e() {}function i() {
    for (var t = { width: 0, height: 0, innerWidth: 0, innerHeight: 0, outerWidth: 0, outerHeight: 0 }, e = 0; u > e; e++) {
      var i = h[e];t[i] = 0;
    }return t;
  }function n(t) {
    var e = getComputedStyle(t);return e || a("Style returned " + e + ". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"), e;
  }function o() {
    if (!d) {
      d = !0;var e = document.createElement("div");e.style.width = "200px", e.style.padding = "1px 2px 3px 4px", e.style.borderStyle = "solid", e.style.borderWidth = "1px 2px 3px 4px", e.style.boxSizing = "border-box";var i = document.body || document.documentElement;i.appendChild(e);var o = n(e);r.isBoxSizeOuter = s = 200 == t(o.width), i.removeChild(e);
    }
  }function r(e) {
    if (o(), "string" == typeof e && (e = document.querySelector(e)), e && "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) && e.nodeType) {
      var r = n(e);if ("none" == r.display) return i();var a = {};a.width = e.offsetWidth, a.height = e.offsetHeight;for (var d = a.isBorderBox = "border-box" == r.boxSizing, l = 0; u > l; l++) {
        var c = h[l],
            f = r[c],
            m = parseFloat(f);a[c] = isNaN(m) ? 0 : m;
      }var p = a.paddingLeft + a.paddingRight,
          g = a.paddingTop + a.paddingBottom,
          y = a.marginLeft + a.marginRight,
          v = a.marginTop + a.marginBottom,
          _ = a.borderLeftWidth + a.borderRightWidth,
          E = a.borderTopWidth + a.borderBottomWidth,
          z = d && s,
          b = t(r.width);b !== !1 && (a.width = b + (z ? 0 : p + _));var x = t(r.height);return x !== !1 && (a.height = x + (z ? 0 : g + E)), a.innerWidth = a.width - (p + _), a.innerHeight = a.height - (g + E), a.outerWidth = a.width + y, a.outerHeight = a.height + v, a;
    }
  }var s,
      a = "undefined" == typeof console ? e : function (t) {
    console.error(t);
  },
      h = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "marginLeft", "marginRight", "marginTop", "marginBottom", "borderLeftWidth", "borderRightWidth", "borderTopWidth", "borderBottomWidth"],
      u = h.length,
      d = !1;return r;
}), function (t, e) {
  "use strict";
  "function" == typeof define && define.amd ? define("desandro-matches-selector/matches-selector", e) : "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) && module.exports ? module.exports = e() : t.matchesSelector = e();
}(window, function () {
  "use strict";
  var t = function () {
    var t = Element.prototype;if (t.matches) return "matches";if (t.matchesSelector) return "matchesSelector";for (var e = ["webkit", "moz", "ms", "o"], i = 0; i < e.length; i++) {
      var n = e[i],
          o = n + "MatchesSelector";if (t[o]) return o;
    }
  }();return function (e, i) {
    return e[t](i);
  };
}), function (t, e) {
  "function" == typeof define && define.amd ? define("fizzy-ui-utils/utils", ["desandro-matches-selector/matches-selector"], function (i) {
    return e(t, i);
  }) : "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) && module.exports ? module.exports = e(t, require("desandro-matches-selector")) : t.fizzyUIUtils = e(t, t.matchesSelector);
}(window, function (t, e) {
  var i = {};i.extend = function (t, e) {
    for (var i in e) {
      t[i] = e[i];
    }return t;
  }, i.modulo = function (t, e) {
    return (t % e + e) % e;
  }, i.makeArray = function (t) {
    var e = [];if (Array.isArray(t)) e = t;else if (t && "number" == typeof t.length) for (var i = 0; i < t.length; i++) {
      e.push(t[i]);
    } else e.push(t);return e;
  }, i.removeFrom = function (t, e) {
    var i = t.indexOf(e);-1 != i && t.splice(i, 1);
  }, i.getParent = function (t, i) {
    for (; t != document.body;) {
      if (t = t.parentNode, e(t, i)) return t;
    }
  }, i.getQueryElement = function (t) {
    return "string" == typeof t ? document.querySelector(t) : t;
  }, i.handleEvent = function (t) {
    var e = "on" + t.type;this[e] && this[e](t);
  }, i.filterFindElements = function (t, n) {
    t = i.makeArray(t);var o = [];return t.forEach(function (t) {
      if (t instanceof HTMLElement) {
        if (!n) return void o.push(t);e(t, n) && o.push(t);for (var i = t.querySelectorAll(n), r = 0; r < i.length; r++) {
          o.push(i[r]);
        }
      }
    }), o;
  }, i.debounceMethod = function (t, e, i) {
    var n = t.prototype[e],
        o = e + "Timeout";t.prototype[e] = function () {
      var t = this[o];t && clearTimeout(t);var e = arguments,
          r = this;this[o] = setTimeout(function () {
        n.apply(r, e), delete r[o];
      }, i || 100);
    };
  }, i.docReady = function (t) {
    var e = document.readyState;"complete" == e || "interactive" == e ? t() : document.addEventListener("DOMContentLoaded", t);
  }, i.toDashed = function (t) {
    return t.replace(/(.)([A-Z])/g, function (t, e, i) {
      return e + "-" + i;
    }).toLowerCase();
  };var n = t.console;return i.htmlInit = function (e, o) {
    i.docReady(function () {
      var r = i.toDashed(o),
          s = "data-" + r,
          a = document.querySelectorAll("[" + s + "]"),
          h = document.querySelectorAll(".js-" + r),
          u = i.makeArray(a).concat(i.makeArray(h)),
          d = s + "-options",
          l = t.jQuery;u.forEach(function (t) {
        var i,
            r = t.getAttribute(s) || t.getAttribute(d);try {
          i = r && JSON.parse(r);
        } catch (a) {
          return void (n && n.error("Error parsing " + s + " on " + t.className + ": " + a));
        }var h = new e(t, i);l && l.data(t, o, h);
      });
    });
  }, i;
}), function (t, e) {
  "function" == typeof define && define.amd ? define("outlayer/item", ["ev-emitter/ev-emitter", "get-size/get-size"], e) : "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) && module.exports ? module.exports = e(require("ev-emitter"), require("get-size")) : (t.Outlayer = {}, t.Outlayer.Item = e(t.EvEmitter, t.getSize));
}(window, function (t, e) {
  "use strict";
  function i(t) {
    for (var e in t) {
      return !1;
    }return e = null, !0;
  }function n(t, e) {
    t && (this.element = t, this.layout = e, this.position = { x: 0, y: 0 }, this._create());
  }function o(t) {
    return t.replace(/([A-Z])/g, function (t) {
      return "-" + t.toLowerCase();
    });
  }var r = document.documentElement.style,
      s = "string" == typeof r.transition ? "transition" : "WebkitTransition",
      a = "string" == typeof r.transform ? "transform" : "WebkitTransform",
      h = { WebkitTransition: "webkitTransitionEnd", transition: "transitionend" }[s],
      u = { transform: a, transition: s, transitionDuration: s + "Duration", transitionProperty: s + "Property", transitionDelay: s + "Delay" },
      d = n.prototype = Object.create(t.prototype);d.constructor = n, d._create = function () {
    this._transn = { ingProperties: {}, clean: {}, onEnd: {} }, this.css({ position: "absolute" });
  }, d.handleEvent = function (t) {
    var e = "on" + t.type;this[e] && this[e](t);
  }, d.getSize = function () {
    this.size = e(this.element);
  }, d.css = function (t) {
    var e = this.element.style;for (var i in t) {
      var n = u[i] || i;e[n] = t[i];
    }
  }, d.getPosition = function () {
    var t = getComputedStyle(this.element),
        e = this.layout._getOption("originLeft"),
        i = this.layout._getOption("originTop"),
        n = t[e ? "left" : "right"],
        o = t[i ? "top" : "bottom"],
        r = this.layout.size,
        s = -1 != n.indexOf("%") ? parseFloat(n) / 100 * r.width : parseInt(n, 10),
        a = -1 != o.indexOf("%") ? parseFloat(o) / 100 * r.height : parseInt(o, 10);s = isNaN(s) ? 0 : s, a = isNaN(a) ? 0 : a, s -= e ? r.paddingLeft : r.paddingRight, a -= i ? r.paddingTop : r.paddingBottom, this.position.x = s, this.position.y = a;
  }, d.layoutPosition = function () {
    var t = this.layout.size,
        e = {},
        i = this.layout._getOption("originLeft"),
        n = this.layout._getOption("originTop"),
        o = i ? "paddingLeft" : "paddingRight",
        r = i ? "left" : "right",
        s = i ? "right" : "left",
        a = this.position.x + t[o];e[r] = this.getXValue(a), e[s] = "";var h = n ? "paddingTop" : "paddingBottom",
        u = n ? "top" : "bottom",
        d = n ? "bottom" : "top",
        l = this.position.y + t[h];e[u] = this.getYValue(l), e[d] = "", this.css(e), this.emitEvent("layout", [this]);
  }, d.getXValue = function (t) {
    var e = this.layout._getOption("horizontal");return this.layout.options.percentPosition && !e ? t / this.layout.size.width * 100 + "%" : t + "px";
  }, d.getYValue = function (t) {
    var e = this.layout._getOption("horizontal");return this.layout.options.percentPosition && e ? t / this.layout.size.height * 100 + "%" : t + "px";
  }, d._transitionTo = function (t, e) {
    this.getPosition();var i = this.position.x,
        n = this.position.y,
        o = parseInt(t, 10),
        r = parseInt(e, 10),
        s = o === this.position.x && r === this.position.y;if (this.setPosition(t, e), s && !this.isTransitioning) return void this.layoutPosition();var a = t - i,
        h = e - n,
        u = {};u.transform = this.getTranslate(a, h), this.transition({ to: u, onTransitionEnd: { transform: this.layoutPosition }, isCleaning: !0 });
  }, d.getTranslate = function (t, e) {
    var i = this.layout._getOption("originLeft"),
        n = this.layout._getOption("originTop");return t = i ? t : -t, e = n ? e : -e, "translate3d(" + t + "px, " + e + "px, 0)";
  }, d.goTo = function (t, e) {
    this.setPosition(t, e), this.layoutPosition();
  }, d.moveTo = d._transitionTo, d.setPosition = function (t, e) {
    this.position.x = parseInt(t, 10), this.position.y = parseInt(e, 10);
  }, d._nonTransition = function (t) {
    this.css(t.to), t.isCleaning && this._removeStyles(t.to);for (var e in t.onTransitionEnd) {
      t.onTransitionEnd[e].call(this);
    }
  }, d.transition = function (t) {
    if (!parseFloat(this.layout.options.transitionDuration)) return void this._nonTransition(t);var e = this._transn;for (var i in t.onTransitionEnd) {
      e.onEnd[i] = t.onTransitionEnd[i];
    }for (i in t.to) {
      e.ingProperties[i] = !0, t.isCleaning && (e.clean[i] = !0);
    }if (t.from) {
      this.css(t.from);var n = this.element.offsetHeight;n = null;
    }this.enableTransition(t.to), this.css(t.to), this.isTransitioning = !0;
  };var l = "opacity," + o(a);d.enableTransition = function () {
    if (!this.isTransitioning) {
      var t = this.layout.options.transitionDuration;t = "number" == typeof t ? t + "ms" : t, this.css({ transitionProperty: l, transitionDuration: t, transitionDelay: this.staggerDelay || 0 }), this.element.addEventListener(h, this, !1);
    }
  }, d.onwebkitTransitionEnd = function (t) {
    this.ontransitionend(t);
  }, d.onotransitionend = function (t) {
    this.ontransitionend(t);
  };var c = { "-webkit-transform": "transform" };d.ontransitionend = function (t) {
    if (t.target === this.element) {
      var e = this._transn,
          n = c[t.propertyName] || t.propertyName;if (delete e.ingProperties[n], i(e.ingProperties) && this.disableTransition(), n in e.clean && (this.element.style[t.propertyName] = "", delete e.clean[n]), n in e.onEnd) {
        var o = e.onEnd[n];o.call(this), delete e.onEnd[n];
      }this.emitEvent("transitionEnd", [this]);
    }
  }, d.disableTransition = function () {
    this.removeTransitionStyles(), this.element.removeEventListener(h, this, !1), this.isTransitioning = !1;
  }, d._removeStyles = function (t) {
    var e = {};for (var i in t) {
      e[i] = "";
    }this.css(e);
  };var f = { transitionProperty: "", transitionDuration: "", transitionDelay: "" };return d.removeTransitionStyles = function () {
    this.css(f);
  }, d.stagger = function (t) {
    t = isNaN(t) ? 0 : t, this.staggerDelay = t + "ms";
  }, d.removeElem = function () {
    this.element.parentNode.removeChild(this.element), this.css({ display: "" }), this.emitEvent("remove", [this]);
  }, d.remove = function () {
    return s && parseFloat(this.layout.options.transitionDuration) ? (this.once("transitionEnd", function () {
      this.removeElem();
    }), void this.hide()) : void this.removeElem();
  }, d.reveal = function () {
    delete this.isHidden, this.css({ display: "" });var t = this.layout.options,
        e = {},
        i = this.getHideRevealTransitionEndProperty("visibleStyle");e[i] = this.onRevealTransitionEnd, this.transition({ from: t.hiddenStyle, to: t.visibleStyle, isCleaning: !0, onTransitionEnd: e });
  }, d.onRevealTransitionEnd = function () {
    this.isHidden || this.emitEvent("reveal");
  }, d.getHideRevealTransitionEndProperty = function (t) {
    var e = this.layout.options[t];if (e.opacity) return "opacity";for (var i in e) {
      return i;
    }
  }, d.hide = function () {
    this.isHidden = !0, this.css({ display: "" });var t = this.layout.options,
        e = {},
        i = this.getHideRevealTransitionEndProperty("hiddenStyle");e[i] = this.onHideTransitionEnd, this.transition({ from: t.visibleStyle, to: t.hiddenStyle, isCleaning: !0, onTransitionEnd: e });
  }, d.onHideTransitionEnd = function () {
    this.isHidden && (this.css({ display: "none" }), this.emitEvent("hide"));
  }, d.destroy = function () {
    this.css({ position: "", left: "", right: "", top: "", bottom: "", transition: "", transform: "" });
  }, n;
}), function (t, e) {
  "use strict";
  "function" == typeof define && define.amd ? define("outlayer/outlayer", ["ev-emitter/ev-emitter", "get-size/get-size", "fizzy-ui-utils/utils", "./item"], function (i, n, o, r) {
    return e(t, i, n, o, r);
  }) : "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) && module.exports ? module.exports = e(t, require("ev-emitter"), require("get-size"), require("fizzy-ui-utils"), require("./item")) : t.Outlayer = e(t, t.EvEmitter, t.getSize, t.fizzyUIUtils, t.Outlayer.Item);
}(window, function (t, e, i, n, o) {
  "use strict";
  function r(t, e) {
    var i = n.getQueryElement(t);if (!i) return void (h && h.error("Bad element for " + this.constructor.namespace + ": " + (i || t)));this.element = i, u && (this.$element = u(this.element)), this.options = n.extend({}, this.constructor.defaults), this.option(e);var o = ++l;this.element.outlayerGUID = o, c[o] = this, this._create();var r = this._getOption("initLayout");r && this.layout();
  }function s(t) {
    function e() {
      t.apply(this, arguments);
    }return e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e;
  }function a(t) {
    if ("number" == typeof t) return t;var e = t.match(/(^\d*\.?\d*)(\w*)/),
        i = e && e[1],
        n = e && e[2];if (!i.length) return 0;i = parseFloat(i);var o = m[n] || 1;return i * o;
  }var h = t.console,
      u = t.jQuery,
      d = function d() {},
      l = 0,
      c = {};r.namespace = "outlayer", r.Item = o, r.defaults = { containerStyle: { position: "relative" }, initLayout: !0, originLeft: !0, originTop: !0, resize: !0, resizeContainer: !0, transitionDuration: "0.4s", hiddenStyle: { opacity: 0, transform: "scale(0.001)" }, visibleStyle: { opacity: 1, transform: "scale(1)" } };var f = r.prototype;n.extend(f, e.prototype), f.option = function (t) {
    n.extend(this.options, t);
  }, f._getOption = function (t) {
    var e = this.constructor.compatOptions[t];return e && void 0 !== this.options[e] ? this.options[e] : this.options[t];
  }, r.compatOptions = { initLayout: "isInitLayout", horizontal: "isHorizontal", layoutInstant: "isLayoutInstant", originLeft: "isOriginLeft", originTop: "isOriginTop", resize: "isResizeBound", resizeContainer: "isResizingContainer" }, f._create = function () {
    this.reloadItems(), this.stamps = [], this.stamp(this.options.stamp), n.extend(this.element.style, this.options.containerStyle);var t = this._getOption("resize");t && this.bindResize();
  }, f.reloadItems = function () {
    this.items = this._itemize(this.element.children);
  }, f._itemize = function (t) {
    for (var e = this._filterFindItemElements(t), i = this.constructor.Item, n = [], o = 0; o < e.length; o++) {
      var r = e[o],
          s = new i(r, this);n.push(s);
    }return n;
  }, f._filterFindItemElements = function (t) {
    return n.filterFindElements(t, this.options.itemSelector);
  }, f.getItemElements = function () {
    return this.items.map(function (t) {
      return t.element;
    });
  }, f.layout = function () {
    this._resetLayout(), this._manageStamps();var t = this._getOption("layoutInstant"),
        e = void 0 !== t ? t : !this._isLayoutInited;this.layoutItems(this.items, e), this._isLayoutInited = !0;
  }, f._init = f.layout, f._resetLayout = function () {
    this.getSize();
  }, f.getSize = function () {
    this.size = i(this.element);
  }, f._getMeasurement = function (t, e) {
    var n,
        o = this.options[t];o ? ("string" == typeof o ? n = this.element.querySelector(o) : o instanceof HTMLElement && (n = o), this[t] = n ? i(n)[e] : o) : this[t] = 0;
  }, f.layoutItems = function (t, e) {
    t = this._getItemsForLayout(t), this._layoutItems(t, e), this._postLayout();
  }, f._getItemsForLayout = function (t) {
    return t.filter(function (t) {
      return !t.isIgnored;
    });
  }, f._layoutItems = function (t, e) {
    if (this._emitCompleteOnItems("layout", t), t && t.length) {
      var i = [];t.forEach(function (t) {
        var n = this._getItemLayoutPosition(t);n.item = t, n.isInstant = e || t.isLayoutInstant, i.push(n);
      }, this), this._processLayoutQueue(i);
    }
  }, f._getItemLayoutPosition = function () {
    return { x: 0, y: 0 };
  }, f._processLayoutQueue = function (t) {
    this.updateStagger(), t.forEach(function (t, e) {
      this._positionItem(t.item, t.x, t.y, t.isInstant, e);
    }, this);
  }, f.updateStagger = function () {
    var t = this.options.stagger;return null === t || void 0 === t ? void (this.stagger = 0) : (this.stagger = a(t), this.stagger);
  }, f._positionItem = function (t, e, i, n, o) {
    n ? t.goTo(e, i) : (t.stagger(o * this.stagger), t.moveTo(e, i));
  }, f._postLayout = function () {
    this.resizeContainer();
  }, f.resizeContainer = function () {
    var t = this._getOption("resizeContainer");if (t) {
      var e = this._getContainerSize();e && (this._setContainerMeasure(e.width, !0), this._setContainerMeasure(e.height, !1));
    }
  }, f._getContainerSize = d, f._setContainerMeasure = function (t, e) {
    if (void 0 !== t) {
      var i = this.size;i.isBorderBox && (t += e ? i.paddingLeft + i.paddingRight + i.borderLeftWidth + i.borderRightWidth : i.paddingBottom + i.paddingTop + i.borderTopWidth + i.borderBottomWidth), t = Math.max(t, 0), this.element.style[e ? "width" : "height"] = t + "px";
    }
  }, f._emitCompleteOnItems = function (t, e) {
    function i() {
      o.dispatchEvent(t + "Complete", null, [e]);
    }function n() {
      s++, s == r && i();
    }var o = this,
        r = e.length;if (!e || !r) return void i();var s = 0;e.forEach(function (e) {
      e.once(t, n);
    });
  }, f.dispatchEvent = function (t, e, i) {
    var n = e ? [e].concat(i) : i;if (this.emitEvent(t, n), u) if (this.$element = this.$element || u(this.element), e) {
      var o = u.Event(e);o.type = t, this.$element.trigger(o, i);
    } else this.$element.trigger(t, i);
  }, f.ignore = function (t) {
    var e = this.getItem(t);e && (e.isIgnored = !0);
  }, f.unignore = function (t) {
    var e = this.getItem(t);e && delete e.isIgnored;
  }, f.stamp = function (t) {
    t = this._find(t), t && (this.stamps = this.stamps.concat(t), t.forEach(this.ignore, this));
  }, f.unstamp = function (t) {
    t = this._find(t), t && t.forEach(function (t) {
      n.removeFrom(this.stamps, t), this.unignore(t);
    }, this);
  }, f._find = function (t) {
    return t ? ("string" == typeof t && (t = this.element.querySelectorAll(t)), t = n.makeArray(t)) : void 0;
  }, f._manageStamps = function () {
    this.stamps && this.stamps.length && (this._getBoundingRect(), this.stamps.forEach(this._manageStamp, this));
  }, f._getBoundingRect = function () {
    var t = this.element.getBoundingClientRect(),
        e = this.size;this._boundingRect = { left: t.left + e.paddingLeft + e.borderLeftWidth, top: t.top + e.paddingTop + e.borderTopWidth, right: t.right - (e.paddingRight + e.borderRightWidth), bottom: t.bottom - (e.paddingBottom + e.borderBottomWidth) };
  }, f._manageStamp = d, f._getElementOffset = function (t) {
    var e = t.getBoundingClientRect(),
        n = this._boundingRect,
        o = i(t),
        r = { left: e.left - n.left - o.marginLeft, top: e.top - n.top - o.marginTop, right: n.right - e.right - o.marginRight, bottom: n.bottom - e.bottom - o.marginBottom };return r;
  }, f.handleEvent = n.handleEvent, f.bindResize = function () {
    t.addEventListener("resize", this), this.isResizeBound = !0;
  }, f.unbindResize = function () {
    t.removeEventListener("resize", this), this.isResizeBound = !1;
  }, f.onresize = function () {
    this.resize();
  }, n.debounceMethod(r, "onresize", 100), f.resize = function () {
    this.isResizeBound && this.needsResizeLayout() && this.layout();
  }, f.needsResizeLayout = function () {
    var t = i(this.element),
        e = this.size && t;return e && t.innerWidth !== this.size.innerWidth;
  }, f.addItems = function (t) {
    var e = this._itemize(t);return e.length && (this.items = this.items.concat(e)), e;
  }, f.appended = function (t) {
    var e = this.addItems(t);e.length && (this.layoutItems(e, !0), this.reveal(e));
  }, f.prepended = function (t) {
    var e = this._itemize(t);if (e.length) {
      var i = this.items.slice(0);this.items = e.concat(i), this._resetLayout(), this._manageStamps(), this.layoutItems(e, !0), this.reveal(e), this.layoutItems(i);
    }
  }, f.reveal = function (t) {
    if (this._emitCompleteOnItems("reveal", t), t && t.length) {
      var e = this.updateStagger();t.forEach(function (t, i) {
        t.stagger(i * e), t.reveal();
      });
    }
  }, f.hide = function (t) {
    if (this._emitCompleteOnItems("hide", t), t && t.length) {
      var e = this.updateStagger();t.forEach(function (t, i) {
        t.stagger(i * e), t.hide();
      });
    }
  }, f.revealItemElements = function (t) {
    var e = this.getItems(t);this.reveal(e);
  }, f.hideItemElements = function (t) {
    var e = this.getItems(t);this.hide(e);
  }, f.getItem = function (t) {
    for (var e = 0; e < this.items.length; e++) {
      var i = this.items[e];if (i.element == t) return i;
    }
  }, f.getItems = function (t) {
    t = n.makeArray(t);var e = [];return t.forEach(function (t) {
      var i = this.getItem(t);i && e.push(i);
    }, this), e;
  }, f.remove = function (t) {
    var e = this.getItems(t);this._emitCompleteOnItems("remove", e), e && e.length && e.forEach(function (t) {
      t.remove(), n.removeFrom(this.items, t);
    }, this);
  }, f.destroy = function () {
    var t = this.element.style;t.height = "", t.position = "", t.width = "", this.items.forEach(function (t) {
      t.destroy();
    }), this.unbindResize();var e = this.element.outlayerGUID;delete c[e], delete this.element.outlayerGUID, u && u.removeData(this.element, this.constructor.namespace);
  }, r.data = function (t) {
    t = n.getQueryElement(t);var e = t && t.outlayerGUID;return e && c[e];
  }, r.create = function (t, e) {
    var i = s(r);return i.defaults = n.extend({}, r.defaults), n.extend(i.defaults, e), i.compatOptions = n.extend({}, r.compatOptions), i.namespace = t, i.data = r.data, i.Item = s(o), n.htmlInit(i, t), u && u.bridget && u.bridget(t, i), i;
  };var m = { ms: 1, s: 1e3 };return r.Item = o, r;
}), function (t, e) {
  "function" == typeof define && define.amd ? define(["outlayer/outlayer", "get-size/get-size"], e) : "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) && module.exports ? module.exports = e(require("outlayer"), require("get-size")) : t.Masonry = e(t.Outlayer, t.getSize);
}(window, function (t, e) {
  var i = t.create("masonry");return i.compatOptions.fitWidth = "isFitWidth", i.prototype._resetLayout = function () {
    this.getSize(), this._getMeasurement("columnWidth", "outerWidth"), this._getMeasurement("gutter", "outerWidth"), this.measureColumns(), this.colYs = [];for (var t = 0; t < this.cols; t++) {
      this.colYs.push(0);
    }this.maxY = 0;
  }, i.prototype.measureColumns = function () {
    if (this.getContainerWidth(), !this.columnWidth) {
      var t = this.items[0],
          i = t && t.element;this.columnWidth = i && e(i).outerWidth || this.containerWidth;
    }var n = this.columnWidth += this.gutter,
        o = this.containerWidth + this.gutter,
        r = o / n,
        s = n - o % n,
        a = s && 1 > s ? "round" : "floor";r = Math[a](r), this.cols = Math.max(r, 1);
  }, i.prototype.getContainerWidth = function () {
    var t = this._getOption("fitWidth"),
        i = t ? this.element.parentNode : this.element,
        n = e(i);this.containerWidth = n && n.innerWidth;
  }, i.prototype._getItemLayoutPosition = function (t) {
    t.getSize();var e = t.size.outerWidth % this.columnWidth,
        i = e && 1 > e ? "round" : "ceil",
        n = Math[i](t.size.outerWidth / this.columnWidth);n = Math.min(n, this.cols);for (var o = this._getColGroup(n), r = Math.min.apply(Math, o), s = o.indexOf(r), a = { x: this.columnWidth * s, y: r }, h = r + t.size.outerHeight, u = this.cols + 1 - o.length, d = 0; u > d; d++) {
      this.colYs[s + d] = h;
    }return a;
  }, i.prototype._getColGroup = function (t) {
    if (2 > t) return this.colYs;for (var e = [], i = this.cols + 1 - t, n = 0; i > n; n++) {
      var o = this.colYs.slice(n, n + t);e[n] = Math.max.apply(Math, o);
    }return e;
  }, i.prototype._manageStamp = function (t) {
    var i = e(t),
        n = this._getElementOffset(t),
        o = this._getOption("originLeft"),
        r = o ? n.left : n.right,
        s = r + i.outerWidth,
        a = Math.floor(r / this.columnWidth);a = Math.max(0, a);var h = Math.floor(s / this.columnWidth);h -= s % this.columnWidth ? 0 : 1, h = Math.min(this.cols - 1, h);for (var u = this._getOption("originTop"), d = (u ? n.top : n.bottom) + i.outerHeight, l = a; h >= l; l++) {
      this.colYs[l] = Math.max(d, this.colYs[l]);
    }
  }, i.prototype._getContainerSize = function () {
    this.maxY = Math.max.apply(Math, this.colYs);var t = { height: this.maxY };return this._getOption("fitWidth") && (t.width = this._getContainerFitWidth()), t;
  }, i.prototype._getContainerFitWidth = function () {
    for (var t = 0, e = this.cols; --e && 0 === this.colYs[e];) {
      t++;
    }return (this.cols - t) * this.columnWidth - this.gutter;
  }, i.prototype.needsResizeLayout = function () {
    var t = this.containerWidth;return this.getContainerWidth(), t != this.containerWidth;
  }, i;
});
'use strict';

/*! Tablesaw - v3.0.0-beta.4 - 2016-10-12
 * https://github.com/filamentgroup/tablesaw
 * Copyright (c) 2016 Filament Group; Licensed MIT */
;(function (win) {

    var $;
    if ('shoestring' in win) {
        $ = win.shoestring;
    } else if ('jQuery' in win) {
        $ = win.jQuery;
    } else {
        throw new Error("tablesaw: DOM library not found.");
    }

    // DOM-ready auto-init of plugins.
    // Many plugins bind to an "enhance" event to init themselves on dom ready, or when new markup is inserted into the DOM
    $(function () {
        $(document).trigger("enhance.tablesaw");
    });
})(typeof window !== "undefined" ? window : undefined);
'use strict';

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; };

/*! Tablesaw - v3.0.0-beta.4 - 2016-10-12
 * https://github.com/filamentgroup/tablesaw
 * Copyright (c) 2016 Filament Group; Licensed MIT */
// UMD module definition
// From: https://github.com/umdjs/umd/blob/master/templates/jqueryPlugin.js

(function (factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD. Register as an anonymous module.
        define(['jquery'], factory);
    } else if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) === 'object' && module.exports) {
        // Node/CommonJS
        module.exports = function (root, jQuery) {
            if (jQuery === undefined) {
                // require('jQuery') returns a factory that requires window to
                // build a jQuery instance, we normalize how we use modules
                // that require this pattern but the window provided is a noop
                // if it's defined (how jquery works)
                if (typeof window !== 'undefined') {
                    jQuery = require('jquery');
                } else {
                    jQuery = require('jquery')(root);
                }
            }
            factory(jQuery);
            return jQuery;
        };
    } else {
        // Browser globals
        factory(jQuery);
    }
})(function ($) {
    var Tablesaw,
        win = typeof window !== "undefined" ? window : this;

    /*
     * tablesaw: A set of plugins for responsive tables
     * Stack and Column Toggle tables
     * Copyright (c) 2013 Filament Group, Inc.
     * MIT License
     */

    if (typeof Tablesaw === "undefined") {
        Tablesaw = {
            i18n: {
                modes: ['Stack', 'Swipe', 'Toggle'],
                columns: 'Col<span class=\"a11y-sm\">umn</span>s',
                columnBtnText: 'Columns',
                columnsDialogError: 'No eligible columns.',
                sort: 'Sort'
            },
            // cut the mustard
            mustard: 'querySelector' in document && 'head' in document && (!window.blackberry || window.WebKitPoint) && !window.operamini
        };
    }
    if (!Tablesaw.config) {
        Tablesaw.config = {};
    }
    if (Tablesaw.mustard) {
        $(document.documentElement).addClass('tablesaw-enhanced');
    }

    (function () {
        var pluginName = "tablesaw",
            classes = {
            toolbar: "tablesaw-bar"
        },
            events = {
            create: "tablesawcreate",
            destroy: "tablesawdestroy",
            refresh: "tablesawrefresh"
        },
            defaultMode = "stack",
            initSelector = "table[data-tablesaw-mode],table[data-tablesaw-sortable]";

        var Table = function Table(element) {
            if (!element) {
                throw new Error("Tablesaw requires an element.");
            }

            this.table = element;
            this.$table = $(element);

            this.mode = this.$table.attr("data-tablesaw-mode") || defaultMode;

            this.init();
        };

        Table.prototype.init = function () {
            // assign an id if there is none
            if (!this.$table.attr("id")) {
                this.$table.attr("id", pluginName + "-" + Math.round(Math.random() * 10000));
            }

            this.createToolbar();

            var colstart = this._initCells();

            this.$table.trigger(events.create, [this, colstart]);
        };

        Table.prototype._initCells = function () {
            var colstart,
                thrs = this.table.querySelectorAll("thead tr"),
                self = this;

            $(thrs).each(function () {
                var coltally = 0;

                var children = $(this).children();
                var columnlookup = [];
                children.each(function () {
                    var span = parseInt(this.getAttribute("colspan"), 10);

                    columnlookup[coltally] = this;
                    colstart = coltally + 1;

                    if (span) {
                        for (var k = 0; k < span - 1; k++) {
                            coltally++;
                            columnlookup[coltally] = this;
                        }
                    }
                    this.cells = [];
                    coltally++;
                });
                // Note that this assumes that children() returns its results in document order. jQuery doesn't
                // promise that in the docs, but it's a pretty safe assumption.
                self.$table.find("tr").not(thrs[0]).each(function () {
                    var cellcoltally = 0;
                    $(this).children().each(function () {
                        var span = parseInt(this.getAttribute("colspan"), 10);
                        columnlookup[cellcoltally].cells.push(this);
                        if (span) {
                            cellcoltally += span;
                        } else {
                            cellcoltally++;
                        }
                    });
                });
            });

            return colstart;
        };

        Table.prototype.refresh = function () {
            this._initCells();

            this.$table.trigger(events.refresh);
        };

        Table.prototype.createToolbar = function () {
            // Insert the toolbar
            // TODO move this into a separate component
            var $toolbar = this.$table.prev().filter('.' + classes.toolbar);
            if (!$toolbar.length) {
                $toolbar = $('<div>').addClass(classes.toolbar).insertBefore(this.$table);
            }
            this.$toolbar = $toolbar;

            if (this.mode) {
                this.$toolbar.addClass('tablesaw-mode-' + this.mode);
            }
        };

        Table.prototype.destroy = function () {
            // Don’t remove the toolbar. Some of the table features are not yet destroy-friendly.
            this.$table.prev().filter('.' + classes.toolbar).each(function () {
                this.className = this.className.replace(/\btablesaw-mode\-\w*\b/gi, '');
            });

            var tableId = this.$table.attr('id');
            $(document).off("." + tableId);
            $(window).off("." + tableId);

            // other plugins
            this.$table.trigger(events.destroy, [this]);

            this.$table.removeData(pluginName);
        };

        // Collection method.
        $.fn[pluginName] = function () {
            return this.each(function () {
                var $t = $(this);

                if ($t.data(pluginName)) {
                    return;
                }

                var table = new Table(this);
                $t.data(pluginName, table);
            });
        };

        $(document).on("enhance.tablesaw", function (e) {
            // Cut the mustard
            if (Tablesaw.mustard) {
                $(e.target).find(initSelector)[pluginName]();
            }
        });
    })();

    ;(function () {

        var classes = {
            stackTable: 'tablesaw-stack',
            cellLabels: 'tablesaw-cell-label',
            cellContentLabels: 'tablesaw-cell-content'
        };

        var data = {
            obj: 'tablesaw-stack'
        };

        var attrs = {
            labelless: 'data-tablesaw-no-labels',
            hideempty: 'data-tablesaw-hide-empty'
        };

        var Stack = function Stack(element) {

            this.$table = $(element);

            this.labelless = this.$table.is('[' + attrs.labelless + ']');
            this.hideempty = this.$table.is('[' + attrs.hideempty + ']');

            if (!this.labelless) {
                // allHeaders references headers, plus all THs in the thead, which may include several rows, or not
                this.allHeaders = this.$table.find("th");
            }

            this.$table.data(data.obj, this);
        };

        Stack.prototype.init = function (colstart) {
            this.$table.addClass(classes.stackTable);

            if (this.labelless) {
                return;
            }

            // get headers in reverse order so that top-level headers are appended last
            var reverseHeaders = $(this.allHeaders);
            var hideempty = this.hideempty;

            // create the hide/show toggles
            reverseHeaders.each(function () {
                var $t = $(this),
                    $cells = $(this.cells).filter(function () {
                    return !$(this).parent().is("[" + attrs.labelless + "]") && (!hideempty || !$(this).is(":empty"));
                }),
                    hierarchyClass = $cells.not(this).filter("thead th").length && " tablesaw-cell-label-top",

                // TODO reduce coupling with sortable
                $sortableButton = $t.find(".tablesaw-sortable-btn"),
                    html = $sortableButton.length ? $sortableButton.html() : $t.html();

                if (html !== "") {
                    if (hierarchyClass) {
                        var iteration = parseInt($(this).attr("colspan"), 10),
                            filter = "";

                        if (iteration) {
                            filter = "td:nth-child(" + iteration + "n + " + colstart + ")";
                        }
                        $cells.filter(filter).prepend("<b class='" + classes.cellLabels + hierarchyClass + "'>" + html + "</b>");
                    } else {
                        $cells.wrapInner("<span class='" + classes.cellContentLabels + "'></span>");
                        $cells.prepend("<b class='" + classes.cellLabels + "'>" + html + "</b>");
                    }
                }
            });
        };

        Stack.prototype.destroy = function () {
            this.$table.removeClass(classes.stackTable);
            this.$table.find('.' + classes.cellLabels).remove();
            this.$table.find('.' + classes.cellContentLabels).each(function () {
                $(this).replaceWith(this.childNodes);
            });
        };

        // on tablecreate, init
        $(document).on("tablesawcreate", function (e, tablesaw, colstart) {
            if (tablesaw.mode === 'stack') {
                var table = new Stack(tablesaw.table);
                table.init(colstart);
            }
        });

        $(document).on("tablesawdestroy", function (e, tablesaw) {

            if (tablesaw.mode === 'stack') {
                $(tablesaw.table).data(data.obj).destroy();
            }
        });
    })();
    ;(function () {
        var pluginName = "tablesawbtn",
            methods = {
            _create: function _create() {
                return $(this).each(function () {
                    $(this).trigger("beforecreate." + pluginName)[pluginName]("_init").trigger("create." + pluginName);
                });
            },
            _init: function _init() {
                var oEl = $(this),
                    sel = this.getElementsByTagName("select")[0];

                if (sel) {
                    $(this).addClass("btn-select")[pluginName]("_select", sel);
                }
                return oEl;
            },
            _select: function _select(sel) {
                var update = function update(oEl, sel) {
                    var opts = $(sel).find("option");
                    var label = document.createElement("span");
                    var el;
                    var children;
                    var found = false;

                    label.setAttribute("aria-hidden", "true");
                    label.innerHTML = "&#160;";

                    opts.each(function () {
                        var opt = this;
                        if (opt.selected) {
                            label.innerHTML = opt.text;
                        }
                    });

                    children = oEl.childNodes;
                    if (opts.length > 0) {
                        for (var i = 0, l = children.length; i < l; i++) {
                            el = children[i];

                            if (el && el.nodeName.toUpperCase() === "SPAN") {
                                oEl.replaceChild(label, el);
                                found = true;
                            }
                        }

                        if (!found) {
                            oEl.insertBefore(label, oEl.firstChild);
                        }
                    }
                };

                update(this, sel);
                $(this).on("change refresh", function () {
                    update(this, sel);
                });
            }
        };

        // Collection method.
        $.fn[pluginName] = function (arrg, a, b, c) {
            return this.each(function () {

                // if it's a method
                if (arrg && typeof arrg === "string") {
                    return $.fn[pluginName].prototype[arrg].call(this, a, b, c);
                }

                // don't re-init
                if ($(this).data(pluginName + "active")) {
                    return $(this);
                }

                // otherwise, init

                $(this).data(pluginName + "active", true);
                $.fn[pluginName].prototype._create.call(this);
            });
        };

        // add methods
        $.extend($.fn[pluginName].prototype, methods);
    })();
    ;(function () {

        var ColumnToggle = function ColumnToggle(element) {

            this.$table = $(element);

            if (!this.$table.length) {
                return;
            }

            this.classes = {
                columnToggleTable: 'tablesaw-columntoggle',
                columnBtnContain: 'tablesaw-columntoggle-btnwrap tablesaw-advance',
                columnBtn: 'tablesaw-columntoggle-btn tablesaw-nav-btn down',
                popup: 'tablesaw-columntoggle-popup',
                priorityPrefix: 'tablesaw-priority-',
                // TODO duplicate class, also in tables.js
                toolbar: 'tablesaw-bar'
            };

            // Expose headers and allHeaders properties on the widget
            // headers references the THs within the first TR in the table
            this.headers = this.$table.find("tr").eq(0).find("th");

            this.$table.data('tablesaw-coltoggle', this);
        };

        ColumnToggle.prototype.init = function () {

            if (!this.$table.length) {
                return;
            }

            var tableId,
                id,
                $menuButton,
                $popup,
                $menu,
                $btnContain,
                self = this;

            this.$table.addClass(this.classes.columnToggleTable);

            tableId = this.$table.attr("id");
            id = tableId + "-popup";
            $btnContain = $("<div class='" + this.classes.columnBtnContain + "'></div>");
            $menuButton = $("<a href='#" + id + "' class='btn btn-micro " + this.classes.columnBtn + "' data-popup-link>" + "<span>" + Tablesaw.i18n.columnBtnText + "</span></a>");
            $popup = $("<div class='dialog-table-coltoggle " + this.classes.popup + "' id='" + id + "'></div>");
            $menu = $("<div class='btn-group'></div>");

            var hasNonPersistentHeaders = false;
            $(this.headers).not("td").each(function () {
                var $this = $(this),
                    priority = $this.attr("data-tablesaw-priority"),
                    $cells = self.$getCells(this);

                if (priority && priority !== "persist") {
                    $cells.addClass(self.classes.priorityPrefix + priority);

                    $("<label><input type='checkbox' checked>" + $this.text() + "</label>").appendTo($menu).children(0).data("tablesaw-header", this);

                    hasNonPersistentHeaders = true;
                }
            });

            if (!hasNonPersistentHeaders) {
                $menu.append('<label>' + Tablesaw.i18n.columnsDialogError + '</label>');
            }

            $menu.appendTo($popup);

            // bind change event listeners to inputs - TODO: move to a private method?
            $menu.find('input[type="checkbox"]').on("change", function (e) {
                var checked = e.target.checked;

                var $cells = self.$getCellsFromCheckbox(e.target);

                $cells[!checked ? "addClass" : "removeClass"]("tablesaw-cell-hidden");
                $cells[checked ? "addClass" : "removeClass"]("tablesaw-cell-visible");

                self.$table.trigger('tablesawcolumns');
            });

            $menuButton.appendTo($btnContain);
            $btnContain.appendTo(this.$table.prev().filter('.' + this.classes.toolbar));

            function closePopup(event) {
                // Click came from inside the popup, ignore.
                if (event && $(event.target).closest("." + self.classes.popup).length) {
                    return;
                }

                $(document).off('click.' + tableId);
                $menuButton.removeClass('up').addClass('down');
                $btnContain.removeClass('visible');
            }

            var closeTimeout;
            function openPopup() {
                $btnContain.addClass('visible');
                $menuButton.removeClass('down').addClass('up');

                $(document).off('click.' + tableId, closePopup);

                window.clearTimeout(closeTimeout);
                closeTimeout = window.setTimeout(function () {
                    $(document).one('click.' + tableId, closePopup);
                }, 15);
            }

            $menuButton.on("click.tablesaw", function (event) {
                event.preventDefault();

                if (!$btnContain.is(".visible")) {
                    openPopup();
                } else {
                    closePopup();
                }
            });

            $popup.appendTo($btnContain);

            this.$menu = $menu;

            $(window).on("resize." + tableId, function () {
                self.refreshToggle();
            });

            this.refreshToggle();
        };

        ColumnToggle.prototype.$getCells = function (th) {
            return $(th).add(th.cells);
        };

        ColumnToggle.prototype.$getCellsFromCheckbox = function (checkbox) {
            var th = $(checkbox).data("tablesaw-header");
            return this.$getCells(th);
        };

        ColumnToggle.prototype.refreshToggle = function () {
            var self = this;
            this.$menu.find("input").each(function () {
                this.checked = self.$getCellsFromCheckbox(this).eq(0).css("display") === "table-cell";
            });
        };

        ColumnToggle.prototype.refreshPriority = function () {
            var self = this;
            $(this.headers).not("td").each(function () {
                var $this = $(this),
                    priority = $this.attr("data-tablesaw-priority"),
                    $cells = $this.add(this.cells);

                if (priority && priority !== "persist") {
                    $cells.addClass(self.classes.priorityPrefix + priority);
                }
            });
        };

        ColumnToggle.prototype.destroy = function () {
            this.$table.removeClass(this.classes.columnToggleTable);
            this.$table.find('th, td').each(function () {
                var $cell = $(this);
                $cell.removeClass('tablesaw-cell-hidden').removeClass('tablesaw-cell-visible');

                this.className = this.className.replace(/\bui\-table\-priority\-\d\b/g, '');
            });
        };

        // on tablecreate, init
        $(document).on("tablesawcreate", function (e, tablesaw) {

            if (tablesaw.mode === 'columntoggle') {
                var table = new ColumnToggle(tablesaw.table);
                table.init();
            }
        });

        $(document).on("tablesawdestroy", function (e, tablesaw) {
            if (tablesaw.mode === 'columntoggle') {
                $(tablesaw.table).data('tablesaw-coltoggle').destroy();
            }
        });
    })();
    ;(function () {
        function getSortValue(cell) {
            var text = [];

            $(cell.childNodes).each(function () {
                var $el = $(this);
                if ($el.is('input, select')) {
                    text.push($el.val());
                } else if ($el.is('.tablesaw-cell-label')) {} else {
                    text.push(($el.text() || '').replace(/^\s+|\s+$/g, ''));
                }
            });

            return text.join('');
        }

        var pluginName = "tablesaw-sortable",
            initSelector = "table[data-" + pluginName + "]",
            sortableSwitchSelector = "[data-" + pluginName + "-switch]",
            attrs = {
            defaultCol: "data-tablesaw-sortable-default-col",
            numericCol: "data-tablesaw-sortable-numeric"
        },
            classes = {
            head: pluginName + "-head",
            ascend: pluginName + "-ascending",
            descend: pluginName + "-descending",
            switcher: pluginName + "-switch",
            tableToolbar: 'tablesaw-toolbar',
            sortButton: pluginName + "-btn"
        },
            methods = {
            _create: function _create(o) {
                return $(this).each(function () {
                    var init = $(this).data(pluginName + "-init");
                    if (init) {
                        return false;
                    }
                    $(this).data(pluginName + "-init", true).trigger("beforecreate." + pluginName)[pluginName]("_init", o).trigger("create." + pluginName);
                });
            },
            _init: function _init() {
                var el = $(this),
                    heads,
                    $switcher;

                var addClassToTable = function addClassToTable() {
                    el.addClass(pluginName);
                },
                    addClassToHeads = function addClassToHeads(h) {
                    $.each(h, function (i, v) {
                        $(v).addClass(classes.head);
                    });
                },
                    makeHeadsActionable = function makeHeadsActionable(h, fn) {
                    $.each(h, function (i, v) {
                        var b = $("<button class='" + classes.sortButton + "'/>");
                        b.on("click", { col: v }, fn);
                        $(v).wrapInner(b);
                        b.append("<span class='tablesaw-sortable-arrow'>");
                    });
                },
                    clearOthers = function clearOthers(sibs) {
                    $.each(sibs, function (i, v) {
                        var col = $(v);
                        col.removeAttr(attrs.defaultCol);
                        col.removeClass(classes.ascend);
                        col.removeClass(classes.descend);
                    });
                },
                    headsOnAction = function headsOnAction(e) {
                    if ($(e.target).is('a[href]')) {
                        return;
                    }

                    e.stopPropagation();
                    var head = $(this).parent(),
                        v = e.data.col,
                        newSortValue = heads.index(head[0]);

                    clearOthers(head.siblings());
                    if (head.is("." + classes.descend)) {
                        el[pluginName]("sortBy", v, true);
                        newSortValue += '_asc';
                    } else {
                        el[pluginName]("sortBy", v);
                        newSortValue += '_desc';
                    }
                    if ($switcher) {
                        $switcher.find('select').val(newSortValue).trigger('refresh');
                    }

                    e.preventDefault();
                },
                    handleDefault = function handleDefault(heads) {
                    $.each(heads, function (idx, el) {
                        var $el = $(el);
                        if ($el.is("[" + attrs.defaultCol + "]")) {
                            if (!$el.is("." + classes.descend)) {
                                $el.addClass(classes.ascend);
                            }
                        }
                    });
                },
                    addSwitcher = function addSwitcher(heads) {
                    $switcher = $('<div>').addClass(classes.switcher).addClass(classes.tableToolbar);

                    var html = ['<label>' + Tablesaw.i18n.sort + ':'];

                    html.push('<span class="btn"><select>');
                    heads.each(function (j) {
                        var $t = $(this);
                        var isDefaultCol = $t.is("[" + attrs.defaultCol + "]");
                        var isDescending = $t.is("." + classes.descend);

                        var hasNumericAttribute = $t.is('[data-sortable-numeric]');
                        var numericCount = 0;
                        // Check only the first four rows to see if the column is numbers.
                        var numericCountMax = 5;
                        $(this.cells.slice(0, numericCountMax)).each(function () {
                            if (!isNaN(parseInt(getSortValue(this), 10))) {
                                numericCount++;
                            }
                        });
                        var isNumeric = numericCount === numericCountMax;
                        if (!hasNumericAttribute) {
                            $t.attr("data-sortable-numeric", isNumeric ? "" : "false");
                        }

                        html.push('<option' + (isDefaultCol && !isDescending ? ' selected' : '') + ' value="' + j + '_asc">' + $t.text() + ' ' + (isNumeric ? '&#x2191;' : '(A-Z)') + '</option>');
                        html.push('<option' + (isDefaultCol && isDescending ? ' selected' : '') + ' value="' + j + '_desc">' + $t.text() + ' ' + (isNumeric ? '&#x2193;' : '(Z-A)') + '</option>');
                    });
                    html.push('</select></span></label>');

                    $switcher.html(html.join(''));

                    var $toolbar = el.prev().filter('.tablesaw-bar'),
                        $firstChild = $toolbar.children().eq(0);

                    if ($firstChild.length) {
                        $switcher.insertBefore($firstChild);
                    } else {
                        $switcher.appendTo($toolbar);
                    }
                    $switcher.find('.btn').tablesawbtn();
                    $switcher.find('select').on('change', function () {
                        var val = $(this).val().split('_'),
                            head = heads.eq(val[0]);

                        clearOthers(head.siblings());
                        el[pluginName]('sortBy', head.get(0), val[1] === 'asc');
                    });
                };

                addClassToTable();
                heads = el.find("thead th[data-" + pluginName + "-col]");
                addClassToHeads(heads);
                makeHeadsActionable(heads, headsOnAction);
                handleDefault(heads);

                if (el.is(sortableSwitchSelector)) {
                    addSwitcher(heads, el.find('tbody tr:nth-child(-n+3)'));
                }
            },
            getColumnNumber: function getColumnNumber(col) {
                return $(col).prevAll().length;
            },
            getTableRows: function getTableRows() {
                return $(this).find("tbody tr");
            },
            sortRows: function sortRows(rows, colNum, ascending, col) {
                var cells, fn, sorted;
                var getCells = function getCells(rows) {
                    var cells = [];
                    $.each(rows, function (i, r) {
                        var element = $(r).children().get(colNum);
                        cells.push({
                            element: element,
                            cell: getSortValue(element),
                            rowNum: i
                        });
                    });
                    return cells;
                },
                    getSortFxn = function getSortFxn(ascending, forceNumeric) {
                    var fn,
                        regex = /[^\-\+\d\.]/g;
                    if (ascending) {
                        fn = function fn(a, b) {
                            if (forceNumeric) {
                                return parseFloat(a.cell.replace(regex, '')) - parseFloat(b.cell.replace(regex, ''));
                            } else {
                                return a.cell.toLowerCase() > b.cell.toLowerCase() ? 1 : -1;
                            }
                        };
                    } else {
                        fn = function fn(a, b) {
                            if (forceNumeric) {
                                return parseFloat(b.cell.replace(regex, '')) - parseFloat(a.cell.replace(regex, ''));
                            } else {
                                return a.cell.toLowerCase() < b.cell.toLowerCase() ? 1 : -1;
                            }
                        };
                    }
                    return fn;
                },
                    applyToRows = function applyToRows(sorted, rows) {
                    var newRows = [],
                        i,
                        l,
                        cur;
                    for (i = 0, l = sorted.length; i < l; i++) {
                        cur = sorted[i].rowNum;
                        newRows.push(rows[cur]);
                    }
                    return newRows;
                };

                cells = getCells(rows);
                var customFn = $(col).data('tablesaw-sort');
                fn = (customFn && typeof customFn === "function" ? customFn(ascending) : false) || getSortFxn(ascending, $(col).is('[data-sortable-numeric]') && !$(col).is('[data-sortable-numeric="false"]'));

                sorted = cells.sort(fn);
                rows = applyToRows(sorted, rows);
                return rows;
            },
            replaceTableRows: function replaceTableRows(rows) {
                var el = $(this),
                    body = el.find("tbody");

                for (var j = 0, k = rows.length; j < k; j++) {
                    body.append(rows[j]);
                }
            },
            makeColDefault: function makeColDefault(col, a) {
                var c = $(col);
                c.attr(attrs.defaultCol, "true");
                if (a) {
                    c.removeClass(classes.descend);
                    c.addClass(classes.ascend);
                } else {
                    c.removeClass(classes.ascend);
                    c.addClass(classes.descend);
                }
            },
            sortBy: function sortBy(col, ascending) {
                var el = $(this),
                    colNum,
                    rows;

                colNum = el[pluginName]("getColumnNumber", col);
                rows = el[pluginName]("getTableRows");
                rows = el[pluginName]("sortRows", rows, colNum, ascending, col);
                el[pluginName]("replaceTableRows", rows);
                el[pluginName]("makeColDefault", col, ascending);
                el.trigger("tablesaw-sorted");
            }
        };

        // Collection method.
        $.fn[pluginName] = function (arrg) {
            var args = Array.prototype.slice.call(arguments, 1),
                returnVal;

            // if it's a method
            if (arrg && typeof arrg === "string") {
                returnVal = $.fn[pluginName].prototype[arrg].apply(this[0], args);
                return typeof returnVal !== "undefined" ? returnVal : $(this);
            }
            // check init
            if (!$(this).data(pluginName + "-active")) {
                $(this).data(pluginName + "-active", true);
                $.fn[pluginName].prototype._create.call(this, arrg);
            }
            return $(this);
        };
        // add methods
        $.extend($.fn[pluginName].prototype, methods);

        $(document).on("tablesawcreate", function (e, Tablesaw) {
            if (Tablesaw.$table.is(initSelector)) {
                Tablesaw.$table[pluginName]();
            }
        });
    })();

    ;(function () {

        $.extend(Tablesaw.config, {
            swipe: {
                horizontalThreshold: 15,
                verticalThreshold: 30
            }
        });

        function sumStyles($el, props) {
            var total = 0;
            for (var j = 0, k = props.length; j < k; j++) {
                total += parseInt($el.css(props[j]) || 0, 10);
            }
            return total;
        }

        function outerWidth(el) {
            var $el = $(el);
            return $el.width() + sumStyles($el, ["border-left-width", "border-right-width"]);
        }

        var classes = {
            // TODO duplicate class, also in tables.js
            toolbar: "tablesaw-bar",
            hideBtn: "disabled",
            persistWidths: "tablesaw-fix-persist",
            allColumnsVisible: 'tablesaw-all-cols-visible'
        };
        var attrs = {
            disableTouchEvents: "data-tablesaw-no-touch"
        };

        function createSwipeTable($table) {

            var $btns = $("<div class='tablesaw-advance'></div>"),
                $prevBtn = $("<a href='#' class='tablesaw-nav-btn btn btn-micro left' title='Previous Column'></a>").appendTo($btns),
                $nextBtn = $("<a href='#' class='tablesaw-nav-btn btn btn-micro right' title='Next Column'></a>").appendTo($btns),
                $headerCells = $table.find("thead th"),
                $headerCellsNoPersist = $headerCells.not('[data-tablesaw-priority="persist"]'),
                headerWidths = [],
                $head = $(document.head || 'head'),
                tableId = $table.attr('id');

            if (!$headerCells.length) {
                throw new Error("tablesaw swipe: no header cells found. Are you using <th> inside of <thead>?");
            }

            $table.addClass("tablesaw-swipe");

            // Calculate initial widths
            $headerCells.each(function () {
                var width = outerWidth(this);
                headerWidths.push(width);
            });

            $btns.appendTo($table.prev().filter('.tablesaw-bar'));

            if (!tableId) {
                tableId = 'tableswipe-' + Math.round(Math.random() * 10000);
                $table.attr('id', tableId);
            }

            function $getCells(headerCell) {
                return $(headerCell.cells).add(headerCell);
            }

            function showColumn(headerCell) {
                $getCells(headerCell).removeClass('tablesaw-cell-hidden');
            }

            function hideColumn(headerCell) {
                $getCells(headerCell).addClass('tablesaw-cell-hidden');
            }

            function persistColumn(headerCell) {
                $getCells(headerCell).addClass('tablesaw-cell-persist');
            }

            function isPersistent(headerCell) {
                return $(headerCell).is('[data-tablesaw-priority="persist"]');
            }

            function unmaintainWidths() {
                $table.removeClass(classes.persistWidths);
                $('#' + tableId + '-persist').remove();
            }

            function maintainWidths() {
                var prefix = '#' + tableId + '.tablesaw-swipe ',
                    styles = [],
                    tableWidth = $table.width(),
                    hash = [],
                    newHash;

                $headerCells.each(function (index) {
                    var width;
                    if (isPersistent(this)) {
                        width = outerWidth(this);

                        // Only save width on non-greedy columns (take up less than 75% of table width)
                        if (width < tableWidth * 0.75) {
                            hash.push(index + '-' + width);
                            styles.push(prefix + ' .tablesaw-cell-persist:nth-child(' + (index + 1) + ') { width: ' + width + 'px; }');
                        }
                    }
                });
                newHash = hash.join('_');

                $table.addClass(classes.persistWidths);

                var $style = $('#' + tableId + '-persist');
                // If style element not yet added OR if the widths have changed
                if (!$style.length || $style.data('tablesaw-hash') !== newHash) {
                    // Remove existing
                    $style.remove();

                    if (styles.length) {
                        $('<style>' + styles.join("\n") + '</style>').attr('id', tableId + '-persist').data('tablesaw-hash', newHash).appendTo($head);
                    }
                }
            }

            function getNext() {
                var next = [],
                    checkFound;

                $headerCellsNoPersist.each(function (i) {
                    var $t = $(this),
                        isHidden = $t.css("display") === "none" || $t.is(".tablesaw-cell-hidden");

                    if (!isHidden && !checkFound) {
                        checkFound = true;
                        next[0] = i;
                    } else if (isHidden && checkFound) {
                        next[1] = i;

                        return false;
                    }
                });

                return next;
            }

            function getPrev() {
                var next = getNext();
                return [next[1] - 1, next[0] - 1];
            }

            function nextpair(fwd) {
                return fwd ? getNext() : getPrev();
            }

            function canAdvance(pair) {
                return pair[1] > -1 && pair[1] < $headerCellsNoPersist.length;
            }

            function matchesMedia() {
                var matchMedia = $table.attr("data-tablesaw-swipe-media");
                return !matchMedia || "matchMedia" in win && win.matchMedia(matchMedia).matches;
            }

            function fakeBreakpoints() {
                if (!matchesMedia()) {
                    return;
                }

                var containerWidth = $table.parent().width(),
                    persist = [],
                    sum = 0,
                    sums = [],
                    visibleNonPersistantCount = $headerCells.length;

                $headerCells.each(function (index) {
                    var $t = $(this),
                        isPersist = $t.is('[data-tablesaw-priority="persist"]');

                    persist.push(isPersist);
                    sum += headerWidths[index];
                    sums.push(sum);

                    // is persistent or is hidden
                    if (isPersist || sum > containerWidth) {
                        visibleNonPersistantCount--;
                    }
                });

                // We need at least one column to swipe.
                var needsNonPersistentColumn = visibleNonPersistantCount === 0;

                $headerCells.each(function (index) {
                    if (persist[index]) {

                        // for visual box-shadow
                        persistColumn(this);
                        return;
                    }

                    if (sums[index] <= containerWidth || needsNonPersistentColumn) {
                        needsNonPersistentColumn = false;
                        showColumn(this);
                    } else {
                        hideColumn(this);
                    }
                });

                unmaintainWidths();
                $table.trigger('tablesawcolumns');
            }

            function advance(fwd) {
                var pair = nextpair(fwd);
                if (canAdvance(pair)) {
                    if (isNaN(pair[0])) {
                        if (fwd) {
                            pair[0] = 0;
                        } else {
                            pair[0] = $headerCellsNoPersist.length - 1;
                        }
                    }

                    maintainWidths();

                    hideColumn($headerCellsNoPersist.get(pair[0]));
                    showColumn($headerCellsNoPersist.get(pair[1]));

                    $table.trigger('tablesawcolumns');
                }
            }

            $prevBtn.add($nextBtn).on("click", function (e) {
                advance(!!$(e.target).closest($nextBtn).length);
                e.preventDefault();
            });

            function getCoord(event, key) {
                return (event.touches || event.originalEvent.touches)[0][key];
            }

            if (!$table.is("[" + attrs.disableTouchEvents + "]")) {

                $table.on("touchstart.swipetoggle", function (e) {
                    var originX = getCoord(e, 'pageX'),
                        originY = getCoord(e, 'pageY'),
                        x,
                        y;

                    $(win).off("resize", fakeBreakpoints);

                    $(this).on("touchmove", function (e) {
                        x = getCoord(e, 'pageX');
                        y = getCoord(e, 'pageY');
                        var cfg = Tablesaw.config.swipe;
                        if (Math.abs(x - originX) > cfg.horizontalThreshold && Math.abs(y - originY) < cfg.verticalThreshold) {
                            e.preventDefault();
                        }
                    }).on("touchend.swipetoggle", function () {
                        var cfg = Tablesaw.config.swipe;
                        if (Math.abs(y - originY) < cfg.verticalThreshold) {
                            if (x - originX < -1 * cfg.horizontalThreshold) {
                                advance(true);
                            }
                            if (x - originX > cfg.horizontalThreshold) {
                                advance(false);
                            }
                        }

                        window.setTimeout(function () {
                            $(win).on("resize", fakeBreakpoints);
                        }, 300);
                        $(this).off("touchmove touchend");
                    });
                });
            }

            $table.on("tablesawcolumns.swipetoggle", function () {
                var canGoPrev = canAdvance(getPrev());
                var canGoNext = canAdvance(getNext());
                $prevBtn[canGoPrev ? "removeClass" : "addClass"](classes.hideBtn);
                $nextBtn[canGoNext ? "removeClass" : "addClass"](classes.hideBtn);

                $prevBtn.closest("." + classes.toolbar)[!canGoPrev && !canGoNext ? 'addClass' : 'removeClass'](classes.allColumnsVisible);
            }).on("tablesawnext.swipetoggle", function () {
                advance(true);
            }).on("tablesawprev.swipetoggle", function () {
                advance(false);
            }).on("tablesawdestroy.swipetoggle", function () {
                var $t = $(this);

                $t.removeClass('tablesaw-swipe');
                $t.prev().filter('.tablesaw-bar').find('.tablesaw-advance').remove();
                $(win).off("resize", fakeBreakpoints);

                $t.off(".swipetoggle");
            }).on("tablesawrefresh", function () {
                // manual refresh
                headerWidths = [];
                $headerCells.each(function () {
                    var width = outerWidth(this);
                    headerWidths.push(width);
                });

                fakeBreakpoints();
            });

            fakeBreakpoints();
            $(win).on("resize", fakeBreakpoints);
        }

        // on tablecreate, init
        $(document).on("tablesawcreate", function (e, tablesaw) {
            if (tablesaw.mode === 'swipe') {
                createSwipeTable(tablesaw.$table);
            }
        });
    })();

    ;(function () {

        var MiniMap = {
            attr: {
                init: 'data-tablesaw-minimap'
            }
        };

        function createMiniMap($table) {

            var $btns = $('<div class="tablesaw-advance minimap">'),
                $dotNav = $('<ul class="tablesaw-advance-dots">').appendTo($btns),
                hideDot = 'tablesaw-advance-dots-hide',
                $headerCells = $table.find('thead th');

            // populate dots
            $headerCells.each(function () {
                $dotNav.append('<li><i></i></li>');
            });

            $btns.appendTo($table.prev().filter('.tablesaw-bar'));

            function showMinimap($table) {
                var mq = $table.attr(MiniMap.attr.init);
                return !mq || win.matchMedia && win.matchMedia(mq).matches;
            }

            function showHideNav() {
                if (!showMinimap($table)) {
                    $btns.css("display", "none");
                    return;
                }
                $btns.css("display", "block");

                // show/hide dots
                var dots = $dotNav.find("li").removeClass(hideDot);
                $table.find("thead th").each(function (i) {
                    if ($(this).css("display") === "none") {
                        dots.eq(i).addClass(hideDot);
                    }
                });
            }

            // run on init and resize
            showHideNav();
            $(win).on("resize", showHideNav);

            $table.on("tablesawcolumns.minimap", function () {
                showHideNav();
            }).on("tablesawdestroy.minimap", function () {
                var $t = $(this);

                $t.prev().filter('.tablesaw-bar').find('.tablesaw-advance').remove();
                $(win).off("resize", showHideNav);

                $t.off(".minimap");
            });
        }

        // on tablecreate, init
        $(document).on("tablesawcreate", function (e, tablesaw) {

            if ((tablesaw.mode === 'swipe' || tablesaw.mode === 'columntoggle') && tablesaw.$table.is('[ ' + MiniMap.attr.init + ']')) {
                createMiniMap(tablesaw.$table);
            }
        });
    })();

    ;(function () {

        var S = {
            selectors: {
                init: 'table[data-tablesaw-mode-switch]'
            },
            attributes: {
                excludeMode: 'data-tablesaw-mode-exclude'
            },
            classes: {
                main: 'tablesaw-modeswitch',
                toolbar: 'tablesaw-toolbar'
            },
            modes: ['stack', 'swipe', 'columntoggle'],
            init: function init(table) {
                var $table = $(table),
                    ignoreMode = $table.attr(S.attributes.excludeMode),
                    $toolbar = $table.prev().filter('.tablesaw-bar'),
                    modeVal = '',
                    $switcher = $('<div>').addClass(S.classes.main + ' ' + S.classes.toolbar);

                var html = ['<label>' + Tablesaw.i18n.columns + ':'],
                    dataMode = $table.attr('data-tablesaw-mode'),
                    isSelected;

                html.push('<span class="btn"><select>');
                for (var j = 0, k = S.modes.length; j < k; j++) {
                    if (ignoreMode && ignoreMode.toLowerCase() === S.modes[j]) {
                        continue;
                    }

                    isSelected = dataMode === S.modes[j];

                    if (isSelected) {
                        modeVal = S.modes[j];
                    }

                    html.push('<option' + (isSelected ? ' selected' : '') + ' value="' + S.modes[j] + '">' + Tablesaw.i18n.modes[j] + '</option>');
                }
                html.push('</select></span></label>');

                $switcher.html(html.join(''));

                var $otherToolbarItems = $toolbar.find('.tablesaw-advance').eq(0);
                if ($otherToolbarItems.length) {
                    $switcher.insertBefore($otherToolbarItems);
                } else {
                    $switcher.appendTo($toolbar);
                }

                $switcher.find('.btn').tablesawbtn();
                $switcher.find('select').on('change', S.onModeChange);
            },
            onModeChange: function onModeChange() {
                var $t = $(this),
                    $switcher = $t.closest('.' + S.classes.main),
                    $table = $t.closest('.tablesaw-bar').next().eq(0),
                    val = $t.val();

                $switcher.remove();
                $table.data('tablesaw').destroy();

                $table.attr('data-tablesaw-mode', val);
                $table.tablesaw();
            }
        };

        $(win.document).on("tablesawcreate", function (e, Tablesaw) {
            if (Tablesaw.$table.is(S.selectors.init)) {
                S.init(Tablesaw.table);
            }
        });
    })();
});
'use strict';

$(document).foundation();

$("#toggle-sidebar").click(function () {
    $('#offCanvas').toggleClass('is-open');
});

$('.masonry-grid').masonry({
    itemSelector: '.grid-item'
});

// Data Viz Colors

var colorData = [];
$.each([0, 1, 2, 3, 4, 5, 6], function (idx) {
    colorData.push($('.color-data-' + (idx + 1)).css('fill'));
});

// End Data Viz Colors

$('body').on('touchend', function () {
    $('.side-bar-main').css('width', '45px');
});

$('.side-bar-main').on('touchend', function (e) {
    e.stopPropagation();
    $(this).css('width', '250px');
});

$(window).scroll(function () {
    var scroll = $(window).scrollTop();
    if (scroll >= 50) {
        $(".search-box").addClass("search-box-smaller");
    } else {
        $(".search-box").removeClass("search-box-smaller");
    }
});

$(window).scroll(function () {
    var scroll = $(window).scrollTop();
    if (scroll >= 50) {
        $(".help-content").addClass("help-push-top");
    } else {
        $(".help-content").removeClass("help-push-top");
    }
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpxdWVyeS5qcyIsIndoYXQtaW5wdXQuanMiLCJmb3VuZGF0aW9uLmNvcmUuanMiLCJmb3VuZGF0aW9uLnV0aWwuYm94LmpzIiwiZm91bmRhdGlvbi51dGlsLmtleWJvYXJkLmpzIiwiZm91bmRhdGlvbi51dGlsLm1lZGlhUXVlcnkuanMiLCJmb3VuZGF0aW9uLnV0aWwubW90aW9uLmpzIiwiZm91bmRhdGlvbi51dGlsLm5lc3QuanMiLCJmb3VuZGF0aW9uLnV0aWwudGltZXJBbmRJbWFnZUxvYWRlci5qcyIsImZvdW5kYXRpb24udXRpbC50b3VjaC5qcyIsImZvdW5kYXRpb24udXRpbC50cmlnZ2Vycy5qcyIsImZvdW5kYXRpb24uYWJpZGUuanMiLCJmb3VuZGF0aW9uLmFjY29yZGlvbi5qcyIsImZvdW5kYXRpb24uYWNjb3JkaW9uTWVudS5qcyIsImZvdW5kYXRpb24uZHJpbGxkb3duLmpzIiwiZm91bmRhdGlvbi5kcm9wZG93bi5qcyIsImZvdW5kYXRpb24uZHJvcGRvd25NZW51LmpzIiwiZm91bmRhdGlvbi5lcXVhbGl6ZXIuanMiLCJmb3VuZGF0aW9uLmludGVyY2hhbmdlLmpzIiwiZm91bmRhdGlvbi5tYWdlbGxhbi5qcyIsImZvdW5kYXRpb24ub2ZmY2FudmFzLmpzIiwiZm91bmRhdGlvbi5vcmJpdC5qcyIsImZvdW5kYXRpb24ucmVzcG9uc2l2ZU1lbnUuanMiLCJmb3VuZGF0aW9uLnJlc3BvbnNpdmVUb2dnbGUuanMiLCJmb3VuZGF0aW9uLnJldmVhbC5qcyIsImZvdW5kYXRpb24uc2xpZGVyLmpzIiwiZm91bmRhdGlvbi5zdGlja3kuanMiLCJmb3VuZGF0aW9uLnRhYnMuanMiLCJmb3VuZGF0aW9uLnRvZ2dsZXIuanMiLCJmb3VuZGF0aW9uLnRvb2x0aXAuanMiLCJmb3VuZGF0aW9uLnpmLnJlc3BvbnNpdmVBY2NvcmRpb25UYWJzLmpzIiwia2VuZG8uanMiLCJtYXNvbnJ5LnBrZ2QubWluLmpzIiwidGFibGVzYXctaW5pdC5qcyIsInRhYmxlc2F3LmpxdWVyeS5qcyIsImFwcC5qcyJdLCJuYW1lcyI6WyJnbG9iYWwiLCJmYWN0b3J5IiwibW9kdWxlIiwiZXhwb3J0cyIsImRvY3VtZW50IiwidyIsIkVycm9yIiwid2luZG93Iiwibm9HbG9iYWwiLCJhcnIiLCJzbGljZSIsImNvbmNhdCIsInB1c2giLCJpbmRleE9mIiwiY2xhc3MydHlwZSIsInRvU3RyaW5nIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJzdXBwb3J0IiwidmVyc2lvbiIsImpRdWVyeSIsInNlbGVjdG9yIiwiY29udGV4dCIsImZuIiwiaW5pdCIsInJ0cmltIiwicm1zUHJlZml4IiwicmRhc2hBbHBoYSIsImZjYW1lbENhc2UiLCJhbGwiLCJsZXR0ZXIiLCJ0b1VwcGVyQ2FzZSIsInByb3RvdHlwZSIsImpxdWVyeSIsImNvbnN0cnVjdG9yIiwibGVuZ3RoIiwidG9BcnJheSIsImNhbGwiLCJnZXQiLCJudW0iLCJwdXNoU3RhY2siLCJlbGVtcyIsInJldCIsIm1lcmdlIiwicHJldk9iamVjdCIsImVhY2giLCJjYWxsYmFjayIsIm1hcCIsImVsZW0iLCJpIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJmaXJzdCIsImVxIiwibGFzdCIsImxlbiIsImoiLCJlbmQiLCJzb3J0Iiwic3BsaWNlIiwiZXh0ZW5kIiwib3B0aW9ucyIsIm5hbWUiLCJzcmMiLCJjb3B5IiwiY29weUlzQXJyYXkiLCJjbG9uZSIsInRhcmdldCIsImRlZXAiLCJpc0Z1bmN0aW9uIiwiaXNQbGFpbk9iamVjdCIsImlzQXJyYXkiLCJ1bmRlZmluZWQiLCJleHBhbmRvIiwiTWF0aCIsInJhbmRvbSIsInJlcGxhY2UiLCJpc1JlYWR5IiwiZXJyb3IiLCJtc2ciLCJub29wIiwib2JqIiwidHlwZSIsIkFycmF5IiwiaXNXaW5kb3ciLCJpc051bWVyaWMiLCJyZWFsU3RyaW5nT2JqIiwicGFyc2VGbG9hdCIsImtleSIsIm5vZGVUeXBlIiwiaXNFbXB0eU9iamVjdCIsImdsb2JhbEV2YWwiLCJjb2RlIiwic2NyaXB0IiwiaW5kaXJlY3QiLCJldmFsIiwidHJpbSIsImNyZWF0ZUVsZW1lbnQiLCJ0ZXh0IiwiaGVhZCIsImFwcGVuZENoaWxkIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwiY2FtZWxDYXNlIiwic3RyaW5nIiwibm9kZU5hbWUiLCJ0b0xvd2VyQ2FzZSIsImlzQXJyYXlMaWtlIiwibWFrZUFycmF5IiwicmVzdWx0cyIsIk9iamVjdCIsImluQXJyYXkiLCJzZWNvbmQiLCJncmVwIiwiaW52ZXJ0IiwiY2FsbGJhY2tJbnZlcnNlIiwibWF0Y2hlcyIsImNhbGxiYWNrRXhwZWN0IiwiYXJnIiwidmFsdWUiLCJndWlkIiwicHJveHkiLCJ0bXAiLCJhcmdzIiwibm93IiwiRGF0ZSIsIlN5bWJvbCIsIml0ZXJhdG9yIiwic3BsaXQiLCJTaXp6bGUiLCJFeHByIiwiZ2V0VGV4dCIsImlzWE1MIiwidG9rZW5pemUiLCJjb21waWxlIiwic2VsZWN0Iiwib3V0ZXJtb3N0Q29udGV4dCIsInNvcnRJbnB1dCIsImhhc0R1cGxpY2F0ZSIsInNldERvY3VtZW50IiwiZG9jRWxlbSIsImRvY3VtZW50SXNIVE1MIiwicmJ1Z2d5UVNBIiwicmJ1Z2d5TWF0Y2hlcyIsImNvbnRhaW5zIiwicHJlZmVycmVkRG9jIiwiZGlycnVucyIsImRvbmUiLCJjbGFzc0NhY2hlIiwiY3JlYXRlQ2FjaGUiLCJ0b2tlbkNhY2hlIiwiY29tcGlsZXJDYWNoZSIsInNvcnRPcmRlciIsImEiLCJiIiwiTUFYX05FR0FUSVZFIiwicG9wIiwicHVzaF9uYXRpdmUiLCJsaXN0IiwiYm9vbGVhbnMiLCJ3aGl0ZXNwYWNlIiwiaWRlbnRpZmllciIsImF0dHJpYnV0ZXMiLCJwc2V1ZG9zIiwicndoaXRlc3BhY2UiLCJSZWdFeHAiLCJyY29tbWEiLCJyY29tYmluYXRvcnMiLCJyYXR0cmlidXRlUXVvdGVzIiwicnBzZXVkbyIsInJpZGVudGlmaWVyIiwibWF0Y2hFeHByIiwicmlucHV0cyIsInJoZWFkZXIiLCJybmF0aXZlIiwicnF1aWNrRXhwciIsInJzaWJsaW5nIiwicmVzY2FwZSIsInJ1bmVzY2FwZSIsImZ1bmVzY2FwZSIsIl8iLCJlc2NhcGVkIiwiZXNjYXBlZFdoaXRlc3BhY2UiLCJoaWdoIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwidW5sb2FkSGFuZGxlciIsImNoaWxkTm9kZXMiLCJlIiwiZWxzIiwic2VlZCIsIm0iLCJuaWQiLCJuaWRzZWxlY3QiLCJtYXRjaCIsImdyb3VwcyIsIm5ld1NlbGVjdG9yIiwibmV3Q29udGV4dCIsIm93bmVyRG9jdW1lbnQiLCJleGVjIiwiZ2V0RWxlbWVudEJ5SWQiLCJpZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsInFzYSIsInRlc3QiLCJnZXRBdHRyaWJ1dGUiLCJzZXRBdHRyaWJ1dGUiLCJ0b1NlbGVjdG9yIiwiam9pbiIsInRlc3RDb250ZXh0IiwicXVlcnlTZWxlY3RvckFsbCIsInFzYUVycm9yIiwicmVtb3ZlQXR0cmlidXRlIiwia2V5cyIsImNhY2hlIiwiY2FjaGVMZW5ndGgiLCJzaGlmdCIsIm1hcmtGdW5jdGlvbiIsImFzc2VydCIsImRpdiIsImFkZEhhbmRsZSIsImF0dHJzIiwiaGFuZGxlciIsImF0dHJIYW5kbGUiLCJzaWJsaW5nQ2hlY2siLCJjdXIiLCJkaWZmIiwic291cmNlSW5kZXgiLCJuZXh0U2libGluZyIsImNyZWF0ZUlucHV0UHNldWRvIiwiY3JlYXRlQnV0dG9uUHNldWRvIiwiY3JlYXRlUG9zaXRpb25hbFBzZXVkbyIsImFyZ3VtZW50IiwibWF0Y2hJbmRleGVzIiwiZG9jdW1lbnRFbGVtZW50Iiwibm9kZSIsImhhc0NvbXBhcmUiLCJwYXJlbnQiLCJkb2MiLCJkZWZhdWx0VmlldyIsInRvcCIsImFkZEV2ZW50TGlzdGVuZXIiLCJhdHRhY2hFdmVudCIsImNsYXNzTmFtZSIsImNyZWF0ZUNvbW1lbnQiLCJnZXRCeUlkIiwiZ2V0RWxlbWVudHNCeU5hbWUiLCJmaW5kIiwiZmlsdGVyIiwiYXR0cklkIiwiZ2V0QXR0cmlidXRlTm9kZSIsInRhZyIsImlubmVySFRNTCIsImlucHV0IiwibWF0Y2hlc1NlbGVjdG9yIiwid2Via2l0TWF0Y2hlc1NlbGVjdG9yIiwibW96TWF0Y2hlc1NlbGVjdG9yIiwib01hdGNoZXNTZWxlY3RvciIsIm1zTWF0Y2hlc1NlbGVjdG9yIiwiZGlzY29ubmVjdGVkTWF0Y2giLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIsImFkb3duIiwiYnVwIiwiY29tcGFyZSIsInNvcnREZXRhY2hlZCIsImF1cCIsImFwIiwiYnAiLCJ1bnNoaWZ0IiwiZXhwciIsImVsZW1lbnRzIiwiYXR0ciIsInZhbCIsInNwZWNpZmllZCIsInVuaXF1ZVNvcnQiLCJkdXBsaWNhdGVzIiwiZGV0ZWN0RHVwbGljYXRlcyIsInNvcnRTdGFibGUiLCJ0ZXh0Q29udGVudCIsImZpcnN0Q2hpbGQiLCJub2RlVmFsdWUiLCJzZWxlY3RvcnMiLCJjcmVhdGVQc2V1ZG8iLCJyZWxhdGl2ZSIsImRpciIsInByZUZpbHRlciIsImV4Y2VzcyIsInVucXVvdGVkIiwibm9kZU5hbWVTZWxlY3RvciIsInBhdHRlcm4iLCJvcGVyYXRvciIsImNoZWNrIiwicmVzdWx0Iiwid2hhdCIsInNpbXBsZSIsImZvcndhcmQiLCJvZlR5cGUiLCJ4bWwiLCJ1bmlxdWVDYWNoZSIsIm91dGVyQ2FjaGUiLCJub2RlSW5kZXgiLCJzdGFydCIsInVzZUNhY2hlIiwibGFzdENoaWxkIiwidW5pcXVlSUQiLCJwc2V1ZG8iLCJzZXRGaWx0ZXJzIiwiaWR4IiwibWF0Y2hlZCIsIm1hdGNoZXIiLCJ1bm1hdGNoZWQiLCJpbm5lclRleHQiLCJsYW5nIiwiZWxlbUxhbmciLCJoYXNoIiwibG9jYXRpb24iLCJhY3RpdmVFbGVtZW50IiwiaGFzRm9jdXMiLCJocmVmIiwidGFiSW5kZXgiLCJkaXNhYmxlZCIsImNoZWNrZWQiLCJzZWxlY3RlZCIsInNlbGVjdGVkSW5kZXgiLCJyYWRpbyIsImNoZWNrYm94IiwiZmlsZSIsInBhc3N3b3JkIiwiaW1hZ2UiLCJzdWJtaXQiLCJyZXNldCIsImZpbHRlcnMiLCJwYXJzZU9ubHkiLCJ0b2tlbnMiLCJzb0ZhciIsInByZUZpbHRlcnMiLCJjYWNoZWQiLCJhZGRDb21iaW5hdG9yIiwiY29tYmluYXRvciIsImJhc2UiLCJjaGVja05vbkVsZW1lbnRzIiwiZG9uZU5hbWUiLCJvbGRDYWNoZSIsIm5ld0NhY2hlIiwiZWxlbWVudE1hdGNoZXIiLCJtYXRjaGVycyIsIm11bHRpcGxlQ29udGV4dHMiLCJjb250ZXh0cyIsImNvbmRlbnNlIiwibmV3VW5tYXRjaGVkIiwibWFwcGVkIiwic2V0TWF0Y2hlciIsInBvc3RGaWx0ZXIiLCJwb3N0RmluZGVyIiwicG9zdFNlbGVjdG9yIiwidGVtcCIsInByZU1hcCIsInBvc3RNYXAiLCJwcmVleGlzdGluZyIsIm1hdGNoZXJJbiIsIm1hdGNoZXJPdXQiLCJtYXRjaGVyRnJvbVRva2VucyIsImNoZWNrQ29udGV4dCIsImxlYWRpbmdSZWxhdGl2ZSIsImltcGxpY2l0UmVsYXRpdmUiLCJtYXRjaENvbnRleHQiLCJtYXRjaEFueUNvbnRleHQiLCJtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMiLCJlbGVtZW50TWF0Y2hlcnMiLCJzZXRNYXRjaGVycyIsImJ5U2V0IiwiYnlFbGVtZW50Iiwic3VwZXJNYXRjaGVyIiwib3V0ZXJtb3N0IiwibWF0Y2hlZENvdW50Iiwic2V0TWF0Y2hlZCIsImNvbnRleHRCYWNrdXAiLCJkaXJydW5zVW5pcXVlIiwidG9rZW4iLCJjb21waWxlZCIsImRpdjEiLCJkZWZhdWx0VmFsdWUiLCJ1bmlxdWUiLCJpc1hNTERvYyIsInVudGlsIiwidHJ1bmNhdGUiLCJpcyIsInNpYmxpbmdzIiwibiIsInJuZWVkc0NvbnRleHQiLCJuZWVkc0NvbnRleHQiLCJyc2luZ2xlVGFnIiwicmlzU2ltcGxlIiwid2lubm93IiwicXVhbGlmaWVyIiwibm90Iiwic2VsZiIsInJvb3RqUXVlcnkiLCJyb290IiwicGFyc2VIVE1MIiwicmVhZHkiLCJycGFyZW50c3ByZXYiLCJndWFyYW50ZWVkVW5pcXVlIiwiY2hpbGRyZW4iLCJjb250ZW50cyIsIm5leHQiLCJwcmV2IiwiaGFzIiwidGFyZ2V0cyIsImwiLCJjbG9zZXN0IiwicG9zIiwiaW5kZXgiLCJwcmV2QWxsIiwiYWRkIiwiYWRkQmFjayIsInNpYmxpbmciLCJwYXJlbnRzIiwicGFyZW50c1VudGlsIiwibmV4dEFsbCIsIm5leHRVbnRpbCIsInByZXZVbnRpbCIsImNvbnRlbnREb2N1bWVudCIsInJldmVyc2UiLCJybm90d2hpdGUiLCJjcmVhdGVPcHRpb25zIiwib2JqZWN0IiwiZmxhZyIsIkNhbGxiYWNrcyIsImZpcmluZyIsIm1lbW9yeSIsImZpcmVkIiwibG9ja2VkIiwicXVldWUiLCJmaXJpbmdJbmRleCIsImZpcmUiLCJvbmNlIiwic3RvcE9uRmFsc2UiLCJyZW1vdmUiLCJlbXB0eSIsImRpc2FibGUiLCJsb2NrIiwiZmlyZVdpdGgiLCJEZWZlcnJlZCIsImZ1bmMiLCJ0dXBsZXMiLCJzdGF0ZSIsInByb21pc2UiLCJhbHdheXMiLCJkZWZlcnJlZCIsImZhaWwiLCJ0aGVuIiwiZm5zIiwibmV3RGVmZXIiLCJ0dXBsZSIsInJldHVybmVkIiwicHJvZ3Jlc3MiLCJub3RpZnkiLCJyZXNvbHZlIiwicmVqZWN0IiwicGlwZSIsInN0YXRlU3RyaW5nIiwid2hlbiIsInN1Ym9yZGluYXRlIiwicmVzb2x2ZVZhbHVlcyIsInJlbWFpbmluZyIsInVwZGF0ZUZ1bmMiLCJ2YWx1ZXMiLCJwcm9ncmVzc1ZhbHVlcyIsIm5vdGlmeVdpdGgiLCJyZXNvbHZlV2l0aCIsInByb2dyZXNzQ29udGV4dHMiLCJyZXNvbHZlQ29udGV4dHMiLCJyZWFkeUxpc3QiLCJyZWFkeVdhaXQiLCJob2xkUmVhZHkiLCJob2xkIiwid2FpdCIsInRyaWdnZXJIYW5kbGVyIiwib2ZmIiwiY29tcGxldGVkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlYWR5U3RhdGUiLCJkb1Njcm9sbCIsInNldFRpbWVvdXQiLCJhY2Nlc3MiLCJjaGFpbmFibGUiLCJlbXB0eUdldCIsInJhdyIsImJ1bGsiLCJhY2NlcHREYXRhIiwib3duZXIiLCJEYXRhIiwidWlkIiwicmVnaXN0ZXIiLCJpbml0aWFsIiwiZGVmaW5lUHJvcGVydHkiLCJ3cml0YWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsImRhdGEiLCJwcm9wIiwic3RvcmVkIiwiY2FtZWwiLCJoYXNEYXRhIiwiZGF0YVByaXYiLCJkYXRhVXNlciIsInJicmFjZSIsInJtdWx0aURhc2giLCJkYXRhQXR0ciIsInBhcnNlSlNPTiIsInJlbW92ZURhdGEiLCJfZGF0YSIsIl9yZW1vdmVEYXRhIiwiY2FtZWxLZXkiLCJkZXF1ZXVlIiwic3RhcnRMZW5ndGgiLCJob29rcyIsIl9xdWV1ZUhvb2tzIiwic3RvcCIsInNldHRlciIsImNsZWFyUXVldWUiLCJjb3VudCIsImRlZmVyIiwicG51bSIsInNvdXJjZSIsInJjc3NOdW0iLCJjc3NFeHBhbmQiLCJpc0hpZGRlbiIsImVsIiwiY3NzIiwiYWRqdXN0Q1NTIiwidmFsdWVQYXJ0cyIsInR3ZWVuIiwiYWRqdXN0ZWQiLCJzY2FsZSIsIm1heEl0ZXJhdGlvbnMiLCJjdXJyZW50VmFsdWUiLCJ1bml0IiwiY3NzTnVtYmVyIiwiaW5pdGlhbEluVW5pdCIsInN0eWxlIiwicmNoZWNrYWJsZVR5cGUiLCJydGFnTmFtZSIsInJzY3JpcHRUeXBlIiwid3JhcE1hcCIsIm9wdGlvbiIsInRoZWFkIiwiY29sIiwidHIiLCJ0ZCIsIl9kZWZhdWx0Iiwib3B0Z3JvdXAiLCJ0Ym9keSIsInRmb290IiwiY29sZ3JvdXAiLCJjYXB0aW9uIiwidGgiLCJnZXRBbGwiLCJzZXRHbG9iYWxFdmFsIiwicmVmRWxlbWVudHMiLCJyaHRtbCIsImJ1aWxkRnJhZ21lbnQiLCJzY3JpcHRzIiwic2VsZWN0aW9uIiwiaWdub3JlZCIsIndyYXAiLCJmcmFnbWVudCIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJub2RlcyIsImNyZWF0ZVRleHROb2RlIiwiaHRtbFByZWZpbHRlciIsImNoZWNrQ2xvbmUiLCJjbG9uZU5vZGUiLCJub0Nsb25lQ2hlY2tlZCIsInJrZXlFdmVudCIsInJtb3VzZUV2ZW50IiwicnR5cGVuYW1lc3BhY2UiLCJyZXR1cm5UcnVlIiwicmV0dXJuRmFsc2UiLCJzYWZlQWN0aXZlRWxlbWVudCIsImVyciIsIm9uIiwidHlwZXMiLCJvbmUiLCJvcmlnRm4iLCJldmVudCIsImhhbmRsZU9iakluIiwiZXZlbnRIYW5kbGUiLCJldmVudHMiLCJ0IiwiaGFuZGxlT2JqIiwic3BlY2lhbCIsImhhbmRsZXJzIiwibmFtZXNwYWNlcyIsIm9yaWdUeXBlIiwiZWxlbURhdGEiLCJoYW5kbGUiLCJ0cmlnZ2VyZWQiLCJkaXNwYXRjaCIsImRlbGVnYXRlVHlwZSIsImJpbmRUeXBlIiwibmFtZXNwYWNlIiwiZGVsZWdhdGVDb3VudCIsInNldHVwIiwibWFwcGVkVHlwZXMiLCJvcmlnQ291bnQiLCJ0ZWFyZG93biIsInJlbW92ZUV2ZW50IiwiZml4IiwiaGFuZGxlclF1ZXVlIiwiZGVsZWdhdGVUYXJnZXQiLCJwcmVEaXNwYXRjaCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwiY3VycmVudFRhcmdldCIsImlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkIiwicm5hbWVzcGFjZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwicG9zdERpc3BhdGNoIiwic2VsIiwiaXNOYU4iLCJidXR0b24iLCJwcm9wcyIsImZpeEhvb2tzIiwia2V5SG9va3MiLCJvcmlnaW5hbCIsIndoaWNoIiwiY2hhckNvZGUiLCJrZXlDb2RlIiwibW91c2VIb29rcyIsImV2ZW50RG9jIiwiYm9keSIsInBhZ2VYIiwiY2xpZW50WCIsInNjcm9sbExlZnQiLCJjbGllbnRMZWZ0IiwicGFnZVkiLCJjbGllbnRZIiwic2Nyb2xsVG9wIiwiY2xpZW50VG9wIiwib3JpZ2luYWxFdmVudCIsImZpeEhvb2siLCJFdmVudCIsImxvYWQiLCJub0J1YmJsZSIsImZvY3VzIiwidHJpZ2dlciIsImJsdXIiLCJjbGljayIsImJlZm9yZXVubG9hZCIsInJldHVyblZhbHVlIiwiaXNEZWZhdWx0UHJldmVudGVkIiwiZGVmYXVsdFByZXZlbnRlZCIsInRpbWVTdGFtcCIsImlzU2ltdWxhdGVkIiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJwb2ludGVyZW50ZXIiLCJwb2ludGVybGVhdmUiLCJvcmlnIiwicmVsYXRlZCIsInJlbGF0ZWRUYXJnZXQiLCJyeGh0bWxUYWciLCJybm9Jbm5lcmh0bWwiLCJyY2hlY2tlZCIsInJzY3JpcHRUeXBlTWFza2VkIiwicmNsZWFuU2NyaXB0IiwibWFuaXB1bGF0aW9uVGFyZ2V0IiwiY29udGVudCIsImRpc2FibGVTY3JpcHQiLCJyZXN0b3JlU2NyaXB0IiwiY2xvbmVDb3B5RXZlbnQiLCJkZXN0IiwicGRhdGFPbGQiLCJwZGF0YUN1ciIsInVkYXRhT2xkIiwidWRhdGFDdXIiLCJmaXhJbnB1dCIsImRvbU1hbmlwIiwiY29sbGVjdGlvbiIsImhhc1NjcmlwdHMiLCJpTm9DbG9uZSIsImh0bWwiLCJfZXZhbFVybCIsImtlZXBEYXRhIiwiY2xlYW5EYXRhIiwiZGF0YUFuZEV2ZW50cyIsImRlZXBEYXRhQW5kRXZlbnRzIiwic3JjRWxlbWVudHMiLCJkZXN0RWxlbWVudHMiLCJpblBhZ2UiLCJkZXRhY2giLCJhcHBlbmQiLCJwcmVwZW5kIiwiaW5zZXJ0QmVmb3JlIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyZXBsYWNlV2l0aCIsInJlcGxhY2VDaGlsZCIsImFwcGVuZFRvIiwicHJlcGVuZFRvIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlQWxsIiwiaW5zZXJ0IiwiaWZyYW1lIiwiZWxlbWRpc3BsYXkiLCJIVE1MIiwiQk9EWSIsImFjdHVhbERpc3BsYXkiLCJkaXNwbGF5IiwiZGVmYXVsdERpc3BsYXkiLCJ3cml0ZSIsImNsb3NlIiwicm1hcmdpbiIsInJudW1ub25weCIsImdldFN0eWxlcyIsInZpZXciLCJvcGVuZXIiLCJnZXRDb21wdXRlZFN0eWxlIiwic3dhcCIsIm9sZCIsInBpeGVsUG9zaXRpb25WYWwiLCJib3hTaXppbmdSZWxpYWJsZVZhbCIsInBpeGVsTWFyZ2luUmlnaHRWYWwiLCJyZWxpYWJsZU1hcmdpbkxlZnRWYWwiLCJjb250YWluZXIiLCJiYWNrZ3JvdW5kQ2xpcCIsImNsZWFyQ2xvbmVTdHlsZSIsImNzc1RleHQiLCJjb21wdXRlU3R5bGVUZXN0cyIsImRpdlN0eWxlIiwibWFyZ2luTGVmdCIsIndpZHRoIiwibWFyZ2luUmlnaHQiLCJwaXhlbFBvc2l0aW9uIiwiYm94U2l6aW5nUmVsaWFibGUiLCJwaXhlbE1hcmdpblJpZ2h0IiwicmVsaWFibGVNYXJnaW5MZWZ0IiwicmVsaWFibGVNYXJnaW5SaWdodCIsIm1hcmdpbkRpdiIsImN1ckNTUyIsImNvbXB1dGVkIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsImdldFByb3BlcnR5VmFsdWUiLCJhZGRHZXRIb29rSWYiLCJjb25kaXRpb25GbiIsImhvb2tGbiIsInJkaXNwbGF5c3dhcCIsImNzc1Nob3ciLCJwb3NpdGlvbiIsInZpc2liaWxpdHkiLCJjc3NOb3JtYWxUcmFuc2Zvcm0iLCJsZXR0ZXJTcGFjaW5nIiwiZm9udFdlaWdodCIsImNzc1ByZWZpeGVzIiwiZW1wdHlTdHlsZSIsInZlbmRvclByb3BOYW1lIiwiY2FwTmFtZSIsInNldFBvc2l0aXZlTnVtYmVyIiwic3VidHJhY3QiLCJtYXgiLCJhdWdtZW50V2lkdGhPckhlaWdodCIsImV4dHJhIiwiaXNCb3JkZXJCb3giLCJzdHlsZXMiLCJnZXRXaWR0aE9ySGVpZ2h0IiwidmFsdWVJc0JvcmRlckJveCIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0Iiwic2hvd0hpZGUiLCJzaG93IiwiaGlkZGVuIiwiY3NzSG9va3MiLCJvcGFjaXR5IiwiY3NzUHJvcHMiLCJvcmlnTmFtZSIsImlzRmluaXRlIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibGVmdCIsIm1hcmdpbiIsInBhZGRpbmciLCJib3JkZXIiLCJwcmVmaXgiLCJzdWZmaXgiLCJleHBhbmQiLCJleHBhbmRlZCIsInBhcnRzIiwiaGlkZSIsInRvZ2dsZSIsIlR3ZWVuIiwiZWFzaW5nIiwicHJvcEhvb2tzIiwicnVuIiwicGVyY2VudCIsImVhc2VkIiwiZHVyYXRpb24iLCJzdGVwIiwiZngiLCJsaW5lYXIiLCJwIiwic3dpbmciLCJjb3MiLCJQSSIsImZ4Tm93IiwidGltZXJJZCIsInJmeHR5cGVzIiwicnJ1biIsImNyZWF0ZUZ4Tm93IiwiZ2VuRngiLCJpbmNsdWRlV2lkdGgiLCJoZWlnaHQiLCJjcmVhdGVUd2VlbiIsImFuaW1hdGlvbiIsIkFuaW1hdGlvbiIsInR3ZWVuZXJzIiwiZGVmYXVsdFByZWZpbHRlciIsIm9wdHMiLCJvbGRmaXJlIiwiY2hlY2tEaXNwbGF5IiwiYW5pbSIsImRhdGFTaG93IiwidW5xdWV1ZWQiLCJvdmVyZmxvdyIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsInByb3BGaWx0ZXIiLCJzcGVjaWFsRWFzaW5nIiwicHJvcGVydGllcyIsInN0b3BwZWQiLCJwcmVmaWx0ZXJzIiwidGljayIsImN1cnJlbnRUaW1lIiwic3RhcnRUaW1lIiwidHdlZW5zIiwib3JpZ2luYWxQcm9wZXJ0aWVzIiwib3JpZ2luYWxPcHRpb25zIiwiZ290b0VuZCIsInJlamVjdFdpdGgiLCJ0aW1lciIsImNvbXBsZXRlIiwidHdlZW5lciIsInByZWZpbHRlciIsInNwZWVkIiwib3B0Iiwic3BlZWRzIiwiZmFkZVRvIiwidG8iLCJhbmltYXRlIiwib3B0YWxsIiwiZG9BbmltYXRpb24iLCJmaW5pc2giLCJzdG9wUXVldWUiLCJ0aW1lcnMiLCJjc3NGbiIsInNsaWRlRG93biIsInNsaWRlVXAiLCJzbGlkZVRvZ2dsZSIsImZhZGVJbiIsImZhZGVPdXQiLCJmYWRlVG9nZ2xlIiwiaW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJzbG93IiwiZmFzdCIsImRlbGF5IiwidGltZSIsInRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJjaGVja09uIiwib3B0U2VsZWN0ZWQiLCJvcHREaXNhYmxlZCIsInJhZGlvVmFsdWUiLCJib29sSG9vayIsInJlbW92ZUF0dHIiLCJuVHlwZSIsImF0dHJIb29rcyIsImJvb2wiLCJwcm9wTmFtZSIsImF0dHJOYW1lcyIsInByb3BGaXgiLCJnZXR0ZXIiLCJyZm9jdXNhYmxlIiwicmNsaWNrYWJsZSIsInJlbW92ZVByb3AiLCJ0YWJpbmRleCIsInBhcnNlSW50IiwicmNsYXNzIiwiZ2V0Q2xhc3MiLCJhZGRDbGFzcyIsImNsYXNzZXMiLCJjdXJWYWx1ZSIsImNsYXp6IiwiZmluYWxWYWx1ZSIsInJlbW92ZUNsYXNzIiwidG9nZ2xlQ2xhc3MiLCJzdGF0ZVZhbCIsImNsYXNzTmFtZXMiLCJoYXNDbGFzcyIsInJyZXR1cm4iLCJyc3BhY2VzIiwidmFsSG9va3MiLCJvcHRpb25TZXQiLCJyZm9jdXNNb3JwaCIsIm9ubHlIYW5kbGVycyIsImJ1YmJsZVR5cGUiLCJvbnR5cGUiLCJldmVudFBhdGgiLCJpc1RyaWdnZXIiLCJwYXJlbnRXaW5kb3ciLCJzaW11bGF0ZSIsImhvdmVyIiwiZm5PdmVyIiwiZm5PdXQiLCJmb2N1c2luIiwiYXR0YWNoZXMiLCJub25jZSIsInJxdWVyeSIsIkpTT04iLCJwYXJzZSIsInBhcnNlWE1MIiwiRE9NUGFyc2VyIiwicGFyc2VGcm9tU3RyaW5nIiwicmhhc2giLCJydHMiLCJyaGVhZGVycyIsInJsb2NhbFByb3RvY29sIiwicm5vQ29udGVudCIsInJwcm90b2NvbCIsInRyYW5zcG9ydHMiLCJhbGxUeXBlcyIsIm9yaWdpbkFuY2hvciIsImFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsInN0cnVjdHVyZSIsImRhdGFUeXBlRXhwcmVzc2lvbiIsImRhdGFUeXBlIiwiZGF0YVR5cGVzIiwiaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMiLCJqcVhIUiIsImluc3BlY3RlZCIsInNlZWtpbmdUcmFuc3BvcnQiLCJpbnNwZWN0IiwicHJlZmlsdGVyT3JGYWN0b3J5IiwiZGF0YVR5cGVPclRyYW5zcG9ydCIsImFqYXhFeHRlbmQiLCJmbGF0T3B0aW9ucyIsImFqYXhTZXR0aW5ncyIsImFqYXhIYW5kbGVSZXNwb25zZXMiLCJzIiwicmVzcG9uc2VzIiwiY3QiLCJmaW5hbERhdGFUeXBlIiwiZmlyc3REYXRhVHlwZSIsIm1pbWVUeXBlIiwiZ2V0UmVzcG9uc2VIZWFkZXIiLCJjb252ZXJ0ZXJzIiwiYWpheENvbnZlcnQiLCJyZXNwb25zZSIsImlzU3VjY2VzcyIsImNvbnYyIiwiY3VycmVudCIsImNvbnYiLCJyZXNwb25zZUZpZWxkcyIsImRhdGFGaWx0ZXIiLCJ0aHJvd3MiLCJhY3RpdmUiLCJsYXN0TW9kaWZpZWQiLCJldGFnIiwidXJsIiwiaXNMb2NhbCIsInByb3RvY29sIiwicHJvY2Vzc0RhdGEiLCJhc3luYyIsImNvbnRlbnRUeXBlIiwiYWNjZXB0cyIsImpzb24iLCJhamF4U2V0dXAiLCJzZXR0aW5ncyIsImFqYXhQcmVmaWx0ZXIiLCJhamF4VHJhbnNwb3J0IiwiYWpheCIsInRyYW5zcG9ydCIsImNhY2hlVVJMIiwicmVzcG9uc2VIZWFkZXJzU3RyaW5nIiwicmVzcG9uc2VIZWFkZXJzIiwidGltZW91dFRpbWVyIiwidXJsQW5jaG9yIiwiZmlyZUdsb2JhbHMiLCJjYWxsYmFja0NvbnRleHQiLCJnbG9iYWxFdmVudENvbnRleHQiLCJjb21wbGV0ZURlZmVycmVkIiwic3RhdHVzQ29kZSIsInJlcXVlc3RIZWFkZXJzIiwicmVxdWVzdEhlYWRlcnNOYW1lcyIsInN0ckFib3J0IiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwic2V0UmVxdWVzdEhlYWRlciIsImxuYW1lIiwib3ZlcnJpZGVNaW1lVHlwZSIsInN0YXR1cyIsImFib3J0Iiwic3RhdHVzVGV4dCIsImZpbmFsVGV4dCIsInN1Y2Nlc3MiLCJtZXRob2QiLCJjcm9zc0RvbWFpbiIsImhvc3QiLCJwYXJhbSIsInRyYWRpdGlvbmFsIiwiaGFzQ29udGVudCIsImlmTW9kaWZpZWQiLCJoZWFkZXJzIiwiYmVmb3JlU2VuZCIsInNlbmQiLCJuYXRpdmVTdGF0dXNUZXh0IiwibW9kaWZpZWQiLCJnZXRKU09OIiwiZ2V0U2NyaXB0Iiwid3JhcEFsbCIsImZpcnN0RWxlbWVudENoaWxkIiwid3JhcElubmVyIiwidW53cmFwIiwidmlzaWJsZSIsImdldENsaWVudFJlY3RzIiwicjIwIiwicmJyYWNrZXQiLCJyQ1JMRiIsInJzdWJtaXR0ZXJUeXBlcyIsInJzdWJtaXR0YWJsZSIsImJ1aWxkUGFyYW1zIiwidiIsImVuY29kZVVSSUNvbXBvbmVudCIsInNlcmlhbGl6ZSIsInNlcmlhbGl6ZUFycmF5IiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJ4aHJTdWNjZXNzU3RhdHVzIiwieGhyU3VwcG9ydGVkIiwiY29ycyIsImVycm9yQ2FsbGJhY2siLCJvcGVuIiwidXNlcm5hbWUiLCJ4aHJGaWVsZHMiLCJvbmxvYWQiLCJvbmVycm9yIiwib25hYm9ydCIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlc3BvbnNlVHlwZSIsInJlc3BvbnNlVGV4dCIsImJpbmFyeSIsImNoYXJzZXQiLCJzY3JpcHRDaGFyc2V0IiwiZXZ0Iiwib2xkQ2FsbGJhY2tzIiwicmpzb25wIiwianNvbnAiLCJqc29ucENhbGxiYWNrIiwib3JpZ2luYWxTZXR0aW5ncyIsImNhbGxiYWNrTmFtZSIsIm92ZXJ3cml0dGVuIiwicmVzcG9uc2VDb250YWluZXIiLCJqc29uUHJvcCIsImtlZXBTY3JpcHRzIiwicGFyc2VkIiwiX2xvYWQiLCJwYXJhbXMiLCJhbmltYXRlZCIsImdldFdpbmRvdyIsIm9mZnNldCIsInNldE9mZnNldCIsImN1clBvc2l0aW9uIiwiY3VyTGVmdCIsImN1ckNTU1RvcCIsImN1clRvcCIsImN1ck9mZnNldCIsImN1ckNTU0xlZnQiLCJjYWxjdWxhdGVQb3NpdGlvbiIsImN1ckVsZW0iLCJ1c2luZyIsIndpbiIsImJveCIsInBhZ2VZT2Zmc2V0IiwicGFnZVhPZmZzZXQiLCJvZmZzZXRQYXJlbnQiLCJwYXJlbnRPZmZzZXQiLCJzY3JvbGxUbyIsIkhlaWdodCIsIldpZHRoIiwiZGVmYXVsdEV4dHJhIiwiZnVuY05hbWUiLCJiaW5kIiwidW5iaW5kIiwiZGVsZWdhdGUiLCJ1bmRlbGVnYXRlIiwic2l6ZSIsImFuZFNlbGYiLCJkZWZpbmUiLCJhbWQiLCJfalF1ZXJ5IiwiXyQiLCIkIiwibm9Db25mbGljdCIsIkZPVU5EQVRJT05fVkVSU0lPTiIsIkZvdW5kYXRpb24iLCJfcGx1Z2lucyIsIl91dWlkcyIsInJ0bCIsInBsdWdpbiIsImZ1bmN0aW9uTmFtZSIsImF0dHJOYW1lIiwiaHlwaGVuYXRlIiwicmVnaXN0ZXJQbHVnaW4iLCJwbHVnaW5OYW1lIiwidXVpZCIsIkdldFlvRGlnaXRzIiwiJGVsZW1lbnQiLCJ1bnJlZ2lzdGVyUGx1Z2luIiwicmVJbml0IiwicGx1Z2lucyIsImlzSlEiLCJfaW5pdCIsIl90aGlzIiwicGxncyIsImZvckVhY2giLCJmb3VuZGF0aW9uIiwiY29uc29sZSIsInJvdW5kIiwicG93IiwicmVmbG93IiwiJGVsZW0iLCIkZWwiLCJ3YXJuIiwidGhpbmciLCJwYXJzZVZhbHVlIiwiZXIiLCJnZXRGbk5hbWUiLCJ0cmFuc2l0aW9uZW5kIiwidHJhbnNpdGlvbnMiLCJ1dGlsIiwidGhyb3R0bGUiLCIkbWV0YSIsIiRub0pTIiwiTWVkaWFRdWVyeSIsInBsdWdDbGFzcyIsIlJlZmVyZW5jZUVycm9yIiwiVHlwZUVycm9yIiwiZ2V0VGltZSIsInZlbmRvcnMiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ2cCIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwibGFzdFRpbWUiLCJuZXh0VGltZSIsInBlcmZvcm1hbmNlIiwiRnVuY3Rpb24iLCJvVGhpcyIsImFBcmdzIiwiZlRvQmluZCIsImZOT1AiLCJmQm91bmQiLCJmdW5jTmFtZVJlZ2V4Iiwic3RyIiwiQm94IiwiSW1Ob3RUb3VjaGluZ1lvdSIsIkdldERpbWVuc2lvbnMiLCJHZXRPZmZzZXRzIiwiZWxlbWVudCIsImxyT25seSIsInRiT25seSIsImVsZURpbXMiLCJib3R0b20iLCJyaWdodCIsInBhckRpbXMiLCJ3aW5kb3dEaW1zIiwiYWxsRGlycyIsInJlY3QiLCJwYXJSZWN0Iiwid2luUmVjdCIsIndpblkiLCJ3aW5YIiwicGFyZW50RGltcyIsImFuY2hvciIsInZPZmZzZXQiLCJoT2Zmc2V0IiwiaXNPdmVyZmxvdyIsIiRlbGVEaW1zIiwiJGFuY2hvckRpbXMiLCJrZXlDb2RlcyIsImNvbW1hbmRzIiwiS2V5Ym9hcmQiLCJnZXRLZXlDb2RlcyIsInBhcnNlS2V5Iiwic2hpZnRLZXkiLCJjdHJsS2V5IiwiYWx0S2V5IiwiaGFuZGxlS2V5IiwiY29tcG9uZW50IiwiZnVuY3Rpb25zIiwiY29tbWFuZExpc3QiLCJjbWRzIiwiY29tbWFuZCIsImx0ciIsImhhbmRsZWQiLCJ1bmhhbmRsZWQiLCJmaW5kRm9jdXNhYmxlIiwiY29tcG9uZW50TmFtZSIsInRyYXBGb2N1cyIsIiRmb2N1c2FibGUiLCIkZmlyc3RGb2N1c2FibGUiLCIkbGFzdEZvY3VzYWJsZSIsInJlbGVhc2VGb2N1cyIsImtjcyIsImsiLCJrYyIsImRlZmF1bHRRdWVyaWVzIiwibGFuZHNjYXBlIiwicG9ydHJhaXQiLCJyZXRpbmEiLCJxdWVyaWVzIiwiZXh0cmFjdGVkU3R5bGVzIiwibmFtZWRRdWVyaWVzIiwicGFyc2VTdHlsZVRvT2JqZWN0IiwiX2dldEN1cnJlbnRTaXplIiwiX3dhdGNoZXIiLCJhdExlYXN0IiwicXVlcnkiLCJtYXRjaE1lZGlhIiwibmV3U2l6ZSIsImN1cnJlbnRTaXplIiwic3R5bGVNZWRpYSIsIm1lZGlhIiwiaW5mbyIsImN1cnJlbnRTdHlsZSIsIm1hdGNoTWVkaXVtIiwic3R5bGVTaGVldCIsInN0eWxlT2JqZWN0IiwicmVkdWNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiaW5pdENsYXNzZXMiLCJhY3RpdmVDbGFzc2VzIiwiTW90aW9uIiwiYW5pbWF0ZUluIiwiY2IiLCJhbmltYXRlT3V0IiwiTW92ZSIsInByb2ciLCJtb3ZlIiwidHMiLCJpc0luIiwiaW5pdENsYXNzIiwiYWN0aXZlQ2xhc3MiLCJ0cmFuc2l0aW9uRHVyYXRpb24iLCJOZXN0IiwiRmVhdGhlciIsIm1lbnUiLCJpdGVtcyIsInN1Yk1lbnVDbGFzcyIsInN1Ykl0ZW1DbGFzcyIsImhhc1N1YkNsYXNzIiwiJGl0ZW0iLCIkc3ViIiwiQnVybiIsIlRpbWVyIiwibmFtZVNwYWNlIiwicmVtYWluIiwiaXNQYXVzZWQiLCJyZXN0YXJ0IiwiaW5maW5pdGUiLCJwYXVzZSIsIm9uSW1hZ2VzTG9hZGVkIiwiaW1hZ2VzIiwidW5sb2FkZWQiLCJzaW5nbGVJbWFnZUxvYWRlZCIsInNwb3RTd2lwZSIsImVuYWJsZWQiLCJtb3ZlVGhyZXNob2xkIiwidGltZVRocmVzaG9sZCIsInN0YXJ0UG9zWCIsInN0YXJ0UG9zWSIsImVsYXBzZWRUaW1lIiwiaXNNb3ZpbmciLCJvblRvdWNoRW5kIiwib25Ub3VjaE1vdmUiLCJ4IiwidG91Y2hlcyIsInkiLCJkeCIsImR5IiwiYWJzIiwib25Ub3VjaFN0YXJ0Iiwic3dpcGUiLCJhZGRUb3VjaCIsImhhbmRsZVRvdWNoIiwiY2hhbmdlZFRvdWNoZXMiLCJldmVudFR5cGVzIiwidG91Y2hzdGFydCIsInRvdWNobW92ZSIsInRvdWNoZW5kIiwic2ltdWxhdGVkRXZlbnQiLCJNb3VzZUV2ZW50Iiwic2NyZWVuWCIsInNjcmVlblkiLCJjcmVhdGVFdmVudCIsImluaXRNb3VzZUV2ZW50IiwiZGlzcGF0Y2hFdmVudCIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJwcmVmaXhlcyIsInRyaWdnZXJzIiwiY2hlY2tMaXN0ZW5lcnMiLCJldmVudHNMaXN0ZW5lciIsInJlc2l6ZUxpc3RlbmVyIiwic2Nyb2xsTGlzdGVuZXIiLCJtdXRhdGVMaXN0ZW5lciIsImNsb3NlbWVMaXN0ZW5lciIsInlldGlCb3hlcyIsInBsdWdOYW1lcyIsImxpc3RlbmVycyIsInBsdWdpbklkIiwiZGVib3VuY2UiLCIkbm9kZXMiLCJsaXN0ZW5pbmdFbGVtZW50c011dGF0aW9uIiwibXV0YXRpb25SZWNvcmRzTGlzdCIsIiR0YXJnZXQiLCJhdHRyaWJ1dGVOYW1lIiwiZWxlbWVudE9ic2VydmVyIiwib2JzZXJ2ZSIsImNoaWxkTGlzdCIsImNoYXJhY3RlckRhdGEiLCJzdWJ0cmVlIiwiYXR0cmlidXRlRmlsdGVyIiwiSUhlYXJZb3UiLCJBYmlkZSIsImRlZmF1bHRzIiwiJGlucHV0cyIsIl9ldmVudHMiLCJyZXNldEZvcm0iLCJ2YWxpZGF0ZUZvcm0iLCJ2YWxpZGF0ZU9uIiwidmFsaWRhdGVJbnB1dCIsImxpdmVWYWxpZGF0ZSIsInZhbGlkYXRlT25CbHVyIiwiaXNHb29kIiwiJGVycm9yIiwiZm9ybUVycm9yU2VsZWN0b3IiLCIkbGFiZWwiLCIkZWxzIiwibGFiZWxzIiwiZmluZExhYmVsIiwiJGZvcm1FcnJvciIsImZpbmRGb3JtRXJyb3IiLCJsYWJlbEVycm9yQ2xhc3MiLCJmb3JtRXJyb3JDbGFzcyIsImlucHV0RXJyb3JDbGFzcyIsImdyb3VwTmFtZSIsIiRsYWJlbHMiLCJmaW5kUmFkaW9MYWJlbHMiLCIkZm9ybUVycm9ycyIsInJlbW92ZVJhZGlvRXJyb3JDbGFzc2VzIiwiY2xlYXJSZXF1aXJlIiwicmVxdWlyZWRDaGVjayIsInZhbGlkYXRlZCIsImN1c3RvbVZhbGlkYXRvciIsInZhbGlkYXRvciIsImVxdWFsVG8iLCJ2YWxpZGF0ZVJhZGlvIiwidmFsaWRhdGVUZXh0IiwibWF0Y2hWYWxpZGF0aW9uIiwidmFsaWRhdG9ycyIsImdvb2RUb0dvIiwibWVzc2FnZSIsImRlcGVuZGVudEVsZW1lbnRzIiwiYWNjIiwibm9FcnJvciIsImlucHV0VGV4dCIsInZhbGlkIiwicGF0dGVybnMiLCIkZ3JvdXAiLCJyZXF1aXJlZCIsImNsZWFyIiwiJGZvcm0iLCJyZW1vdmVFcnJvckNsYXNzZXMiLCJhbHBoYSIsImFscGhhX251bWVyaWMiLCJpbnRlZ2VyIiwibnVtYmVyIiwiY2FyZCIsImN2diIsImVtYWlsIiwiZG9tYWluIiwiZGF0ZXRpbWUiLCJkYXRlIiwiZGF0ZUlTTyIsIm1vbnRoX2RheV95ZWFyIiwiZGF5X21vbnRoX3llYXIiLCJjb2xvciIsIkFjY29yZGlvbiIsIiR0YWJzIiwiJGNvbnRlbnQiLCJsaW5rSWQiLCIkaW5pdEFjdGl2ZSIsImRvd24iLCIkdGFiQ29udGVudCIsIiRhIiwibXVsdGlFeHBhbmQiLCJwcmV2aW91cyIsInVwIiwiZmlyc3RUaW1lIiwiJGN1cnJlbnRBY3RpdmUiLCJzbGlkZVNwZWVkIiwiJGF1bnRzIiwiYWxsb3dBbGxDbG9zZWQiLCJBY2NvcmRpb25NZW51IiwibXVsdGlPcGVuIiwiJG1lbnVMaW5rcyIsInN1YklkIiwiaXNBY3RpdmUiLCJpbml0UGFuZXMiLCIkc3VibWVudSIsIiRlbGVtZW50cyIsIiRwcmV2RWxlbWVudCIsIiRuZXh0RWxlbWVudCIsIm1pbiIsImNsb3NlQWxsIiwiaGlkZUFsbCIsIiRtZW51cyIsIkRyaWxsZG93biIsIiRzdWJtZW51QW5jaG9ycyIsIiRzdWJtZW51cyIsIiRtZW51SXRlbXMiLCJfcHJlcGFyZU1lbnUiLCJfcmVnaXN0ZXJFdmVudHMiLCJfa2V5Ym9hcmRFdmVudHMiLCIkbGluayIsInBhcmVudExpbmsiLCIkbWVudSIsIiRiYWNrIiwiYmFja0J1dHRvblBvc2l0aW9uIiwiYmFja0J1dHRvbiIsIl9iYWNrIiwiYXV0b0hlaWdodCIsIiR3cmFwcGVyIiwid3JhcHBlciIsImFuaW1hdGVIZWlnaHQiLCJfZ2V0TWF4RGltcyIsIl9zaG93IiwiY2xvc2VPbkNsaWNrIiwiJGJvZHkiLCJfaGlkZUFsbCIsIl9yZXNpemUiLCJfYmluZEhhbmRsZXIiLCJfc2Nyb2xsVG9wIiwiJHNjcm9sbFRvcEVsZW1lbnQiLCJzY3JvbGxUb3BFbGVtZW50Iiwic2Nyb2xsUG9zIiwic2Nyb2xsVG9wT2Zmc2V0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJhbmltYXRpb25FYXNpbmciLCJfaGlkZSIsInBhcmVudFN1Yk1lbnUiLCJtYXhIZWlnaHQiLCJudW1PZkVsZW1zIiwiRHJvcGRvd24iLCIkaWQiLCIkYW5jaG9yIiwicGFyZW50Q2xhc3MiLCIkcGFyZW50IiwicG9zaXRpb25DbGFzcyIsImdldFBvc2l0aW9uQ2xhc3MiLCJjb3VudGVyIiwidXNlZFBvc2l0aW9ucyIsInZlcnRpY2FsUG9zaXRpb24iLCJob3Jpem9udGFsUG9zaXRpb24iLCJjbGFzc0NoYW5nZWQiLCJkaXJlY3Rpb24iLCJuZXdXaWR0aCIsInBhcmVudEhPZmZzZXQiLCIkcGFyZW50RGltcyIsIl9yZXBvc2l0aW9uIiwiX3NldFBvc2l0aW9uIiwiYm9keURhdGEiLCJ3aGF0aW5wdXQiLCJob3ZlckRlbGF5IiwiaG92ZXJQYW5lIiwidmlzaWJsZUZvY3VzYWJsZUVsZW1lbnRzIiwiYXV0b0ZvY3VzIiwiX2FkZEJvZHlIYW5kbGVyIiwiY3VyUG9zaXRpb25DbGFzcyIsIkRyb3Bkb3duTWVudSIsInN1YnMiLCJ2ZXJ0aWNhbENsYXNzIiwicmlnaHRDbGFzcyIsImFsaWdubWVudCIsImNoYW5nZWQiLCJoYXNUb3VjaCIsIm9udG91Y2hzdGFydCIsInBhckNsYXNzIiwiaGFuZGxlQ2xpY2tGbiIsImhhc1N1YiIsImhhc0NsaWNrZWQiLCJjbGlja09wZW4iLCJmb3JjZUZvbGxvdyIsImNsb3NlT25DbGlja0luc2lkZSIsImRpc2FibGVIb3ZlciIsImF1dG9jbG9zZSIsImNsb3NpbmdUaW1lIiwiaXNUYWIiLCJwcmV2U2libGluZyIsIm9wZW5TdWIiLCJjbG9zZVN1YiIsIl9pc1ZlcnRpY2FsIiwiJHNpYnMiLCJvbGRDbGFzcyIsIiRwYXJlbnRMaSIsIiR0b0Nsb3NlIiwic29tZXRoaW5nVG9DbG9zZSIsIkVxdWFsaXplciIsImVxSWQiLCIkd2F0Y2hlZCIsImhhc05lc3RlZCIsImlzTmVzdGVkIiwiaXNPbiIsIm9uUmVzaXplTWVCb3VuZCIsIl9vblJlc2l6ZU1lIiwib25Qb3N0RXF1YWxpemVkQm91bmQiLCJfb25Qb3N0RXF1YWxpemVkIiwiaW1ncyIsInRvb1NtYWxsIiwiZXF1YWxpemVPbiIsIl9jaGVja01RIiwiX3JlZmxvdyIsIl9wYXVzZUV2ZW50cyIsImVxdWFsaXplT25TdGFjayIsIl9pc1N0YWNrZWQiLCJlcXVhbGl6ZUJ5Um93IiwiZ2V0SGVpZ2h0c0J5Um93IiwiYXBwbHlIZWlnaHRCeVJvdyIsImdldEhlaWdodHMiLCJhcHBseUhlaWdodCIsImhlaWdodHMiLCJsYXN0RWxUb3BPZmZzZXQiLCJncm91cCIsImVsT2Zmc2V0VG9wIiwibG4iLCJncm91cHNJTGVuZ3RoIiwibGVuSiIsIkludGVyY2hhbmdlIiwicnVsZXMiLCJjdXJyZW50UGF0aCIsIl9hZGRCcmVha3BvaW50cyIsIl9nZW5lcmF0ZVJ1bGVzIiwicnVsZSIsInBhdGgiLCJTUEVDSUFMX1FVRVJJRVMiLCJydWxlc0xpc3QiLCJNYWdlbGxhbiIsImNhbGNQb2ludHMiLCIkdGFyZ2V0cyIsIiRsaW5rcyIsIiRhY3RpdmUiLCJwb2ludHMiLCJ3aW5IZWlnaHQiLCJpbm5lckhlaWdodCIsImNsaWVudEhlaWdodCIsImRvY0hlaWdodCIsInNjcm9sbEhlaWdodCIsIiR0YXIiLCJwdCIsInRocmVzaG9sZCIsInRhcmdldFBvaW50IiwiZGVlcExpbmtpbmciLCJzY3JvbGxUb0xvYyIsIl91cGRhdGVBY3RpdmUiLCJhcnJpdmFsIiwibG9jIiwiX2luVHJhbnNpdGlvbiIsImJhck9mZnNldCIsIndpblBvcyIsImN1cklkeCIsImlzRG93biIsImN1clZpc2libGUiLCJoaXN0b3J5IiwicHVzaFN0YXRlIiwiT2ZmQ2FudmFzIiwiJGxhc3RUcmlnZ2VyIiwiJHRyaWdnZXJzIiwidHJhbnNpdGlvbiIsImNvbnRlbnRPdmVybGF5Iiwib3ZlcmxheSIsIm92ZXJsYXlQb3NpdGlvbiIsIiRvdmVybGF5IiwiaXNSZXZlYWxlZCIsInJldmVhbENsYXNzIiwicmV2ZWFsT24iLCJfc2V0TVFDaGVja2VyIiwidHJhbnNpdGlvblRpbWUiLCJfaGFuZGxlS2V5Ym9hcmQiLCJyZXZlYWwiLCIkY2xvc2VyIiwiZm9yY2VUbyIsImNvbnRlbnRTY3JvbGwiLCJfc3RvcFNjcm9sbGluZyIsIk9yYml0IiwiX3Jlc2V0IiwiY29udGFpbmVyQ2xhc3MiLCIkc2xpZGVzIiwic2xpZGVDbGFzcyIsIiRpbWFnZXMiLCJpbml0QWN0aXZlIiwidXNlTVVJIiwiX3ByZXBhcmVGb3JPcmJpdCIsImJ1bGxldHMiLCJfbG9hZEJ1bGxldHMiLCJhdXRvUGxheSIsImdlb1N5bmMiLCJhY2Nlc3NpYmxlIiwiJGJ1bGxldHMiLCJib3hPZkJ1bGxldHMiLCJ0aW1lckRlbGF5IiwiY2hhbmdlU2xpZGUiLCJfc2V0V3JhcHBlckhlaWdodCIsInBhdXNlT25Ib3ZlciIsIm5hdkJ1dHRvbnMiLCIkY29udHJvbHMiLCJuZXh0Q2xhc3MiLCJwcmV2Q2xhc3MiLCIkc2xpZGUiLCJfdXBkYXRlQnVsbGV0cyIsImlzTFRSIiwiY2hvc2VuU2xpZGUiLCIkY3VyU2xpZGUiLCIkZmlyc3RTbGlkZSIsIiRsYXN0U2xpZGUiLCJkaXJJbiIsImRpck91dCIsIiRuZXdTbGlkZSIsImluZmluaXRlV3JhcCIsIiRvbGRCdWxsZXQiLCJzcGFuIiwiJG5ld0J1bGxldCIsImFuaW1JbkZyb21SaWdodCIsImFuaW1PdXRUb1JpZ2h0IiwiYW5pbUluRnJvbUxlZnQiLCJhbmltT3V0VG9MZWZ0IiwiUmVzcG9uc2l2ZU1lbnUiLCJjdXJyZW50TXEiLCJjdXJyZW50UGx1Z2luIiwicnVsZXNUcmVlIiwicnVsZVNpemUiLCJydWxlUGx1Z2luIiwiTWVudVBsdWdpbnMiLCJfY2hlY2tNZWRpYVF1ZXJpZXMiLCJtYXRjaGVkTXEiLCJjc3NDbGFzcyIsImRlc3Ryb3kiLCJkcm9wZG93biIsImRyaWxsZG93biIsImFjY29yZGlvbiIsIlJlc3BvbnNpdmVUb2dnbGUiLCJ0YXJnZXRJRCIsIiR0YXJnZXRNZW51IiwiJHRvZ2dsZXIiLCJhbmltYXRpb25JbiIsImFuaW1hdGlvbk91dCIsIl91cGRhdGUiLCJfdXBkYXRlTXFIYW5kbGVyIiwidG9nZ2xlTWVudSIsImhpZGVGb3IiLCJSZXZlYWwiLCJtcSIsImlzTW9iaWxlIiwibW9iaWxlU25pZmYiLCJmdWxsU2NyZWVuIiwiX21ha2VPdmVybGF5IiwiZGVlcExpbmsiLCJvdXRlcldpZHRoIiwib3V0ZXJIZWlnaHQiLCJfdXBkYXRlUG9zaXRpb24iLCJfaGFuZGxlU3RhdGUiLCJtdWx0aXBsZU9wZW5lZCIsImFkZFJldmVhbE9wZW5DbGFzc2VzIiwib3JpZ2luYWxTY3JvbGxQb3MiLCJhZnRlckFuaW1hdGlvbiIsImZvY3VzYWJsZUVsZW1lbnRzIiwic2hvd0RlbGF5IiwiX2V4dHJhSGFuZGxlcnMiLCJjbG9zZU9uRXNjIiwiZmluaXNoVXAiLCJoaWRlRGVsYXkiLCJyZXNldE9uQ2xvc2UiLCJyZXBsYWNlU3RhdGUiLCJ0aXRsZSIsImJ0bU9mZnNldFBjdCIsImlQaG9uZVNuaWZmIiwiYW5kcm9pZFNuaWZmIiwiU2xpZGVyIiwiaW5wdXRzIiwiaGFuZGxlcyIsIiRoYW5kbGUiLCIkaW5wdXQiLCIkZmlsbCIsInZlcnRpY2FsIiwiaXNEYmwiLCJkaXNhYmxlZENsYXNzIiwiYmluZGluZyIsIl9zZXRJbml0QXR0ciIsImRvdWJsZVNpZGVkIiwiJGhhbmRsZTIiLCIkaW5wdXQyIiwic2V0SGFuZGxlcyIsIl9zZXRIYW5kbGVQb3MiLCJwY3RPZkJhciIsInBvc2l0aW9uVmFsdWVGdW5jdGlvbiIsIl9sb2dUcmFuc2Zvcm0iLCJfcG93VHJhbnNmb3JtIiwidG9GaXhlZCIsImJhc2VMb2ciLCJub25MaW5lYXJCYXNlIiwiJGhuZGwiLCJub0ludmVydCIsImgyVmFsIiwiaDFWYWwiLCJ2ZXJ0IiwiaE9yVyIsImxPclQiLCJoYW5kbGVEaW0iLCJlbGVtRGltIiwiX3BjdE9mQmFyIiwicHhUb01vdmUiLCJtb3ZlbWVudCIsImRlY2ltYWwiLCJfc2V0VmFsdWVzIiwiaXNMZWZ0SG5kbCIsImRpbSIsImhhbmRsZVBjdCIsImhhbmRsZVBvcyIsImluaXRpYWxTdGFydCIsIm1vdmVUaW1lIiwiY2hhbmdlZERlbGF5IiwiaW5pdFZhbCIsImluaXRpYWxFbmQiLCJoYXNWYWwiLCJldmVudE9mZnNldCIsImhhbGZPZkhhbmRsZSIsImJhckRpbSIsIndpbmRvd1Njcm9sbCIsImVsZW1PZmZzZXQiLCJldmVudEZyb21CYXIiLCJiYXJYWSIsIm9mZnNldFBjdCIsIl92YWx1ZSIsIl9hZGp1c3RWYWx1ZSIsImZpcnN0SG5kbFBvcyIsImFic1Bvc2l0aW9uIiwic2VjbmRIbmRsUG9zIiwicHJldl92YWwiLCJuZXh0X3ZhbCIsIl9ldmVudHNGb3JIYW5kbGUiLCJjdXJIYW5kbGUiLCJfaGFuZGxlRXZlbnQiLCJjbGlja1NlbGVjdCIsImRyYWdnYWJsZSIsIl8kaGFuZGxlIiwib2xkVmFsdWUiLCJuZXdWYWx1ZSIsImRlY3JlYXNlIiwiaW5jcmVhc2UiLCJkZWNyZWFzZV9mYXN0IiwiaW5jcmVhc2VfZmFzdCIsImludmVydFZlcnRpY2FsIiwiZnJhYyIsImNsaWNrUG9zIiwibG9nIiwiU3RpY2t5Iiwid2FzV3JhcHBlZCIsIiRjb250YWluZXIiLCJzdGlja3lDbGFzcyIsInNjcm9sbENvdW50IiwiY2hlY2tFdmVyeSIsImlzU3R1Y2siLCJjb250YWluZXJIZWlnaHQiLCJlbGVtSGVpZ2h0IiwiX3BhcnNlUG9pbnRzIiwiX3NldFNpemVzIiwic2Nyb2xsIiwiX2NhbGMiLCJfcmVtb3ZlU3RpY2t5IiwidG9wUG9pbnQiLCJ0b3BBbmNob3IiLCJidG0iLCJidG1BbmNob3IiLCJwdHMiLCJicmVha3MiLCJwbGFjZSIsImNhblN0aWNrIiwiX3BhdXNlTGlzdGVuZXJzIiwiY2hlY2tTaXplcyIsImJvdHRvbVBvaW50IiwiX3NldFN0aWNreSIsInN0aWNrVG8iLCJtcmduIiwibm90U3R1Y2tUbyIsImlzVG9wIiwic3RpY2tUb1RvcCIsImFuY2hvclB0IiwiYW5jaG9ySGVpZ2h0IiwidG9wT3JCb3R0b20iLCJzdGlja3lPbiIsIm5ld0VsZW1XaWR0aCIsImNvbXAiLCJwZG5nbCIsInBkbmdyIiwibmV3Q29udGFpbmVySGVpZ2h0IiwiX3NldEJyZWFrUG9pbnRzIiwibVRvcCIsImVtQ2FsYyIsIm1hcmdpblRvcCIsIm1CdG0iLCJtYXJnaW5Cb3R0b20iLCJlbSIsImZvbnRTaXplIiwiVGFicyIsIiR0YWJUaXRsZXMiLCJsaW5rQ2xhc3MiLCJsaW5rQWN0aXZlQ2xhc3MiLCJkZWVwTGlua1NtdWRnZURlbGF5Iiwic2VsZWN0VGFiIiwiZGVlcExpbmtTbXVkZ2UiLCJtYXRjaEhlaWdodCIsIl9zZXRIZWlnaHQiLCJfYWRkS2V5SGFuZGxlciIsIl9hZGRDbGlja0hhbmRsZXIiLCJfc2V0SGVpZ2h0TXFIYW5kbGVyIiwiX2hhbmRsZVRhYkNoYW5nZSIsIndyYXBPbktleXMiLCJhY3RpdmVDb2xsYXBzZSIsIl9jb2xsYXBzZVRhYiIsIiRvbGRUYWIiLCIkdGFiTGluayIsIiR0YXJnZXRDb250ZW50IiwiX29wZW5UYWIiLCJ1cGRhdGVIaXN0b3J5IiwicGFuZWxBY3RpdmVDbGFzcyIsIiR0YXJnZXRfYW5jaG9yIiwiaWRTdHIiLCJwYW5lbENsYXNzIiwicGFuZWwiLCJUb2dnbGVyIiwiX3VwZGF0ZUFSSUEiLCJUb29sdGlwIiwiaXNDbGljayIsImVsZW1JZCIsIl9nZXRQb3NpdGlvbkNsYXNzIiwidGlwVGV4dCIsInRlbXBsYXRlIiwiX2J1aWxkVGVtcGxhdGUiLCJhbGxvd0h0bWwiLCJ0cmlnZ2VyQ2xhc3MiLCJ0ZW1wbGF0ZUNsYXNzZXMiLCJ0b29sdGlwQ2xhc3MiLCIkdGVtcGxhdGUiLCIkdGlwRGltcyIsInNob3dPbiIsImZhZGVJbkR1cmF0aW9uIiwiZmFkZU91dER1cmF0aW9uIiwiaXNGb2N1cyIsImRpc2FibGVGb3JUb3VjaCIsInRvdWNoQ2xvc2VUZXh0IiwiUmVzcG9uc2l2ZUFjY29yZGlvblRhYnMiLCJfZ2V0QWxsT3B0aW9ucyIsImFsbE9wdGlvbnMiLCJkdW1teVBsdWdpbiIsInRtcFBsdWdpbiIsImtleUtleSIsIm9iak9iaiIsInN0b3JlemZEYXRhIiwiX2hhbmRsZU1hcmt1cCIsInRvU2V0IiwiZnJvbVN0cmluZyIsIiRwYW5lbHMiLCJ0YWJzVGl0bGUiLCJ0YWJzUGFuZWwiLCIkbGlIZWFkcyIsIiRsaUhlYWRzQSIsIiR0YWJzQ29udGVudCIsIiRwbGFjZWhvbGRlciIsInRlbXBWYWx1ZSIsInRhYnMiLCJyIiwibyIsImNoYXJBdCIsInN1YnN0cmluZyIsIlciLCJ5ZSIsIkRlIiwiVGUiLCJ1IiwiYyIsImtlIiwiYnJvd3NlciIsImQiLCJfb3V0ZXJXaWR0aCIsImYiLCJfb3V0ZXJIZWlnaHQiLCJPZSIsImJveFNpemluZyIsIm1vekJveFNpemluZyIsIndlYmtpdEJveFNpemluZyIsIm1zaWUiLCJmbG9vciIsInpvb20iLCJPYnNlcnZhYmxlQXJyYXkiLCJMYXp5T2JzZXJ2YWJsZUFycmF5IiwiRGF0YVNvdXJjZSIsIkhpZXJhcmNoaWNhbERhdGFTb3VyY2UiLCJBZSIsIkZlIiwiaCIsIndlYmtpdCIsIm1vemlsbGEiLCJpc1J0bCIsInNjcm9sbFdpZHRoIiwiY2xpZW50V2lkdGgiLCJnIiwicG9pbnRlcnMiLCJtc1BvaW50ZXJzIiwiYmUiLCJlZmZlY3RzIiwiRWxlbWVudCIsIkhlIiwiUGUiLCJ2ZSIsIlNlIiwiY29tcGxldGVDYWxsYmFjayIsIk0iLCJCIiwiUyIsIlQiLCJKIiwiWSIsIkciLCJxIiwiViIsIm9lIiwibnMiLCJDZSIsIm5lIiwicmUiLCJ0ZSIsIk8iLCJ6IiwiRCIsIkMiLCJFIiwiSCIsIkEiLCJOIiwiUCIsIkYiLCJSIiwiVSIsIkkiLCJMIiwiSyIsIlEiLCJaIiwiWCIsImVlIiwiaWUiLCJhZSIsInNlIiwidWUiLCJsZSIsImNlIiwiZGUiLCJmZSIsIm1lIiwicGUiLCJoZSIsImdlIiwia2VuZG8iLCJjdWx0dXJlcyIsIndlIiwiTWUiLCJ4ZSIsInplIiwiRWUiLCJfZSIsIk5lIiwiUmUiLCJVZSIsIkllIiwiX2luaXRPcHRpb25zIiwiX2RlZmF1bHRQcmV2ZW50ZWQiLCJzZW5kZXIiLCJwYXJhbU5hbWUiLCJ1c2VXaXRoQmxvY2siLCJyZW5kZXIiLCJfc2xvdENvdW50IiwiZm9ybWF0IiwibGFzdEluZGV4IiwiY2hhckNvZGVBdCIsInRvSlNPTiIsInZhbHVlT2YiLCJnZXRVVENGdWxsWWVhciIsImdldFVUQ01vbnRoIiwiZ2V0VVRDRGF0ZSIsImdldFVUQ0hvdXJzIiwiZ2V0VVRDTWludXRlcyIsImdldFVUQ1NlY29uZHMiLCJOdW1iZXIiLCJCb29sZWFuIiwic3RyaW5naWZ5IiwibnVtYmVyRm9ybWF0IiwiY2FsZW5kYXJzIiwic3RhbmRhcmQiLCJkYXlzIiwibW9udGhzIiwiZ2V0RGF0ZSIsIm5hbWVzQWJiciIsImdldERheSIsIm5hbWVzIiwiZ2V0TW9udGgiLCJnZXRGdWxsWWVhciIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJnZXRNaWxsaXNlY29uZHMiLCJBTSIsIlBNIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJkZWNpbWFscyIsInRvTG9jYWxlU3RyaW5nIiwiY3VycmVuY3kiLCJzeW1ib2wiLCJ0b0V4cG9uZW50aWFsIiwibGFzdEluZGV4T2YiLCJncm91cFNpemUiLCJhYmJyIiwibmFtZXNTaG9ydCIsImZpcnN0RGF5IiwidHdvRGlnaXRZZWFyTWF4IiwiY3VsdHVyZSIsImNhbGVuZGFyIiwiZmluZEN1bHR1cmUiLCJnZXRDdWx0dXJlIiwiX2V4dHJhY3RGb3JtYXQiLCJfYWN0aXZlRWxlbWVudCIsIl9yb3VuZCIsInNldEhvdXJzIiwic3Vic3RyIiwiX2xvd2VyRGF5cyIsIl9sb3dlck1vbnRocyIsIlVUQyIsInNldEZ1bGxZZWFyIiwicGFyc2VEYXRlIiwidGltZXpvbmUiLCJjb252ZXJ0IiwiX3Njcm9sbGJhciIsInNjcm9sbGJhciIsInRib2R5SW5uZXJIdG1sIiwidG91Y2giLCJNU1BvaW50ZXJFdmVudCIsIlBvaW50ZXJFdmVudCIsInRyYW5zZm9ybXMiLCJIVE1MRWxlbWVudCIsImhhc0hXM0QiLCJXZWJLaXRDU1NNYXRyaXgiLCJkZXZpY2VQaXhlbFJhdGlvIiwic2NyZWVuV2lkdGgiLCJzY3JlZW4iLCJhdmFpbFdpZHRoIiwiaW5uZXJXaWR0aCIsInNjcmVlbkhlaWdodCIsImF2YWlsSGVpZ2h0IiwiZGV0ZWN0T1MiLCJ3cCIsImFuZHJvaWQiLCJpcGhvbmUiLCJpcGFkIiwibWVlZ28iLCJ3ZWJvcyIsImJsYWNrYmVycnkiLCJwbGF5Ym9vayIsIndpbmRvd3MiLCJ0aXplbiIsInNhaWxmaXNoIiwiZmZvcyIsImlvcyIsImZsYXQiLCJ0YWJsZXQiLCJvbWluaSIsIm9tb2JpbGUiLCJmaXJlZm94IiwibW9iaWxlc2FmYXJpIiwiY2hyb21lIiwiZGV2aWNlIiwibWFqb3JWZXJzaW9uIiwibWlub3JWZXJzaW9uIiwiZmxhdFZlcnNpb24iLCJjb3Jkb3ZhIiwiUGhvbmVHYXAiLCJhcHBNb2RlIiwic3RhbmRhbG9uZSIsIm1vYmlsZU9TIiwid3BEZXZpY2VQaXhlbFJhdGlvIiwia2luZXRpY1Njcm9sbE5lZWRlZCIsImhhc05hdGl2ZVNjcm9sbGluZyIsImRlbGF5ZWRDbGljayIsIm1vdXNlQW5kVG91Y2hQcmVzZW50IiwiZGV0ZWN0QnJvd3NlciIsImVkZ2UiLCJzYWZhcmkiLCJvcGVyYSIsImRvY3VtZW50TW9kZSIsImRldGVjdENsaXBib2FyZEFjY2VzcyIsInF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCIsImN1dCIsInBhc3RlIiwiY2xpcGJvYXJkIiwiem9vbUxldmVsIiwiY3NzQm9yZGVyU3BhY2luZyIsImJvcmRlclNwYWNpbmciLCJldmVudENhcHR1cmUiLCJwbGFjZWhvbGRlciIsInByb3BlcnR5Q2hhbmdlRXZlbnQiLCJjc3NGbG9hdCIsInN0YWJsZVNvcnQiLCJmaWVsZCIsImhhc2hDaGFuZ2UiLCJjdXN0b21FbGVtZW50cyIsIm91dCIsInByb21pc2VTaGltIiwiZW5hYmxlIiwiYW5pbWF0ZWRQcm9taXNlIiwia2VuZG9TdG9wIiwia2VuZG9BbmltYXRlIiwia2VuZG9BZGRDbGFzcyIsImtlbmRvUmVtb3ZlQ2xhc3MiLCJrZW5kb1RvZ2dsZUNsYXNzIiwiZWxlbWVudEZyb21Qb2ludCIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJtb3VzZWNhbmNlbCIsInJlc2l6ZSIsIndpZGdldHMiLCJfd2lkZ2V0UmVnaXN0ZXJlZENhbGxiYWNrcyIsInVpIiwibW9iaWxlIiwiZGF0YXZpeiIsImRyYXdpbmciLCJzcHJlYWRzaGVldCIsIm1lc3NhZ2VzIiwiSU5TRVJUIiwiREVMRVRFIiwiQkFDS1NQQUNFIiwiVEFCIiwiRU5URVIiLCJFU0MiLCJMRUZUIiwiVVAiLCJSSUdIVCIsIkRPV04iLCJFTkQiLCJIT01FIiwiU1BBQ0VCQVIiLCJQQUdFVVAiLCJQQUdFRE9XTiIsIkYyIiwiRjEwIiwiRjEyIiwiTlVNUEFEX1BMVVMiLCJOVU1QQURfTUlOVVMiLCJOVU1QQURfRE9UIiwiZ2V0U2hhZG93cyIsImRlZXBFeHRlbmQiLCJnZXRDb21wdXRlZFN0eWxlcyIsIndlYkNvbXBvbmVudHMiLCJpc1Njcm9sbGFibGUiLCJ0b0NhbWVsQ2FzZSIsInRvSHlwaGVucyIsImdldE9mZnNldCIsInBhcnNlRWZmZWN0cyIsImRpcmVjdGlvbnMiLCJPYnNlcnZhYmxlIiwiQ2xhc3MiLCJUZW1wbGF0ZSIsImV2ZW50VGFyZ2V0IiwiaHRtbEVuY29kZSIsImlzTG9jYWxVcmwiLCJhY2Nlc3NvciIsInJvbGVTZWxlY3RvciIsImRpcmVjdGl2ZVNlbGVjdG9yIiwidHJpZ2dlcmVkQnlJbnB1dCIsInRhZ05hbWUiLCJvbldpZGdldFJlZ2lzdGVyZWQiLCJsb2dUb0NvbnNvbGUiLCJzdXBwcmVzc0xvZyIsImFuZ3VsYXIiLCJkYXRhU291cmNlIiwiX2hhc0JpbmRpbmdUYXJnZXQiLCJrZW5kb0JpbmRpbmdUYXJnZXQiLCJfdGFiaW5kZXgiLCJzZXRPcHRpb25zIiwiX3NldEV2ZW50cyIsImdldFNpemUiLCJfc2l6ZSIsImRpbWVuc2lvbnMiLCJzZXRTaXplIiwiX2Rlc3Ryb3kiLCJfbXV0ZUFuZ3VsYXJSZWJpbmQiLCJfbXV0ZVJlYmluZCIsImRhdGFJdGVtcyIsImZsYXRWaWV3IiwiX2FuZ3VsYXJJdGVtcyIsImRhdGFJdGVtIiwiaW5pdFdpZGdldCIsInJvbGVzIiwicm9sZXNGcm9tTmFtZXNwYWNlcyIsIndpZGdldEluc3RhbmNlIiwicGFyc2VPcHRpb25zIiwiV2lkZ2V0IiwiRGF0YUJvdW5kV2lkZ2V0IiwibG9hZGluZyIsIndpZGdldCIsIm51bGxPYmplY3QiLCJhdXRvQXBwbHlOUyIsImtlbmRvRGVzdHJveSIsInZpZXdIYXNOYXRpdmVTY3JvbGxpbmciLCJ1c2VOYXRpdmVTY3JvbGxpbmciLCJhcHBMZXZlbE5hdGl2ZVNjcm9sbGluZyIsImFwcGxpY2F0aW9uIiwidGhlbWVzIiwidmlld3MiLCJ0b3VjaFNjcm9sbGVyIiwidXNlTmF0aXZlIiwiU2Nyb2xsZXIiLCJrZW5kb01vYmlsZVNjcm9sbGVyIiwib25SZXNpemUiLCJ1bmJpbmRSZXNpemUiLCJhdHRyVmFsdWUiLCJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSIsImtlbmRvRm9jdXNhYmxlIiwic2V0dXBNb3VzZU11dGUiLCJtb3VzZVRyYXAiLCJidXN0Q2xpY2siLCJjYXB0dXJlTW91c2UiLCJtdXRlTW91c2UiLCJtb3VzZVRyYXBUaW1lb3V0SUQiLCJ1bk11dGVNb3VzZSIsImNhbmNlbCIsIk1TUG9pbnRlckVudGVyIiwiTVNQb2ludGVyTGVhdmUiLCJhcHBseUV2ZW50TWFwIiwic2VhcmNoIiwiZXZlbnRNYXAiLCJnZXRVVENEYXkiLCJzZXRVVENEYXRlIiwiem9uZSIsInpvbmVzIiwiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIiwiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0IiwidG9Mb2NhbERhdGUiLCJzZXREYXRlIiwic2V0VGltZSIsImFkanVzdERTVCIsImRheU9mV2VlayIsInNldERheU9mV2VlayIsImlzSW5EYXRlUmFuZ2UiLCJpc0luVGltZVJhbmdlIiwiaXNUb2RheSIsIm5leHREYXkiLCJwcmV2aW91c0RheSIsInRvVXRjVGltZSIsIk1TX1BFUl9EQVkiLCJNU19QRVJfSE9VUiIsIk1TX1BFUl9NSU5VVEUiLCJhZGREYXlzIiwidG9kYXkiLCJ0b0ludmFyaWFudFRpbWUiLCJmaXJzdERheU9mTW9udGgiLCJsYXN0RGF5T2ZNb250aCIsInN0cmlwV2hpdGVzcGFjZSIsImNyZWF0ZU5vZGVJdGVyYXRvciIsIk5vZGVGaWx0ZXIiLCJTSE9XX1RFWFQiLCJGSUxURVJfQUNDRVBUIiwiRklMVEVSX1JFSkVDVCIsIm5leHROb2RlIiwicmVmZXJlbmNlTm9kZSIsIndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm1velJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJtc1JlcXVlc3RBbmltYXRpb25GcmFtZSIsImFuaW1hdGlvbkZyYW1lIiwicXVldWVBbmltYXRpb24iLCJydW5OZXh0QW5pbWF0aW9uIiwicGFyc2VRdWVyeVN0cmluZ1BhcmFtcyIsImVsZW1lbnRVbmRlckN1cnNvciIsImNsaWVudCIsIndoZWVsRGVsdGFZIiwid2hlZWxEZWx0YSIsImRldGFpbCIsImF4aXMiLCJWRVJUSUNBTF9BWElTIiwiY2FyZXQiLCJzZWxlY3Rpb25TdGFydCIsInNldFNlbGVjdGlvblJhbmdlIiwic2VsZWN0aW9uRW5kIiwiY3JlYXRlVGV4dFJhbmdlIiwiY29sbGFwc2UiLCJtb3ZlU3RhcnQiLCJtb3ZlRW5kIiwiZHVwbGljYXRlIiwibW92ZVRvQm9va21hcmsiLCJjcmVhdGVSYW5nZSIsImdldEJvb2ttYXJrIiwic2V0RW5kUG9pbnQiLCJjb21waWxlTW9iaWxlRGlyZWN0aXZlIiwiaW5qZWN0b3IiLCJpbnZva2UiLCIkJHBoYXNlIiwiJGRpZ2VzdCIsImFudGlGb3JnZXJ5VG9rZW5zIiwiY3ljbGVGb3JtIiwiYWN0aW9uIiwiZmlsZU5hbWUiLCJiYXNlNjQiLCJhdG9iIiwiVWludDhBcnJheSIsIkJsb2IiLCJidWZmZXIiLCJtc1NhdmVCbG9iIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiZG93bmxvYWQiLCJyZXZva2VPYmplY3RVUkwiLCJzYXZlQXMiLCJmb3JjZVByb3h5IiwiZGF0YVVSSSIsInByb3h5VVJMIiwicHJveHlUYXJnZXQiLCJwcm94eU1vZGVsU2V0dGVycyIsImRpcnR5IiwiX25vdGlmeUNoYW5nZSIsImxvZ2ljIiwiYWdncmVnYXRlcyIsImFnZ3JlZ2F0ZSIsIl9wYXJzZSIsImhhc1N1Ymdyb3VwcyIsIldlIiwiWWUiLCJhdCIsImlkRmllbGQiLCJfZGVmYXVsdElkIiwiZnJvbSIsImZpZWxkcyIsImxhYmVsIiwidEJvZGllcyIsInJvd3MiLCJjZWxscyIsIkplIiwiX2F0dGFjaEJ1YmJsZUhhbmRsZXJzIiwiX2xvYWRlZCIsImhhc0NoaWxkcmVuIiwicWUiLCJqZSIsIkxlIiwiR2UiLCJCZSIsIlZlIiwiUWUiLCJLZSIsIiRlIiwiWGUiLCJyZWR1Y2VSaWdodCIsImV2ZXJ5Iiwic29tZSIsIl9wYXJlbnQiLCJfaGFuZGxlcnMiLCJzaG91bGRTZXJpYWxpemUiLCJfc2V0IiwiY2hhbmdlIiwiX2luaXRpYWxpemVycyIsImVkaXRhYmxlIiwiYWNjZXB0IiwiaXNOZXciLCJudWxsYWJsZSIsImxvY2FsZUNvbXBhcmUiLCJjcmVhdGUiLCJjb21iaW5lIiwiYXNjIiwiX19wb3NpdGlvbiIsImRlc2MiLCJxdW90ZSIsIm5lcSIsImd0IiwiZ3RlIiwibHQiLCJsdGUiLCJzdGFydHN3aXRoIiwiZG9lc25vdHN0YXJ0d2l0aCIsImVuZHN3aXRoIiwiZG9lc25vdGVuZHdpdGgiLCJkb2Vzbm90Y29udGFpbiIsImlzZW1wdHkiLCJpc25vdGVtcHR5IiwiaXNudWxsIiwiaXNub3RudWxsIiwiZmlsdGVyRXhwciIsImFuZCIsIm9yIiwiZXhwcmVzc2lvbiIsIm9wZXJhdG9ycyIsImlnbm9yZUNhc2UiLCJlcXVhbHMiLCJpc2VxdWFsdG8iLCJlcXVhbHRvIiwiZXF1YWwiLCJub3RlcXVhbHMiLCJpc25vdGVxdWFsdG8iLCJub3RlcXVhbHRvIiwibm90ZXF1YWwiLCJpc2xlc3N0aGFuIiwibGVzc3RoYW4iLCJsZXNzIiwiaXNsZXNzdGhhbm9yZXF1YWx0byIsImxlc3N0aGFuZXF1YWwiLCJpc2dyZWF0ZXJ0aGFuIiwiZ3JlYXRlcnRoYW4iLCJncmVhdGVyIiwiaXNncmVhdGVydGhhbm9yZXF1YWx0byIsImdyZWF0ZXJ0aGFuZXF1YWwiLCJub3RzdWJzdHJpbmdvZiIsIm5vcm1hbGl6ZUZpbHRlciIsImNvbXBhcmVGaWx0ZXJzIiwicmFuZ2UiLCJza2lwIiwidGFrZSIsIm9yZGVyIiwib3JkZXJCeSIsIm9yZGVyQnlEZXNjZW5kaW5nIiwiZ3JvdXBCeSIsIl9zb3J0Rm9yR3JvdXBpbmciLCJzdW0iLCJhdmVyYWdlIiwicHJvY2VzcyIsImZpbHRlckNhbGxiYWNrIiwidG90YWwiLCJyZWFkIiwidXBkYXRlIiwicGFyYW1ldGVyTWFwIiwiX3N0b3JlIiwiaW5tZW1vcnkiLCJtb2RlbEJhc2UiLCJtb2RlbCIsIl9kYXRhQWNjZXNzRnVuY3Rpb24iLCJlcnJvcnMiLCJfbWFwIiwiX3ByZWZldGNoIiwiX3ByaXN0aW5lRGF0YSIsIl9yYW5nZXMiLCJfdmlldyIsIl9wcmlzdGluZVRvdGFsIiwiX2Rlc3Ryb3llZCIsIl9wYWdlU2l6ZSIsInBhZ2VTaXplIiwiX3BhZ2UiLCJwYWdlIiwiX3NvcnQiLCJfZmlsdGVyIiwiX2dyb3VwIiwiX2FnZ3JlZ2F0ZSIsIl90b3RhbCIsIl9zaG91bGREZXRhY2hPYnNlcnZhYmxlUGFyZW50cyIsInB1c2hDcmVhdGUiLCJfcHVzaENyZWF0ZSIsInB1c2hVcGRhdGUiLCJfcHVzaFVwZGF0ZSIsInB1c2hEZXN0cm95IiwiX3B1c2hEZXN0cm95Iiwib2ZmbGluZVN0b3JhZ2UiLCJfc3RvcmFnZSIsImdldEl0ZW0iLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwicmVhZGVyIiwicmVhZGVycyIsInNjaGVtYSIsIl9kZXRhY2hPYnNlcnZhYmxlUGFyZW50cyIsIl9vYnNlcnZlIiwiX29ubGluZSIsInNlcnZlclNvcnRpbmciLCJzZXJ2ZXJQYWdpbmciLCJzZXJ2ZXJGaWx0ZXJpbmciLCJzZXJ2ZXJHcm91cGluZyIsInNlcnZlckFnZ3JlZ2F0ZXMiLCJiYXRjaCIsIm9ubGluZSIsInN5bmMiLCJvZmZsaW5lRGF0YSIsIl9pc1NlcnZlckdyb3VwZWQiLCJfcHVzaCIsIl9yZWFkRGF0YSIsIl9mbGF0RGF0YSIsImdldEJ5VWlkIiwiX3N0b3JlRGF0YSIsIl9hZGRSYW5nZSIsIl9wcm9jZXNzIiwiX29ic2VydmVWaWV3IiwiX2NyZWF0ZU5ld01vZGVsIiwiX3dyYXBJbkVtcHR5R3JvdXAiLCJhdXRvU3luYyIsIl91cGRhdGVQcmlzdGluZUZvck1vZGVsIiwiX3JlbW92ZUl0ZW1zIiwiX2VhY2hJdGVtIiwiX3JlbW92ZVByaXN0aW5lRm9yTW9kZWwiLCJfcmVtb3ZlTW9kZWxGcm9tUmFuZ2VzIiwiX3VwZGF0ZVJhbmdlc0xlbmd0aCIsImRlc3Ryb3llZCIsImNyZWF0ZWQiLCJ1cGRhdGVkIiwiX3NlbmRTdWJtaXQiLCJfc2VuZCIsIl9hY2NlcHQiLCJfY2hhbmdlIiwiY2FuY2VsQ2hhbmdlcyIsIk1vZGVsIiwiX2NhbmNlbE1vZGVsIiwiX21hcmtPZmZsaW5lVXBkYXRlc0FzRGlydHkiLCJfX3N0YXRlX18iLCJoYXNDaGFuZ2VzIiwibW9kZWxzIiwiX2hhbmRsZUN1c3RvbUVycm9ycyIsIl9leGVjdXRlT25QcmlzdGluZUZvck1vZGVsIiwiX2VhY2hQcmlzdGluZUl0ZW0iLCJfcHJpc3RpbmVGb3JNb2RlbCIsIl9zdWJtaXQiLCJfcHJvbWlzZSIsIl9wYXJhbXMiLCJfcXVldWVSZXF1ZXN0IiwiX2RlcXVldWVSZXF1ZXN0IiwiX3JlYWRBZ2dyZWdhdGVzIiwiX2FnZ3JlZ2F0ZVJlc3VsdCIsIl9za2lwIiwidGltZXN0YW1wIiwiZXJyb3JUaHJvd24iLCJfcmVxdWVzdEluUHJvZ3Jlc3MiLCJfcGVuZGluZyIsIl9zaG91bGRXcmFwIiwiX2NoYW5nZUhhbmRsZXIiLCJfdXBkYXRlVG90YWxGb3JBY3Rpb24iLCJfY2FsY3VsYXRlQWdncmVnYXRlcyIsIl90YWtlIiwiX3F1ZXJ5UHJvY2VzcyIsIl9tZXJnZVN0YXRlIiwiX2N1cnJlbnRSYW5nZVN0YXJ0IiwiZmV0Y2giLCJfcXVlcnkiLCJ0b3RhbFBhZ2VzIiwiX2VtcHR5QWdncmVnYXRlcyIsImNlaWwiLCJpblJhbmdlIiwiX2ZpbmRSYW5nZSIsImxhc3RSYW5nZSIsImZpcnN0SXRlbVVpZCIsImVuYWJsZVJlcXVlc3RzSW5Qcm9ncmVzcyIsIl9za2lwUmVxdWVzdHNJblByb2dyZXNzIiwiX3RpbWVTdGFtcCIsIl9jdXJyZW50UmVxdWVzdFRpbWVTdGFtcCIsIl9yYW5nZUV4aXN0cyIsInByZWZldGNoIiwiX21lcmdlR3JvdXBzIiwiY3VycmVudFJhbmdlU3RhcnQiLCJfcHJlZmV0Y2hTdWNjZXNzSGFuZGxlciIsIl90aW1lb3V0IiwiX211bHRpcGxlUHJlZmV0Y2giLCJzY2hlbWFzIiwidGFibGUiLCJfY2hpbGRyZW5PcHRpb25zIiwiX2luaXRDaGlsZHJlbiIsIl91cGRhdGVDaGlsZHJlbkZpZWxkIiwibG9hZGVkIiwibGV2ZWwiLCJfY2hpbGRyZW5Mb2FkZWQiLCJfZmluZCIsIl9kYXRhU291cmNlIiwiX3ByZWZldGNoaW5nIiwiX3N5bmNXaXRoRGF0YVNvdXJjZSIsInNldFZpZXdTaXplIiwidmlld1NpemUiLCJfcmVjYWxjdWxhdGUiLCJ1c2VSYW5nZXMiLCJkYXRhT2Zmc2V0IiwicHJlZmV0Y2hUaHJlc2hvbGQiLCJtaWRQYWdlVGhyZXNob2xkIiwibmV4dE1pZFJhbmdlIiwibmV4dFBhZ2VUaHJlc2hvbGQiLCJuZXh0RnVsbFJhbmdlIiwicHVsbEJhY2tUaHJlc2hvbGQiLCJwcmV2aW91c01pZFJhbmdlIiwicHJldmlvdXNGdWxsUmFuZ2UiLCJfZ29Ub1JhbmdlIiwic3luY0RhdGFTb3VyY2UiLCJfZXhwYW5kaW5nIiwiX3N5bmNQZW5kaW5nIiwiX2ZpcnN0SXRlbVVpZCIsImJhdGNoU2l6ZSIsImVuZHJlYWNoZWQiLCJwcmVmZXRjaGluZyIsInByZWZldGNoZWQiLCJRdWVyeSIsIk5vZGUiLCJPYnNlcnZhYmxlT2JqZWN0IiwiTG9jYWxUcmFuc3BvcnQiLCJSZW1vdGVUcmFuc3BvcnQiLCJDYWNoZSIsIkRhdGFSZWFkZXIiLCJCdWZmZXIiLCJCYXRjaEJ1ZmZlciIsImNlbnRlciIsImRpc3RhbmNlIiwic3FydCIsImFwaSIsInBvaW50ZXJJZCIsIm1vdXNlIiwicG9pbnRlciIsIl91cGRhdGVMb2NhdGlvbkRhdGEiLCJzdGFydExvY2F0aW9uIiwidmVsb2NpdHkiLCJkZWx0YSIsImluaXRpYWxEZWx0YSIsInVzZUNsaWNrQXNUYXAiLCJ1c2VyRXZlbnRzIiwiaW5pdGlhbFRvdWNoIiwicHJlc3NFdmVudCIsIl9tb3ZlZCIsIl9maW5pc2hlZCIsInByZXNzIiwiX2hvbGRUaW1lb3V0IiwibWluSG9sZCIsIl90cmlnZ2VyIiwiX2hvbGQiLCJfd2l0aGluSWdub3JlVGhyZXNob2xkIiwiZGlzcG9zZSIsIl9zdGFydCIsImVuZFRpbWUiLCJpc01vdmVkIiwiX21heFRvdWNoZXMiLCJtdWx0aVRvdWNoIiwiYWxsb3dTZWxlY3Rpb24iLCJjYXB0dXJlVXBJZk1vdmVkIiwiZmFzdFRhcCIsImV2ZW50TlMiLCJzdXJmYWNlIiwicHJlc3NlZCIsInRvdWNoQWN0aW9uIiwicHJldmVudERyYWdFdmVudCIsInByZXZlbnRJZk1vdmluZyIsIl9pc01vdmVkIiwiX2Rpc3Bvc2VBbGwiLCJjYXB0dXJlIiwiX2lzTXVsdGlUb3VjaCIsIl9hcGlDYWxsIiwiX21heFRvdWNoZXNSZWFjaGVkIiwiX3NlbGVjdCIsIl9tb3ZlIiwiX2VhY2hUb3VjaCIsIl9lbmQiLCJfY2xpY2siLCJkZWZhdWx0VGhyZXNob2xkIiwiZ2V0VG91Y2hlcyIsInRvdWNoRGVsdGEiLCJVc2VyRXZlbnRzIiwibmFtZWRDb2xvcnMiLCJmb3JtYXRzIiwicmVzb2x2ZUNvbG9yIiwibm9ybWFsaXplQnl0ZSIsInRvSGV4IiwicGFkRGlnaXQiLCJicmlnaHRuZXNzIiwicGVyY0JyaWdodG5lc3MiLCJhbGljZWJsdWUiLCJhbnRpcXVld2hpdGUiLCJhcXVhIiwiYXF1YW1hcmluZSIsImF6dXJlIiwiYmVpZ2UiLCJiaXNxdWUiLCJibGFjayIsImJsYW5jaGVkYWxtb25kIiwiYmx1ZSIsImJsdWV2aW9sZXQiLCJicm93biIsImJ1cmx5d29vZCIsImNhZGV0Ymx1ZSIsImNoYXJ0cmV1c2UiLCJjaG9jb2xhdGUiLCJjb3JhbCIsImNvcm5mbG93ZXJibHVlIiwiY29ybnNpbGsiLCJjcmltc29uIiwiY3lhbiIsImRhcmtibHVlIiwiZGFya2N5YW4iLCJkYXJrZ29sZGVucm9kIiwiZGFya2dyYXkiLCJkYXJrZ3JleSIsImRhcmtncmVlbiIsImRhcmtraGFraSIsImRhcmttYWdlbnRhIiwiZGFya29saXZlZ3JlZW4iLCJkYXJrb3JhbmdlIiwiZGFya29yY2hpZCIsImRhcmtyZWQiLCJkYXJrc2FsbW9uIiwiZGFya3NlYWdyZWVuIiwiZGFya3NsYXRlYmx1ZSIsImRhcmtzbGF0ZWdyYXkiLCJkYXJrc2xhdGVncmV5IiwiZGFya3R1cnF1b2lzZSIsImRhcmt2aW9sZXQiLCJkZWVwcGluayIsImRlZXBza3libHVlIiwiZGltZ3JheSIsImRpbWdyZXkiLCJkb2RnZXJibHVlIiwiZmlyZWJyaWNrIiwiZmxvcmFsd2hpdGUiLCJmb3Jlc3RncmVlbiIsImZ1Y2hzaWEiLCJnYWluc2Jvcm8iLCJnaG9zdHdoaXRlIiwiZ29sZCIsImdvbGRlbnJvZCIsImdyYXkiLCJncmV5IiwiZ3JlZW4iLCJncmVlbnllbGxvdyIsImhvbmV5ZGV3IiwiaG90cGluayIsImluZGlhbnJlZCIsImluZGlnbyIsIml2b3J5Iiwia2hha2kiLCJsYXZlbmRlciIsImxhdmVuZGVyYmx1c2giLCJsYXduZ3JlZW4iLCJsZW1vbmNoaWZmb24iLCJsaWdodGJsdWUiLCJsaWdodGNvcmFsIiwibGlnaHRjeWFuIiwibGlnaHRnb2xkZW5yb2R5ZWxsb3ciLCJsaWdodGdyYXkiLCJsaWdodGdyZXkiLCJsaWdodGdyZWVuIiwibGlnaHRwaW5rIiwibGlnaHRzYWxtb24iLCJsaWdodHNlYWdyZWVuIiwibGlnaHRza3libHVlIiwibGlnaHRzbGF0ZWdyYXkiLCJsaWdodHNsYXRlZ3JleSIsImxpZ2h0c3RlZWxibHVlIiwibGlnaHR5ZWxsb3ciLCJsaW1lIiwibGltZWdyZWVuIiwibGluZW4iLCJtYWdlbnRhIiwibWFyb29uIiwibWVkaXVtYXF1YW1hcmluZSIsIm1lZGl1bWJsdWUiLCJtZWRpdW1vcmNoaWQiLCJtZWRpdW1wdXJwbGUiLCJtZWRpdW1zZWFncmVlbiIsIm1lZGl1bXNsYXRlYmx1ZSIsIm1lZGl1bXNwcmluZ2dyZWVuIiwibWVkaXVtdHVycXVvaXNlIiwibWVkaXVtdmlvbGV0cmVkIiwibWlkbmlnaHRibHVlIiwibWludGNyZWFtIiwibWlzdHlyb3NlIiwibW9jY2FzaW4iLCJuYXZham93aGl0ZSIsIm5hdnkiLCJvbGRsYWNlIiwib2xpdmUiLCJvbGl2ZWRyYWIiLCJvcmFuZ2UiLCJvcmFuZ2VyZWQiLCJvcmNoaWQiLCJwYWxlZ29sZGVucm9kIiwicGFsZWdyZWVuIiwicGFsZXR1cnF1b2lzZSIsInBhbGV2aW9sZXRyZWQiLCJwYXBheWF3aGlwIiwicGVhY2hwdWZmIiwicGVydSIsInBpbmsiLCJwbHVtIiwicG93ZGVyYmx1ZSIsInB1cnBsZSIsInJlZCIsInJvc3licm93biIsInJveWFsYmx1ZSIsInNhZGRsZWJyb3duIiwic2FsbW9uIiwic2FuZHlicm93biIsInNlYWdyZWVuIiwic2Vhc2hlbGwiLCJzaWVubmEiLCJzaWx2ZXIiLCJza3libHVlIiwic2xhdGVibHVlIiwic2xhdGVncmF5Iiwic2xhdGVncmV5Iiwic25vdyIsInNwcmluZ2dyZWVuIiwic3RlZWxibHVlIiwidGFuIiwidGVhbCIsInRoaXN0bGUiLCJ0b21hdG8iLCJ0dXJxdW9pc2UiLCJ2aW9sZXQiLCJ3aGVhdCIsIndoaXRlIiwid2hpdGVzbW9rZSIsInllbGxvdyIsInllbGxvd2dyZWVuIiwidG9IU1YiLCJ0b1JHQiIsInRvQnl0ZXMiLCJ0b0NzcyIsInRvQ3NzUmdiYSIsInRvRGlzcGxheSIsIk5hTiIsInRvSFNMIiwiZnJvbUJ5dGVzIiwiZnJvbVJHQiIsImZyb21IU1YiLCJmcm9tSFNMIiwiQ29sb3IiLCJwYXJzZUNvbG9yIiwib3JpZ2luIiwiY29sbGlzaW9ucyIsImNvbGxpc2lvbiIsImRvd25FdmVudCIsIl9ob3ZlcmVkIiwiX2FjdGl2YXRlZCIsIl9hbmltYXRpb25DbG9zZSIsIl9tb3VzZWRvd25Qcm94eSIsIl9tb3VzZWRvd24iLCJfcmVzaXplUHJveHkiLCJ0b2dnbGVUYXJnZXQiLCJ0b2dnbGVFdmVudCIsInZpZXdwb3J0IiwiY29weUFuY2hvclN0eWxlcyIsImF1dG9zaXplIiwibW9kYWwiLCJhZGp1c3RTaXplIiwiX2hpZGVEaXJDbGFzcyIsIl9jbG9zaW5nIiwiX3RvZ2dsZVJlc2l6ZSIsImlzRml4ZWQiLCJmbGlwcGVkIiwiX3Bvc2l0aW9uIiwiX29wZW5BbmltYXRpb24iLCJfc2hvd0RpckNsYXNzIiwic2xpZGVJbiIsIl9yZXNpemVUaW1lb3V0IiwiX3Njcm9sbGFibGVQYXJlbnRzIiwiX2ZpdCIsIl9mbGlwIiwiX2FsaWduIiwiTUFYX1ZBTFVFIiwiTUFYX05VTSIsIk1JTl9OVU0iLCJhcnJheUxpbWl0cyIsImFycmF5TWluIiwiYXJyYXlNYXgiLCJkZWZpbmVkIiwiZGVnIiwiaGFzaEtleSIsImhhc2hPYmplY3QiLCJpc051bWJlciIsImlzVHJhbnNwYXJlbnQiLCJsaW1pdFZhbHVlIiwib2JqZWN0S2V5IiwicmFkIiwicmVuZGVyQXR0ciIsInJlbmRlckFsbEF0dHIiLCJyZW5kZXJQb3MiLCJyZW5kZXJTaXplIiwicmVuZGVyU3R5bGUiLCJyZW5kZXJUZW1wbGF0ZSIsInNwYXJzZUFycmF5TGltaXRzIiwic3BhcnNlQXJyYXlNaW4iLCJzcGFyc2VBcnJheU1heCIsInNxciIsInZhbHVlT3JEZWZhdWx0Iiwicm9tYW5Ub0FyYWJpYyIsImFyYWJpY1RvUm9tYW4iLCJtZW1vaXplIiwidWNzMmVuY29kZSIsInVjczJkZWNvZGUiLCJtZXJnZVNvcnQiLCJiYXNlbGluZSIsIm1lYXN1cmUiLCJmb250cyIsIl9sZW5ndGgiLCJwdXQiLCJfaGVhZCIsIl90YWlsIiwibmV3ZXIiLCJvbGRlciIsIl9jYWNoZSIsImJhc2VsaW5lTWFya2VyU2l6ZSIsIl9iYXNlbGluZU1hcmtlciIsIm9mZnNldFRvcCIsIlRleHRNZXRyaWNzIiwiTFJVQ2FjaGUiLCJsb2FkRm9udHMiLCJtZWFzdXJlVGV4dCIsImVuY29kZUJhc2U2NCIsImVuY29kZVVURjgiLCJvYnNlcnZlcnMiLCJfb2JzZXJ2ZXJzIiwiYWRkT2JzZXJ2ZXIiLCJyZW1vdmVPYnNlcnZlciIsIl9zdXNwZW5kZWQiLCJvcHRpb25zQ2hhbmdlIiwiZ2VvbWV0cnlDaGFuZ2UiLCJzdXNwZW5kIiwicmVzdW1lIiwiX29ic2VydmVyRmllbGQiLCJtaXhpbnMiLCJPYnNlcnZlcnNNaXhpbiIsIm1hdHJpeCIsImF0YW4yIiwic3RhcnRBbmdsZSIsImVuZEFuZ2xlIiwibnRoUm9vdCIsIm11bHRpcGx5Q29uc3RhbnQiLCJuZWdhdGUiLCJtdWx0aXBseSIsImlzUmVhbCIsInJlYWwiLCJib3R0b21SaWdodCIsInRyYW5zZm9ybUNvcHkiLCJyb3RhdGUiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUiLCJ0cmFuc2xhdGVXaXRoIiwic2NhbGVDb3B5IiwiZGlzdGFuY2VUbyIsIm1pblBvaW50IiwibWF4UG9pbnQiLCJaRVJPIiwic2V0T3JpZ2luIiwiZ2V0T3JpZ2luIiwidG9wTGVmdCIsInRvcFJpZ2h0IiwiYm90dG9tTGVmdCIsImJib3giLCJmcm9tUG9pbnRzIiwiZXhwYW5kQ29weSIsImNvbnRhaW5zUG9pbnQiLCJfaXNPblBhdGgiLCJ1bmlvbiIsImludGVyc2VjdCIsInNldENlbnRlciIsInNldFJhZGl1cyIsImdldENlbnRlciIsInJhZGl1cyIsInBvaW50QXQiLCJfcG9pbnRBdCIsInNpbiIsInJhZGl1c1giLCJyYWRpdXNZIiwiYW50aWNsb2Nrd2lzZSIsIk1BWF9JTlRFUlZBTCIsImN1cnZlUG9pbnRzIiwiX2FyY0ludGVydmFsIiwiX2ludGVydmFsQ3VydmVQb2ludHMiLCJjcDEiLCJjcDIiLCJwMiIsIl9kZXJpdmF0aXZlQXQiLCJwMSIsIm11bHRpcGx5Q29weSIsIklERU5USVRZIiwiX21hdHJpeCIsIl9vcHRpb25zQ2hhbmdlIiwiaW1nIiwiYWRkQ29uc3RhbnQiLCJnZW9tZXRyeSIsIkFyYyIsIkNpcmNsZSIsImN1cnZlSW50ZXJzZWN0aW9uc0NvdW50IiwibGluZUludGVyc2VjdGlvbnNDb3VudCIsIk1hdHJpeCIsIlBvaW50IiwiUmVjdCIsIlNpemUiLCJUcmFuc2Zvcm1hdGlvbiIsInRvTWF0cml4IiwiaXNPdXRPZkVuZFBvaW50IiwiaGFzUm9vdHNJblJhbmdlIiwiX2hhbmRsZXIiLCJfbW91c2VlbnRlciIsIl9tb3VzZWxlYXZlIiwiX21vdXNlbW92ZSIsIl92aXN1YWwiLCJHcm91cCIsIl9lbmFibGVUcmFja2luZyIsInRvb2x0aXAiLCJkcmF3IiwiaGlkZVRvb2x0aXAiLCJfdG9vbHRpcCIsImV4cG9ydFZpc3VhbCIsIl9rZW5kb05vZGUiLCJzcmNFbGVtZW50Iiwic2hvd1Rvb2x0aXAiLCJzdXNwZW5kVHJhY2tpbmciLCJfc3VzcGVuZGVkVHJhY2tpbmciLCJyZXN1bWVUcmFja2luZyIsIlBvcHVwIiwiX2VsZW1lbnRPZmZzZXQiLCJfc3VyZmFjZVBvaW50IiwiaW5zZXJ0QXQiLCJyZW1vdmVTZWxmIiwiaW52YWxpZGF0ZSIsImNoaWxkcmVuQ2hhbmdlIiwiX3dyYXAiLCJfY2xlYXIiLCJfaXRlbXMiLCJfdG9vbHRpcE9wdGlvbnMiLCJwb3B1cCIsIl9vcGVuUG9wdXBIYW5kbGVyIiwiX29wZW5Qb3B1cCIsIl9iaW5kRXZlbnRzIiwiYXV0b0hpZGUiLCJzaG93QWZ0ZXIiLCJfc2hvd0hhbmRsZXIiLCJfc2hvd0V2ZW50IiwiX3N1cmZhY2VMZWF2ZUhhbmRsZXIiLCJfc3VyZmFjZUxlYXZlIiwiX21vdXNlbGVhdmVIYW5kbGVyIiwiX21vdXNlbW92ZUhhbmRsZXIiLCJfaGlkZUNsaWNrIiwic2hhcmVkIiwiX3Rvb2x0aXBTaGFwZSIsIl91cGRhdGVDb250ZW50IiwiX29mZnNldCIsIl9jdXJyZW50IiwiX3Nob3dUaW1lb3V0Iiwic2hhcGUiLCJfYXV0b0hpZGUiLCJfbWVhc3VyZSIsImVsZW1lbnRTaXplIiwiX2Nsb3NlQnV0dG9uIiwiX3BvcHVwUmVsYXRlZFRhcmdldCIsIkRBU0hfQVJSQVlTIiwiZG90IiwiZGFzaCIsImxvbmdkYXNoIiwiZGFzaGRvdCIsImxvbmdkYXNoZG90IiwibG9uZ2Rhc2hkb3Rkb3QiLCJCYXNlTm9kZSIsIk9wdGlvbnNTdG9yZSIsIlN1cmZhY2UiLCJTdXJmYWNlRmFjdG9yeSIsIlN1cmZhY2VUb29sdGlwIiwiZmlsbCIsInN0cm9rZSIsInRyYXZlcnNlIiwiY3VycmVudFRyYW5zZm9ybSIsIl9iYm94Q2FjaGUiLCJfbWF0cml4SGFzaCIsIl9iYm94IiwiUGFpbnRhYmxlIiwiVHJhdmVyc2FibGUiLCJNZWFzdXJhYmxlIiwicmF3QkJveCIsImNsaXBwZWRCQm94IiwiaXQiLCJtdCIsInR0IiwiZXQiLCJudCIsInJ0Iiwib3QiLCJzdCIsImh0IiwidXQiLCJmdCIsImR0IiwidnQiLCJ4dCIsImNsaXAiLCJwYXJlbnRUcmFuc2Zvcm0iLCJfY2xpcHBlZEJCb3giLCJfaGFzRmlsbCIsIl9jb250YWluc1BvaW50IiwiX2hhc1N0cm9rZSIsIl9zcGxpY2UiLCJfYWRkIiwiX3JlbW92ZSIsIl9jbGVhck9ic2VydmVyIiwiX3NldE9ic2VydmVyIiwiX3JlcGFyZW50IiwicmVtb3ZlQXQiLCJmb250IiwiX2dlb21ldHJ5IiwidG9QYXRoIiwibW92ZVRvIiwiY3VydmVUbyIsImNvbnRyb2xJbiIsImNvbnRyb2xPdXQiLCJiYm94VG8iLCJfY3VydmVCb3VuZGluZ0JveCIsIl9saW5lQm91bmRpbmdCb3giLCJfY3VydmVFeHRyZW1lc0ZvciIsIl9jdXJ2ZUV4dHJlbWVzIiwiX2NhbGN1bGF0ZUN1cnZlQXQiLCJfaW50ZXJzZWN0aW9uc1RvIiwiX2lzT25DdXJ2ZVRvIiwiX2lzT25MaW5lVG8iLCJfaXNPblBhdGhUbyIsInNlZ21lbnRzIiwibGluZUpvaW4iLCJsaW5lVG8iLCJhcmMiLCJfYWRkQXJjU2VnbWVudHMiLCJhcmNUbyIsImNsb3NlZCIsImZyb21SZWN0IiwiZnJvbUFyYyIsInBhdGhzIiwiX3JlY3QiLCJzdG9wcyIsIl9jcmVhdGVTdG9wcyIsIl91c2VyU3BhY2UiLCJ1c2VyU3BhY2UiLCJhZGRTdG9wIiwicmVtb3ZlU3RvcCIsIl9yYWRpdXMiLCJfZmFsbGJhY2tGaWxsIiwiZmFsbGJhY2tGaWxsIiwiX2RlZmF1bHRzIiwiX2ZpZWxkTWFwIiwiYWxpZ25Db250ZW50IiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIiwic3BhY2luZyIsIm9yaWVudGF0aW9uIiwibGluZVNwYWNpbmciLCJfaW5pdE1hcCIsInNpemVGaWVsZCIsImdyb3Vwc1NpemVGaWVsZCIsImdyb3VwQXhpcyIsImdyb3Vwc0F4aXMiLCJfaW5pdEdyb3VwcyIsImdyb3Vwc1NpemUiLCJsaW5lU2l6ZSIsImJib3hlcyIsIl9uZXdHcm91cCIsIl9hZGRUb0dyb3VwIiwiYWxpZ24iLCJFbGVtZW50c0FycmF5IiwiZml0IiwiR3JhZGllbnQiLCJHcmFkaWVudFN0b3AiLCJJbWFnZSIsIkxheW91dCIsIkxpbmVhckdyYWRpZW50IiwiTXVsdGlQYXRoIiwiUGF0aCIsIlJhZGlhbEdyYWRpZW50IiwiU2VnbWVudCIsInN0YWNrIiwiVGV4dCIsInZBbGlnbiIsInZTdGFjayIsInZXcmFwIiwicGFyYW1ldGVycyIsImlzUmVsYXRpdmUiLCJwcmV2aW91c0NvbW1hbmQiLCJQYXRoUGFyc2VyIiwiX3pJbmRleCIsInNoYXBlcyIsIl9xdWFkTm9kZSIsInBvaW50U2hhcGVzIiwiaW5Cb3VuZHMiLCJST09UX1NJWkUiLCJpbml0Um9vdHMiLCJyb290TWFwIiwicm9vdEVsZW1lbnRzIiwicG9pbnRTaGFwZSIsImFzc2lnblppbmRleCIsImJib3hDaGFuZ2UiLCJfaW5zZXJ0U2hhcGUiLCJfaW5zZXJ0IiwiZ2V0U2VjdG9ycyIsImluUm9vdCIsIlNoYXBlc1F1YWRUcmVlIiwiUXVhZE5vZGUiLCJnZXRTY3JlZW5DVE0iLCJfZWxlbWVudCIsIl9yb290IiwiX3RlbXBsYXRlIiwiX3Jvb3RFbGVtZW50IiwiYXR0YWNoVG8iLCJzdmciLCJkZWZpbml0aW9ucyIsImNsZWFyRGVmaW5pdGlvbnMiLCJjcmVhdGVEZWZpbml0aW9ucyIsInNldEVsZW1lbnQiLCJyZW5kZXJDaGlsZHJlbiIsInVwZGF0ZURlZmluaXRpb24iLCJhbGxBdHRyIiwiYWxsQ3NzIiwibWFwVHJhbnNmb3JtIiwicmVuZGVyVHJhbnNmb3JtIiwidHJhbnNmb3JtQ2hhbmdlIiwibWFwU3R5bGUiLCJjdXJzb3IiLCJyZW5kZXJPcGFjaXR5IiwiZGVmaW5pdGlvbkNoYW5nZSIsInJlbmRlckRlZmluaXRpb25zIiwibWFwRGVmaW5pdGlvbnMiLCJkZWZzIiwiZGVmaW5pdGlvbk1hcCIsImFkZERlZmluaXRpb25zIiwicmVtb3ZlRGVmaW5pdGlvbnMiLCJjcmVhdGVEZWZpbml0aW9uIiwiYWRkRGVmaW5pdGlvbiIsInJlbW92ZURlZmluaXRpb24iLCJyZW5kZXJEYXRhIiwibWFwRmlsbCIsIm1hcFN0cm9rZSIsImF0dHJpYnV0ZU1hcCIsInByaW50UGF0aCIsInNlZ21lbnRUeXBlIiwicHJpbnRQb2ludHMiLCJyZW5kZXJMaW5lY2FwIiwiZGFzaFR5cGUiLCJyZW5kZXJEYXNoVHlwZSIsInJlbmRlclN0cm9rZSIsImxpbmVDYXAiLCJyZW5kZXJGaWxsIiwic2V0WSIsInJlbmRlckNvbnRlbnQiLCJtYXBQb3NpdGlvbiIsIm1hcFNvdXJjZSIsInJlbmRlclBvc2l0aW9uIiwicmVuZGVyU291cmNlIiwicmVuZGVyT2Zmc2V0IiwibG9hZFN0b3BzIiwibWFwQ29vcmRpbmF0ZXMiLCJyZW5kZXJDb29yZGluYXRlcyIsIm1hcFNwYWNlIiwibmFtZXNwYWNlVVJJIiwiYWRvcHROb2RlIiwiaW1wbGVtZW50YXRpb24iLCJoYXNGZWF0dXJlIiwiZXhwb3J0U1ZHIiwiQXJjTm9kZSIsIkNpcmNsZU5vZGUiLCJDbGlwTm9kZSIsIkRlZmluaXRpb25Ob2RlIiwiR3JhZGllbnRTdG9wTm9kZSIsIkdyb3VwTm9kZSIsIkltYWdlTm9kZSIsIkxpbmVhckdyYWRpZW50Tm9kZSIsIk11bHRpUGF0aE5vZGUiLCJQYXRoTm9kZSIsIlJhZGlhbEdyYWRpZW50Tm9kZSIsIlJlY3ROb2RlIiwiUm9vdE5vZGUiLCJUZXh0Tm9kZSIsIl9leHBvcnRHcm91cCIsImFkZENvbG9yU3RvcCIsIl9zZWFyY2hUcmVlIiwiX2ludmFsaWRhdGUiLCJ0b0RhdGFVUkwiLCJfbW91c2VUcmFja0hhbmRsZXIiLCJfdHJhY2tNb3VzZSIsIl9jdXJyZW50U2hhcGUiLCJpbml0Q2xpcCIsImNsZWFyQ2xpcCIsInNldENsaXAiLCJiZWdpblBhdGgiLCJyZW5kZXJQb2ludHMiLCJzZXRUcmFuc2Zvcm0iLCJsb2FkRWxlbWVudHMiLCJzZXRPcGFjaXR5IiwiZ2xvYmFsQWxwaGEiLCJyZW5kZXJUbyIsInNhdmUiLCJyZXN0b3JlIiwiY2FudmFzIiwiY3R4IiwiZ2V0Q29udGV4dCIsImNsZWFyUmVjdCIsInNldExpbmVEYXNoIiwic2V0TGluZUNhcCIsInNldExpbmVKb2luIiwic2V0RmlsbCIsInNldFN0cm9rZSIsInNldEdyYWRpZW50RmlsbCIsImZpbGxTdHlsZSIsImNyZWF0ZUxpbmVhckdyYWRpZW50IiwiY3JlYXRlUmFkaWFsR3JhZGllbnQiLCJzdHJva2VTdHlsZSIsImxpbmVXaWR0aCIsIm1vekRhc2giLCJ3ZWJraXRMaW5lRGFzaCIsImJlemllckN1cnZlVG8iLCJjbG9zZVBhdGgiLCJmaWxsVGV4dCIsInN0cm9rZVRleHQiLCJvbkxvYWQiLCJvbkVycm9yIiwiY3Jvc3NPcmlnaW4iLCJkcmF3SW1hZ2UiLCJleHBvcnRJbWFnZSIsImt2bWwiLCJzdHlsZVNoZWV0cyIsImNyZWF0ZVN0eWxlU2hlZXQiLCJhZGRSdWxlIiwiYXR0YWNoUmVmZXJlbmNlIiwic2V0U3R5bGUiLCJtYXBPcGFjaXR5VG8iLCJvYnNlcnZlciIsImNsaXBSZWN0IiwiY2xpcEJCb3giLCJfYXR0YWNoVG8iLCJyZWZyZXNoVHJhbnNmb3JtIiwicmVmcmVzaE9wYWNpdHkiLCJjdXJyZW50T3BhY2l0eSIsIm1hcEdyYWRpZW50IiwibWFwRmlsbENvbG9yIiwibWFwTGluZWFyR3JhZGllbnQiLCJzdXBwb3J0Vk1MIiwibWFwUmFkaWFsR3JhZGllbnQiLCJhZGRDb2xvcnMiLCJiYXNlQ29sb3IiLCJjb2xvcnMiLCJyZWZyZXNoIiwidHJhbnNmb3JtT3JpZ2luIiwiY3JlYXRlRmlsbE5vZGUiLCJjcmVhdGVUcmFuc2Zvcm1Ob2RlIiwic2V0Q29vcmRzaXplIiwic2V0UGF0aERhdGEiLCJwYXRoRGF0YSIsImNyZWF0ZURhdGFOb2RlIiwic2V0U3RyaW5nIiwic2V0U3JjIiwidm1sIiwiQXJjRGF0YU5vZGUiLCJDaXJjbGVUcmFuc2Zvcm1Ob2RlIiwiRmlsbE5vZGUiLCJJbWFnZUZpbGxOb2RlIiwiSW1hZ2VQYXRoRGF0YU5vZGUiLCJNdWx0aVBhdGhEYXRhTm9kZSIsIlBhdGhEYXRhTm9kZSIsIlJlY3REYXRhTm9kZSIsIlN0cm9rZU5vZGUiLCJUZXh0UGF0aE5vZGUiLCJUZXh0UGF0aERhdGFOb2RlIiwiVHJhbnNmb3JtTm9kZSIsIl9jbGlwYm94IiwiX3N0YWNraW5nQ29udGV4dCIsIl9hdm9pZExpbmtzIiwiYXZvaWRMaW5rcyIsInBhZ2VzIiwicGFnZU51bSIsImtlZXBUb2dldGhlciIsInJlcGVhdEhlYWRlcnMiLCJxdWVyeVNlbGVjdG9yIiwic2V0U3RhcnRCZWZvcmUiLCJzZXRFbmRCZWZvcmUiLCJleHRyYWN0Q29udGVudHMiLCJwYWdlQ2xhc3NOYW1lIiwic2VsZWN0Tm9kZUNvbnRlbnRzIiwic2V0RW5kIiwic3BsaXRUZXh0IiwiZW5kT2Zmc2V0IiwiX2Rlc3RydWN0aXZlIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJiZWZvcmVQYWdlQnJlYWsiLCJwZGYiLCJkZWZpbmVGb250IiwiZm9yY2VQYWdlQnJlYWsiLCJwYXBlclNpemUiLCJnZXRQYXBlck9wdGlvbnMiLCJtdWx0aVBhZ2UiLCJfaWdub3JlTWFyZ2luIiwiY3NzUnVsZXMiLCJnZXRQcm90b3R5cGVPZiIsInNldFByb3BlcnR5IiwidGwiLCJiciIsImJsIiwiX3BkZkxpbmsiLCJ0ZXh0QWxpZ24iLCJsaW5lSGVpZ2h0IiwiZm9udEZhbWlseSIsImRpc2MiLCJjaXJjbGUiLCJzcXVhcmUiLCJiYWNrZ3JvdW5kUG9zaXRpb24iLCJhbmdsZSIsImF0YW4iLCJleHBvcnRET01WaXN1YWwiLCJzZWxlY3RlZE9wdGlvbnMiLCJ3aGl0ZVNwYWNlIiwibXVsdGlwbGUiLCJzZXRTdGFydCIsInN0YXJ0T2Zmc2V0IiwidW5kZXJsaW5lIiwib3ZlcmxpbmUiLCJ0ZXh0T3ZlcmZsb3ciLCJfZG9tX3pJbmRleCIsIl9wZGZSZWN0IiwiZHJhd0RPTSIsImdldEZvbnRGYWNlcyIsInBsYXkiLCJfc3RvcHBlZCIsIkFuaW1hdGlvbkZhY3RvcnkiLCJPdCIsIlV0IiwiVnQiLCJ0aWNrWCIsInRpY2tZIiwibGluZVN0YXJ0IiwibGluZUVuZCIsImJ0IiwiVHQiLCJXdCIsIngxIiwieTEiLCJ4MiIsInkyIiwia3QiLCJpbm5lclJhZGl1cyIsIk10IiwieXQiLCJ3dCIsIl90IiwiU3QiLCJBdCIsIlJ0IiwiUHQiLCJ6dCIsIkN0IiwiTHQiLCJCdCIsIkl0IiwianQiLCJFdCIsIkR0IiwiR3QiLCJOdCIsIkZ0IiwiSHQiLCJYdCIsIm9uQ2lyY2xlIiwid3JhcFBvaW50Iiwic25hcFRvIiwiYWxpZ25UbyIsInNocmluayIsInBhZCIsInVucGFkIiwiZ2V0SGFzaCIsIm92ZXJsYXBzIiwidG9SZWN0IiwiaGFzU2l6ZSIsImlyIiwibWlkZGxlIiwicG9pbnQiLCJhZGphY2VudEJveCIsImdldEJCb3giLCJjcmVhdGVSaW5nIiwiZ2V0Um9vdCIsImdldENoYXJ0IiwiY2hhcnQiLCJ0cmFuc2xhdGVDaGlsZHJlbiIsInJlbmRlclZpc3VhbCIsImNyZWF0ZVZpc3VhbCIsImFkZFZpc3VhbCIsImNyZWF0ZUFuaW1hdGlvbiIsInJlbmRlckNvbXBsZXRlIiwidmlzdWFsIiwiY2hhcnRFbGVtZW50IiwiYXBwZW5kVmlzdWFsIiwiekluZGV4Iiwibm9jbGlwIiwiY2xpcFJvb3QiLCJzdGFja1Jvb3QiLCJzdGFja1Zpc3VhbCIsImhhc0hpZ2hsaWdodCIsImhpZ2hsaWdodCIsImNyZWF0ZUhpZ2hsaWdodCIsInRvZ2dsZUhpZ2hsaWdodCIsIl9oaWdobGlnaHQiLCJoaWdobGlnaHRWaXN1YWxBcmdzIiwic2VyaWVzIiwiY2F0ZWdvcnkiLCJzdGFja1ZhbHVlIiwicGVyY2VudGFnZSIsInJ1bm5pbmdUb3RhbCIsImNyZWF0ZUdyYWRpZW50T3ZlcmxheSIsImNyZWF0ZUdyYWRpZW50IiwiZ3JhZGllbnRzIiwiYmFja2dyb3VuZCIsImNyZWF0ZUJhY2tncm91bmQiLCJHcmFkaWVudHMiLCJncmFkaWVudCIsInNocmlua1RvRml0IiwicGFkZGluZ0JveCIsImNvbnRlbnRCb3giLCJoYXNCb3giLCJ2aXN1YWxTdHlsZSIsIl9pbml0RGlyZWN0aW9uIiwiZWxlbWVudEF4aXMiLCJncm91cFNpemVGaWVsZCIsImVsZW1lbnRTaXplRmllbGQiLCJncm91cFNwYWNpbmciLCJlbGVtZW50U3BhY2luZyIsInZTcGFjaW5nIiwicmVmbG93Q2hpbGRyZW4iLCJncm91cE9wdGlvbnMiLCJhbGlnblN0YXJ0IiwiZ3JvdXBFbGVtZW50cyIsIm1heEdyb3VwRWxlbWVudHNTaXplIiwiZ3JvdXBFbGVtZW50c1NpemUiLCJST1dTX1NQTElUX1JFR0VYIiwiX2luaXRDb250YWluZXIiLCJfYm94UmVmbG93IiwidmlzdWFsQ29udGV4dCIsInJvdGF0aW9uIiwidGFyZ2V0Qm94Iiwibm9ybWFsQm94Iiwicm90YXRlZEJveCIsInJvdGF0aW9uVHJhbnNmb3JtIiwidmlzdWFsT3B0aW9ucyIsImdldERlZmF1bHRWaXN1YWwiLCJidWlsZFRpdGxlIiwiYWxpZ25Sb3RhdGlvbiIsInJvdGF0aW9uT3JpZ2luIiwibGluZSIsIm1ham9yVGlja1NpemUiLCJtaW5vclRpY2tTaXplIiwibWlub3JUaWNrcyIsIm1pbm9yVGlja1R5cGUiLCJtYWpvclRpY2tzIiwibWFqb3JUaWNrVHlwZSIsIl9kZWZlckxhYmVscyIsImNyZWF0ZUxhYmVscyIsImNyZWF0ZVRpdGxlIiwiY3JlYXRlTm90ZXMiLCJtaXJyb3IiLCJheGlzQ3Jvc3NpbmdWYWx1ZSIsIm1ham9yR3JpZExpbmVzIiwibWlub3JHcmlkTGluZXMiLCJqdXN0aWZpZWQiLCJub3RlcyIsIl9hbGlnbkxpbmVzIiwibGFiZWxzUmFuZ2UiLCJsYWJlbHNDb3VudCIsImF1dG9Sb3RhdGVMYWJlbHMiLCJjcmVhdGVBeGlzTGFiZWwiLCJsaW5lQm94IiwidmlzdWFsU2l6ZSIsInBhcnNlTm90ZVZhbHVlIiwiY3JlYXRlUGxvdEJhbmRzIiwiY3JlYXRlTGluZSIsImdyaWRMaW5lc1Zpc3VhbCIsIl9ncmlkTGluZXMiLCJjcmVhdGVUaWNrcyIsIm1ham9yVW5pdCIsImdldE1ham9yVGlja1Bvc2l0aW9ucyIsImdldE1pbm9yVGlja1Bvc2l0aW9ucyIsIm1pbm9yVW5pdCIsIl9saW5lR3JvdXAiLCJnZXRBY3R1YWxUaWNrU2l6ZSIsIl9iYWNrZ3JvdW5kUGF0aCIsInBsb3RCYW5kcyIsInBsb3RBcmVhIiwiX3Bsb3RiYW5kR3JvdXAiLCJwYW5lIiwiYXhlcyIsImF4aXNYIiwiZ2V0U2xvdCIsImF4aXNZIiwiY3JlYXRlR3JpZExpbmVzIiwiYXJyYW5nZVRpdGxlIiwiYXJyYW5nZUxhYmVscyIsImFycmFuZ2VOb3RlcyIsImdldExhYmVsc1RpY2tQb3NpdGlvbnMiLCJsYWJlbFRpY2tJbmRleCIsInNob3VsZFJlbmRlck5vdGUiLCJheGlzTGFiZWxUZXh0Iiwic2xvdCIsImxpbWl0UmFuZ2UiLCJ2YWx1ZVJhbmdlIiwic2VyaWVzTWluIiwic2VyaWVzTWF4IiwiaWNvbiIsIm1hcmtlciIsIndyYXBwZXJCb3giLCJsaW5lUG9pbnRzIiwiZXZlbnRBcmdzIiwibGVhdmUiLCJfdW5zZXRBY3RpdmVQb2ludCIsInBvaW50RGF0YSIsImdldEVsZW1lbnQiLCJpbml0RGVmYXVsdHMiLCJzdGFydFZhbHVlIiwibmFycm93UmFuZ2UiLCJhdXRvQXhpc01pbiIsImF1dG9BeGlzTWF4Iiwicm91bmRUb01ham9yVW5pdCIsInRvdGFsTWluIiwidG90YWxNYXgiLCJ0b3RhbE1ham9yVW5pdCIsImdldERpdmlzaW9ucyIsImdldFRpY2tQb3NpdGlvbnMiLCJnZXRWYWx1ZSIsInRyYW5zbGF0ZVJhbmdlIiwic2NhbGVSYW5nZSIsInBhbiIsInBvaW50c1JhbmdlIiwiaXNWYWxpZFJhbmdlIiwiem9vbVJhbmdlIiwibG9nTWluIiwibG9nTWF4IiwidHJhdmVyc2VNYWpvclRpY2tzUG9zaXRpb25zIiwidHJhdmVyc2VNaW5vclRpY2tzUG9zaXRpb25zIiwiX2xpbmVPcHRpb25zIiwiX21pbm9ySW50ZXJ2YWxPcHRpb25zIiwibWlub3JTdGVwIiwiX3Rocm93TmVnYXRpdmVWYWx1ZXNFcnJvciIsIl9hdXRvTWF4IiwiX2F1dG9NaW4iLCJnbGFzcyIsInNoYXJwQmV2ZWwiLCJyb3VuZGVkQmV2ZWwiLCJyb3VuZGVkR2xhc3MiLCJzaGFycEdsYXNzIiwiZXhwb3J0UERGIiwiaW1hZ2VEYXRhVVJMIiwiV0VJR0hUIiwiRVhUUkVNVU1fQUxMT1dFRF9ERVZJQVRJT04iLCJyZW1vdmVEdXBsaWNhdGVzIiwidGFuZ2VudCIsImZpcnN0Q29udHJvbFBvaW50Iiwic2Vjb25kQ29udHJvbFBvaW50IiwiY29udHJvbFBvaW50cyIsImludmVydEF4aXMiLCJsaW5lRnVuY3Rpb24iLCJjYWxjdWxhdGVGdW5jdGlvbiIsImlzTGluZSIsImlzTW9ub3RvbmljQnlGaWVsZCIsInNpZ24iLCJyZXN0cmljdENvbnRyb2xQb2ludCIsIkFYSVNfTEFCRUxfQ0xJQ0siLCJDT09SRF9QUkVDSVNJT04iLCJERUZBVUxUX1BSRUNJU0lPTiIsIkRFRkFVTFRfV0lEVEgiLCJERUZBVUxUX0hFSUdIVCIsIkRFRkFVTFRfRk9OVCIsIklOSVRJQUxfQU5JTUFUSU9OX0RVUkFUSU9OIiwiTk9URV9DTElDSyIsIk5PVEVfSE9WRVIiLCJDTElQIiwiQXhpcyIsIkF4aXNMYWJlbCIsIkJveDJEIiwiQm94RWxlbWVudCIsIkNoYXJ0RWxlbWVudCIsIkN1cnZlUHJvY2Vzc29yIiwiRXhwb3J0TWl4aW4iLCJGbG9hdEVsZW1lbnQiLCJMb2dhcml0aG1pY0F4aXMiLCJOb3RlIiwiTnVtZXJpY0F4aXMiLCJQb2ludDJEIiwiUmluZyIsIlJvb3RFbGVtZW50IiwiU2VjdG9yIiwiU2hhcGVCdWlsZGVyIiwiU2hhcGVFbGVtZW50IiwiVGV4dEJveCIsIlRpdGxlIiwiYWxpZ25QYXRoVG9QaXhlbCIsImF1dG9Gb3JtYXQiLCJhdXRvTWFqb3JVbml0IiwiYm94RGlmZiIsImRhdGVDb21wYXJlciIsImRlY29kZUVudGl0aWVzIiwiZXZlbnRUYXJnZXRFbGVtZW50IiwiZ2V0U3BhY2luZyIsImludGVycG9sYXRlVmFsdWUiLCJtd0RlbHRhIiwicmVjdFRvQm94Iiwicm90YXRlUG9pbnQiLCJsZWdlbmQiLCJzZXJpZXNEZWZhdWx0cyIsImRvbnV0IiwidmVyaWNhbExpbmUiLCJzY2F0dGVyTGluZSIsImFyZWEiLCJtYXJrZXJzIiwidmVydGljYWxBcmVhIiwicmFkYXJMaW5lIiwicmFkYXJBcmVhIiwiY2FuZGxlc3RpY2siLCJfYnJpZ2h0bmVzcyIsImdhcCIsImRvd25Db2xvciIsIm9obGMiLCJidWJibGUiLCJiYXIiLCJjb2x1bW4iLCJyYW5nZUNvbHVtbiIsInJhbmdlQmFyIiwid2F0ZXJmYWxsIiwiaG9yaXpvbnRhbFdhdGVyZmFsbCIsImJ1bGxldCIsInZlcnRpY2FsQnVsbGV0IiwiYm94UGxvdCIsIm91dGxpZXJzRmllbGQiLCJtZWFuRmllbGQiLCJ3aGlza2VycyIsIm1lYW4iLCJtZWRpYW4iLCJmdW5uZWwiLCJjYXRlZ29yeUF4aXMiLCJheGlzRGVmYXVsdHMiLCJjcm9zc2hhaXIiLCJzaGFwZURlZmF1bHRzIiwic2VsZWN0YWJsZSIsImNvbm5lY3Rpb25EZWZhdWx0cyIsInRvb2xzIiwicmVnaXN0ZXJUaGVtZSIsImdhdWdlIiwiZGlhZ3JhbSIsInRyZWVNYXAiLCJ2ZXJ0aWNhbExpbmUiLCJ2ZXJ0aWNhbEJveFBsb3QiLCJwb2xhckFyZWEiLCJwb2xhckxpbmUiLCJpbmFjdGl2ZUl0ZW1zIiwiZXJyb3JCYXJzIiwicGllIiwic2NhdHRlciIsImNoYXJ0QXJlYSIsInNlcmllc0NvbG9ycyIsInJhbmdlUGxhY2Vob2xkZXJDb2xvciIsImNvbm5lY3RvckRlZmF1bHRzIiwidGh1bWIiLCJjb25uZWN0b3JzIiwibm4iLCJociIsInZyIiwieXIiLCJZbyIsIl9yIiwic28iLCJtciIsInhuIiwiSG4iLCJzZXRVVENNaW51dGVzIiwiUW8iLCJhbyIsIktvIiwic2V0U2Vjb25kcyIsIkVvIiwiWm8iLCJEbyIsInNldE1pbGxpc2Vjb25kcyIsIiRvIiwiaWkiLCJleGNsdWRlZCIsImRlcHRoIiwiQWkiLCJadCIsIk1pIiwidm8iLCJncm91cE5hbWVUZW1wbGF0ZSIsInZpc2libGVJbkxlZ2VuZCIsIlJpIiwiS3QiLCJfZ3JvdXBJeCIsIl9ncm91cFZhbHVlIiwiX2kiLCJJaSIsIm1uIiwiYmluZFBvaW50IiwidmFsdWVGaWVsZHMiLCJaZSIsInF0IiwiWXQiLCJRdCIsIiR0IiwiSnQiLCJlaSIsInRpIiwibmkiLCJvaSIsInJpIiwiYWkiLCJzaSIsImxpIiwiY2kiLCJoaSIsInBpIiwiZmkiLCJkaSIsImdpIiwibWkiLCJ4aSIsInZpIiwieWkiLCJiaSIsIndpIiwia2kiLCJTaSIsIkNpIiwiUGkiLCJUaSIsIlZpIiwiQmkiLCJMaSIsIkVpIiwiRGkiLCJ6aSIsIk9pIiwiRmkiLCJVaSIsIkhpIiwiTmkiLCJqaSIsIkdpIiwicWkiLCJZaSIsIlhpIiwiV2kiLCJaaSIsIktpIiwiUWkiLCIkaSIsIkppIiwiZW4iLCJ0biIsInJuIiwiYW4iLCJzbiIsImNuIiwiaG4iLCJ1biIsInBuIiwiZG4iLCJnbiIsInZuIiwieW4iLCJfbiIsImJuIiwid24iLCJBbiIsImtuIiwiU24iLCJDbiIsIlBuIiwiVG4iLCJSbiIsIkluIiwiVm4iLCJCbiIsIkxuIiwiRW4iLCJEbiIsIk1uIiwiem4iLCJPbiIsIkZuIiwiVW4iLCJObiIsImpuIiwiR24iLCJxbiIsIlluIiwiWG4iLCJXbiIsIlpuIiwiS24iLCJRbiIsIiRuIiwiSm4iLCJlbyIsImlvIiwibm8iLCJvbyIsInJvIiwibG8iLCJjbyIsImhvIiwidW8iLCJwbyIsImZvIiwiZ28iLCJtbyIsInhvIiwieW8iLCJfbyIsImJvIiwid28iLCJBbyIsImtvIiwiU28iLCJDbyIsIlBvIiwiVG8iLCJSbyIsIklvIiwiVm8iLCJCbyIsIkxvIiwiTW8iLCJ6byIsIk9vIiwiRm8iLCJVbyIsIkhvIiwiTm8iLCJqbyIsIkdvIiwicW8iLCJYbyIsIldvIiwiSm8iLCJ5ZWFycyIsIndlZWtzIiwiaG91cnMiLCJtaW51dGVzIiwic2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsIm5yIiwicnIiLCJhciIsInNyIiwibHIiLCJjciIsInVyIiwicHIiLCJmciIsImRyIiwiZ3IiLCJ4ciIsIndyIiwiQXIiLCJrciIsIlNyIiwiQ3IiLCJQciIsIlRyIiwiUnIiLCJfb3JpZ2luYWxPcHRpb25zIiwiX2luaXRUaGVtZSIsIl9pbml0U3VyZmFjZSIsIl9pbml0RGF0YVNvdXJjZSIsInRoZW1lIiwiX2FwcGx5RGVmYXVsdHMiLCJfZGF0YUNoYW5nZUhhbmRsZXIiLCJfb25EYXRhQ2hhbmdlZCIsIl9iaW5kQ2F0ZWdvcmllcyIsIl9oYXNEYXRhU291cmNlIiwiX3JlZHJhdyIsIl9hdHRhY2hFdmVudHMiLCJhdXRvQmluZCIsInNldERhdGFTb3VyY2UiLCJfaGFzRGF0YSIsInJlbmRlckFzIiwibmVnYXRpdmVWYWx1ZXMiLCJ2YWx1ZUF4aXMiLCJ4QXhpcyIsInlBeGlzIiwicGFuZXMiLCJwYW5uYWJsZSIsInpvb21hYmxlIiwiX2JpbmRTZXJpZXMiLCJyZWRyYXciLCJfbW9kZWwiLCJfcGxvdEFyZWEiLCJmaW5kUGFuZSIsImdldEF4aXMiLCJmaW5kQXhpc0J5TmFtZSIsImZpbmRQYW5lQnlOYW1lIiwiZmluZFBhbmVCeUluZGV4IiwiZmluZFNlcmllcyIsInNyY1NlcmllcyIsImZpbmRTZXJpZXNCeU5hbWUiLCJfY3JlYXRlU2VyaWVzIiwiZmluZFNlcmllc0J5SW5kZXgiLCJfc2VyaWVzT3B0aW9ucyIsImZpbHRlclBvaW50cyIsInBvaW50c0J5U2VyaWVzTmFtZSIsImNoYXJ0cyIsIl90b2dnbGVQb2ludHNIaWdobGlnaHQiLCJ0b2dnbGVQb2ludEhpZ2hsaWdodCIsIl9zaGFyZWRUb29sdGlwIiwiZmluZFBvaW50IiwiY2F0ZWdvcnlJeCIsImNhdGVnb3J5SW5kZXgiLCJwb2ludHNCeUNhdGVnb3J5SW5kZXgiLCJzaG93QXQiLCJfc3VyZmFjZVdyYXAiLCJfZ2V0TW9kZWwiLCJfZGVzdHJveVZpZXciLCJfY3JlYXRlVG9vbHRpcCIsIl9zZXR1cFNlbGVjdGlvbiIsIl9jcmVhdGVQYW5uYWJsZSIsIl9jcmVhdGVab29tU2VsZWN0aW9uIiwiX2NyZWF0ZU1vdXNld2hlZWxab29tIiwiX3Bhbm5hYmxlIiwiX3pvb21TZWxlY3Rpb24iLCJtb3VzZXdoZWVsIiwiX21vdXNld2hlZWxab29tIiwiX3Rvb2x0aXBsZWF2ZSIsImhpZGVDcm9zc2hhaXJzIiwiX21vZGVsT3B0aW9ucyIsIl9jcmVhdGVQbG90QXJlYSIsIl9zZWxlY3Rpb25zIiwiX3NlbGVjdFN0YXJ0SGFuZGxlciIsIl9zZWxlY3RTdGFydCIsIl9zZWxlY3RIYW5kbGVyIiwiX3NlbGVjdEVuZEhhbmRsZXIiLCJfc2VsZWN0RW5kIiwiY2F0ZWdvcmllcyIsImJhc2VVbml0Iiwid2Vla1N0YXJ0RGF5IiwiX21vdXNlb3ZlciIsIl9tb3VzZW91dCIsIl9tb3VzZXdoZWVsIiwiX3Nob3VsZEF0dGFjaE1vdXNlTW92ZSIsIl91c2VyRXZlbnRzIiwidGFwIiwiX3RhcCIsImdlc3R1cmVzdGFydCIsIl9nZXN0dXJlc3RhcnQiLCJnZXN0dXJlY2hhbmdlIiwiX2dlc3R1cmVjaGFuZ2UiLCJnZXN0dXJlZW5kIiwiX2dlc3R1cmVlbmQiLCJfZ2VzdHVyZURpc3RhbmNlIiwiX3pvb21pbmciLCJheGlzUmFuZ2VzIiwidXBkYXRlUmFuZ2VzIiwiX2RyYXdpbmdDaGFydEVsZW1lbnQiLCJfZXZlbnRDb29yZGluYXRlcyIsImJhY2tncm91bmRDb250YWluc1BvaW50IiwiX3N0YXJ0TmF2aWdhdGlvbiIsIl9uYXZTdGF0ZSIsIl9lbmROYXZpZ2F0aW9uIiwiX213VGltZW91dCIsInRvdGFsRGVsdGEiLCJmaW5kUG9pbnRQYW5lIiwiX3N1cHByZXNzSG92ZXIiLCJfZ2V0Q2hhcnRFbGVtZW50IiwiYWxpYXNGb3IiLCJfdG9Nb2RlbENvb3JkaW5hdGVzIiwiX2FjdGl2ZVBvaW50IiwiX3Byb3BhZ2F0ZUNsaWNrIiwiX3N0YXJ0SG92ZXIiLCJfc3VwcmVzc01vdXNlbGVhdmUiLCJpc0hpZ2hsaWdodGVkIiwidG9vbHRpcFRyYWNraW5nIiwiX21vdXNlTW92ZVRyYWNraW5nIiwiZ2V0TmVhcmVzdFBvaW50Iiwic2VyaWVzSXgiLCJfdHJhY2tDcm9zc2hhaXJzIiwiX3RyYWNrU2hhcmVkVG9vbHRpcCIsImNyb3NzaGFpcnMiLCJwb2ludENhdGVnb3J5SW5kZXgiLCJfdG9vbHRpcENhdGVnb3J5SXgiLCJjYXRlZ29yeVBvaW50cyIsIl9zb3VyY2VTZXJpZXMiLCJfaXNCaW5kYWJsZSIsIl9hcHBseUdyb3VwVmlzaWJsZVN0YXRlIiwiX2RlZmVyUmVkcmF3IiwiX2dyb3VwVmlzaWJsZVN0YXRlIiwiX3NhdmVHcm91cFZpc2libGVTdGF0ZSIsIl9jbGVhclJlZHJhd1RpbWVvdXQiLCJfcmVkcmF3VGltZW91dCIsIl9iaW5kQ2F0ZWdvcnlBeGlzIiwiX2JpbmRDYXRlZ29yeUF4aXNGcm9tU2VyaWVzIiwiY2F0ZWdvcnlGaWVsZCIsIl9sZWdlbmRJdGVtQ2xpY2siLCJfbm9UcmFuc2l0aW9uc1JlZHJhdyIsIl9sZWdlbmRJdGVtSG92ZXIiLCJwb2ludHNCeVNlcmllc0luZGV4IiwiUERGTWl4aW4iLCJfcmVnaXN0cnkiLCJzZXJpZXNUeXBlcyIsIl92YWx1ZUZpZWxkcyIsIl9vdGhlckZpZWxkcyIsIl9udWxsVmFsdWUiLCJfdW5kZWZpbmVkVmFsdWUiLCJfbWFrZVZhbHVlIiwiY2Fub25pY2FsRmllbGRzIiwib3RoZXJGaWVsZHMiLCJfYmluZEZyb21BcnJheSIsInNvdXJjZUZpZWxkcyIsIl9iaW5kRnJvbU9iamVjdCIsInRleHRCb3giLCJhYm92ZUF4aXMiLCJhbGlnblRvQ2xpcEJveCIsImNyZWF0ZUNvbnRhaW5lciIsImNyZWF0ZU1hcmtlciIsImNyZWF0ZUxhYmVsIiwibWFya2VyT3B0aW9ucyIsIm1hcmtlckNvbG9yIiwiX2l0ZW1PdmVybGF5Iiwic2VyaWVzSW5kZXgiLCJwb2ludEluZGV4IiwiY3JlYXRlSXRlbXMiLCJvZmZzZXRYIiwib2Zmc2V0WSIsIml0ZW0iLCJpc1ZlcnRpY2FsIiwiaGFzSXRlbXMiLCJjb250YWluZXJDdXN0b21SZWZsb3ciLCJjb250YWluZXJSZWZsb3ciLCJfaW5pdEZpZWxkcyIsIl9pbml0Q2F0ZWdvcmllcyIsIl90aWNrcyIsIm91dE9mUmFuZ2VNaW4iLCJvdXRPZlJhbmdlTWF4Iiwic3JjQ2F0ZWdvcmllcyIsInJhbmdlSW5kaWNlcyIsInRvdGFsUmFuZ2UiLCJ0b3RhbFJhbmdlSW5kaWNlcyIsIl9zZXJpZXNNYXgiLCJnZXRTY2FsZSIsImhpZGVPdXRPZlJhbmdlTGFiZWxzIiwiZ2V0VGlja3MiLCJfaGFzaCIsImdldENhdGVnb3J5Iiwicm91bmRUb0Jhc2VVbml0IiwidXNlclNldEJhc2VVbml0IiwidXNlclNldEJhc2VVbml0U3RlcCIsImJhc2VVbml0U3RlcCIsImRlZmF1bHRCYXNlVW5pdCIsImF1dG9CYXNlVW5pdCIsIl9ncm91cHNTdGFydCIsImdyb3VwQ2F0ZWdvcmllcyIsImRhdGVGb3JtYXRzIiwiYXV0b0Jhc2VVbml0U3RlcHMiLCJtYXhEYXRlR3JvdXBzIiwiX2NhdGVnb3J5UmFuZ2UiLCJfcmFuZ2UiLCJjYXRlZ29yaWVzUmFuZ2UiLCJfcm91bmRUb1RvdGFsU3RlcCIsImN1cnJlbnRSYW5nZSIsImRhdGVzUmFuZ2UiLCJ0b3RhbExpbWl0cyIsIl90aW1lU2NhbGUiLCJfY29sbGFwc2UiLCJheGlzQ3Jvc3NpbmdWYWx1ZXMiLCJhcHBseURlZmF1bHRzIiwidGltZVVuaXRzIiwiY3JlYXRlTm90ZSIsIm5vdGVUZXh0Iiwibm90ZSIsIl9yZW5kZXJlZCIsImVycm9yQmFyIiwiZm9ybWF0VmFsdWUiLCJmb3JtYXRQb2ludFZhbHVlIiwicmVjdFZpc3VhbCIsImNyZWF0ZVJlY3QiLCJnZXRCb3JkZXJDb2xvciIsImhpZ2hsaWdodFZpc3VhbCIsInRvb2x0aXBBbmNob3IiLCJjbGlwQm94IiwiaXNTdGFja2VkIiwib3ZlcmxhcHNCb3giLCJmcm9tU2NhbGUiLCJpbml0R2xvYmFsUmFuZ2VzIiwicGVyY2VudFJlZ2V4Iiwic3RhbmRhcmREZXZpYXRpb25SZWdleCIsInZhbHVlR2V0dGVyIiwiY3JlYXRlVmFsdWVHZXR0ZXIiLCJnZXRBdmVyYWdlIiwiZ2V0U3RhbmRhcmREZXZpYXRpb24iLCJsb3ciLCJnbG9iYWxSYW5nZSIsImdldFN0YW5kYXJkRXJyb3IiLCJnZXRFcnJvclJhbmdlIiwic2VyaWVzQ2F0ZWdvcnlBeGlzIiwidmFsdWVBeGlzUmFuZ2VzIiwic2VyaWVzUG9pbnRzIiwic2VyaWVzT3B0aW9ucyIsIl9ldmFsU2VyaWVzIiwiaW52ZXJ0QXhlcyIsInRyYXZlcnNlRGF0YVBvaW50cyIsImFkZFZhbHVlIiwicG9pbnRPcHRpb25zIiwicG9pbnRUeXBlIiwicGxvdFZhbHVlIiwiaXNTdGFja2VkMTAwIiwicGxvdFJhbmdlIiwic2VyaWVzVmFsdWVBeGlzIiwiY2F0ZWdvcnlBeGlzQ3Jvc3NpbmdWYWx1ZSIsInN0YWNrTGltaXRzIiwidXBkYXRlU3RhY2tSYW5nZSIsImVycm9yVG90YWxzIiwibmVnYXRpdmUiLCJwb3NpdGl2ZSIsImFkZEVycm9yQmFyIiwic2VyaWVzRXJyb3JSYW5nZXMiLCJhZGRQb2ludEVycm9yQmFyIiwic3RhY2tlZEVycm9yUmFuZ2UiLCJ1cGRhdGVSYW5nZSIsImNyZWF0ZVBvaW50IiwiZXZhbFBvaW50T3B0aW9ucyIsIm5hbWVkVmFsdWVBeGVzIiwiY2F0ZWdvcnlTbG90cyIsInBvaW50VmFsdWUiLCJjYXRlZ29yeVNsb3QiLCJwb2ludFNsb3QiLCJyZWZsb3dQb2ludCIsInJlZmxvd0NhdGVnb3JpZXMiLCJheGlzSW5kZXgiLCJfb3V0T2ZSYW5nZUNhbGxiYWNrIiwiX2JpbmRQb2ludCIsIl9iaW5kQ2FjaGUiLCJjbHVzdGVyVHlwZSIsInN0YWNrVHlwZSIsIm5lZ2F0aXZlQ29sb3IiLCJnZXRTdGFja1dyYXAiLCJfc3RhY2tHcm91cCIsIl9zZXRBbmltYXRpb25PcHRpb25zIiwiX3NldENoaWxkcmVuQW5pbWF0aW9uIiwibGFiZWxGcm9tIiwiX2NyZWF0ZUxhYmVsIiwibGFiZWxUbyIsInBsb3RMaW1pdHMiLCJ3cmFwRGF0YSIsImJvZHlWaXN1YWwiLCJlbmRDYXBzIiwiZ2V0Q2Fwc1dpZHRoIiwiY3JlYXRlRGVmYXVsdFZpc3VhbCIsInNlcmllc0F4ZXMiLCJtYXJrZXJCb3JkZXIiLCJtYXJrZXJCb3giLCJfY2hpbGRCb3giLCJyZWZsb3dMYWJlbCIsInJlbmRlclNlZ21lbnRzIiwiX3NlZ21lbnRzIiwic29ydFBvaW50cyIsInNlcmllc01pc3NpbmdWYWx1ZXMiLCJjcmVhdGVTZWdtZW50IiwiX2FkZFNlZ21lbnQiLCJtaXNzaW5nVmFsdWVzIiwiYW5pbWF0aW9uUG9pbnRzIiwiX3NldEVuZCIsInNldFgiLCJjYWxjdWxhdGVTdGVwUG9pbnRzIiwic3RhY2tQb2ludHMiLCJfbGluZVBvaW50cyIsImNyZWF0ZUFyZWEiLCJfZ2FwU3RhY2tQb2ludHMiLCJfc3RhY2tQb2ludHMiLCJfcHJldmlvdXNTZWdtZW50UG9pbnQiLCJfY3JlYXRlR2FwU3RhY2tQb2ludCIsInByZXZTZWdtZW50Iiwic3Ryb2tlU2VnbWVudHMiLCJfc3Ryb2tlU2VnbWVudHMiLCJjcmVhdGVGaWxsIiwiY3JlYXRlU3Ryb2tlIiwiY2xvc2VGaWxsIiwieEF4aXNSYW5nZXMiLCJ5QXhpc1JhbmdlcyIsImNyZWF0ZU1pc3NpbmdWYWx1ZSIsIm5hbWVkWEF4ZXMiLCJuYW1lZFlBeGVzIiwicG9pbnRJeCIsIl9tYXhTaXplIiwidXBkYXRlQnViYmxlc1NpemUiLCJtaW5TaXplIiwibWF4U2l6ZSIsInJlYWxCb2R5IiwibGluZXMiLCJyZWZsb3dOb3RlIiwiX21haW5WaXN1YWwiLCJtYWluVmlzdWFsIiwiY3JlYXRlT3ZlcmxheSIsImNyZWF0ZUJvZHkiLCJjcmVhdGVMaW5lcyIsImRyYXdMaW5lcyIsInNwbGl0VmFsdWUiLCJsb3dlciIsInExIiwicTMiLCJ1cHBlciIsImZpbHRlck91dGxpZXJzIiwib3V0bGllcnMiLCJleHRyZW1lcyIsImJveFNsb3QiLCJyZWZsb3dCb3hTbG90Iiwid2hpc2tlclNsb3QiLCJyZWZsb3dXaGlza2VyU2xvdCIsIm1lYW5Qb2ludHMiLCJjYWxjTWVhblBvaW50cyIsIndoaXNrZXJQb2ludHMiLCJjYWxjV2hpc2tlclBvaW50cyIsIm1lZGlhblBvaW50cyIsImNhbGNNZWRpYW5Qb2ludHMiLCJyZW5kZXJPdXRsaWVycyIsInJlZmxvd091dGxpZXJzIiwic2VjdG9yIiwiYW5pbWF0aW9uRGVsYXkiLCJjcmVhdGVTZWdtZW50VmlzdWFsIiwic2luZ2xlU2VnbWVudCIsImNyZWF0ZUxlZ2VuZEl0ZW0iLCJsZWdlbmRJdGVtcyIsImV4cGxvZGUiLCJldmFsU2VnbWVudE9wdGlvbnMiLCJzZXJpZXNDb25maWdzIiwibGFiZWxDb21wYXJhdG9yIiwibGVmdExhYmVsc1JlZmxvdyIsInJpZ2h0TGFiZWxzUmVmbG93IiwiZGlzdGFuY2VCZXR3ZWVuTGFiZWxzIiwiZGlzdHJpYnV0ZUxhYmVscyIsIl90YWtlRGlzdGFuY2UiLCJyZWZsb3dMYWJlbHMiLCJoQWxpZ25MYWJlbCIsIl9jb25uZWN0b3JMaW5lcyIsInNlcmllc0lkIiwicG9pbnRJbkNpcmNsZSIsImhvbGVTaXplIiwiY3JlYXRlU2VnbWVudHMiLCJzdW1tYXJ5IiwiY2hhcnRDb250YWluZXIiLCJhcHBlbmRBeGlzIiwiYXBwZW5kQ2hhcnQiLCJyZW1vdmVBeGlzIiwicmVtb3ZlQ2hhcnQiLCJjaGFydHNCb3giLCJzaG91bGRDbGlwIiwiX2NsaXBCb3giLCJ1bmNsaXBMYWJlbHMiLCJpbml0U2VyaWVzIiwiY3JlYXRlUGFuZXMiLCJjcmVhdGVDcm9zc2hhaXJzIiwicGFuZUluZGV4IiwicmVtb3ZlQ3Jvc3NoYWlycyIsImFkZFRvTGVnZW5kIiwiZ3JvdXBBeGVzIiwiYW55IiwiZ3JvdXBTZXJpZXNCeVBhbmUiLCJzZXJpZXNQYW5lTmFtZSIsImZpbHRlclZpc2libGVTZXJpZXMiLCJyZWZsb3dQYW5lcyIsInJlZmxvd0F4ZXMiLCJyZWZsb3dDaGFydHMiLCJhbGlnbkF4aXNUbyIsImFsaWduQXhlcyIsIl9vdmVybGFwIiwiX21pcnJvcmVkIiwic2hyaW5rQXhpc1dpZHRoIiwic2hyaW5rQXhpc0hlaWdodCIsImZpdEF4ZXMiLCJyZWZsb3dQYW5lQXhlcyIsImF1dG9Sb3RhdGVBeGlzTGFiZWxzIiwiYmFja2dyb3VuZEJveCIsImNoYXJ0c0JveGVzIiwiYWRkQmFja2dyb3VuZFBhdGhzIiwiX2JnVmlzdWFsIiwicGFuZUJ5UG9pbnQiLCJfZGlzcGF0Y2hFdmVudCIsIm5hbWVkQ2F0ZWdvcnlBeGVzIiwidmFsdWVBeGlzUmFuZ2VUcmFja2VyIiwic3RhY2sxMDAiLCJjcmVhdGVDYXRlZ29yeUF4ZXMiLCJhZ2dyZWdhdGVDYXRlZ29yaWVzIiwiY3JlYXRlQ2F0ZWdvcnlBeGVzTGFiZWxzIiwiY3JlYXRlQ2hhcnRzIiwiY3JlYXRlVmFsdWVBeGVzIiwiZ3JvdXBTZXJpZXNCeUNhdGVnb3J5QXhpcyIsImNyZWF0ZUNoYXJ0R3JvdXAiLCJjcmVhdGVBcmVhQ2hhcnQiLCJjcmVhdGVCYXJDaGFydCIsImNyZWF0ZVJhbmdlQmFyQ2hhcnQiLCJjcmVhdGVCdWxsZXRDaGFydCIsImNyZWF0ZUNhbmRsZXN0aWNrQ2hhcnQiLCJjcmVhdGVCb3hQbG90Q2hhcnQiLCJjcmVhdGVPSExDQ2hhcnQiLCJjcmVhdGVXYXRlcmZhbGxDaGFydCIsImNyZWF0ZUxpbmVDaGFydCIsImFnZ3JlZ2F0ZVNlcmllcyIsImZpbHRlclNlcmllcyIsIl9vdXRPZlJhbmdlTWluUG9pbnQiLCJfb3V0T2ZSYW5nZU1heFBvaW50IiwiYWdncmVnYXRlUG9pbnRzIiwic3RhY2thYmxlQ2hhcnRPcHRpb25zIiwiYXhpc1JlcXVpcmVzUm91bmRpbmciLCJhZ2dyZWdhdGVkQXhpcyIsImlzSnVzdGlmaWVkIiwicG9pbnRQYW5lIiwidXBkYXRlQXhpc09wdGlvbnMiLCJ4QXhpc1JhbmdlVHJhY2tlciIsInlBeGlzUmFuZ2VUcmFja2VyIiwiY3JlYXRlU2NhdHRlckNoYXJ0IiwiY3JlYXRlU2NhdHRlckxpbmVDaGFydCIsImNyZWF0ZUJ1YmJsZUNoYXJ0IiwiY3JlYXRlQXhlcyIsImNyZWF0ZVhZQXhpcyIsImNyZWF0ZVBpZUNoYXJ0IiwiY3JlYXRlRG9udXRDaGFydCIsIl9wb2ludHMiLCJfbW9iaWxlU2Nyb2xsZXIiLCJfY2xlYXJTaG93VGltZW91dCIsIl9lbnN1cmVFbGVtZW50Iiwic2hvd1RpbWVvdXQiLCJfcGFkZGluZyIsIl9jaGFydFBhZGRpbmciLCJtb3ZhYmxlIiwiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJXaWR0aCIsIl9oaWRlRWxlbWVudCIsIl9wb2ludENvbnRlbnQiLCJ4TG93IiwieEhpZ2giLCJ5TG93IiwieUhpZ2giLCJfcG9pbnRBbmNob3IiLCJzaGFyZWRUZW1wbGF0ZSIsImNhdGVnb3J5Rm9ybWF0IiwiX2NvbnRlbnQiLCJfc2xvdEFuY2hvciIsIl9kZWZhdWx0QW5jaG9yIiwiY2F0ZWdvcnlUZXh0Iiwic3RpY2t5TW9kZSIsIm1vdmVMaW5lIiwiZ2V0Qm94IiwiZ2V0QW5jaG9yIiwic3VtT3JOdWxsIiwiYXZnIiwiZ2V0VmFsdWVBeGlzIiwiX2RhdGVBeGlzIiwibGVmdE1hc2siLCJyaWdodE1hc2siLCJsZWZ0SGFuZGxlIiwicmlnaHRIYW5kbGUiLCJfaW5kZXgiLCJfcHJlc3MiLCJfc3RhdGUiLCJfcmFuZ2VFdmVudEFyZ3MiLCJtb3ZlVGFyZ2V0IiwiX3Nsb3QiLCJfYWN0aXZlIiwiX3BhbkF4ZXMiLCJfbWFycXVlZSIsIl96b29tUGFuZSIsIl96b29tUGFuZUNsaXBCb3giLCJfc2VsZWN0aW9uUG9zaXRpb24iLCJfdXBkYXRlQXhpc1JhbmdlcyIsIl9zZXJpZXNGaWVsZHMiLCJfc2VyaWVzIiwiX2JpbmRlciIsImNhbm9uaWNhbE5hbWUiLCJfYmluZFBvaW50cyIsIl9iaW5kRmllbGQiLCJiYWNrZ3JvdW5kVmlzdWFsIiwiX2NoYXJ0IiwiX3BhbmUiLCJjaGFydHNWaXN1YWwiLCJfYXhpcyIsIl9vcHRpb25zIiwiX2ZpbHRlclBvaW50cyIsIl9jbGVhckZpZWxkcyIsInRvZ2dsZVZpc2liaWxpdHkiLCJfZmlsdGVyRGF0YSIsImVhc2VPdXRFbGFzdGljIiwiYXNpbiIsImVycm9yTG93IiwiZXJyb3JIaWdoIiwiRVFVQUxMWV9TUEFDRURfU0VSSUVTIiwiQWdncmVnYXRlcyIsIkFyZWFDaGFydCIsIkFyZWFTZWdtZW50IiwiQXhpc0dyb3VwUmFuZ2VUcmFja2VyIiwiQmFyIiwiQmFyQ2hhcnQiLCJCYXJMYWJlbCIsIkJ1YmJsZUNoYXJ0IiwiQnVsbGV0IiwiQnVsbGV0Q2hhcnQiLCJDYW5kbGVzdGlja0NoYXJ0IiwiQ2FuZGxlc3RpY2siLCJDYXRlZ29yaWNhbENoYXJ0IiwiQ2F0ZWdvcmljYWxFcnJvckJhciIsIkNhdGVnb3JpY2FsUGxvdEFyZWEiLCJDYXRlZ29yeUF4aXMiLCJDaGFydEF4aXMiLCJDaGFydENvbnRhaW5lciIsIkNoYXJ0UGFuZSIsIkNoYXJ0UGxvdEFyZWEiLCJDaGFydFNlcmllcyIsIkNsaXBBbmltYXRpb24iLCJDbHVzdGVyTGF5b3V0IiwiQ3Jvc3NoYWlyIiwiQ3Jvc3NoYWlyVG9vbHRpcCIsIkRhdGVDYXRlZ29yeUF4aXMiLCJEYXRlVmFsdWVBeGlzIiwiRGVmYXVsdEFnZ3JlZ2F0ZXMiLCJEb251dENoYXJ0IiwiRG9udXRQbG90QXJlYSIsIkRvbnV0U2VnbWVudCIsIkVycm9yQmFyQmFzZSIsIkVycm9yUmFuZ2VDYWxjdWxhdG9yIiwiSGlnaGxpZ2h0IiwiU2hhcmVkVG9vbHRpcCIsIkxlZ2VuZCIsIkxlZ2VuZEl0ZW0iLCJMZWdlbmRMYXlvdXQiLCJMaW5lQ2hhcnQiLCJMaW5lUG9pbnQiLCJMaW5lU2VnbWVudCIsIlBhbmUiLCJQaWVBbmltYXRpb24iLCJQaWVDaGFydCIsIlBpZUNoYXJ0TWl4aW4iLCJQaWVQbG90QXJlYSIsIlBpZVNlZ21lbnQiLCJQbG90QXJlYUJhc2UiLCJQbG90QXJlYUV2ZW50c01peGluIiwiUGxvdEFyZWFGYWN0b3J5IiwiUG9pbnRFdmVudHNNaXhpbiIsIlJhbmdlQmFyIiwiUmFuZ2VCYXJDaGFydCIsIlNjYXR0ZXJDaGFydCIsIlNjYXR0ZXJFcnJvckJhciIsIlNjYXR0ZXJMaW5lQ2hhcnQiLCJTZWxlY3Rpb24iLCJTZXJpZXNBZ2dyZWdhdG9yIiwiU2VyaWVzQmluZGVyIiwiU3BsaW5lU2VnbWVudCIsIlNwbGluZUFyZWFTZWdtZW50IiwiU3RhY2tXcmFwIiwiT0hMQ0NoYXJ0IiwiT0hMQ1BvaW50IiwiV2F0ZXJmYWxsQ2hhcnQiLCJXYXRlcmZhbGxTZWdtZW50IiwiWFlQbG90QXJlYSIsIk1vdXNld2hlZWxab29tIiwiWm9vbVNlbGVjdGlvbiIsIlBhbm5hYmxlIiwiYWRkRHVyYXRpb24iLCJhcmVOdW1iZXJzIiwiYXhpc0dyb3VwQm94IiwiY2F0ZWdvcmllc0NvdW50IiwiY2VpbERhdGUiLCJjb3VudE51bWJlcnMiLCJlbnN1cmVUcmVlIiwiZmxvb3JEYXRlIiwiZmlsdGVyU2VyaWVzQnlUeXBlIiwiaGFzVmFsdWUiLCJsdGVEYXRlSW5kZXgiLCJldmFsT3B0aW9ucyIsInNlcmllc1RvdGFsIiwic2luZ2xlSXRlbU9yQXJyYXkiLCJzb3J0RGF0ZXMiLCJzdGFydE9mV2VlayIsInRyYW5zcG9zZSIsInRvRGF0ZSIsInRvVGltZSIsInVuaXF1ZURhdGVzIiwibWFqb3JHcmlkTGluZUFuZ2xlcyIsInJlbmRlck1ham9yR3JpZExpbmVzIiwibWlub3JHcmlkTGluZUFuZ2xlcyIsInJlbmRlck1pbm9yR3JpZExpbmVzIiwicmVuZGVyR3JpZExpbmVzIiwicmFkaXVzQ2FsbGJhY2siLCJncmlkTGluZUFuZ2xlcyIsImludGVydmFscyIsImludGVydmFsQW5nbGUiLCJtYWpvckludGVydmFscyIsIm1pbm9ySW50ZXJ2YWxzIiwibWFqb3JBbmdsZXMiLCJwbG90QmFuZFNsb3QiLCJwb2xhckF4aXMiLCJwbG90QmFuZFBvaW50cyIsInJhZGFyTWFqb3JHcmlkTGluZVBvc2l0aW9ucyIsInJhZGFyTWlub3JHcmlkTGluZVBvc2l0aW9ucyIsImF4aXNUeXBlIiwiaXNSZXZlcnNlZCIsIl9wb2xhckF4aXNDZW50ZXIiLCJfaGFzTWlzc2luZ1ZhbHVlc0dhcCIsImNyZWF0ZVBvbGFyQXhpcyIsImNyZWF0ZVZhbHVlQXhpcyIsInZhbHVlQXhpc09wdGlvbnMiLCJheGlzQm94IiwiX2hhc0JhckNoYXJ0cyIsIl9pc1N0YWNrZWQxMDAiLCJjaGFydE9wdGlvbnMiLCJQb2xhckFyZWFDaGFydCIsIlBvbGFyQXhpcyIsIlBvbGFyTGluZUNoYXJ0IiwiUG9sYXJQbG90QXJlYSIsIlJhZGFyQXJlYUNoYXJ0IiwiUmFkYXJCYXJDaGFydCIsIlJhZGFyQ2F0ZWdvcnlBeGlzIiwiUmFkYXJDbHVzdGVyTGF5b3V0IiwiUmFkYXJMaW5lQ2hhcnQiLCJSYWRhck51bWVyaWNBeGlzIiwiUmFkYXJQbG90QXJlYSIsIlNwbGluZVBvbGFyQXJlYVNlZ21lbnQiLCJTcGxpbmVSYWRhckFyZWFTZWdtZW50IiwiUmFkYXJTdGFja0xheW91dCIsImNyZWF0ZUZ1bm5lbENoYXJ0IiwibmVja1JhdGlvIiwiZHluYW1pY0hlaWdodCIsImR5bmFtaWNTbG9wZSIsInNlZ21lbnRTcGFjaW5nIiwibGFiZWxQYWRkaW5nIiwiY3JlYXRlUGF0aCIsImhpZ2hsaWdodE92ZXJsYXkiLCJzdHJva2VPcGFjaXR5Iiwic3Ryb2tlV2lkdGgiLCJmaWxsT3BhY2l0eSIsImNyZWF0ZVBvbHlsaW5lIiwiRnVubmVsQ2hhcnQiLCJGdW5uZWxTZWdtZW50IiwiX3N0YXJ0VmFsdWUiLCJlbmRWYWx1ZSIsIl9lbmRWYWx1ZSIsInNob3VsZEhpZGUiLCJfc2hvdWxkSGlkZSIsInByZXBhcmUiLCJfZGlyZWN0aW9uIiwiX3JldmVyc2UiLCJzY2FsZXgiLCJzY2FsZXkiLCJzY2FsZTNkIiwidHJhbnNsYXRleCIsInRyYW5zbGF0ZXkiLCJ0cmFuc2xhdGUzZCIsInNrZXciLCJwcm9wZXJ0eSIsIm1vZGlmaWVyIiwiaG9yaXpvbnRhbCIsImV4Y2x1c2l2ZSIsImVhc2UiLCJzZXRSZXZlcnNlIiwiYWRkUmVzdG9yZVByb3BlcnRpZXMiLCJyZXN0b3JlQ2FsbGJhY2siLCJfYWRkaXRpb25hbEVmZmVjdHMiLCJfZHVyYXRpb24iLCJjb21wb3NpdGVSdW4iLCJfY29tcGxldGUiLCJkaXZpc29yIiwicHJldmlvdXNEaXZpc29yIiwiZmlsbFNjYWxlIiwiX2NvbnRhaW5lciIsIl9jbGlwSW5IYWxmIiwiZmFjZSIsIl9mYWNlIiwiY2xpcEluSGFsZiIsInRlbXBvcmFyeSIsImJhY2siLCJzdGF0aWNQYWdlIiwidHVybmluZ1BhZ2UiLCJ0cmFuc2Zvcm1TdHlsZSIsIl9iZWZvcmUiLCJfYWZ0ZXIiLCJfcHJldmlvdXMiLCJfdHJhbnNpdGlvbkNsYXNzIiwiYmVmb3JlVHJhbnNpdGlvbiIsImFmdGVyVHJhbnNpdGlvbiIsIl9ib3RoIiwiX2NvbnRhaW5lckNsYXNzIiwiY29tcGxldGVQcm94eSIsImlzQWJzb2x1dGUiLCJfdGlja1Byb3h5IiwiX3RpY2siLCJfc3RhcnRlZCIsIm9uRW5kIiwib25DYW5jZWwiLCJ0aW1lUGFzc2VkIiwic3RhcnREYXRlIiwiX2Vhc2VQcm94eSIsIm1vdmVBeGlzIiwiZWFzZU91dEV4cG8iLCJlYXNlT3V0QmFjayIsIlRyYW5zaXRpb24iLCJjcmVhdGVFZmZlY3QiLCJmaXRTY2FsZSIsInRhcmdldEVsZW1lbnQiLCJfcmVsZWFzZSIsImNhcHR1cmVOZXh0IiwiY2FuY2VsQ2FwdHVyZSIsImZvcmNlZEVuYWJsZWQiLCJzY3JvbGxTaXplIiwibWFrZVZpcnR1YWwiLCJ2aXJ0dWFsIiwiX3ZpcnR1YWxNaW4iLCJfdmlydHVhbE1heCIsInZpcnR1YWxTaXplIiwib3V0T2ZCb3VuZHMiLCJmb3JjZUVuYWJsZWQiLCJnZXRUb3RhbCIsInJlc2NhbGUiLCJtaW5TY2FsZSIsImNlbnRlck9mZnNldCIsImZvcmNlZE1pblNjYWxlIiwibWF4U2NhbGUiLCJjZW50ZXJDb29yZGluYXRlcyIsImRpbWVuc2lvbiIsImRyYWdNb3ZlIiwicmVzaXN0YW5jZSIsInRyYW5zbGF0ZUF4aXMiLCJlbGFzdGljIiwiZ2VzdHVyZSIsInNjYWxlV2l0aCIsIndlYmtpdFRyYW5zZm9ybU9yaWdpbiIsIl9zYXZlQ29vcmRpbmF0ZXMiLCJzY2FsZVRvIiwiY29vcmRpbmF0ZXMiLCJkcm9wVGFyZ2V0IiwiX292ZXIiLCJfb3V0IiwiX2Ryb3AiLCJkcm9wcGVkIiwiZGVzdHJveUdyb3VwIiwiX2RyYWciLCJfY2FuY2VsIiwiX2FmdGVyRW5kSGFuZGxlciIsIl9hZnRlckVuZCIsIl9jYXB0dXJlRXNjYXBlIiwiY3Vyc29yT2Zmc2V0IiwiaWdub3JlIiwiaG9sZFRvRHJhZyIsImF1dG9TY3JvbGwiLCJjYW5jZWxIb2xkIiwiX3VwZGF0ZUhpbnQiLCJib3VuZGFyaWVzIiwiaGludE9mZnNldCIsImhpbnQiLCJfc2hvdWxkSWdub3JlVGFyZ2V0IiwiY3VycmVudFRhcmdldE9mZnNldCIsInNjb3BlRnJvbSIsIl9lbGVtZW50VW5kZXJDdXJzb3IiLCJfY3Vyc29yRWxlbWVudCIsIl9zY3JvbGxhYmxlUGFyZW50IiwiX2xhc3RFdmVudCIsIl9wcm9jZXNzTW92ZW1lbnQiLCJfc2Nyb2xsQ29tcGVuc3RhdGlvbiIsIl9zY3JvbGxWZWxvY2l0eSIsIl9zY3JvbGxJbnRlcnZhbCIsIl93aXRoRHJvcFRhcmdldCIsIl9hdXRvU2Nyb2xsIiwiaW5pdGlhbFRhcmdldCIsIlRhcENhcHR1cmUiLCJjb250YWluZXJCb3VuZGFyaWVzIiwiUGFuZURpbWVuc2lvbnMiLCJNb3ZhYmxlIiwiRHJhZ2dhYmxlIiwidXRpbHMiLCJhdXRvU2Nyb2xsVmVsb2NpdHkiLCJzY3JvbGxhYmxlVmlld1BvcnQiLCJmaW5kU2Nyb2xsYWJsZVBhcmVudCIsInRhcENhcHR1cmUiLCJmcmVlemUiLCJfbW92ZVRvIiwicGFuZUF4aXMiLCJfc25hcEJhY2siLCJ2ZWxvY2l0eU11bHRpcGxpZXIiLCJmcmljdGlvbiIsImRlc3RpbmF0aW9uIiwiX3VwZGF0ZUNvb3JkaW5hdGVzIiwic2V0Q29vcmRpbmF0ZXMiLCJzZXRDYWxsYmFjayIsInNjcm9sbE1vdmFibGUiLCJhbHdheXNWaXNpYmxlIiwiX25hdGl2ZSIsInNjcm9sbEVsZW1lbnQiLCJmaXhlZENvbnRhaW5lciIsImF2b2lkU2Nyb2xsaW5nIiwibW91c2V3aGVlbFNjcm9sbGluZyIsInpvb21TbmFwQmFjayIsImFuaW1hdGVkU2Nyb2xsZXIiLCJwdWxsZWQiLCJfaW5pdEF4aXMiLCJfd2hlZWxFbmQiLCJfd2hlZWwiLCJfd2hlZWxZIiwicHVsbFRvUmVmcmVzaCIsIl9pbml0UHVsbFRvUmVmcmVzaCIsIl93aGVlbFNjcm9sbCIsIl93aGVlbFRpbWVvdXQiLCJwdWxsT2Zmc2V0IiwidmlzaWJsZVNjcm9sbEhpbnRzIiwicHVsbFRlbXBsYXRlIiwicmVsZWFzZVRlbXBsYXRlIiwicmVmcmVzaFRlbXBsYXRlIiwiY29udGVudFJlc2l6ZWQiLCJfc2NhbGUiLCJ6b29tT3V0IiwiYW5pbWF0ZWRTY3JvbGxUbyIsInB1bGxIYW5kbGVkIiwicmVmcmVzaEhpbnQiLCJoaW50Q29udGFpbmVyIiwieWluZXJ0aWEiLCJ4aW5lcnRpYSIsIl9wYW5lQ2hhbmdlIiwiX2RyYWdFbmQiLCJ0b29sYmFyIiwib3ZlcmZsb3dBbmNob3IiLCJvdmVyZmxvd0NvbnRhaW5lciIsInJlZ2lzdGVyQ29tcG9uZW50IiwiYWRkT3ZlcmZsb3dBdHRyIiwiYWRkVWlkQXR0ciIsImFkZElkQXR0ciIsImFkZE92ZXJmbG93SWRBdHRyIiwidHdpbiIsInJlc2l6YWJsZSIsIkl0ZW0iLCJ1c2VCdXR0b25UYWciLCJwcmltYXJ5IiwidG9nZ2xhYmxlIiwiYWRkVG9Hcm91cCIsImNsaWNrSGFuZGxlciIsInRvZ2dsZUhhbmRsZXIiLCJnZXRQYXJlbnRHcm91cCIsImlzQ2hpbGQiLCJfYWRkR3JhcGhpY3MiLCJzcHJpdGVDc3NDbGFzcyIsImltYWdlVXJsIiwiQnV0dG9uIiwic2hvd1RleHQiLCJoYXNJY29uIiwic2hvd0ljb24iLCJUb29sQmFyQnV0dG9uIiwib3ZlcmZsb3dIaWRkZW4iLCJPdmVyZmxvd0J1dHRvbiIsImNyZWF0ZUJ1dHRvbnMiLCJidXR0b25zIiwiQnV0dG9uR3JvdXAiLCJidXR0b25Hcm91cCIsIlRvb2xCYXJCdXR0b25Hcm91cCIsIk92ZXJmbG93QnV0dG9uR3JvdXAiLCJtYWluQnV0dG9uIiwiYXJyb3dCdXR0b24iLCJwb3B1cEVsZW1lbnQiLCJjcmVhdGVNZW51QnV0dG9ucyIsImNyZWF0ZVBvcHVwIiwiX25hdmlnYXRhYmxlIiwibWFpbiIsInNwbGl0QnV0dG9uIiwia2VuZG9Qb3B1cCIsIm1lbnVCdXR0b25zIiwicm9vdFVpZCIsIl9pc1J0bCIsImFjdGl2YXRlIiwiVG9vbEJhclNwbGl0QnV0dG9uIiwiT3ZlcmZsb3dTcGxpdEJ1dHRvbiIsInNlcGFyYXRvciIsIlRlbXBsYXRlSXRlbSIsIk92ZXJmbG93VGVtcGxhdGVJdGVtIiwiX2dyb3VwcyIsIl9yZW5kZXJPdmVyZmxvdyIsIm92ZXJmbG93VXNlckV2ZW50cyIsIl90b2dnbGVPdmVyZmxvdyIsIl9yZXNpemVIYW5kbGVyIiwiX2J1dHRvbkNsaWNrIiwicmVsZWFzZSIsIl90b2dnbGVPdmVyZmxvd0FuY2hvciIsIm92ZXJmbG93VGVtcGxhdGUiLCJfc2hyaW5rIiwiX2dldEl0ZW0iLCJnZXRTZWxlY3RlZEZyb21Hcm91cCIsIl90b2dnbGUiLCJfa2V5ZG93biIsIl9nZXRQcmV2Rm9jdXNhYmxlIiwiX3N0cmV0Y2giLCJfbWFya1Zpc2libGVzIiwiX2NoaWxkcmVuV2lkdGgiLCJfaGlkZUl0ZW0iLCJfc2hvd0l0ZW0iLCJpc05lYXJaZXJvIiwiaXNEZWZpbmVkIiwiaXNVbmRlZmluZWQiLCJpc09iamVjdCIsImlzU3RyaW5nIiwiaXNCb29sZWFuIiwiaXNUeXBlIiwiaXNFbXB0eSIsInNpbXBsZUV4dGVuZCIsImluaXRBcnJheSIsInNlcmlhbGl6ZVBvaW50cyIsImRlc2VyaWFsaXplUG9pbnRzIiwicmFuZG9tSW50ZWdlciIsIkRGVCIsImdldE1hdHJpeEFuZ2xlIiwiZ2V0TWF0cml4U2NhbGluZyIsImZpbmRBbmdsZSIsImZvbGQiLCJiaXNvcnQiLCJhZGRSYW5nZSIsImVhc2VJbk91dCIsImFkYXB0ZXJzIiwidGltZXJEZWxlZ2F0ZSIsIm9uVGltZXJFdmVudCIsImFkZEFkYXB0ZXIiLCJvbkNvbXBsZXRlIiwicmVtb3ZlSGFuZGxlciIsImNhbGxlciIsIm9uU3RlcCIsInNlZWtUbyIsInNlZWtGcm9tVG8iLCJpbnRlcnZhbElkIiwiaW5pdFN0YXRlIiwicHJvcGFnYXRlIiwiVXRpbHMiLCJSYW5nZSIsIlRpY2tlciIsInBsdXMiLCJtaW51cyIsInRpbWVzIiwibm9ybWFsaXplIiwibGVuZ3RoU3F1YXJlZCIsIm1pZGRsZU9mIiwidG9Qb2xhciIsImlzT25MaW5lIiwiaW5mbGF0ZSIsInJvdGF0ZWRCb3VuZHMiLCJyb3RhdGVkUG9pbnRzIiwiRW1wdHkiLCJyZWN0V2l0aExpbmUiLCJyZWN0cyIsIl9zaW5nbGVBbGlnbiIsIl9sZWZ0IiwiX2NlbnRlciIsIl9yaWdodCIsInN0cmV0Y2giLCJfdG9wIiwiX21pZGRsZSIsIl9ib3R0b20iLCJhcHBseVJlY3QiLCJmcm9tU1ZHTWF0cml4IiwiZnJvbU1hdHJpeFZlY3RvciIsImZyb21MaXN0IiwidHJhbnNsYXRpb24iLCJzY2FsaW5nIiwiZnJvbU1hdHJpeCIsIl9kaXN0YW5jZVRvTGluZVNxdWFyZWQiLCJkaXN0YW5jZVRvTGluZSIsImRpc3RhbmNlVG9Qb2x5bGluZSIsIl9idWNrZXRzIiwiX2NyZWF0ZUdldEJ1Y2tldCIsIl9idWNrZXRFeGlzdHMiLCJjb250YWluc0tleSIsIl9oYXNoZXMiLCJfaGFzaFN0cmluZyIsIl9vYmplY3RIYXNoSWQiLCJfaGFzaElkIiwiX2hhc2hUYWJsZSIsImZvckVhY2hWYWx1ZSIsImZvckVhY2hLZXkiLCJlbnF1ZXVlIiwibGlua3MiLCJvdXRnb2luZyIsImluY29taW5nIiwid2VpZ2h0IiwiYXNzb2NpYXRlZFNoYXBlIiwiYm91bmRzIiwic2hvcnRGb3JtIiwiaXNWaXJ0dWFsIiwiaXNJc29sYXRlZCIsImlzTGlua2VkVG8iLCJnZXRDb21wbGVtZW50IiwiZ2V0Q2hpbGRyZW4iLCJnZXRQYXJlbnRzIiwiYmFsYW5jZSIsImFkamFjZW50VG8iLCJyZW1vdmVMaW5rIiwiaGFzTGlua1RvIiwiZGVncmVlIiwiaW5jaWRlbnRXaXRoIiwiZ2V0TGlua3NXaXRoIiwiZ2V0TmVpZ2hib3JzIiwiYXNzb2NpYXRlZENvbm5lY3Rpb24iLCJnZXRDb21tb25Ob2RlIiwiaXNCcmlkZ2luZyIsImdldE5vZGVzIiwiY2hhbmdlU291cmNlIiwiY2hhbmdlVGFyZ2V0IiwiY2hhbmdlc05vZGVzIiwiZGlyZWN0VG8iLCJjcmVhdGVSZXZlcnNlRWRnZSIsInJldmVyc2VkIiwiX25vZGVNYXAiLCJfaGFzQ2FjaGVkUmVsYXRpb25zaGlwcyIsImNhY2hlUmVsYXRpb25zaGlwcyIsImFzc2lnbkxldmVscyIsImdldENvbm5lY3RlZENvbXBvbmVudHMiLCJjb21wb25lbnRJbmRleCIsInNldEl0ZW1JbmRpY2VzIiwiX2NvbGxlY3RDb25uZWN0ZWROb2RlcyIsImFkZE5vZGVBbmRPdXRnb2luZ3MiLCJjYWxjQm91bmRzIiwiZ2V0U3Bhbm5pbmdUcmVlIiwiX2FkZE5vZGUiLCJhZGRMaW5rIiwidHJlZUxldmVscyIsInRha2VSYW5kb21Ob2RlIiwiaXNIZWFsdGh5IiwiaGFzTm9kZSIsImFkZEV4aXN0aW5nTGluayIsImdldE5vZGUiLCJhZGROb2RlIiwicmVtb3ZlQWxsTGlua3MiLCJoYXNMaW5rIiwiX3JlbW92ZU5vZGUiLCJyZW1vdmVOb2RlIiwiYXJlQ29ubmVjdGVkIiwibm9kZU1hcCIsImxpbmtNYXAiLCJsaW5lYXJpemUiLCJkZXB0aEZpcnN0VHJhdmVyc2FsIiwiX2RmdEl0ZXJhdG9yIiwiYnJlYWR0aEZpcnN0VHJhdmVyc2FsIiwiX3N0cm9uZ2x5Q29ubmVjdGVkQ29tcG9uZW50cyIsImZpbmRDeWNsZXMiLCJpc0FjeWNsaWMiLCJpc1N1YkdyYXBoIiwibWFrZUFjeWNsaWMiLCJQcmVkZWZpbmVkIiwiRWlnaHRHcmFwaCIsIk1pbmRtYXAiLCJUaHJlZUdyYXBoIiwiQmluYXJ5VHJlZSIsImNyZWF0ZUJhbGFuY2VkVHJlZSIsIkxpbmVhciIsIlRyZWUiLCJGb3Jlc3QiLCJjcmVhdGVCYWxhbmNlZEZvcmVzdCIsIldvcmtmbG93IiwiR3JpZCIsIkdyYXBoIiwiX2FkZFNoYXBlIiwidW5kb2FibGUiLCJhZGRTaGFwZSIsIl9hZGRDb25uZWN0aW9uIiwiY29ubmVjdCIsImNyZWF0ZURpYWdyYW1Gcm9tR3JhcGgiLCJTcHJpbmdMYXlvdXQiLCJsYXlvdXRHcmFwaCIsImxpbWl0VG9WaWV3IiwiY3JlYXRlUmFuZG9tQ29ubmVjdGVkR3JhcGgiLCJyYW5kb21EaWFncmFtIiwiSW50ZXJzZWN0IiwiR2VvbWV0cnkiLCJSZWN0QWxpZ24iLCJNYXRyaXhWZWN0b3IiLCJub3JtYWxWYXJpYWJsZSIsInJhbmRvbUlkIiwiRGljdGlvbmFyeSIsIkhhc2hUYWJsZSIsIlF1ZXVlIiwiU2V0IiwiTGluayIsIlBhdGhEZWZpbmVyIiwibm9uZSIsImFycm93U3RhcnQiLCJmaWxsZWRDaXJjbGUiLCJhcnJvd0VuZCIsIk1hcmtlcnMiLCJ0b01hdHJpeFZlY3RvciIsIkxlbmd0aCIsIl90cmFuc2Zvcm0iLCJfcmVuZGVyVHJhbnNmb3JtIiwiX3NldFNjYWxlIiwiX29yaWdpbldpZHRoIiwiX29yaWdpbkhlaWdodCIsIl9zZXRUcmFuc2xhdGUiLCJfaW5pdFNpemUiLCJhdXRvU2l6ZSIsIl91cGRhdGVTaXplIiwiX2RpZmZOdW1lcmljT3B0aW9ucyIsIl9vcmlnaW5TaXplIiwiZHJhd2luZ0NvbnRhaW5lciIsImRyYXdpbmdFbGVtZW50IiwiX2hvdmVyIiwiX21lYXN1cmVkIiwiX2JvdW5kaW5nQm94IiwiX2ZpbGwiLCJfc3Ryb2tlIiwiX3RleHRDb2xvciIsIl9mb250IiwiX2luaXRUZXh0IiwiZm9udFN0eWxlIiwiX2luaXRQYXRoIiwiX2RyYXdQYXRoIiwiX3RyYW5zZm9ybVRvUGF0aCIsInBvc2l0aW9uTWFya2VyIiwiX2dldFBhdGgiLCJfbm9ybWFsaXplTWFya2VyT3B0aW9ucyIsInN0YXJ0Q2FwIiwiZW5kQ2FwIiwiX3JlbW92ZU1hcmtlciIsIl9tYXJrZXJzIiwiX2NyZWF0ZU1hcmtlcnMiLCJfY3JlYXRlTWFya2VyIiwiX3Bvc2l0aW9uTWFya2VyIiwiX2NhcE1hcCIsIl9yZWRyYXdNYXJrZXIiLCJfcmVkcmF3TWFya2VycyIsIl9jcmVhdGVFbGVtZW50cyIsIl9zZXREYXRhIiwiX3VwZGF0ZVBhdGgiLCJfcG9pbnRzRGlmZmVyIiwiX2luaXRJbWFnZSIsIl9jaGlsZHJlbkNoYW5nZSIsInRvRnJvbnQiLCJ0b0JhY2siLCJfcmVvcmRlckNoaWxkcmVuIiwidG9JbmRleCIsIl9pbmNsdWRlSW5CQm94IiwiX2luaXRDaXJjbGUiLCJfY2lyY2xlIiwiX3RyYW5zbGF0ZSIsIl92aWV3Qm94IiwiZGlmZk51bWVyaWNPcHRpb25zIiwiU2NhbGUiLCJUcmFuc2xhdGlvbiIsIlJvdGF0aW9uIiwiUmVjdGFuZ2xlIiwiQ2FudmFzIiwiTGluZSIsIk1hcmtlckJhc2UiLCJBcnJvd01hcmtlciIsIkNpcmNsZU1hcmtlciIsIlBvbHlsaW5lIiwiQ29tcG9zaXRlVHJhbnNmb3JtIiwiVGV4dEJsb2NrIiwiVmlzdWFsQmFzZSIsImRyYWciLCJhcnJvdyIsImdyaXAiLCJjcm9zcyIsInNvdXRoIiwiZWFzdCIsIndlc3QiLCJub3J0aCIsInJvd3Jlc2l6ZSIsImNvbHJlc2l6ZSIsIkN1cnNvcnMiLCJsYXlvdXRTdGF0ZSIsImdldFNoYXBlQnlJZCIsInN1YmplY3RzIiwiZnJvbXMiLCJ0b3MiLCJfaW5pdGlhbFN0YXRlIiwiX2ZpbmFsU3RhdGUiLCJ1bmRvIiwic2V0U3RhdGUiLCJyZWRvIiwidW5pdHMiLCJfcmVkb1NvdXJjZSIsIl9yZWRvVGFyZ2V0IiwiX3VuZG9Tb3VyY2UiLCJfdW5kb1RhcmdldCIsIl91cGRhdGVDb25uZWN0b3IiLCJ1cGRhdGVNb2RlbCIsImNvbm5lY3Rpb24iLCJ0YXJnZXRDb25uZWN0b3IiLCJ1bmRvU3RhdGVzIiwicmVkb1N0YXRlcyIsImFkb3JuZXIiLCJsYXlvdXQiLCJyZWZyZXNoQm91bmRzIiwiZGVzZWxlY3QiLCJmaW5hbFBvcyIsInVuZG9Sb3RhdGVzIiwicmVkb1JvdGF0ZXMiLCJyZWRvQW5nbGUiLCJfYW5nbGUiLCJfaW5uZXJCb3VuZHMiLCJfaW5pdGlhbGl6ZSIsImluZGljZXMiLCJfdG9JbmRleCIsImNhcGFjaXR5IiwiYmVnaW4iLCJjb21wb3NpdGUiLCJjb21taXQiLCJfcmVzdGFydCIsImFkZENvbXBvc2l0ZUl0ZW0iLCJ0b29sU2VydmljZSIsInRyeUFjdGl2YXRlIiwiZ2V0Q3Vyc29yIiwic2Nyb2xsZXIiLCJzY3JvbGxhYmxlIiwibW92YWJsZUNhbnZhcyIsImhvdmVyZWRJdGVtIiwiaG92ZXJlZEFkb3JuZXIiLCJfaG92ZXJlZENvbm5lY3RvciIsIl9zdG9yZVBhbiIsIl9wYW4iLCJzZWxlY3RTaW5nbGUiLCJfaGl0VGVzdCIsIl9yZXNpemluZ0Fkb3JuZXIiLCJpc0RyYWdIYW5kbGUiLCJjb25uZWN0aW9ucyIsInN0YXJ0UG9pbnQiLCJ1bmRvUmVkb1NlcnZpY2UiLCJfZ2V0Q3Vyc29yIiwiaXNTZWxlY3RlZCIsInNlbGVjdEFyZWEiLCJfY3JlYXRlQ29ubmVjdGlvbiIsIl9jIiwiY29ubmVjdGlvbkhhbmRsZSIsIl9jb25uZWN0aW9uTWFuaXB1bGF0aW9uIiwiX3JlbW92ZUhvdmVyIiwiYWN0aXZlQ29ubmVjdGlvbiIsIl9jYWNoZWRUb3VjaFRhcmdldCIsInNvdXJjZUNvbm5lY3RvciIsIlNoYXBlIiwiZ2V0Q29ubmVjdG9yIiwiX3N5bmNDb25uZWN0aW9uQ2hhbmdlcyIsIl9jb25uZWN0b3JzQWRvcm5lciIsImhhbmRsZU5hbWUiLCJhY3RpdmVUb29sIiwiX3VwZGF0ZUhvdmVyZWRJdGVtIiwiX2FjdGl2YXRlVG9vbCIsIl91cGRhdGVDdXJzb3IiLCJrZXlEb3duIiwibWV0YUtleSIsIl90cmlnZ2VyUmVtb3ZlIiwiX3N5bmNDaGFuZ2VzIiwiX2Rlc3Ryb3lUb29sQmFyIiwiX2Rpc2NhcmROZXdDb25uZWN0aW9uIiwic2VsZWN0QWxsIiwid2hlZWwiLCJ6b29tUmF0ZSIsIm1ldGEiLCJ6b29tTWluIiwiem9vbU1heCIsInNldFRvb2wiLCJhZGRUb1NlbGVjdGlvbiIsIm5ld0Nvbm5lY3Rpb24iLCJkaXNhYmxlZFNoYXBlIiwiX3Zpc2libGUiLCJfc2VsZWN0ZWRJdGVtcyIsIkNvbm5lY3Rpb24iLCJfaGl0VGVzdEl0ZW1zIiwiX2hpdFRlc3RFbGVtZW50cyIsIm1haW5MYXllciIsImhpdFRlc3QiLCJnZXRCb3VuZHMiLCJhbGxQb2ludHMiLCJyb3V0ZSIsIlNBTUVfU0lERV9ESVNUQU5DRV9SQVRJTyIsInJvdXRlUG9pbnRzIiwiX2Nvbm5lY3RvclBvaW50cyIsIl9mbG9hdGluZ1BvaW50cyIsIl9yZXNvbHZlZFNvdXJjZUNvbm5lY3RvciIsIl9yZXNvbHZlZFRhcmdldENvbm5lY3RvciIsInNvdXJjZVBvaW50IiwiX2Nvbm5lY3RvclNpZGVzIiwiYm91bmRzUG9pbnQiLCJzZWNvbmRhcnlTaWduIiwiX2Nvbm5lY3RvclNpZGUiLCJfc2FtZVNpZGVEaXN0YW5jZSIsIl9zdGFydEhvcml6b250YWwiLCJfYWRvcm5lcnMiLCJfdHMiLCJzcFZpc3VhbCIsImVwVmlzdWFsIiwiX2luaXRpYWxTb3VyY2UiLCJfaW5pdGlhbFRhcmdldCIsIm1vZGVsVG9MYXllciIsIl9yZWZyZXNoSGFuZGxlciIsIl9jbGVhclZpc3VhbCIsIl9rZWVwQ2FjaGVkVG91Y2hUYXJnZXQiLCJfbWFuaXB1bGF0aW5nIiwiX2luaXRTZWxlY3Rpb24iLCJfY3JlYXRlSGFuZGxlcyIsIl9pbnRlcm5hbENoYW5nZSIsIl9yb3RhdGVkSGFuZGxlciIsIl9yZXNpemFibGUiLCJfaGFuZGxlT3B0aW9ucyIsIl9ib3VuZHMiLCJfZ2V0SGFuZGxlQm91bmRzIiwiX3JvdGF0aW9uT2Zmc2V0IiwiX3N0YXJ0QW5nbGUiLCJfcm90YXRlcyIsIl9wb3NpdGlvbnMiLCJpbml0aWFsUm90YXRlcyIsImluaXRpYWxTdGF0ZXMiLCJfc3AiLCJfY3AiLCJfbHAiLCJzaGFwZVN0YXRlcyIsIl90cnVuY2F0ZUFuZ2xlIiwiX3JvdGF0aW5nIiwic2hvdWxkU25hcCIsIl90cnVuY2F0ZURpc3RhbmNlIiwiX2Rpc3BsYWNlQm91bmRzIiwibWluSGVpZ2h0IiwiX3RydW5jYXRlUG9zaXRpb25Ub0d1aWRlcyIsInJ1bGVyIiwidHJ1bmNhdGVQb3NpdGlvblRvR3VpZGVzIiwiX3RydW5jYXRlU2l6ZVRvR3VpZGVzIiwidHJ1bmNhdGVTaXplVG9HdWlkZXMiLCJzbmFwT3B0aW9ucyIsInNuYXAiLCJfZGlmZlN0YXRlcyIsIl9zeW5jU2hhcGVDaGFuZ2VzIiwiYm91bmRpbmdCb3giLCJyb3RhdGlvblRodW1iIiwiX3JvdGF0aW9uVGh1bWJCb3VuZHMiLCJfZXAiLCJfYWRvcm4iLCJtb2RlbFRvVmlldyIsIl92aXN1YWxCb3VuZHMiLCJDb21wb3NpdGVVbml0IiwiVHJhbnNmb3JtVW5pdCIsIlBhblVuZG9Vbml0IiwiQWRkU2hhcGVVbml0IiwiQWRkQ29ubmVjdGlvblVuaXQiLCJEZWxldGVTaGFwZVVuaXQiLCJEZWxldGVDb25uZWN0aW9uVW5pdCIsIkNvbm5lY3Rpb25FZGl0QWRvcm5lciIsIkNvbm5lY3Rpb25Ub29sIiwiQ29ubmVjdG9yVmlzdWFsIiwiVW5kb1JlZG9TZXJ2aWNlIiwiUmVzaXppbmdBZG9ybmVyIiwiU2VsZWN0b3IiLCJUb29sU2VydmljZSIsIkNvbm5lY3RvcnNBZG9ybmVyIiwiTGF5b3V0VW5kb1VuaXQiLCJDb25uZWN0aW9uRWRpdFVuaXQiLCJUb0Zyb250VW5pdCIsIlRvQmFja1VuaXQiLCJDb25uZWN0aW9uUm91dGVyQmFzZSIsIlBvbHlsaW5lUm91dGVyIiwiQ2FzY2FkaW5nUm91dGVyIiwiU2VsZWN0aW9uVG9vbCIsIlNjcm9sbGVyVG9vbCIsIlBvaW50ZXJUb29sIiwiQ29ubmVjdGlvbkVkaXRUb29sIiwiUm90YXRlVW5pdCIsImRlZmF1bHRPcHRpb25zIiwic3VidHlwZSIsInJvb3RzIiwibm9kZURpc3RhbmNlIiwiaXRlcmF0aW9ucyIsImhvcml6b250YWxTZXBhcmF0aW9uIiwidmVydGljYWxTZXBhcmF0aW9uIiwidW5kZXJuZWF0aFZlcnRpY2FsVG9wT2Zmc2V0IiwidW5kZXJuZWF0aEhvcml6b250YWxPZmZzZXQiLCJ1bmRlcm5lYXRoVmVydGljYWxTZXBhcmF0aW9uIiwiZ3JpZCIsImNvbXBvbmVudFNwYWNpbmdYIiwiY29tcG9uZW50U3BhY2luZ1kiLCJsYXllclNlcGFyYXRpb24iLCJsYXllcmVkSXRlcmF0aW9ucyIsInN0YXJ0UmFkaWFsQW5nbGUiLCJlbmRSYWRpYWxBbmdsZSIsInJhZGlhbFNlcGFyYXRpb24iLCJyYWRpYWxGaXJzdExldmVsU2VwYXJhdGlvbiIsImtlZXBDb21wb25lbnRzSW5PbmVSYWRpYWxMYXlvdXQiLCJpZ25vcmVDb250YWluZXJzIiwibGF5b3V0Q29udGFpbmVyQ2hpbGRyZW4iLCJpZ25vcmVJbnZpc2libGUiLCJhbmltYXRlVHJhbnNpdGlvbnMiLCJncmlkTGF5b3V0Q29tcG9uZW50cyIsIm1vdmVUb09mZnNldCIsImN1cnJlbnRIb3Jpem9udGFsT2Zmc2V0IiwidHJhbnNmZXJPcHRpb25zIiwic2hhcGVNYXAiLCJlZGdlcyIsImVkZ2VNYXAiLCJmaW5hbE5vZGVzIiwiZmluYWxMaW5rcyIsImlnbm9yZWRDb25uZWN0aW9ucyIsImlnbm9yZWRTaGFwZXMiLCJoeXBlck1hcCIsImh5cGVyVHJlZSIsImZpbmFsR3JhcGgiLCJfcmVub3JtYWxpemVTaGFwZXMiLCJfcmVub3JtYWxpemVDb25uZWN0aW9ucyIsIm1hcENvbm5lY3Rpb24iLCJtYXBTaGFwZSIsImdldEVkZ2UiLCJsaXN0VG9Sb290IiwicGFyZW50Q29udGFpbmVyIiwiZmlyc3ROb25JZ25vcmFibGVDb250YWluZXIiLCJpc0NvbnRhaW5lciIsIl9pc0lnbm9yYWJsZUl0ZW0iLCJpc0NvbnRhaW5lckNvbm5lY3Rpb24iLCJpc0Rlc2NlbmRhbnRPZiIsImlzSWdub3JhYmxlSXRlbSIsImlzQ29sbGFwc2VkIiwiX2lzVmlzaWJsZSIsIl9pc1RvcCIsImlzU2hhcGVNYXBwZWQiLCJsZWFzdENvbW1vbkFuY2VzdG9yIiwiX2lzQ29sbGFwc2VkIiwiYXJlQ29ubmVjdGVkQWxyZWFkeSIsIkxheW91dFN0YXRlIiwiZ3JhcGgiLCJ0ZW1wZXJhdHVyZSIsIl9leHBlY3RlZEJvdW5kcyIsInJlZmluZVN0YWdlIiwiX3JlcHVsc2lvbiIsIl9hdHRyYWN0aW9uIiwiX3NoYWtlIiwiX0ludmVyc2VTcXVhcmVGb3JjZSIsIl9TcXVhcmVGb3JjZSIsImxheW91dFN3aXRjaCIsImxheW91dExlZnQiLCJzZXRDaGlsZHJlbkRpcmVjdGlvbiIsInNldENoaWxkcmVuTGF5b3V0IiwiVHJlZURpcmVjdGlvbiIsImFycmFuZ2UiLCJsYXlvdXRSaWdodCIsImxheW91dFVwIiwibGF5b3V0RG93biIsInRyZWVEaXJlY3Rpb24iLCJsYXlvdXRSYWRpYWxUcmVlIiwicHJldmlvdXNSb290IiwibWF4RGVwdGgiLCJjYWxjdWxhdGVBbmd1bGFyV2lkdGgiLCJyYWRpYWxMYXlvdXQiLCJBbmdsZSIsInRpcE92ZXJUcmVlIiwic2VjdG9yQW5nbGUiLCJzb3J0Q2hpbGRyZW4iLCJub3JtYWxpemVBbmdsZSIsInNldFBvbGFyTG9jYXRpb24iLCJCb3VuZGluZ1JlY3RhbmdsZSIsImNoaWxkcmVuTGF5b3V0IiwiQW5nbGVUb1BhcmVudCIsIlNlY3RvckFuZ2xlIiwidGlwT3ZlclRyZWVTdGFydExldmVsIiwibGF5b3V0Q29tcG9uZW50cyIsImdldFRyZWUiLCJ0cmVlIiwiZ2V0VHJlZUZvclJvb3QiLCJfaW5pdFJ1bnRpbWVQcm9wZXJ0aWVzIiwibGF5ZXIiLCJkb3duc3RyZWFtTGlua0NvdW50IiwidXBzdHJlYW1MaW5rQ291bnQiLCJ1QmFyeUNlbnRlciIsImRCYXJ5Q2VudGVyIiwidXBzdHJlYW1Qcmlvcml0eSIsImRvd25zdHJlYW1Qcmlvcml0eSIsImdyaWRQb3NpdGlvbiIsIl9wcmVwYXJlIiwibGF5ZXJzIiwibGlua3NUbyIsIl9kdW1taWZ5IiwiX29wdGltaXplQ3Jvc3NpbmdzIiwiX3N3YXBQYWlycyIsImFycmFuZ2VOb2RlcyIsIl9tb3ZlVGhpbmdzQXJvdW5kIiwiX2RlZHVtbWlmeSIsInNldE1pbkRpc3QiLCJsYXllckluZGV4IiwibWluRGlzdGFuY2VzIiwiZ2V0TWluRGlzdCIsInBsYWNlTGVmdFRvUmlnaHQiLCJwbGFjZUxlZnQiLCJQT1NJVElWRV9JTkZJTklUWSIsInJpZ2h0U2libGluZyIsIm5vZGVMZWZ0Q2xhc3MiLCJ1cE5vZGVzIiwiZG93bk5vZGVzIiwiaW50RGl2IiwicGxhY2VSaWdodFRvTGVmdCIsInBsYWNlUmlnaHQiLCJORUdBVElWRV9JTkZJTklUWSIsImxlZnRTaWJsaW5nIiwibm9kZVJpZ2h0Q2xhc3MiLCJfZ2V0TGVmdFdpbmciLCJjb21wdXRlQ2xhc3NlcyIsIl9nZXRSaWdodFdpbmciLCJfbm9kZXNJbkxpbmsiLCJfaXNWZXJ0aWNhbExheW91dCIsIl9pc0hvcml6b250YWxMYXlvdXQiLCJfaXNJbmNyZWFzaW5nTGF5b3V0IiwiTUlOX1ZBTFVFIiwiX2dyaWRQb3NpdGlvbkNvbXBhcmVyIiwiX2ZpcnN0VmlydHVhbE5vZGUiLCJfc2VxdWVuY2VyIiwibmV4dFZpcnR1YWxOb2RlIiwiYWRqdXN0RGlyZWN0aW9ucyIsImdldE5laWdoYm9yT25MYXllciIsIl9zZXF1ZW5jZVNpbmdsZSIsImNvbWJpbmVTZXF1ZW5jZXMiLCJfcG9zaXRpb25EZXNjZW5kaW5nQ29tcGFyZXIiLCJfcG9zaXRpb25Bc2NlbmRpbmdDb21wYXJlciIsIl9nZXRDb21wb3NpdGUiLCJsYXlvdXRMYXllciIsImNhbGNCYXJ5Q2VudGVyIiwibW92ZVJpZ2h0IiwibW92ZUxlZnQiLCJjYWxjRG93bkRhdGEiLCJjYWxjVXBEYXRhIiwibWFwVmlydHVhbE5vZGUiLCJub2RlVG9MaW5rTWFwIiwibGlua1RvTm9kZU1hcCIsImRlcHRoT2ZEdW1taW5lc3MiLCJvcHRpbWl6ZUxheWVyQ3Jvc3NpbmdzIiwiY29tcGFyZUJ5SW5kZXgiLCJjb3VudExpbmtzQ3Jvc3NpbmdCZXR3ZWVuVHdvTGF5ZXJzIiwiVHJlZUxheW91dCIsIkdyYXBoQWRhcHRlciIsIkxheWVyZWRMYXlvdXQiLCJMYXlvdXRCYXNlIiwiZnJvbUNvbm5lY3RvciIsImZyb21YIiwiZnJvbVkiLCJ0b0Nvbm5lY3RvciIsInRvWCIsInRvWSIsImtlbmRvRHJvcERvd25MaXN0IiwiZGF0YVZhbHVlRmllbGQiLCJkYXRhVGV4dEZpZWxkIiwib3B0aW9uTGFiZWwiLCJ2YWx1ZVByaW1pdGl2ZSIsImNhbGxiYWNrcyIsIkRlZmF1bHRDb25uZWN0b3JzIiwiZ2V0UG9zaXRpb24iLCJpbWFnZUNsYXNzIiwiaWNvbkNsYXNzIiwic2VyaWFsaXphYmxlIiwiX2NvbnRlbnRWaXN1YWwiLCJfdXBkYXRlQ29udGVudFZpc3VhbCIsIl9jcmVhdGVDb250ZW50VmlzdWFsIiwiX2NhblNlbGVjdCIsInNoYXBlSWQiLCJjb25uZWN0b3IiLCJ1cGRhdGVPcHRpb25zRnJvbU1vZGVsIiwiY3JlYXRlU2hhcGVWaXN1YWwiLCJ1cGRhdGVCb3VuZHMiLCJfY3JlYXRlQ29ubmVjdG9ycyIsIl9zZXRPcHRpb25zRnJvbU1vZGVsIiwicmVkcmF3VmlzdWFsIiwiX2lzRWRpdGFibGUiLCJfcmVkcmF3VmlzdWFsIiwiX3N1c3BlbmRNb2RlbFJlZnJlc2giLCJfcmVzdW1lTW9kZWxSZWZyZXNoIiwiX3JvdGF0ZSIsIl9hbGlnbkNvbnRlbnQiLCJfdHJhbnNmb3JtZWRCb3VuZHMiLCJfcm90YXRlZEJvdW5kcyIsIl9zZXRCb3VuZHMiLCJfdHJpZ2dlckJvdW5kc0NoYW5nZSIsIl9sYXlvdXRpbmciLCJyZWZyZXNoQ29ubmVjdGlvbnMiLCJfaW50ZXJuYWxTZWxlY3Rpb24iLCJfc2VsZWN0aW9uQ2hhbmdlZCIsInRvTG9jYWxlTG93ZXJDYXNlIiwiX3RyYW5zZm9ybVBvaW50Iiwic2hhcGVWaXN1YWwiLCJfdmlzdWFsT3B0aW9ucyIsIl91cGRhdGVDb25uZWN0b3JzIiwiX3Nob3dDb25uZWN0b3JzIiwiX2luaXRSb3V0ZXIiLCJfc291cmNlUG9pbnQiLCJfdGFyZ2V0UG9pbnQiLCJfc2V0U291cmNlIiwiX3NldFRhcmdldCIsImRlZmluZXJzIiwidG9Db25lbmN0b3IiLCJfZGF0YU1hcCIsImNvbm5lY3Rpb25zRGF0YVNvdXJjZSIsIl9yZW1vdmVGcm9tU291cmNlQ29ubmVjdG9yIiwiX2NsZWFyU291cmNlQ29ubmVjdG9yIiwiX3NldEZyb21PcHRpb25zIiwic291cmNlRGVmaW5lciIsIl9zb3VyY2VEZWZpbmVyIiwiX3JlbW92ZUZyb21UYXJnZXRDb25uZWN0b3IiLCJfY2xlYXJUYXJnZXRDb25uZWN0b3IiLCJfc2V0VG9PcHRpb25zIiwidGFyZ2V0RGVmaW5lciIsIl90YXJnZXREZWZpbmVyIiwiX2luYWN0aXZlU2hhcGVJdGVtcyIsIl9kZWZlcnJlZENvbm5lY3Rpb25VcGRhdGVzIiwib25BY3RpdmF0ZSIsIl9yb3V0ZXIiLCJfcmVzb2x2ZUNvbm5lY3RvcnMiLCJfcmVmcmVzaFBhdGgiLCJfcmVzb2x2ZUF1dG9Db25uZWN0b3JzIiwiX3Rlc3RSb3V0ZVBvaW50cyIsIl9zaGFwZXNRdWFkVHJlZSIsImhpdFRlc3RSZWN0IiwiX2luaXRFbGVtZW50cyIsIl9leHRlbmRMYXlvdXRPcHRpb25zIiwiX2luaXREZWZhdWx0cyIsIl9pbnRlcmFjdGlvbkRlZmF1bHRzIiwiX2luaXRDYW52YXMiLCJhZG9ybmVyTGF5ZXIiLCJfY3JlYXRlSGFuZGxlcnMiLCJfY2xpcGJvYXJkIiwicGF1c2VNb3VzZUhhbmRsZXJzIiwiX2ZldGNoRnJlc2hEYXRhIiwiX2NyZWF0ZUdsb2JhbFRvb2xCYXIiLCJfY3JlYXRlT3B0aW9uRWxlbWVudHMiLCJ0b29sQmFyIiwiX3Rvb2xCYXJDbGljayIsImNyZWF0ZVNoYXBlIiwiZWRpdG9yIiwiX2NyZWF0ZVNoYXBlIiwiZWRpdCIsImNyZWF0ZUNvbm5lY3Rpb24iLCJfY29ubmVjdGlvbnNEYXRhTWFwIiwiYWRkQ29ubmVjdGlvbiIsImVkaXRNb2RlbCIsImNhbmNlbEVkaXQiLCJzaGFwZUVkaXRvcnMiLCJzaGFwZVRlbXBsYXRlIiwiY29ubmVjdGlvbkVkaXRvcnMiLCJjb25uZWN0aW9uVGVtcGxhdGUiLCJlZGl0b3JzIiwiX2VkaXRBcmdzIiwiX2dldEVkaXREYXRhU291cmNlIiwiX2Rlc3Ryb3lFZGl0b3IiLCJzYXZlRWRpdCIsIl9kcmFnU3RhcnQiLCJfZ2VzdHVyZVN0YXJ0IiwiX2dlc3R1cmVDaGFuZ2UiLCJfZ2VzdHVyZUVuZCIsIl9tb3VzZU1vdmUiLCJfbW91c2VEb3duIiwiX21vdXNlVXAiLCJfc3luY0hhbmRsZXIiLCJfcGF1c2VNb3VzZUhhbmRsZXJzIiwiX2V2ZW50UG9zaXRpb25zIiwiX21ldGEiLCJfY3JlYXRlVG9vbEJhciIsImRvY3VtZW50VG9Nb2RlbCIsIl9nZXN0dXJlIiwiX2luaXRpYWxDZW50ZXIiLCJkb2N1bWVudFRvVmlldyIsIl96b29tIiwiX2dldFZhbGlkWm9vbSIsIl9wYW5UcmFuc2Zvcm0iLCJfdXBkYXRlQWRvcm5lcnMiLCJfY3JlYXRlU2hhcGVzIiwiX2NyZWF0ZUNvbm5lY3Rpb25zIiwiX2ZpbmRDb25uZWN0aW9uVGFyZ2V0IiwiZGVzdHJveVNjcm9sbGVyIiwiX2Rlc3Ryb3lHbG9iYWxUb29sQmFyIiwiY29ubmVjdGVkIiwiYWRkZWQiLCJyZW1vdmVkIiwiX3JlbW92ZUl0ZW0iLCJfcmVtb3ZlU2hhcGVEYXRhSXRlbSIsIl9yZW1vdmVDb25uZWN0aW9uRGF0YUl0ZW0iLCJfZ2V0RGlhZ3JhbUl0ZW1zIiwidmlzdWFscyIsIl9maXhPcmRlcmluZyIsImJyaW5nSW50b1ZpZXciLCJfem9vbU1haW5MYXllciIsImFsaWduU2hhcGVzIiwiX2dldFBhbiIsIl9jb3B5T2Zmc2V0IiwiX3VwZGF0ZUNvcGllZENvbm5lY3Rpb24iLCJfY29udGFpbmVyT2Zmc2V0Iiwidmlld1RvRG9jdW1lbnQiLCJ2aWV3VG9Nb2RlbCIsIl90cmFuc2Zvcm1XaXRoTWF0cml4IiwiX21hdHJpeEludmVydCIsIl9sYXllck1hdHJpeCIsImxheWVyVG9Nb2RlbCIsIl9sYXllck1hdHJpeEludmVydCIsIm1vZGVsVG9Eb2N1bWVudCIsInNldENvbm5lY3Rpb25zRGF0YVNvdXJjZSIsIl9jb25uZWN0aW9uRGF0YVNvdXJjZSIsIl9yZWRyYXdDb25uZWN0aW9ucyIsImdldFNoYXBlQnlNb2RlbElkIiwiZ2V0U2hhcGVCeU1vZGVsVWlkIiwiZ2V0Q29ubmVjdGlvbkJ5TW9kZWxJZCIsImdldENvbm5lY3Rpb25CeU1vZGVsVWlkIiwiZGVzZWxlY3RlZCIsIl90cmFuc2Zvcm1NYWluTGF5ZXIiLCJfZmluaXNoUGFuIiwiX3N0b3JlVmlld01hdHJpeCIsIl9zdG9yZUxheWVyTWF0cml4IiwiY29ucyIsIl9yZW1vdmVTaGFwZSIsIl9yZW1vdmVDb25uZWN0aW9uIiwiX3JlbW92ZURhdGFJdGVtcyIsIl9yZW1vdmVTaGFwZUNvbm5lY3Rpb25zIiwiX2FkZERhdGFJdGVtIiwiX2FkZERhdGFJdGVtQnlVaWQiLCJfYWRkRGF0YUl0ZW1zIiwiX3JlZnJlc2hTb3VyY2UiLCJfYmluZGluZ1Jvb3RzIiwiX2FkZEl0ZW0iLCJzaW5nbGVUb29sQmFyIiwiX3BvcHVwIiwiX25vcm1hbGl6ZVBvaW50Wm9vbSIsInVuZG9uZSIsInJlZG9uZSIsIl9sb2FkaW5nU2hhcGVzIiwiX2xvYWRpbmdDb25uZWN0aW9ucyIsIl9zaGFwZXNSZWZyZXNoSGFuZGxlciIsIl9zaGFwZXNSZXF1ZXN0U3RhcnRIYW5kbGVyIiwiX3NoYXBlc0Vycm9ySGFuZGxlciIsIl9yZWZyZXNoU2hhcGVzIiwiX3NoYXBlc1JlcXVlc3RTdGFydCIsIl9lcnJvciIsIl90cmVlRGF0YVNvdXJjZSIsIl9jb25uZWN0aW9uc1JlZnJlc2hIYW5kbGVyIiwiX2Nvbm5lY3Rpb25zUmVxdWVzdFN0YXJ0SGFuZGxlciIsIl9jb25uZWN0aW9uc0Vycm9ySGFuZGxlciIsIl9yZWZyZXNoQ29ubmVjdGlvbnMiLCJfY29ubmVjdGlvbnNSZXF1ZXN0U3RhcnQiLCJfY29ubmVjdGlvbnNFcnJvciIsIl9zaG91bGRSZWZyZXNoIiwiX3JlbW92ZVNoYXBlcyIsIl91cGRhdGVTaGFwZXMiLCJfc3luY1NoYXBlcyIsIl9yZWJpbmRTaGFwZXNBbmRDb25uZWN0aW9ucyIsIl9hZGRTaGFwZXMiLCJfYWRkQ29ubmVjdGlvbnMiLCJfcmVtb3ZlQ29ubmVjdGlvbnMiLCJfdXBkYXRlQ29ubmVjdGlvbnMiLCJfYWRkQ29ubmVjdGlvbkRhdGFJdGVtIiwiX3ZhbGlkYXRlQ29ubmVjdG9yIiwiX3VuYmluZERhdGFTb3VyY2UiLCJfZXJyb3JIYW5kbGVyIiwiX3JlZnJlc2giLCJkZWZlcnJlZENvbm5lY3Rpb25VcGRhdGVzIiwiX3Rvb2xzIiwiY3JlYXRlVG9vbEJhciIsImNyZWF0ZVRvb2xzIiwiYXBwZW5kVG9vbHMiLCJnZXRLZW5kb1BvcHVwIiwiX3Rvb2xCYXIiLCJrZW5kb1Rvb2xCYXIiLCJnZXRLZW5kb1Rvb2xCYXIiLCJjcmVhdGVUb29sIiwiX3NldEF0dHJpYnV0ZXMiLCJuZXdHcm91cCIsImVkaXRUb29sIiwiZGVsZXRlVG9vbCIsInJvdGF0ZUFudGljbG9ja3dpc2VUb29sIiwiX2FwcGVuZEdyb3VwIiwiX3JvdGF0ZUdyb3VwIiwicm90YXRlQ2xvY2t3aXNlVG9vbCIsImNyZWF0ZVNoYXBlVG9vbCIsIl9jcmVhdGVHcm91cCIsImNyZWF0ZUNvbm5lY3Rpb25Ub29sIiwidW5kb1Rvb2wiLCJfaGlzdG9yeUdyb3VwIiwicmVkb1Rvb2wiLCJfZ2V0QXR0cmlidXRlcyIsImV2ZW50RGF0YSIsInNlbGVjdGVkRWxlbWVudHMiLCJyb3RhdGVDbG9ja3dpc2UiLCJyb3RhdGVBbnRpY2xvY2t3aXNlIiwiX2dldEZpZWxkcyIsImNyZWF0ZUVkaXRhYmxlIiwiRWRpdGFibGUiLCJjbGVhckNvbnRhaW5lciIsImNvbHVtbnMiLCJfcmVuZGVyVGVtcGxhdGUiLCJfcmVuZGVyRmllbGRzIiwiX3JlbmRlckJ1dHRvbnMiLCJXaW5kb3ciLCJ1c2VyVHJpZ2dlcmVkIiwiX2NhbmNlbENsaWNrIiwiX2F0dGFjaEJ1dHRvbkV2ZW50cyIsInVuZXNjYXBlIiwiX2NyZWF0ZUJ1dHRvbiIsIl9jYW5jZWxDbGlja0hhbmRsZXIiLCJfdXBkYXRlQ2xpY2tIYW5kbGVyIiwiX3VwZGF0ZUNsaWNrIiwiX2VkaXRVcGRhdGVDbGlja0hhbmRsZXIiLCJfdGVzdFJlY3QiLCJvdmVybGFwc0JvdW5kcyIsIl9ib3VuZHNDaGFuZ2UiLCJDb25uZWN0b3IiLCJEaWFncmFtVG9vbEJhciIsIlF1YWRSb290IiwiUG9wdXBFZGl0b3IiLCJfb2xkVmFsdWUiLCJyZXBhaW50IiwiY2FwIiwic2V0QW5nbGUiLCJzbG90QW5nbGUiLCJvbGRBbmdsZSIsIm5ld0FuZ2xlIiwiX3JlbmRlck5lZWRsZSIsIl9yZW5kZXJDYXAiLCJfcmVuZGVyQXJyb3ciLCJnZXRSYWRpdXNYIiwiY2FwU2l6ZSIsInJlbmRlckFyYyIsImxhYmVsRWxlbWVudHMiLCJyZW5kZXJMYWJlbHMiLCJ0aWNrcyIsInJlbmRlclRpY2tzIiwicmFuZ2VzIiwicmVuZGVyUmFuZ2VzIiwicmVwb3NpdGlvblJhbmdlcyIsInRpY2tBbmdsZXMiLCJyYW5nZVNpemUiLCJyYW5nZURpc3RhbmNlIiwic2V0UmFkaXVzWCIsInNldFJhZGl1c1kiLCJnZXRSYW5nZVJhZGl1cyIsInJhbmdlU2VnbWVudHMiLCJtYWpvclRpY2tBbmdsZXMiLCJfdGlja0RpZmZlcmVuY2UiLCJtaW5vclRpY2tBbmdsZXMiLCJub3JtYWxpemVUaWNrQW5nbGVzIiwicmVwb3NpdGlvblRpY2tzIiwiX2NyZWF0ZVN1cmZhY2UiLCJnYXVnZUFyZWEiLCJfc2V0VmFsdWVPcHRpb25zIiwiX2RyYXciLCJfdmlzdWFscyIsImFsbFZhbHVlcyIsIl9nZXRTaXplIiwiX2NyZWF0ZUdhdWdlQXJlYSIsIl9jcmVhdGVNb2RlbCIsIl9nYXVnZUFyZWFNYXJnaW4iLCJfaW5pdGlhbFBsb3RBcmVhIiwiYWxpZ25TY2FsZSIsIl9idWlsZFZpc3VhbCIsImdldERpZmYiLCJnZXRQbG90Qm94IiwicGxvdEJib3giLCJfZ2V0Qm94IiwiX2FsaWduRWxlbWVudHMiLCJfc2hyaW5rRWxlbWVudHMiLCJyZW5kZXJMaW5lIiwic2tpcFVuaXQiLCJyZW5kZXJBeGlzVGljayIsInRyYWNrIiwidHJhY2tCb3giLCJwb2ludGVyUmFuZ2VCb3giLCJnZXRFbGVtZW50T3B0aW9ucyIsIl9tYXJnaW4iLCJwb2ludGVyU2hhcGUiLCJvbGRQb2ludHMiLCJuZXdQb2ludHMiLCJ0b1NjYWxlIiwiR2F1Z2UiLCJSYWRpYWxQb2ludGVyIiwiTGluZWFyUG9pbnRlciIsIkFycm93TGluZWFyUG9pbnRlciIsIkJhckxpbmVhclBvaW50ZXIiLCJMaW5lYXJTY2FsZSIsIlJhZGlhbFNjYWxlIiwiTGluZWFyR2F1Z2UiLCJSYWRpYWxHYXVnZSIsIl9kb2N1bWVudEtleURvd25IYW5kbGVyIiwiX2RvY3VtZW50S2V5RG93biIsIl9zaG93T24iLCJjYWxsb3V0IiwiX2FwcGVuZENvbnRlbnQiLCJfYWpheFJlcXVlc3QiLCJfaW5pdFBvcHVwIiwiX3Bvc2l0aW9uQ2FsbG91dCIsIl9jbG9zZUJ1dHRvbkNsaWNrIiwibGF0IiwibG5nIiwiRElTVEFOQ0VfSVRFUkFUSU9OUyIsIkRJU1RBTkNFX0NPTlZFUkdFTkNFIiwiRElTVEFOQ0VfUFJFQ0lTSU9OIiwiRk9STUFUIiwiZ3JlYXRDaXJjbGVUbyIsImRhdHVtcyIsIldHUzg0IiwiYXppbXV0aEZyb20iLCJhemltdXRoVG8iLCJmcm9tTG5nTGF0IiwiZnJvbUxhdExuZyIsIm53IiwiY29udGFpbnNBbnkiLCJpbmNsdWRlIiwiaW5jbHVkZUFsbCIsInN3IiwiV29ybGQiLCJFeHRlbnQiLCJMb2NhdGlvbiIsIml0ZW1UZW1wbGF0ZSIsIl9leHRlbnQiLCJfcmVuZGVyIiwiX2l0ZW1UZXh0IiwiX2luWm9vbUxldmVsIiwibWluWm9vbSIsIm1heFpvb20iLCJfaW5BcmVhIiwiZXh0ZW50IiwiX2tleXJvb3QiLCJwYW5TdGVwIiwiem9vbVN0ZXAiLCJleHAiLCJNQVhfTE5HIiwiTUFYX0xBVCIsIklOVkVSU0VfSVRFUkFUSU9OUyIsIklOVkVSU0VfQ09OVkVSR0VOQ0UiLCJjZW50cmFsTWVyaWRpYW4iLCJkYXR1bSIsIl9wcm9qZWN0TGF0IiwiaW52ZXJzZSIsIl9pbnZlcnNlWSIsIl9wcm9qIiwiX3RtIiwiX2l0bSIsInRvUG9pbnQiLCJ0b0xvY2F0aW9uIiwiY3JzIiwiRVBTRzMzOTUiLCJFUFNHMzg1NyIsIkVQU0c0MzI2IiwicHJvamVjdGlvbnMiLCJFcXVpcmVjdGFuZ3VsYXIiLCJNZXJjYXRvciIsIlNwaGVyaWNhbE1lcmNhdG9yIiwiX2JlZm9yZVJlc2V0IiwiX3BhbkVuZCIsIl9hY3RpdmF0ZSIsIl91cGRhdGVBdHRyaWJ1dGlvbiIsIl9kZWFjdGl2YXRlIiwiX2FwcGx5RXh0ZW50IiwiX3NldFZpc2liaWxpdHkiLCJhdHRyaWJ1dGlvbiIsIkxheWVyIiwiX2luaXRSb290IiwiX2RhdGFDaGFuZ2UiLCJfdHJhbnNsYXRlU3VyZmFjZSIsIl9jbGVhck1hcmtlcnMiLCJfbG9hZGVyIiwic2hhcGVDcmVhdGVkIiwiZmVhdHVyZUNyZWF0ZWQiLCJfcGFubmluZyIsImxvY2F0aW9uVG9WaWV3IiwibG9jYXRvciIsIl9sb2FkR2VvbWV0cnlUbyIsIl9mZWF0dXJlQ3JlYXRlZCIsIl9zaGFwZUNyZWF0ZWQiLCJfbG9hZFBvbHlnb24iLCJfc2V0TGluZUZpbGwiLCJfbG9hZFBvaW50IiwiX2xvYWRTaGFwZSIsIl9idWlsZFBvbHlnb24iLCJnZW9qc29uIiwiZmVhdHVyZXMiLCJnZW9tZXRyaWVzIiwiU2hhcGVMYXllciIsIkdlb0pTT05Mb2FkZXIiLCJsb2NhdGlvbkZpZWxkIiwidmFsdWVGaWVsZCIsIl9zY2FsZVR5cGUiLCJfY3JlYXRlU3ltYm9sIiwiX2RyYXdTeW1ib2wiLCJzY2FsZXMiLCJzeW1ib2xzIiwiX2RvbWFpbiIsIl9yYXRpbyIsIkJ1YmJsZUxheWVyIiwic3ViZG9tYWlucyIsIl92aWV3VHlwZSIsImxvY2F0aW9uVG9MYXllciIsInZpZXdPcmlnaW4iLCJfdXBkYXRlVmlldyIsInBvb2wiLCJ0aWxlU2l6ZSIsInVybFRlbXBsYXRlIiwiX3ZpZXdPcmlnaW4iLCJwb2ludFRvVGlsZUluZGV4IiwidGlsZUNvdW50IiwiaW5kZXhUb1BvaW50Iiwic3ViZG9tYWluVGV4dCIsInN1YmRvbWFpbkluZGV4IiwiY3JlYXRlVGlsZSIsInRpbGVPcHRpb25zIiwid3JhcEluZGV4IiwiY3VycmVudEluZGV4Iiwic3ViZG9tYWluIiwiZXJyb3JVcmxUZW1wbGF0ZSIsIndyYXBWYWx1ZSIsImVycm9yVXJsIiwidXJsT3B0aW9ucyIsInF1YWRrZXkiLCJfY3JlYXRlIiwidGlsZSIsIlRpbGVMYXllciIsIkltYWdlVGlsZSIsIlRpbGVQb29sIiwiVGlsZVZpZXciLCJiYXNlVXJsIiwiX3NjaGVtZSIsIl9vbk1ldGFkYXRhIiwiX2ZldGNoTWV0YWRhdGEiLCJpbWFnZXJ5U2V0Iiwib3V0cHV0IiwidXJpU2NoZW1lIiwicmVzb3VyY2VTZXRzIiwicmVzb3VyY2UiLCJyZXNvdXJjZXMiLCJpbWFnZVVybFN1YmRvbWFpbnMiLCJfYWRkQXR0cmlidXRpb24iLCJpbWFnZXJ5UHJvdmlkZXJzIiwiY292ZXJhZ2VBcmVhcyIsInRpbGVRdWFkS2V5IiwiYmluZyIsIkJpbmdMYXllciIsIkJpbmdWaWV3IiwiX21hcmtlckNsaWNrIiwidGl0bGVGaWVsZCIsIl9hZGRPbmUiLCJNYXJrZXIiLCJhZGRUbyIsInJlbmRlclRvb2x0aXAiLCJjb250ZW50VXJsIiwiTWFya2VyTGF5ZXIiLCJfZ2V0T3JpZ2luIiwiX2luaXRTY3JvbGxlciIsIl9pbml0TWFya2VycyIsIl9pbml0Q29udHJvbHMiLCJfaW5pdExheWVycyIsImNvbnRyb2xzIiwibGF5ZXJEZWZhdWx0cyIsIm1hcmtlckRlZmF1bHRzIiwid3JhcGFyb3VuZCIsInpvb21Db250cm9sIiwiX3NldEV4dGVudCIsIl9nZXRFeHRlbnQiLCJfbGF5ZXJTaXplIiwibGF5ZXJUb0xvY2F0aW9uIiwidmlld1RvTG9jYXRpb24iLCJldmVudFRvVmlldyIsImV2ZW50VG9MYXllciIsImV2ZW50VG9Mb2NhdGlvbiIsIl9zZXRPcmlnaW4iLCJfb3JpZ2luIiwiX3pvb21Bcm91bmQiLCJBdHRyaWJ1dGlvbiIsIl9jcmVhdGVBdHRyaWJ1dGlvbiIsIk5hdmlnYXRvciIsIl9jcmVhdGVOYXZpZ2F0b3IiLCJab29tQ29udHJvbCIsIl9jcmVhdGVab29tQ29udHJvbCIsIl9jcmVhdGVDb250cm9sRWxlbWVudCIsIl9uYXZpZ2F0b3JQYW4iLCJfbmF2aWdhdG9yQ2VudGVyIiwiX3ZpcnR1YWxTaXplIiwiX3Njcm9sbEVuZCIsIl96b29tQ29udHJvbENoYW5nZSIsIl9zY3JvbGwiLCJfc2NhbGVTdGFydCIsIl9zY3JvbGxPZmZzZXQiLCJfcGFuQ29tcGxldGUiLCJfcGFuRW5kVFMiLCJfc2NhbGVUb1pvb20iLCJfcmVzZXRTY3JvbGxlciIsIl9yZW5kZXJMYXllcnMiLCJzY3JvbGxXcmFwIiwiQ2hhcnQiLCJzdGFnZSIsIl9pbml0aWFsV2lkdGgiLCJwb2ludFdpZHRoIiwiX2F1dG9XaWR0aCIsImlubGluZSIsIl9hbmNob3IiLCJTcGFya2xpbmVTaGFyZWRUb29sdGlwIiwiZGF0ZUZpZWxkIiwiX2Rlc3Ryb3lOYXZpZ2F0b3IiLCJidWlsZEZpbHRlciIsIl9mdWxsUmVkcmF3IiwiX25hdmlnYXRvciIsIl9kaXJ0eSIsInJlZHJhd1NsYXZlcyIsIl9zZXJpZXNDb3VudCIsIl9zZXRSYW5nZSIsIl9kYXRhQm91bmQiLCJfem9vbUVuZCIsIl9kYXRhQ2hhbmdlZEhhbmRsZXIiLCJfcmVkcmF3U2VsZiIsIm1haW5BeGlzIiwic2VsZWN0U3RhcnQiLCJzZWxlY3RFbmQiLCJmaWx0ZXJBeGVzIiwiX2xpdmVEcmFnIiwic2hvd0hpbnQiLCJmaWx0ZXJEYXRhU291cmNlIiwicmVhZFNlbGVjdGlvbiIsIl9fbmF2aSIsImF0dGFjaEF4ZXMiLCJhdHRhY2hTZXJpZXMiLCJjaGFydFBhZGRpbmciLCJfaGlkZVRpbWVvdXQiLCJyZXF1aXJlIiwialF1ZXJ5QnJpZGdldCIsImJyaWRnZXQiLCJFdkVtaXR0ZXIiLCJfb25jZUV2ZW50cyIsImVtaXRFdmVudCIsImJvcmRlclN0eWxlIiwiaXNCb3hTaXplT3V0ZXIiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsImJvcmRlckxlZnRXaWR0aCIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJUb3BXaWR0aCIsImJvcmRlckJvdHRvbVdpZHRoIiwiZml6enlVSVV0aWxzIiwibW9kdWxvIiwicmVtb3ZlRnJvbSIsImdldFBhcmVudCIsImdldFF1ZXJ5RWxlbWVudCIsImhhbmRsZUV2ZW50IiwiZmlsdGVyRmluZEVsZW1lbnRzIiwiZGVib3VuY2VNZXRob2QiLCJkb2NSZWFkeSIsInRvRGFzaGVkIiwiaHRtbEluaXQiLCJPdXRsYXllciIsIldlYmtpdFRyYW5zaXRpb24iLCJ0cmFuc2l0aW9uUHJvcGVydHkiLCJ0cmFuc2l0aW9uRGVsYXkiLCJfdHJhbnNuIiwiaW5nUHJvcGVydGllcyIsImNsZWFuIiwiX2dldE9wdGlvbiIsImxheW91dFBvc2l0aW9uIiwiZ2V0WFZhbHVlIiwiZ2V0WVZhbHVlIiwicGVyY2VudFBvc2l0aW9uIiwiX3RyYW5zaXRpb25UbyIsInNldFBvc2l0aW9uIiwiaXNUcmFuc2l0aW9uaW5nIiwiZ2V0VHJhbnNsYXRlIiwib25UcmFuc2l0aW9uRW5kIiwiaXNDbGVhbmluZyIsImdvVG8iLCJfbm9uVHJhbnNpdGlvbiIsIl9yZW1vdmVTdHlsZXMiLCJlbmFibGVUcmFuc2l0aW9uIiwic3RhZ2dlckRlbGF5Iiwib253ZWJraXRUcmFuc2l0aW9uRW5kIiwib250cmFuc2l0aW9uZW5kIiwib25vdHJhbnNpdGlvbmVuZCIsInByb3BlcnR5TmFtZSIsImRpc2FibGVUcmFuc2l0aW9uIiwicmVtb3ZlVHJhbnNpdGlvblN0eWxlcyIsInN0YWdnZXIiLCJyZW1vdmVFbGVtIiwiZ2V0SGlkZVJldmVhbFRyYW5zaXRpb25FbmRQcm9wZXJ0eSIsIm9uUmV2ZWFsVHJhbnNpdGlvbkVuZCIsImhpZGRlblN0eWxlIiwidmlzaWJsZVN0eWxlIiwib25IaWRlVHJhbnNpdGlvbkVuZCIsIm91dGxheWVyR1VJRCIsImNvbnRhaW5lclN0eWxlIiwiaW5pdExheW91dCIsIm9yaWdpbkxlZnQiLCJvcmlnaW5Ub3AiLCJyZXNpemVDb250YWluZXIiLCJjb21wYXRPcHRpb25zIiwibGF5b3V0SW5zdGFudCIsInJlbG9hZEl0ZW1zIiwic3RhbXBzIiwic3RhbXAiLCJiaW5kUmVzaXplIiwiX2l0ZW1pemUiLCJfZmlsdGVyRmluZEl0ZW1FbGVtZW50cyIsIml0ZW1TZWxlY3RvciIsImdldEl0ZW1FbGVtZW50cyIsIl9yZXNldExheW91dCIsIl9tYW5hZ2VTdGFtcHMiLCJfaXNMYXlvdXRJbml0ZWQiLCJsYXlvdXRJdGVtcyIsIl9nZXRNZWFzdXJlbWVudCIsIl9nZXRJdGVtc0ZvckxheW91dCIsIl9sYXlvdXRJdGVtcyIsIl9wb3N0TGF5b3V0IiwiaXNJZ25vcmVkIiwiX2VtaXRDb21wbGV0ZU9uSXRlbXMiLCJfZ2V0SXRlbUxheW91dFBvc2l0aW9uIiwiaXNJbnN0YW50IiwiaXNMYXlvdXRJbnN0YW50IiwiX3Byb2Nlc3NMYXlvdXRRdWV1ZSIsInVwZGF0ZVN0YWdnZXIiLCJfcG9zaXRpb25JdGVtIiwiX2dldENvbnRhaW5lclNpemUiLCJfc2V0Q29udGFpbmVyTWVhc3VyZSIsInVuaWdub3JlIiwidW5zdGFtcCIsIl9nZXRCb3VuZGluZ1JlY3QiLCJfbWFuYWdlU3RhbXAiLCJfYm91bmRpbmdSZWN0IiwiX2dldEVsZW1lbnRPZmZzZXQiLCJpc1Jlc2l6ZUJvdW5kIiwib25yZXNpemUiLCJuZWVkc1Jlc2l6ZUxheW91dCIsImFkZEl0ZW1zIiwiYXBwZW5kZWQiLCJwcmVwZW5kZWQiLCJyZXZlYWxJdGVtRWxlbWVudHMiLCJnZXRJdGVtcyIsImhpZGVJdGVtRWxlbWVudHMiLCJtcyIsIk1hc29ucnkiLCJmaXRXaWR0aCIsIm1lYXN1cmVDb2x1bW5zIiwiY29sWXMiLCJjb2xzIiwibWF4WSIsImdldENvbnRhaW5lcldpZHRoIiwiY29sdW1uV2lkdGgiLCJjb250YWluZXJXaWR0aCIsImd1dHRlciIsIl9nZXRDb2xHcm91cCIsIl9nZXRDb250YWluZXJGaXRXaWR0aCIsInNob2VzdHJpbmciLCJUYWJsZXNhdyIsImkxOG4iLCJtb2RlcyIsImNvbHVtbkJ0blRleHQiLCJjb2x1bW5zRGlhbG9nRXJyb3IiLCJtdXN0YXJkIiwiV2ViS2l0UG9pbnQiLCJvcGVyYW1pbmkiLCJjb25maWciLCJkZWZhdWx0TW9kZSIsImluaXRTZWxlY3RvciIsIlRhYmxlIiwiJHRhYmxlIiwibW9kZSIsImNyZWF0ZVRvb2xiYXIiLCJjb2xzdGFydCIsIl9pbml0Q2VsbHMiLCJ0aHJzIiwiY29sdGFsbHkiLCJjb2x1bW5sb29rdXAiLCJjZWxsY29sdGFsbHkiLCIkdG9vbGJhciIsInRhYmxlSWQiLCJzdGFja1RhYmxlIiwiY2VsbExhYmVscyIsImNlbGxDb250ZW50TGFiZWxzIiwibGFiZWxsZXNzIiwiaGlkZWVtcHR5IiwiU3RhY2siLCJhbGxIZWFkZXJzIiwicmV2ZXJzZUhlYWRlcnMiLCIkY2VsbHMiLCJoaWVyYXJjaHlDbGFzcyIsIiRzb3J0YWJsZUJ1dHRvbiIsIml0ZXJhdGlvbiIsInRhYmxlc2F3IiwibWV0aG9kcyIsIm9FbCIsImZvdW5kIiwiYXJyZyIsIkNvbHVtblRvZ2dsZSIsImNvbHVtblRvZ2dsZVRhYmxlIiwiY29sdW1uQnRuQ29udGFpbiIsImNvbHVtbkJ0biIsInByaW9yaXR5UHJlZml4IiwiJG1lbnVCdXR0b24iLCIkcG9wdXAiLCIkYnRuQ29udGFpbiIsImhhc05vblBlcnNpc3RlbnRIZWFkZXJzIiwiJHRoaXMiLCJwcmlvcml0eSIsIiRnZXRDZWxscyIsIiRnZXRDZWxsc0Zyb21DaGVja2JveCIsImNsb3NlUG9wdXAiLCJjbG9zZVRpbWVvdXQiLCJvcGVuUG9wdXAiLCJyZWZyZXNoVG9nZ2xlIiwicmVmcmVzaFByaW9yaXR5IiwiJGNlbGwiLCJnZXRTb3J0VmFsdWUiLCJjZWxsIiwic29ydGFibGVTd2l0Y2hTZWxlY3RvciIsImRlZmF1bHRDb2wiLCJudW1lcmljQ29sIiwiYXNjZW5kIiwiZGVzY2VuZCIsInN3aXRjaGVyIiwidGFibGVUb29sYmFyIiwic29ydEJ1dHRvbiIsImhlYWRzIiwiJHN3aXRjaGVyIiwiYWRkQ2xhc3NUb1RhYmxlIiwiYWRkQ2xhc3NUb0hlYWRzIiwibWFrZUhlYWRzQWN0aW9uYWJsZSIsImNsZWFyT3RoZXJzIiwic2licyIsImhlYWRzT25BY3Rpb24iLCJuZXdTb3J0VmFsdWUiLCJoYW5kbGVEZWZhdWx0IiwiYWRkU3dpdGNoZXIiLCJpc0RlZmF1bHRDb2wiLCJpc0Rlc2NlbmRpbmciLCJoYXNOdW1lcmljQXR0cmlidXRlIiwibnVtZXJpY0NvdW50IiwibnVtZXJpY0NvdW50TWF4IiwiJGZpcnN0Q2hpbGQiLCJ0YWJsZXNhd2J0biIsImdldENvbHVtbk51bWJlciIsImdldFRhYmxlUm93cyIsInNvcnRSb3dzIiwiY29sTnVtIiwiYXNjZW5kaW5nIiwic29ydGVkIiwiZ2V0Q2VsbHMiLCJyb3dOdW0iLCJnZXRTb3J0RnhuIiwiZm9yY2VOdW1lcmljIiwicmVnZXgiLCJhcHBseVRvUm93cyIsIm5ld1Jvd3MiLCJjdXN0b21GbiIsInJlcGxhY2VUYWJsZVJvd3MiLCJtYWtlQ29sRGVmYXVsdCIsInNvcnRCeSIsInJldHVyblZhbCIsImhvcml6b250YWxUaHJlc2hvbGQiLCJ2ZXJ0aWNhbFRocmVzaG9sZCIsInN1bVN0eWxlcyIsImhpZGVCdG4iLCJwZXJzaXN0V2lkdGhzIiwiYWxsQ29sdW1uc1Zpc2libGUiLCJkaXNhYmxlVG91Y2hFdmVudHMiLCJjcmVhdGVTd2lwZVRhYmxlIiwiJGJ0bnMiLCIkcHJldkJ0biIsIiRuZXh0QnRuIiwiJGhlYWRlckNlbGxzIiwiJGhlYWRlckNlbGxzTm9QZXJzaXN0IiwiaGVhZGVyV2lkdGhzIiwiJGhlYWQiLCJoZWFkZXJDZWxsIiwic2hvd0NvbHVtbiIsImhpZGVDb2x1bW4iLCJwZXJzaXN0Q29sdW1uIiwiaXNQZXJzaXN0ZW50IiwidW5tYWludGFpbldpZHRocyIsIm1haW50YWluV2lkdGhzIiwidGFibGVXaWR0aCIsIm5ld0hhc2giLCIkc3R5bGUiLCJnZXROZXh0IiwiY2hlY2tGb3VuZCIsImdldFByZXYiLCJuZXh0cGFpciIsImZ3ZCIsImNhbkFkdmFuY2UiLCJwYWlyIiwibWF0Y2hlc01lZGlhIiwiZmFrZUJyZWFrcG9pbnRzIiwicGVyc2lzdCIsInN1bXMiLCJ2aXNpYmxlTm9uUGVyc2lzdGFudENvdW50IiwiaXNQZXJzaXN0IiwibmVlZHNOb25QZXJzaXN0ZW50Q29sdW1uIiwiYWR2YW5jZSIsImdldENvb3JkIiwib3JpZ2luWCIsIm9yaWdpblkiLCJjZmciLCJjYW5Hb1ByZXYiLCJjYW5Hb05leHQiLCJNaW5pTWFwIiwiY3JlYXRlTWluaU1hcCIsIiRkb3ROYXYiLCJoaWRlRG90Iiwic2hvd01pbmltYXAiLCJzaG93SGlkZU5hdiIsImRvdHMiLCJleGNsdWRlTW9kZSIsImlnbm9yZU1vZGUiLCJtb2RlVmFsIiwiZGF0YU1vZGUiLCIkb3RoZXJUb29sYmFySXRlbXMiLCJvbk1vZGVDaGFuZ2UiLCJtYXNvbnJ5IiwiY29sb3JEYXRhIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7O0FBY0MsV0FBVUEsTUFBVixFQUFrQkMsT0FBbEIsRUFBNEI7O0FBRTVCLEtBQUssUUFBT0MsTUFBUCx5Q0FBT0EsTUFBUCxPQUFrQixRQUFsQixJQUE4QixRQUFPQSxPQUFPQyxPQUFkLE1BQTBCLFFBQTdELEVBQXdFO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FELFNBQU9DLE9BQVAsR0FBaUJILE9BQU9JLFFBQVAsR0FDaEJILFFBQVNELE1BQVQsRUFBaUIsSUFBakIsQ0FEZ0IsR0FFaEIsVUFBVUssQ0FBVixFQUFjO0FBQ2IsT0FBSyxDQUFDQSxFQUFFRCxRQUFSLEVBQW1CO0FBQ2xCLFVBQU0sSUFBSUUsS0FBSixDQUFXLDBDQUFYLENBQU47QUFDQTtBQUNELFVBQU9MLFFBQVNJLENBQVQsQ0FBUDtBQUNBLEdBUEY7QUFRQSxFQWhCRCxNQWdCTztBQUNOSixVQUFTRCxNQUFUO0FBQ0E7O0FBRUY7QUFDQyxDQXZCQSxFQXVCQyxPQUFPTyxNQUFQLEtBQWtCLFdB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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RUFBYixFQUFpQjtBQUNiN3FCLFVBQUUsZUFBRixFQUFtQm5OLFFBQW5CLENBQTRCLGVBQTVCO0FBQ0gsS0FGRCxNQUVPO0FBQ0htTixVQUFFLGVBQUYsRUFBbUI5TSxXQUFuQixDQUErQixlQUEvQjtBQUNIO0FBQ0osQ0FQRCIsImZpbGUiOiJhcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjIuMi40XG4gKiBodHRwOi8vanF1ZXJ5LmNvbS9cbiAqXG4gKiBJbmNsdWRlcyBTaXp6bGUuanNcbiAqIGh0dHA6Ly9zaXp6bGVqcy5jb20vXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZVxuICpcbiAqIERhdGU6IDIwMTYtMDUtMjBUMTc6MjNaXG4gKi9cblxuKGZ1bmN0aW9uKCBnbG9iYWwsIGZhY3RvcnkgKSB7XG5cblx0aWYgKCB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJvYmplY3RcIiApIHtcblx0XHQvLyBGb3IgQ29tbW9uSlMgYW5kIENvbW1vbkpTLWxpa2UgZW52aXJvbm1lbnRzIHdoZXJlIGEgcHJvcGVyIGB3aW5kb3dgXG5cdFx0Ly8gaXMgcHJlc2VudCwgZXhlY3V0ZSB0aGUgZmFjdG9yeSBhbmQgZ2V0IGpRdWVyeS5cblx0XHQvLyBGb3IgZW52aXJvbm1lbnRzIHRoYXQgZG8gbm90IGhhdmUgYSBgd2luZG93YCB3aXRoIGEgYGRvY3VtZW50YFxuXHRcdC8vIChzdWNoIGFzIE5vZGUuanMpLCBleHBvc2UgYSBmYWN0b3J5IGFzIG1vZHVsZS5leHBvcnRzLlxuXHRcdC8vIFRoaXMgYWNjZW50dWF0ZXMgdGhlIG5lZWQgZm9yIHRoZSBjcmVhdGlvbiBvZiBhIHJlYWwgYHdpbmRvd2AuXG5cdFx0Ly8gZS5nLiB2YXIgalF1ZXJ5ID0gcmVxdWlyZShcImpxdWVyeVwiKSh3aW5kb3cpO1xuXHRcdC8vIFNlZSB0aWNrZXQgIzE0NTQ5IGZvciBtb3JlIGluZm8uXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBnbG9iYWwuZG9jdW1lbnQgP1xuXHRcdFx0ZmFjdG9yeSggZ2xvYmFsLCB0cnVlICkgOlxuXHRcdFx0ZnVuY3Rpb24oIHcgKSB7XG5cdFx0XHRcdGlmICggIXcuZG9jdW1lbnQgKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCBcImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnRcIiApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmYWN0b3J5KCB3ICk7XG5cdFx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdGZhY3RvcnkoIGdsb2JhbCApO1xuXHR9XG5cbi8vIFBhc3MgdGhpcyBpZiB3aW5kb3cgaXMgbm90IGRlZmluZWQgeWV0XG59KHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB0aGlzLCBmdW5jdGlvbiggd2luZG93LCBub0dsb2JhbCApIHtcblxuLy8gU3VwcG9ydDogRmlyZWZveCAxOCtcbi8vIENhbid0IGJlIGluIHN0cmljdCBtb2RlLCBzZXZlcmFsIGxpYnMgaW5jbHVkaW5nIEFTUC5ORVQgdHJhY2Vcbi8vIHRoZSBzdGFjayB2aWEgYXJndW1lbnRzLmNhbGxlci5jYWxsZWUgYW5kIEZpcmVmb3ggZGllcyBpZlxuLy8geW91IHRyeSB0byB0cmFjZSB0aHJvdWdoIFwidXNlIHN0cmljdFwiIGNhbGwgY2hhaW5zLiAoIzEzMzM1KVxuLy9cInVzZSBzdHJpY3RcIjtcbnZhciBhcnIgPSBbXTtcblxudmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50O1xuXG52YXIgc2xpY2UgPSBhcnIuc2xpY2U7XG5cbnZhciBjb25jYXQgPSBhcnIuY29uY2F0O1xuXG52YXIgcHVzaCA9IGFyci5wdXNoO1xuXG52YXIgaW5kZXhPZiA9IGFyci5pbmRleE9mO1xuXG52YXIgY2xhc3MydHlwZSA9IHt9O1xuXG52YXIgdG9TdHJpbmcgPSBjbGFzczJ0eXBlLnRvU3RyaW5nO1xuXG52YXIgaGFzT3duID0gY2xhc3MydHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIHN1cHBvcnQgPSB7fTtcblxuXG5cbnZhclxuXHR2ZXJzaW9uID0gXCIyLjIuNFwiLFxuXG5cdC8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5XG5cdGpRdWVyeSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblxuXHRcdC8vIFRoZSBqUXVlcnkgb2JqZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhlIGluaXQgY29uc3RydWN0b3IgJ2VuaGFuY2VkJ1xuXHRcdC8vIE5lZWQgaW5pdCBpZiBqUXVlcnkgaXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRocm93biBpZiBub3QgaW5jbHVkZWQpXG5cdFx0cmV0dXJuIG5ldyBqUXVlcnkuZm4uaW5pdCggc2VsZWN0b3IsIGNvbnRleHQgKTtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMVxuXHQvLyBNYWtlIHN1cmUgd2UgdHJpbSBCT00gYW5kIE5CU1Bcblx0cnRyaW0gPSAvXltcXHNcXHVGRUZGXFx4QTBdK3xbXFxzXFx1RkVGRlxceEEwXSskL2csXG5cblx0Ly8gTWF0Y2hlcyBkYXNoZWQgc3RyaW5nIGZvciBjYW1lbGl6aW5nXG5cdHJtc1ByZWZpeCA9IC9eLW1zLS8sXG5cdHJkYXNoQWxwaGEgPSAvLShbXFxkYS16XSkvZ2ksXG5cblx0Ly8gVXNlZCBieSBqUXVlcnkuY2FtZWxDYXNlIGFzIGNhbGxiYWNrIHRvIHJlcGxhY2UoKVxuXHRmY2FtZWxDYXNlID0gZnVuY3Rpb24oIGFsbCwgbGV0dGVyICkge1xuXHRcdHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTtcblx0fTtcblxualF1ZXJ5LmZuID0galF1ZXJ5LnByb3RvdHlwZSA9IHtcblxuXHQvLyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkXG5cdGpxdWVyeTogdmVyc2lvbixcblxuXHRjb25zdHJ1Y3RvcjogalF1ZXJ5LFxuXG5cdC8vIFN0YXJ0IHdpdGggYW4gZW1wdHkgc2VsZWN0b3Jcblx0c2VsZWN0b3I6IFwiXCIsXG5cblx0Ly8gVGhlIGRlZmF1bHQgbGVuZ3RoIG9mIGEgalF1ZXJ5IG9iamVjdCBpcyAwXG5cdGxlbmd0aDogMCxcblxuXHR0b0FycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHR9LFxuXG5cdC8vIEdldCB0aGUgTnRoIGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQgT1Jcblx0Ly8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEgY2xlYW4gYXJyYXlcblx0Z2V0OiBmdW5jdGlvbiggbnVtICkge1xuXHRcdHJldHVybiBudW0gIT0gbnVsbCA/XG5cblx0XHRcdC8vIFJldHVybiBqdXN0IHRoZSBvbmUgZWxlbWVudCBmcm9tIHRoZSBzZXRcblx0XHRcdCggbnVtIDwgMCA/IHRoaXNbIG51bSArIHRoaXMubGVuZ3RoIF0gOiB0aGlzWyBudW0gXSApIDpcblxuXHRcdFx0Ly8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBjbGVhbiBhcnJheVxuXHRcdFx0c2xpY2UuY2FsbCggdGhpcyApO1xuXHR9LFxuXG5cdC8vIFRha2UgYW4gYXJyYXkgb2YgZWxlbWVudHMgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2tcblx0Ly8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpXG5cdHB1c2hTdGFjazogZnVuY3Rpb24oIGVsZW1zICkge1xuXG5cdFx0Ly8gQnVpbGQgYSBuZXcgalF1ZXJ5IG1hdGNoZWQgZWxlbWVudCBzZXRcblx0XHR2YXIgcmV0ID0galF1ZXJ5Lm1lcmdlKCB0aGlzLmNvbnN0cnVjdG9yKCksIGVsZW1zICk7XG5cblx0XHQvLyBBZGQgdGhlIG9sZCBvYmplY3Qgb250byB0aGUgc3RhY2sgKGFzIGEgcmVmZXJlbmNlKVxuXHRcdHJldC5wcmV2T2JqZWN0ID0gdGhpcztcblx0XHRyZXQuY29udGV4dCA9IHRoaXMuY29udGV4dDtcblxuXHRcdC8vIFJldHVybiB0aGUgbmV3bHktZm9ybWVkIGVsZW1lbnQgc2V0XG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblxuXHQvLyBFeGVjdXRlIGEgY2FsbGJhY2sgZm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0LlxuXHRlYWNoOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5lYWNoKCB0aGlzLCBjYWxsYmFjayApO1xuXHR9LFxuXG5cdG1hcDogZnVuY3Rpb24oIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5Lm1hcCggdGhpcywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XG5cdFx0XHRyZXR1cm4gY2FsbGJhY2suY2FsbCggZWxlbSwgaSwgZWxlbSApO1xuXHRcdH0gKSApO1xuXHR9LFxuXG5cdHNsaWNlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHNsaWNlLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSApO1xuXHR9LFxuXG5cdGZpcnN0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5lcSggMCApO1xuXHR9LFxuXG5cdGxhc3Q6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmVxKCAtMSApO1xuXHR9LFxuXG5cdGVxOiBmdW5jdGlvbiggaSApIHtcblx0XHR2YXIgbGVuID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRqID0gK2kgKyAoIGkgPCAwID8gbGVuIDogMCApO1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggaiA+PSAwICYmIGogPCBsZW4gPyBbIHRoaXNbIGogXSBdIDogW10gKTtcblx0fSxcblxuXHRlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcigpO1xuXHR9LFxuXG5cdC8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS5cblx0Ly8gQmVoYXZlcyBsaWtlIGFuIEFycmF5J3MgbWV0aG9kLCBub3QgbGlrZSBhIGpRdWVyeSBtZXRob2QuXG5cdHB1c2g6IHB1c2gsXG5cdHNvcnQ6IGFyci5zb3J0LFxuXHRzcGxpY2U6IGFyci5zcGxpY2Vcbn07XG5cbmpRdWVyeS5leHRlbmQgPSBqUXVlcnkuZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7XG5cdHZhciBvcHRpb25zLCBuYW1lLCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZSxcblx0XHR0YXJnZXQgPSBhcmd1bWVudHNbIDAgXSB8fCB7fSxcblx0XHRpID0gMSxcblx0XHRsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLFxuXHRcdGRlZXAgPSBmYWxzZTtcblxuXHQvLyBIYW5kbGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9uXG5cdGlmICggdHlwZW9mIHRhcmdldCA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0ZGVlcCA9IHRhcmdldDtcblxuXHRcdC8vIFNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXRcblx0XHR0YXJnZXQgPSBhcmd1bWVudHNbIGkgXSB8fCB7fTtcblx0XHRpKys7XG5cdH1cblxuXHQvLyBIYW5kbGUgY2FzZSB3aGVuIHRhcmdldCBpcyBhIHN0cmluZyBvciBzb21ldGhpbmcgKHBvc3NpYmxlIGluIGRlZXAgY29weSlcblx0aWYgKCB0eXBlb2YgdGFyZ2V0ICE9PSBcIm9iamVjdFwiICYmICFqUXVlcnkuaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7XG5cdFx0dGFyZ2V0ID0ge307XG5cdH1cblxuXHQvLyBFeHRlbmQgalF1ZXJ5IGl0c2VsZiBpZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWRcblx0aWYgKCBpID09PSBsZW5ndGggKSB7XG5cdFx0dGFyZ2V0ID0gdGhpcztcblx0XHRpLS07XG5cdH1cblxuXHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblxuXHRcdC8vIE9ubHkgZGVhbCB3aXRoIG5vbi1udWxsL3VuZGVmaW5lZCB2YWx1ZXNcblx0XHRpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0gbnVsbCApIHtcblxuXHRcdFx0Ly8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdFxuXHRcdFx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdFx0XHRzcmMgPSB0YXJnZXRbIG5hbWUgXTtcblx0XHRcdFx0Y29weSA9IG9wdGlvbnNbIG5hbWUgXTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICggdGFyZ2V0ID09PSBjb3B5ICkge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzXG5cdFx0XHRcdGlmICggZGVlcCAmJiBjb3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fFxuXHRcdFx0XHRcdCggY29weUlzQXJyYXkgPSBqUXVlcnkuaXNBcnJheSggY29weSApICkgKSApIHtcblxuXHRcdFx0XHRcdGlmICggY29weUlzQXJyYXkgKSB7XG5cdFx0XHRcdFx0XHRjb3B5SXNBcnJheSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgalF1ZXJ5LmlzQXJyYXkoIHNyYyApID8gc3JjIDogW107XG5cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHNyYyApID8gc3JjIDoge307XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gTmV2ZXIgbW92ZSBvcmlnaW5hbCBvYmplY3RzLCBjbG9uZSB0aGVtXG5cdFx0XHRcdFx0dGFyZ2V0WyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApO1xuXG5cdFx0XHRcdC8vIERvbid0IGJyaW5nIGluIHVuZGVmaW5lZCB2YWx1ZXNcblx0XHRcdFx0fSBlbHNlIGlmICggY29weSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0gY29weTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqZWN0XG5cdHJldHVybiB0YXJnZXQ7XG59O1xuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0Ly8gVW5pcXVlIGZvciBlYWNoIGNvcHkgb2YgalF1ZXJ5IG9uIHRoZSBwYWdlXG5cdGV4cGFuZG86IFwialF1ZXJ5XCIgKyAoIHZlcnNpb24gKyBNYXRoLnJhbmRvbSgpICkucmVwbGFjZSggL1xcRC9nLCBcIlwiICksXG5cblx0Ly8gQXNzdW1lIGpRdWVyeSBpcyByZWFkeSB3aXRob3V0IHRoZSByZWFkeSBtb2R1bGVcblx0aXNSZWFkeTogdHJ1ZSxcblxuXHRlcnJvcjogZnVuY3Rpb24oIG1zZyApIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoIG1zZyApO1xuXHR9LFxuXG5cdG5vb3A6IGZ1bmN0aW9uKCkge30sXG5cblx0aXNGdW5jdGlvbjogZnVuY3Rpb24oIG9iaiApIHtcblx0XHRyZXR1cm4galF1ZXJ5LnR5cGUoIG9iaiApID09PSBcImZ1bmN0aW9uXCI7XG5cdH0sXG5cblx0aXNBcnJheTogQXJyYXkuaXNBcnJheSxcblxuXHRpc1dpbmRvdzogZnVuY3Rpb24oIG9iaiApIHtcblx0XHRyZXR1cm4gb2JqICE9IG51bGwgJiYgb2JqID09PSBvYmoud2luZG93O1xuXHR9LFxuXG5cdGlzTnVtZXJpYzogZnVuY3Rpb24oIG9iaiApIHtcblxuXHRcdC8vIHBhcnNlRmxvYXQgTmFOcyBudW1lcmljLWNhc3QgZmFsc2UgcG9zaXRpdmVzIChudWxsfHRydWV8ZmFsc2V8XCJcIilcblx0XHQvLyAuLi5idXQgbWlzaW50ZXJwcmV0cyBsZWFkaW5nLW51bWJlciBzdHJpbmdzLCBwYXJ0aWN1bGFybHkgaGV4IGxpdGVyYWxzIChcIjB4Li4uXCIpXG5cdFx0Ly8gc3VidHJhY3Rpb24gZm9yY2VzIGluZmluaXRpZXMgdG8gTmFOXG5cdFx0Ly8gYWRkaW5nIDEgY29ycmVjdHMgbG9zcyBvZiBwcmVjaXNpb24gZnJvbSBwYXJzZUZsb2F0ICgjMTUxMDApXG5cdFx0dmFyIHJlYWxTdHJpbmdPYmogPSBvYmogJiYgb2JqLnRvU3RyaW5nKCk7XG5cdFx0cmV0dXJuICFqUXVlcnkuaXNBcnJheSggb2JqICkgJiYgKCByZWFsU3RyaW5nT2JqIC0gcGFyc2VGbG9hdCggcmVhbFN0cmluZ09iaiApICsgMSApID49IDA7XG5cdH0sXG5cblx0aXNQbGFpbk9iamVjdDogZnVuY3Rpb24oIG9iaiApIHtcblx0XHR2YXIga2V5O1xuXG5cdFx0Ly8gTm90IHBsYWluIG9iamVjdHM6XG5cdFx0Ly8gLSBBbnkgb2JqZWN0IG9yIHZhbHVlIHdob3NlIGludGVybmFsIFtbQ2xhc3NdXSBwcm9wZXJ0eSBpcyBub3QgXCJbb2JqZWN0IE9iamVjdF1cIlxuXHRcdC8vIC0gRE9NIG5vZGVzXG5cdFx0Ly8gLSB3aW5kb3dcblx0XHRpZiAoIGpRdWVyeS50eXBlKCBvYmogKSAhPT0gXCJvYmplY3RcIiB8fCBvYmoubm9kZVR5cGUgfHwgalF1ZXJ5LmlzV2luZG93KCBvYmogKSApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBOb3Qgb3duIGNvbnN0cnVjdG9yIHByb3BlcnR5IG11c3QgYmUgT2JqZWN0XG5cdFx0aWYgKCBvYmouY29uc3RydWN0b3IgJiZcblx0XHRcdFx0IWhhc093bi5jYWxsKCBvYmosIFwiY29uc3RydWN0b3JcIiApICYmXG5cdFx0XHRcdCFoYXNPd24uY2FsbCggb2JqLmNvbnN0cnVjdG9yLnByb3RvdHlwZSB8fCB7fSwgXCJpc1Byb3RvdHlwZU9mXCIgKSApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBPd24gcHJvcGVydGllcyBhcmUgZW51bWVyYXRlZCBmaXJzdGx5LCBzbyB0byBzcGVlZCB1cCxcblx0XHQvLyBpZiBsYXN0IG9uZSBpcyBvd24sIHRoZW4gYWxsIHByb3BlcnRpZXMgYXJlIG93blxuXHRcdGZvciAoIGtleSBpbiBvYmogKSB7fVxuXG5cdFx0cmV0dXJuIGtleSA9PT0gdW5kZWZpbmVkIHx8IGhhc093bi5jYWxsKCBvYmosIGtleSApO1xuXHR9LFxuXG5cdGlzRW1wdHlPYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0dmFyIG5hbWU7XG5cdFx0Zm9yICggbmFtZSBpbiBvYmogKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdHR5cGU6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0aWYgKCBvYmogPT0gbnVsbCApIHtcblx0XHRcdHJldHVybiBvYmogKyBcIlwiO1xuXHRcdH1cblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NC4wLCBpT1M8NiAoZnVuY3Rpb25pc2ggUmVnRXhwKVxuXHRcdHJldHVybiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBvYmogPT09IFwiZnVuY3Rpb25cIiA/XG5cdFx0XHRjbGFzczJ0eXBlWyB0b1N0cmluZy5jYWxsKCBvYmogKSBdIHx8IFwib2JqZWN0XCIgOlxuXHRcdFx0dHlwZW9mIG9iajtcblx0fSxcblxuXHQvLyBFdmFsdWF0ZXMgYSBzY3JpcHQgaW4gYSBnbG9iYWwgY29udGV4dFxuXHRnbG9iYWxFdmFsOiBmdW5jdGlvbiggY29kZSApIHtcblx0XHR2YXIgc2NyaXB0LFxuXHRcdFx0aW5kaXJlY3QgPSBldmFsO1xuXG5cdFx0Y29kZSA9IGpRdWVyeS50cmltKCBjb2RlICk7XG5cblx0XHRpZiAoIGNvZGUgKSB7XG5cblx0XHRcdC8vIElmIHRoZSBjb2RlIGluY2x1ZGVzIGEgdmFsaWQsIHByb2xvZ3VlIHBvc2l0aW9uXG5cdFx0XHQvLyBzdHJpY3QgbW9kZSBwcmFnbWEsIGV4ZWN1dGUgY29kZSBieSBpbmplY3RpbmcgYVxuXHRcdFx0Ly8gc2NyaXB0IHRhZyBpbnRvIHRoZSBkb2N1bWVudC5cblx0XHRcdGlmICggY29kZS5pbmRleE9mKCBcInVzZSBzdHJpY3RcIiApID09PSAxICkge1xuXHRcdFx0XHRzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcInNjcmlwdFwiICk7XG5cdFx0XHRcdHNjcmlwdC50ZXh0ID0gY29kZTtcblx0XHRcdFx0ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0ICkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggc2NyaXB0ICk7XG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSwgYXZvaWQgdGhlIERPTSBub2RlIGNyZWF0aW9uLCBpbnNlcnRpb25cblx0XHRcdFx0Ly8gYW5kIHJlbW92YWwgYnkgdXNpbmcgYW4gaW5kaXJlY3QgZ2xvYmFsIGV2YWxcblxuXHRcdFx0XHRpbmRpcmVjdCggY29kZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHQvLyBDb252ZXJ0IGRhc2hlZCB0byBjYW1lbENhc2U7IHVzZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzXG5cdC8vIFN1cHBvcnQ6IElFOS0xMStcblx0Ly8gTWljcm9zb2Z0IGZvcmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5NTcyKVxuXHRjYW1lbENhc2U6IGZ1bmN0aW9uKCBzdHJpbmcgKSB7XG5cdFx0cmV0dXJuIHN0cmluZy5yZXBsYWNlKCBybXNQcmVmaXgsIFwibXMtXCIgKS5yZXBsYWNlKCByZGFzaEFscGhhLCBmY2FtZWxDYXNlICk7XG5cdH0sXG5cblx0bm9kZU5hbWU6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXHR9LFxuXG5cdGVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrICkge1xuXHRcdHZhciBsZW5ndGgsIGkgPSAwO1xuXG5cdFx0aWYgKCBpc0FycmF5TGlrZSggb2JqICkgKSB7XG5cdFx0XHRsZW5ndGggPSBvYmoubGVuZ3RoO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoIGkgaW4gb2JqICkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvYmo7XG5cdH0sXG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjFcblx0dHJpbTogZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0cmV0dXJuIHRleHQgPT0gbnVsbCA/XG5cdFx0XHRcIlwiIDpcblx0XHRcdCggdGV4dCArIFwiXCIgKS5yZXBsYWNlKCBydHJpbSwgXCJcIiApO1xuXHR9LFxuXG5cdC8vIHJlc3VsdHMgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcblx0bWFrZUFycmF5OiBmdW5jdGlvbiggYXJyLCByZXN1bHRzICkge1xuXHRcdHZhciByZXQgPSByZXN1bHRzIHx8IFtdO1xuXG5cdFx0aWYgKCBhcnIgIT0gbnVsbCApIHtcblx0XHRcdGlmICggaXNBcnJheUxpa2UoIE9iamVjdCggYXJyICkgKSApIHtcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCByZXQsXG5cdFx0XHRcdFx0dHlwZW9mIGFyciA9PT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdFx0WyBhcnIgXSA6IGFyclxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cHVzaC5jYWxsKCByZXQsIGFyciApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXQ7XG5cdH0sXG5cblx0aW5BcnJheTogZnVuY3Rpb24oIGVsZW0sIGFyciwgaSApIHtcblx0XHRyZXR1cm4gYXJyID09IG51bGwgPyAtMSA6IGluZGV4T2YuY2FsbCggYXJyLCBlbGVtLCBpICk7XG5cdH0sXG5cblx0bWVyZ2U6IGZ1bmN0aW9uKCBmaXJzdCwgc2Vjb25kICkge1xuXHRcdHZhciBsZW4gPSArc2Vjb25kLmxlbmd0aCxcblx0XHRcdGogPSAwLFxuXHRcdFx0aSA9IGZpcnN0Lmxlbmd0aDtcblxuXHRcdGZvciAoIDsgaiA8IGxlbjsgaisrICkge1xuXHRcdFx0Zmlyc3RbIGkrKyBdID0gc2Vjb25kWyBqIF07XG5cdFx0fVxuXG5cdFx0Zmlyc3QubGVuZ3RoID0gaTtcblxuXHRcdHJldHVybiBmaXJzdDtcblx0fSxcblxuXHRncmVwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBpbnZlcnQgKSB7XG5cdFx0dmFyIGNhbGxiYWNrSW52ZXJzZSxcblx0XHRcdG1hdGNoZXMgPSBbXSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0bGVuZ3RoID0gZWxlbXMubGVuZ3RoLFxuXHRcdFx0Y2FsbGJhY2tFeHBlY3QgPSAhaW52ZXJ0O1xuXG5cdFx0Ly8gR28gdGhyb3VnaCB0aGUgYXJyYXksIG9ubHkgc2F2aW5nIHRoZSBpdGVtc1xuXHRcdC8vIHRoYXQgcGFzcyB0aGUgdmFsaWRhdG9yIGZ1bmN0aW9uXG5cdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRjYWxsYmFja0ludmVyc2UgPSAhY2FsbGJhY2soIGVsZW1zWyBpIF0sIGkgKTtcblx0XHRcdGlmICggY2FsbGJhY2tJbnZlcnNlICE9PSBjYWxsYmFja0V4cGVjdCApIHtcblx0XHRcdFx0bWF0Y2hlcy5wdXNoKCBlbGVtc1sgaSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1hdGNoZXM7XG5cdH0sXG5cblx0Ly8gYXJnIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdG1hcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgYXJnICkge1xuXHRcdHZhciBsZW5ndGgsIHZhbHVlLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRyZXQgPSBbXTtcblxuXHRcdC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCB0cmFuc2xhdGluZyBlYWNoIG9mIHRoZSBpdGVtcyB0byB0aGVpciBuZXcgdmFsdWVzXG5cdFx0aWYgKCBpc0FycmF5TGlrZSggZWxlbXMgKSApIHtcblx0XHRcdGxlbmd0aCA9IGVsZW1zLmxlbmd0aDtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTtcblxuXHRcdFx0XHRpZiAoIHZhbHVlICE9IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0LnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEdvIHRocm91Z2ggZXZlcnkga2V5IG9uIHRoZSBvYmplY3QsXG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoIGkgaW4gZWxlbXMgKSB7XG5cdFx0XHRcdHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApO1xuXG5cdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXQucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXNcblx0XHRyZXR1cm4gY29uY2F0LmFwcGx5KCBbXSwgcmV0ICk7XG5cdH0sXG5cblx0Ly8gQSBnbG9iYWwgR1VJRCBjb3VudGVyIGZvciBvYmplY3RzXG5cdGd1aWQ6IDEsXG5cblx0Ly8gQmluZCBhIGZ1bmN0aW9uIHRvIGEgY29udGV4dCwgb3B0aW9uYWxseSBwYXJ0aWFsbHkgYXBwbHlpbmcgYW55XG5cdC8vIGFyZ3VtZW50cy5cblx0cHJveHk6IGZ1bmN0aW9uKCBmbiwgY29udGV4dCApIHtcblx0XHR2YXIgdG1wLCBhcmdzLCBwcm94eTtcblxuXHRcdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHR0bXAgPSBmblsgY29udGV4dCBdO1xuXHRcdFx0Y29udGV4dCA9IGZuO1xuXHRcdFx0Zm4gPSB0bXA7XG5cdFx0fVxuXG5cdFx0Ly8gUXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhlIHNwZWNcblx0XHQvLyB0aGlzIHRocm93cyBhIFR5cGVFcnJvciwgYnV0IHdlIHdpbGwganVzdCByZXR1cm4gdW5kZWZpbmVkLlxuXHRcdGlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCBmbiApICkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBTaW11bGF0ZWQgYmluZFxuXHRcdGFyZ3MgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMsIDIgKTtcblx0XHRwcm94eSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSApICk7XG5cdFx0fTtcblxuXHRcdC8vIFNldCB0aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0aGUgc2FtZSBvZiBvcmlnaW5hbCBoYW5kbGVyLCBzbyBpdCBjYW4gYmUgcmVtb3ZlZFxuXHRcdHByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrO1xuXG5cdFx0cmV0dXJuIHByb3h5O1xuXHR9LFxuXG5cdG5vdzogRGF0ZS5ub3csXG5cblx0Ly8galF1ZXJ5LnN1cHBvcnQgaXMgbm90IHVzZWQgaW4gQ29yZSBidXQgb3RoZXIgcHJvamVjdHMgYXR0YWNoIHRoZWlyXG5cdC8vIHByb3BlcnRpZXMgdG8gaXQgc28gaXQgbmVlZHMgdG8gZXhpc3QuXG5cdHN1cHBvcnQ6IHN1cHBvcnRcbn0gKTtcblxuLy8gSlNIaW50IHdvdWxkIGVycm9yIG9uIHRoaXMgY29kZSBkdWUgdG8gdGhlIFN5bWJvbCBub3QgYmVpbmcgZGVmaW5lZCBpbiBFUzUuXG4vLyBEZWZpbmluZyB0aGlzIGdsb2JhbCBpbiAuanNoaW50cmMgd291bGQgY3JlYXRlIGEgZGFuZ2VyIG9mIHVzaW5nIHRoZSBnbG9iYWxcbi8vIHVuZ3VhcmRlZCBpbiBhbm90aGVyIHBsYWNlLCBpdCBzZWVtcyBzYWZlciB0byBqdXN0IGRpc2FibGUgSlNIaW50IGZvciB0aGVzZVxuLy8gdGhyZWUgbGluZXMuXG4vKiBqc2hpbnQgaWdub3JlOiBzdGFydCAqL1xuaWYgKCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgKSB7XG5cdGpRdWVyeS5mblsgU3ltYm9sLml0ZXJhdG9yIF0gPSBhcnJbIFN5bWJvbC5pdGVyYXRvciBdO1xufVxuLyoganNoaW50IGlnbm9yZTogZW5kICovXG5cbi8vIFBvcHVsYXRlIHRoZSBjbGFzczJ0eXBlIG1hcFxualF1ZXJ5LmVhY2goIFwiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2xcIi5zcGxpdCggXCIgXCIgKSxcbmZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHRjbGFzczJ0eXBlWyBcIltvYmplY3QgXCIgKyBuYW1lICsgXCJdXCIgXSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbn0gKTtcblxuZnVuY3Rpb24gaXNBcnJheUxpa2UoIG9iaiApIHtcblxuXHQvLyBTdXBwb3J0OiBpT1MgOC4yIChub3QgcmVwcm9kdWNpYmxlIGluIHNpbXVsYXRvcilcblx0Ly8gYGluYCBjaGVjayB1c2VkIHRvIHByZXZlbnQgSklUIGVycm9yIChnaC0yMTQ1KVxuXHQvLyBoYXNPd24gaXNuJ3QgdXNlZCBoZXJlIGR1ZSB0byBmYWxzZSBuZWdhdGl2ZXNcblx0Ly8gcmVnYXJkaW5nIE5vZGVsaXN0IGxlbmd0aCBpbiBJRVxuXHR2YXIgbGVuZ3RoID0gISFvYmogJiYgXCJsZW5ndGhcIiBpbiBvYmogJiYgb2JqLmxlbmd0aCxcblx0XHR0eXBlID0galF1ZXJ5LnR5cGUoIG9iaiApO1xuXG5cdGlmICggdHlwZSA9PT0gXCJmdW5jdGlvblwiIHx8IGpRdWVyeS5pc1dpbmRvdyggb2JqICkgKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cmV0dXJuIHR5cGUgPT09IFwiYXJyYXlcIiB8fCBsZW5ndGggPT09IDAgfHxcblx0XHR0eXBlb2YgbGVuZ3RoID09PSBcIm51bWJlclwiICYmIGxlbmd0aCA+IDAgJiYgKCBsZW5ndGggLSAxICkgaW4gb2JqO1xufVxudmFyIFNpenpsZSA9XG4vKiFcbiAqIFNpenpsZSBDU1MgU2VsZWN0b3IgRW5naW5lIHYyLjIuMVxuICogaHR0cDovL3NpenpsZWpzLmNvbS9cbiAqXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKlxuICogRGF0ZTogMjAxNS0xMC0xN1xuICovXG4oZnVuY3Rpb24oIHdpbmRvdyApIHtcblxudmFyIGksXG5cdHN1cHBvcnQsXG5cdEV4cHIsXG5cdGdldFRleHQsXG5cdGlzWE1MLFxuXHR0b2tlbml6ZSxcblx0Y29tcGlsZSxcblx0c2VsZWN0LFxuXHRvdXRlcm1vc3RDb250ZXh0LFxuXHRzb3J0SW5wdXQsXG5cdGhhc0R1cGxpY2F0ZSxcblxuXHQvLyBMb2NhbCBkb2N1bWVudCB2YXJzXG5cdHNldERvY3VtZW50LFxuXHRkb2N1bWVudCxcblx0ZG9jRWxlbSxcblx0ZG9jdW1lbnRJc0hUTUwsXG5cdHJidWdneVFTQSxcblx0cmJ1Z2d5TWF0Y2hlcyxcblx0bWF0Y2hlcyxcblx0Y29udGFpbnMsXG5cblx0Ly8gSW5zdGFuY2Utc3BlY2lmaWMgZGF0YVxuXHRleHBhbmRvID0gXCJzaXp6bGVcIiArIDEgKiBuZXcgRGF0ZSgpLFxuXHRwcmVmZXJyZWREb2MgPSB3aW5kb3cuZG9jdW1lbnQsXG5cdGRpcnJ1bnMgPSAwLFxuXHRkb25lID0gMCxcblx0Y2xhc3NDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdHRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRjb21waWxlckNhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0c29ydE9yZGVyID0gZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIDA7XG5cdH0sXG5cblx0Ly8gR2VuZXJhbC1wdXJwb3NlIGNvbnN0YW50c1xuXHRNQVhfTkVHQVRJVkUgPSAxIDw8IDMxLFxuXG5cdC8vIEluc3RhbmNlIG1ldGhvZHNcblx0aGFzT3duID0gKHt9KS5oYXNPd25Qcm9wZXJ0eSxcblx0YXJyID0gW10sXG5cdHBvcCA9IGFyci5wb3AsXG5cdHB1c2hfbmF0aXZlID0gYXJyLnB1c2gsXG5cdHB1c2ggPSBhcnIucHVzaCxcblx0c2xpY2UgPSBhcnIuc2xpY2UsXG5cdC8vIFVzZSBhIHN0cmlwcGVkLWRvd24gaW5kZXhPZiBhcyBpdCdzIGZhc3RlciB0aGFuIG5hdGl2ZVxuXHQvLyBodHRwOi8vanNwZXJmLmNvbS90aG9yLWluZGV4b2YtdnMtZm9yLzVcblx0aW5kZXhPZiA9IGZ1bmN0aW9uKCBsaXN0LCBlbGVtICkge1xuXHRcdHZhciBpID0gMCxcblx0XHRcdGxlbiA9IGxpc3QubGVuZ3RoO1xuXHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0aWYgKCBsaXN0W2ldID09PSBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gaTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIC0xO1xuXHR9LFxuXG5cdGJvb2xlYW5zID0gXCJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZFwiLFxuXG5cdC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnNcblxuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jd2hpdGVzcGFjZVxuXHR3aGl0ZXNwYWNlID0gXCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiLFxuXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1ZS1kZWYtaWRlbnRpZmllclxuXHRpZGVudGlmaWVyID0gXCIoPzpcXFxcXFxcXC58W1xcXFx3LV18W15cXFxceDAwLVxcXFx4YTBdKStcIixcblxuXHQvLyBBdHRyaWJ1dGUgc2VsZWN0b3JzOiBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2F0dHJpYnV0ZS1zZWxlY3RvcnNcblx0YXR0cmlidXRlcyA9IFwiXFxcXFtcIiArIHdoaXRlc3BhY2UgKyBcIiooXCIgKyBpZGVudGlmaWVyICsgXCIpKD86XCIgKyB3aGl0ZXNwYWNlICtcblx0XHQvLyBPcGVyYXRvciAoY2FwdHVyZSAyKVxuXHRcdFwiKihbKl4kfCF+XT89KVwiICsgd2hpdGVzcGFjZSArXG5cdFx0Ly8gXCJBdHRyaWJ1dGUgdmFsdWVzIG11c3QgYmUgQ1NTIGlkZW50aWZpZXJzIFtjYXB0dXJlIDVdIG9yIHN0cmluZ3MgW2NhcHR1cmUgMyBvciBjYXB0dXJlIDRdXCJcblx0XHRcIiooPzonKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcJ10pKiknfFxcXCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFxcXFwiXSkqKVxcXCJ8KFwiICsgaWRlbnRpZmllciArIFwiKSl8KVwiICsgd2hpdGVzcGFjZSArXG5cdFx0XCIqXFxcXF1cIixcblxuXHRwc2V1ZG9zID0gXCI6KFwiICsgaWRlbnRpZmllciArIFwiKSg/OlxcXFwoKFwiICtcblx0XHQvLyBUbyByZWR1Y2UgdGhlIG51bWJlciBvZiBzZWxlY3RvcnMgbmVlZGluZyB0b2tlbml6ZSBpbiB0aGUgcHJlRmlsdGVyLCBwcmVmZXIgYXJndW1lbnRzOlxuXHRcdC8vIDEuIHF1b3RlZCAoY2FwdHVyZSAzOyBjYXB0dXJlIDQgb3IgY2FwdHVyZSA1KVxuXHRcdFwiKCcoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcIil8XCIgK1xuXHRcdC8vIDIuIHNpbXBsZSAoY2FwdHVyZSA2KVxuXHRcdFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcKClbXFxcXF1dfFwiICsgYXR0cmlidXRlcyArIFwiKSopfFwiICtcblx0XHQvLyAzLiBhbnl0aGluZyBlbHNlIChjYXB0dXJlIDIpXG5cdFx0XCIuKlwiICtcblx0XHRcIilcXFxcKXwpXCIsXG5cblx0Ly8gTGVhZGluZyBhbmQgbm9uLWVzY2FwZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgY2FwdHVyaW5nIHNvbWUgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBwcmVjZWRpbmcgdGhlIGxhdHRlclxuXHRyd2hpdGVzcGFjZSA9IG5ldyBSZWdFeHAoIHdoaXRlc3BhY2UgKyBcIitcIiwgXCJnXCIgKSxcblx0cnRyaW0gPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIit8KCg/Ol58W15cXFxcXFxcXF0pKD86XFxcXFxcXFwuKSopXCIgKyB3aGl0ZXNwYWNlICsgXCIrJFwiLCBcImdcIiApLFxuXG5cdHJjb21tYSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKixcIiArIHdoaXRlc3BhY2UgKyBcIipcIiApLFxuXHRyY29tYmluYXRvcnMgPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIiooWz4rfl18XCIgKyB3aGl0ZXNwYWNlICsgXCIpXCIgKyB3aGl0ZXNwYWNlICsgXCIqXCIgKSxcblxuXHRyYXR0cmlidXRlUXVvdGVzID0gbmV3IFJlZ0V4cCggXCI9XCIgKyB3aGl0ZXNwYWNlICsgXCIqKFteXFxcXF0nXFxcIl0qPylcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcXVwiLCBcImdcIiApLFxuXG5cdHJwc2V1ZG8gPSBuZXcgUmVnRXhwKCBwc2V1ZG9zICksXG5cdHJpZGVudGlmaWVyID0gbmV3IFJlZ0V4cCggXCJeXCIgKyBpZGVudGlmaWVyICsgXCIkXCIgKSxcblxuXHRtYXRjaEV4cHIgPSB7XG5cdFx0XCJJRFwiOiBuZXcgUmVnRXhwKCBcIl4jKFwiICsgaWRlbnRpZmllciArIFwiKVwiICksXG5cdFx0XCJDTEFTU1wiOiBuZXcgUmVnRXhwKCBcIl5cXFxcLihcIiArIGlkZW50aWZpZXIgKyBcIilcIiApLFxuXHRcdFwiVEFHXCI6IG5ldyBSZWdFeHAoIFwiXihcIiArIGlkZW50aWZpZXIgKyBcInxbKl0pXCIgKSxcblx0XHRcIkFUVFJcIjogbmV3IFJlZ0V4cCggXCJeXCIgKyBhdHRyaWJ1dGVzICksXG5cdFx0XCJQU0VVRE9cIjogbmV3IFJlZ0V4cCggXCJeXCIgKyBwc2V1ZG9zICksXG5cdFx0XCJDSElMRFwiOiBuZXcgUmVnRXhwKCBcIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcXFwoXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFwiKihldmVufG9kZHwoKFsrLV18KShcXFxcZCopbnwpXCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86KFsrLV18KVwiICsgd2hpdGVzcGFjZSArXG5cdFx0XHRcIiooXFxcXGQrKXwpKVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFwpfClcIiwgXCJpXCIgKSxcblx0XHRcImJvb2xcIjogbmV3IFJlZ0V4cCggXCJeKD86XCIgKyBib29sZWFucyArIFwiKSRcIiwgXCJpXCIgKSxcblx0XHQvLyBGb3IgdXNlIGluIGxpYnJhcmllcyBpbXBsZW1lbnRpbmcgLmlzKClcblx0XHQvLyBXZSB1c2UgdGhpcyBmb3IgUE9TIG1hdGNoaW5nIGluIGBzZWxlY3RgXG5cdFx0XCJuZWVkc0NvbnRleHRcIjogbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXFxcKFwiICtcblx0XHRcdHdoaXRlc3BhY2UgKyBcIiooKD86LVxcXFxkKT9cXFxcZCopXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXCl8KSg/PVteLV18JClcIiwgXCJpXCIgKVxuXHR9LFxuXG5cdHJpbnB1dHMgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFxuXHRyaGVhZGVyID0gL15oXFxkJC9pLFxuXG5cdHJuYXRpdmUgPSAvXltee10rXFx7XFxzKlxcW25hdGl2ZSBcXHcvLFxuXG5cdC8vIEVhc2lseS1wYXJzZWFibGUvcmV0cmlldmFibGUgSUQgb3IgVEFHIG9yIENMQVNTIHNlbGVjdG9yc1xuXHRycXVpY2tFeHByID0gL14oPzojKFtcXHctXSspfChcXHcrKXxcXC4oW1xcdy1dKykpJC8sXG5cblx0cnNpYmxpbmcgPSAvWyt+XS8sXG5cdHJlc2NhcGUgPSAvJ3xcXFxcL2csXG5cblx0Ly8gQ1NTIGVzY2FwZXMgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI2VzY2FwZWQtY2hhcmFjdGVyc1xuXHRydW5lc2NhcGUgPSBuZXcgUmVnRXhwKCBcIlxcXFxcXFxcKFtcXFxcZGEtZl17MSw2fVwiICsgd2hpdGVzcGFjZSArIFwiP3woXCIgKyB3aGl0ZXNwYWNlICsgXCIpfC4pXCIsIFwiaWdcIiApLFxuXHRmdW5lc2NhcGUgPSBmdW5jdGlvbiggXywgZXNjYXBlZCwgZXNjYXBlZFdoaXRlc3BhY2UgKSB7XG5cdFx0dmFyIGhpZ2ggPSBcIjB4XCIgKyBlc2NhcGVkIC0gMHgxMDAwMDtcblx0XHQvLyBOYU4gbWVhbnMgbm9uLWNvZGVwb2ludFxuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3g8MjRcblx0XHQvLyBXb3JrYXJvdW5kIGVycm9uZW91cyBudW1lcmljIGludGVycHJldGF0aW9uIG9mICtcIjB4XCJcblx0XHRyZXR1cm4gaGlnaCAhPT0gaGlnaCB8fCBlc2NhcGVkV2hpdGVzcGFjZSA/XG5cdFx0XHRlc2NhcGVkIDpcblx0XHRcdGhpZ2ggPCAwID9cblx0XHRcdFx0Ly8gQk1QIGNvZGVwb2ludFxuXHRcdFx0XHRTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoICsgMHgxMDAwMCApIDpcblx0XHRcdFx0Ly8gU3VwcGxlbWVudGFsIFBsYW5lIGNvZGVwb2ludCAoc3Vycm9nYXRlIHBhaXIpXG5cdFx0XHRcdFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggPj4gMTAgfCAweEQ4MDAsIGhpZ2ggJiAweDNGRiB8IDB4REMwMCApO1xuXHR9LFxuXG5cdC8vIFVzZWQgZm9yIGlmcmFtZXNcblx0Ly8gU2VlIHNldERvY3VtZW50KClcblx0Ly8gUmVtb3ZpbmcgdGhlIGZ1bmN0aW9uIHdyYXBwZXIgY2F1c2VzIGEgXCJQZXJtaXNzaW9uIERlbmllZFwiXG5cdC8vIGVycm9yIGluIElFXG5cdHVubG9hZEhhbmRsZXIgPSBmdW5jdGlvbigpIHtcblx0XHRzZXREb2N1bWVudCgpO1xuXHR9O1xuXG4vLyBPcHRpbWl6ZSBmb3IgcHVzaC5hcHBseSggXywgTm9kZUxpc3QgKVxudHJ5IHtcblx0cHVzaC5hcHBseShcblx0XHQoYXJyID0gc2xpY2UuY2FsbCggcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMgKSksXG5cdFx0cHJlZmVycmVkRG9jLmNoaWxkTm9kZXNcblx0KTtcblx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjBcblx0Ly8gRGV0ZWN0IHNpbGVudGx5IGZhaWxpbmcgcHVzaC5hcHBseVxuXHRhcnJbIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzLmxlbmd0aCBdLm5vZGVUeXBlO1xufSBjYXRjaCAoIGUgKSB7XG5cdHB1c2ggPSB7IGFwcGx5OiBhcnIubGVuZ3RoID9cblxuXHRcdC8vIExldmVyYWdlIHNsaWNlIGlmIHBvc3NpYmxlXG5cdFx0ZnVuY3Rpb24oIHRhcmdldCwgZWxzICkge1xuXHRcdFx0cHVzaF9uYXRpdmUuYXBwbHkoIHRhcmdldCwgc2xpY2UuY2FsbChlbHMpICk7XG5cdFx0fSA6XG5cblx0XHQvLyBTdXBwb3J0OiBJRTw5XG5cdFx0Ly8gT3RoZXJ3aXNlIGFwcGVuZCBkaXJlY3RseVxuXHRcdGZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHtcblx0XHRcdHZhciBqID0gdGFyZ2V0Lmxlbmd0aCxcblx0XHRcdFx0aSA9IDA7XG5cdFx0XHQvLyBDYW4ndCB0cnVzdCBOb2RlTGlzdC5sZW5ndGhcblx0XHRcdHdoaWxlICggKHRhcmdldFtqKytdID0gZWxzW2krK10pICkge31cblx0XHRcdHRhcmdldC5sZW5ndGggPSBqIC0gMTtcblx0XHR9XG5cdH07XG59XG5cbmZ1bmN0aW9uIFNpenpsZSggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XG5cdHZhciBtLCBpLCBlbGVtLCBuaWQsIG5pZHNlbGVjdCwgbWF0Y2gsIGdyb3VwcywgbmV3U2VsZWN0b3IsXG5cdFx0bmV3Q29udGV4dCA9IGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50LFxuXG5cdFx0Ly8gbm9kZVR5cGUgZGVmYXVsdHMgdG8gOSwgc2luY2UgY29udGV4dCBkZWZhdWx0cyB0byBkb2N1bWVudFxuXHRcdG5vZGVUeXBlID0gY29udGV4dCA/IGNvbnRleHQubm9kZVR5cGUgOiA5O1xuXG5cdHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdO1xuXG5cdC8vIFJldHVybiBlYXJseSBmcm9tIGNhbGxzIHdpdGggaW52YWxpZCBzZWxlY3RvciBvciBjb250ZXh0XG5cdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiIHx8ICFzZWxlY3RvciB8fFxuXHRcdG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICYmIG5vZGVUeXBlICE9PSAxMSApIHtcblxuXHRcdHJldHVybiByZXN1bHRzO1xuXHR9XG5cblx0Ly8gVHJ5IHRvIHNob3J0Y3V0IGZpbmQgb3BlcmF0aW9ucyAoYXMgb3Bwb3NlZCB0byBmaWx0ZXJzKSBpbiBIVE1MIGRvY3VtZW50c1xuXHRpZiAoICFzZWVkICkge1xuXG5cdFx0aWYgKCAoIGNvbnRleHQgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IHByZWZlcnJlZERvYyApICE9PSBkb2N1bWVudCApIHtcblx0XHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdFx0fVxuXHRcdGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50O1xuXG5cdFx0aWYgKCBkb2N1bWVudElzSFRNTCApIHtcblxuXHRcdFx0Ly8gSWYgdGhlIHNlbGVjdG9yIGlzIHN1ZmZpY2llbnRseSBzaW1wbGUsIHRyeSB1c2luZyBhIFwiZ2V0KkJ5KlwiIERPTSBtZXRob2Rcblx0XHRcdC8vIChleGNlcHRpbmcgRG9jdW1lbnRGcmFnbWVudCBjb250ZXh0LCB3aGVyZSB0aGUgbWV0aG9kcyBkb24ndCBleGlzdClcblx0XHRcdGlmICggbm9kZVR5cGUgIT09IDExICYmIChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSkgKSB7XG5cblx0XHRcdFx0Ly8gSUQgc2VsZWN0b3Jcblx0XHRcdFx0aWYgKCAobSA9IG1hdGNoWzFdKSApIHtcblxuXHRcdFx0XHRcdC8vIERvY3VtZW50IGNvbnRleHRcblx0XHRcdFx0XHRpZiAoIG5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXRcblx0XHRcdFx0XHRcdFx0Ly8gVE9ETzogaWRlbnRpZnkgdmVyc2lvbnNcblx0XHRcdFx0XHRcdFx0Ly8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRFxuXHRcdFx0XHRcdFx0XHRpZiAoIGVsZW0uaWQgPT09IG0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRWxlbWVudCBjb250ZXh0XG5cdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXRcblx0XHRcdFx0XHRcdC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zXG5cdFx0XHRcdFx0XHQvLyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBpbnN0ZWFkIG9mIElEXG5cdFx0XHRcdFx0XHRpZiAoIG5ld0NvbnRleHQgJiYgKGVsZW0gPSBuZXdDb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICkpICYmXG5cdFx0XHRcdFx0XHRcdGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiZcblx0XHRcdFx0XHRcdFx0ZWxlbS5pZCA9PT0gbSApIHtcblxuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFR5cGUgc2VsZWN0b3Jcblx0XHRcdFx0fSBlbHNlIGlmICggbWF0Y2hbMl0gKSB7XG5cdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggc2VsZWN0b3IgKSApO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXG5cdFx0XHRcdC8vIENsYXNzIHNlbGVjdG9yXG5cdFx0XHRcdH0gZWxzZSBpZiAoIChtID0gbWF0Y2hbM10pICYmIHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJlxuXHRcdFx0XHRcdGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApIHtcblxuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggbSApICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVGFrZSBhZHZhbnRhZ2Ugb2YgcXVlcnlTZWxlY3RvckFsbFxuXHRcdFx0aWYgKCBzdXBwb3J0LnFzYSAmJlxuXHRcdFx0XHQhY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdICYmXG5cdFx0XHRcdCghcmJ1Z2d5UVNBIHx8ICFyYnVnZ3lRU0EudGVzdCggc2VsZWN0b3IgKSkgKSB7XG5cblx0XHRcdFx0aWYgKCBub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0XHRuZXdDb250ZXh0ID0gY29udGV4dDtcblx0XHRcdFx0XHRuZXdTZWxlY3RvciA9IHNlbGVjdG9yO1xuXG5cdFx0XHRcdC8vIHFTQSBsb29rcyBvdXRzaWRlIEVsZW1lbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudFxuXHRcdFx0XHQvLyBUaGFua3MgdG8gQW5kcmV3IER1cG9udCBmb3IgdGhpcyB3b3JrYXJvdW5kIHRlY2huaXF1ZVxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PThcblx0XHRcdFx0Ly8gRXhjbHVkZSBvYmplY3QgZWxlbWVudHNcblx0XHRcdFx0fSBlbHNlIGlmICggY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSBcIm9iamVjdFwiICkge1xuXG5cdFx0XHRcdFx0Ly8gQ2FwdHVyZSB0aGUgY29udGV4dCBJRCwgc2V0dGluZyBpdCBmaXJzdCBpZiBuZWNlc3Nhcnlcblx0XHRcdFx0XHRpZiAoIChuaWQgPSBjb250ZXh0LmdldEF0dHJpYnV0ZSggXCJpZFwiICkpICkge1xuXHRcdFx0XHRcdFx0bmlkID0gbmlkLnJlcGxhY2UoIHJlc2NhcGUsIFwiXFxcXCQmXCIgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29udGV4dC5zZXRBdHRyaWJ1dGUoIFwiaWRcIiwgKG5pZCA9IGV4cGFuZG8pICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gUHJlZml4IGV2ZXJ5IHNlbGVjdG9yIGluIHRoZSBsaXN0XG5cdFx0XHRcdFx0Z3JvdXBzID0gdG9rZW5pemUoIHNlbGVjdG9yICk7XG5cdFx0XHRcdFx0aSA9IGdyb3Vwcy5sZW5ndGg7XG5cdFx0XHRcdFx0bmlkc2VsZWN0ID0gcmlkZW50aWZpZXIudGVzdCggbmlkICkgPyBcIiNcIiArIG5pZCA6IFwiW2lkPSdcIiArIG5pZCArIFwiJ11cIjtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGdyb3Vwc1tpXSA9IG5pZHNlbGVjdCArIFwiIFwiICsgdG9TZWxlY3RvciggZ3JvdXBzW2ldICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG5ld1NlbGVjdG9yID0gZ3JvdXBzLmpvaW4oIFwiLFwiICk7XG5cblx0XHRcdFx0XHQvLyBFeHBhbmQgY29udGV4dCBmb3Igc2libGluZyBzZWxlY3RvcnNcblx0XHRcdFx0XHRuZXdDb250ZXh0ID0gcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHxcblx0XHRcdFx0XHRcdGNvbnRleHQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIG5ld1NlbGVjdG9yICkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLFxuXHRcdFx0XHRcdFx0XHRuZXdDb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIG5ld1NlbGVjdG9yIClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHR9IGNhdGNoICggcXNhRXJyb3IgKSB7XG5cdFx0XHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0XHRcdGlmICggbmlkID09PSBleHBhbmRvICkge1xuXHRcdFx0XHRcdFx0XHRjb250ZXh0LnJlbW92ZUF0dHJpYnV0ZSggXCJpZFwiICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWxsIG90aGVyc1xuXHRyZXR1cm4gc2VsZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUga2V5LXZhbHVlIGNhY2hlcyBvZiBsaW1pdGVkIHNpemVcbiAqIEByZXR1cm5zIHtmdW5jdGlvbihzdHJpbmcsIG9iamVjdCl9IFJldHVybnMgdGhlIE9iamVjdCBkYXRhIGFmdGVyIHN0b3JpbmcgaXQgb24gaXRzZWxmIHdpdGhcbiAqXHRwcm9wZXJ0eSBuYW1lIHRoZSAoc3BhY2Utc3VmZml4ZWQpIHN0cmluZyBhbmQgKGlmIHRoZSBjYWNoZSBpcyBsYXJnZXIgdGhhbiBFeHByLmNhY2hlTGVuZ3RoKVxuICpcdGRlbGV0aW5nIHRoZSBvbGRlc3QgZW50cnlcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2FjaGUoKSB7XG5cdHZhciBrZXlzID0gW107XG5cblx0ZnVuY3Rpb24gY2FjaGUoIGtleSwgdmFsdWUgKSB7XG5cdFx0Ly8gVXNlIChrZXkgKyBcIiBcIikgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggbmF0aXZlIHByb3RvdHlwZSBwcm9wZXJ0aWVzIChzZWUgSXNzdWUgIzE1Nylcblx0XHRpZiAoIGtleXMucHVzaCgga2V5ICsgXCIgXCIgKSA+IEV4cHIuY2FjaGVMZW5ndGggKSB7XG5cdFx0XHQvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVudHJpZXNcblx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07XG5cdFx0fVxuXHRcdHJldHVybiAoY2FjaGVbIGtleSArIFwiIFwiIF0gPSB2YWx1ZSk7XG5cdH1cblx0cmV0dXJuIGNhY2hlO1xufVxuXG4vKipcbiAqIE1hcmsgYSBmdW5jdGlvbiBmb3Igc3BlY2lhbCB1c2UgYnkgU2l6emxlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gbWFya1xuICovXG5mdW5jdGlvbiBtYXJrRnVuY3Rpb24oIGZuICkge1xuXHRmblsgZXhwYW5kbyBdID0gdHJ1ZTtcblx0cmV0dXJuIGZuO1xufVxuXG4vKipcbiAqIFN1cHBvcnQgdGVzdGluZyB1c2luZyBhbiBlbGVtZW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZGl2IGFuZCBleHBlY3RzIGEgYm9vbGVhbiByZXN1bHRcbiAqL1xuZnVuY3Rpb24gYXNzZXJ0KCBmbiApIHtcblx0dmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cblx0dHJ5IHtcblx0XHRyZXR1cm4gISFmbiggZGl2ICk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0gZmluYWxseSB7XG5cdFx0Ly8gUmVtb3ZlIGZyb20gaXRzIHBhcmVudCBieSBkZWZhdWx0XG5cdFx0aWYgKCBkaXYucGFyZW50Tm9kZSApIHtcblx0XHRcdGRpdi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBkaXYgKTtcblx0XHR9XG5cdFx0Ly8gcmVsZWFzZSBtZW1vcnkgaW4gSUVcblx0XHRkaXYgPSBudWxsO1xuXHR9XG59XG5cbi8qKlxuICogQWRkcyB0aGUgc2FtZSBoYW5kbGVyIGZvciBhbGwgb2YgdGhlIHNwZWNpZmllZCBhdHRyc1xuICogQHBhcmFtIHtTdHJpbmd9IGF0dHJzIFBpcGUtc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciBUaGUgbWV0aG9kIHRoYXQgd2lsbCBiZSBhcHBsaWVkXG4gKi9cbmZ1bmN0aW9uIGFkZEhhbmRsZSggYXR0cnMsIGhhbmRsZXIgKSB7XG5cdHZhciBhcnIgPSBhdHRycy5zcGxpdChcInxcIiksXG5cdFx0aSA9IGFyci5sZW5ndGg7XG5cblx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0RXhwci5hdHRySGFuZGxlWyBhcnJbaV0gXSA9IGhhbmRsZXI7XG5cdH1cbn1cblxuLyoqXG4gKiBDaGVja3MgZG9jdW1lbnQgb3JkZXIgb2YgdHdvIHNpYmxpbmdzXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGFcbiAqIEBwYXJhbSB7RWxlbWVudH0gYlxuICogQHJldHVybnMge051bWJlcn0gUmV0dXJucyBsZXNzIHRoYW4gMCBpZiBhIHByZWNlZGVzIGIsIGdyZWF0ZXIgdGhhbiAwIGlmIGEgZm9sbG93cyBiXG4gKi9cbmZ1bmN0aW9uIHNpYmxpbmdDaGVjayggYSwgYiApIHtcblx0dmFyIGN1ciA9IGIgJiYgYSxcblx0XHRkaWZmID0gY3VyICYmIGEubm9kZVR5cGUgPT09IDEgJiYgYi5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0KCB+Yi5zb3VyY2VJbmRleCB8fCBNQVhfTkVHQVRJVkUgKSAtXG5cdFx0XHQoIH5hLnNvdXJjZUluZGV4IHx8IE1BWF9ORUdBVElWRSApO1xuXG5cdC8vIFVzZSBJRSBzb3VyY2VJbmRleCBpZiBhdmFpbGFibGUgb24gYm90aCBub2Rlc1xuXHRpZiAoIGRpZmYgKSB7XG5cdFx0cmV0dXJuIGRpZmY7XG5cdH1cblxuXHQvLyBDaGVjayBpZiBiIGZvbGxvd3MgYVxuXHRpZiAoIGN1ciApIHtcblx0XHR3aGlsZSAoIChjdXIgPSBjdXIubmV4dFNpYmxpbmcpICkge1xuXHRcdFx0aWYgKCBjdXIgPT09IGIgKSB7XG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gYSA/IDEgOiAtMTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIGlucHV0IHR5cGVzXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICovXG5mdW5jdGlvbiBjcmVhdGVJbnB1dFBzZXVkbyggdHlwZSApIHtcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdHJldHVybiBuYW1lID09PSBcImlucHV0XCIgJiYgZWxlbS50eXBlID09PSB0eXBlO1xuXHR9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgYnV0dG9uc1xuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQnV0dG9uUHNldWRvKCB0eXBlICkge1xuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0cmV0dXJuIChuYW1lID09PSBcImlucHV0XCIgfHwgbmFtZSA9PT0gXCJidXR0b25cIikgJiYgZWxlbS50eXBlID09PSB0eXBlO1xuXHR9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgcG9zaXRpb25hbHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oIGZuICkge1xuXHRyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBhcmd1bWVudCApIHtcblx0XHRhcmd1bWVudCA9ICthcmd1bWVudDtcblx0XHRyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkge1xuXHRcdFx0dmFyIGosXG5cdFx0XHRcdG1hdGNoSW5kZXhlcyA9IGZuKCBbXSwgc2VlZC5sZW5ndGgsIGFyZ3VtZW50ICksXG5cdFx0XHRcdGkgPSBtYXRjaEluZGV4ZXMubGVuZ3RoO1xuXG5cdFx0XHQvLyBNYXRjaCBlbGVtZW50cyBmb3VuZCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4ZXNcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoIHNlZWRbIChqID0gbWF0Y2hJbmRleGVzW2ldKSBdICkge1xuXHRcdFx0XHRcdHNlZWRbal0gPSAhKG1hdGNoZXNbal0gPSBzZWVkW2pdKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgYSBub2RlIGZvciB2YWxpZGl0eSBhcyBhIFNpenpsZSBjb250ZXh0XG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0PX0gY29udGV4dFxuICogQHJldHVybnMge0VsZW1lbnR8T2JqZWN0fEJvb2xlYW59IFRoZSBpbnB1dCBub2RlIGlmIGFjY2VwdGFibGUsIG90aGVyd2lzZSBhIGZhbHN5IHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHRlc3RDb250ZXh0KCBjb250ZXh0ICkge1xuXHRyZXR1cm4gY29udGV4dCAmJiB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb250ZXh0O1xufVxuXG4vLyBFeHBvc2Ugc3VwcG9ydCB2YXJzIGZvciBjb252ZW5pZW5jZVxuc3VwcG9ydCA9IFNpenpsZS5zdXBwb3J0ID0ge307XG5cbi8qKlxuICogRGV0ZWN0cyBYTUwgbm9kZXNcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IGVsZW0gQW4gZWxlbWVudCBvciBhIGRvY3VtZW50XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZmYgZWxlbSBpcyBhIG5vbi1IVE1MIFhNTCBub2RlXG4gKi9cbmlzWE1MID0gU2l6emxlLmlzWE1MID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdC8vIGRvY3VtZW50RWxlbWVudCBpcyB2ZXJpZmllZCBmb3IgY2FzZXMgd2hlcmUgaXQgZG9lc24ndCB5ZXQgZXhpc3Rcblx0Ly8gKHN1Y2ggYXMgbG9hZGluZyBpZnJhbWVzIGluIElFIC0gIzQ4MzMpXG5cdHZhciBkb2N1bWVudEVsZW1lbnQgPSBlbGVtICYmIChlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSkuZG9jdW1lbnRFbGVtZW50O1xuXHRyZXR1cm4gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lICE9PSBcIkhUTUxcIiA6IGZhbHNlO1xufTtcblxuLyoqXG4gKiBTZXRzIGRvY3VtZW50LXJlbGF0ZWQgdmFyaWFibGVzIG9uY2UgYmFzZWQgb24gdGhlIGN1cnJlbnQgZG9jdW1lbnRcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3R9IFtkb2NdIEFuIGVsZW1lbnQgb3IgZG9jdW1lbnQgb2JqZWN0IHRvIHVzZSB0byBzZXQgdGhlIGRvY3VtZW50XG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjdXJyZW50IGRvY3VtZW50XG4gKi9cbnNldERvY3VtZW50ID0gU2l6emxlLnNldERvY3VtZW50ID0gZnVuY3Rpb24oIG5vZGUgKSB7XG5cdHZhciBoYXNDb21wYXJlLCBwYXJlbnQsXG5cdFx0ZG9jID0gbm9kZSA/IG5vZGUub3duZXJEb2N1bWVudCB8fCBub2RlIDogcHJlZmVycmVkRG9jO1xuXG5cdC8vIFJldHVybiBlYXJseSBpZiBkb2MgaXMgaW52YWxpZCBvciBhbHJlYWR5IHNlbGVjdGVkXG5cdGlmICggZG9jID09PSBkb2N1bWVudCB8fCBkb2Mubm9kZVR5cGUgIT09IDkgfHwgIWRvYy5kb2N1bWVudEVsZW1lbnQgKSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50O1xuXHR9XG5cblx0Ly8gVXBkYXRlIGdsb2JhbCB2YXJpYWJsZXNcblx0ZG9jdW1lbnQgPSBkb2M7XG5cdGRvY0VsZW0gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cdGRvY3VtZW50SXNIVE1MID0gIWlzWE1MKCBkb2N1bWVudCApO1xuXG5cdC8vIFN1cHBvcnQ6IElFIDktMTEsIEVkZ2Vcblx0Ly8gQWNjZXNzaW5nIGlmcmFtZSBkb2N1bWVudHMgYWZ0ZXIgdW5sb2FkIHRocm93cyBcInBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3JzIChqUXVlcnkgIzEzOTM2KVxuXHRpZiAoIChwYXJlbnQgPSBkb2N1bWVudC5kZWZhdWx0VmlldykgJiYgcGFyZW50LnRvcCAhPT0gcGFyZW50ICkge1xuXHRcdC8vIFN1cHBvcnQ6IElFIDExXG5cdFx0aWYgKCBwYXJlbnQuYWRkRXZlbnRMaXN0ZW5lciApIHtcblx0XHRcdHBhcmVudC5hZGRFdmVudExpc3RlbmVyKCBcInVubG9hZFwiLCB1bmxvYWRIYW5kbGVyLCBmYWxzZSApO1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgOSAtIDEwIG9ubHlcblx0XHR9IGVsc2UgaWYgKCBwYXJlbnQuYXR0YWNoRXZlbnQgKSB7XG5cdFx0XHRwYXJlbnQuYXR0YWNoRXZlbnQoIFwib251bmxvYWRcIiwgdW5sb2FkSGFuZGxlciApO1xuXHRcdH1cblx0fVxuXG5cdC8qIEF0dHJpYnV0ZXNcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIFN1cHBvcnQ6IElFPDhcblx0Ly8gVmVyaWZ5IHRoYXQgZ2V0QXR0cmlidXRlIHJlYWxseSByZXR1cm5zIGF0dHJpYnV0ZXMgYW5kIG5vdCBwcm9wZXJ0aWVzXG5cdC8vIChleGNlcHRpbmcgSUU4IGJvb2xlYW5zKVxuXHRzdXBwb3J0LmF0dHJpYnV0ZXMgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0XHRkaXYuY2xhc3NOYW1lID0gXCJpXCI7XG5cdFx0cmV0dXJuICFkaXYuZ2V0QXR0cmlidXRlKFwiY2xhc3NOYW1lXCIpO1xuXHR9KTtcblxuXHQvKiBnZXRFbGVtZW50KHMpQnkqXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBDaGVjayBpZiBnZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikgcmV0dXJucyBvbmx5IGVsZW1lbnRzXG5cdHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0XHRkaXYuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoXCJcIikgKTtcblx0XHRyZXR1cm4gIWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikubGVuZ3RoO1xuXHR9KTtcblxuXHQvLyBTdXBwb3J0OiBJRTw5XG5cdHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IHJuYXRpdmUudGVzdCggZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApO1xuXG5cdC8vIFN1cHBvcnQ6IElFPDEwXG5cdC8vIENoZWNrIGlmIGdldEVsZW1lbnRCeUlkIHJldHVybnMgZWxlbWVudHMgYnkgbmFtZVxuXHQvLyBUaGUgYnJva2VuIGdldEVsZW1lbnRCeUlkIG1ldGhvZHMgZG9uJ3QgcGljayB1cCBwcm9ncmFtYXRpY2FsbHktc2V0IG5hbWVzLFxuXHQvLyBzbyB1c2UgYSByb3VuZGFib3V0IGdldEVsZW1lbnRzQnlOYW1lIHRlc3Rcblx0c3VwcG9ydC5nZXRCeUlkID0gYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7XG5cdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZGl2ICkuaWQgPSBleHBhbmRvO1xuXHRcdHJldHVybiAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUgfHwgIWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICkubGVuZ3RoO1xuXHR9KTtcblxuXHQvLyBJRCBmaW5kIGFuZCBmaWx0ZXJcblx0aWYgKCBzdXBwb3J0LmdldEJ5SWQgKSB7XG5cdFx0RXhwci5maW5kW1wiSURcIl0gPSBmdW5jdGlvbiggaWQsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50SXNIVE1MICkge1xuXHRcdFx0XHR2YXIgbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7XG5cdFx0XHRcdHJldHVybiBtID8gWyBtIF0gOiBbXTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdEV4cHIuZmlsdGVyW1wiSURcIl0gPSBmdW5jdGlvbiggaWQgKSB7XG5cdFx0XHR2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKFwiaWRcIikgPT09IGF0dHJJZDtcblx0XHRcdH07XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHQvLyBTdXBwb3J0OiBJRTYvN1xuXHRcdC8vIGdldEVsZW1lbnRCeUlkIGlzIG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXRcblx0XHRkZWxldGUgRXhwci5maW5kW1wiSURcIl07XG5cblx0XHRFeHByLmZpbHRlcltcIklEXCJdID0gIGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgbm9kZSA9IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUgIT09IFwidW5kZWZpbmVkXCIgJiZcblx0XHRcdFx0XHRlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0cmV0dXJuIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gYXR0cklkO1xuXHRcdFx0fTtcblx0XHR9O1xuXHR9XG5cblx0Ly8gVGFnXG5cdEV4cHIuZmluZFtcIlRBR1wiXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgP1xuXHRcdGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7XG5cblx0XHRcdC8vIERvY3VtZW50RnJhZ21lbnQgbm9kZXMgZG9uJ3QgaGF2ZSBnRUJUTlxuXHRcdFx0fSBlbHNlIGlmICggc3VwcG9ydC5xc2EgKSB7XG5cdFx0XHRcdHJldHVybiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyApO1xuXHRcdFx0fVxuXHRcdH0gOlxuXG5cdFx0ZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcblx0XHRcdHZhciBlbGVtLFxuXHRcdFx0XHR0bXAgPSBbXSxcblx0XHRcdFx0aSA9IDAsXG5cdFx0XHRcdC8vIEJ5IGhhcHB5IGNvaW5jaWRlbmNlLCBhIChicm9rZW4pIGdFQlROIGFwcGVhcnMgb24gRG9jdW1lbnRGcmFnbWVudCBub2RlcyB0b29cblx0XHRcdFx0cmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xuXG5cdFx0XHQvLyBGaWx0ZXIgb3V0IHBvc3NpYmxlIGNvbW1lbnRzXG5cdFx0XHRpZiAoIHRhZyA9PT0gXCIqXCIgKSB7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSByZXN1bHRzW2krK10pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0XHRcdHRtcC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHRtcDtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdH07XG5cblx0Ly8gQ2xhc3Ncblx0RXhwci5maW5kW1wiQ0xBU1NcIl0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgZnVuY3Rpb24oIGNsYXNzTmFtZSwgY29udGV4dCApIHtcblx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTtcblx0XHR9XG5cdH07XG5cblx0LyogUVNBL21hdGNoZXNTZWxlY3RvclxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gUVNBIGFuZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9ydFxuXG5cdC8vIG1hdGNoZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoSUU5L09wZXJhIDExLjUpXG5cdHJidWdneU1hdGNoZXMgPSBbXTtcblxuXHQvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoQ2hyb21lIDIxKVxuXHQvLyBXZSBhbGxvdyB0aGlzIGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3MgYW4gZXJyb3Jcblx0Ly8gd2hlbmV2ZXIgYGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRgIGlzIGFjY2Vzc2VkIG9uIGFuIGlmcmFtZVxuXHQvLyBTbywgd2UgYWxsb3cgOmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRvIGF2b2lkIHRoZSBJRSBlcnJvclxuXHQvLyBTZWUgaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTMzNzhcblx0cmJ1Z2d5UVNBID0gW107XG5cblx0aWYgKCAoc3VwcG9ydC5xc2EgPSBybmF0aXZlLnRlc3QoIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwgKSkgKSB7XG5cdFx0Ly8gQnVpbGQgUVNBIHJlZ2V4XG5cdFx0Ly8gUmVnZXggc3RyYXRlZ3kgYWRvcHRlZCBmcm9tIERpZWdvIFBlcmluaVxuXHRcdGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRcdFx0Ly8gU2VsZWN0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZVxuXHRcdFx0Ly8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWNpdGx5XG5cdFx0XHQvLyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSxcblx0XHRcdC8vIHNpbmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoXG5cdFx0XHQvLyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjM1OVxuXHRcdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZGl2ICkuaW5uZXJIVE1MID0gXCI8YSBpZD0nXCIgKyBleHBhbmRvICsgXCInPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBpZD0nXCIgKyBleHBhbmRvICsgXCItXFxyXFxcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+XCIgK1xuXHRcdFx0XHRcIjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+XCI7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOCwgT3BlcmEgMTEtMTIuMTZcblx0XHRcdC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj1cblx0XHRcdC8vIFRoZSB0ZXN0IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEgYnV0IFwic2FmZVwiIGZvciBXaW5SVFxuXHRcdFx0Ly8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL2hoNDY1Mzg4LmFzcHgjYXR0cmlidXRlX3NlY3Rpb25cblx0XHRcdGlmICggZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbXNhbGxvd2NhcHR1cmVePScnXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlsqXiRdPVwiICsgd2hpdGVzcGFjZSArIFwiKig/OicnfFxcXCJcXFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gQm9vbGVhbiBhdHRyaWJ1dGVzIGFuZCBcInZhbHVlXCIgYXJlIG5vdCB0cmVhdGVkIGNvcnJlY3RseVxuXHRcdFx0aWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbc2VsZWN0ZWRdXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiXFxcXFtcIiArIHdoaXRlc3BhY2UgKyBcIiooPzp2YWx1ZXxcIiArIGJvb2xlYW5zICsgXCIpXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lPDI5LCBBbmRyb2lkPDQuNCwgU2FmYXJpPDcuMCssIGlPUzw3LjArLCBQaGFudG9tSlM8MS45LjgrXG5cdFx0XHRpZiAoICFkaXYucXVlcnlTZWxlY3RvckFsbCggXCJbaWR+PVwiICsgZXhwYW5kbyArIFwiLV1cIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCJ+PVwiKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gV2Via2l0L09wZXJhIC0gOmNoZWNrZWQgc2hvdWxkIHJldHVybiBzZWxlY3RlZCBvcHRpb24gZWxlbWVudHNcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0b3JzLTIwMTEwOTI5LyNjaGVja2VkXG5cdFx0XHQvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0c1xuXHRcdFx0aWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCI6Y2hlY2tlZFwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwiOmNoZWNrZWRcIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA4KywgaU9TIDgrXG5cdFx0XHQvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2ODUxXG5cdFx0XHQvLyBJbi1wYWdlIGBzZWxlY3RvciNpZCBzaWJpbmctY29tYmluYXRvciBzZWxlY3RvcmAgZmFpbHNcblx0XHRcdGlmICggIWRpdi5xdWVyeVNlbGVjdG9yQWxsKCBcImEjXCIgKyBleHBhbmRvICsgXCIrKlwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIi4jLitbK35dXCIpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0YXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7XG5cdFx0XHQvLyBTdXBwb3J0OiBXaW5kb3dzIDggTmF0aXZlIEFwcHNcblx0XHRcdC8vIFRoZSB0eXBlIGFuZCBuYW1lIGF0dHJpYnV0ZXMgYXJlIHJlc3RyaWN0ZWQgZHVyaW5nIC5pbm5lckhUTUwgYXNzaWdubWVudFxuXHRcdFx0dmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuXHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJoaWRkZW5cIiApO1xuXHRcdFx0ZGl2LmFwcGVuZENoaWxkKCBpbnB1dCApLnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwiRFwiICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gRW5mb3JjZSBjYXNlLXNlbnNpdGl2aXR5IG9mIG5hbWUgYXR0cmlidXRlXG5cdFx0XHRpZiAoIGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiW25hbWU9ZF1cIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJuYW1lXCIgKyB3aGl0ZXNwYWNlICsgXCIqWypeJHwhfl0/PVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZGIDMuNSAtIDplbmFibGVkLzpkaXNhYmxlZCBhbmQgaGlkZGVuIGVsZW1lbnRzIChoaWRkZW4gZWxlbWVudHMgYXJlIHN0aWxsIGVuYWJsZWQpXG5cdFx0XHQvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0c1xuXHRcdFx0aWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCI6ZW5hYmxlZFwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIjplbmFibGVkXCIsIFwiOmRpc2FibGVkXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT3BlcmEgMTAtMTEgZG9lcyBub3QgdGhyb3cgb24gcG9zdC1jb21tYSBpbnZhbGlkIHBzZXVkb3Ncblx0XHRcdGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiKiw6eFwiKTtcblx0XHRcdHJidWdneVFTQS5wdXNoKFwiLC4qOlwiKTtcblx0XHR9KTtcblx0fVxuXG5cdGlmICggKHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yID0gcm5hdGl2ZS50ZXN0KCAobWF0Y2hlcyA9IGRvY0VsZW0ubWF0Y2hlcyB8fFxuXHRcdGRvY0VsZW0ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5tb3pNYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm9NYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm1zTWF0Y2hlc1NlbGVjdG9yKSApKSApIHtcblxuXHRcdGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRcdFx0Ly8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9zc2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yXG5cdFx0XHQvLyBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlIChJRSA5KVxuXHRcdFx0c3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCA9IG1hdGNoZXMuY2FsbCggZGl2LCBcImRpdlwiICk7XG5cblx0XHRcdC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb25cblx0XHRcdC8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWRcblx0XHRcdG1hdGNoZXMuY2FsbCggZGl2LCBcIltzIT0nJ106eFwiICk7XG5cdFx0XHRyYnVnZ3lNYXRjaGVzLnB1c2goIFwiIT1cIiwgcHNldWRvcyApO1xuXHRcdH0pO1xuXHR9XG5cblx0cmJ1Z2d5UVNBID0gcmJ1Z2d5UVNBLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lRU0Euam9pbihcInxcIikgKTtcblx0cmJ1Z2d5TWF0Y2hlcyA9IHJidWdneU1hdGNoZXMubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneU1hdGNoZXMuam9pbihcInxcIikgKTtcblxuXHQvKiBDb250YWluc1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdGhhc0NvbXBhcmUgPSBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29tcGFyZURvY3VtZW50UG9zaXRpb24gKTtcblxuXHQvLyBFbGVtZW50IGNvbnRhaW5zIGFub3RoZXJcblx0Ly8gUHVycG9zZWZ1bGx5IHNlbGYtZXhjbHVzaXZlXG5cdC8vIEFzIGluLCBhbiBlbGVtZW50IGRvZXMgbm90IGNvbnRhaW4gaXRzZWxmXG5cdGNvbnRhaW5zID0gaGFzQ29tcGFyZSB8fCBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29udGFpbnMgKSA/XG5cdFx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0XHR2YXIgYWRvd24gPSBhLm5vZGVUeXBlID09PSA5ID8gYS5kb2N1bWVudEVsZW1lbnQgOiBhLFxuXHRcdFx0XHRidXAgPSBiICYmIGIucGFyZW50Tm9kZTtcblx0XHRcdHJldHVybiBhID09PSBidXAgfHwgISEoIGJ1cCAmJiBidXAubm9kZVR5cGUgPT09IDEgJiYgKFxuXHRcdFx0XHRhZG93bi5jb250YWlucyA/XG5cdFx0XHRcdFx0YWRvd24uY29udGFpbnMoIGJ1cCApIDpcblx0XHRcdFx0XHRhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICYmIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGJ1cCApICYgMTZcblx0XHRcdCkpO1xuXHRcdH0gOlxuXHRcdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdFx0aWYgKCBiICkge1xuXHRcdFx0XHR3aGlsZSAoIChiID0gYi5wYXJlbnROb2RlKSApIHtcblx0XHRcdFx0XHRpZiAoIGIgPT09IGEgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9O1xuXG5cdC8qIFNvcnRpbmdcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIERvY3VtZW50IG9yZGVyIHNvcnRpbmdcblx0c29ydE9yZGVyID0gaGFzQ29tcGFyZSA/XG5cdGZ1bmN0aW9uKCBhLCBiICkge1xuXG5cdFx0Ly8gRmxhZyBmb3IgZHVwbGljYXRlIHJlbW92YWxcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0Ly8gU29ydCBvbiBtZXRob2QgZXhpc3RlbmNlIGlmIG9ubHkgb25lIGlucHV0IGhhcyBjb21wYXJlRG9jdW1lbnRQb3NpdGlvblxuXHRcdHZhciBjb21wYXJlID0gIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gLSAhYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtcblx0XHRpZiAoIGNvbXBhcmUgKSB7XG5cdFx0XHRyZXR1cm4gY29tcGFyZTtcblx0XHR9XG5cblx0XHQvLyBDYWxjdWxhdGUgcG9zaXRpb24gaWYgYm90aCBpbnB1dHMgYmVsb25nIHRvIHRoZSBzYW1lIGRvY3VtZW50XG5cdFx0Y29tcGFyZSA9ICggYS5vd25lckRvY3VtZW50IHx8IGEgKSA9PT0gKCBiLm93bmVyRG9jdW1lbnQgfHwgYiApID9cblx0XHRcdGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGIgKSA6XG5cblx0XHRcdC8vIE90aGVyd2lzZSB3ZSBrbm93IHRoZXkgYXJlIGRpc2Nvbm5lY3RlZFxuXHRcdFx0MTtcblxuXHRcdC8vIERpc2Nvbm5lY3RlZCBub2Rlc1xuXHRcdGlmICggY29tcGFyZSAmIDEgfHxcblx0XHRcdCghc3VwcG9ydC5zb3J0RGV0YWNoZWQgJiYgYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYSApID09PSBjb21wYXJlKSApIHtcblxuXHRcdFx0Ly8gQ2hvb3NlIHRoZSBmaXJzdCBlbGVtZW50IHRoYXQgaXMgcmVsYXRlZCB0byBvdXIgcHJlZmVycmVkIGRvY3VtZW50XG5cdFx0XHRpZiAoIGEgPT09IGRvY3VtZW50IHx8IGEub3duZXJEb2N1bWVudCA9PT0gcHJlZmVycmVkRG9jICYmIGNvbnRhaW5zKHByZWZlcnJlZERvYywgYSkgKSB7XG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHRcdGlmICggYiA9PT0gZG9jdW1lbnQgfHwgYi5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBiKSApIHtcblx0XHRcdFx0cmV0dXJuIDE7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE1haW50YWluIG9yaWdpbmFsIG9yZGVyXG5cdFx0XHRyZXR1cm4gc29ydElucHV0ID9cblx0XHRcdFx0KCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOlxuXHRcdFx0XHQwO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb21wYXJlICYgNCA/IC0xIDogMTtcblx0fSA6XG5cdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdC8vIEV4aXQgZWFybHkgaWYgdGhlIG5vZGVzIGFyZSBpZGVudGljYWxcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0dmFyIGN1cixcblx0XHRcdGkgPSAwLFxuXHRcdFx0YXVwID0gYS5wYXJlbnROb2RlLFxuXHRcdFx0YnVwID0gYi5wYXJlbnROb2RlLFxuXHRcdFx0YXAgPSBbIGEgXSxcblx0XHRcdGJwID0gWyBiIF07XG5cblx0XHQvLyBQYXJlbnRsZXNzIG5vZGVzIGFyZSBlaXRoZXIgZG9jdW1lbnRzIG9yIGRpc2Nvbm5lY3RlZFxuXHRcdGlmICggIWF1cCB8fCAhYnVwICkge1xuXHRcdFx0cmV0dXJuIGEgPT09IGRvY3VtZW50ID8gLTEgOlxuXHRcdFx0XHRiID09PSBkb2N1bWVudCA/IDEgOlxuXHRcdFx0XHRhdXAgPyAtMSA6XG5cdFx0XHRcdGJ1cCA/IDEgOlxuXHRcdFx0XHRzb3J0SW5wdXQgP1xuXHRcdFx0XHQoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBiICkgKSA6XG5cdFx0XHRcdDA7XG5cblx0XHQvLyBJZiB0aGUgbm9kZXMgYXJlIHNpYmxpbmdzLCB3ZSBjYW4gZG8gYSBxdWljayBjaGVja1xuXHRcdH0gZWxzZSBpZiAoIGF1cCA9PT0gYnVwICkge1xuXHRcdFx0cmV0dXJuIHNpYmxpbmdDaGVjayggYSwgYiApO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyd2lzZSB3ZSBuZWVkIGZ1bGwgbGlzdHMgb2YgdGhlaXIgYW5jZXN0b3JzIGZvciBjb21wYXJpc29uXG5cdFx0Y3VyID0gYTtcblx0XHR3aGlsZSAoIChjdXIgPSBjdXIucGFyZW50Tm9kZSkgKSB7XG5cdFx0XHRhcC51bnNoaWZ0KCBjdXIgKTtcblx0XHR9XG5cdFx0Y3VyID0gYjtcblx0XHR3aGlsZSAoIChjdXIgPSBjdXIucGFyZW50Tm9kZSkgKSB7XG5cdFx0XHRicC51bnNoaWZ0KCBjdXIgKTtcblx0XHR9XG5cblx0XHQvLyBXYWxrIGRvd24gdGhlIHRyZWUgbG9va2luZyBmb3IgYSBkaXNjcmVwYW5jeVxuXHRcdHdoaWxlICggYXBbaV0gPT09IGJwW2ldICkge1xuXHRcdFx0aSsrO1xuXHRcdH1cblxuXHRcdHJldHVybiBpID9cblx0XHRcdC8vIERvIGEgc2libGluZyBjaGVjayBpZiB0aGUgbm9kZXMgaGF2ZSBhIGNvbW1vbiBhbmNlc3RvclxuXHRcdFx0c2libGluZ0NoZWNrKCBhcFtpXSwgYnBbaV0gKSA6XG5cblx0XHRcdC8vIE90aGVyd2lzZSBub2RlcyBpbiBvdXIgZG9jdW1lbnQgc29ydCBmaXJzdFxuXHRcdFx0YXBbaV0gPT09IHByZWZlcnJlZERvYyA/IC0xIDpcblx0XHRcdGJwW2ldID09PSBwcmVmZXJyZWREb2MgPyAxIDpcblx0XHRcdDA7XG5cdH07XG5cblx0cmV0dXJuIGRvY3VtZW50O1xufTtcblxuU2l6emxlLm1hdGNoZXMgPSBmdW5jdGlvbiggZXhwciwgZWxlbWVudHMgKSB7XG5cdHJldHVybiBTaXp6bGUoIGV4cHIsIG51bGwsIG51bGwsIGVsZW1lbnRzICk7XG59O1xuXG5TaXp6bGUubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oIGVsZW0sIGV4cHIgKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0fVxuXG5cdC8vIE1ha2Ugc3VyZSB0aGF0IGF0dHJpYnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZFxuXHRleHByID0gZXhwci5yZXBsYWNlKCByYXR0cmlidXRlUXVvdGVzLCBcIj0nJDEnXVwiICk7XG5cblx0aWYgKCBzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciAmJiBkb2N1bWVudElzSFRNTCAmJlxuXHRcdCFjb21waWxlckNhY2hlWyBleHByICsgXCIgXCIgXSAmJlxuXHRcdCggIXJidWdneU1hdGNoZXMgfHwgIXJidWdneU1hdGNoZXMudGVzdCggZXhwciApICkgJiZcblx0XHQoICFyYnVnZ3lRU0EgICAgIHx8ICFyYnVnZ3lRU0EudGVzdCggZXhwciApICkgKSB7XG5cblx0XHR0cnkge1xuXHRcdFx0dmFyIHJldCA9IG1hdGNoZXMuY2FsbCggZWxlbSwgZXhwciApO1xuXG5cdFx0XHQvLyBJRSA5J3MgbWF0Y2hlc1NlbGVjdG9yIHJldHVybnMgZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzXG5cdFx0XHRpZiAoIHJldCB8fCBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8XG5cdFx0XHRcdFx0Ly8gQXMgd2VsbCwgZGlzY29ubmVjdGVkIG5vZGVzIGFyZSBzYWlkIHRvIGJlIGluIGEgZG9jdW1lbnRcblx0XHRcdFx0XHQvLyBmcmFnbWVudCBpbiBJRSA5XG5cdFx0XHRcdFx0ZWxlbS5kb2N1bWVudCAmJiBlbGVtLmRvY3VtZW50Lm5vZGVUeXBlICE9PSAxMSApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7fVxuXHR9XG5cblx0cmV0dXJuIFNpenpsZSggZXhwciwgZG9jdW1lbnQsIG51bGwsIFsgZWxlbSBdICkubGVuZ3RoID4gMDtcbn07XG5cblNpenpsZS5jb250YWlucyA9IGZ1bmN0aW9uKCBjb250ZXh0LCBlbGVtICkge1xuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0aWYgKCAoIGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0ICkgIT09IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdH1cblx0cmV0dXJuIGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICk7XG59O1xuXG5TaXp6bGUuYXR0ciA9IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0aWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBlbGVtICk7XG5cdH1cblxuXHR2YXIgZm4gPSBFeHByLmF0dHJIYW5kbGVbIG5hbWUudG9Mb3dlckNhc2UoKSBdLFxuXHRcdC8vIERvbid0IGdldCBmb29sZWQgYnkgT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzIChqUXVlcnkgIzEzODA3KVxuXHRcdHZhbCA9IGZuICYmIGhhc093bi5jYWxsKCBFeHByLmF0dHJIYW5kbGUsIG5hbWUudG9Mb3dlckNhc2UoKSApID9cblx0XHRcdGZuKCBlbGVtLCBuYW1lLCAhZG9jdW1lbnRJc0hUTUwgKSA6XG5cdFx0XHR1bmRlZmluZWQ7XG5cblx0cmV0dXJuIHZhbCAhPT0gdW5kZWZpbmVkID9cblx0XHR2YWwgOlxuXHRcdHN1cHBvcnQuYXR0cmlidXRlcyB8fCAhZG9jdW1lbnRJc0hUTUwgP1xuXHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKSA6XG5cdFx0XHQodmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpKSAmJiB2YWwuc3BlY2lmaWVkID9cblx0XHRcdFx0dmFsLnZhbHVlIDpcblx0XHRcdFx0bnVsbDtcbn07XG5cblNpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cgKSB7XG5cdHRocm93IG5ldyBFcnJvciggXCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiBcIiArIG1zZyApO1xufTtcblxuLyoqXG4gKiBEb2N1bWVudCBzb3J0aW5nIGFuZCByZW1vdmluZyBkdXBsaWNhdGVzXG4gKiBAcGFyYW0ge0FycmF5TGlrZX0gcmVzdWx0c1xuICovXG5TaXp6bGUudW5pcXVlU29ydCA9IGZ1bmN0aW9uKCByZXN1bHRzICkge1xuXHR2YXIgZWxlbSxcblx0XHRkdXBsaWNhdGVzID0gW10sXG5cdFx0aiA9IDAsXG5cdFx0aSA9IDA7XG5cblx0Ly8gVW5sZXNzIHdlICprbm93KiB3ZSBjYW4gZGV0ZWN0IGR1cGxpY2F0ZXMsIGFzc3VtZSB0aGVpciBwcmVzZW5jZVxuXHRoYXNEdXBsaWNhdGUgPSAhc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzO1xuXHRzb3J0SW5wdXQgPSAhc3VwcG9ydC5zb3J0U3RhYmxlICYmIHJlc3VsdHMuc2xpY2UoIDAgKTtcblx0cmVzdWx0cy5zb3J0KCBzb3J0T3JkZXIgKTtcblxuXHRpZiAoIGhhc0R1cGxpY2F0ZSApIHtcblx0XHR3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHtcblx0XHRcdGlmICggZWxlbSA9PT0gcmVzdWx0c1sgaSBdICkge1xuXHRcdFx0XHRqID0gZHVwbGljYXRlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHdoaWxlICggai0tICkge1xuXHRcdFx0cmVzdWx0cy5zcGxpY2UoIGR1cGxpY2F0ZXNbIGogXSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdC8vIENsZWFyIGlucHV0IGFmdGVyIHNvcnRpbmcgdG8gcmVsZWFzZSBvYmplY3RzXG5cdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L3NpenpsZS9wdWxsLzIyNVxuXHRzb3J0SW5wdXQgPSBudWxsO1xuXG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSB0ZXh0IHZhbHVlIG9mIGFuIGFycmF5IG9mIERPTSBub2Rlc1xuICogQHBhcmFtIHtBcnJheXxFbGVtZW50fSBlbGVtXG4gKi9cbmdldFRleHQgPSBTaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHR2YXIgbm9kZSxcblx0XHRyZXQgPSBcIlwiLFxuXHRcdGkgPSAwLFxuXHRcdG5vZGVUeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRpZiAoICFub2RlVHlwZSApIHtcblx0XHQvLyBJZiBubyBub2RlVHlwZSwgdGhpcyBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheVxuXHRcdHdoaWxlICggKG5vZGUgPSBlbGVtW2krK10pICkge1xuXHRcdFx0Ly8gRG8gbm90IHRyYXZlcnNlIGNvbW1lbnQgbm9kZXNcblx0XHRcdHJldCArPSBnZXRUZXh0KCBub2RlICk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMSB8fCBub2RlVHlwZSA9PT0gOSB8fCBub2RlVHlwZSA9PT0gMTEgKSB7XG5cdFx0Ly8gVXNlIHRleHRDb250ZW50IGZvciBlbGVtZW50c1xuXHRcdC8vIGlubmVyVGV4dCB1c2FnZSByZW1vdmVkIGZvciBjb25zaXN0ZW5jeSBvZiBuZXcgbGluZXMgKGpRdWVyeSAjMTExNTMpXG5cdFx0aWYgKCB0eXBlb2YgZWxlbS50ZXh0Q29udGVudCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiBlbGVtLnRleHRDb250ZW50O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBUcmF2ZXJzZSBpdHMgY2hpbGRyZW5cblx0XHRcdGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkge1xuXHRcdFx0XHRyZXQgKz0gZ2V0VGV4dCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDMgfHwgbm9kZVR5cGUgPT09IDQgKSB7XG5cdFx0cmV0dXJuIGVsZW0ubm9kZVZhbHVlO1xuXHR9XG5cdC8vIERvIG5vdCBpbmNsdWRlIGNvbW1lbnQgb3IgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBub2Rlc1xuXG5cdHJldHVybiByZXQ7XG59O1xuXG5FeHByID0gU2l6emxlLnNlbGVjdG9ycyA9IHtcblxuXHQvLyBDYW4gYmUgYWRqdXN0ZWQgYnkgdGhlIHVzZXJcblx0Y2FjaGVMZW5ndGg6IDUwLFxuXG5cdGNyZWF0ZVBzZXVkbzogbWFya0Z1bmN0aW9uLFxuXG5cdG1hdGNoOiBtYXRjaEV4cHIsXG5cblx0YXR0ckhhbmRsZToge30sXG5cblx0ZmluZDoge30sXG5cblx0cmVsYXRpdmU6IHtcblx0XHRcIj5cIjogeyBkaXI6IFwicGFyZW50Tm9kZVwiLCBmaXJzdDogdHJ1ZSB9LFxuXHRcdFwiIFwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIgfSxcblx0XHRcIitcIjogeyBkaXI6IFwicHJldmlvdXNTaWJsaW5nXCIsIGZpcnN0OiB0cnVlIH0sXG5cdFx0XCJ+XCI6IHsgZGlyOiBcInByZXZpb3VzU2libGluZ1wiIH1cblx0fSxcblxuXHRwcmVGaWx0ZXI6IHtcblx0XHRcIkFUVFJcIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0bWF0Y2hbMV0gPSBtYXRjaFsxXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXG5cdFx0XHQvLyBNb3ZlIHRoZSBnaXZlbiB2YWx1ZSB0byBtYXRjaFszXSB3aGV0aGVyIHF1b3RlZCBvciB1bnF1b3RlZFxuXHRcdFx0bWF0Y2hbM10gPSAoIG1hdGNoWzNdIHx8IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8IFwiXCIgKS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXG5cdFx0XHRpZiAoIG1hdGNoWzJdID09PSBcIn49XCIgKSB7XG5cdFx0XHRcdG1hdGNoWzNdID0gXCIgXCIgKyBtYXRjaFszXSArIFwiIFwiO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDQgKTtcblx0XHR9LFxuXG5cdFx0XCJDSElMRFwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHQvKiBtYXRjaGVzIGZyb20gbWF0Y2hFeHByW1wiQ0hJTERcIl1cblx0XHRcdFx0MSB0eXBlIChvbmx5fG50aHwuLi4pXG5cdFx0XHRcdDIgd2hhdCAoY2hpbGR8b2YtdHlwZSlcblx0XHRcdFx0MyBhcmd1bWVudCAoZXZlbnxvZGR8XFxkKnxcXGQqbihbKy1dXFxkKyk/fC4uLilcblx0XHRcdFx0NCB4bi1jb21wb25lbnQgb2YgeG4reSBhcmd1bWVudCAoWystXT9cXGQqbnwpXG5cdFx0XHRcdDUgc2lnbiBvZiB4bi1jb21wb25lbnRcblx0XHRcdFx0NiB4IG9mIHhuLWNvbXBvbmVudFxuXHRcdFx0XHQ3IHNpZ24gb2YgeS1jb21wb25lbnRcblx0XHRcdFx0OCB5IG9mIHktY29tcG9uZW50XG5cdFx0XHQqL1xuXHRcdFx0bWF0Y2hbMV0gPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0XHRpZiAoIG1hdGNoWzFdLnNsaWNlKCAwLCAzICkgPT09IFwibnRoXCIgKSB7XG5cdFx0XHRcdC8vIG50aC0qIHJlcXVpcmVzIGFyZ3VtZW50XG5cdFx0XHRcdGlmICggIW1hdGNoWzNdICkge1xuXHRcdFx0XHRcdFNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIG51bWVyaWMgeCBhbmQgeSBwYXJhbWV0ZXJzIGZvciBFeHByLmZpbHRlci5DSElMRFxuXHRcdFx0XHQvLyByZW1lbWJlciB0aGF0IGZhbHNlL3RydWUgY2FzdCByZXNwZWN0aXZlbHkgdG8gMC8xXG5cdFx0XHRcdG1hdGNoWzRdID0gKyggbWF0Y2hbNF0gPyBtYXRjaFs1XSArIChtYXRjaFs2XSB8fCAxKSA6IDIgKiAoIG1hdGNoWzNdID09PSBcImV2ZW5cIiB8fCBtYXRjaFszXSA9PT0gXCJvZGRcIiApICk7XG5cdFx0XHRcdG1hdGNoWzVdID0gKyggKCBtYXRjaFs3XSArIG1hdGNoWzhdICkgfHwgbWF0Y2hbM10gPT09IFwib2RkXCIgKTtcblxuXHRcdFx0Ly8gb3RoZXIgdHlwZXMgcHJvaGliaXQgYXJndW1lbnRzXG5cdFx0XHR9IGVsc2UgaWYgKCBtYXRjaFszXSApIHtcblx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFswXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbWF0Y2g7XG5cdFx0fSxcblxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdHZhciBleGNlc3MsXG5cdFx0XHRcdHVucXVvdGVkID0gIW1hdGNoWzZdICYmIG1hdGNoWzJdO1xuXG5cdFx0XHRpZiAoIG1hdGNoRXhwcltcIkNISUxEXCJdLnRlc3QoIG1hdGNoWzBdICkgKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBY2NlcHQgcXVvdGVkIGFyZ3VtZW50cyBhcy1pc1xuXHRcdFx0aWYgKCBtYXRjaFszXSApIHtcblx0XHRcdFx0bWF0Y2hbMl0gPSBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCBcIlwiO1xuXG5cdFx0XHQvLyBTdHJpcCBleGNlc3MgY2hhcmFjdGVycyBmcm9tIHVucXVvdGVkIGFyZ3VtZW50c1xuXHRcdFx0fSBlbHNlIGlmICggdW5xdW90ZWQgJiYgcnBzZXVkby50ZXN0KCB1bnF1b3RlZCApICYmXG5cdFx0XHRcdC8vIEdldCBleGNlc3MgZnJvbSB0b2tlbml6ZSAocmVjdXJzaXZlbHkpXG5cdFx0XHRcdChleGNlc3MgPSB0b2tlbml6ZSggdW5xdW90ZWQsIHRydWUgKSkgJiZcblx0XHRcdFx0Ly8gYWR2YW5jZSB0byB0aGUgbmV4dCBjbG9zaW5nIHBhcmVudGhlc2lzXG5cdFx0XHRcdChleGNlc3MgPSB1bnF1b3RlZC5pbmRleE9mKCBcIilcIiwgdW5xdW90ZWQubGVuZ3RoIC0gZXhjZXNzICkgLSB1bnF1b3RlZC5sZW5ndGgpICkge1xuXG5cdFx0XHRcdC8vIGV4Y2VzcyBpcyBhIG5lZ2F0aXZlIGluZGV4XG5cdFx0XHRcdG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAsIGV4Y2VzcyApO1xuXHRcdFx0XHRtYXRjaFsyXSA9IHVucXVvdGVkLnNsaWNlKCAwLCBleGNlc3MgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV0dXJuIG9ubHkgY2FwdHVyZXMgbmVlZGVkIGJ5IHRoZSBwc2V1ZG8gZmlsdGVyIG1ldGhvZCAodHlwZSBhbmQgYXJndW1lbnQpXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDMgKTtcblx0XHR9XG5cdH0sXG5cblx0ZmlsdGVyOiB7XG5cblx0XHRcIlRBR1wiOiBmdW5jdGlvbiggbm9kZU5hbWVTZWxlY3RvciApIHtcblx0XHRcdHZhciBub2RlTmFtZSA9IG5vZGVOYW1lU2VsZWN0b3IucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIG5vZGVOYW1lU2VsZWN0b3IgPT09IFwiKlwiID9cblx0XHRcdFx0ZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9IDpcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBub2RlTmFtZTtcblx0XHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJDTEFTU1wiOiBmdW5jdGlvbiggY2xhc3NOYW1lICkge1xuXHRcdFx0dmFyIHBhdHRlcm4gPSBjbGFzc0NhY2hlWyBjbGFzc05hbWUgKyBcIiBcIiBdO1xuXG5cdFx0XHRyZXR1cm4gcGF0dGVybiB8fFxuXHRcdFx0XHQocGF0dGVybiA9IG5ldyBSZWdFeHAoIFwiKF58XCIgKyB3aGl0ZXNwYWNlICsgXCIpXCIgKyBjbGFzc05hbWUgKyBcIihcIiArIHdoaXRlc3BhY2UgKyBcInwkKVwiICkpICYmXG5cdFx0XHRcdGNsYXNzQ2FjaGUoIGNsYXNzTmFtZSwgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhdHRlcm4udGVzdCggdHlwZW9mIGVsZW0uY2xhc3NOYW1lID09PSBcInN0cmluZ1wiICYmIGVsZW0uY2xhc3NOYW1lIHx8IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBlbGVtLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpIHx8IFwiXCIgKTtcblx0XHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbmFtZSwgb3BlcmF0b3IsIGNoZWNrICkge1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgcmVzdWx0ID0gU2l6emxlLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdFx0XHRpZiAoIHJlc3VsdCA9PSBudWxsICkge1xuXHRcdFx0XHRcdHJldHVybiBvcGVyYXRvciA9PT0gXCIhPVwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggIW9wZXJhdG9yICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmVzdWx0ICs9IFwiXCI7XG5cblx0XHRcdFx0cmV0dXJuIG9wZXJhdG9yID09PSBcIj1cIiA/IHJlc3VsdCA9PT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIiE9XCIgPyByZXN1bHQgIT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJePVwiID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPT09IDAgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIio9XCIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIkPVwiID8gY2hlY2sgJiYgcmVzdWx0LnNsaWNlKCAtY2hlY2subGVuZ3RoICkgPT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJ+PVwiID8gKCBcIiBcIiArIHJlc3VsdC5yZXBsYWNlKCByd2hpdGVzcGFjZSwgXCIgXCIgKSArIFwiIFwiICkuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJ8PVwiID8gcmVzdWx0ID09PSBjaGVjayB8fCByZXN1bHQuc2xpY2UoIDAsIGNoZWNrLmxlbmd0aCArIDEgKSA9PT0gY2hlY2sgKyBcIi1cIiA6XG5cdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIkNISUxEXCI6IGZ1bmN0aW9uKCB0eXBlLCB3aGF0LCBhcmd1bWVudCwgZmlyc3QsIGxhc3QgKSB7XG5cdFx0XHR2YXIgc2ltcGxlID0gdHlwZS5zbGljZSggMCwgMyApICE9PSBcIm50aFwiLFxuXHRcdFx0XHRmb3J3YXJkID0gdHlwZS5zbGljZSggLTQgKSAhPT0gXCJsYXN0XCIsXG5cdFx0XHRcdG9mVHlwZSA9IHdoYXQgPT09IFwib2YtdHlwZVwiO1xuXG5cdFx0XHRyZXR1cm4gZmlyc3QgPT09IDEgJiYgbGFzdCA9PT0gMCA/XG5cblx0XHRcdFx0Ly8gU2hvcnRjdXQgZm9yIDpudGgtKihuKVxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gISFlbGVtLnBhcmVudE5vZGU7XG5cdFx0XHRcdH0gOlxuXG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0dmFyIGNhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSwgbm9kZSwgbm9kZUluZGV4LCBzdGFydCxcblx0XHRcdFx0XHRcdGRpciA9IHNpbXBsZSAhPT0gZm9yd2FyZCA/IFwibmV4dFNpYmxpbmdcIiA6IFwicHJldmlvdXNTaWJsaW5nXCIsXG5cdFx0XHRcdFx0XHRwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGUsXG5cdFx0XHRcdFx0XHRuYW1lID0gb2ZUeXBlICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxcblx0XHRcdFx0XHRcdHVzZUNhY2hlID0gIXhtbCAmJiAhb2ZUeXBlLFxuXHRcdFx0XHRcdFx0ZGlmZiA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0aWYgKCBwYXJlbnQgKSB7XG5cblx0XHRcdFx0XHRcdC8vIDooZmlyc3R8bGFzdHxvbmx5KS0oY2hpbGR8b2YtdHlwZSlcblx0XHRcdFx0XHRcdGlmICggc2ltcGxlICkge1xuXHRcdFx0XHRcdFx0XHR3aGlsZSAoIGRpciApIHtcblx0XHRcdFx0XHRcdFx0XHRub2RlID0gZWxlbTtcblx0XHRcdFx0XHRcdFx0XHR3aGlsZSAoIChub2RlID0gbm9kZVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBvZlR5cGUgP1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Ly8gUmV2ZXJzZSBkaXJlY3Rpb24gZm9yIDpvbmx5LSogKGlmIHdlIGhhdmVuJ3QgeWV0IGRvbmUgc28pXG5cdFx0XHRcdFx0XHRcdFx0c3RhcnQgPSBkaXIgPSB0eXBlID09PSBcIm9ubHlcIiAmJiAhc3RhcnQgJiYgXCJuZXh0U2libGluZ1wiO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRzdGFydCA9IFsgZm9yd2FyZCA/IHBhcmVudC5maXJzdENoaWxkIDogcGFyZW50Lmxhc3RDaGlsZCBdO1xuXG5cdFx0XHRcdFx0XHQvLyBub24teG1sIDpudGgtY2hpbGQoLi4uKSBzdG9yZXMgY2FjaGUgZGF0YSBvbiBgcGFyZW50YFxuXHRcdFx0XHRcdFx0aWYgKCBmb3J3YXJkICYmIHVzZUNhY2hlICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFNlZWsgYGVsZW1gIGZyb20gYSBwcmV2aW91c2x5LWNhY2hlZCBpbmRleFxuXG5cdFx0XHRcdFx0XHRcdC8vIC4uLmluIGEgZ3ppcC1mcmllbmRseSB3YXlcblx0XHRcdFx0XHRcdFx0bm9kZSA9IHBhcmVudDtcblx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0KG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRjYWNoZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107XG5cdFx0XHRcdFx0XHRcdG5vZGVJbmRleCA9IGNhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTtcblx0XHRcdFx0XHRcdFx0ZGlmZiA9IG5vZGVJbmRleCAmJiBjYWNoZVsgMiBdO1xuXHRcdFx0XHRcdFx0XHRub2RlID0gbm9kZUluZGV4ICYmIHBhcmVudC5jaGlsZE5vZGVzWyBub2RlSW5kZXggXTtcblxuXHRcdFx0XHRcdFx0XHR3aGlsZSAoIChub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fFxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gRmFsbGJhY2sgdG8gc2Vla2luZyBgZWxlbWAgZnJvbSB0aGUgc3RhcnRcblx0XHRcdFx0XHRcdFx0XHQoZGlmZiA9IG5vZGVJbmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFdoZW4gZm91bmQsIGNhY2hlIGluZGV4ZXMgb24gYHBhcmVudGAgYW5kIGJyZWFrXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBub2RlLm5vZGVUeXBlID09PSAxICYmICsrZGlmZiAmJiBub2RlID09PSBlbGVtICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgbm9kZUluZGV4LCBkaWZmIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gVXNlIHByZXZpb3VzbHktY2FjaGVkIGVsZW1lbnQgaW5kZXggaWYgYXZhaWxhYmxlXG5cdFx0XHRcdFx0XHRcdGlmICggdXNlQ2FjaGUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gLi4uaW4gYSBnemlwLWZyaWVuZGx5IHdheVxuXHRcdFx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtO1xuXHRcdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRcdGNhY2hlID0gdW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRub2RlSW5kZXggPSBjYWNoZVsgMCBdID09PSBkaXJydW5zICYmIGNhY2hlWyAxIF07XG5cdFx0XHRcdFx0XHRcdFx0ZGlmZiA9IG5vZGVJbmRleDtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdC8vIHhtbCA6bnRoLWNoaWxkKC4uLilcblx0XHRcdFx0XHRcdFx0Ly8gb3IgOm50aC1sYXN0LWNoaWxkKC4uLikgb3IgOm50aCgtbGFzdCk/LW9mLXR5cGUoLi4uKVxuXHRcdFx0XHRcdFx0XHRpZiAoIGRpZmYgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIFVzZSB0aGUgc2FtZSBsb29wIGFzIGFib3ZlIHRvIHNlZWsgYGVsZW1gIGZyb20gdGhlIHN0YXJ0XG5cdFx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdChkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9wKCkpICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoICggb2ZUeXBlID9cblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlVHlwZSA9PT0gMSApICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCsrZGlmZiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBDYWNoZSB0aGUgaW5kZXggb2YgZWFjaCBlbmNvdW50ZXJlZCBlbGVtZW50XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggdXNlQ2FjaGUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgZGlmZiBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBub2RlID09PSBlbGVtICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIEluY29ycG9yYXRlIHRoZSBvZmZzZXQsIHRoZW4gY2hlY2sgYWdhaW5zdCBjeWNsZSBzaXplXG5cdFx0XHRcdFx0XHRkaWZmIC09IGxhc3Q7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZGlmZiA9PT0gZmlyc3QgfHwgKCBkaWZmICUgZmlyc3QgPT09IDAgJiYgZGlmZiAvIGZpcnN0ID49IDAgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBwc2V1ZG8sIGFyZ3VtZW50ICkge1xuXHRcdFx0Ly8gcHNldWRvLWNsYXNzIG5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI3BzZXVkby1jbGFzc2VzXG5cdFx0XHQvLyBQcmlvcml0aXplIGJ5IGNhc2Ugc2Vuc2l0aXZpdHkgaW4gY2FzZSBjdXN0b20gcHNldWRvcyBhcmUgYWRkZWQgd2l0aCB1cHBlcmNhc2UgbGV0dGVyc1xuXHRcdFx0Ly8gUmVtZW1iZXIgdGhhdCBzZXRGaWx0ZXJzIGluaGVyaXRzIGZyb20gcHNldWRvc1xuXHRcdFx0dmFyIGFyZ3MsXG5cdFx0XHRcdGZuID0gRXhwci5wc2V1ZG9zWyBwc2V1ZG8gXSB8fCBFeHByLnNldEZpbHRlcnNbIHBzZXVkby50b0xvd2VyQ2FzZSgpIF0gfHxcblx0XHRcdFx0XHRTaXp6bGUuZXJyb3IoIFwidW5zdXBwb3J0ZWQgcHNldWRvOiBcIiArIHBzZXVkbyApO1xuXG5cdFx0XHQvLyBUaGUgdXNlciBtYXkgdXNlIGNyZWF0ZVBzZXVkbyB0byBpbmRpY2F0ZSB0aGF0XG5cdFx0XHQvLyBhcmd1bWVudHMgYXJlIG5lZWRlZCB0byBjcmVhdGUgdGhlIGZpbHRlciBmdW5jdGlvblxuXHRcdFx0Ly8ganVzdCBhcyBTaXp6bGUgZG9lc1xuXHRcdFx0aWYgKCBmblsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHRyZXR1cm4gZm4oIGFyZ3VtZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEJ1dCBtYWludGFpbiBzdXBwb3J0IGZvciBvbGQgc2lnbmF0dXJlc1xuXHRcdFx0aWYgKCBmbi5sZW5ndGggPiAxICkge1xuXHRcdFx0XHRhcmdzID0gWyBwc2V1ZG8sIHBzZXVkbywgXCJcIiwgYXJndW1lbnQgXTtcblx0XHRcdFx0cmV0dXJuIEV4cHIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eSggcHNldWRvLnRvTG93ZXJDYXNlKCkgKSA/XG5cdFx0XHRcdFx0bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkge1xuXHRcdFx0XHRcdFx0dmFyIGlkeCxcblx0XHRcdFx0XHRcdFx0bWF0Y2hlZCA9IGZuKCBzZWVkLCBhcmd1bWVudCApLFxuXHRcdFx0XHRcdFx0XHRpID0gbWF0Y2hlZC5sZW5ndGg7XG5cdFx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdFx0aWR4ID0gaW5kZXhPZiggc2VlZCwgbWF0Y2hlZFtpXSApO1xuXHRcdFx0XHRcdFx0XHRzZWVkWyBpZHggXSA9ICEoIG1hdGNoZXNbIGlkeCBdID0gbWF0Y2hlZFtpXSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pIDpcblx0XHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRcdHJldHVybiBmbiggZWxlbSwgMCwgYXJncyApO1xuXHRcdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmbjtcblx0XHR9XG5cdH0sXG5cblx0cHNldWRvczoge1xuXHRcdC8vIFBvdGVudGlhbGx5IGNvbXBsZXggcHNldWRvc1xuXHRcdFwibm90XCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0XHQvLyBUcmltIHRoZSBzZWxlY3RvciBwYXNzZWQgdG8gY29tcGlsZVxuXHRcdFx0Ly8gdG8gYXZvaWQgdHJlYXRpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmdcblx0XHRcdC8vIHNwYWNlcyBhcyBjb21iaW5hdG9yc1xuXHRcdFx0dmFyIGlucHV0ID0gW10sXG5cdFx0XHRcdHJlc3VsdHMgPSBbXSxcblx0XHRcdFx0bWF0Y2hlciA9IGNvbXBpbGUoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSApO1xuXG5cdFx0XHRyZXR1cm4gbWF0Y2hlclsgZXhwYW5kbyBdID9cblx0XHRcdFx0bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0dmFyIGVsZW0sXG5cdFx0XHRcdFx0XHR1bm1hdGNoZWQgPSBtYXRjaGVyKCBzZWVkLCBudWxsLCB4bWwsIFtdICksXG5cdFx0XHRcdFx0XHRpID0gc2VlZC5sZW5ndGg7XG5cblx0XHRcdFx0XHQvLyBNYXRjaCBlbGVtZW50cyB1bm1hdGNoZWQgYnkgYG1hdGNoZXJgXG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSApIHtcblx0XHRcdFx0XHRcdFx0c2VlZFtpXSA9ICEobWF0Y2hlc1tpXSA9IGVsZW0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkgOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdGlucHV0WzBdID0gZWxlbTtcblx0XHRcdFx0XHRtYXRjaGVyKCBpbnB1dCwgbnVsbCwgeG1sLCByZXN1bHRzICk7XG5cdFx0XHRcdFx0Ly8gRG9uJ3Qga2VlcCB0aGUgZWxlbWVudCAoaXNzdWUgIzI5OSlcblx0XHRcdFx0XHRpbnB1dFswXSA9IG51bGw7XG5cdFx0XHRcdFx0cmV0dXJuICFyZXN1bHRzLnBvcCgpO1xuXHRcdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0XCJoYXNcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIFNpenpsZSggc2VsZWN0b3IsIGVsZW0gKS5sZW5ndGggPiAwO1xuXHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdFwiY29udGFpbnNcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuICggZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCB8fCBnZXRUZXh0KCBlbGVtICkgKS5pbmRleE9mKCB0ZXh0ICkgPiAtMTtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHQvLyBcIldoZXRoZXIgYW4gZWxlbWVudCBpcyByZXByZXNlbnRlZCBieSBhIDpsYW5nKCkgc2VsZWN0b3Jcblx0XHQvLyBpcyBiYXNlZCBzb2xlbHkgb24gdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZVxuXHRcdC8vIGJlaW5nIGVxdWFsIHRvIHRoZSBpZGVudGlmaWVyIEMsXG5cdFx0Ly8gb3IgYmVnaW5uaW5nIHdpdGggdGhlIGlkZW50aWZpZXIgQyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBcIi1cIi5cblx0XHQvLyBUaGUgbWF0Y2hpbmcgb2YgQyBhZ2FpbnN0IHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWUgaXMgcGVyZm9ybWVkIGNhc2UtaW5zZW5zaXRpdmVseS5cblx0XHQvLyBUaGUgaWRlbnRpZmllciBDIGRvZXMgbm90IGhhdmUgdG8gYmUgYSB2YWxpZCBsYW5ndWFnZSBuYW1lLlwiXG5cdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNsYW5nLXBzZXVkb1xuXHRcdFwibGFuZ1wiOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBsYW5nICkge1xuXHRcdFx0Ly8gbGFuZyB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRpZmllclxuXHRcdFx0aWYgKCAhcmlkZW50aWZpZXIudGVzdChsYW5nIHx8IFwiXCIpICkge1xuXHRcdFx0XHRTaXp6bGUuZXJyb3IoIFwidW5zdXBwb3J0ZWQgbGFuZzogXCIgKyBsYW5nICk7XG5cdFx0XHR9XG5cdFx0XHRsYW5nID0gbGFuZy5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciBlbGVtTGFuZztcblx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdGlmICggKGVsZW1MYW5nID0gZG9jdW1lbnRJc0hUTUwgP1xuXHRcdFx0XHRcdFx0ZWxlbS5sYW5nIDpcblx0XHRcdFx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlKFwieG1sOmxhbmdcIikgfHwgZWxlbS5nZXRBdHRyaWJ1dGUoXCJsYW5nXCIpKSApIHtcblxuXHRcdFx0XHRcdFx0ZWxlbUxhbmcgPSBlbGVtTGFuZy50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW1MYW5nID09PSBsYW5nIHx8IGVsZW1MYW5nLmluZGV4T2YoIGxhbmcgKyBcIi1cIiApID09PSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSB3aGlsZSAoIChlbGVtID0gZWxlbS5wYXJlbnROb2RlKSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHQvLyBNaXNjZWxsYW5lb3VzXG5cdFx0XCJ0YXJnZXRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0XHRcdHJldHVybiBoYXNoICYmIGhhc2guc2xpY2UoIDEgKSA9PT0gZWxlbS5pZDtcblx0XHR9LFxuXG5cdFx0XCJyb290XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGRvY0VsZW07XG5cdFx0fSxcblxuXHRcdFwiZm9jdXNcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiAoIWRvY3VtZW50Lmhhc0ZvY3VzIHx8IGRvY3VtZW50Lmhhc0ZvY3VzKCkpICYmICEhKGVsZW0udHlwZSB8fCBlbGVtLmhyZWYgfHwgfmVsZW0udGFiSW5kZXgpO1xuXHRcdH0sXG5cblx0XHQvLyBCb29sZWFuIHByb3BlcnRpZXNcblx0XHRcImVuYWJsZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZmFsc2U7XG5cdFx0fSxcblxuXHRcdFwiZGlzYWJsZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0XCJjaGVja2VkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0Ly8gSW4gQ1NTMywgOmNoZWNrZWQgc2hvdWxkIHJldHVybiBib3RoIGNoZWNrZWQgYW5kIHNlbGVjdGVkIGVsZW1lbnRzXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxuXHRcdFx0dmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIChub2RlTmFtZSA9PT0gXCJpbnB1dFwiICYmICEhZWxlbS5jaGVja2VkKSB8fCAobm9kZU5hbWUgPT09IFwib3B0aW9uXCIgJiYgISFlbGVtLnNlbGVjdGVkKTtcblx0XHR9LFxuXG5cdFx0XCJzZWxlY3RlZFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5IG1ha2VzIHNlbGVjdGVkLWJ5LWRlZmF1bHRcblx0XHRcdC8vIG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHlcblx0XHRcdGlmICggZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRlbGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGVsZW0uc2VsZWN0ZWQgPT09IHRydWU7XG5cdFx0fSxcblxuXHRcdC8vIENvbnRlbnRzXG5cdFx0XCJlbXB0eVwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jZW1wdHktcHNldWRvXG5cdFx0XHQvLyA6ZW1wdHkgaXMgbmVnYXRlZCBieSBlbGVtZW50ICgxKSBvciBjb250ZW50IG5vZGVzICh0ZXh0OiAzOyBjZGF0YTogNDsgZW50aXR5IHJlZjogNSksXG5cdFx0XHQvLyAgIGJ1dCBub3QgYnkgb3RoZXJzIChjb21tZW50OiA4OyBwcm9jZXNzaW5nIGluc3RydWN0aW9uOiA3OyBldGMuKVxuXHRcdFx0Ly8gbm9kZVR5cGUgPCA2IHdvcmtzIGJlY2F1c2UgYXR0cmlidXRlcyAoMikgZG8gbm90IGFwcGVhciBhcyBjaGlsZHJlblxuXHRcdFx0Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA8IDYgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0XCJwYXJlbnRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gIUV4cHIucHNldWRvc1tcImVtcHR5XCJdKCBlbGVtICk7XG5cdFx0fSxcblxuXHRcdC8vIEVsZW1lbnQvaW5wdXQgdHlwZXNcblx0XHRcImhlYWRlclwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiByaGVhZGVyLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTtcblx0XHR9LFxuXG5cdFx0XCJpbnB1dFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiByaW5wdXRzLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTtcblx0XHR9LFxuXG5cdFx0XCJidXR0b25cIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBuYW1lID09PSBcImlucHV0XCIgJiYgZWxlbS50eXBlID09PSBcImJ1dHRvblwiIHx8IG5hbWUgPT09IFwiYnV0dG9uXCI7XG5cdFx0fSxcblxuXHRcdFwidGV4dFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBhdHRyO1xuXHRcdFx0cmV0dXJuIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiICYmXG5cdFx0XHRcdGVsZW0udHlwZSA9PT0gXCJ0ZXh0XCIgJiZcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRTw4XG5cdFx0XHRcdC8vIE5ldyBIVE1MNSBhdHRyaWJ1dGUgdmFsdWVzIChlLmcuLCBcInNlYXJjaFwiKSBhcHBlYXIgd2l0aCBlbGVtLnR5cGUgPT09IFwidGV4dFwiXG5cdFx0XHRcdCggKGF0dHIgPSBlbGVtLmdldEF0dHJpYnV0ZShcInR5cGVcIikpID09IG51bGwgfHwgYXR0ci50b0xvd2VyQ2FzZSgpID09PSBcInRleHRcIiApO1xuXHRcdH0sXG5cblx0XHQvLyBQb3NpdGlvbi1pbi1jb2xsZWN0aW9uXG5cdFx0XCJmaXJzdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIFsgMCBdO1xuXHRcdH0pLFxuXG5cdFx0XCJsYXN0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIFsgbGVuZ3RoIC0gMSBdO1xuXHRcdH0pLFxuXG5cdFx0XCJlcVwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHRyZXR1cm4gWyBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50IF07XG5cdFx0fSksXG5cblx0XHRcImV2ZW5cIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHR2YXIgaSA9IDA7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSksXG5cblx0XHRcIm9kZFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHZhciBpID0gMTtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KSxcblxuXHRcdFwibHRcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0dmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50O1xuXHRcdFx0Zm9yICggOyAtLWkgPj0gMDsgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pLFxuXG5cdFx0XCJndFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHR2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7XG5cdFx0XHRmb3IgKCA7ICsraSA8IGxlbmd0aDsgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pXG5cdH1cbn07XG5cbkV4cHIucHNldWRvc1tcIm50aFwiXSA9IEV4cHIucHNldWRvc1tcImVxXCJdO1xuXG4vLyBBZGQgYnV0dG9uL2lucHV0IHR5cGUgcHNldWRvc1xuZm9yICggaSBpbiB7IHJhZGlvOiB0cnVlLCBjaGVja2JveDogdHJ1ZSwgZmlsZTogdHJ1ZSwgcGFzc3dvcmQ6IHRydWUsIGltYWdlOiB0cnVlIH0gKSB7XG5cdEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlSW5wdXRQc2V1ZG8oIGkgKTtcbn1cbmZvciAoIGkgaW4geyBzdWJtaXQ6IHRydWUsIHJlc2V0OiB0cnVlIH0gKSB7XG5cdEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlQnV0dG9uUHNldWRvKCBpICk7XG59XG5cbi8vIEVhc3kgQVBJIGZvciBjcmVhdGluZyBuZXcgc2V0RmlsdGVyc1xuZnVuY3Rpb24gc2V0RmlsdGVycygpIHt9XG5zZXRGaWx0ZXJzLnByb3RvdHlwZSA9IEV4cHIuZmlsdGVycyA9IEV4cHIucHNldWRvcztcbkV4cHIuc2V0RmlsdGVycyA9IG5ldyBzZXRGaWx0ZXJzKCk7XG5cbnRva2VuaXplID0gU2l6emxlLnRva2VuaXplID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBwYXJzZU9ubHkgKSB7XG5cdHZhciBtYXRjaGVkLCBtYXRjaCwgdG9rZW5zLCB0eXBlLFxuXHRcdHNvRmFyLCBncm91cHMsIHByZUZpbHRlcnMsXG5cdFx0Y2FjaGVkID0gdG9rZW5DYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdO1xuXG5cdGlmICggY2FjaGVkICkge1xuXHRcdHJldHVybiBwYXJzZU9ubHkgPyAwIDogY2FjaGVkLnNsaWNlKCAwICk7XG5cdH1cblxuXHRzb0ZhciA9IHNlbGVjdG9yO1xuXHRncm91cHMgPSBbXTtcblx0cHJlRmlsdGVycyA9IEV4cHIucHJlRmlsdGVyO1xuXG5cdHdoaWxlICggc29GYXIgKSB7XG5cblx0XHQvLyBDb21tYSBhbmQgZmlyc3QgcnVuXG5cdFx0aWYgKCAhbWF0Y2hlZCB8fCAobWF0Y2ggPSByY29tbWEuZXhlYyggc29GYXIgKSkgKSB7XG5cdFx0XHRpZiAoIG1hdGNoICkge1xuXHRcdFx0XHQvLyBEb24ndCBjb25zdW1lIHRyYWlsaW5nIGNvbW1hcyBhcyB2YWxpZFxuXHRcdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaFswXS5sZW5ndGggKSB8fCBzb0Zhcjtcblx0XHRcdH1cblx0XHRcdGdyb3Vwcy5wdXNoKCAodG9rZW5zID0gW10pICk7XG5cdFx0fVxuXG5cdFx0bWF0Y2hlZCA9IGZhbHNlO1xuXG5cdFx0Ly8gQ29tYmluYXRvcnNcblx0XHRpZiAoIChtYXRjaCA9IHJjb21iaW5hdG9ycy5leGVjKCBzb0ZhciApKSApIHtcblx0XHRcdG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpO1xuXHRcdFx0dG9rZW5zLnB1c2goe1xuXHRcdFx0XHR2YWx1ZTogbWF0Y2hlZCxcblx0XHRcdFx0Ly8gQ2FzdCBkZXNjZW5kYW50IGNvbWJpbmF0b3JzIHRvIHNwYWNlXG5cdFx0XHRcdHR5cGU6IG1hdGNoWzBdLnJlcGxhY2UoIHJ0cmltLCBcIiBcIiApXG5cdFx0XHR9KTtcblx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7XG5cdFx0fVxuXG5cdFx0Ly8gRmlsdGVyc1xuXHRcdGZvciAoIHR5cGUgaW4gRXhwci5maWx0ZXIgKSB7XG5cdFx0XHRpZiAoIChtYXRjaCA9IG1hdGNoRXhwclsgdHlwZSBdLmV4ZWMoIHNvRmFyICkpICYmICghcHJlRmlsdGVyc1sgdHlwZSBdIHx8XG5cdFx0XHRcdChtYXRjaCA9IHByZUZpbHRlcnNbIHR5cGUgXSggbWF0Y2ggKSkpICkge1xuXHRcdFx0XHRtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTtcblx0XHRcdFx0dG9rZW5zLnB1c2goe1xuXHRcdFx0XHRcdHZhbHVlOiBtYXRjaGVkLFxuXHRcdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdFx0bWF0Y2hlczogbWF0Y2hcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCAhbWF0Y2hlZCApIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBpbnZhbGlkIGV4Y2Vzc1xuXHQvLyBpZiB3ZSdyZSBqdXN0IHBhcnNpbmdcblx0Ly8gT3RoZXJ3aXNlLCB0aHJvdyBhbiBlcnJvciBvciByZXR1cm4gdG9rZW5zXG5cdHJldHVybiBwYXJzZU9ubHkgP1xuXHRcdHNvRmFyLmxlbmd0aCA6XG5cdFx0c29GYXIgP1xuXHRcdFx0U2l6emxlLmVycm9yKCBzZWxlY3RvciApIDpcblx0XHRcdC8vIENhY2hlIHRoZSB0b2tlbnNcblx0XHRcdHRva2VuQ2FjaGUoIHNlbGVjdG9yLCBncm91cHMgKS5zbGljZSggMCApO1xufTtcblxuZnVuY3Rpb24gdG9TZWxlY3RvciggdG9rZW5zICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gdG9rZW5zLmxlbmd0aCxcblx0XHRzZWxlY3RvciA9IFwiXCI7XG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdHNlbGVjdG9yICs9IHRva2Vuc1tpXS52YWx1ZTtcblx0fVxuXHRyZXR1cm4gc2VsZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGFkZENvbWJpbmF0b3IoIG1hdGNoZXIsIGNvbWJpbmF0b3IsIGJhc2UgKSB7XG5cdHZhciBkaXIgPSBjb21iaW5hdG9yLmRpcixcblx0XHRjaGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBkaXIgPT09IFwicGFyZW50Tm9kZVwiLFxuXHRcdGRvbmVOYW1lID0gZG9uZSsrO1xuXG5cdHJldHVybiBjb21iaW5hdG9yLmZpcnN0ID9cblx0XHQvLyBDaGVjayBhZ2FpbnN0IGNsb3Nlc3QgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRcblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHtcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSA6XG5cblx0XHQvLyBDaGVjayBhZ2FpbnN0IGFsbCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudHNcblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIG9sZENhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSxcblx0XHRcdFx0bmV3Q2FjaGUgPSBbIGRpcnJ1bnMsIGRvbmVOYW1lIF07XG5cblx0XHRcdC8vIFdlIGNhbid0IHNldCBhcmJpdHJhcnkgZGF0YSBvbiBYTUwgbm9kZXMsIHNvIHRoZXkgZG9uJ3QgYmVuZWZpdCBmcm9tIGNvbWJpbmF0b3IgY2FjaGluZ1xuXHRcdFx0aWYgKCB4bWwgKSB7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gZWxlbVsgZXhwYW5kbyBdIHx8IChlbGVtWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gfHwgKG91dGVyQ2FjaGVbIGVsZW0udW5pcXVlSUQgXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0aWYgKCAob2xkQ2FjaGUgPSB1bmlxdWVDYWNoZVsgZGlyIF0pICYmXG5cdFx0XHRcdFx0XHRcdG9sZENhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgb2xkQ2FjaGVbIDEgXSA9PT0gZG9uZU5hbWUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQXNzaWduIHRvIG5ld0NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHNcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChuZXdDYWNoZVsgMiBdID0gb2xkQ2FjaGVbIDIgXSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBSZXVzZSBuZXdjYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlWyBkaXIgXSA9IG5ld0NhY2hlO1xuXG5cdFx0XHRcdFx0XHRcdC8vIEEgbWF0Y2ggbWVhbnMgd2UncmUgZG9uZTsgYSBmYWlsIG1lYW5zIHdlIGhhdmUgdG8ga2VlcCBjaGVja2luZ1xuXHRcdFx0XHRcdFx0XHRpZiAoIChuZXdDYWNoZVsgMiBdID0gbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkpICkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcbn1cblxuZnVuY3Rpb24gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICkge1xuXHRyZXR1cm4gbWF0Y2hlcnMubGVuZ3RoID4gMSA/XG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciBpID0gbWF0Y2hlcnMubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggIW1hdGNoZXJzW2ldKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0gOlxuXHRcdG1hdGNoZXJzWzBdO1xufVxuXG5mdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciwgY29udGV4dHMsIHJlc3VsdHMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSBjb250ZXh0cy5sZW5ndGg7XG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFNpenpsZSggc2VsZWN0b3IsIGNvbnRleHRzW2ldLCByZXN1bHRzICk7XG5cdH1cblx0cmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGNvbmRlbnNlKCB1bm1hdGNoZWQsIG1hcCwgZmlsdGVyLCBjb250ZXh0LCB4bWwgKSB7XG5cdHZhciBlbGVtLFxuXHRcdG5ld1VubWF0Y2hlZCA9IFtdLFxuXHRcdGkgPSAwLFxuXHRcdGxlbiA9IHVubWF0Y2hlZC5sZW5ndGgsXG5cdFx0bWFwcGVkID0gbWFwICE9IG51bGw7XG5cblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0aWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7XG5cdFx0XHRpZiAoICFmaWx0ZXIgfHwgZmlsdGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0bmV3VW5tYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0aWYgKCBtYXBwZWQgKSB7XG5cdFx0XHRcdFx0bWFwLnB1c2goIGkgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBuZXdVbm1hdGNoZWQ7XG59XG5cbmZ1bmN0aW9uIHNldE1hdGNoZXIoIHByZUZpbHRlciwgc2VsZWN0b3IsIG1hdGNoZXIsIHBvc3RGaWx0ZXIsIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApIHtcblx0aWYgKCBwb3N0RmlsdGVyICYmICFwb3N0RmlsdGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0cG9zdEZpbHRlciA9IHNldE1hdGNoZXIoIHBvc3RGaWx0ZXIgKTtcblx0fVxuXHRpZiAoIHBvc3RGaW5kZXIgJiYgIXBvc3RGaW5kZXJbIGV4cGFuZG8gXSApIHtcblx0XHRwb3N0RmluZGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICk7XG5cdH1cblx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgcmVzdWx0cywgY29udGV4dCwgeG1sICkge1xuXHRcdHZhciB0ZW1wLCBpLCBlbGVtLFxuXHRcdFx0cHJlTWFwID0gW10sXG5cdFx0XHRwb3N0TWFwID0gW10sXG5cdFx0XHRwcmVleGlzdGluZyA9IHJlc3VsdHMubGVuZ3RoLFxuXG5cdFx0XHQvLyBHZXQgaW5pdGlhbCBlbGVtZW50cyBmcm9tIHNlZWQgb3IgY29udGV4dFxuXHRcdFx0ZWxlbXMgPSBzZWVkIHx8IG11bHRpcGxlQ29udGV4dHMoIHNlbGVjdG9yIHx8IFwiKlwiLCBjb250ZXh0Lm5vZGVUeXBlID8gWyBjb250ZXh0IF0gOiBjb250ZXh0LCBbXSApLFxuXG5cdFx0XHQvLyBQcmVmaWx0ZXIgdG8gZ2V0IG1hdGNoZXIgaW5wdXQsIHByZXNlcnZpbmcgYSBtYXAgZm9yIHNlZWQtcmVzdWx0cyBzeW5jaHJvbml6YXRpb25cblx0XHRcdG1hdGNoZXJJbiA9IHByZUZpbHRlciAmJiAoIHNlZWQgfHwgIXNlbGVjdG9yICkgP1xuXHRcdFx0XHRjb25kZW5zZSggZWxlbXMsIHByZU1hcCwgcHJlRmlsdGVyLCBjb250ZXh0LCB4bWwgKSA6XG5cdFx0XHRcdGVsZW1zLFxuXG5cdFx0XHRtYXRjaGVyT3V0ID0gbWF0Y2hlciA/XG5cdFx0XHRcdC8vIElmIHdlIGhhdmUgYSBwb3N0RmluZGVyLCBvciBmaWx0ZXJlZCBzZWVkLCBvciBub24tc2VlZCBwb3N0RmlsdGVyIG9yIHByZWV4aXN0aW5nIHJlc3VsdHMsXG5cdFx0XHRcdHBvc3RGaW5kZXIgfHwgKCBzZWVkID8gcHJlRmlsdGVyIDogcHJlZXhpc3RpbmcgfHwgcG9zdEZpbHRlciApID9cblxuXHRcdFx0XHRcdC8vIC4uLmludGVybWVkaWF0ZSBwcm9jZXNzaW5nIGlzIG5lY2Vzc2FyeVxuXHRcdFx0XHRcdFtdIDpcblxuXHRcdFx0XHRcdC8vIC4uLm90aGVyd2lzZSB1c2UgcmVzdWx0cyBkaXJlY3RseVxuXHRcdFx0XHRcdHJlc3VsdHMgOlxuXHRcdFx0XHRtYXRjaGVySW47XG5cblx0XHQvLyBGaW5kIHByaW1hcnkgbWF0Y2hlc1xuXHRcdGlmICggbWF0Y2hlciApIHtcblx0XHRcdG1hdGNoZXIoIG1hdGNoZXJJbiwgbWF0Y2hlck91dCwgY29udGV4dCwgeG1sICk7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgcG9zdEZpbHRlclxuXHRcdGlmICggcG9zdEZpbHRlciApIHtcblx0XHRcdHRlbXAgPSBjb25kZW5zZSggbWF0Y2hlck91dCwgcG9zdE1hcCApO1xuXHRcdFx0cG9zdEZpbHRlciggdGVtcCwgW10sIGNvbnRleHQsIHhtbCApO1xuXG5cdFx0XHQvLyBVbi1tYXRjaCBmYWlsaW5nIGVsZW1lbnRzIGJ5IG1vdmluZyB0aGVtIGJhY2sgdG8gbWF0Y2hlckluXG5cdFx0XHRpID0gdGVtcC5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCAoZWxlbSA9IHRlbXBbaV0pICkge1xuXHRcdFx0XHRcdG1hdGNoZXJPdXRbIHBvc3RNYXBbaV0gXSA9ICEobWF0Y2hlckluWyBwb3N0TWFwW2ldIF0gPSBlbGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggc2VlZCApIHtcblx0XHRcdGlmICggcG9zdEZpbmRlciB8fCBwcmVGaWx0ZXIgKSB7XG5cdFx0XHRcdGlmICggcG9zdEZpbmRlciApIHtcblx0XHRcdFx0XHQvLyBHZXQgdGhlIGZpbmFsIG1hdGNoZXJPdXQgYnkgY29uZGVuc2luZyB0aGlzIGludGVybWVkaWF0ZSBpbnRvIHBvc3RGaW5kZXIgY29udGV4dHNcblx0XHRcdFx0XHR0ZW1wID0gW107XG5cdFx0XHRcdFx0aSA9IG1hdGNoZXJPdXQubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IG1hdGNoZXJPdXRbaV0pICkge1xuXHRcdFx0XHRcdFx0XHQvLyBSZXN0b3JlIG1hdGNoZXJJbiBzaW5jZSBlbGVtIGlzIG5vdCB5ZXQgYSBmaW5hbCBtYXRjaFxuXHRcdFx0XHRcdFx0XHR0ZW1wLnB1c2goIChtYXRjaGVySW5baV0gPSBlbGVtKSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRwb3N0RmluZGVyKCBudWxsLCAobWF0Y2hlck91dCA9IFtdKSwgdGVtcCwgeG1sICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBNb3ZlIG1hdGNoZWQgZWxlbWVudHMgZnJvbSBzZWVkIHRvIHJlc3VsdHMgdG8ga2VlcCB0aGVtIHN5bmNocm9uaXplZFxuXHRcdFx0XHRpID0gbWF0Y2hlck91dC5sZW5ndGg7XG5cdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSAmJlxuXHRcdFx0XHRcdFx0KHRlbXAgPSBwb3N0RmluZGVyID8gaW5kZXhPZiggc2VlZCwgZWxlbSApIDogcHJlTWFwW2ldKSA+IC0xICkge1xuXG5cdFx0XHRcdFx0XHRzZWVkW3RlbXBdID0gIShyZXN1bHRzW3RlbXBdID0gZWxlbSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBBZGQgZWxlbWVudHMgdG8gcmVzdWx0cywgdGhyb3VnaCBwb3N0RmluZGVyIGlmIGRlZmluZWRcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWF0Y2hlck91dCA9IGNvbmRlbnNlKFxuXHRcdFx0XHRtYXRjaGVyT3V0ID09PSByZXN1bHRzID9cblx0XHRcdFx0XHRtYXRjaGVyT3V0LnNwbGljZSggcHJlZXhpc3RpbmcsIG1hdGNoZXJPdXQubGVuZ3RoICkgOlxuXHRcdFx0XHRcdG1hdGNoZXJPdXRcblx0XHRcdCk7XG5cdFx0XHRpZiAoIHBvc3RGaW5kZXIgKSB7XG5cdFx0XHRcdHBvc3RGaW5kZXIoIG51bGwsIHJlc3VsdHMsIG1hdGNoZXJPdXQsIHhtbCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgbWF0Y2hlck91dCApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMgKSB7XG5cdHZhciBjaGVja0NvbnRleHQsIG1hdGNoZXIsIGosXG5cdFx0bGVuID0gdG9rZW5zLmxlbmd0aCxcblx0XHRsZWFkaW5nUmVsYXRpdmUgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMF0udHlwZSBdLFxuXHRcdGltcGxpY2l0UmVsYXRpdmUgPSBsZWFkaW5nUmVsYXRpdmUgfHwgRXhwci5yZWxhdGl2ZVtcIiBcIl0sXG5cdFx0aSA9IGxlYWRpbmdSZWxhdGl2ZSA/IDEgOiAwLFxuXG5cdFx0Ly8gVGhlIGZvdW5kYXRpb25hbCBtYXRjaGVyIGVuc3VyZXMgdGhhdCBlbGVtZW50cyBhcmUgcmVhY2hhYmxlIGZyb20gdG9wLWxldmVsIGNvbnRleHQocylcblx0XHRtYXRjaENvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBjaGVja0NvbnRleHQ7XG5cdFx0fSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLFxuXHRcdG1hdGNoQW55Q29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YoIGNoZWNrQ29udGV4dCwgZWxlbSApID4gLTE7XG5cdFx0fSwgaW1wbGljaXRSZWxhdGl2ZSwgdHJ1ZSApLFxuXHRcdG1hdGNoZXJzID0gWyBmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIHJldCA9ICggIWxlYWRpbmdSZWxhdGl2ZSAmJiAoIHhtbCB8fCBjb250ZXh0ICE9PSBvdXRlcm1vc3RDb250ZXh0ICkgKSB8fCAoXG5cdFx0XHRcdChjaGVja0NvbnRleHQgPSBjb250ZXh0KS5ub2RlVHlwZSA/XG5cdFx0XHRcdFx0bWF0Y2hDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSA6XG5cdFx0XHRcdFx0bWF0Y2hBbnlDb250ZXh0KCBlbGVtLCBjb250ZXh0LCB4bWwgKSApO1xuXHRcdFx0Ly8gQXZvaWQgaGFuZ2luZyBvbnRvIGVsZW1lbnQgKGlzc3VlICMyOTkpXG5cdFx0XHRjaGVja0NvbnRleHQgPSBudWxsO1xuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9IF07XG5cblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0aWYgKCAobWF0Y2hlciA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1tpXS50eXBlIF0pICkge1xuXHRcdFx0bWF0Y2hlcnMgPSBbIGFkZENvbWJpbmF0b3IoZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICksIG1hdGNoZXIpIF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1hdGNoZXIgPSBFeHByLmZpbHRlclsgdG9rZW5zW2ldLnR5cGUgXS5hcHBseSggbnVsbCwgdG9rZW5zW2ldLm1hdGNoZXMgKTtcblxuXHRcdFx0Ly8gUmV0dXJuIHNwZWNpYWwgdXBvbiBzZWVpbmcgYSBwb3NpdGlvbmFsIG1hdGNoZXJcblx0XHRcdGlmICggbWF0Y2hlclsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHQvLyBGaW5kIHRoZSBuZXh0IHJlbGF0aXZlIG9wZXJhdG9yIChpZiBhbnkpIGZvciBwcm9wZXIgaGFuZGxpbmdcblx0XHRcdFx0aiA9ICsraTtcblx0XHRcdFx0Zm9yICggOyBqIDwgbGVuOyBqKysgKSB7XG5cdFx0XHRcdFx0aWYgKCBFeHByLnJlbGF0aXZlWyB0b2tlbnNbal0udHlwZSBdICkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBzZXRNYXRjaGVyKFxuXHRcdFx0XHRcdGkgPiAxICYmIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLFxuXHRcdFx0XHRcdGkgPiAxICYmIHRvU2VsZWN0b3IoXG5cdFx0XHRcdFx0XHQvLyBJZiB0aGUgcHJlY2VkaW5nIHRva2VuIHdhcyBhIGRlc2NlbmRhbnQgY29tYmluYXRvciwgaW5zZXJ0IGFuIGltcGxpY2l0IGFueS1lbGVtZW50IGAqYFxuXHRcdFx0XHRcdFx0dG9rZW5zLnNsaWNlKCAwLCBpIC0gMSApLmNvbmNhdCh7IHZhbHVlOiB0b2tlbnNbIGkgLSAyIF0udHlwZSA9PT0gXCIgXCIgPyBcIipcIiA6IFwiXCIgfSlcblx0XHRcdFx0XHQpLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSxcblx0XHRcdFx0XHRtYXRjaGVyLFxuXHRcdFx0XHRcdGkgPCBqICYmIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMuc2xpY2UoIGksIGogKSApLFxuXHRcdFx0XHRcdGogPCBsZW4gJiYgbWF0Y2hlckZyb21Ub2tlbnMoICh0b2tlbnMgPSB0b2tlbnMuc2xpY2UoIGogKSkgKSxcblx0XHRcdFx0XHRqIDwgbGVuICYmIHRvU2VsZWN0b3IoIHRva2VucyApXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRtYXRjaGVycy5wdXNoKCBtYXRjaGVyICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSB7XG5cdHZhciBieVNldCA9IHNldE1hdGNoZXJzLmxlbmd0aCA+IDAsXG5cdFx0YnlFbGVtZW50ID0gZWxlbWVudE1hdGNoZXJzLmxlbmd0aCA+IDAsXG5cdFx0c3VwZXJNYXRjaGVyID0gZnVuY3Rpb24oIHNlZWQsIGNvbnRleHQsIHhtbCwgcmVzdWx0cywgb3V0ZXJtb3N0ICkge1xuXHRcdFx0dmFyIGVsZW0sIGosIG1hdGNoZXIsXG5cdFx0XHRcdG1hdGNoZWRDb3VudCA9IDAsXG5cdFx0XHRcdGkgPSBcIjBcIixcblx0XHRcdFx0dW5tYXRjaGVkID0gc2VlZCAmJiBbXSxcblx0XHRcdFx0c2V0TWF0Y2hlZCA9IFtdLFxuXHRcdFx0XHRjb250ZXh0QmFja3VwID0gb3V0ZXJtb3N0Q29udGV4dCxcblx0XHRcdFx0Ly8gV2UgbXVzdCBhbHdheXMgaGF2ZSBlaXRoZXIgc2VlZCBlbGVtZW50cyBvciBvdXRlcm1vc3QgY29udGV4dFxuXHRcdFx0XHRlbGVtcyA9IHNlZWQgfHwgYnlFbGVtZW50ICYmIEV4cHIuZmluZFtcIlRBR1wiXSggXCIqXCIsIG91dGVybW9zdCApLFxuXHRcdFx0XHQvLyBVc2UgaW50ZWdlciBkaXJydW5zIGlmZiB0aGlzIGlzIHRoZSBvdXRlcm1vc3QgbWF0Y2hlclxuXHRcdFx0XHRkaXJydW5zVW5pcXVlID0gKGRpcnJ1bnMgKz0gY29udGV4dEJhY2t1cCA9PSBudWxsID8gMSA6IE1hdGgucmFuZG9tKCkgfHwgMC4xKSxcblx0XHRcdFx0bGVuID0gZWxlbXMubGVuZ3RoO1xuXG5cdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0b3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHQgPT09IGRvY3VtZW50IHx8IGNvbnRleHQgfHwgb3V0ZXJtb3N0O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgZWxlbWVudHMgcGFzc2luZyBlbGVtZW50TWF0Y2hlcnMgZGlyZWN0bHkgdG8gcmVzdWx0c1xuXHRcdFx0Ly8gU3VwcG9ydDogSUU8OSwgU2FmYXJpXG5cdFx0XHQvLyBUb2xlcmF0ZSBOb2RlTGlzdCBwcm9wZXJ0aWVzIChJRTogXCJsZW5ndGhcIjsgU2FmYXJpOiA8bnVtYmVyPikgbWF0Y2hpbmcgZWxlbWVudHMgYnkgaWRcblx0XHRcdGZvciAoIDsgaSAhPT0gbGVuICYmIChlbGVtID0gZWxlbXNbaV0pICE9IG51bGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBieUVsZW1lbnQgJiYgZWxlbSApIHtcblx0XHRcdFx0XHRqID0gMDtcblx0XHRcdFx0XHRpZiAoICFjb250ZXh0ICYmIGVsZW0ub3duZXJEb2N1bWVudCAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0XHRcdFx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHRcdFx0XHRcdFx0eG1sID0gIWRvY3VtZW50SXNIVE1MO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR3aGlsZSAoIChtYXRjaGVyID0gZWxlbWVudE1hdGNoZXJzW2orK10pICkge1xuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0IHx8IGRvY3VtZW50LCB4bWwpICkge1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRcdFx0ZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gVHJhY2sgdW5tYXRjaGVkIGVsZW1lbnRzIGZvciBzZXQgZmlsdGVyc1xuXHRcdFx0XHRpZiAoIGJ5U2V0ICkge1xuXHRcdFx0XHRcdC8vIFRoZXkgd2lsbCBoYXZlIGdvbmUgdGhyb3VnaCBhbGwgcG9zc2libGUgbWF0Y2hlcnNcblx0XHRcdFx0XHRpZiAoIChlbGVtID0gIW1hdGNoZXIgJiYgZWxlbSkgKSB7XG5cdFx0XHRcdFx0XHRtYXRjaGVkQ291bnQtLTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBMZW5ndGhlbiB0aGUgYXJyYXkgZm9yIGV2ZXJ5IGVsZW1lbnQsIG1hdGNoZWQgb3Igbm90XG5cdFx0XHRcdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0XHRcdFx0dW5tYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gYGlgIGlzIG5vdyB0aGUgY291bnQgb2YgZWxlbWVudHMgdmlzaXRlZCBhYm92ZSwgYW5kIGFkZGluZyBpdCB0byBgbWF0Y2hlZENvdW50YFxuXHRcdFx0Ly8gbWFrZXMgdGhlIGxhdHRlciBub25uZWdhdGl2ZS5cblx0XHRcdG1hdGNoZWRDb3VudCArPSBpO1xuXG5cdFx0XHQvLyBBcHBseSBzZXQgZmlsdGVycyB0byB1bm1hdGNoZWQgZWxlbWVudHNcblx0XHRcdC8vIE5PVEU6IFRoaXMgY2FuIGJlIHNraXBwZWQgaWYgdGhlcmUgYXJlIG5vIHVubWF0Y2hlZCBlbGVtZW50cyAoaS5lLiwgYG1hdGNoZWRDb3VudGBcblx0XHRcdC8vIGVxdWFscyBgaWApLCB1bmxlc3Mgd2UgZGlkbid0IHZpc2l0IF9hbnlfIGVsZW1lbnRzIGluIHRoZSBhYm92ZSBsb29wIGJlY2F1c2Ugd2UgaGF2ZVxuXHRcdFx0Ly8gbm8gZWxlbWVudCBtYXRjaGVycyBhbmQgbm8gc2VlZC5cblx0XHRcdC8vIEluY3JlbWVudGluZyBhbiBpbml0aWFsbHktc3RyaW5nIFwiMFwiIGBpYCBhbGxvd3MgYGlgIHRvIHJlbWFpbiBhIHN0cmluZyBvbmx5IGluIHRoYXRcblx0XHRcdC8vIGNhc2UsIHdoaWNoIHdpbGwgcmVzdWx0IGluIGEgXCIwMFwiIGBtYXRjaGVkQ291bnRgIHRoYXQgZGlmZmVycyBmcm9tIGBpYCBidXQgaXMgYWxzb1xuXHRcdFx0Ly8gbnVtZXJpY2FsbHkgemVyby5cblx0XHRcdGlmICggYnlTZXQgJiYgaSAhPT0gbWF0Y2hlZENvdW50ICkge1xuXHRcdFx0XHRqID0gMDtcblx0XHRcdFx0d2hpbGUgKCAobWF0Y2hlciA9IHNldE1hdGNoZXJzW2orK10pICkge1xuXHRcdFx0XHRcdG1hdGNoZXIoIHVubWF0Y2hlZCwgc2V0TWF0Y2hlZCwgY29udGV4dCwgeG1sICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRcdFx0Ly8gUmVpbnRlZ3JhdGUgZWxlbWVudCBtYXRjaGVzIHRvIGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3Igc29ydGluZ1xuXHRcdFx0XHRcdGlmICggbWF0Y2hlZENvdW50ID4gMCApIHtcblx0XHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoICEodW5tYXRjaGVkW2ldIHx8IHNldE1hdGNoZWRbaV0pICkge1xuXHRcdFx0XHRcdFx0XHRcdHNldE1hdGNoZWRbaV0gPSBwb3AuY2FsbCggcmVzdWx0cyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRGlzY2FyZCBpbmRleCBwbGFjZWhvbGRlciB2YWx1ZXMgdG8gZ2V0IG9ubHkgYWN0dWFsIG1hdGNoZXNcblx0XHRcdFx0XHRzZXRNYXRjaGVkID0gY29uZGVuc2UoIHNldE1hdGNoZWQgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFkZCBtYXRjaGVzIHRvIHJlc3VsdHNcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2V0TWF0Y2hlZCApO1xuXG5cdFx0XHRcdC8vIFNlZWRsZXNzIHNldCBtYXRjaGVzIHN1Y2NlZWRpbmcgbXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBzdGlwdWxhdGUgc29ydGluZ1xuXHRcdFx0XHRpZiAoIG91dGVybW9zdCAmJiAhc2VlZCAmJiBzZXRNYXRjaGVkLmxlbmd0aCA+IDAgJiZcblx0XHRcdFx0XHQoIG1hdGNoZWRDb3VudCArIHNldE1hdGNoZXJzLmxlbmd0aCApID4gMSApIHtcblxuXHRcdFx0XHRcdFNpenpsZS51bmlxdWVTb3J0KCByZXN1bHRzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gT3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVzdGVkIG1hdGNoZXJzXG5cdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0ZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7XG5cdFx0XHRcdG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0QmFja3VwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdW5tYXRjaGVkO1xuXHRcdH07XG5cblx0cmV0dXJuIGJ5U2V0ID9cblx0XHRtYXJrRnVuY3Rpb24oIHN1cGVyTWF0Y2hlciApIDpcblx0XHRzdXBlck1hdGNoZXI7XG59XG5cbmNvbXBpbGUgPSBTaXp6bGUuY29tcGlsZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgbWF0Y2ggLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7XG5cdHZhciBpLFxuXHRcdHNldE1hdGNoZXJzID0gW10sXG5cdFx0ZWxlbWVudE1hdGNoZXJzID0gW10sXG5cdFx0Y2FjaGVkID0gY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdO1xuXG5cdGlmICggIWNhY2hlZCApIHtcblx0XHQvLyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjaGVjayBlYWNoIGVsZW1lbnRcblx0XHRpZiAoICFtYXRjaCApIHtcblx0XHRcdG1hdGNoID0gdG9rZW5pemUoIHNlbGVjdG9yICk7XG5cdFx0fVxuXHRcdGkgPSBtYXRjaC5sZW5ndGg7XG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRjYWNoZWQgPSBtYXRjaGVyRnJvbVRva2VucyggbWF0Y2hbaV0gKTtcblx0XHRcdGlmICggY2FjaGVkWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdHNldE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbWVudE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhY2hlIHRoZSBjb21waWxlZCBmdW5jdGlvblxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGUoIHNlbGVjdG9yLCBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSApO1xuXG5cdFx0Ly8gU2F2ZSBzZWxlY3RvciBhbmQgdG9rZW5pemF0aW9uXG5cdFx0Y2FjaGVkLnNlbGVjdG9yID0gc2VsZWN0b3I7XG5cdH1cblx0cmV0dXJuIGNhY2hlZDtcbn07XG5cbi8qKlxuICogQSBsb3ctbGV2ZWwgc2VsZWN0aW9uIGZ1bmN0aW9uIHRoYXQgd29ya3Mgd2l0aCBTaXp6bGUncyBjb21waWxlZFxuICogIHNlbGVjdG9yIGZ1bmN0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd8RnVuY3Rpb259IHNlbGVjdG9yIEEgc2VsZWN0b3Igb3IgYSBwcmUtY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbiBidWlsdCB3aXRoIFNpenpsZS5jb21waWxlXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGNvbnRleHRcbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHRzXVxuICogQHBhcmFtIHtBcnJheX0gW3NlZWRdIEEgc2V0IG9mIGVsZW1lbnRzIHRvIG1hdGNoIGFnYWluc3RcbiAqL1xuc2VsZWN0ID0gU2l6emxlLnNlbGVjdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIGksIHRva2VucywgdG9rZW4sIHR5cGUsIGZpbmQsXG5cdFx0Y29tcGlsZWQgPSB0eXBlb2Ygc2VsZWN0b3IgPT09IFwiZnVuY3Rpb25cIiAmJiBzZWxlY3Rvcixcblx0XHRtYXRjaCA9ICFzZWVkICYmIHRva2VuaXplKCAoc2VsZWN0b3IgPSBjb21waWxlZC5zZWxlY3RvciB8fCBzZWxlY3RvcikgKTtcblxuXHRyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTtcblxuXHQvLyBUcnkgdG8gbWluaW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBvbmx5IG9uZSBzZWxlY3RvciBpbiB0aGUgbGlzdCBhbmQgbm8gc2VlZFxuXHQvLyAodGhlIGxhdHRlciBvZiB3aGljaCBndWFyYW50ZWVzIHVzIGNvbnRleHQpXG5cdGlmICggbWF0Y2gubGVuZ3RoID09PSAxICkge1xuXG5cdFx0Ly8gUmVkdWNlIGNvbnRleHQgaWYgdGhlIGxlYWRpbmcgY29tcG91bmQgc2VsZWN0b3IgaXMgYW4gSURcblx0XHR0b2tlbnMgPSBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKCAwICk7XG5cdFx0aWYgKCB0b2tlbnMubGVuZ3RoID4gMiAmJiAodG9rZW4gPSB0b2tlbnNbMF0pLnR5cGUgPT09IFwiSURcIiAmJlxuXHRcdFx0XHRzdXBwb3J0LmdldEJ5SWQgJiYgY29udGV4dC5ub2RlVHlwZSA9PT0gOSAmJiBkb2N1bWVudElzSFRNTCAmJlxuXHRcdFx0XHRFeHByLnJlbGF0aXZlWyB0b2tlbnNbMV0udHlwZSBdICkge1xuXG5cdFx0XHRjb250ZXh0ID0gKCBFeHByLmZpbmRbXCJJRFwiXSggdG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKHJ1bmVzY2FwZSwgZnVuZXNjYXBlKSwgY29udGV4dCApIHx8IFtdIClbMF07XG5cdFx0XHRpZiAoICFjb250ZXh0ICkge1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblxuXHRcdFx0Ly8gUHJlY29tcGlsZWQgbWF0Y2hlcnMgd2lsbCBzdGlsbCB2ZXJpZnkgYW5jZXN0cnksIHNvIHN0ZXAgdXAgYSBsZXZlbFxuXHRcdFx0fSBlbHNlIGlmICggY29tcGlsZWQgKSB7XG5cdFx0XHRcdGNvbnRleHQgPSBjb250ZXh0LnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cblx0XHRcdHNlbGVjdG9yID0gc2VsZWN0b3Iuc2xpY2UoIHRva2Vucy5zaGlmdCgpLnZhbHVlLmxlbmd0aCApO1xuXHRcdH1cblxuXHRcdC8vIEZldGNoIGEgc2VlZCBzZXQgZm9yIHJpZ2h0LXRvLWxlZnQgbWF0Y2hpbmdcblx0XHRpID0gbWF0Y2hFeHByW1wibmVlZHNDb250ZXh0XCJdLnRlc3QoIHNlbGVjdG9yICkgPyAwIDogdG9rZW5zLmxlbmd0aDtcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdHRva2VuID0gdG9rZW5zW2ldO1xuXG5cdFx0XHQvLyBBYm9ydCBpZiB3ZSBoaXQgYSBjb21iaW5hdG9yXG5cdFx0XHRpZiAoIEV4cHIucmVsYXRpdmVbICh0eXBlID0gdG9rZW4udHlwZSkgXSApIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIChmaW5kID0gRXhwci5maW5kWyB0eXBlIF0pICkge1xuXHRcdFx0XHQvLyBTZWFyY2gsIGV4cGFuZGluZyBjb250ZXh0IGZvciBsZWFkaW5nIHNpYmxpbmcgY29tYmluYXRvcnNcblx0XHRcdFx0aWYgKCAoc2VlZCA9IGZpbmQoXG5cdFx0XHRcdFx0dG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLFxuXHRcdFx0XHRcdHJzaWJsaW5nLnRlc3QoIHRva2Vuc1swXS50eXBlICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHRcblx0XHRcdFx0KSkgKSB7XG5cblx0XHRcdFx0XHQvLyBJZiBzZWVkIGlzIGVtcHR5IG9yIG5vIHRva2VucyByZW1haW4sIHdlIGNhbiByZXR1cm4gZWFybHlcblx0XHRcdFx0XHR0b2tlbnMuc3BsaWNlKCBpLCAxICk7XG5cdFx0XHRcdFx0c2VsZWN0b3IgPSBzZWVkLmxlbmd0aCAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKTtcblx0XHRcdFx0XHRpZiAoICFzZWxlY3RvciApIHtcblx0XHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNlZWQgKTtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ29tcGlsZSBhbmQgZXhlY3V0ZSBhIGZpbHRlcmluZyBmdW5jdGlvbiBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG5cdC8vIFByb3ZpZGUgYG1hdGNoYCB0byBhdm9pZCByZXRva2VuaXphdGlvbiBpZiB3ZSBtb2RpZmllZCB0aGUgc2VsZWN0b3IgYWJvdmVcblx0KCBjb21waWxlZCB8fCBjb21waWxlKCBzZWxlY3RvciwgbWF0Y2ggKSApKFxuXHRcdHNlZWQsXG5cdFx0Y29udGV4dCxcblx0XHQhZG9jdW1lbnRJc0hUTUwsXG5cdFx0cmVzdWx0cyxcblx0XHQhY29udGV4dCB8fCByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0XG5cdCk7XG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gT25lLXRpbWUgYXNzaWdubWVudHNcblxuLy8gU29ydCBzdGFiaWxpdHlcbnN1cHBvcnQuc29ydFN0YWJsZSA9IGV4cGFuZG8uc3BsaXQoXCJcIikuc29ydCggc29ydE9yZGVyICkuam9pbihcIlwiKSA9PT0gZXhwYW5kbztcblxuLy8gU3VwcG9ydDogQ2hyb21lIDE0LTM1K1xuLy8gQWx3YXlzIGFzc3VtZSBkdXBsaWNhdGVzIGlmIHRoZXkgYXJlbid0IHBhc3NlZCB0byB0aGUgY29tcGFyaXNvbiBmdW5jdGlvblxuc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzID0gISFoYXNEdXBsaWNhdGU7XG5cbi8vIEluaXRpYWxpemUgYWdhaW5zdCB0aGUgZGVmYXVsdCBkb2N1bWVudFxuc2V0RG9jdW1lbnQoKTtcblxuLy8gU3VwcG9ydDogV2Via2l0PDUzNy4zMiAtIFNhZmFyaSA2LjAuMy9DaHJvbWUgMjUgKGZpeGVkIGluIENocm9tZSAyNylcbi8vIERldGFjaGVkIG5vZGVzIGNvbmZvdW5kaW5nbHkgZm9sbG93ICplYWNoIG90aGVyKlxuc3VwcG9ydC5zb3J0RGV0YWNoZWQgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdjEgKSB7XG5cdC8vIFNob3VsZCByZXR1cm4gMSwgYnV0IHJldHVybnMgNCAoZm9sbG93aW5nKVxuXHRyZXR1cm4gZGl2MS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSApICYgMTtcbn0pO1xuXG4vLyBTdXBwb3J0OiBJRTw4XG4vLyBQcmV2ZW50IGF0dHJpYnV0ZS9wcm9wZXJ0eSBcImludGVycG9sYXRpb25cIlxuLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTM2NDI5JTI4VlMuODUlMjkuYXNweFxuaWYgKCAhYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7XG5cdGRpdi5pbm5lckhUTUwgPSBcIjxhIGhyZWY9JyMnPjwvYT5cIjtcblx0cmV0dXJuIGRpdi5maXJzdENoaWxkLmdldEF0dHJpYnV0ZShcImhyZWZcIikgPT09IFwiI1wiIDtcbn0pICkge1xuXHRhZGRIYW5kbGUoIFwidHlwZXxocmVmfGhlaWdodHx3aWR0aFwiLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJ0eXBlXCIgPyAxIDogMiApO1xuXHRcdH1cblx0fSk7XG59XG5cbi8vIFN1cHBvcnQ6IElFPDlcbi8vIFVzZSBkZWZhdWx0VmFsdWUgaW4gcGxhY2Ugb2YgZ2V0QXR0cmlidXRlKFwidmFsdWVcIilcbmlmICggIXN1cHBvcnQuYXR0cmlidXRlcyB8fCAhYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7XG5cdGRpdi5pbm5lckhUTUwgPSBcIjxpbnB1dC8+XCI7XG5cdGRpdi5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSggXCJ2YWx1ZVwiLCBcIlwiICk7XG5cdHJldHVybiBkaXYuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiApID09PSBcIlwiO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggXCJ2YWx1ZVwiLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0aWYgKCAhaXNYTUwgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kZWZhdWx0VmFsdWU7XG5cdFx0fVxuXHR9KTtcbn1cblxuLy8gU3VwcG9ydDogSUU8OVxuLy8gVXNlIGdldEF0dHJpYnV0ZU5vZGUgdG8gZmV0Y2ggYm9vbGVhbnMgd2hlbiBnZXRBdHRyaWJ1dGUgbGllc1xuaWYgKCAhYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7XG5cdHJldHVybiBkaXYuZ2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIikgPT0gbnVsbDtcbn0pICkge1xuXHRhZGRIYW5kbGUoIGJvb2xlYW5zLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0dmFyIHZhbDtcblx0XHRpZiAoICFpc1hNTCApIHtcblx0XHRcdHJldHVybiBlbGVtWyBuYW1lIF0gPT09IHRydWUgPyBuYW1lLnRvTG93ZXJDYXNlKCkgOlxuXHRcdFx0XHRcdCh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUgKSkgJiYgdmFsLnNwZWNpZmllZCA/XG5cdFx0XHRcdFx0dmFsLnZhbHVlIDpcblx0XHRcdFx0bnVsbDtcblx0XHR9XG5cdH0pO1xufVxuXG5yZXR1cm4gU2l6emxlO1xuXG59KSggd2luZG93ICk7XG5cblxuXG5qUXVlcnkuZmluZCA9IFNpenpsZTtcbmpRdWVyeS5leHByID0gU2l6emxlLnNlbGVjdG9ycztcbmpRdWVyeS5leHByWyBcIjpcIiBdID0galF1ZXJ5LmV4cHIucHNldWRvcztcbmpRdWVyeS51bmlxdWVTb3J0ID0galF1ZXJ5LnVuaXF1ZSA9IFNpenpsZS51bmlxdWVTb3J0O1xualF1ZXJ5LnRleHQgPSBTaXp6bGUuZ2V0VGV4dDtcbmpRdWVyeS5pc1hNTERvYyA9IFNpenpsZS5pc1hNTDtcbmpRdWVyeS5jb250YWlucyA9IFNpenpsZS5jb250YWlucztcblxuXG5cbnZhciBkaXIgPSBmdW5jdGlvbiggZWxlbSwgZGlyLCB1bnRpbCApIHtcblx0dmFyIG1hdGNoZWQgPSBbXSxcblx0XHR0cnVuY2F0ZSA9IHVudGlsICE9PSB1bmRlZmluZWQ7XG5cblx0d2hpbGUgKCAoIGVsZW0gPSBlbGVtWyBkaXIgXSApICYmIGVsZW0ubm9kZVR5cGUgIT09IDkgKSB7XG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0aWYgKCB0cnVuY2F0ZSAmJiBqUXVlcnkoIGVsZW0gKS5pcyggdW50aWwgKSApIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRtYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1hdGNoZWQ7XG59O1xuXG5cbnZhciBzaWJsaW5ncyA9IGZ1bmN0aW9uKCBuLCBlbGVtICkge1xuXHR2YXIgbWF0Y2hlZCA9IFtdO1xuXG5cdGZvciAoIDsgbjsgbiA9IG4ubmV4dFNpYmxpbmcgKSB7XG5cdFx0aWYgKCBuLm5vZGVUeXBlID09PSAxICYmIG4gIT09IGVsZW0gKSB7XG5cdFx0XHRtYXRjaGVkLnB1c2goIG4gKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbWF0Y2hlZDtcbn07XG5cblxudmFyIHJuZWVkc0NvbnRleHQgPSBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7XG5cbnZhciByc2luZ2xlVGFnID0gKCAvXjwoW1xcdy1dKylcXHMqXFwvPz4oPzo8XFwvXFwxPnwpJC8gKTtcblxuXG5cbnZhciByaXNTaW1wbGUgPSAvXi5bXjojXFxbXFwuLF0qJC87XG5cbi8vIEltcGxlbWVudCB0aGUgaWRlbnRpY2FsIGZ1bmN0aW9uYWxpdHkgZm9yIGZpbHRlciBhbmQgbm90XG5mdW5jdGlvbiB3aW5ub3coIGVsZW1lbnRzLCBxdWFsaWZpZXIsIG5vdCApIHtcblx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcXVhbGlmaWVyICkgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XG5cdFx0XHQvKiBqc2hpbnQgLVcwMTggKi9cblx0XHRcdHJldHVybiAhIXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICkgIT09IG5vdDtcblx0XHR9ICk7XG5cblx0fVxuXG5cdGlmICggcXVhbGlmaWVyLm5vZGVUeXBlICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ3JlcCggZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuICggZWxlbSA9PT0gcXVhbGlmaWVyICkgIT09IG5vdDtcblx0XHR9ICk7XG5cblx0fVxuXG5cdGlmICggdHlwZW9mIHF1YWxpZmllciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRpZiAoIHJpc1NpbXBsZS50ZXN0KCBxdWFsaWZpZXIgKSApIHtcblx0XHRcdHJldHVybiBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzLCBub3QgKTtcblx0XHR9XG5cblx0XHRxdWFsaWZpZXIgPSBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzICk7XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxpZmllciwgZWxlbSApID4gLTEgKSAhPT0gbm90O1xuXHR9ICk7XG59XG5cbmpRdWVyeS5maWx0ZXIgPSBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHtcblx0dmFyIGVsZW0gPSBlbGVtc1sgMCBdO1xuXG5cdGlmICggbm90ICkge1xuXHRcdGV4cHIgPSBcIjpub3QoXCIgKyBleHByICsgXCIpXCI7XG5cdH1cblxuXHRyZXR1cm4gZWxlbXMubGVuZ3RoID09PSAxICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgP1xuXHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZWxlbSwgZXhwciApID8gWyBlbGVtIF0gOiBbXSA6XG5cdFx0alF1ZXJ5LmZpbmQubWF0Y2hlcyggZXhwciwgalF1ZXJ5LmdyZXAoIGVsZW1zLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxO1xuXHRcdH0gKSApO1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRmaW5kOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGksXG5cdFx0XHRsZW4gPSB0aGlzLmxlbmd0aCxcblx0XHRcdHJldCA9IFtdLFxuXHRcdFx0c2VsZiA9IHRoaXM7XG5cblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5KCBzZWxlY3RvciApLmZpbHRlciggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdFx0aWYgKCBqUXVlcnkuY29udGFpbnMoIHNlbGZbIGkgXSwgdGhpcyApICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICkgKTtcblx0XHR9XG5cblx0XHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0alF1ZXJ5LmZpbmQoIHNlbGVjdG9yLCBzZWxmWyBpIF0sIHJldCApO1xuXHRcdH1cblxuXHRcdC8vIE5lZWRlZCBiZWNhdXNlICQoIHNlbGVjdG9yLCBjb250ZXh0ICkgYmVjb21lcyAkKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKVxuXHRcdHJldCA9IHRoaXMucHVzaFN0YWNrKCBsZW4gPiAxID8galF1ZXJ5LnVuaXF1ZSggcmV0ICkgOiByZXQgKTtcblx0XHRyZXQuc2VsZWN0b3IgPSB0aGlzLnNlbGVjdG9yID8gdGhpcy5zZWxlY3RvciArIFwiIFwiICsgc2VsZWN0b3IgOiBzZWxlY3Rvcjtcblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXHRmaWx0ZXI6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIGZhbHNlICkgKTtcblx0fSxcblx0bm90OiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3coIHRoaXMsIHNlbGVjdG9yIHx8IFtdLCB0cnVlICkgKTtcblx0fSxcblx0aXM6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gISF3aW5ub3coXG5cdFx0XHR0aGlzLFxuXG5cdFx0XHQvLyBJZiB0aGlzIGlzIGEgcG9zaXRpb25hbC9yZWxhdGl2ZSBzZWxlY3RvciwgY2hlY2sgbWVtYmVyc2hpcCBpbiB0aGUgcmV0dXJuZWQgc2V0XG5cdFx0XHQvLyBzbyAkKFwicDpmaXJzdFwiKS5pcyhcInA6bGFzdFwiKSB3b24ndCByZXR1cm4gdHJ1ZSBmb3IgYSBkb2Mgd2l0aCB0d28gXCJwXCIuXG5cdFx0XHR0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgJiYgcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApID9cblx0XHRcdFx0alF1ZXJ5KCBzZWxlY3RvciApIDpcblx0XHRcdFx0c2VsZWN0b3IgfHwgW10sXG5cdFx0XHRmYWxzZVxuXHRcdCkubGVuZ3RoO1xuXHR9XG59ICk7XG5cblxuLy8gSW5pdGlhbGl6ZSBhIGpRdWVyeSBvYmplY3RcblxuXG4vLyBBIGNlbnRyYWwgcmVmZXJlbmNlIHRvIHRoZSByb290IGpRdWVyeShkb2N1bWVudClcbnZhciByb290alF1ZXJ5LFxuXG5cdC8vIEEgc2ltcGxlIHdheSB0byBjaGVjayBmb3IgSFRNTCBzdHJpbmdzXG5cdC8vIFByaW9yaXRpemUgI2lkIG92ZXIgPHRhZz4gdG8gYXZvaWQgWFNTIHZpYSBsb2NhdGlvbi5oYXNoICgjOTUyMSlcblx0Ly8gU3RyaWN0IEhUTUwgcmVjb2duaXRpb24gKCMxMTI5MDogbXVzdCBzdGFydCB3aXRoIDwpXG5cdHJxdWlja0V4cHIgPSAvXig/OlxccyooPFtcXHdcXFddKz4pW14+XSp8IyhbXFx3LV0qKSkkLyxcblxuXHRpbml0ID0galF1ZXJ5LmZuLmluaXQgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJvb3QgKSB7XG5cdFx0dmFyIG1hdGNoLCBlbGVtO1xuXG5cdFx0Ly8gSEFORExFOiAkKFwiXCIpLCAkKG51bGwpLCAkKHVuZGVmaW5lZCksICQoZmFsc2UpXG5cdFx0aWYgKCAhc2VsZWN0b3IgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cblx0XHQvLyBNZXRob2QgaW5pdCgpIGFjY2VwdHMgYW4gYWx0ZXJuYXRlIHJvb3RqUXVlcnlcblx0XHQvLyBzbyBtaWdyYXRlIGNhbiBzdXBwb3J0IGpRdWVyeS5zdWIgKGdoLTIxMDEpXG5cdFx0cm9vdCA9IHJvb3QgfHwgcm9vdGpRdWVyeTtcblxuXHRcdC8vIEhhbmRsZSBIVE1MIHN0cmluZ3Ncblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGlmICggc2VsZWN0b3JbIDAgXSA9PT0gXCI8XCIgJiZcblx0XHRcdFx0c2VsZWN0b3JbIHNlbGVjdG9yLmxlbmd0aCAtIDEgXSA9PT0gXCI+XCIgJiZcblx0XHRcdFx0c2VsZWN0b3IubGVuZ3RoID49IDMgKSB7XG5cblx0XHRcdFx0Ly8gQXNzdW1lIHRoYXQgc3RyaW5ncyB0aGF0IHN0YXJ0IGFuZCBlbmQgd2l0aCA8PiBhcmUgSFRNTCBhbmQgc2tpcCB0aGUgcmVnZXggY2hlY2tcblx0XHRcdFx0bWF0Y2ggPSBbIG51bGwsIHNlbGVjdG9yLCBudWxsIF07XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYXRjaCBodG1sIG9yIG1ha2Ugc3VyZSBubyBjb250ZXh0IGlzIHNwZWNpZmllZCBmb3IgI2lkXG5cdFx0XHRpZiAoIG1hdGNoICYmICggbWF0Y2hbIDEgXSB8fCAhY29udGV4dCApICkge1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJChodG1sKSAtPiAkKGFycmF5KVxuXHRcdFx0XHRpZiAoIG1hdGNoWyAxIF0gKSB7XG5cdFx0XHRcdFx0Y29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250ZXh0WyAwIF0gOiBjb250ZXh0O1xuXG5cdFx0XHRcdFx0Ly8gT3B0aW9uIHRvIHJ1biBzY3JpcHRzIGlzIHRydWUgZm9yIGJhY2stY29tcGF0XG5cdFx0XHRcdFx0Ly8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRocm93biBpZiBwYXJzZUhUTUwgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHRoaXMsIGpRdWVyeS5wYXJzZUhUTUwoXG5cdFx0XHRcdFx0XHRtYXRjaFsgMSBdLFxuXHRcdFx0XHRcdFx0Y29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBkb2N1bWVudCxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpICk7XG5cblx0XHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMpXG5cdFx0XHRcdFx0aWYgKCByc2luZ2xlVGFnLnRlc3QoIG1hdGNoWyAxIF0gKSAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdCggY29udGV4dCApICkge1xuXHRcdFx0XHRcdFx0Zm9yICggbWF0Y2ggaW4gY29udGV4dCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBQcm9wZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlXG5cdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHRoaXNbIG1hdGNoIF0gKSApIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzWyBtYXRjaCBdKCBjb250ZXh0WyBtYXRjaCBdICk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gLi4uYW5kIG90aGVyd2lzZSBzZXQgYXMgYXR0cmlidXRlc1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuYXR0ciggbWF0Y2gsIGNvbnRleHRbIG1hdGNoIF0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJCgjaWQpXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtYXRjaFsgMiBdICk7XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBCbGFja2JlcnJ5IDQuNlxuXHRcdFx0XHRcdC8vIGdFQklEIHJldHVybnMgbm9kZXMgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCAoIzY5NjMpXG5cdFx0XHRcdFx0aWYgKCBlbGVtICYmIGVsZW0ucGFyZW50Tm9kZSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSW5qZWN0IHRoZSBlbGVtZW50IGRpcmVjdGx5IGludG8gdGhlIGpRdWVyeSBvYmplY3Rcblx0XHRcdFx0XHRcdHRoaXMubGVuZ3RoID0gMTtcblx0XHRcdFx0XHRcdHRoaXNbIDAgXSA9IGVsZW07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGhpcy5jb250ZXh0ID0gZG9jdW1lbnQ7XG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yO1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cblx0XHRcdC8vIEhBTkRMRTogJChleHByLCAkKC4uLikpXG5cdFx0XHR9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250ZXh0LmpxdWVyeSApIHtcblx0XHRcdFx0cmV0dXJuICggY29udGV4dCB8fCByb290ICkuZmluZCggc2VsZWN0b3IgKTtcblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsIGNvbnRleHQpXG5cdFx0XHQvLyAod2hpY2ggaXMganVzdCBlcXVpdmFsZW50IHRvOiAkKGNvbnRleHQpLmZpbmQoZXhwcilcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdC8vIEhBTkRMRTogJChET01FbGVtZW50KVxuXHRcdH0gZWxzZSBpZiAoIHNlbGVjdG9yLm5vZGVUeXBlICkge1xuXHRcdFx0dGhpcy5jb250ZXh0ID0gdGhpc1sgMCBdID0gc2VsZWN0b3I7XG5cdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRyZXR1cm4gdGhpcztcblxuXHRcdC8vIEhBTkRMRTogJChmdW5jdGlvbilcblx0XHQvLyBTaG9ydGN1dCBmb3IgZG9jdW1lbnQgcmVhZHlcblx0XHR9IGVsc2UgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggc2VsZWN0b3IgKSApIHtcblx0XHRcdHJldHVybiByb290LnJlYWR5ICE9PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRyb290LnJlYWR5KCBzZWxlY3RvciApIDpcblxuXHRcdFx0XHQvLyBFeGVjdXRlIGltbWVkaWF0ZWx5IGlmIHJlYWR5IGlzIG5vdCBwcmVzZW50XG5cdFx0XHRcdHNlbGVjdG9yKCBqUXVlcnkgKTtcblx0XHR9XG5cblx0XHRpZiAoIHNlbGVjdG9yLnNlbGVjdG9yICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3Iuc2VsZWN0b3I7XG5cdFx0XHR0aGlzLmNvbnRleHQgPSBzZWxlY3Rvci5jb250ZXh0O1xuXHRcdH1cblxuXHRcdHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyApO1xuXHR9O1xuXG4vLyBHaXZlIHRoZSBpbml0IGZ1bmN0aW9uIHRoZSBqUXVlcnkgcHJvdG90eXBlIGZvciBsYXRlciBpbnN0YW50aWF0aW9uXG5pbml0LnByb3RvdHlwZSA9IGpRdWVyeS5mbjtcblxuLy8gSW5pdGlhbGl6ZSBjZW50cmFsIHJlZmVyZW5jZVxucm9vdGpRdWVyeSA9IGpRdWVyeSggZG9jdW1lbnQgKTtcblxuXG52YXIgcnBhcmVudHNwcmV2ID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sXG5cblx0Ly8gTWV0aG9kcyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgYSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXRcblx0Z3VhcmFudGVlZFVuaXF1ZSA9IHtcblx0XHRjaGlsZHJlbjogdHJ1ZSxcblx0XHRjb250ZW50czogdHJ1ZSxcblx0XHRuZXh0OiB0cnVlLFxuXHRcdHByZXY6IHRydWVcblx0fTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRoYXM6IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG5cdFx0dmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLFxuXHRcdFx0bCA9IHRhcmdldHMubGVuZ3RoO1xuXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpID0gMDtcblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBqUXVlcnkuY29udGFpbnMoIHRoaXMsIHRhcmdldHNbIGkgXSApICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGNsb3Nlc3Q6IGZ1bmN0aW9uKCBzZWxlY3RvcnMsIGNvbnRleHQgKSB7XG5cdFx0dmFyIGN1cixcblx0XHRcdGkgPSAwLFxuXHRcdFx0bCA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0bWF0Y2hlZCA9IFtdLFxuXHRcdFx0cG9zID0gcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvcnMgKSB8fCB0eXBlb2Ygc2VsZWN0b3JzICE9PSBcInN0cmluZ1wiID9cblx0XHRcdFx0alF1ZXJ5KCBzZWxlY3RvcnMsIGNvbnRleHQgfHwgdGhpcy5jb250ZXh0ICkgOlxuXHRcdFx0XHQwO1xuXG5cdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0Zm9yICggY3VyID0gdGhpc1sgaSBdOyBjdXIgJiYgY3VyICE9PSBjb250ZXh0OyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHtcblxuXHRcdFx0XHQvLyBBbHdheXMgc2tpcCBkb2N1bWVudCBmcmFnbWVudHNcblx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPCAxMSAmJiAoIHBvcyA/XG5cdFx0XHRcdFx0cG9zLmluZGV4KCBjdXIgKSA+IC0xIDpcblxuXHRcdFx0XHRcdC8vIERvbid0IHBhc3Mgbm9uLWVsZW1lbnRzIHRvIFNpenpsZVxuXHRcdFx0XHRcdGN1ci5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0XHRcdFx0alF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBjdXIsIHNlbGVjdG9ycyApICkgKSB7XG5cblx0XHRcdFx0XHRtYXRjaGVkLnB1c2goIGN1ciApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkLmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApIDogbWF0Y2hlZCApO1xuXHR9LFxuXG5cdC8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHNldFxuXHRpbmRleDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBObyBhcmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudFxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCB0aGlzWyAwIF0gJiYgdGhpc1sgMCBdLnBhcmVudE5vZGUgKSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTE7XG5cdFx0fVxuXG5cdFx0Ly8gSW5kZXggaW4gc2VsZWN0b3Jcblx0XHRpZiAoIHR5cGVvZiBlbGVtID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggalF1ZXJ5KCBlbGVtICksIHRoaXNbIDAgXSApO1xuXHRcdH1cblxuXHRcdC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudFxuXHRcdHJldHVybiBpbmRleE9mLmNhbGwoIHRoaXMsXG5cblx0XHRcdC8vIElmIGl0IHJlY2VpdmVzIGEgalF1ZXJ5IG9iamVjdCwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdXNlZFxuXHRcdFx0ZWxlbS5qcXVlcnkgPyBlbGVtWyAwIF0gOiBlbGVtXG5cdFx0KTtcblx0fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soXG5cdFx0XHRqUXVlcnkudW5pcXVlU29ydChcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCB0aGlzLmdldCgpLCBqUXVlcnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0sXG5cblx0YWRkQmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/XG5cdFx0XHR0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKCBzZWxlY3RvciApXG5cdFx0KTtcblx0fVxufSApO1xuXG5mdW5jdGlvbiBzaWJsaW5nKCBjdXIsIGRpciApIHtcblx0d2hpbGUgKCAoIGN1ciA9IGN1clsgZGlyIF0gKSAmJiBjdXIubm9kZVR5cGUgIT09IDEgKSB7fVxuXHRyZXR1cm4gY3VyO1xufVxuXG5qUXVlcnkuZWFjaCgge1xuXHRwYXJlbnQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0cmV0dXJuIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDtcblx0fSxcblx0cGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIgKTtcblx0fSxcblx0cGFyZW50c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIsIHVudGlsICk7XG5cdH0sXG5cdG5leHQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5nKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIgKTtcblx0fSxcblx0cHJldjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmcoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dEFsbDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dFVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRwcmV2VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmdzKCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSApLmZpcnN0Q2hpbGQsIGVsZW0gKTtcblx0fSxcblx0Y2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5ncyggZWxlbS5maXJzdENoaWxkICk7XG5cdH0sXG5cdGNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZWxlbS5jb250ZW50RG9jdW1lbnQgfHwgalF1ZXJ5Lm1lcmdlKCBbXSwgZWxlbS5jaGlsZE5vZGVzICk7XG5cdH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBmbiApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggdW50aWwsIHNlbGVjdG9yICkge1xuXHRcdHZhciBtYXRjaGVkID0galF1ZXJ5Lm1hcCggdGhpcywgZm4sIHVudGlsICk7XG5cblx0XHRpZiAoIG5hbWUuc2xpY2UoIC01ICkgIT09IFwiVW50aWxcIiApIHtcblx0XHRcdHNlbGVjdG9yID0gdW50aWw7XG5cdFx0fVxuXG5cdFx0aWYgKCBzZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRtYXRjaGVkID0galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIG1hdGNoZWQgKTtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXMubGVuZ3RoID4gMSApIHtcblxuXHRcdFx0Ly8gUmVtb3ZlIGR1cGxpY2F0ZXNcblx0XHRcdGlmICggIWd1YXJhbnRlZWRVbmlxdWVbIG5hbWUgXSApIHtcblx0XHRcdFx0alF1ZXJ5LnVuaXF1ZVNvcnQoIG1hdGNoZWQgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV2ZXJzZSBvcmRlciBmb3IgcGFyZW50cyogYW5kIHByZXYtZGVyaXZhdGl2ZXNcblx0XHRcdGlmICggcnBhcmVudHNwcmV2LnRlc3QoIG5hbWUgKSApIHtcblx0XHRcdFx0bWF0Y2hlZC5yZXZlcnNlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkICk7XG5cdH07XG59ICk7XG52YXIgcm5vdHdoaXRlID0gKCAvXFxTKy9nICk7XG5cblxuXG4vLyBDb252ZXJ0IFN0cmluZy1mb3JtYXR0ZWQgb3B0aW9ucyBpbnRvIE9iamVjdC1mb3JtYXR0ZWQgb25lc1xuZnVuY3Rpb24gY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApIHtcblx0dmFyIG9iamVjdCA9IHt9O1xuXHRqUXVlcnkuZWFjaCggb3B0aW9ucy5tYXRjaCggcm5vdHdoaXRlICkgfHwgW10sIGZ1bmN0aW9uKCBfLCBmbGFnICkge1xuXHRcdG9iamVjdFsgZmxhZyBdID0gdHJ1ZTtcblx0fSApO1xuXHRyZXR1cm4gb2JqZWN0O1xufVxuXG4vKlxuICogQ3JlYXRlIGEgY2FsbGJhY2sgbGlzdCB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6XG4gKlxuICpcdG9wdGlvbnM6IGFuIG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNoYW5nZSBob3dcbiAqXHRcdFx0dGhlIGNhbGxiYWNrIGxpc3QgYmVoYXZlcyBvciBhIG1vcmUgdHJhZGl0aW9uYWwgb3B0aW9uIG9iamVjdFxuICpcbiAqIEJ5IGRlZmF1bHQgYSBjYWxsYmFjayBsaXN0IHdpbGwgYWN0IGxpa2UgYW4gZXZlbnQgY2FsbGJhY2sgbGlzdCBhbmQgY2FuIGJlXG4gKiBcImZpcmVkXCIgbXVsdGlwbGUgdGltZXMuXG4gKlxuICogUG9zc2libGUgb3B0aW9uczpcbiAqXG4gKlx0b25jZTpcdFx0XHR3aWxsIGVuc3VyZSB0aGUgY2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChsaWtlIGEgRGVmZXJyZWQpXG4gKlxuICpcdG1lbW9yeTpcdFx0XHR3aWxsIGtlZXAgdHJhY2sgb2YgcHJldmlvdXMgdmFsdWVzIGFuZCB3aWxsIGNhbGwgYW55IGNhbGxiYWNrIGFkZGVkXG4gKlx0XHRcdFx0XHRhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGggdGhlIGxhdGVzdCBcIm1lbW9yaXplZFwiXG4gKlx0XHRcdFx0XHR2YWx1ZXMgKGxpa2UgYSBEZWZlcnJlZClcbiAqXG4gKlx0dW5pcXVlOlx0XHRcdHdpbGwgZW5zdXJlIGEgY2FsbGJhY2sgY2FuIG9ubHkgYmUgYWRkZWQgb25jZSAobm8gZHVwbGljYXRlIGluIHRoZSBsaXN0KVxuICpcbiAqXHRzdG9wT25GYWxzZTpcdGludGVycnVwdCBjYWxsaW5ncyB3aGVuIGEgY2FsbGJhY2sgcmV0dXJucyBmYWxzZVxuICpcbiAqL1xualF1ZXJ5LkNhbGxiYWNrcyA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdC8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0cmluZy1mb3JtYXR0ZWQgdG8gT2JqZWN0LWZvcm1hdHRlZCBpZiBuZWVkZWRcblx0Ly8gKHdlIGNoZWNrIGluIGNhY2hlIGZpcnN0KVxuXHRvcHRpb25zID0gdHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIgP1xuXHRcdGNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSA6XG5cdFx0alF1ZXJ5LmV4dGVuZCgge30sIG9wdGlvbnMgKTtcblxuXHR2YXIgLy8gRmxhZyB0byBrbm93IGlmIGxpc3QgaXMgY3VycmVudGx5IGZpcmluZ1xuXHRcdGZpcmluZyxcblxuXHRcdC8vIExhc3QgZmlyZSB2YWx1ZSBmb3Igbm9uLWZvcmdldHRhYmxlIGxpc3RzXG5cdFx0bWVtb3J5LFxuXG5cdFx0Ly8gRmxhZyB0byBrbm93IGlmIGxpc3Qgd2FzIGFscmVhZHkgZmlyZWRcblx0XHRmaXJlZCxcblxuXHRcdC8vIEZsYWcgdG8gcHJldmVudCBmaXJpbmdcblx0XHRsb2NrZWQsXG5cblx0XHQvLyBBY3R1YWwgY2FsbGJhY2sgbGlzdFxuXHRcdGxpc3QgPSBbXSxcblxuXHRcdC8vIFF1ZXVlIG9mIGV4ZWN1dGlvbiBkYXRhIGZvciByZXBlYXRhYmxlIGxpc3RzXG5cdFx0cXVldWUgPSBbXSxcblxuXHRcdC8vIEluZGV4IG9mIGN1cnJlbnRseSBmaXJpbmcgY2FsbGJhY2sgKG1vZGlmaWVkIGJ5IGFkZC9yZW1vdmUgYXMgbmVlZGVkKVxuXHRcdGZpcmluZ0luZGV4ID0gLTEsXG5cblx0XHQvLyBGaXJlIGNhbGxiYWNrc1xuXHRcdGZpcmUgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRW5mb3JjZSBzaW5nbGUtZmlyaW5nXG5cdFx0XHRsb2NrZWQgPSBvcHRpb25zLm9uY2U7XG5cblx0XHRcdC8vIEV4ZWN1dGUgY2FsbGJhY2tzIGZvciBhbGwgcGVuZGluZyBleGVjdXRpb25zLFxuXHRcdFx0Ly8gcmVzcGVjdGluZyBmaXJpbmdJbmRleCBvdmVycmlkZXMgYW5kIHJ1bnRpbWUgY2hhbmdlc1xuXHRcdFx0ZmlyZWQgPSBmaXJpbmcgPSB0cnVlO1xuXHRcdFx0Zm9yICggOyBxdWV1ZS5sZW5ndGg7IGZpcmluZ0luZGV4ID0gLTEgKSB7XG5cdFx0XHRcdG1lbW9yeSA9IHF1ZXVlLnNoaWZ0KCk7XG5cdFx0XHRcdHdoaWxlICggKytmaXJpbmdJbmRleCA8IGxpc3QubGVuZ3RoICkge1xuXG5cdFx0XHRcdFx0Ly8gUnVuIGNhbGxiYWNrIGFuZCBjaGVjayBmb3IgZWFybHkgdGVybWluYXRpb25cblx0XHRcdFx0XHRpZiAoIGxpc3RbIGZpcmluZ0luZGV4IF0uYXBwbHkoIG1lbW9yeVsgMCBdLCBtZW1vcnlbIDEgXSApID09PSBmYWxzZSAmJlxuXHRcdFx0XHRcdFx0b3B0aW9ucy5zdG9wT25GYWxzZSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSnVtcCB0byBlbmQgYW5kIGZvcmdldCB0aGUgZGF0YSBzbyAuYWRkIGRvZXNuJ3QgcmUtZmlyZVxuXHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXggPSBsaXN0Lmxlbmd0aDtcblx0XHRcdFx0XHRcdG1lbW9yeSA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBGb3JnZXQgdGhlIGRhdGEgaWYgd2UncmUgZG9uZSB3aXRoIGl0XG5cdFx0XHRpZiAoICFvcHRpb25zLm1lbW9yeSApIHtcblx0XHRcdFx0bWVtb3J5ID0gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGZpcmluZyA9IGZhbHNlO1xuXG5cdFx0XHQvLyBDbGVhbiB1cCBpZiB3ZSdyZSBkb25lIGZpcmluZyBmb3IgZ29vZFxuXHRcdFx0aWYgKCBsb2NrZWQgKSB7XG5cblx0XHRcdFx0Ly8gS2VlcCBhbiBlbXB0eSBsaXN0IGlmIHdlIGhhdmUgZGF0YSBmb3IgZnV0dXJlIGFkZCBjYWxsc1xuXHRcdFx0XHRpZiAoIG1lbW9yeSApIHtcblx0XHRcdFx0XHRsaXN0ID0gW107XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlLCB0aGlzIG9iamVjdCBpcyBzcGVudFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxpc3QgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdC8vIEFjdHVhbCBDYWxsYmFja3Mgb2JqZWN0XG5cdFx0c2VsZiA9IHtcblxuXHRcdFx0Ly8gQWRkIGEgY2FsbGJhY2sgb3IgYSBjb2xsZWN0aW9uIG9mIGNhbGxiYWNrcyB0byB0aGUgbGlzdFxuXHRcdFx0YWRkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xuXG5cdFx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBtZW1vcnkgZnJvbSBhIHBhc3QgcnVuLCB3ZSBzaG91bGQgZmlyZSBhZnRlciBhZGRpbmdcblx0XHRcdFx0XHRpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXggPSBsaXN0Lmxlbmd0aCAtIDE7XG5cdFx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBtZW1vcnkgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQoIGZ1bmN0aW9uIGFkZCggYXJncyApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmdzLCBmdW5jdGlvbiggXywgYXJnICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBhcmcgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoICFvcHRpb25zLnVuaXF1ZSB8fCAhc2VsZi5oYXMoIGFyZyApICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGlzdC5wdXNoKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIGFyZyAmJiBhcmcubGVuZ3RoICYmIGpRdWVyeS50eXBlKCBhcmcgKSAhPT0gXCJzdHJpbmdcIiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIEluc3BlY3QgcmVjdXJzaXZlbHlcblx0XHRcdFx0XHRcdFx0XHRhZGQoIGFyZyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0fSApKCBhcmd1bWVudHMgKTtcblxuXHRcdFx0XHRcdGlmICggbWVtb3J5ICYmICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRmaXJlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gUmVtb3ZlIGEgY2FsbGJhY2sgZnJvbSB0aGUgbGlzdFxuXHRcdFx0cmVtb3ZlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0alF1ZXJ5LmVhY2goIGFyZ3VtZW50cywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHR2YXIgaW5kZXg7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGluZGV4ID0galF1ZXJ5LmluQXJyYXkoIGFyZywgbGlzdCwgaW5kZXggKSApID4gLTEgKSB7XG5cdFx0XHRcdFx0XHRsaXN0LnNwbGljZSggaW5kZXgsIDEgKTtcblxuXHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGZpcmluZyBpbmRleGVzXG5cdFx0XHRcdFx0XHRpZiAoIGluZGV4IDw9IGZpcmluZ0luZGV4ICkge1xuXHRcdFx0XHRcdFx0XHRmaXJpbmdJbmRleC0tO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIENoZWNrIGlmIGEgZ2l2ZW4gY2FsbGJhY2sgaXMgaW4gdGhlIGxpc3QuXG5cdFx0XHQvLyBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJuIHdoZXRoZXIgb3Igbm90IGxpc3QgaGFzIGNhbGxiYWNrcyBhdHRhY2hlZC5cblx0XHRcdGhhczogZnVuY3Rpb24oIGZuICkge1xuXHRcdFx0XHRyZXR1cm4gZm4gP1xuXHRcdFx0XHRcdGpRdWVyeS5pbkFycmF5KCBmbiwgbGlzdCApID4gLTEgOlxuXHRcdFx0XHRcdGxpc3QubGVuZ3RoID4gMDtcblx0XHRcdH0sXG5cblx0XHRcdC8vIFJlbW92ZSBhbGwgY2FsbGJhY2tzIGZyb20gdGhlIGxpc3Rcblx0XHRcdGVtcHR5OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xuXHRcdFx0XHRcdGxpc3QgPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIERpc2FibGUgLmZpcmUgYW5kIC5hZGRcblx0XHRcdC8vIEFib3J0IGFueSBjdXJyZW50L3BlbmRpbmcgZXhlY3V0aW9uc1xuXHRcdFx0Ly8gQ2xlYXIgYWxsIGNhbGxiYWNrcyBhbmQgdmFsdWVzXG5cdFx0XHRkaXNhYmxlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0bG9ja2VkID0gcXVldWUgPSBbXTtcblx0XHRcdFx0bGlzdCA9IG1lbW9yeSA9IFwiXCI7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdGRpc2FibGVkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICFsaXN0O1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gRGlzYWJsZSAuZmlyZVxuXHRcdFx0Ly8gQWxzbyBkaXNhYmxlIC5hZGQgdW5sZXNzIHdlIGhhdmUgbWVtb3J5IChzaW5jZSBpdCB3b3VsZCBoYXZlIG5vIGVmZmVjdClcblx0XHRcdC8vIEFib3J0IGFueSBwZW5kaW5nIGV4ZWN1dGlvbnNcblx0XHRcdGxvY2s6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRsb2NrZWQgPSBxdWV1ZSA9IFtdO1xuXHRcdFx0XHRpZiAoICFtZW1vcnkgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IG1lbW9yeSA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0bG9ja2VkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICEhbG9ja2VkO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gQ2FsbCBhbGwgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGNvbnRleHQgYW5kIGFyZ3VtZW50c1xuXHRcdFx0ZmlyZVdpdGg6IGZ1bmN0aW9uKCBjb250ZXh0LCBhcmdzICkge1xuXHRcdFx0XHRpZiAoICFsb2NrZWQgKSB7XG5cdFx0XHRcdFx0YXJncyA9IGFyZ3MgfHwgW107XG5cdFx0XHRcdFx0YXJncyA9IFsgY29udGV4dCwgYXJncy5zbGljZSA/IGFyZ3Muc2xpY2UoKSA6IGFyZ3MgXTtcblx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBhcmdzICk7XG5cdFx0XHRcdFx0aWYgKCAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIENhbGwgYWxsIHRoZSBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzXG5cdFx0XHRmaXJlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0c2VsZi5maXJlV2l0aCggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gVG8ga25vdyBpZiB0aGUgY2FsbGJhY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNlXG5cdFx0XHRmaXJlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhIWZpcmVkO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0cmV0dXJuIHNlbGY7XG59O1xuXG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHREZWZlcnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7XG5cdFx0dmFyIHR1cGxlcyA9IFtcblxuXHRcdFx0XHQvLyBhY3Rpb24sIGFkZCBsaXN0ZW5lciwgbGlzdGVuZXIgbGlzdCwgZmluYWwgc3RhdGVcblx0XHRcdFx0WyBcInJlc29sdmVcIiwgXCJkb25lXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLCBcInJlc29sdmVkXCIgXSxcblx0XHRcdFx0WyBcInJlamVjdFwiLCBcImZhaWxcIiwgalF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksIFwicmVqZWN0ZWRcIiBdLFxuXHRcdFx0XHRbIFwibm90aWZ5XCIsIFwicHJvZ3Jlc3NcIiwgalF1ZXJ5LkNhbGxiYWNrcyggXCJtZW1vcnlcIiApIF1cblx0XHRcdF0sXG5cdFx0XHRzdGF0ZSA9IFwicGVuZGluZ1wiLFxuXHRcdFx0cHJvbWlzZSA9IHtcblx0XHRcdFx0c3RhdGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBzdGF0ZTtcblx0XHRcdFx0fSxcblx0XHRcdFx0YWx3YXlzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5kb25lKCBhcmd1bWVudHMgKS5mYWlsKCBhcmd1bWVudHMgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhlbjogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWlsLCBmblByb2dyZXNzICovICkge1xuXHRcdFx0XHRcdHZhciBmbnMgPSBhcmd1bWVudHM7XG5cdFx0XHRcdFx0cmV0dXJuIGpRdWVyeS5EZWZlcnJlZCggZnVuY3Rpb24oIG5ld0RlZmVyICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZm4gPSBqUXVlcnkuaXNGdW5jdGlvbiggZm5zWyBpIF0gKSAmJiBmbnNbIGkgXTtcblxuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZFsgZG9uZSB8IGZhaWwgfCBwcm9ncmVzcyBdIGZvciBmb3J3YXJkaW5nIGFjdGlvbnMgdG8gbmV3RGVmZXJcblx0XHRcdFx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAxIF0gXSggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJldHVybmVkID0gZm4gJiYgZm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdFx0XHRcdGlmICggcmV0dXJuZWQgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHJldHVybmVkLnByb21pc2UgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLnByb21pc2UoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQucHJvZ3Jlc3MoIG5ld0RlZmVyLm5vdGlmeSApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5kb25lKCBuZXdEZWZlci5yZXNvbHZlIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmZhaWwoIG5ld0RlZmVyLnJlamVjdCApO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlclsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0oXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMgPT09IHByb21pc2UgPyBuZXdEZWZlci5wcm9taXNlKCkgOiB0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmbiA/IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50c1xuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdGZucyA9IG51bGw7XG5cdFx0XHRcdFx0fSApLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBHZXQgYSBwcm9taXNlIGZvciB0aGlzIGRlZmVycmVkXG5cdFx0XHRcdC8vIElmIG9iaiBpcyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3Rcblx0XHRcdFx0cHJvbWlzZTogZnVuY3Rpb24oIG9iaiApIHtcblx0XHRcdFx0XHRyZXR1cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHByb21pc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWZlcnJlZCA9IHt9O1xuXG5cdFx0Ly8gS2VlcCBwaXBlIGZvciBiYWNrLWNvbXBhdFxuXHRcdHByb21pc2UucGlwZSA9IHByb21pc2UudGhlbjtcblxuXHRcdC8vIEFkZCBsaXN0LXNwZWNpZmljIG1ldGhvZHNcblx0XHRqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7XG5cdFx0XHR2YXIgbGlzdCA9IHR1cGxlWyAyIF0sXG5cdFx0XHRcdHN0YXRlU3RyaW5nID0gdHVwbGVbIDMgXTtcblxuXHRcdFx0Ly8gcHJvbWlzZVsgZG9uZSB8IGZhaWwgfCBwcm9ncmVzcyBdID0gbGlzdC5hZGRcblx0XHRcdHByb21pc2VbIHR1cGxlWyAxIF0gXSA9IGxpc3QuYWRkO1xuXG5cdFx0XHQvLyBIYW5kbGUgc3RhdGVcblx0XHRcdGlmICggc3RhdGVTdHJpbmcgKSB7XG5cdFx0XHRcdGxpc3QuYWRkKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdC8vIHN0YXRlID0gWyByZXNvbHZlZCB8IHJlamVjdGVkIF1cblx0XHRcdFx0XHRzdGF0ZSA9IHN0YXRlU3RyaW5nO1xuXG5cdFx0XHRcdC8vIFsgcmVqZWN0X2xpc3QgfCByZXNvbHZlX2xpc3QgXS5kaXNhYmxlOyBwcm9ncmVzc19saXN0LmxvY2tcblx0XHRcdFx0fSwgdHVwbGVzWyBpIF4gMSBdWyAyIF0uZGlzYWJsZSwgdHVwbGVzWyAyIF1bIDIgXS5sb2NrICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIGRlZmVycmVkWyByZXNvbHZlIHwgcmVqZWN0IHwgbm90aWZ5IF1cblx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMCBdIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKCB0aGlzID09PSBkZWZlcnJlZCA/IHByb21pc2UgOiB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9O1xuXHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdID0gbGlzdC5maXJlV2l0aDtcblx0XHR9ICk7XG5cblx0XHQvLyBNYWtlIHRoZSBkZWZlcnJlZCBhIHByb21pc2Vcblx0XHRwcm9taXNlLnByb21pc2UoIGRlZmVycmVkICk7XG5cblx0XHQvLyBDYWxsIGdpdmVuIGZ1bmMgaWYgYW55XG5cdFx0aWYgKCBmdW5jICkge1xuXHRcdFx0ZnVuYy5jYWxsKCBkZWZlcnJlZCwgZGVmZXJyZWQgKTtcblx0XHR9XG5cblx0XHQvLyBBbGwgZG9uZSFcblx0XHRyZXR1cm4gZGVmZXJyZWQ7XG5cdH0sXG5cblx0Ly8gRGVmZXJyZWQgaGVscGVyXG5cdHdoZW46IGZ1bmN0aW9uKCBzdWJvcmRpbmF0ZSAvKiAsIC4uLiwgc3Vib3JkaW5hdGVOICovICkge1xuXHRcdHZhciBpID0gMCxcblx0XHRcdHJlc29sdmVWYWx1ZXMgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSxcblx0XHRcdGxlbmd0aCA9IHJlc29sdmVWYWx1ZXMubGVuZ3RoLFxuXG5cdFx0XHQvLyB0aGUgY291bnQgb2YgdW5jb21wbGV0ZWQgc3Vib3JkaW5hdGVzXG5cdFx0XHRyZW1haW5pbmcgPSBsZW5ndGggIT09IDEgfHxcblx0XHRcdFx0KCBzdWJvcmRpbmF0ZSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggc3Vib3JkaW5hdGUucHJvbWlzZSApICkgPyBsZW5ndGggOiAwLFxuXG5cdFx0XHQvLyB0aGUgbWFzdGVyIERlZmVycmVkLlxuXHRcdFx0Ly8gSWYgcmVzb2x2ZVZhbHVlcyBjb25zaXN0IG9mIG9ubHkgYSBzaW5nbGUgRGVmZXJyZWQsIGp1c3QgdXNlIHRoYXQuXG5cdFx0XHRkZWZlcnJlZCA9IHJlbWFpbmluZyA9PT0gMSA/IHN1Ym9yZGluYXRlIDogalF1ZXJ5LkRlZmVycmVkKCksXG5cblx0XHRcdC8vIFVwZGF0ZSBmdW5jdGlvbiBmb3IgYm90aCByZXNvbHZlIGFuZCBwcm9ncmVzcyB2YWx1ZXNcblx0XHRcdHVwZGF0ZUZ1bmMgPSBmdW5jdGlvbiggaSwgY29udGV4dHMsIHZhbHVlcyApIHtcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRjb250ZXh0c1sgaSBdID0gdGhpcztcblx0XHRcdFx0XHR2YWx1ZXNbIGkgXSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gc2xpY2UuY2FsbCggYXJndW1lbnRzICkgOiB2YWx1ZTtcblx0XHRcdFx0XHRpZiAoIHZhbHVlcyA9PT0gcHJvZ3Jlc3NWYWx1ZXMgKSB7XG5cdFx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBjb250ZXh0cywgdmFsdWVzICk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICggISggLS1yZW1haW5pbmcgKSApIHtcblx0XHRcdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBjb250ZXh0cywgdmFsdWVzICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblxuXHRcdFx0cHJvZ3Jlc3NWYWx1ZXMsIHByb2dyZXNzQ29udGV4dHMsIHJlc29sdmVDb250ZXh0cztcblxuXHRcdC8vIEFkZCBsaXN0ZW5lcnMgdG8gRGVmZXJyZWQgc3Vib3JkaW5hdGVzOyB0cmVhdCBvdGhlcnMgYXMgcmVzb2x2ZWRcblx0XHRpZiAoIGxlbmd0aCA+IDEgKSB7XG5cdFx0XHRwcm9ncmVzc1ZhbHVlcyA9IG5ldyBBcnJheSggbGVuZ3RoICk7XG5cdFx0XHRwcm9ncmVzc0NvbnRleHRzID0gbmV3IEFycmF5KCBsZW5ndGggKTtcblx0XHRcdHJlc29sdmVDb250ZXh0cyA9IG5ldyBBcnJheSggbGVuZ3RoICk7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0aWYgKCByZXNvbHZlVmFsdWVzWyBpIF0gJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHJlc29sdmVWYWx1ZXNbIGkgXS5wcm9taXNlICkgKSB7XG5cdFx0XHRcdFx0cmVzb2x2ZVZhbHVlc1sgaSBdLnByb21pc2UoKVxuXHRcdFx0XHRcdFx0LnByb2dyZXNzKCB1cGRhdGVGdW5jKCBpLCBwcm9ncmVzc0NvbnRleHRzLCBwcm9ncmVzc1ZhbHVlcyApIClcblx0XHRcdFx0XHRcdC5kb25lKCB1cGRhdGVGdW5jKCBpLCByZXNvbHZlQ29udGV4dHMsIHJlc29sdmVWYWx1ZXMgKSApXG5cdFx0XHRcdFx0XHQuZmFpbCggZGVmZXJyZWQucmVqZWN0ICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0LS1yZW1haW5pbmc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBJZiB3ZSdyZSBub3Qgd2FpdGluZyBvbiBhbnl0aGluZywgcmVzb2x2ZSB0aGUgbWFzdGVyXG5cdFx0aWYgKCAhcmVtYWluaW5nICkge1xuXHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApO1xuXHRcdH1cblxuXHRcdHJldHVybiBkZWZlcnJlZC5wcm9taXNlKCk7XG5cdH1cbn0gKTtcblxuXG4vLyBUaGUgZGVmZXJyZWQgdXNlZCBvbiBET00gcmVhZHlcbnZhciByZWFkeUxpc3Q7XG5cbmpRdWVyeS5mbi5yZWFkeSA9IGZ1bmN0aW9uKCBmbiApIHtcblxuXHQvLyBBZGQgdGhlIGNhbGxiYWNrXG5cdGpRdWVyeS5yZWFkeS5wcm9taXNlKCkuZG9uZSggZm4gKTtcblxuXHRyZXR1cm4gdGhpcztcbn07XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBJcyB0aGUgRE9NIHJlYWR5IHRvIGJlIHVzZWQ/IFNldCB0byB0cnVlIG9uY2UgaXQgb2NjdXJzLlxuXHRpc1JlYWR5OiBmYWxzZSxcblxuXHQvLyBBIGNvdW50ZXIgdG8gdHJhY2sgaG93IG1hbnkgaXRlbXMgdG8gd2FpdCBmb3IgYmVmb3JlXG5cdC8vIHRoZSByZWFkeSBldmVudCBmaXJlcy4gU2VlICM2NzgxXG5cdHJlYWR5V2FpdDogMSxcblxuXHQvLyBIb2xkIChvciByZWxlYXNlKSB0aGUgcmVhZHkgZXZlbnRcblx0aG9sZFJlYWR5OiBmdW5jdGlvbiggaG9sZCApIHtcblx0XHRpZiAoIGhvbGQgKSB7XG5cdFx0XHRqUXVlcnkucmVhZHlXYWl0Kys7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGpRdWVyeS5yZWFkeSggdHJ1ZSApO1xuXHRcdH1cblx0fSxcblxuXHQvLyBIYW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJlYWR5XG5cdHJlYWR5OiBmdW5jdGlvbiggd2FpdCApIHtcblxuXHRcdC8vIEFib3J0IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGhvbGRzIG9yIHdlJ3JlIGFscmVhZHkgcmVhZHlcblx0XHRpZiAoIHdhaXQgPT09IHRydWUgPyAtLWpRdWVyeS5yZWFkeVdhaXQgOiBqUXVlcnkuaXNSZWFkeSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBSZW1lbWJlciB0aGF0IHRoZSBET00gaXMgcmVhZHlcblx0XHRqUXVlcnkuaXNSZWFkeSA9IHRydWU7XG5cblx0XHQvLyBJZiBhIG5vcm1hbCBET00gUmVhZHkgZXZlbnQgZmlyZWQsIGRlY3JlbWVudCwgYW5kIHdhaXQgaWYgbmVlZCBiZVxuXHRcdGlmICggd2FpdCAhPT0gdHJ1ZSAmJiAtLWpRdWVyeS5yZWFkeVdhaXQgPiAwICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIElmIHRoZXJlIGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4ZWN1dGVcblx0XHRyZWFkeUxpc3QucmVzb2x2ZVdpdGgoIGRvY3VtZW50LCBbIGpRdWVyeSBdICk7XG5cblx0XHQvLyBUcmlnZ2VyIGFueSBib3VuZCByZWFkeSBldmVudHNcblx0XHRpZiAoIGpRdWVyeS5mbi50cmlnZ2VySGFuZGxlciApIHtcblx0XHRcdGpRdWVyeSggZG9jdW1lbnQgKS50cmlnZ2VySGFuZGxlciggXCJyZWFkeVwiICk7XG5cdFx0XHRqUXVlcnkoIGRvY3VtZW50ICkub2ZmKCBcInJlYWR5XCIgKTtcblx0XHR9XG5cdH1cbn0gKTtcblxuLyoqXG4gKiBUaGUgcmVhZHkgZXZlbnQgaGFuZGxlciBhbmQgc2VsZiBjbGVhbnVwIG1ldGhvZFxuICovXG5mdW5jdGlvbiBjb21wbGV0ZWQoKSB7XG5cdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIFwiRE9NQ29udGVudExvYWRlZFwiLCBjb21wbGV0ZWQgKTtcblx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIFwibG9hZFwiLCBjb21wbGV0ZWQgKTtcblx0alF1ZXJ5LnJlYWR5KCk7XG59XG5cbmpRdWVyeS5yZWFkeS5wcm9taXNlID0gZnVuY3Rpb24oIG9iaiApIHtcblx0aWYgKCAhcmVhZHlMaXN0ICkge1xuXG5cdFx0cmVhZHlMaXN0ID0galF1ZXJ5LkRlZmVycmVkKCk7XG5cblx0XHQvLyBDYXRjaCBjYXNlcyB3aGVyZSAkKGRvY3VtZW50KS5yZWFkeSgpIGlzIGNhbGxlZFxuXHRcdC8vIGFmdGVyIHRoZSBicm93c2VyIGV2ZW50IGhhcyBhbHJlYWR5IG9jY3VycmVkLlxuXHRcdC8vIFN1cHBvcnQ6IElFOS0xMCBvbmx5XG5cdFx0Ly8gT2xkZXIgSUUgc29tZXRpbWVzIHNpZ25hbHMgXCJpbnRlcmFjdGl2ZVwiIHRvbyBzb29uXG5cdFx0aWYgKCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIgfHxcblx0XHRcdCggZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gXCJsb2FkaW5nXCIgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCApICkge1xuXG5cdFx0XHQvLyBIYW5kbGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZGVsYXkgcmVhZHlcblx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBqUXVlcnkucmVhZHkgKTtcblxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIFVzZSB0aGUgaGFuZHkgZXZlbnQgY2FsbGJhY2tcblx0XHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIFwiRE9NQ29udGVudExvYWRlZFwiLCBjb21wbGV0ZWQgKTtcblxuXHRcdFx0Ly8gQSBmYWxsYmFjayB0byB3aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmtcblx0XHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCBcImxvYWRcIiwgY29tcGxldGVkICk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiByZWFkeUxpc3QucHJvbWlzZSggb2JqICk7XG59O1xuXG4vLyBLaWNrIG9mZiB0aGUgRE9NIHJlYWR5IGNoZWNrIGV2ZW4gaWYgdGhlIHVzZXIgZG9lcyBub3RcbmpRdWVyeS5yZWFkeS5wcm9taXNlKCk7XG5cblxuXG5cbi8vIE11bHRpZnVuY3Rpb25hbCBtZXRob2QgdG8gZ2V0IGFuZCBzZXQgdmFsdWVzIG9mIGEgY29sbGVjdGlvblxuLy8gVGhlIHZhbHVlL3MgY2FuIG9wdGlvbmFsbHkgYmUgZXhlY3V0ZWQgaWYgaXQncyBhIGZ1bmN0aW9uXG52YXIgYWNjZXNzID0gZnVuY3Rpb24oIGVsZW1zLCBmbiwga2V5LCB2YWx1ZSwgY2hhaW5hYmxlLCBlbXB0eUdldCwgcmF3ICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gZWxlbXMubGVuZ3RoLFxuXHRcdGJ1bGsgPSBrZXkgPT0gbnVsbDtcblxuXHQvLyBTZXRzIG1hbnkgdmFsdWVzXG5cdGlmICggalF1ZXJ5LnR5cGUoIGtleSApID09PSBcIm9iamVjdFwiICkge1xuXHRcdGNoYWluYWJsZSA9IHRydWU7XG5cdFx0Zm9yICggaSBpbiBrZXkgKSB7XG5cdFx0XHRhY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5WyBpIF0sIHRydWUsIGVtcHR5R2V0LCByYXcgKTtcblx0XHR9XG5cblx0Ly8gU2V0cyBvbmUgdmFsdWVcblx0fSBlbHNlIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRjaGFpbmFibGUgPSB0cnVlO1xuXG5cdFx0aWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyYXcgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGlmICggYnVsayApIHtcblxuXHRcdFx0Ly8gQnVsayBvcGVyYXRpb25zIHJ1biBhZ2FpbnN0IHRoZSBlbnRpcmUgc2V0XG5cdFx0XHRpZiAoIHJhdyApIHtcblx0XHRcdFx0Zm4uY2FsbCggZWxlbXMsIHZhbHVlICk7XG5cdFx0XHRcdGZuID0gbnVsbDtcblxuXHRcdFx0Ly8gLi4uZXhjZXB0IHdoZW4gZXhlY3V0aW5nIGZ1bmN0aW9uIHZhbHVlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YnVsayA9IGZuO1xuXHRcdFx0XHRmbiA9IGZ1bmN0aW9uKCBlbGVtLCBrZXksIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiBidWxrLmNhbGwoIGpRdWVyeSggZWxlbSApLCB2YWx1ZSApO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggZm4gKSB7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0Zm4oXG5cdFx0XHRcdFx0ZWxlbXNbIGkgXSwga2V5LCByYXcgP1xuXHRcdFx0XHRcdHZhbHVlIDpcblx0XHRcdFx0XHR2YWx1ZS5jYWxsKCBlbGVtc1sgaSBdLCBpLCBmbiggZWxlbXNbIGkgXSwga2V5ICkgKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjaGFpbmFibGUgP1xuXHRcdGVsZW1zIDpcblxuXHRcdC8vIEdldHNcblx0XHRidWxrID9cblx0XHRcdGZuLmNhbGwoIGVsZW1zICkgOlxuXHRcdFx0bGVuID8gZm4oIGVsZW1zWyAwIF0sIGtleSApIDogZW1wdHlHZXQ7XG59O1xudmFyIGFjY2VwdERhdGEgPSBmdW5jdGlvbiggb3duZXIgKSB7XG5cblx0Ly8gQWNjZXB0cyBvbmx5OlxuXHQvLyAgLSBOb2RlXG5cdC8vICAgIC0gTm9kZS5FTEVNRU5UX05PREVcblx0Ly8gICAgLSBOb2RlLkRPQ1VNRU5UX05PREVcblx0Ly8gIC0gT2JqZWN0XG5cdC8vICAgIC0gQW55XG5cdC8qIGpzaGludCAtVzAxOCAqL1xuXHRyZXR1cm4gb3duZXIubm9kZVR5cGUgPT09IDEgfHwgb3duZXIubm9kZVR5cGUgPT09IDkgfHwgISggK293bmVyLm5vZGVUeXBlICk7XG59O1xuXG5cblxuXG5mdW5jdGlvbiBEYXRhKCkge1xuXHR0aGlzLmV4cGFuZG8gPSBqUXVlcnkuZXhwYW5kbyArIERhdGEudWlkKys7XG59XG5cbkRhdGEudWlkID0gMTtcblxuRGF0YS5wcm90b3R5cGUgPSB7XG5cblx0cmVnaXN0ZXI6IGZ1bmN0aW9uKCBvd25lciwgaW5pdGlhbCApIHtcblx0XHR2YXIgdmFsdWUgPSBpbml0aWFsIHx8IHt9O1xuXG5cdFx0Ly8gSWYgaXQgaXMgYSBub2RlIHVubGlrZWx5IHRvIGJlIHN0cmluZ2lmeS1lZCBvciBsb29wZWQgb3ZlclxuXHRcdC8vIHVzZSBwbGFpbiBhc3NpZ25tZW50XG5cdFx0aWYgKCBvd25lci5ub2RlVHlwZSApIHtcblx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHZhbHVlO1xuXG5cdFx0Ly8gT3RoZXJ3aXNlIHNlY3VyZSBpdCBpbiBhIG5vbi1lbnVtZXJhYmxlLCBub24td3JpdGFibGUgcHJvcGVydHlcblx0XHQvLyBjb25maWd1cmFiaWxpdHkgbXVzdCBiZSB0cnVlIHRvIGFsbG93IHRoZSBwcm9wZXJ0eSB0byBiZVxuXHRcdC8vIGRlbGV0ZWQgd2l0aCB0aGUgZGVsZXRlIG9wZXJhdG9yXG5cdFx0fSBlbHNlIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggb3duZXIsIHRoaXMuZXhwYW5kbywge1xuXHRcdFx0XHR2YWx1ZTogdmFsdWUsXG5cdFx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0XHRjb25maWd1cmFibGU6IHRydWVcblx0XHRcdH0gKTtcblx0XHR9XG5cdFx0cmV0dXJuIG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblx0fSxcblx0Y2FjaGU6IGZ1bmN0aW9uKCBvd25lciApIHtcblxuXHRcdC8vIFdlIGNhbiBhY2NlcHQgZGF0YSBmb3Igbm9uLWVsZW1lbnQgbm9kZXMgaW4gbW9kZXJuIGJyb3dzZXJzLFxuXHRcdC8vIGJ1dCB3ZSBzaG91bGQgbm90LCBzZWUgIzgzMzUuXG5cdFx0Ly8gQWx3YXlzIHJldHVybiBhbiBlbXB0eSBvYmplY3QuXG5cdFx0aWYgKCAhYWNjZXB0RGF0YSggb3duZXIgKSApIHtcblx0XHRcdHJldHVybiB7fTtcblx0XHR9XG5cblx0XHQvLyBDaGVjayBpZiB0aGUgb3duZXIgb2JqZWN0IGFscmVhZHkgaGFzIGEgY2FjaGVcblx0XHR2YXIgdmFsdWUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cblx0XHQvLyBJZiBub3QsIGNyZWF0ZSBvbmVcblx0XHRpZiAoICF2YWx1ZSApIHtcblx0XHRcdHZhbHVlID0ge307XG5cblx0XHRcdC8vIFdlIGNhbiBhY2NlcHQgZGF0YSBmb3Igbm9uLWVsZW1lbnQgbm9kZXMgaW4gbW9kZXJuIGJyb3dzZXJzLFxuXHRcdFx0Ly8gYnV0IHdlIHNob3VsZCBub3QsIHNlZSAjODMzNS5cblx0XHRcdC8vIEFsd2F5cyByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LlxuXHRcdFx0aWYgKCBhY2NlcHREYXRhKCBvd25lciApICkge1xuXG5cdFx0XHRcdC8vIElmIGl0IGlzIGEgbm9kZSB1bmxpa2VseSB0byBiZSBzdHJpbmdpZnktZWQgb3IgbG9vcGVkIG92ZXJcblx0XHRcdFx0Ly8gdXNlIHBsYWluIGFzc2lnbm1lbnRcblx0XHRcdFx0aWYgKCBvd25lci5ub2RlVHlwZSApIHtcblx0XHRcdFx0XHRvd25lclsgdGhpcy5leHBhbmRvIF0gPSB2YWx1ZTtcblxuXHRcdFx0XHQvLyBPdGhlcndpc2Ugc2VjdXJlIGl0IGluIGEgbm9uLWVudW1lcmFibGUgcHJvcGVydHlcblx0XHRcdFx0Ly8gY29uZmlndXJhYmxlIG11c3QgYmUgdHJ1ZSB0byBhbGxvdyB0aGUgcHJvcGVydHkgdG8gYmVcblx0XHRcdFx0Ly8gZGVsZXRlZCB3aGVuIGRhdGEgaXMgcmVtb3ZlZFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggb3duZXIsIHRoaXMuZXhwYW5kbywge1xuXHRcdFx0XHRcdFx0dmFsdWU6IHZhbHVlLFxuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlXG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9LFxuXHRzZXQ6IGZ1bmN0aW9uKCBvd25lciwgZGF0YSwgdmFsdWUgKSB7XG5cdFx0dmFyIHByb3AsXG5cdFx0XHRjYWNoZSA9IHRoaXMuY2FjaGUoIG93bmVyICk7XG5cblx0XHQvLyBIYW5kbGU6IFsgb3duZXIsIGtleSwgdmFsdWUgXSBhcmdzXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGNhY2hlWyBkYXRhIF0gPSB2YWx1ZTtcblxuXHRcdC8vIEhhbmRsZTogWyBvd25lciwgeyBwcm9wZXJ0aWVzIH0gXSBhcmdzXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gQ29weSB0aGUgcHJvcGVydGllcyBvbmUtYnktb25lIHRvIHRoZSBjYWNoZSBvYmplY3Rcblx0XHRcdGZvciAoIHByb3AgaW4gZGF0YSApIHtcblx0XHRcdFx0Y2FjaGVbIHByb3AgXSA9IGRhdGFbIHByb3AgXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNhY2hlO1xuXHR9LFxuXHRnZXQ6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHJldHVybiBrZXkgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHR0aGlzLmNhY2hlKCBvd25lciApIDpcblx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSAmJiBvd25lclsgdGhpcy5leHBhbmRvIF1bIGtleSBdO1xuXHR9LFxuXHRhY2Nlc3M6IGZ1bmN0aW9uKCBvd25lciwga2V5LCB2YWx1ZSApIHtcblx0XHR2YXIgc3RvcmVkO1xuXG5cdFx0Ly8gSW4gY2FzZXMgd2hlcmUgZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBObyBrZXkgd2FzIHNwZWNpZmllZFxuXHRcdC8vICAgMi4gQSBzdHJpbmcga2V5IHdhcyBzcGVjaWZpZWQsIGJ1dCBubyB2YWx1ZSBwcm92aWRlZFxuXHRcdC8vXG5cdFx0Ly8gVGFrZSB0aGUgXCJyZWFkXCIgcGF0aCBhbmQgYWxsb3cgdGhlIGdldCBtZXRob2QgdG8gZGV0ZXJtaW5lXG5cdFx0Ly8gd2hpY2ggdmFsdWUgdG8gcmV0dXJuLCByZXNwZWN0aXZlbHkgZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBUaGUgZW50aXJlIGNhY2hlIG9iamVjdFxuXHRcdC8vICAgMi4gVGhlIGRhdGEgc3RvcmVkIGF0IHRoZSBrZXlcblx0XHQvL1xuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgfHxcblx0XHRcdFx0KCAoIGtleSAmJiB0eXBlb2Yga2V5ID09PSBcInN0cmluZ1wiICkgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApICkge1xuXG5cdFx0XHRzdG9yZWQgPSB0aGlzLmdldCggb3duZXIsIGtleSApO1xuXG5cdFx0XHRyZXR1cm4gc3RvcmVkICE9PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRzdG9yZWQgOiB0aGlzLmdldCggb3duZXIsIGpRdWVyeS5jYW1lbENhc2UoIGtleSApICk7XG5cdFx0fVxuXG5cdFx0Ly8gV2hlbiB0aGUga2V5IGlzIG5vdCBhIHN0cmluZywgb3IgYm90aCBhIGtleSBhbmQgdmFsdWVcblx0XHQvLyBhcmUgc3BlY2lmaWVkLCBzZXQgb3IgZXh0ZW5kIChleGlzdGluZyBvYmplY3RzKSB3aXRoIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3BlcnRpZXNcblx0XHQvLyAgIDIuIEEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vXG5cdFx0dGhpcy5zZXQoIG93bmVyLCBrZXksIHZhbHVlICk7XG5cblx0XHQvLyBTaW5jZSB0aGUgXCJzZXRcIiBwYXRoIGNhbiBoYXZlIHR3byBwb3NzaWJsZSBlbnRyeSBwb2ludHNcblx0XHQvLyByZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEgYmFzZWQgb24gd2hpY2ggcGF0aCB3YXMgdGFrZW5bKl1cblx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoga2V5O1xuXHR9LFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHZhciBpLCBuYW1lLCBjYW1lbCxcblx0XHRcdGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXG5cdFx0aWYgKCBjYWNoZSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR0aGlzLnJlZ2lzdGVyKCBvd25lciApO1xuXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGtleXNcblx0XHRcdGlmICggalF1ZXJ5LmlzQXJyYXkoIGtleSApICkge1xuXG5cdFx0XHRcdC8vIElmIFwibmFtZVwiIGlzIGFuIGFycmF5IG9mIGtleXMuLi5cblx0XHRcdFx0Ly8gV2hlbiBkYXRhIGlzIGluaXRpYWxseSBjcmVhdGVkLCB2aWEgKFwia2V5XCIsIFwidmFsXCIpIHNpZ25hdHVyZSxcblx0XHRcdFx0Ly8ga2V5cyB3aWxsIGJlIGNvbnZlcnRlZCB0byBjYW1lbENhc2UuXG5cdFx0XHRcdC8vIFNpbmNlIHRoZXJlIGlzIG5vIHdheSB0byB0ZWxsIF9ob3dfIGEga2V5IHdhcyBhZGRlZCwgcmVtb3ZlXG5cdFx0XHRcdC8vIGJvdGggcGxhaW4ga2V5IGFuZCBjYW1lbENhc2Uga2V5LiAjMTI3ODZcblx0XHRcdFx0Ly8gVGhpcyB3aWxsIG9ubHkgcGVuYWxpemUgdGhlIGFycmF5IGFyZ3VtZW50IHBhdGguXG5cdFx0XHRcdG5hbWUgPSBrZXkuY29uY2F0KCBrZXkubWFwKCBqUXVlcnkuY2FtZWxDYXNlICkgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNhbWVsID0galF1ZXJ5LmNhbWVsQ2FzZSgga2V5ICk7XG5cblx0XHRcdFx0Ly8gVHJ5IHRoZSBzdHJpbmcgYXMgYSBrZXkgYmVmb3JlIGFueSBtYW5pcHVsYXRpb25cblx0XHRcdFx0aWYgKCBrZXkgaW4gY2FjaGUgKSB7XG5cdFx0XHRcdFx0bmFtZSA9IFsga2V5LCBjYW1lbCBdO1xuXHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0Ly8gSWYgYSBrZXkgd2l0aCB0aGUgc3BhY2VzIGV4aXN0cywgdXNlIGl0LlxuXHRcdFx0XHRcdC8vIE90aGVyd2lzZSwgY3JlYXRlIGFuIGFycmF5IGJ5IG1hdGNoaW5nIG5vbi13aGl0ZXNwYWNlXG5cdFx0XHRcdFx0bmFtZSA9IGNhbWVsO1xuXHRcdFx0XHRcdG5hbWUgPSBuYW1lIGluIGNhY2hlID9cblx0XHRcdFx0XHRcdFsgbmFtZSBdIDogKCBuYW1lLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGkgPSBuYW1lLmxlbmd0aDtcblxuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGRlbGV0ZSBjYWNoZVsgbmFtZVsgaSBdIF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIHRoZSBleHBhbmRvIGlmIHRoZXJlJ3Mgbm8gbW9yZSBkYXRhXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fCBqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKSApIHtcblxuXHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9IDM1LTQ1K1xuXHRcdFx0Ly8gV2Via2l0ICYgQmxpbmsgcGVyZm9ybWFuY2Ugc3VmZmVycyB3aGVuIGRlbGV0aW5nIHByb3BlcnRpZXNcblx0XHRcdC8vIGZyb20gRE9NIG5vZGVzLCBzbyBzZXQgdG8gdW5kZWZpbmVkIGluc3RlYWRcblx0XHRcdC8vIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0zNzg2MDdcblx0XHRcdGlmICggb3duZXIubm9kZVR5cGUgKSB7XG5cdFx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlbGV0ZSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRoYXNEYXRhOiBmdW5jdGlvbiggb3duZXIgKSB7XG5cdFx0dmFyIGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXHRcdHJldHVybiBjYWNoZSAhPT0gdW5kZWZpbmVkICYmICFqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKTtcblx0fVxufTtcbnZhciBkYXRhUHJpdiA9IG5ldyBEYXRhKCk7XG5cbnZhciBkYXRhVXNlciA9IG5ldyBEYXRhKCk7XG5cblxuXG4vL1x0SW1wbGVtZW50YXRpb24gU3VtbWFyeVxuLy9cbi8vXHQxLiBFbmZvcmNlIEFQSSBzdXJmYWNlIGFuZCBzZW1hbnRpYyBjb21wYXRpYmlsaXR5IHdpdGggMS45LnggYnJhbmNoXG4vL1x0Mi4gSW1wcm92ZSB0aGUgbW9kdWxlJ3MgbWFpbnRhaW5hYmlsaXR5IGJ5IHJlZHVjaW5nIHRoZSBzdG9yYWdlXG4vL1x0XHRwYXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uXG4vL1x0My4gVXNlIHRoZSBzYW1lIHNpbmdsZSBtZWNoYW5pc20gdG8gc3VwcG9ydCBcInByaXZhdGVcIiBhbmQgXCJ1c2VyXCIgZGF0YS5cbi8vXHQ0LiBfTmV2ZXJfIGV4cG9zZSBcInByaXZhdGVcIiBkYXRhIHRvIHVzZXIgY29kZSAoVE9ETzogRHJvcCBfZGF0YSwgX3JlbW92ZURhdGEpXG4vL1x0NS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpXG4vL1x0Ni4gUHJvdmlkZSBhIGNsZWFyIHBhdGggZm9yIGltcGxlbWVudGF0aW9uIHVwZ3JhZGUgdG8gV2Vha01hcCBpbiAyMDE0XG5cbnZhciByYnJhY2UgPSAvXig/Olxce1tcXHdcXFddKlxcfXxcXFtbXFx3XFxXXSpcXF0pJC8sXG5cdHJtdWx0aURhc2ggPSAvW0EtWl0vZztcblxuZnVuY3Rpb24gZGF0YUF0dHIoIGVsZW0sIGtleSwgZGF0YSApIHtcblx0dmFyIG5hbWU7XG5cblx0Ly8gSWYgbm90aGluZyB3YXMgZm91bmQgaW50ZXJuYWxseSwgdHJ5IHRvIGZldGNoIGFueVxuXHQvLyBkYXRhIGZyb20gdGhlIEhUTUw1IGRhdGEtKiBhdHRyaWJ1dGVcblx0aWYgKCBkYXRhID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRuYW1lID0gXCJkYXRhLVwiICsga2V5LnJlcGxhY2UoIHJtdWx0aURhc2gsIFwiLSQmXCIgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdGRhdGEgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApO1xuXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGRhdGEgPSBkYXRhID09PSBcInRydWVcIiA/IHRydWUgOlxuXHRcdFx0XHRcdGRhdGEgPT09IFwiZmFsc2VcIiA/IGZhbHNlIDpcblx0XHRcdFx0XHRkYXRhID09PSBcIm51bGxcIiA/IG51bGwgOlxuXG5cdFx0XHRcdFx0Ly8gT25seSBjb252ZXJ0IHRvIGEgbnVtYmVyIGlmIGl0IGRvZXNuJ3QgY2hhbmdlIHRoZSBzdHJpbmdcblx0XHRcdFx0XHQrZGF0YSArIFwiXCIgPT09IGRhdGEgPyArZGF0YSA6XG5cdFx0XHRcdFx0cmJyYWNlLnRlc3QoIGRhdGEgKSA/IGpRdWVyeS5wYXJzZUpTT04oIGRhdGEgKSA6XG5cdFx0XHRcdFx0ZGF0YTtcblx0XHRcdH0gY2F0Y2ggKCBlICkge31cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24ndCBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRkYXRhVXNlci5zZXQoIGVsZW0sIGtleSwgZGF0YSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZGF0YTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRoYXNEYXRhOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGF0YVVzZXIuaGFzRGF0YSggZWxlbSApIHx8IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKTtcblx0fSxcblxuXHRkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gZGF0YVVzZXIuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdFx0ZGF0YVVzZXIucmVtb3ZlKCBlbGVtLCBuYW1lICk7XG5cdH0sXG5cblx0Ly8gVE9ETzogTm93IHRoYXQgYWxsIGNhbGxzIHRvIF9kYXRhIGFuZCBfcmVtb3ZlRGF0YSBoYXZlIGJlZW4gcmVwbGFjZWRcblx0Ly8gd2l0aCBkaXJlY3QgY2FsbHMgdG8gZGF0YVByaXYgbWV0aG9kcywgdGhlc2UgY2FuIGJlIGRlcHJlY2F0ZWQuXG5cdF9kYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0X3JlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0dmFyIGksIG5hbWUsIGRhdGEsXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdLFxuXHRcdFx0YXR0cnMgPSBlbGVtICYmIGVsZW0uYXR0cmlidXRlcztcblxuXHRcdC8vIEdldHMgYWxsIHZhbHVlc1xuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIHRoaXMubGVuZ3RoICkge1xuXHRcdFx0XHRkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtICk7XG5cblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFkYXRhUHJpdi5nZXQoIGVsZW0sIFwiaGFzRGF0YUF0dHJzXCIgKSApIHtcblx0XHRcdFx0XHRpID0gYXR0cnMubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRTExK1xuXHRcdFx0XHRcdFx0Ly8gVGhlIGF0dHJzIGVsZW1lbnRzIGNhbiBiZSBudWxsICgjMTQ4OTQpXG5cdFx0XHRcdFx0XHRpZiAoIGF0dHJzWyBpIF0gKSB7XG5cdFx0XHRcdFx0XHRcdG5hbWUgPSBhdHRyc1sgaSBdLm5hbWU7XG5cdFx0XHRcdFx0XHRcdGlmICggbmFtZS5pbmRleE9mKCBcImRhdGEtXCIgKSA9PT0gMCApIHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZS5zbGljZSggNSApICk7XG5cdFx0XHRcdFx0XHRcdFx0ZGF0YUF0dHIoIGVsZW0sIG5hbWUsIGRhdGFbIG5hbWUgXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRhdGFQcml2LnNldCggZWxlbSwgXCJoYXNEYXRhQXR0cnNcIiwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBkYXRhO1xuXHRcdH1cblxuXHRcdC8vIFNldHMgbXVsdGlwbGUgdmFsdWVzXG5cdFx0aWYgKCB0eXBlb2Yga2V5ID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGRhdGFVc2VyLnNldCggdGhpcywga2V5ICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0dmFyIGRhdGEsIGNhbWVsS2V5O1xuXG5cdFx0XHQvLyBUaGUgY2FsbGluZyBqUXVlcnkgb2JqZWN0IChlbGVtZW50IG1hdGNoZXMpIGlzIG5vdCBlbXB0eVxuXHRcdFx0Ly8gKGFuZCB0aGVyZWZvcmUgaGFzIGFuIGVsZW1lbnQgYXBwZWFycyBhdCB0aGlzWyAwIF0pIGFuZCB0aGVcblx0XHRcdC8vIGB2YWx1ZWAgcGFyYW1ldGVyIHdhcyBub3QgdW5kZWZpbmVkLiBBbiBlbXB0eSBqUXVlcnkgb2JqZWN0XG5cdFx0XHQvLyB3aWxsIHJlc3VsdCBpbiBgdW5kZWZpbmVkYCBmb3IgZWxlbSA9IHRoaXNbIDAgXSB3aGljaCB3aWxsXG5cdFx0XHQvLyB0aHJvdyBhbiBleGNlcHRpb24gaWYgYW4gYXR0ZW1wdCB0byByZWFkIGEgZGF0YSBjYWNoZSBpcyBtYWRlLlxuXHRcdFx0aWYgKCBlbGVtICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBnZXQgZGF0YSBmcm9tIHRoZSBjYWNoZVxuXHRcdFx0XHQvLyB3aXRoIHRoZSBrZXkgYXMtaXNcblx0XHRcdFx0ZGF0YSA9IGRhdGFVc2VyLmdldCggZWxlbSwga2V5ICkgfHxcblxuXHRcdFx0XHRcdC8vIFRyeSB0byBmaW5kIGRhc2hlZCBrZXkgaWYgaXQgZXhpc3RzIChnaC0yNzc5KVxuXHRcdFx0XHRcdC8vIFRoaXMgaXMgZm9yIDIuMi54IG9ubHlcblx0XHRcdFx0XHRkYXRhVXNlci5nZXQoIGVsZW0sIGtleS5yZXBsYWNlKCBybXVsdGlEYXNoLCBcIi0kJlwiICkudG9Mb3dlckNhc2UoKSApO1xuXG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FtZWxLZXkgPSBqUXVlcnkuY2FtZWxDYXNlKCBrZXkgKTtcblxuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIGdldCBkYXRhIGZyb20gdGhlIGNhY2hlXG5cdFx0XHRcdC8vIHdpdGggdGhlIGtleSBjYW1lbGl6ZWRcblx0XHRcdFx0ZGF0YSA9IGRhdGFVc2VyLmdldCggZWxlbSwgY2FtZWxLZXkgKTtcblx0XHRcdFx0aWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIFwiZGlzY292ZXJcIiB0aGUgZGF0YSBpblxuXHRcdFx0XHQvLyBIVE1MNSBjdXN0b20gZGF0YS0qIGF0dHJzXG5cdFx0XHRcdGRhdGEgPSBkYXRhQXR0ciggZWxlbSwgY2FtZWxLZXksIHVuZGVmaW5lZCApO1xuXHRcdFx0XHRpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFdlIHRyaWVkIHJlYWxseSBoYXJkLCBidXQgdGhlIGRhdGEgZG9lc24ndCBleGlzdC5cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZXQgdGhlIGRhdGEuLi5cblx0XHRcdGNhbWVsS2V5ID0galF1ZXJ5LmNhbWVsQ2FzZSgga2V5ICk7XG5cdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8vIEZpcnN0LCBhdHRlbXB0IHRvIHN0b3JlIGEgY29weSBvciByZWZlcmVuY2Ugb2YgYW55XG5cdFx0XHRcdC8vIGRhdGEgdGhhdCBtaWdodCd2ZSBiZWVuIHN0b3JlIHdpdGggYSBjYW1lbENhc2VkIGtleS5cblx0XHRcdFx0dmFyIGRhdGEgPSBkYXRhVXNlci5nZXQoIHRoaXMsIGNhbWVsS2V5ICk7XG5cblx0XHRcdFx0Ly8gRm9yIEhUTUw1IGRhdGEtKiBhdHRyaWJ1dGUgaW50ZXJvcCwgd2UgaGF2ZSB0b1xuXHRcdFx0XHQvLyBzdG9yZSBwcm9wZXJ0eSBuYW1lcyB3aXRoIGRhc2hlcyBpbiBhIGNhbWVsQ2FzZSBmb3JtLlxuXHRcdFx0XHQvLyBUaGlzIG1pZ2h0IG5vdCBhcHBseSB0byBhbGwgcHJvcGVydGllcy4uLipcblx0XHRcdFx0ZGF0YVVzZXIuc2V0KCB0aGlzLCBjYW1lbEtleSwgdmFsdWUgKTtcblxuXHRcdFx0XHQvLyAqLi4uIEluIHRoZSBjYXNlIG9mIHByb3BlcnRpZXMgdGhhdCBtaWdodCBfYWN0dWFsbHlfXG5cdFx0XHRcdC8vIGhhdmUgZGFzaGVzLCB3ZSBuZWVkIHRvIGFsc28gc3RvcmUgYSBjb3B5IG9mIHRoYXRcblx0XHRcdFx0Ly8gdW5jaGFuZ2VkIHByb3BlcnR5LlxuXHRcdFx0XHRpZiAoIGtleS5pbmRleE9mKCBcIi1cIiApID4gLTEgJiYgZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdGRhdGFVc2VyLnNldCggdGhpcywga2V5LCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxLCBudWxsLCB0cnVlICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtleSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGRhdGFVc2VyLnJlbW92ZSggdGhpcywga2V5ICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIHF1ZXVlO1xuXG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0dHlwZSA9ICggdHlwZSB8fCBcImZ4XCIgKSArIFwicXVldWVcIjtcblx0XHRcdHF1ZXVlID0gZGF0YVByaXYuZ2V0KCBlbGVtLCB0eXBlICk7XG5cblx0XHRcdC8vIFNwZWVkIHVwIGRlcXVldWUgYnkgZ2V0dGluZyBvdXQgcXVpY2tseSBpZiB0aGlzIGlzIGp1c3QgYSBsb29rdXBcblx0XHRcdGlmICggZGF0YSApIHtcblx0XHRcdFx0aWYgKCAhcXVldWUgfHwgalF1ZXJ5LmlzQXJyYXkoIGRhdGEgKSApIHtcblx0XHRcdFx0XHRxdWV1ZSA9IGRhdGFQcml2LmFjY2VzcyggZWxlbSwgdHlwZSwgalF1ZXJ5Lm1ha2VBcnJheSggZGF0YSApICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cXVldWUucHVzaCggZGF0YSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcXVldWUgfHwgW107XG5cdFx0fVxuXHR9LFxuXG5cdGRlcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggZWxlbSwgdHlwZSApLFxuXHRcdFx0c3RhcnRMZW5ndGggPSBxdWV1ZS5sZW5ndGgsXG5cdFx0XHRmbiA9IHF1ZXVlLnNoaWZ0KCksXG5cdFx0XHRob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgdHlwZSApLFxuXHRcdFx0bmV4dCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggZWxlbSwgdHlwZSApO1xuXHRcdFx0fTtcblxuXHRcdC8vIElmIHRoZSBmeCBxdWV1ZSBpcyBkZXF1ZXVlZCwgYWx3YXlzIHJlbW92ZSB0aGUgcHJvZ3Jlc3Mgc2VudGluZWxcblx0XHRpZiAoIGZuID09PSBcImlucHJvZ3Jlc3NcIiApIHtcblx0XHRcdGZuID0gcXVldWUuc2hpZnQoKTtcblx0XHRcdHN0YXJ0TGVuZ3RoLS07XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblxuXHRcdFx0Ly8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBiZWluZ1xuXHRcdFx0Ly8gYXV0b21hdGljYWxseSBkZXF1ZXVlZFxuXHRcdFx0aWYgKCB0eXBlID09PSBcImZ4XCIgKSB7XG5cdFx0XHRcdHF1ZXVlLnVuc2hpZnQoIFwiaW5wcm9ncmVzc1wiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENsZWFyIHVwIHRoZSBsYXN0IHF1ZXVlIHN0b3AgZnVuY3Rpb25cblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xuXHRcdFx0Zm4uY2FsbCggZWxlbSwgbmV4dCwgaG9va3MgKTtcblx0XHR9XG5cblx0XHRpZiAoICFzdGFydExlbmd0aCAmJiBob29rcyApIHtcblx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHR9XG5cdH0sXG5cblx0Ly8gTm90IHB1YmxpYyAtIGdlbmVyYXRlIGEgcXVldWVIb29rcyBvYmplY3QsIG9yIHJldHVybiB0aGUgY3VycmVudCBvbmVcblx0X3F1ZXVlSG9va3M6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHZhciBrZXkgPSB0eXBlICsgXCJxdWV1ZUhvb2tzXCI7XG5cdFx0cmV0dXJuIGRhdGFQcml2LmdldCggZWxlbSwga2V5ICkgfHwgZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBrZXksIHtcblx0XHRcdGVtcHR5OiBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKS5hZGQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFsgdHlwZSArIFwicXVldWVcIiwga2V5IF0gKTtcblx0XHRcdH0gKVxuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHF1ZXVlOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgc2V0dGVyID0gMjtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRkYXRhID0gdHlwZTtcblx0XHRcdHR5cGUgPSBcImZ4XCI7XG5cdFx0XHRzZXR0ZXItLTtcblx0XHR9XG5cblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggPCBzZXR0ZXIgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LnF1ZXVlKCB0aGlzWyAwIF0sIHR5cGUgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdHRoaXMgOlxuXHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBkYXRhICk7XG5cblx0XHRcdFx0Ly8gRW5zdXJlIGEgaG9va3MgZm9yIHRoaXMgcXVldWVcblx0XHRcdFx0alF1ZXJ5Ll9xdWV1ZUhvb2tzKCB0aGlzLCB0eXBlICk7XG5cblx0XHRcdFx0aWYgKCB0eXBlID09PSBcImZ4XCIgJiYgcXVldWVbIDAgXSAhPT0gXCJpbnByb2dyZXNzXCIgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHR9LFxuXHRkZXF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0fSApO1xuXHR9LFxuXHRjbGVhclF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSB8fCBcImZ4XCIsIFtdICk7XG5cdH0sXG5cblx0Ly8gR2V0IGEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHF1ZXVlcyBvZiBhIGNlcnRhaW4gdHlwZVxuXHQvLyBhcmUgZW1wdGllZCAoZnggaXMgdGhlIHR5cGUgYnkgZGVmYXVsdClcblx0cHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9iaiApIHtcblx0XHR2YXIgdG1wLFxuXHRcdFx0Y291bnQgPSAxLFxuXHRcdFx0ZGVmZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblx0XHRcdGVsZW1lbnRzID0gdGhpcyxcblx0XHRcdGkgPSB0aGlzLmxlbmd0aCxcblx0XHRcdHJlc29sdmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCAhKCAtLWNvdW50ICkgKSB7XG5cdFx0XHRcdFx0ZGVmZXIucmVzb2x2ZVdpdGgoIGVsZW1lbnRzLCBbIGVsZW1lbnRzIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRvYmogPSB0eXBlO1xuXHRcdFx0dHlwZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHR0bXAgPSBkYXRhUHJpdi5nZXQoIGVsZW1lbnRzWyBpIF0sIHR5cGUgKyBcInF1ZXVlSG9va3NcIiApO1xuXHRcdFx0aWYgKCB0bXAgJiYgdG1wLmVtcHR5ICkge1xuXHRcdFx0XHRjb3VudCsrO1xuXHRcdFx0XHR0bXAuZW1wdHkuYWRkKCByZXNvbHZlICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJlc29sdmUoKTtcblx0XHRyZXR1cm4gZGVmZXIucHJvbWlzZSggb2JqICk7XG5cdH1cbn0gKTtcbnZhciBwbnVtID0gKCAvWystXT8oPzpcXGQqXFwufClcXGQrKD86W2VFXVsrLV0/XFxkK3wpLyApLnNvdXJjZTtcblxudmFyIHJjc3NOdW0gPSBuZXcgUmVnRXhwKCBcIl4oPzooWystXSk9fCkoXCIgKyBwbnVtICsgXCIpKFthLXolXSopJFwiLCBcImlcIiApO1xuXG5cbnZhciBjc3NFeHBhbmQgPSBbIFwiVG9wXCIsIFwiUmlnaHRcIiwgXCJCb3R0b21cIiwgXCJMZWZ0XCIgXTtcblxudmFyIGlzSGlkZGVuID0gZnVuY3Rpb24oIGVsZW0sIGVsICkge1xuXG5cdFx0Ly8gaXNIaWRkZW4gbWlnaHQgYmUgY2FsbGVkIGZyb20galF1ZXJ5I2ZpbHRlciBmdW5jdGlvbjtcblx0XHQvLyBpbiB0aGF0IGNhc2UsIGVsZW1lbnQgd2lsbCBiZSBzZWNvbmQgYXJndW1lbnRcblx0XHRlbGVtID0gZWwgfHwgZWxlbTtcblx0XHRyZXR1cm4galF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSA9PT0gXCJub25lXCIgfHxcblx0XHRcdCFqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApO1xuXHR9O1xuXG5cblxuZnVuY3Rpb24gYWRqdXN0Q1NTKCBlbGVtLCBwcm9wLCB2YWx1ZVBhcnRzLCB0d2VlbiApIHtcblx0dmFyIGFkanVzdGVkLFxuXHRcdHNjYWxlID0gMSxcblx0XHRtYXhJdGVyYXRpb25zID0gMjAsXG5cdFx0Y3VycmVudFZhbHVlID0gdHdlZW4gP1xuXHRcdFx0ZnVuY3Rpb24oKSB7IHJldHVybiB0d2Vlbi5jdXIoKTsgfSA6XG5cdFx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIGpRdWVyeS5jc3MoIGVsZW0sIHByb3AsIFwiXCIgKTsgfSxcblx0XHRpbml0aWFsID0gY3VycmVudFZhbHVlKCksXG5cdFx0dW5pdCA9IHZhbHVlUGFydHMgJiYgdmFsdWVQYXJ0c1sgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApLFxuXG5cdFx0Ly8gU3RhcnRpbmcgdmFsdWUgY29tcHV0YXRpb24gaXMgcmVxdWlyZWQgZm9yIHBvdGVudGlhbCB1bml0IG1pc21hdGNoZXNcblx0XHRpbml0aWFsSW5Vbml0ID0gKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gfHwgdW5pdCAhPT0gXCJweFwiICYmICtpbml0aWFsICkgJiZcblx0XHRcdHJjc3NOdW0uZXhlYyggalF1ZXJ5LmNzcyggZWxlbSwgcHJvcCApICk7XG5cblx0aWYgKCBpbml0aWFsSW5Vbml0ICYmIGluaXRpYWxJblVuaXRbIDMgXSAhPT0gdW5pdCApIHtcblxuXHRcdC8vIFRydXN0IHVuaXRzIHJlcG9ydGVkIGJ5IGpRdWVyeS5jc3Ncblx0XHR1bml0ID0gdW5pdCB8fCBpbml0aWFsSW5Vbml0WyAzIF07XG5cblx0XHQvLyBNYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSB0d2VlbiBwcm9wZXJ0aWVzIGxhdGVyIG9uXG5cdFx0dmFsdWVQYXJ0cyA9IHZhbHVlUGFydHMgfHwgW107XG5cblx0XHQvLyBJdGVyYXRpdmVseSBhcHByb3hpbWF0ZSBmcm9tIGEgbm9uemVybyBzdGFydGluZyBwb2ludFxuXHRcdGluaXRpYWxJblVuaXQgPSAraW5pdGlhbCB8fCAxO1xuXG5cdFx0ZG8ge1xuXG5cdFx0XHQvLyBJZiBwcmV2aW91cyBpdGVyYXRpb24gemVyb2VkIG91dCwgZG91YmxlIHVudGlsIHdlIGdldCAqc29tZXRoaW5nKi5cblx0XHRcdC8vIFVzZSBzdHJpbmcgZm9yIGRvdWJsaW5nIHNvIHdlIGRvbid0IGFjY2lkZW50YWxseSBzZWUgc2NhbGUgYXMgdW5jaGFuZ2VkIGJlbG93XG5cdFx0XHRzY2FsZSA9IHNjYWxlIHx8IFwiLjVcIjtcblxuXHRcdFx0Ly8gQWRqdXN0IGFuZCBhcHBseVxuXHRcdFx0aW5pdGlhbEluVW5pdCA9IGluaXRpYWxJblVuaXQgLyBzY2FsZTtcblx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgaW5pdGlhbEluVW5pdCArIHVuaXQgKTtcblxuXHRcdC8vIFVwZGF0ZSBzY2FsZSwgdG9sZXJhdGluZyB6ZXJvIG9yIE5hTiBmcm9tIHR3ZWVuLmN1cigpXG5cdFx0Ly8gQnJlYWsgdGhlIGxvb3AgaWYgc2NhbGUgaXMgdW5jaGFuZ2VkIG9yIHBlcmZlY3QsIG9yIGlmIHdlJ3ZlIGp1c3QgaGFkIGVub3VnaC5cblx0XHR9IHdoaWxlIChcblx0XHRcdHNjYWxlICE9PSAoIHNjYWxlID0gY3VycmVudFZhbHVlKCkgLyBpbml0aWFsICkgJiYgc2NhbGUgIT09IDEgJiYgLS1tYXhJdGVyYXRpb25zXG5cdFx0KTtcblx0fVxuXG5cdGlmICggdmFsdWVQYXJ0cyApIHtcblx0XHRpbml0aWFsSW5Vbml0ID0gK2luaXRpYWxJblVuaXQgfHwgK2luaXRpYWwgfHwgMDtcblxuXHRcdC8vIEFwcGx5IHJlbGF0aXZlIG9mZnNldCAoKz0vLT0pIGlmIHNwZWNpZmllZFxuXHRcdGFkanVzdGVkID0gdmFsdWVQYXJ0c1sgMSBdID9cblx0XHRcdGluaXRpYWxJblVuaXQgKyAoIHZhbHVlUGFydHNbIDEgXSArIDEgKSAqIHZhbHVlUGFydHNbIDIgXSA6XG5cdFx0XHQrdmFsdWVQYXJ0c1sgMiBdO1xuXHRcdGlmICggdHdlZW4gKSB7XG5cdFx0XHR0d2Vlbi51bml0ID0gdW5pdDtcblx0XHRcdHR3ZWVuLnN0YXJ0ID0gaW5pdGlhbEluVW5pdDtcblx0XHRcdHR3ZWVuLmVuZCA9IGFkanVzdGVkO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gYWRqdXN0ZWQ7XG59XG52YXIgcmNoZWNrYWJsZVR5cGUgPSAoIC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pICk7XG5cbnZhciBydGFnTmFtZSA9ICggLzwoW1xcdzotXSspLyApO1xuXG52YXIgcnNjcmlwdFR5cGUgPSAoIC9eJHxcXC8oPzpqYXZhfGVjbWEpc2NyaXB0L2kgKTtcblxuXG5cbi8vIFdlIGhhdmUgdG8gY2xvc2UgdGhlc2UgdGFncyB0byBzdXBwb3J0IFhIVE1MICgjMTMyMDApXG52YXIgd3JhcE1hcCA9IHtcblxuXHQvLyBTdXBwb3J0OiBJRTlcblx0b3B0aW9uOiBbIDEsIFwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPlwiLCBcIjwvc2VsZWN0PlwiIF0sXG5cblx0Ly8gWEhUTUwgcGFyc2VycyBkbyBub3QgbWFnaWNhbGx5IGluc2VydCBlbGVtZW50cyBpbiB0aGVcblx0Ly8gc2FtZSB3YXkgdGhhdCB0YWcgc291cCBwYXJzZXJzIGRvLiBTbyB3ZSBjYW5ub3Qgc2hvcnRlblxuXHQvLyB0aGlzIGJ5IG9taXR0aW5nIDx0Ym9keT4gb3Igb3RoZXIgcmVxdWlyZWQgZWxlbWVudHMuXG5cdHRoZWFkOiBbIDEsIFwiPHRhYmxlPlwiLCBcIjwvdGFibGU+XCIgXSxcblx0Y29sOiBbIDIsIFwiPHRhYmxlPjxjb2xncm91cD5cIiwgXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIgXSxcblx0dHI6IFsgMiwgXCI8dGFibGU+PHRib2R5PlwiLCBcIjwvdGJvZHk+PC90YWJsZT5cIiBdLFxuXHR0ZDogWyAzLCBcIjx0YWJsZT48dGJvZHk+PHRyPlwiLCBcIjwvdHI+PC90Ym9keT48L3RhYmxlPlwiIF0sXG5cblx0X2RlZmF1bHQ6IFsgMCwgXCJcIiwgXCJcIiBdXG59O1xuXG4vLyBTdXBwb3J0OiBJRTlcbndyYXBNYXAub3B0Z3JvdXAgPSB3cmFwTWFwLm9wdGlvbjtcblxud3JhcE1hcC50Ym9keSA9IHdyYXBNYXAudGZvb3QgPSB3cmFwTWFwLmNvbGdyb3VwID0gd3JhcE1hcC5jYXB0aW9uID0gd3JhcE1hcC50aGVhZDtcbndyYXBNYXAudGggPSB3cmFwTWFwLnRkO1xuXG5cbmZ1bmN0aW9uIGdldEFsbCggY29udGV4dCwgdGFnICkge1xuXG5cdC8vIFN1cHBvcnQ6IElFOS0xMStcblx0Ly8gVXNlIHR5cGVvZiB0byBhdm9pZCB6ZXJvLWFyZ3VtZW50IG1ldGhvZCBpbnZvY2F0aW9uIG9uIGhvc3Qgb2JqZWN0cyAoIzE1MTUxKVxuXHR2YXIgcmV0ID0gdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgP1xuXHRcdFx0Y29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnIHx8IFwiKlwiICkgOlxuXHRcdFx0dHlwZW9mIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCAhPT0gXCJ1bmRlZmluZWRcIiA/XG5cdFx0XHRcdGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnIHx8IFwiKlwiICkgOlxuXHRcdFx0W107XG5cblx0cmV0dXJuIHRhZyA9PT0gdW5kZWZpbmVkIHx8IHRhZyAmJiBqUXVlcnkubm9kZU5hbWUoIGNvbnRleHQsIHRhZyApID9cblx0XHRqUXVlcnkubWVyZ2UoIFsgY29udGV4dCBdLCByZXQgKSA6XG5cdFx0cmV0O1xufVxuXG5cbi8vIE1hcmsgc2NyaXB0cyBhcyBoYXZpbmcgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZFxuZnVuY3Rpb24gc2V0R2xvYmFsRXZhbCggZWxlbXMsIHJlZkVsZW1lbnRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bCA9IGVsZW1zLmxlbmd0aDtcblxuXHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0ZGF0YVByaXYuc2V0KFxuXHRcdFx0ZWxlbXNbIGkgXSxcblx0XHRcdFwiZ2xvYmFsRXZhbFwiLFxuXHRcdFx0IXJlZkVsZW1lbnRzIHx8IGRhdGFQcml2LmdldCggcmVmRWxlbWVudHNbIGkgXSwgXCJnbG9iYWxFdmFsXCIgKVxuXHRcdCk7XG5cdH1cbn1cblxuXG52YXIgcmh0bWwgPSAvPHwmIz9cXHcrOy87XG5cbmZ1bmN0aW9uIGJ1aWxkRnJhZ21lbnQoIGVsZW1zLCBjb250ZXh0LCBzY3JpcHRzLCBzZWxlY3Rpb24sIGlnbm9yZWQgKSB7XG5cdHZhciBlbGVtLCB0bXAsIHRhZywgd3JhcCwgY29udGFpbnMsIGosXG5cdFx0ZnJhZ21lbnQgPSBjb250ZXh0LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRub2RlcyA9IFtdLFxuXHRcdGkgPSAwLFxuXHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdGVsZW0gPSBlbGVtc1sgaSBdO1xuXG5cdFx0aWYgKCBlbGVtIHx8IGVsZW0gPT09IDAgKSB7XG5cblx0XHRcdC8vIEFkZCBub2RlcyBkaXJlY3RseVxuXHRcdFx0aWYgKCBqUXVlcnkudHlwZSggZWxlbSApID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NC4xLCBQaGFudG9tSlM8MlxuXHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggbm9kZXMsIGVsZW0ubm9kZVR5cGUgPyBbIGVsZW0gXSA6IGVsZW0gKTtcblxuXHRcdFx0Ly8gQ29udmVydCBub24taHRtbCBpbnRvIGEgdGV4dCBub2RlXG5cdFx0XHR9IGVsc2UgaWYgKCAhcmh0bWwudGVzdCggZWxlbSApICkge1xuXHRcdFx0XHRub2Rlcy5wdXNoKCBjb250ZXh0LmNyZWF0ZVRleHROb2RlKCBlbGVtICkgKTtcblxuXHRcdFx0Ly8gQ29udmVydCBodG1sIGludG8gRE9NIG5vZGVzXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0bXAgPSB0bXAgfHwgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGNvbnRleHQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICk7XG5cblx0XHRcdFx0Ly8gRGVzZXJpYWxpemUgYSBzdGFuZGFyZCByZXByZXNlbnRhdGlvblxuXHRcdFx0XHR0YWcgPSAoIHJ0YWdOYW1lLmV4ZWMoIGVsZW0gKSB8fCBbIFwiXCIsIFwiXCIgXSApWyAxIF0udG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0d3JhcCA9IHdyYXBNYXBbIHRhZyBdIHx8IHdyYXBNYXAuX2RlZmF1bHQ7XG5cdFx0XHRcdHRtcC5pbm5lckhUTUwgPSB3cmFwWyAxIF0gKyBqUXVlcnkuaHRtbFByZWZpbHRlciggZWxlbSApICsgd3JhcFsgMiBdO1xuXG5cdFx0XHRcdC8vIERlc2NlbmQgdGhyb3VnaCB3cmFwcGVycyB0byB0aGUgcmlnaHQgY29udGVudFxuXHRcdFx0XHRqID0gd3JhcFsgMCBdO1xuXHRcdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0XHR0bXAgPSB0bXAubGFzdENoaWxkO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjEsIFBoYW50b21KUzwyXG5cdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCBub2RlcywgdG1wLmNoaWxkTm9kZXMgKTtcblxuXHRcdFx0XHQvLyBSZW1lbWJlciB0aGUgdG9wLWxldmVsIGNvbnRhaW5lclxuXHRcdFx0XHR0bXAgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRcdC8vIEVuc3VyZSB0aGUgY3JlYXRlZCBub2RlcyBhcmUgb3JwaGFuZWQgKCMxMjM5Milcblx0XHRcdFx0dG1wLnRleHRDb250ZW50ID0gXCJcIjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZW1vdmUgd3JhcHBlciBmcm9tIGZyYWdtZW50XG5cdGZyYWdtZW50LnRleHRDb250ZW50ID0gXCJcIjtcblxuXHRpID0gMDtcblx0d2hpbGUgKCAoIGVsZW0gPSBub2Rlc1sgaSsrIF0gKSApIHtcblxuXHRcdC8vIFNraXAgZWxlbWVudHMgYWxyZWFkeSBpbiB0aGUgY29udGV4dCBjb2xsZWN0aW9uICh0cmFjLTQwODcpXG5cdFx0aWYgKCBzZWxlY3Rpb24gJiYgalF1ZXJ5LmluQXJyYXkoIGVsZW0sIHNlbGVjdGlvbiApID4gLTEgKSB7XG5cdFx0XHRpZiAoIGlnbm9yZWQgKSB7XG5cdFx0XHRcdGlnbm9yZWQucHVzaCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Y29udGFpbnMgPSBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApO1xuXG5cdFx0Ly8gQXBwZW5kIHRvIGZyYWdtZW50XG5cdFx0dG1wID0gZ2V0QWxsKCBmcmFnbWVudC5hcHBlbmRDaGlsZCggZWxlbSApLCBcInNjcmlwdFwiICk7XG5cblx0XHQvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5XG5cdFx0aWYgKCBjb250YWlucyApIHtcblx0XHRcdHNldEdsb2JhbEV2YWwoIHRtcCApO1xuXHRcdH1cblxuXHRcdC8vIENhcHR1cmUgZXhlY3V0YWJsZXNcblx0XHRpZiAoIHNjcmlwdHMgKSB7XG5cdFx0XHRqID0gMDtcblx0XHRcdHdoaWxlICggKCBlbGVtID0gdG1wWyBqKysgXSApICkge1xuXHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIGVsZW0udHlwZSB8fCBcIlwiICkgKSB7XG5cdFx0XHRcdFx0c2NyaXB0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZnJhZ21lbnQ7XG59XG5cblxuKCBmdW5jdGlvbigpIHtcblx0dmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLFxuXHRcdGRpdiA9IGZyYWdtZW50LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkgKSxcblx0XHRpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApO1xuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wLTQuMywgU2FmYXJpPD01LjFcblx0Ly8gQ2hlY2sgc3RhdGUgbG9zdCBpZiB0aGUgbmFtZSBpcyBzZXQgKCMxMTIxNylcblx0Ly8gU3VwcG9ydDogV2luZG93cyBXZWIgQXBwcyAoV1dBKVxuXHQvLyBgbmFtZWAgYW5kIGB0eXBlYCBtdXN0IHVzZSAuc2V0QXR0cmlidXRlIGZvciBXV0EgKCMxNDkwMSlcblx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJyYWRpb1wiICk7XG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJjaGVja2VkXCIsIFwiY2hlY2tlZFwiICk7XG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwidFwiICk7XG5cblx0ZGl2LmFwcGVuZENoaWxkKCBpbnB1dCApO1xuXG5cdC8vIFN1cHBvcnQ6IFNhZmFyaTw9NS4xLCBBbmRyb2lkPDQuMlxuXHQvLyBPbGRlciBXZWJLaXQgZG9lc24ndCBjbG9uZSBjaGVja2VkIHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHNcblx0c3VwcG9ydC5jaGVja0Nsb25lID0gZGl2LmNsb25lTm9kZSggdHJ1ZSApLmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5jaGVja2VkO1xuXG5cdC8vIFN1cHBvcnQ6IElFPD0xMStcblx0Ly8gTWFrZSBzdXJlIHRleHRhcmVhIChhbmQgY2hlY2tib3gpIGRlZmF1bHRWYWx1ZSBpcyBwcm9wZXJseSBjbG9uZWRcblx0ZGl2LmlubmVySFRNTCA9IFwiPHRleHRhcmVhPng8L3RleHRhcmVhPlwiO1xuXHRzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gISFkaXYuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTtcbn0gKSgpO1xuXG5cbnZhclxuXHRya2V5RXZlbnQgPSAvXmtleS8sXG5cdHJtb3VzZUV2ZW50ID0gL14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLFxuXHRydHlwZW5hbWVzcGFjZSA9IC9eKFteLl0qKSg/OlxcLiguKyl8KS87XG5cbmZ1bmN0aW9uIHJldHVyblRydWUoKSB7XG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZXR1cm5GYWxzZSgpIHtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vLyBTdXBwb3J0OiBJRTlcbi8vIFNlZSAjMTMzOTMgZm9yIG1vcmUgaW5mb1xuZnVuY3Rpb24gc2FmZUFjdGl2ZUVsZW1lbnQoKSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cdH0gY2F0Y2ggKCBlcnIgKSB7IH1cbn1cblxuZnVuY3Rpb24gb24oIGVsZW0sIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIG9uZSApIHtcblx0dmFyIG9yaWdGbiwgdHlwZTtcblxuXHQvLyBUeXBlcyBjYW4gYmUgYSBtYXAgb2YgdHlwZXMvaGFuZGxlcnNcblx0aWYgKCB0eXBlb2YgdHlwZXMgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHQvLyAoIHR5cGVzLU9iamVjdCwgc2VsZWN0b3IsIGRhdGEgKVxuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzLU9iamVjdCwgZGF0YSApXG5cdFx0XHRkYXRhID0gZGF0YSB8fCBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRmb3IgKCB0eXBlIGluIHR5cGVzICkge1xuXHRcdFx0b24oIGVsZW0sIHR5cGUsIHNlbGVjdG9yLCBkYXRhLCB0eXBlc1sgdHlwZSBdLCBvbmUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIGVsZW07XG5cdH1cblxuXHRpZiAoIGRhdGEgPT0gbnVsbCAmJiBmbiA9PSBudWxsICkge1xuXG5cdFx0Ly8gKCB0eXBlcywgZm4gKVxuXHRcdGZuID0gc2VsZWN0b3I7XG5cdFx0ZGF0YSA9IHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHR9IGVsc2UgaWYgKCBmbiA9PSBudWxsICkge1xuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzLCBzZWxlY3RvciwgZm4gKVxuXHRcdFx0Zm4gPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyAoIHR5cGVzLCBkYXRhLCBmbiApXG5cdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRkYXRhID0gc2VsZWN0b3I7XG5cdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0aWYgKCBmbiA9PT0gZmFsc2UgKSB7XG5cdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0fSBlbHNlIGlmICggIWZuICkge1xuXHRcdHJldHVybiBlbGVtO1xuXHR9XG5cblx0aWYgKCBvbmUgPT09IDEgKSB7XG5cdFx0b3JpZ0ZuID0gZm47XG5cdFx0Zm4gPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRcdC8vIENhbiB1c2UgYW4gZW1wdHkgc2V0LCBzaW5jZSBldmVudCBjb250YWlucyB0aGUgaW5mb1xuXHRcdFx0alF1ZXJ5KCkub2ZmKCBldmVudCApO1xuXHRcdFx0cmV0dXJuIG9yaWdGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0fTtcblxuXHRcdC8vIFVzZSBzYW1lIGd1aWQgc28gY2FsbGVyIGNhbiByZW1vdmUgdXNpbmcgb3JpZ0ZuXG5cdFx0Zm4uZ3VpZCA9IG9yaWdGbi5ndWlkIHx8ICggb3JpZ0ZuLmd1aWQgPSBqUXVlcnkuZ3VpZCsrICk7XG5cdH1cblx0cmV0dXJuIGVsZW0uZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0alF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlwZXMsIGZuLCBkYXRhLCBzZWxlY3RvciApO1xuXHR9ICk7XG59XG5cbi8qXG4gKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBldmVudHMgLS0gbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuXG4gKiBQcm9wcyB0byBEZWFuIEVkd2FyZHMnIGFkZEV2ZW50IGxpYnJhcnkgZm9yIG1hbnkgb2YgdGhlIGlkZWFzLlxuICovXG5qUXVlcnkuZXZlbnQgPSB7XG5cblx0Z2xvYmFsOiB7fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgZGF0YSwgc2VsZWN0b3IgKSB7XG5cblx0XHR2YXIgaGFuZGxlT2JqSW4sIGV2ZW50SGFuZGxlLCB0bXAsXG5cdFx0XHRldmVudHMsIHQsIGhhbmRsZU9iaixcblx0XHRcdHNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSxcblx0XHRcdGVsZW1EYXRhID0gZGF0YVByaXYuZ2V0KCBlbGVtICk7XG5cblx0XHQvLyBEb24ndCBhdHRhY2ggZXZlbnRzIHRvIG5vRGF0YSBvciB0ZXh0L2NvbW1lbnQgbm9kZXMgKGJ1dCBhbGxvdyBwbGFpbiBvYmplY3RzKVxuXHRcdGlmICggIWVsZW1EYXRhICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIENhbGxlciBjYW4gcGFzcyBpbiBhbiBvYmplY3Qgb2YgY3VzdG9tIGRhdGEgaW4gbGlldSBvZiB0aGUgaGFuZGxlclxuXHRcdGlmICggaGFuZGxlci5oYW5kbGVyICkge1xuXHRcdFx0aGFuZGxlT2JqSW4gPSBoYW5kbGVyO1xuXHRcdFx0aGFuZGxlciA9IGhhbmRsZU9iakluLmhhbmRsZXI7XG5cdFx0XHRzZWxlY3RvciA9IGhhbmRsZU9iakluLnNlbGVjdG9yO1xuXHRcdH1cblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBoYW5kbGVyIGhhcyBhIHVuaXF1ZSBJRCwgdXNlZCB0byBmaW5kL3JlbW92ZSBpdCBsYXRlclxuXHRcdGlmICggIWhhbmRsZXIuZ3VpZCApIHtcblx0XHRcdGhhbmRsZXIuZ3VpZCA9IGpRdWVyeS5ndWlkKys7XG5cdFx0fVxuXG5cdFx0Ly8gSW5pdCB0aGUgZWxlbWVudCdzIGV2ZW50IHN0cnVjdHVyZSBhbmQgbWFpbiBoYW5kbGVyLCBpZiB0aGlzIGlzIHRoZSBmaXJzdFxuXHRcdGlmICggISggZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzICkgKSB7XG5cdFx0XHRldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgPSB7fTtcblx0XHR9XG5cdFx0aWYgKCAhKCBldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSApICkge1xuXHRcdFx0ZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgPSBmdW5jdGlvbiggZSApIHtcblxuXHRcdFx0XHQvLyBEaXNjYXJkIHRoZSBzZWNvbmQgZXZlbnQgb2YgYSBqUXVlcnkuZXZlbnQudHJpZ2dlcigpIGFuZFxuXHRcdFx0XHQvLyB3aGVuIGFuIGV2ZW50IGlzIGNhbGxlZCBhZnRlciBhIHBhZ2UgaGFzIHVubG9hZGVkXG5cdFx0XHRcdHJldHVybiB0eXBlb2YgalF1ZXJ5ICE9PSBcInVuZGVmaW5lZFwiICYmIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgIT09IGUudHlwZSA/XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmFwcGx5KCBlbGVtLCBhcmd1bWVudHMgKSA6IHVuZGVmaW5lZDtcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIG11bHRpcGxlIGV2ZW50cyBzZXBhcmF0ZWQgYnkgYSBzcGFjZVxuXHRcdHR5cGVzID0gKCB0eXBlcyB8fCBcIlwiICkubWF0Y2goIHJub3R3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXHRcdHQgPSB0eXBlcy5sZW5ndGg7XG5cdFx0d2hpbGUgKCB0LS0gKSB7XG5cdFx0XHR0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1sgdCBdICkgfHwgW107XG5cdFx0XHR0eXBlID0gb3JpZ1R5cGUgPSB0bXBbIDEgXTtcblx0XHRcdG5hbWVzcGFjZXMgPSAoIHRtcFsgMiBdIHx8IFwiXCIgKS5zcGxpdCggXCIuXCIgKS5zb3J0KCk7XG5cblx0XHRcdC8vIFRoZXJlICptdXN0KiBiZSBhIHR5cGUsIG5vIGF0dGFjaGluZyBuYW1lc3BhY2Utb25seSBoYW5kbGVyc1xuXHRcdFx0aWYgKCAhdHlwZSApIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGV2ZW50IGNoYW5nZXMgaXRzIHR5cGUsIHVzZSB0aGUgc3BlY2lhbCBldmVudCBoYW5kbGVycyBmb3IgdGhlIGNoYW5nZWQgdHlwZVxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cblx0XHRcdC8vIElmIHNlbGVjdG9yIGRlZmluZWQsIGRldGVybWluZSBzcGVjaWFsIGV2ZW50IGFwaSB0eXBlLCBvdGhlcndpc2UgZ2l2ZW4gdHlwZVxuXHRcdFx0dHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlO1xuXG5cdFx0XHQvLyBVcGRhdGUgc3BlY2lhbCBiYXNlZCBvbiBuZXdseSByZXNldCB0eXBlXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblxuXHRcdFx0Ly8gaGFuZGxlT2JqIGlzIHBhc3NlZCB0byBhbGwgZXZlbnQgaGFuZGxlcnNcblx0XHRcdGhhbmRsZU9iaiA9IGpRdWVyeS5leHRlbmQoIHtcblx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0b3JpZ1R5cGU6IG9yaWdUeXBlLFxuXHRcdFx0XHRkYXRhOiBkYXRhLFxuXHRcdFx0XHRoYW5kbGVyOiBoYW5kbGVyLFxuXHRcdFx0XHRndWlkOiBoYW5kbGVyLmd1aWQsXG5cdFx0XHRcdHNlbGVjdG9yOiBzZWxlY3Rvcixcblx0XHRcdFx0bmVlZHNDb250ZXh0OiBzZWxlY3RvciAmJiBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSxcblx0XHRcdFx0bmFtZXNwYWNlOiBuYW1lc3BhY2VzLmpvaW4oIFwiLlwiIClcblx0XHRcdH0sIGhhbmRsZU9iakluICk7XG5cblx0XHRcdC8vIEluaXQgdGhlIGV2ZW50IGhhbmRsZXIgcXVldWUgaWYgd2UncmUgdGhlIGZpcnN0XG5cdFx0XHRpZiAoICEoIGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gKSApIHtcblx0XHRcdFx0aGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSA9IFtdO1xuXHRcdFx0XHRoYW5kbGVycy5kZWxlZ2F0ZUNvdW50ID0gMDtcblxuXHRcdFx0XHQvLyBPbmx5IHVzZSBhZGRFdmVudExpc3RlbmVyIGlmIHRoZSBzcGVjaWFsIGV2ZW50cyBoYW5kbGVyIHJldHVybnMgZmFsc2Vcblx0XHRcdFx0aWYgKCAhc3BlY2lhbC5zZXR1cCB8fFxuXHRcdFx0XHRcdHNwZWNpYWwuc2V0dXAuY2FsbCggZWxlbSwgZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdFx0XHRpZiAoIGVsZW0uYWRkRXZlbnRMaXN0ZW5lciApIHtcblx0XHRcdFx0XHRcdGVsZW0uYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgZXZlbnRIYW5kbGUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKCBzcGVjaWFsLmFkZCApIHtcblx0XHRcdFx0c3BlY2lhbC5hZGQuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XG5cblx0XHRcdFx0aWYgKCAhaGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCApIHtcblx0XHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlci5ndWlkID0gaGFuZGxlci5ndWlkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCB0byB0aGUgZWxlbWVudCdzIGhhbmRsZXIgbGlzdCwgZGVsZWdhdGVzIGluIGZyb250XG5cdFx0XHRpZiAoIHNlbGVjdG9yICkge1xuXHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoIGhhbmRsZXJzLmRlbGVnYXRlQ291bnQrKywgMCwgaGFuZGxlT2JqICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRoYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gS2VlcCB0cmFjayBvZiB3aGljaCBldmVudHMgaGF2ZSBldmVyIGJlZW4gdXNlZCwgZm9yIGV2ZW50IG9wdGltaXphdGlvblxuXHRcdFx0alF1ZXJ5LmV2ZW50Lmdsb2JhbFsgdHlwZSBdID0gdHJ1ZTtcblx0XHR9XG5cblx0fSxcblxuXHQvLyBEZXRhY2ggYW4gZXZlbnQgb3Igc2V0IG9mIGV2ZW50cyBmcm9tIGFuIGVsZW1lbnRcblx0cmVtb3ZlOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhhbmRsZXIsIHNlbGVjdG9yLCBtYXBwZWRUeXBlcyApIHtcblxuXHRcdHZhciBqLCBvcmlnQ291bnQsIHRtcCxcblx0XHRcdGV2ZW50cywgdCwgaGFuZGxlT2JqLFxuXHRcdFx0c3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLFxuXHRcdFx0ZWxlbURhdGEgPSBkYXRhUHJpdi5oYXNEYXRhKCBlbGVtICkgJiYgZGF0YVByaXYuZ2V0KCBlbGVtICk7XG5cblx0XHRpZiAoICFlbGVtRGF0YSB8fCAhKCBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBPbmNlIGZvciBlYWNoIHR5cGUubmFtZXNwYWNlIGluIHR5cGVzOyB0eXBlIG1heSBiZSBvbWl0dGVkXG5cdFx0dHlwZXMgPSAoIHR5cGVzIHx8IFwiXCIgKS5tYXRjaCggcm5vdHdoaXRlICkgfHwgWyBcIlwiIF07XG5cdFx0dCA9IHR5cGVzLmxlbmd0aDtcblx0XHR3aGlsZSAoIHQtLSApIHtcblx0XHRcdHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgXCJcIiApLnNwbGl0KCBcIi5cIiApLnNvcnQoKTtcblxuXHRcdFx0Ly8gVW5iaW5kIGFsbCBldmVudHMgKG9uIHRoaXMgbmFtZXNwYWNlLCBpZiBwcm92aWRlZCkgZm9yIHRoZSBlbGVtZW50XG5cdFx0XHRpZiAoICF0eXBlICkge1xuXHRcdFx0XHRmb3IgKCB0eXBlIGluIGV2ZW50cyApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICsgdHlwZXNbIHQgXSwgaGFuZGxlciwgc2VsZWN0b3IsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cdFx0XHR0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7XG5cdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdIHx8IFtdO1xuXHRcdFx0dG1wID0gdG1wWyAyIF0gJiZcblx0XHRcdFx0bmV3IFJlZ0V4cCggXCIoXnxcXFxcLilcIiArIG5hbWVzcGFjZXMuam9pbiggXCJcXFxcLig/Oi4qXFxcXC58KVwiICkgKyBcIihcXFxcLnwkKVwiICk7XG5cblx0XHRcdC8vIFJlbW92ZSBtYXRjaGluZyBldmVudHNcblx0XHRcdG9yaWdDb3VudCA9IGogPSBoYW5kbGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0aGFuZGxlT2JqID0gaGFuZGxlcnNbIGogXTtcblxuXHRcdFx0XHRpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9iai5vcmlnVHlwZSApICYmXG5cdFx0XHRcdFx0KCAhaGFuZGxlciB8fCBoYW5kbGVyLmd1aWQgPT09IGhhbmRsZU9iai5ndWlkICkgJiZcblx0XHRcdFx0XHQoICF0bXAgfHwgdG1wLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApICYmXG5cdFx0XHRcdFx0KCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9iai5zZWxlY3RvciB8fFxuXHRcdFx0XHRcdFx0c2VsZWN0b3IgPT09IFwiKipcIiAmJiBoYW5kbGVPYmouc2VsZWN0b3IgKSApIHtcblx0XHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoIGosIDEgKTtcblxuXHRcdFx0XHRcdGlmICggaGFuZGxlT2JqLnNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudC0tO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIHNwZWNpYWwucmVtb3ZlICkge1xuXHRcdFx0XHRcdFx0c3BlY2lhbC5yZW1vdmUuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYgd2UgcmVtb3ZlZCBzb21ldGhpbmcgYW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3Rcblx0XHRcdC8vIChhdm9pZHMgcG90ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBvZiBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzKVxuXHRcdFx0aWYgKCBvcmlnQ291bnQgJiYgIWhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0aWYgKCAhc3BlY2lhbC50ZWFyZG93biB8fFxuXHRcdFx0XHRcdHNwZWNpYWwudGVhcmRvd24uY2FsbCggZWxlbSwgbmFtZXNwYWNlcywgZWxlbURhdGEuaGFuZGxlICkgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdFx0alF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBlbGVtRGF0YS5oYW5kbGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRlbGV0ZSBldmVudHNbIHR5cGUgXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgZGF0YSBhbmQgdGhlIGV4cGFuZG8gaWYgaXQncyBubyBsb25nZXIgdXNlZFxuXHRcdGlmICggalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGV2ZW50cyApICkge1xuXHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBcImhhbmRsZSBldmVudHNcIiApO1xuXHRcdH1cblx0fSxcblxuXHRkaXNwYXRjaDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0Ly8gTWFrZSBhIHdyaXRhYmxlIGpRdWVyeS5FdmVudCBmcm9tIHRoZSBuYXRpdmUgZXZlbnQgb2JqZWN0XG5cdFx0ZXZlbnQgPSBqUXVlcnkuZXZlbnQuZml4KCBldmVudCApO1xuXG5cdFx0dmFyIGksIGosIHJldCwgbWF0Y2hlZCwgaGFuZGxlT2JqLFxuXHRcdFx0aGFuZGxlclF1ZXVlID0gW10sXG5cdFx0XHRhcmdzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzICksXG5cdFx0XHRoYW5kbGVycyA9ICggZGF0YVByaXYuZ2V0KCB0aGlzLCBcImV2ZW50c1wiICkgfHwge30gKVsgZXZlbnQudHlwZSBdIHx8IFtdLFxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyBldmVudC50eXBlIF0gfHwge307XG5cblx0XHQvLyBVc2UgdGhlIGZpeC1lZCBqUXVlcnkuRXZlbnQgcmF0aGVyIHRoYW4gdGhlIChyZWFkLW9ubHkpIG5hdGl2ZSBldmVudFxuXHRcdGFyZ3NbIDAgXSA9IGV2ZW50O1xuXHRcdGV2ZW50LmRlbGVnYXRlVGFyZ2V0ID0gdGhpcztcblxuXHRcdC8vIENhbGwgdGhlIHByZURpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZSwgYW5kIGxldCBpdCBiYWlsIGlmIGRlc2lyZWRcblx0XHRpZiAoIHNwZWNpYWwucHJlRGlzcGF0Y2ggJiYgc3BlY2lhbC5wcmVEaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApID09PSBmYWxzZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBEZXRlcm1pbmUgaGFuZGxlcnNcblx0XHRoYW5kbGVyUXVldWUgPSBqUXVlcnkuZXZlbnQuaGFuZGxlcnMuY2FsbCggdGhpcywgZXZlbnQsIGhhbmRsZXJzICk7XG5cblx0XHQvLyBSdW4gZGVsZWdhdGVzIGZpcnN0OyB0aGV5IG1heSB3YW50IHRvIHN0b3AgcHJvcGFnYXRpb24gYmVuZWF0aCB1c1xuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKCBtYXRjaGVkID0gaGFuZGxlclF1ZXVlWyBpKysgXSApICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0ZXZlbnQuY3VycmVudFRhcmdldCA9IG1hdGNoZWQuZWxlbTtcblxuXHRcdFx0aiA9IDA7XG5cdFx0XHR3aGlsZSAoICggaGFuZGxlT2JqID0gbWF0Y2hlZC5oYW5kbGVyc1sgaisrIF0gKSAmJlxuXHRcdFx0XHQhZXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblxuXHRcdFx0XHQvLyBUcmlnZ2VyZWQgZXZlbnQgbXVzdCBlaXRoZXIgMSkgaGF2ZSBubyBuYW1lc3BhY2UsIG9yIDIpIGhhdmUgbmFtZXNwYWNlKHMpXG5cdFx0XHRcdC8vIGEgc3Vic2V0IG9yIGVxdWFsIHRvIHRob3NlIGluIHRoZSBib3VuZCBldmVudCAoYm90aCBjYW4gaGF2ZSBubyBuYW1lc3BhY2UpLlxuXHRcdFx0XHRpZiAoICFldmVudC5ybmFtZXNwYWNlIHx8IGV2ZW50LnJuYW1lc3BhY2UudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkge1xuXG5cdFx0XHRcdFx0ZXZlbnQuaGFuZGxlT2JqID0gaGFuZGxlT2JqO1xuXHRcdFx0XHRcdGV2ZW50LmRhdGEgPSBoYW5kbGVPYmouZGF0YTtcblxuXHRcdFx0XHRcdHJldCA9ICggKCBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgaGFuZGxlT2JqLm9yaWdUeXBlIF0gfHwge30gKS5oYW5kbGUgfHxcblx0XHRcdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyICkuYXBwbHkoIG1hdGNoZWQuZWxlbSwgYXJncyApO1xuXG5cdFx0XHRcdFx0aWYgKCByZXQgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRcdGlmICggKCBldmVudC5yZXN1bHQgPSByZXQgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhbGwgdGhlIHBvc3REaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVkIHR5cGVcblx0XHRpZiAoIHNwZWNpYWwucG9zdERpc3BhdGNoICkge1xuXHRcdFx0c3BlY2lhbC5wb3N0RGlzcGF0Y2guY2FsbCggdGhpcywgZXZlbnQgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZXZlbnQucmVzdWx0O1xuXHR9LFxuXG5cdGhhbmRsZXJzOiBmdW5jdGlvbiggZXZlbnQsIGhhbmRsZXJzICkge1xuXHRcdHZhciBpLCBtYXRjaGVzLCBzZWwsIGhhbmRsZU9iaixcblx0XHRcdGhhbmRsZXJRdWV1ZSA9IFtdLFxuXHRcdFx0ZGVsZWdhdGVDb3VudCA9IGhhbmRsZXJzLmRlbGVnYXRlQ291bnQsXG5cdFx0XHRjdXIgPSBldmVudC50YXJnZXQ7XG5cblx0XHQvLyBTdXBwb3J0IChhdCBsZWFzdCk6IENocm9tZSwgSUU5XG5cdFx0Ly8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVyc1xuXHRcdC8vIEJsYWNrLWhvbGUgU1ZHIDx1c2U+IGluc3RhbmNlIHRyZWVzICgjMTMxODApXG5cdFx0Ly9cblx0XHQvLyBTdXBwb3J0OiBGaXJlZm94PD00Mitcblx0XHQvLyBBdm9pZCBub24tbGVmdC1jbGljayBpbiBGRiBidXQgZG9uJ3QgYmxvY2sgSUUgcmFkaW8gZXZlbnRzICgjMzg2MSwgZ2gtMjM0Mylcblx0XHRpZiAoIGRlbGVnYXRlQ291bnQgJiYgY3VyLm5vZGVUeXBlICYmXG5cdFx0XHQoIGV2ZW50LnR5cGUgIT09IFwiY2xpY2tcIiB8fCBpc05hTiggZXZlbnQuYnV0dG9uICkgfHwgZXZlbnQuYnV0dG9uIDwgMSApICkge1xuXG5cdFx0XHRmb3IgKCA7IGN1ciAhPT0gdGhpczsgY3VyID0gY3VyLnBhcmVudE5vZGUgfHwgdGhpcyApIHtcblxuXHRcdFx0XHQvLyBEb24ndCBjaGVjayBub24tZWxlbWVudHMgKCMxMzIwOClcblx0XHRcdFx0Ly8gRG9uJ3QgcHJvY2VzcyBjbGlja3Mgb24gZGlzYWJsZWQgZWxlbWVudHMgKCM2OTExLCAjODE2NSwgIzExMzgyLCAjMTE3NjQpXG5cdFx0XHRcdGlmICggY3VyLm5vZGVUeXBlID09PSAxICYmICggY3VyLmRpc2FibGVkICE9PSB0cnVlIHx8IGV2ZW50LnR5cGUgIT09IFwiY2xpY2tcIiApICkge1xuXHRcdFx0XHRcdG1hdGNoZXMgPSBbXTtcblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHtcblx0XHRcdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBpIF07XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IGNvbmZsaWN0IHdpdGggT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzICgjMTMyMDMpXG5cdFx0XHRcdFx0XHRzZWwgPSBoYW5kbGVPYmouc2VsZWN0b3IgKyBcIiBcIjtcblxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVzWyBzZWwgXSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVzWyBzZWwgXSA9IGhhbmRsZU9iai5uZWVkc0NvbnRleHQgP1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeSggc2VsLCB0aGlzICkuaW5kZXgoIGN1ciApID4gLTEgOlxuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kKCBzZWwsIHRoaXMsIG51bGwsIFsgY3VyIF0gKS5sZW5ndGg7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXNbIHNlbCBdICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVzLnB1c2goIGhhbmRsZU9iaiApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIG1hdGNoZXMubGVuZ3RoICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogbWF0Y2hlcyB9ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQWRkIHRoZSByZW1haW5pbmcgKGRpcmVjdGx5LWJvdW5kKSBoYW5kbGVyc1xuXHRcdGlmICggZGVsZWdhdGVDb3VudCA8IGhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdGhhbmRsZXJRdWV1ZS5wdXNoKCB7IGVsZW06IHRoaXMsIGhhbmRsZXJzOiBoYW5kbGVycy5zbGljZSggZGVsZWdhdGVDb3VudCApIH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGFuZGxlclF1ZXVlO1xuXHR9LFxuXG5cdC8vIEluY2x1ZGVzIHNvbWUgZXZlbnQgcHJvcHMgc2hhcmVkIGJ5IEtleUV2ZW50IGFuZCBNb3VzZUV2ZW50XG5cdHByb3BzOiAoIFwiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZGV0YWlsIGV2ZW50UGhhc2UgXCIgK1xuXHRcdFwibWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaFwiICkuc3BsaXQoIFwiIFwiICksXG5cblx0Zml4SG9va3M6IHt9LFxuXG5cdGtleUhvb2tzOiB7XG5cdFx0cHJvcHM6IFwiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZVwiLnNwbGl0KCBcIiBcIiApLFxuXHRcdGZpbHRlcjogZnVuY3Rpb24oIGV2ZW50LCBvcmlnaW5hbCApIHtcblxuXHRcdFx0Ly8gQWRkIHdoaWNoIGZvciBrZXkgZXZlbnRzXG5cdFx0XHRpZiAoIGV2ZW50LndoaWNoID09IG51bGwgKSB7XG5cdFx0XHRcdGV2ZW50LndoaWNoID0gb3JpZ2luYWwuY2hhckNvZGUgIT0gbnVsbCA/IG9yaWdpbmFsLmNoYXJDb2RlIDogb3JpZ2luYWwua2V5Q29kZTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGV2ZW50O1xuXHRcdH1cblx0fSxcblxuXHRtb3VzZUhvb2tzOiB7XG5cdFx0cHJvcHM6ICggXCJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIFwiICtcblx0XHRcdFwic2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudFwiICkuc3BsaXQoIFwiIFwiICksXG5cdFx0ZmlsdGVyOiBmdW5jdGlvbiggZXZlbnQsIG9yaWdpbmFsICkge1xuXHRcdFx0dmFyIGV2ZW50RG9jLCBkb2MsIGJvZHksXG5cdFx0XHRcdGJ1dHRvbiA9IG9yaWdpbmFsLmJ1dHRvbjtcblxuXHRcdFx0Ly8gQ2FsY3VsYXRlIHBhZ2VYL1kgaWYgbWlzc2luZyBhbmQgY2xpZW50WC9ZIGF2YWlsYWJsZVxuXHRcdFx0aWYgKCBldmVudC5wYWdlWCA9PSBudWxsICYmIG9yaWdpbmFsLmNsaWVudFggIT0gbnVsbCApIHtcblx0XHRcdFx0ZXZlbnREb2MgPSBldmVudC50YXJnZXQub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDtcblx0XHRcdFx0ZG9jID0gZXZlbnREb2MuZG9jdW1lbnRFbGVtZW50O1xuXHRcdFx0XHRib2R5ID0gZXZlbnREb2MuYm9keTtcblxuXHRcdFx0XHRldmVudC5wYWdlWCA9IG9yaWdpbmFsLmNsaWVudFggK1xuXHRcdFx0XHRcdCggZG9jICYmIGRvYy5zY3JvbGxMZWZ0IHx8IGJvZHkgJiYgYm9keS5zY3JvbGxMZWZ0IHx8IDAgKSAtXG5cdFx0XHRcdFx0KCBkb2MgJiYgZG9jLmNsaWVudExlZnQgfHwgYm9keSAmJiBib2R5LmNsaWVudExlZnQgfHwgMCApO1xuXHRcdFx0XHRldmVudC5wYWdlWSA9IG9yaWdpbmFsLmNsaWVudFkgK1xuXHRcdFx0XHRcdCggZG9jICYmIGRvYy5zY3JvbGxUb3AgIHx8IGJvZHkgJiYgYm9keS5zY3JvbGxUb3AgIHx8IDAgKSAtXG5cdFx0XHRcdFx0KCBkb2MgJiYgZG9jLmNsaWVudFRvcCAgfHwgYm9keSAmJiBib2R5LmNsaWVudFRvcCAgfHwgMCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgd2hpY2ggZm9yIGNsaWNrOiAxID09PSBsZWZ0OyAyID09PSBtaWRkbGU7IDMgPT09IHJpZ2h0XG5cdFx0XHQvLyBOb3RlOiBidXR0b24gaXMgbm90IG5vcm1hbGl6ZWQsIHNvIGRvbid0IHVzZSBpdFxuXHRcdFx0aWYgKCAhZXZlbnQud2hpY2ggJiYgYnV0dG9uICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdGV2ZW50LndoaWNoID0gKCBidXR0b24gJiAxID8gMSA6ICggYnV0dG9uICYgMiA/IDMgOiAoIGJ1dHRvbiAmIDQgPyAyIDogMCApICkgKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGV2ZW50O1xuXHRcdH1cblx0fSxcblxuXHRmaXg6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRpZiAoIGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdICkge1xuXHRcdFx0cmV0dXJuIGV2ZW50O1xuXHRcdH1cblxuXHRcdC8vIENyZWF0ZSBhIHdyaXRhYmxlIGNvcHkgb2YgdGhlIGV2ZW50IG9iamVjdCBhbmQgbm9ybWFsaXplIHNvbWUgcHJvcGVydGllc1xuXHRcdHZhciBpLCBwcm9wLCBjb3B5LFxuXHRcdFx0dHlwZSA9IGV2ZW50LnR5cGUsXG5cdFx0XHRvcmlnaW5hbEV2ZW50ID0gZXZlbnQsXG5cdFx0XHRmaXhIb29rID0gdGhpcy5maXhIb29rc1sgdHlwZSBdO1xuXG5cdFx0aWYgKCAhZml4SG9vayApIHtcblx0XHRcdHRoaXMuZml4SG9va3NbIHR5cGUgXSA9IGZpeEhvb2sgPVxuXHRcdFx0XHRybW91c2VFdmVudC50ZXN0KCB0eXBlICkgPyB0aGlzLm1vdXNlSG9va3MgOlxuXHRcdFx0XHRya2V5RXZlbnQudGVzdCggdHlwZSApID8gdGhpcy5rZXlIb29rcyA6XG5cdFx0XHRcdHt9O1xuXHRcdH1cblx0XHRjb3B5ID0gZml4SG9vay5wcm9wcyA/IHRoaXMucHJvcHMuY29uY2F0KCBmaXhIb29rLnByb3BzICkgOiB0aGlzLnByb3BzO1xuXG5cdFx0ZXZlbnQgPSBuZXcgalF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7XG5cblx0XHRpID0gY29weS5sZW5ndGg7XG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRwcm9wID0gY29weVsgaSBdO1xuXHRcdFx0ZXZlbnRbIHByb3AgXSA9IG9yaWdpbmFsRXZlbnRbIHByb3AgXTtcblx0XHR9XG5cblx0XHQvLyBTdXBwb3J0OiBDb3Jkb3ZhIDIuNSAoV2ViS2l0KSAoIzEzMjU1KVxuXHRcdC8vIEFsbCBldmVudHMgc2hvdWxkIGhhdmUgYSB0YXJnZXQ7IENvcmRvdmEgZGV2aWNlcmVhZHkgZG9lc24ndFxuXHRcdGlmICggIWV2ZW50LnRhcmdldCApIHtcblx0XHRcdGV2ZW50LnRhcmdldCA9IGRvY3VtZW50O1xuXHRcdH1cblxuXHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA2LjArLCBDaHJvbWU8Mjhcblx0XHQvLyBUYXJnZXQgc2hvdWxkIG5vdCBiZSBhIHRleHQgbm9kZSAoIzUwNCwgIzEzMTQzKVxuXHRcdGlmICggZXZlbnQudGFyZ2V0Lm5vZGVUeXBlID09PSAzICkge1xuXHRcdFx0ZXZlbnQudGFyZ2V0ID0gZXZlbnQudGFyZ2V0LnBhcmVudE5vZGU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZpeEhvb2suZmlsdGVyID8gZml4SG9vay5maWx0ZXIoIGV2ZW50LCBvcmlnaW5hbEV2ZW50ICkgOiBldmVudDtcblx0fSxcblxuXHRzcGVjaWFsOiB7XG5cdFx0bG9hZDoge1xuXG5cdFx0XHQvLyBQcmV2ZW50IHRyaWdnZXJlZCBpbWFnZS5sb2FkIGV2ZW50cyBmcm9tIGJ1YmJsaW5nIHRvIHdpbmRvdy5sb2FkXG5cdFx0XHRub0J1YmJsZTogdHJ1ZVxuXHRcdH0sXG5cdFx0Zm9jdXM6IHtcblxuXHRcdFx0Ly8gRmlyZSBuYXRpdmUgZXZlbnQgaWYgcG9zc2libGUgc28gYmx1ci9mb2N1cyBzZXF1ZW5jZSBpcyBjb3JyZWN0XG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0aGlzICE9PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRoaXMuZm9jdXMgKSB7XG5cdFx0XHRcdFx0dGhpcy5mb2N1cygpO1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGVnYXRlVHlwZTogXCJmb2N1c2luXCJcblx0XHR9LFxuXHRcdGJsdXI6IHtcblx0XHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIHRoaXMgPT09IHNhZmVBY3RpdmVFbGVtZW50KCkgJiYgdGhpcy5ibHVyICkge1xuXHRcdFx0XHRcdHRoaXMuYmx1cigpO1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGVnYXRlVHlwZTogXCJmb2N1c291dFwiXG5cdFx0fSxcblx0XHRjbGljazoge1xuXG5cdFx0XHQvLyBGb3IgY2hlY2tib3gsIGZpcmUgbmF0aXZlIGV2ZW50IHNvIGNoZWNrZWQgc3RhdGUgd2lsbCBiZSByaWdodFxuXHRcdFx0dHJpZ2dlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggdGhpcy50eXBlID09PSBcImNoZWNrYm94XCIgJiYgdGhpcy5jbGljayAmJiBqUXVlcnkubm9kZU5hbWUoIHRoaXMsIFwiaW5wdXRcIiApICkge1xuXHRcdFx0XHRcdHRoaXMuY2xpY2soKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8vIEZvciBjcm9zcy1icm93c2VyIGNvbnNpc3RlbmN5LCBkb24ndCBmaXJlIG5hdGl2ZSAuY2xpY2soKSBvbiBsaW5rc1xuXHRcdFx0X2RlZmF1bHQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0cmV0dXJuIGpRdWVyeS5ub2RlTmFtZSggZXZlbnQudGFyZ2V0LCBcImFcIiApO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRiZWZvcmV1bmxvYWQ6IHtcblx0XHRcdHBvc3REaXNwYXRjaDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggMjArXG5cdFx0XHRcdC8vIEZpcmVmb3ggZG9lc24ndCBhbGVydCBpZiB0aGUgcmV0dXJuVmFsdWUgZmllbGQgaXMgbm90IHNldC5cblx0XHRcdFx0aWYgKCBldmVudC5yZXN1bHQgIT09IHVuZGVmaW5lZCAmJiBldmVudC5vcmlnaW5hbEV2ZW50ICkge1xuXHRcdFx0XHRcdGV2ZW50Lm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWUgPSBldmVudC5yZXN1bHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbmpRdWVyeS5yZW1vdmVFdmVudCA9IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBoYW5kbGUgKSB7XG5cblx0Ly8gVGhpcyBcImlmXCIgaXMgbmVlZGVkIGZvciBwbGFpbiBvYmplY3RzXG5cdGlmICggZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyICkge1xuXHRcdGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciggdHlwZSwgaGFuZGxlICk7XG5cdH1cbn07XG5cbmpRdWVyeS5FdmVudCA9IGZ1bmN0aW9uKCBzcmMsIHByb3BzICkge1xuXG5cdC8vIEFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCB0aGUgJ25ldycga2V5d29yZFxuXHRpZiAoICEoIHRoaXMgaW5zdGFuY2VvZiBqUXVlcnkuRXZlbnQgKSApIHtcblx0XHRyZXR1cm4gbmV3IGpRdWVyeS5FdmVudCggc3JjLCBwcm9wcyApO1xuXHR9XG5cblx0Ly8gRXZlbnQgb2JqZWN0XG5cdGlmICggc3JjICYmIHNyYy50eXBlICkge1xuXHRcdHRoaXMub3JpZ2luYWxFdmVudCA9IHNyYztcblx0XHR0aGlzLnR5cGUgPSBzcmMudHlwZTtcblxuXHRcdC8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkXG5cdFx0Ly8gYnkgYSBoYW5kbGVyIGxvd2VyIGRvd24gdGhlIHRyZWU7IHJlZmxlY3QgdGhlIGNvcnJlY3QgdmFsdWUuXG5cdFx0dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBzcmMuZGVmYXVsdFByZXZlbnRlZCB8fFxuXHRcdFx0XHRzcmMuZGVmYXVsdFByZXZlbnRlZCA9PT0gdW5kZWZpbmVkICYmXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjBcblx0XHRcdFx0c3JjLnJldHVyblZhbHVlID09PSBmYWxzZSA/XG5cdFx0XHRyZXR1cm5UcnVlIDpcblx0XHRcdHJldHVybkZhbHNlO1xuXG5cdC8vIEV2ZW50IHR5cGVcblx0fSBlbHNlIHtcblx0XHR0aGlzLnR5cGUgPSBzcmM7XG5cdH1cblxuXHQvLyBQdXQgZXhwbGljaXRseSBwcm92aWRlZCBwcm9wZXJ0aWVzIG9udG8gdGhlIGV2ZW50IG9iamVjdFxuXHRpZiAoIHByb3BzICkge1xuXHRcdGpRdWVyeS5leHRlbmQoIHRoaXMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBDcmVhdGUgYSB0aW1lc3RhbXAgaWYgaW5jb21pbmcgZXZlbnQgZG9lc24ndCBoYXZlIG9uZVxuXHR0aGlzLnRpbWVTdGFtcCA9IHNyYyAmJiBzcmMudGltZVN0YW1wIHx8IGpRdWVyeS5ub3coKTtcblxuXHQvLyBNYXJrIGl0IGFzIGZpeGVkXG5cdHRoaXNbIGpRdWVyeS5leHBhbmRvIF0gPSB0cnVlO1xufTtcblxuLy8galF1ZXJ5LkV2ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDAzMDMzMS9lY21hLXNjcmlwdC1iaW5kaW5nLmh0bWxcbmpRdWVyeS5FdmVudC5wcm90b3R5cGUgPSB7XG5cdGNvbnN0cnVjdG9yOiBqUXVlcnkuRXZlbnQsXG5cdGlzRGVmYXVsdFByZXZlbnRlZDogcmV0dXJuRmFsc2UsXG5cdGlzUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblx0aXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLFxuXHRpc1NpbXVsYXRlZDogZmFsc2UsXG5cblx0cHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSByZXR1cm5UcnVlO1xuXG5cdFx0aWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkge1xuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblx0fSxcblx0c3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSByZXR1cm5UcnVlO1xuXG5cdFx0aWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkge1xuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR9XG5cdH0sXG5cdHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zdG9wUHJvcGFnYXRpb24oKTtcblx0fVxufTtcblxuLy8gQ3JlYXRlIG1vdXNlZW50ZXIvbGVhdmUgZXZlbnRzIHVzaW5nIG1vdXNlb3Zlci9vdXQgYW5kIGV2ZW50LXRpbWUgY2hlY2tzXG4vLyBzbyB0aGF0IGV2ZW50IGRlbGVnYXRpb24gd29ya3MgaW4galF1ZXJ5LlxuLy8gRG8gdGhlIHNhbWUgZm9yIHBvaW50ZXJlbnRlci9wb2ludGVybGVhdmUgYW5kIHBvaW50ZXJvdmVyL3BvaW50ZXJvdXRcbi8vXG4vLyBTdXBwb3J0OiBTYWZhcmkgNyBvbmx5XG4vLyBTYWZhcmkgc2VuZHMgbW91c2VlbnRlciB0b28gb2Z0ZW47IHNlZTpcbi8vIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NzAyNThcbi8vIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZyAoaXQgZXhpc3RlZCBpbiBvbGRlciBDaHJvbWUgdmVyc2lvbnMgYXMgd2VsbCkuXG5qUXVlcnkuZWFjaCgge1xuXHRtb3VzZWVudGVyOiBcIm1vdXNlb3ZlclwiLFxuXHRtb3VzZWxlYXZlOiBcIm1vdXNlb3V0XCIsXG5cdHBvaW50ZXJlbnRlcjogXCJwb2ludGVyb3ZlclwiLFxuXHRwb2ludGVybGVhdmU6IFwicG9pbnRlcm91dFwiXG59LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3JpZyBdID0ge1xuXHRcdGRlbGVnYXRlVHlwZTogZml4LFxuXHRcdGJpbmRUeXBlOiBmaXgsXG5cblx0XHRoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciByZXQsXG5cdFx0XHRcdHRhcmdldCA9IHRoaXMsXG5cdFx0XHRcdHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LFxuXHRcdFx0XHRoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmo7XG5cblx0XHRcdC8vIEZvciBtb3VzZWVudGVyL2xlYXZlIGNhbGwgdGhlIGhhbmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRlIHRoZSB0YXJnZXQuXG5cdFx0XHQvLyBOQjogTm8gcmVsYXRlZFRhcmdldCBpZiB0aGUgbW91c2UgbGVmdC9lbnRlcmVkIHRoZSBicm93c2VyIHdpbmRvd1xuXHRcdFx0aWYgKCAhcmVsYXRlZCB8fCAoIHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRhaW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSApICkge1xuXHRcdFx0XHRldmVudC50eXBlID0gaGFuZGxlT2JqLm9yaWdUeXBlO1xuXHRcdFx0XHRyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBmaXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRvbjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIG9uKCB0aGlzLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICk7XG5cdH0sXG5cdG9uZTogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIG9uKCB0aGlzLCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuLCAxICk7XG5cdH0sXG5cdG9mZjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZm4gKSB7XG5cdFx0dmFyIGhhbmRsZU9iaiwgdHlwZTtcblx0XHRpZiAoIHR5cGVzICYmIHR5cGVzLnByZXZlbnREZWZhdWx0ICYmIHR5cGVzLmhhbmRsZU9iaiApIHtcblxuXHRcdFx0Ly8gKCBldmVudCApICBkaXNwYXRjaGVkIGpRdWVyeS5FdmVudFxuXHRcdFx0aGFuZGxlT2JqID0gdHlwZXMuaGFuZGxlT2JqO1xuXHRcdFx0alF1ZXJ5KCB0eXBlcy5kZWxlZ2F0ZVRhcmdldCApLm9mZihcblx0XHRcdFx0aGFuZGxlT2JqLm5hbWVzcGFjZSA/XG5cdFx0XHRcdFx0aGFuZGxlT2JqLm9yaWdUeXBlICsgXCIuXCIgKyBoYW5kbGVPYmoubmFtZXNwYWNlIDpcblx0XHRcdFx0XHRoYW5kbGVPYmoub3JpZ1R5cGUsXG5cdFx0XHRcdGhhbmRsZU9iai5zZWxlY3Rvcixcblx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXJcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cdFx0aWYgKCB0eXBlb2YgdHlwZXMgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMtb2JqZWN0IFssIHNlbGVjdG9yXSApXG5cdFx0XHRmb3IgKCB0eXBlIGluIHR5cGVzICkge1xuXHRcdFx0XHR0aGlzLm9mZiggdHlwZSwgc2VsZWN0b3IsIHR5cGVzWyB0eXBlIF0gKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHNlbGVjdG9yID09PSBmYWxzZSB8fCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwiZnVuY3Rpb25cIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcyBbLCBmbl0gKVxuXHRcdFx0Zm4gPSBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAoIGZuID09PSBmYWxzZSApIHtcblx0XHRcdGZuID0gcmV0dXJuRmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgdHlwZXMsIGZuLCBzZWxlY3RvciApO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5cbnZhclxuXHRyeGh0bWxUYWcgPSAvPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXFx3Oi1dKylbXj5dKilcXC8+L2dpLFxuXG5cdC8vIFN1cHBvcnQ6IElFIDEwLTExLCBFZGdlIDEwMjQwK1xuXHQvLyBJbiBJRS9FZGdlIHVzaW5nIHJlZ2V4IGdyb3VwcyBoZXJlIGNhdXNlcyBzZXZlcmUgc2xvd2Rvd25zLlxuXHQvLyBTZWUgaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vSUUvZmVlZGJhY2svZGV0YWlscy8xNzM2NTEyL1xuXHRybm9Jbm5lcmh0bWwgPSAvPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxcblxuXHQvLyBjaGVja2VkPVwiY2hlY2tlZFwiIG9yIGNoZWNrZWRcblx0cmNoZWNrZWQgPSAvY2hlY2tlZFxccyooPzpbXj1dfD1cXHMqLmNoZWNrZWQuKS9pLFxuXHRyc2NyaXB0VHlwZU1hc2tlZCA9IC9edHJ1ZVxcLyguKikvLFxuXHRyY2xlYW5TY3JpcHQgPSAvXlxccyo8ISg/OlxcW0NEQVRBXFxbfC0tKXwoPzpcXF1cXF18LS0pPlxccyokL2c7XG5cbi8vIE1hbmlwdWxhdGluZyB0YWJsZXMgcmVxdWlyZXMgYSB0Ym9keVxuZnVuY3Rpb24gbWFuaXB1bGF0aW9uVGFyZ2V0KCBlbGVtLCBjb250ZW50ICkge1xuXHRyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCBcInRhYmxlXCIgKSAmJlxuXHRcdGpRdWVyeS5ub2RlTmFtZSggY29udGVudC5ub2RlVHlwZSAhPT0gMTEgPyBjb250ZW50IDogY29udGVudC5maXJzdENoaWxkLCBcInRyXCIgKSA/XG5cblx0XHRlbGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCBcInRib2R5XCIgKVsgMCBdIHx8XG5cdFx0XHRlbGVtLmFwcGVuZENoaWxkKCBlbGVtLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJ0Ym9keVwiICkgKSA6XG5cdFx0ZWxlbTtcbn1cblxuLy8gUmVwbGFjZS9yZXN0b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMgZm9yIHNhZmUgRE9NIG1hbmlwdWxhdGlvblxuZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSApIHtcblx0ZWxlbS50eXBlID0gKCBlbGVtLmdldEF0dHJpYnV0ZSggXCJ0eXBlXCIgKSAhPT0gbnVsbCApICsgXCIvXCIgKyBlbGVtLnR5cGU7XG5cdHJldHVybiBlbGVtO1xufVxuZnVuY3Rpb24gcmVzdG9yZVNjcmlwdCggZWxlbSApIHtcblx0dmFyIG1hdGNoID0gcnNjcmlwdFR5cGVNYXNrZWQuZXhlYyggZWxlbS50eXBlICk7XG5cblx0aWYgKCBtYXRjaCApIHtcblx0XHRlbGVtLnR5cGUgPSBtYXRjaFsgMSBdO1xuXHR9IGVsc2Uge1xuXHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBcInR5cGVcIiApO1xuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmZ1bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7XG5cdHZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1ZGF0YUN1ciwgZXZlbnRzO1xuXG5cdGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyAxLiBDb3B5IHByaXZhdGUgZGF0YTogZXZlbnRzLCBoYW5kbGVycywgZXRjLlxuXHRpZiAoIGRhdGFQcml2Lmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHBkYXRhT2xkID0gZGF0YVByaXYuYWNjZXNzKCBzcmMgKTtcblx0XHRwZGF0YUN1ciA9IGRhdGFQcml2LnNldCggZGVzdCwgcGRhdGFPbGQgKTtcblx0XHRldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7XG5cblx0XHRpZiAoIGV2ZW50cyApIHtcblx0XHRcdGRlbGV0ZSBwZGF0YUN1ci5oYW5kbGU7XG5cdFx0XHRwZGF0YUN1ci5ldmVudHMgPSB7fTtcblxuXHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIDIuIENvcHkgdXNlciBkYXRhXG5cdGlmICggZGF0YVVzZXIuaGFzRGF0YSggc3JjICkgKSB7XG5cdFx0dWRhdGFPbGQgPSBkYXRhVXNlci5hY2Nlc3MoIHNyYyApO1xuXHRcdHVkYXRhQ3VyID0galF1ZXJ5LmV4dGVuZCgge30sIHVkYXRhT2xkICk7XG5cblx0XHRkYXRhVXNlci5zZXQoIGRlc3QsIHVkYXRhQ3VyICk7XG5cdH1cbn1cblxuLy8gRml4IElFIGJ1Z3MsIHNlZSBzdXBwb3J0IHRlc3RzXG5mdW5jdGlvbiBmaXhJbnB1dCggc3JjLCBkZXN0ICkge1xuXHR2YXIgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0Ly8gRmFpbHMgdG8gcGVyc2lzdCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciByYWRpbyBidXR0b24uXG5cdGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiByY2hlY2thYmxlVHlwZS50ZXN0KCBzcmMudHlwZSApICkge1xuXHRcdGRlc3QuY2hlY2tlZCA9IHNyYy5jaGVja2VkO1xuXG5cdC8vIEZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zXG5cdH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgfHwgbm9kZU5hbWUgPT09IFwidGV4dGFyZWFcIiApIHtcblx0XHRkZXN0LmRlZmF1bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFsdWU7XG5cdH1cbn1cblxuZnVuY3Rpb24gZG9tTWFuaXAoIGNvbGxlY3Rpb24sIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICkge1xuXG5cdC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXNcblx0YXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTtcblxuXHR2YXIgZnJhZ21lbnQsIGZpcnN0LCBzY3JpcHRzLCBoYXNTY3JpcHRzLCBub2RlLCBkb2MsXG5cdFx0aSA9IDAsXG5cdFx0bCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuXHRcdGlOb0Nsb25lID0gbCAtIDEsXG5cdFx0dmFsdWUgPSBhcmdzWyAwIF0sXG5cdFx0aXNGdW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApO1xuXG5cdC8vIFdlIGNhbid0IGNsb25lTm9kZSBmcmFnbWVudHMgdGhhdCBjb250YWluIGNoZWNrZWQsIGluIFdlYktpdFxuXHRpZiAoIGlzRnVuY3Rpb24gfHxcblx0XHRcdCggbCA+IDEgJiYgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHRcdCFzdXBwb3J0LmNoZWNrQ2xvbmUgJiYgcmNoZWNrZWQudGVzdCggdmFsdWUgKSApICkge1xuXHRcdHJldHVybiBjb2xsZWN0aW9uLmVhY2goIGZ1bmN0aW9uKCBpbmRleCApIHtcblx0XHRcdHZhciBzZWxmID0gY29sbGVjdGlvbi5lcSggaW5kZXggKTtcblx0XHRcdGlmICggaXNGdW5jdGlvbiApIHtcblx0XHRcdFx0YXJnc1sgMCBdID0gdmFsdWUuY2FsbCggdGhpcywgaW5kZXgsIHNlbGYuaHRtbCgpICk7XG5cdFx0XHR9XG5cdFx0XHRkb21NYW5pcCggc2VsZiwgYXJncywgY2FsbGJhY2ssIGlnbm9yZWQgKTtcblx0XHR9ICk7XG5cdH1cblxuXHRpZiAoIGwgKSB7XG5cdFx0ZnJhZ21lbnQgPSBidWlsZEZyYWdtZW50KCBhcmdzLCBjb2xsZWN0aW9uWyAwIF0ub3duZXJEb2N1bWVudCwgZmFsc2UsIGNvbGxlY3Rpb24sIGlnbm9yZWQgKTtcblx0XHRmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRpZiAoIGZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICkge1xuXHRcdFx0ZnJhZ21lbnQgPSBmaXJzdDtcblx0XHR9XG5cblx0XHQvLyBSZXF1aXJlIGVpdGhlciBuZXcgY29udGVudCBvciBhbiBpbnRlcmVzdCBpbiBpZ25vcmVkIGVsZW1lbnRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2tcblx0XHRpZiAoIGZpcnN0IHx8IGlnbm9yZWQgKSB7XG5cdFx0XHRzY3JpcHRzID0galF1ZXJ5Lm1hcCggZ2V0QWxsKCBmcmFnbWVudCwgXCJzY3JpcHRcIiApLCBkaXNhYmxlU2NyaXB0ICk7XG5cdFx0XHRoYXNTY3JpcHRzID0gc2NyaXB0cy5sZW5ndGg7XG5cblx0XHRcdC8vIFVzZSB0aGUgb3JpZ2luYWwgZnJhZ21lbnQgZm9yIHRoZSBsYXN0IGl0ZW1cblx0XHRcdC8vIGluc3RlYWQgb2YgdGhlIGZpcnN0IGJlY2F1c2UgaXQgY2FuIGVuZCB1cFxuXHRcdFx0Ly8gYmVpbmcgZW1wdGllZCBpbmNvcnJlY3RseSBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgKCM4MDcwKS5cblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0bm9kZSA9IGZyYWdtZW50O1xuXG5cdFx0XHRcdGlmICggaSAhPT0gaU5vQ2xvbmUgKSB7XG5cdFx0XHRcdFx0bm9kZSA9IGpRdWVyeS5jbG9uZSggbm9kZSwgdHJ1ZSwgdHJ1ZSApO1xuXG5cdFx0XHRcdFx0Ly8gS2VlcCByZWZlcmVuY2VzIHRvIGNsb25lZCBzY3JpcHRzIGZvciBsYXRlciByZXN0b3JhdGlvblxuXHRcdFx0XHRcdGlmICggaGFzU2NyaXB0cyApIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjEsIFBoYW50b21KUzwyXG5cdFx0XHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdldEFsbCggbm9kZSwgXCJzY3JpcHRcIiApICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FsbGJhY2suY2FsbCggY29sbGVjdGlvblsgaSBdLCBub2RlLCBpICk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggaGFzU2NyaXB0cyApIHtcblx0XHRcdFx0ZG9jID0gc2NyaXB0c1sgc2NyaXB0cy5sZW5ndGggLSAxIF0ub3duZXJEb2N1bWVudDtcblxuXHRcdFx0XHQvLyBSZWVuYWJsZSBzY3JpcHRzXG5cdFx0XHRcdGpRdWVyeS5tYXAoIHNjcmlwdHMsIHJlc3RvcmVTY3JpcHQgKTtcblxuXHRcdFx0XHQvLyBFdmFsdWF0ZSBleGVjdXRhYmxlIHNjcmlwdHMgb24gZmlyc3QgZG9jdW1lbnQgaW5zZXJ0aW9uXG5cdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgaGFzU2NyaXB0czsgaSsrICkge1xuXHRcdFx0XHRcdG5vZGUgPSBzY3JpcHRzWyBpIF07XG5cdFx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUgfHwgXCJcIiApICYmXG5cdFx0XHRcdFx0XHQhZGF0YVByaXYuYWNjZXNzKCBub2RlLCBcImdsb2JhbEV2YWxcIiApICYmXG5cdFx0XHRcdFx0XHRqUXVlcnkuY29udGFpbnMoIGRvYywgbm9kZSApICkge1xuXG5cdFx0XHRcdFx0XHRpZiAoIG5vZGUuc3JjICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIE9wdGlvbmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5Ll9ldmFsVXJsICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5fZXZhbFVybCggbm9kZS5zcmMgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0alF1ZXJ5Lmdsb2JhbEV2YWwoIG5vZGUudGV4dENvbnRlbnQucmVwbGFjZSggcmNsZWFuU2NyaXB0LCBcIlwiICkgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gY29sbGVjdGlvbjtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlKCBlbGVtLCBzZWxlY3Rvciwga2VlcERhdGEgKSB7XG5cdHZhciBub2RlLFxuXHRcdG5vZGVzID0gc2VsZWN0b3IgPyBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgZWxlbSApIDogZWxlbSxcblx0XHRpID0gMDtcblxuXHRmb3IgKCA7ICggbm9kZSA9IG5vZGVzWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0aWYgKCAha2VlcERhdGEgJiYgbm9kZS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggbm9kZSApICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBub2RlLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRpZiAoIGtlZXBEYXRhICYmIGpRdWVyeS5jb250YWlucyggbm9kZS5vd25lckRvY3VtZW50LCBub2RlICkgKSB7XG5cdFx0XHRcdHNldEdsb2JhbEV2YWwoIGdldEFsbCggbm9kZSwgXCJzY3JpcHRcIiApICk7XG5cdFx0XHR9XG5cdFx0XHRub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIG5vZGUgKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRodG1sUHJlZmlsdGVyOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHRyZXR1cm4gaHRtbC5yZXBsYWNlKCByeGh0bWxUYWcsIFwiPCQxPjwvJDI+XCIgKTtcblx0fSxcblxuXHRjbG9uZTogZnVuY3Rpb24oIGVsZW0sIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdHZhciBpLCBsLCBzcmNFbGVtZW50cywgZGVzdEVsZW1lbnRzLFxuXHRcdFx0Y2xvbmUgPSBlbGVtLmNsb25lTm9kZSggdHJ1ZSApLFxuXHRcdFx0aW5QYWdlID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblxuXHRcdC8vIEZpeCBJRSBjbG9uaW5nIGlzc3Vlc1xuXHRcdGlmICggIXN1cHBvcnQubm9DbG9uZUNoZWNrZWQgJiYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGVsZW0ubm9kZVR5cGUgPT09IDExICkgJiZcblx0XHRcdFx0IWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkge1xuXG5cdFx0XHQvLyBXZSBlc2NoZXcgU2l6emxlIGhlcmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnM6IGh0dHA6Ly9qc3BlcmYuY29tL2dldGFsbC12cy1zaXp6bGUvMlxuXHRcdFx0ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSApO1xuXHRcdFx0c3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0gKTtcblxuXHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGZpeElucHV0KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENvcHkgdGhlIGV2ZW50cyBmcm9tIHRoZSBvcmlnaW5hbCB0byB0aGUgY2xvbmVcblx0XHRpZiAoIGRhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRpZiAoIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdFx0XHRzcmNFbGVtZW50cyA9IHNyY0VsZW1lbnRzIHx8IGdldEFsbCggZWxlbSApO1xuXHRcdFx0XHRkZXN0RWxlbWVudHMgPSBkZXN0RWxlbWVudHMgfHwgZ2V0QWxsKCBjbG9uZSApO1xuXG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGNsb25lQ29weUV2ZW50KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjbG9uZUNvcHlFdmVudCggZWxlbSwgY2xvbmUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5XG5cdFx0ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSwgXCJzY3JpcHRcIiApO1xuXHRcdGlmICggZGVzdEVsZW1lbnRzLmxlbmd0aCA+IDAgKSB7XG5cdFx0XHRzZXRHbG9iYWxFdmFsKCBkZXN0RWxlbWVudHMsICFpblBhZ2UgJiYgZ2V0QWxsKCBlbGVtLCBcInNjcmlwdFwiICkgKTtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4gdGhlIGNsb25lZCBzZXRcblx0XHRyZXR1cm4gY2xvbmU7XG5cdH0sXG5cblx0Y2xlYW5EYXRhOiBmdW5jdGlvbiggZWxlbXMgKSB7XG5cdFx0dmFyIGRhdGEsIGVsZW0sIHR5cGUsXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWwsXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgKCBlbGVtID0gZWxlbXNbIGkgXSApICE9PSB1bmRlZmluZWQ7IGkrKyApIHtcblx0XHRcdGlmICggYWNjZXB0RGF0YSggZWxlbSApICkge1xuXHRcdFx0XHRpZiAoICggZGF0YSA9IGVsZW1bIGRhdGFQcml2LmV4cGFuZG8gXSApICkge1xuXHRcdFx0XHRcdGlmICggZGF0YS5ldmVudHMgKSB7XG5cdFx0XHRcdFx0XHRmb3IgKCB0eXBlIGluIGRhdGEuZXZlbnRzICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIHNwZWNpYWxbIHR5cGUgXSApIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gVGhpcyBpcyBhIHNob3J0Y3V0IHRvIGF2b2lkIGpRdWVyeS5ldmVudC5yZW1vdmUncyBvdmVyaGVhZFxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZGF0YS5oYW5kbGUgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZSA8PSAzNS00NStcblx0XHRcdFx0XHQvLyBBc3NpZ24gdW5kZWZpbmVkIGluc3RlYWQgb2YgdXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmVcblx0XHRcdFx0XHRlbGVtWyBkYXRhUHJpdi5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gKSB7XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0gMzUtNDUrXG5cdFx0XHRcdFx0Ly8gQXNzaWduIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwgc2VlIERhdGEjcmVtb3ZlXG5cdFx0XHRcdFx0ZWxlbVsgZGF0YVVzZXIuZXhwYW5kbyBdID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHQvLyBLZWVwIGRvbU1hbmlwIGV4cG9zZWQgdW50aWwgMy4wIChnaC0yMjI1KVxuXHRkb21NYW5pcDogZG9tTWFuaXAsXG5cblx0ZGV0YWNoOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IsIHRydWUgKTtcblx0fSxcblxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gcmVtb3ZlKCB0aGlzLCBzZWxlY3RvciApO1xuXHR9LFxuXG5cdHRleHQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS50ZXh0KCB0aGlzICkgOlxuXHRcdFx0XHR0aGlzLmVtcHR5KCkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnRleHRDb250ZW50ID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggKTtcblx0fSxcblxuXHRhcHBlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7XG5cdFx0XHRcdHRhcmdldC5hcHBlbmRDaGlsZCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRwcmVwZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0dmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApO1xuXHRcdFx0XHR0YXJnZXQuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0YXJnZXQuZmlyc3RDaGlsZCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRiZWZvcmU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGFmdGVyOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5uZXh0U2libGluZyApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRlbXB0eTogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGVsZW0sXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgKCBlbGVtID0gdGhpc1sgaSBdICkgIT0gbnVsbDsgaSsrICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgbWVtb3J5IGxlYWtzXG5cdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApO1xuXG5cdFx0XHRcdC8vIFJlbW92ZSBhbnkgcmVtYWluaW5nIG5vZGVzXG5cdFx0XHRcdGVsZW0udGV4dENvbnRlbnQgPSBcIlwiO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdGNsb25lOiBmdW5jdGlvbiggZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0ZGF0YUFuZEV2ZW50cyA9IGRhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGZhbHNlIDogZGF0YUFuZEV2ZW50cztcblx0XHRkZWVwRGF0YUFuZEV2ZW50cyA9IGRlZXBEYXRhQW5kRXZlbnRzID09IG51bGwgPyBkYXRhQW5kRXZlbnRzIDogZGVlcERhdGFBbmRFdmVudHM7XG5cblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5jbG9uZSggdGhpcywgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKTtcblx0XHR9ICk7XG5cdH0sXG5cblx0aHRtbDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBlbGVtID0gdGhpc1sgMCBdIHx8IHt9LFxuXHRcdFx0XHRpID0gMCxcblx0XHRcdFx0bCA9IHRoaXMubGVuZ3RoO1xuXG5cdFx0XHRpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0cmV0dXJuIGVsZW0uaW5uZXJIVE1MO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZWUgaWYgd2UgY2FuIHRha2UgYSBzaG9ydGN1dCBhbmQganVzdCB1c2UgaW5uZXJIVE1MXG5cdFx0XHRpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhcm5vSW5uZXJodG1sLnRlc3QoIHZhbHVlICkgJiZcblx0XHRcdFx0IXdyYXBNYXBbICggcnRhZ05hbWUuZXhlYyggdmFsdWUgKSB8fCBbIFwiXCIsIFwiXCIgXSApWyAxIF0udG9Mb3dlckNhc2UoKSBdICkge1xuXG5cdFx0XHRcdHZhbHVlID0galF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIHZhbHVlICk7XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0XHRlbGVtID0gdGhpc1sgaSBdIHx8IHt9O1xuXG5cdFx0XHRcdFx0XHQvLyBSZW1vdmUgZWxlbWVudCBub2RlcyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3Ncblx0XHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBmYWxzZSApICk7XG5cdFx0XHRcdFx0XHRcdGVsZW0uaW5uZXJIVE1MID0gdmFsdWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0ZWxlbSA9IDA7XG5cblx0XHRcdFx0Ly8gSWYgdXNpbmcgaW5uZXJIVE1MIHRocm93cyBhbiBleGNlcHRpb24sIHVzZSB0aGUgZmFsbGJhY2sgbWV0aG9kXG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge31cblx0XHRcdH1cblxuXHRcdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0XHR0aGlzLmVtcHR5KCkuYXBwZW5kKCB2YWx1ZSApO1xuXHRcdFx0fVxuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH0sXG5cblx0cmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBpZ25vcmVkID0gW107XG5cblx0XHQvLyBNYWtlIHRoZSBjaGFuZ2VzLCByZXBsYWNpbmcgZWFjaCBub24taWdub3JlZCBjb250ZXh0IGVsZW1lbnQgd2l0aCB0aGUgbmV3IGNvbnRlbnRcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlO1xuXG5cdFx0XHRpZiAoIGpRdWVyeS5pbkFycmF5KCB0aGlzLCBpZ25vcmVkICkgPCAwICkge1xuXHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIHRoaXMgKSApO1xuXHRcdFx0XHRpZiAoIHBhcmVudCApIHtcblx0XHRcdFx0XHRwYXJlbnQucmVwbGFjZUNoaWxkKCBlbGVtLCB0aGlzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEZvcmNlIGNhbGxiYWNrIGludm9jYXRpb25cblx0XHR9LCBpZ25vcmVkICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goIHtcblx0YXBwZW5kVG86IFwiYXBwZW5kXCIsXG5cdHByZXBlbmRUbzogXCJwcmVwZW5kXCIsXG5cdGluc2VydEJlZm9yZTogXCJiZWZvcmVcIixcblx0aW5zZXJ0QWZ0ZXI6IFwiYWZ0ZXJcIixcblx0cmVwbGFjZUFsbDogXCJyZXBsYWNlV2l0aFwiXG59LCBmdW5jdGlvbiggbmFtZSwgb3JpZ2luYWwgKSB7XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBlbGVtcyxcblx0XHRcdHJldCA9IFtdLFxuXHRcdFx0aW5zZXJ0ID0galF1ZXJ5KCBzZWxlY3RvciApLFxuXHRcdFx0bGFzdCA9IGluc2VydC5sZW5ndGggLSAxLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7IGkgPD0gbGFzdDsgaSsrICkge1xuXHRcdFx0ZWxlbXMgPSBpID09PSBsYXN0ID8gdGhpcyA6IHRoaXMuY2xvbmUoIHRydWUgKTtcblx0XHRcdGpRdWVyeSggaW5zZXJ0WyBpIF0gKVsgb3JpZ2luYWwgXSggZWxlbXMgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogUXRXZWJLaXRcblx0XHRcdC8vIC5nZXQoKSBiZWNhdXNlIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Ncblx0XHRcdHB1c2guYXBwbHkoIHJldCwgZWxlbXMuZ2V0KCkgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCApO1xuXHR9O1xufSApO1xuXG5cbnZhciBpZnJhbWUsXG5cdGVsZW1kaXNwbGF5ID0ge1xuXG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveFxuXHRcdC8vIFdlIGhhdmUgdG8gcHJlLWRlZmluZSB0aGVzZSB2YWx1ZXMgZm9yIEZGICgjMTAyMjcpXG5cdFx0SFRNTDogXCJibG9ja1wiLFxuXHRcdEJPRFk6IFwiYmxvY2tcIlxuXHR9O1xuXG4vKipcbiAqIFJldHJpZXZlIHRoZSBhY3R1YWwgZGlzcGxheSBvZiBhIGVsZW1lbnRcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIG5vZGVOYW1lIG9mIHRoZSBlbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gZG9jIERvY3VtZW50IG9iamVjdFxuICovXG5cbi8vIENhbGxlZCBvbmx5IGZyb20gd2l0aGluIGRlZmF1bHREaXNwbGF5XG5mdW5jdGlvbiBhY3R1YWxEaXNwbGF5KCBuYW1lLCBkb2MgKSB7XG5cdHZhciBlbGVtID0galF1ZXJ5KCBkb2MuY3JlYXRlRWxlbWVudCggbmFtZSApICkuYXBwZW5kVG8oIGRvYy5ib2R5ICksXG5cblx0XHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbVsgMCBdLCBcImRpc3BsYXlcIiApO1xuXG5cdC8vIFdlIGRvbid0IGhhdmUgYW55IGRhdGEgc3RvcmVkIG9uIHRoZSBlbGVtZW50LFxuXHQvLyBzbyB1c2UgXCJkZXRhY2hcIiBtZXRob2QgYXMgZmFzdCB3YXkgdG8gZ2V0IHJpZCBvZiB0aGUgZWxlbWVudFxuXHRlbGVtLmRldGFjaCgpO1xuXG5cdHJldHVybiBkaXNwbGF5O1xufVxuXG4vKipcbiAqIFRyeSB0byBkZXRlcm1pbmUgdGhlIGRlZmF1bHQgZGlzcGxheSB2YWx1ZSBvZiBhbiBlbGVtZW50XG4gKiBAcGFyYW0ge1N0cmluZ30gbm9kZU5hbWVcbiAqL1xuZnVuY3Rpb24gZGVmYXVsdERpc3BsYXkoIG5vZGVOYW1lICkge1xuXHR2YXIgZG9jID0gZG9jdW1lbnQsXG5cdFx0ZGlzcGxheSA9IGVsZW1kaXNwbGF5WyBub2RlTmFtZSBdO1xuXG5cdGlmICggIWRpc3BsYXkgKSB7XG5cdFx0ZGlzcGxheSA9IGFjdHVhbERpc3BsYXkoIG5vZGVOYW1lLCBkb2MgKTtcblxuXHRcdC8vIElmIHRoZSBzaW1wbGUgd2F5IGZhaWxzLCByZWFkIGZyb20gaW5zaWRlIGFuIGlmcmFtZVxuXHRcdGlmICggZGlzcGxheSA9PT0gXCJub25lXCIgfHwgIWRpc3BsYXkgKSB7XG5cblx0XHRcdC8vIFVzZSB0aGUgYWxyZWFkeS1jcmVhdGVkIGlmcmFtZSBpZiBwb3NzaWJsZVxuXHRcdFx0aWZyYW1lID0gKCBpZnJhbWUgfHwgalF1ZXJ5KCBcIjxpZnJhbWUgZnJhbWVib3JkZXI9JzAnIHdpZHRoPScwJyBoZWlnaHQ9JzAnLz5cIiApIClcblx0XHRcdFx0LmFwcGVuZFRvKCBkb2MuZG9jdW1lbnRFbGVtZW50ICk7XG5cblx0XHRcdC8vIEFsd2F5cyB3cml0ZSBhIG5ldyBIVE1MIHNrZWxldG9uIHNvIFdlYmtpdCBhbmQgRmlyZWZveCBkb24ndCBjaG9rZSBvbiByZXVzZVxuXHRcdFx0ZG9jID0gaWZyYW1lWyAwIF0uY29udGVudERvY3VtZW50O1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRVxuXHRcdFx0ZG9jLndyaXRlKCk7XG5cdFx0XHRkb2MuY2xvc2UoKTtcblxuXHRcdFx0ZGlzcGxheSA9IGFjdHVhbERpc3BsYXkoIG5vZGVOYW1lLCBkb2MgKTtcblx0XHRcdGlmcmFtZS5kZXRhY2goKTtcblx0XHR9XG5cblx0XHQvLyBTdG9yZSB0aGUgY29ycmVjdCBkZWZhdWx0IGRpc3BsYXlcblx0XHRlbGVtZGlzcGxheVsgbm9kZU5hbWUgXSA9IGRpc3BsYXk7XG5cdH1cblxuXHRyZXR1cm4gZGlzcGxheTtcbn1cbnZhciBybWFyZ2luID0gKCAvXm1hcmdpbi8gKTtcblxudmFyIHJudW1ub25weCA9IG5ldyBSZWdFeHAoIFwiXihcIiArIHBudW0gKyBcIikoPyFweClbYS16JV0rJFwiLCBcImlcIiApO1xuXG52YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRTw9MTErLCBGaXJlZm94PD0zMCsgKCMxNTA5OCwgIzE0MTUwKVxuXHRcdC8vIElFIHRocm93cyBvbiBlbGVtZW50cyBjcmVhdGVkIGluIHBvcHVwc1xuXHRcdC8vIEZGIG1lYW53aGlsZSB0aHJvd3Mgb24gZnJhbWUgZWxlbWVudHMgdGhyb3VnaCBcImRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGVcIlxuXHRcdHZhciB2aWV3ID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuXG5cdFx0aWYgKCAhdmlldyB8fCAhdmlldy5vcGVuZXIgKSB7XG5cdFx0XHR2aWV3ID0gd2luZG93O1xuXHRcdH1cblxuXHRcdHJldHVybiB2aWV3LmdldENvbXB1dGVkU3R5bGUoIGVsZW0gKTtcblx0fTtcblxudmFyIHN3YXAgPSBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgY2FsbGJhY2ssIGFyZ3MgKSB7XG5cdHZhciByZXQsIG5hbWUsXG5cdFx0b2xkID0ge307XG5cblx0Ly8gUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZXMsIGFuZCBpbnNlcnQgdGhlIG5ldyBvbmVzXG5cdGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHtcblx0XHRvbGRbIG5hbWUgXSA9IGVsZW0uc3R5bGVbIG5hbWUgXTtcblx0XHRlbGVtLnN0eWxlWyBuYW1lIF0gPSBvcHRpb25zWyBuYW1lIF07XG5cdH1cblxuXHRyZXQgPSBjYWxsYmFjay5hcHBseSggZWxlbSwgYXJncyB8fCBbXSApO1xuXG5cdC8vIFJldmVydCB0aGUgb2xkIHZhbHVlc1xuXHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0ZWxlbS5zdHlsZVsgbmFtZSBdID0gb2xkWyBuYW1lIF07XG5cdH1cblxuXHRyZXR1cm4gcmV0O1xufTtcblxuXG52YXIgZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG5cblxuKCBmdW5jdGlvbigpIHtcblx0dmFyIHBpeGVsUG9zaXRpb25WYWwsIGJveFNpemluZ1JlbGlhYmxlVmFsLCBwaXhlbE1hcmdpblJpZ2h0VmFsLCByZWxpYWJsZU1hcmdpbkxlZnRWYWwsXG5cdFx0Y29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApLFxuXHRcdGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKTtcblxuXHQvLyBGaW5pc2ggZWFybHkgaW4gbGltaXRlZCAobm9uLWJyb3dzZXIpIGVudmlyb25tZW50c1xuXHRpZiAoICFkaXYuc3R5bGUgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gU3VwcG9ydDogSUU5LTExK1xuXHQvLyBTdHlsZSBvZiBjbG9uZWQgZWxlbWVudCBhZmZlY3RzIHNvdXJjZSBlbGVtZW50IGNsb25lZCAoIzg5MDgpXG5cdGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9IFwiY29udGVudC1ib3hcIjtcblx0ZGl2LmNsb25lTm9kZSggdHJ1ZSApLnN0eWxlLmJhY2tncm91bmRDbGlwID0gXCJcIjtcblx0c3VwcG9ydC5jbGVhckNsb25lU3R5bGUgPSBkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPT09IFwiY29udGVudC1ib3hcIjtcblxuXHRjb250YWluZXIuc3R5bGUuY3NzVGV4dCA9IFwiYm9yZGVyOjA7d2lkdGg6OHB4O2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweDtcIiArXG5cdFx0XCJwYWRkaW5nOjA7bWFyZ2luLXRvcDoxcHg7cG9zaXRpb246YWJzb2x1dGVcIjtcblx0Y29udGFpbmVyLmFwcGVuZENoaWxkKCBkaXYgKTtcblxuXHQvLyBFeGVjdXRpbmcgYm90aCBwaXhlbFBvc2l0aW9uICYgYm94U2l6aW5nUmVsaWFibGUgdGVzdHMgcmVxdWlyZSBvbmx5IG9uZSBsYXlvdXRcblx0Ly8gc28gdGhleSdyZSBleGVjdXRlZCBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgdGhlIHNlY29uZCBjb21wdXRhdGlvbi5cblx0ZnVuY3Rpb24gY29tcHV0ZVN0eWxlVGVzdHMoKSB7XG5cdFx0ZGl2LnN0eWxlLmNzc1RleHQgPVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94PDI5LCBBbmRyb2lkIDIuM1xuXHRcdFx0Ly8gVmVuZG9yLXByZWZpeCBib3gtc2l6aW5nXG5cdFx0XHRcIi13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtcIiArXG5cdFx0XHRcInBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7XCIgK1xuXHRcdFx0XCJtYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O1wiICtcblx0XHRcdFwidG9wOjElO3dpZHRoOjUwJVwiO1xuXHRcdGRpdi5pbm5lckhUTUwgPSBcIlwiO1xuXHRcdGRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCggY29udGFpbmVyICk7XG5cblx0XHR2YXIgZGl2U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggZGl2ICk7XG5cdFx0cGl4ZWxQb3NpdGlvblZhbCA9IGRpdlN0eWxlLnRvcCAhPT0gXCIxJVwiO1xuXHRcdHJlbGlhYmxlTWFyZ2luTGVmdFZhbCA9IGRpdlN0eWxlLm1hcmdpbkxlZnQgPT09IFwiMnB4XCI7XG5cdFx0Ym94U2l6aW5nUmVsaWFibGVWYWwgPSBkaXZTdHlsZS53aWR0aCA9PT0gXCI0cHhcIjtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHlcblx0XHQvLyBTb21lIHN0eWxlcyBjb21lIGJhY2sgd2l0aCBwZXJjZW50YWdlIHZhbHVlcywgZXZlbiB0aG91Z2ggdGhleSBzaG91bGRuJ3Rcblx0XHRkaXYuc3R5bGUubWFyZ2luUmlnaHQgPSBcIjUwJVwiO1xuXHRcdHBpeGVsTWFyZ2luUmlnaHRWYWwgPSBkaXZTdHlsZS5tYXJnaW5SaWdodCA9PT0gXCI0cHhcIjtcblxuXHRcdGRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZCggY29udGFpbmVyICk7XG5cdH1cblxuXHRqUXVlcnkuZXh0ZW5kKCBzdXBwb3J0LCB7XG5cdFx0cGl4ZWxQb3NpdGlvbjogZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIFRoaXMgdGVzdCBpcyBleGVjdXRlZCBvbmx5IG9uY2UgYnV0IHdlIHN0aWxsIGRvIG1lbW9pemluZ1xuXHRcdFx0Ly8gc2luY2Ugd2UgY2FuIHVzZSB0aGUgYm94U2l6aW5nUmVsaWFibGUgcHJlLWNvbXB1dGluZy5cblx0XHRcdC8vIE5vIG5lZWQgdG8gY2hlY2sgaWYgdGhlIHRlc3Qgd2FzIGFscmVhZHkgcGVyZm9ybWVkLCB0aG91Z2guXG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHBpeGVsUG9zaXRpb25WYWw7XG5cdFx0fSxcblx0XHRib3hTaXppbmdSZWxpYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGJveFNpemluZ1JlbGlhYmxlVmFsID09IG51bGwgKSB7XG5cdFx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYm94U2l6aW5nUmVsaWFibGVWYWw7XG5cdFx0fSxcblx0XHRwaXhlbE1hcmdpblJpZ2h0OiBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAtNC4zXG5cdFx0XHQvLyBXZSdyZSBjaGVja2luZyBmb3IgYm94U2l6aW5nUmVsaWFibGVWYWwgaGVyZSBpbnN0ZWFkIG9mIHBpeGVsTWFyZ2luUmlnaHRWYWxcblx0XHRcdC8vIHNpbmNlIHRoYXQgY29tcHJlc3NlcyBiZXR0ZXIgYW5kIHRoZXkncmUgY29tcHV0ZWQgdG9nZXRoZXIgYW55d2F5LlxuXHRcdFx0aWYgKCBib3hTaXppbmdSZWxpYWJsZVZhbCA9PSBudWxsICkge1xuXHRcdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHBpeGVsTWFyZ2luUmlnaHRWYWw7XG5cdFx0fSxcblx0XHRyZWxpYWJsZU1hcmdpbkxlZnQ6IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTggb25seSwgQW5kcm9pZCA0LjAgLSA0LjMgb25seSwgRmlyZWZveCA8PTMgLSAzN1xuXHRcdFx0aWYgKCBib3hTaXppbmdSZWxpYWJsZVZhbCA9PSBudWxsICkge1xuXHRcdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlbGlhYmxlTWFyZ2luTGVmdFZhbDtcblx0XHR9LFxuXHRcdHJlbGlhYmxlTWFyZ2luUmlnaHQ6IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDIuM1xuXHRcdFx0Ly8gQ2hlY2sgaWYgZGl2IHdpdGggZXhwbGljaXQgd2lkdGggYW5kIG5vIG1hcmdpbi1yaWdodCBpbmNvcnJlY3RseVxuXHRcdFx0Ly8gZ2V0cyBjb21wdXRlZCBtYXJnaW4tcmlnaHQgYmFzZWQgb24gd2lkdGggb2YgY29udGFpbmVyLiAoIzMzMzMpXG5cdFx0XHQvLyBXZWJLaXQgQnVnIDEzMzQzIC0gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHdyb25nIHZhbHVlIGZvciBtYXJnaW4tcmlnaHRcblx0XHRcdC8vIFRoaXMgc3VwcG9ydCBmdW5jdGlvbiBpcyBvbmx5IGV4ZWN1dGVkIG9uY2Ugc28gbm8gbWVtb2l6aW5nIGlzIG5lZWRlZC5cblx0XHRcdHZhciByZXQsXG5cdFx0XHRcdG1hcmdpbkRpdiA9IGRpdi5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICk7XG5cblx0XHRcdC8vIFJlc2V0IENTUzogYm94LXNpemluZzsgZGlzcGxheTsgbWFyZ2luOyBib3JkZXI7IHBhZGRpbmdcblx0XHRcdG1hcmdpbkRpdi5zdHlsZS5jc3NUZXh0ID0gZGl2LnN0eWxlLmNzc1RleHQgPVxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zXG5cdFx0XHRcdC8vIFZlbmRvci1wcmVmaXggYm94LXNpemluZ1xuXHRcdFx0XHRcIi13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O1wiICtcblx0XHRcdFx0XCJkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MFwiO1xuXHRcdFx0bWFyZ2luRGl2LnN0eWxlLm1hcmdpblJpZ2h0ID0gbWFyZ2luRGl2LnN0eWxlLndpZHRoID0gXCIwXCI7XG5cdFx0XHRkaXYuc3R5bGUud2lkdGggPSBcIjFweFwiO1xuXHRcdFx0ZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKCBjb250YWluZXIgKTtcblxuXHRcdFx0cmV0ID0gIXBhcnNlRmxvYXQoIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBtYXJnaW5EaXYgKS5tYXJnaW5SaWdodCApO1xuXG5cdFx0XHRkb2N1bWVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoIGNvbnRhaW5lciApO1xuXHRcdFx0ZGl2LnJlbW92ZUNoaWxkKCBtYXJnaW5EaXYgKTtcblxuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9XG5cdH0gKTtcbn0gKSgpO1xuXG5cbmZ1bmN0aW9uIGN1ckNTUyggZWxlbSwgbmFtZSwgY29tcHV0ZWQgKSB7XG5cdHZhciB3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoLCByZXQsXG5cdFx0c3R5bGUgPSBlbGVtLnN0eWxlO1xuXG5cdGNvbXB1dGVkID0gY29tcHV0ZWQgfHwgZ2V0U3R5bGVzKCBlbGVtICk7XG5cdHJldCA9IGNvbXB1dGVkID8gY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSggbmFtZSApIHx8IGNvbXB1dGVkWyBuYW1lIF0gOiB1bmRlZmluZWQ7XG5cblx0Ly8gU3VwcG9ydDogT3BlcmEgMTIuMXggb25seVxuXHQvLyBGYWxsIGJhY2sgdG8gc3R5bGUgZXZlbiB3aXRob3V0IGNvbXB1dGVkXG5cdC8vIGNvbXB1dGVkIGlzIHVuZGVmaW5lZCBmb3IgZWxlbXMgb24gZG9jdW1lbnQgZnJhZ21lbnRzXG5cdGlmICggKCByZXQgPT09IFwiXCIgfHwgcmV0ID09PSB1bmRlZmluZWQgKSAmJiAhalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKSApIHtcblx0XHRyZXQgPSBqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUgKTtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFOVxuXHQvLyBnZXRQcm9wZXJ0eVZhbHVlIGlzIG9ubHkgbmVlZGVkIGZvciAuY3NzKCdmaWx0ZXInKSAoIzEyNTM3KVxuXHRpZiAoIGNvbXB1dGVkICkge1xuXG5cdFx0Ly8gQSB0cmlidXRlIHRvIHRoZSBcImF3ZXNvbWUgaGFjayBieSBEZWFuIEVkd2FyZHNcIlxuXHRcdC8vIEFuZHJvaWQgQnJvd3NlciByZXR1cm5zIHBlcmNlbnRhZ2UgZm9yIHNvbWUgdmFsdWVzLFxuXHRcdC8vIGJ1dCB3aWR0aCBzZWVtcyB0byBiZSByZWxpYWJseSBwaXhlbHMuXG5cdFx0Ly8gVGhpcyBpcyBhZ2FpbnN0IHRoZSBDU1NPTSBkcmFmdCBzcGVjOlxuXHRcdC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNyZXNvbHZlZC12YWx1ZXNcblx0XHRpZiAoICFzdXBwb3J0LnBpeGVsTWFyZ2luUmlnaHQoKSAmJiBybnVtbm9ucHgudGVzdCggcmV0ICkgJiYgcm1hcmdpbi50ZXN0KCBuYW1lICkgKSB7XG5cblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBvcmlnaW5hbCB2YWx1ZXNcblx0XHRcdHdpZHRoID0gc3R5bGUud2lkdGg7XG5cdFx0XHRtaW5XaWR0aCA9IHN0eWxlLm1pbldpZHRoO1xuXHRcdFx0bWF4V2lkdGggPSBzdHlsZS5tYXhXaWR0aDtcblxuXHRcdFx0Ly8gUHV0IGluIHRoZSBuZXcgdmFsdWVzIHRvIGdldCBhIGNvbXB1dGVkIHZhbHVlIG91dFxuXHRcdFx0c3R5bGUubWluV2lkdGggPSBzdHlsZS5tYXhXaWR0aCA9IHN0eWxlLndpZHRoID0gcmV0O1xuXHRcdFx0cmV0ID0gY29tcHV0ZWQud2lkdGg7XG5cblx0XHRcdC8vIFJldmVydCB0aGUgY2hhbmdlZCB2YWx1ZXNcblx0XHRcdHN0eWxlLndpZHRoID0gd2lkdGg7XG5cdFx0XHRzdHlsZS5taW5XaWR0aCA9IG1pbldpZHRoO1xuXHRcdFx0c3R5bGUubWF4V2lkdGggPSBtYXhXaWR0aDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmV0ICE9PSB1bmRlZmluZWQgP1xuXG5cdFx0Ly8gU3VwcG9ydDogSUU5LTExK1xuXHRcdC8vIElFIHJldHVybnMgekluZGV4IHZhbHVlIGFzIGFuIGludGVnZXIuXG5cdFx0cmV0ICsgXCJcIiA6XG5cdFx0cmV0O1xufVxuXG5cbmZ1bmN0aW9uIGFkZEdldEhvb2tJZiggY29uZGl0aW9uRm4sIGhvb2tGbiApIHtcblxuXHQvLyBEZWZpbmUgdGhlIGhvb2ssIHdlJ2xsIGNoZWNrIG9uIHRoZSBmaXJzdCBydW4gaWYgaXQncyByZWFsbHkgbmVlZGVkLlxuXHRyZXR1cm4ge1xuXHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGNvbmRpdGlvbkZuKCkgKSB7XG5cblx0XHRcdFx0Ly8gSG9vayBub3QgbmVlZGVkIChvciBpdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgaXQgZHVlXG5cdFx0XHRcdC8vIHRvIG1pc3NpbmcgZGVwZW5kZW5jeSksIHJlbW92ZSBpdC5cblx0XHRcdFx0ZGVsZXRlIHRoaXMuZ2V0O1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhvb2sgbmVlZGVkOyByZWRlZmluZSBpdCBzbyB0aGF0IHRoZSBzdXBwb3J0IHRlc3QgaXMgbm90IGV4ZWN1dGVkIGFnYWluLlxuXHRcdFx0cmV0dXJuICggdGhpcy5nZXQgPSBob29rRm4gKS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0fVxuXHR9O1xufVxuXG5cbnZhclxuXG5cdC8vIFN3YXBwYWJsZSBpZiBkaXNwbGF5IGlzIG5vbmUgb3Igc3RhcnRzIHdpdGggdGFibGVcblx0Ly8gZXhjZXB0IFwidGFibGVcIiwgXCJ0YWJsZS1jZWxsXCIsIG9yIFwidGFibGUtY2FwdGlvblwiXG5cdC8vIFNlZSBoZXJlIGZvciBkaXNwbGF5IHZhbHVlczogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MvZGlzcGxheVxuXHRyZGlzcGxheXN3YXAgPSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sXG5cblx0Y3NzU2hvdyA9IHsgcG9zaXRpb246IFwiYWJzb2x1dGVcIiwgdmlzaWJpbGl0eTogXCJoaWRkZW5cIiwgZGlzcGxheTogXCJibG9ja1wiIH0sXG5cdGNzc05vcm1hbFRyYW5zZm9ybSA9IHtcblx0XHRsZXR0ZXJTcGFjaW5nOiBcIjBcIixcblx0XHRmb250V2VpZ2h0OiBcIjQwMFwiXG5cdH0sXG5cblx0Y3NzUHJlZml4ZXMgPSBbIFwiV2Via2l0XCIsIFwiT1wiLCBcIk1velwiLCBcIm1zXCIgXSxcblx0ZW1wdHlTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKS5zdHlsZTtcblxuLy8gUmV0dXJuIGEgY3NzIHByb3BlcnR5IG1hcHBlZCB0byBhIHBvdGVudGlhbGx5IHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0eVxuZnVuY3Rpb24gdmVuZG9yUHJvcE5hbWUoIG5hbWUgKSB7XG5cblx0Ly8gU2hvcnRjdXQgZm9yIG5hbWVzIHRoYXQgYXJlIG5vdCB2ZW5kb3IgcHJlZml4ZWRcblx0aWYgKCBuYW1lIGluIGVtcHR5U3R5bGUgKSB7XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cblxuXHQvLyBDaGVjayBmb3IgdmVuZG9yIHByZWZpeGVkIG5hbWVzXG5cdHZhciBjYXBOYW1lID0gbmFtZVsgMCBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKCAxICksXG5cdFx0aSA9IGNzc1ByZWZpeGVzLmxlbmd0aDtcblxuXHR3aGlsZSAoIGktLSApIHtcblx0XHRuYW1lID0gY3NzUHJlZml4ZXNbIGkgXSArIGNhcE5hbWU7XG5cdFx0aWYgKCBuYW1lIGluIGVtcHR5U3R5bGUgKSB7XG5cdFx0XHRyZXR1cm4gbmFtZTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApIHtcblxuXHQvLyBBbnkgcmVsYXRpdmUgKCsvLSkgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuXG5cdC8vIG5vcm1hbGl6ZWQgYXQgdGhpcyBwb2ludFxuXHR2YXIgbWF0Y2hlcyA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKTtcblx0cmV0dXJuIG1hdGNoZXMgP1xuXG5cdFx0Ly8gR3VhcmQgYWdhaW5zdCB1bmRlZmluZWQgXCJzdWJ0cmFjdFwiLCBlLmcuLCB3aGVuIHVzZWQgYXMgaW4gY3NzSG9va3Ncblx0XHRNYXRoLm1heCggMCwgbWF0Y2hlc1sgMiBdIC0gKCBzdWJ0cmFjdCB8fCAwICkgKSArICggbWF0Y2hlc1sgMyBdIHx8IFwicHhcIiApIDpcblx0XHR2YWx1ZTtcbn1cblxuZnVuY3Rpb24gYXVnbWVudFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhLCBpc0JvcmRlckJveCwgc3R5bGVzICkge1xuXHR2YXIgaSA9IGV4dHJhID09PSAoIGlzQm9yZGVyQm94ID8gXCJib3JkZXJcIiA6IFwiY29udGVudFwiICkgP1xuXG5cdFx0Ly8gSWYgd2UgYWxyZWFkeSBoYXZlIHRoZSByaWdodCBtZWFzdXJlbWVudCwgYXZvaWQgYXVnbWVudGF0aW9uXG5cdFx0NCA6XG5cblx0XHQvLyBPdGhlcndpc2UgaW5pdGlhbGl6ZSBmb3IgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBwcm9wZXJ0aWVzXG5cdFx0bmFtZSA9PT0gXCJ3aWR0aFwiID8gMSA6IDAsXG5cblx0XHR2YWwgPSAwO1xuXG5cdGZvciAoIDsgaSA8IDQ7IGkgKz0gMiApIHtcblxuXHRcdC8vIEJvdGggYm94IG1vZGVscyBleGNsdWRlIG1hcmdpbiwgc28gYWRkIGl0IGlmIHdlIHdhbnQgaXRcblx0XHRpZiAoIGV4dHJhID09PSBcIm1hcmdpblwiICkge1xuXHRcdFx0dmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sIGV4dHJhICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdH1cblxuXHRcdGlmICggaXNCb3JkZXJCb3ggKSB7XG5cblx0XHRcdC8vIGJvcmRlci1ib3ggaW5jbHVkZXMgcGFkZGluZywgc28gcmVtb3ZlIGl0IGlmIHdlIHdhbnQgY29udGVudFxuXHRcdFx0aWYgKCBleHRyYSA9PT0gXCJjb250ZW50XCIgKSB7XG5cdFx0XHRcdHZhbCAtPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBhZGRpbmdcIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgYm9yZGVyIG5vciBtYXJnaW4sIHNvIHJlbW92ZSBib3JkZXJcblx0XHRcdGlmICggZXh0cmEgIT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHRcdHZhbCAtPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgY3NzRXhwYW5kWyBpIF0gKyBcIldpZHRoXCIsIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIEF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGNvbnRlbnQsIHNvIGFkZCBwYWRkaW5nXG5cdFx0XHR2YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJwYWRkaW5nXCIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cblx0XHRcdC8vIEF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGNvbnRlbnQgbm9yIHBhZGRpbmcsIHNvIGFkZCBib3JkZXJcblx0XHRcdGlmICggZXh0cmEgIT09IFwicGFkZGluZ1wiICkge1xuXHRcdFx0XHR2YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdmFsO1xufVxuXG5mdW5jdGlvbiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSApIHtcblxuXHQvLyBTdGFydCB3aXRoIG9mZnNldCBwcm9wZXJ0eSwgd2hpY2ggaXMgZXF1aXZhbGVudCB0byB0aGUgYm9yZGVyLWJveCB2YWx1ZVxuXHR2YXIgdmFsdWVJc0JvcmRlckJveCA9IHRydWUsXG5cdFx0dmFsID0gbmFtZSA9PT0gXCJ3aWR0aFwiID8gZWxlbS5vZmZzZXRXaWR0aCA6IGVsZW0ub2Zmc2V0SGVpZ2h0LFxuXHRcdHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApLFxuXHRcdGlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIjtcblxuXHQvLyBTb21lIG5vbi1odG1sIGVsZW1lbnRzIHJldHVybiB1bmRlZmluZWQgZm9yIG9mZnNldFdpZHRoLCBzbyBjaGVjayBmb3IgbnVsbC91bmRlZmluZWRcblx0Ly8gc3ZnIC0gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5Mjg1XG5cdC8vIE1hdGhNTCAtIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MTY2OFxuXHRpZiAoIHZhbCA8PSAwIHx8IHZhbCA9PSBudWxsICkge1xuXG5cdFx0Ly8gRmFsbCBiYWNrIHRvIGNvbXB1dGVkIHRoZW4gdW5jb21wdXRlZCBjc3MgaWYgbmVjZXNzYXJ5XG5cdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTtcblx0XHRpZiAoIHZhbCA8IDAgfHwgdmFsID09IG51bGwgKSB7XG5cdFx0XHR2YWwgPSBlbGVtLnN0eWxlWyBuYW1lIF07XG5cdFx0fVxuXG5cdFx0Ly8gQ29tcHV0ZWQgdW5pdCBpcyBub3QgcGl4ZWxzLiBTdG9wIGhlcmUgYW5kIHJldHVybi5cblx0XHRpZiAoIHJudW1ub25weC50ZXN0KCB2YWwgKSApIHtcblx0XHRcdHJldHVybiB2YWw7XG5cdFx0fVxuXG5cdFx0Ly8gQ2hlY2sgZm9yIHN0eWxlIGluIGNhc2UgYSBicm93c2VyIHdoaWNoIHJldHVybnMgdW5yZWxpYWJsZSB2YWx1ZXNcblx0XHQvLyBmb3IgZ2V0Q29tcHV0ZWRTdHlsZSBzaWxlbnRseSBmYWxscyBiYWNrIHRvIHRoZSByZWxpYWJsZSBlbGVtLnN0eWxlXG5cdFx0dmFsdWVJc0JvcmRlckJveCA9IGlzQm9yZGVyQm94ICYmXG5cdFx0XHQoIHN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUoKSB8fCB2YWwgPT09IGVsZW0uc3R5bGVbIG5hbWUgXSApO1xuXG5cdFx0Ly8gTm9ybWFsaXplIFwiXCIsIGF1dG8sIGFuZCBwcmVwYXJlIGZvciBleHRyYVxuXHRcdHZhbCA9IHBhcnNlRmxvYXQoIHZhbCApIHx8IDA7XG5cdH1cblxuXHQvLyBVc2UgdGhlIGFjdGl2ZSBib3gtc2l6aW5nIG1vZGVsIHRvIGFkZC9zdWJ0cmFjdCBpcnJlbGV2YW50IHN0eWxlc1xuXHRyZXR1cm4gKCB2YWwgK1xuXHRcdGF1Z21lbnRXaWR0aE9ySGVpZ2h0KFxuXHRcdFx0ZWxlbSxcblx0XHRcdG5hbWUsXG5cdFx0XHRleHRyYSB8fCAoIGlzQm9yZGVyQm94ID8gXCJib3JkZXJcIiA6IFwiY29udGVudFwiICksXG5cdFx0XHR2YWx1ZUlzQm9yZGVyQm94LFxuXHRcdFx0c3R5bGVzXG5cdFx0KVxuXHQpICsgXCJweFwiO1xufVxuXG5mdW5jdGlvbiBzaG93SGlkZSggZWxlbWVudHMsIHNob3cgKSB7XG5cdHZhciBkaXNwbGF5LCBlbGVtLCBoaWRkZW4sXG5cdFx0dmFsdWVzID0gW10sXG5cdFx0aW5kZXggPSAwLFxuXHRcdGxlbmd0aCA9IGVsZW1lbnRzLmxlbmd0aDtcblxuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTtcblx0XHRpZiAoICFlbGVtLnN0eWxlICkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0dmFsdWVzWyBpbmRleCBdID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcIm9sZGRpc3BsYXlcIiApO1xuXHRcdGRpc3BsYXkgPSBlbGVtLnN0eWxlLmRpc3BsYXk7XG5cdFx0aWYgKCBzaG93ICkge1xuXG5cdFx0XHQvLyBSZXNldCB0aGUgaW5saW5lIGRpc3BsYXkgb2YgdGhpcyBlbGVtZW50IHRvIGxlYXJuIGlmIGl0IGlzXG5cdFx0XHQvLyBiZWluZyBoaWRkZW4gYnkgY2FzY2FkZWQgcnVsZXMgb3Igbm90XG5cdFx0XHRpZiAoICF2YWx1ZXNbIGluZGV4IF0gJiYgZGlzcGxheSA9PT0gXCJub25lXCIgKSB7XG5cdFx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9IFwiXCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCBlbGVtZW50cyB3aGljaCBoYXZlIGJlZW4gb3ZlcnJpZGRlbiB3aXRoIGRpc3BsYXk6IG5vbmVcblx0XHRcdC8vIGluIGEgc3R5bGVzaGVldCB0byB3aGF0ZXZlciB0aGUgZGVmYXVsdCBicm93c2VyIHN0eWxlIGlzXG5cdFx0XHQvLyBmb3Igc3VjaCBhbiBlbGVtZW50XG5cdFx0XHRpZiAoIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiAmJiBpc0hpZGRlbiggZWxlbSApICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBkYXRhUHJpdi5hY2Nlc3MoXG5cdFx0XHRcdFx0ZWxlbSxcblx0XHRcdFx0XHRcIm9sZGRpc3BsYXlcIixcblx0XHRcdFx0XHRkZWZhdWx0RGlzcGxheSggZWxlbS5ub2RlTmFtZSApXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGhpZGRlbiA9IGlzSGlkZGVuKCBlbGVtICk7XG5cblx0XHRcdGlmICggZGlzcGxheSAhPT0gXCJub25lXCIgfHwgIWhpZGRlbiApIHtcblx0XHRcdFx0ZGF0YVByaXYuc2V0KFxuXHRcdFx0XHRcdGVsZW0sXG5cdFx0XHRcdFx0XCJvbGRkaXNwbGF5XCIsXG5cdFx0XHRcdFx0aGlkZGVuID8gZGlzcGxheSA6IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiIClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBTZXQgdGhlIGRpc3BsYXkgb2YgbW9zdCBvZiB0aGUgZWxlbWVudHMgaW4gYSBzZWNvbmQgbG9vcFxuXHQvLyB0byBhdm9pZCB0aGUgY29uc3RhbnQgcmVmbG93XG5cdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0ZWxlbSA9IGVsZW1lbnRzWyBpbmRleCBdO1xuXHRcdGlmICggIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cdFx0aWYgKCAhc2hvdyB8fCBlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwibm9uZVwiIHx8IGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiApIHtcblx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9IHNob3cgPyB2YWx1ZXNbIGluZGV4IF0gfHwgXCJcIiA6IFwibm9uZVwiO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50cztcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIEFkZCBpbiBzdHlsZSBwcm9wZXJ0eSBob29rcyBmb3Igb3ZlcnJpZGluZyB0aGUgZGVmYXVsdFxuXHQvLyBiZWhhdmlvciBvZiBnZXR0aW5nIGFuZCBzZXR0aW5nIGEgc3R5bGUgcHJvcGVydHlcblx0Y3NzSG9va3M6IHtcblx0XHRvcGFjaXR5OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRcdFx0aWYgKCBjb21wdXRlZCApIHtcblxuXHRcdFx0XHRcdC8vIFdlIHNob3VsZCBhbHdheXMgZ2V0IGEgbnVtYmVyIGJhY2sgZnJvbSBvcGFjaXR5XG5cdFx0XHRcdFx0dmFyIHJldCA9IGN1ckNTUyggZWxlbSwgXCJvcGFjaXR5XCIgKTtcblx0XHRcdFx0XHRyZXR1cm4gcmV0ID09PSBcIlwiID8gXCIxXCIgOiByZXQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0Ly8gRG9uJ3QgYXV0b21hdGljYWxseSBhZGQgXCJweFwiIHRvIHRoZXNlIHBvc3NpYmx5LXVuaXRsZXNzIHByb3BlcnRpZXNcblx0Y3NzTnVtYmVyOiB7XG5cdFx0XCJhbmltYXRpb25JdGVyYXRpb25Db3VudFwiOiB0cnVlLFxuXHRcdFwiY29sdW1uQ291bnRcIjogdHJ1ZSxcblx0XHRcImZpbGxPcGFjaXR5XCI6IHRydWUsXG5cdFx0XCJmbGV4R3Jvd1wiOiB0cnVlLFxuXHRcdFwiZmxleFNocmlua1wiOiB0cnVlLFxuXHRcdFwiZm9udFdlaWdodFwiOiB0cnVlLFxuXHRcdFwibGluZUhlaWdodFwiOiB0cnVlLFxuXHRcdFwib3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwib3JkZXJcIjogdHJ1ZSxcblx0XHRcIm9ycGhhbnNcIjogdHJ1ZSxcblx0XHRcIndpZG93c1wiOiB0cnVlLFxuXHRcdFwiekluZGV4XCI6IHRydWUsXG5cdFx0XCJ6b29tXCI6IHRydWVcblx0fSxcblxuXHQvLyBBZGQgaW4gcHJvcGVydGllcyB3aG9zZSBuYW1lcyB5b3Ugd2lzaCB0byBmaXggYmVmb3JlXG5cdC8vIHNldHRpbmcgb3IgZ2V0dGluZyB0aGUgdmFsdWVcblx0Y3NzUHJvcHM6IHtcblx0XHRcImZsb2F0XCI6IFwiY3NzRmxvYXRcIlxuXHR9LFxuXG5cdC8vIEdldCBhbmQgc2V0IHRoZSBzdHlsZSBwcm9wZXJ0eSBvbiBhIERPTSBOb2RlXG5cdHN0eWxlOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkge1xuXG5cdFx0Ly8gRG9uJ3Qgc2V0IHN0eWxlcyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCAhZWxlbSB8fCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggfHwgIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lXG5cdFx0dmFyIHJldCwgdHlwZSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKSxcblx0XHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRcdG5hbWUgPSBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gfHxcblx0XHRcdCggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIG9yaWdOYW1lICkgfHwgb3JpZ05hbWUgKTtcblxuXHRcdC8vIEdldHMgaG9vayBmb3IgdGhlIHByZWZpeGVkIHZlcnNpb24sIHRoZW4gdW5wcmVmaXhlZCB2ZXJzaW9uXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07XG5cblx0XHQvLyBDaGVjayBpZiB3ZSdyZSBzZXR0aW5nIGEgdmFsdWVcblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR0eXBlID0gdHlwZW9mIHZhbHVlO1xuXG5cdFx0XHQvLyBDb252ZXJ0IFwiKz1cIiBvciBcIi09XCIgdG8gcmVsYXRpdmUgbnVtYmVycyAoIzczNDUpXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwic3RyaW5nXCIgJiYgKCByZXQgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICkgKSAmJiByZXRbIDEgXSApIHtcblx0XHRcdFx0dmFsdWUgPSBhZGp1c3RDU1MoIGVsZW0sIG5hbWUsIHJldCApO1xuXG5cdFx0XHRcdC8vIEZpeGVzIGJ1ZyAjOTIzN1xuXHRcdFx0XHR0eXBlID0gXCJudW1iZXJcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHRoYXQgbnVsbCBhbmQgTmFOIHZhbHVlcyBhcmVuJ3Qgc2V0ICgjNzExNilcblx0XHRcdGlmICggdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSAhPT0gdmFsdWUgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgYSBudW1iZXIgd2FzIHBhc3NlZCBpbiwgYWRkIHRoZSB1bml0IChleGNlcHQgZm9yIGNlcnRhaW4gQ1NTIHByb3BlcnRpZXMpXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRcdHZhbHVlICs9IHJldCAmJiByZXRbIDMgXSB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIG9yaWdOYW1lIF0gPyBcIlwiIDogXCJweFwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOS0xMStcblx0XHRcdC8vIGJhY2tncm91bmQtKiBwcm9wcyBhZmZlY3Qgb3JpZ2luYWwgY2xvbmUncyB2YWx1ZXNcblx0XHRcdGlmICggIXN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlICYmIHZhbHVlID09PSBcIlwiICYmIG5hbWUuaW5kZXhPZiggXCJiYWNrZ3JvdW5kXCIgKSA9PT0gMCApIHtcblx0XHRcdFx0c3R5bGVbIG5hbWUgXSA9IFwiaW5oZXJpdFwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkLCB1c2UgdGhhdCB2YWx1ZSwgb3RoZXJ3aXNlIGp1c3Qgc2V0IHRoZSBzcGVjaWZpZWQgdmFsdWVcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoIFwic2V0XCIgaW4gaG9va3MgKSB8fFxuXHRcdFx0XHQoIHZhbHVlID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0c3R5bGVbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIG5vbi1jb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlXG5cdFx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0KCByZXQgPSBob29rcy5nZXQoIGVsZW0sIGZhbHNlLCBleHRyYSApICkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPdGhlcndpc2UganVzdCBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIHN0eWxlIG9iamVjdFxuXHRcdFx0cmV0dXJuIHN0eWxlWyBuYW1lIF07XG5cdFx0fVxuXHR9LFxuXG5cdGNzczogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGV4dHJhLCBzdHlsZXMgKSB7XG5cdFx0dmFyIHZhbCwgbnVtLCBob29rcyxcblx0XHRcdG9yaWdOYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lXG5cdFx0bmFtZSA9IGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSB8fFxuXHRcdFx0KCBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggb3JpZ05hbWUgKSB8fCBvcmlnTmFtZSApO1xuXG5cdFx0Ly8gVHJ5IHByZWZpeGVkIG5hbWUgZm9sbG93ZWQgYnkgdGhlIHVucHJlZml4ZWQgbmFtZVxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xuXG5cdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmVcblx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWwgPSBob29rcy5nZXQoIGVsZW0sIHRydWUsIGV4dHJhICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlLCBpZiBhIHdheSB0byBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGV4aXN0cywgdXNlIHRoYXRcblx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTtcblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IFwibm9ybWFsXCIgdG8gY29tcHV0ZWQgdmFsdWVcblx0XHRpZiAoIHZhbCA9PT0gXCJub3JtYWxcIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSApIHtcblx0XHRcdHZhbCA9IGNzc05vcm1hbFRyYW5zZm9ybVsgbmFtZSBdO1xuXHRcdH1cblxuXHRcdC8vIE1ha2UgbnVtZXJpYyBpZiBmb3JjZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpY1xuXHRcdGlmICggZXh0cmEgPT09IFwiXCIgfHwgZXh0cmEgKSB7XG5cdFx0XHRudW0gPSBwYXJzZUZsb2F0KCB2YWwgKTtcblx0XHRcdHJldHVybiBleHRyYSA9PT0gdHJ1ZSB8fCBpc0Zpbml0ZSggbnVtICkgPyBudW0gfHwgMCA6IHZhbDtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbDtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcImhlaWdodFwiLCBcIndpZHRoXCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBleHRyYSApIHtcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0Ly8gQ2VydGFpbiBlbGVtZW50cyBjYW4gaGF2ZSBkaW1lbnNpb24gaW5mbyBpZiB3ZSBpbnZpc2libHkgc2hvdyB0aGVtXG5cdFx0XHRcdC8vIGJ1dCBpdCBtdXN0IGhhdmUgYSBjdXJyZW50IGRpc3BsYXkgc3R5bGUgdGhhdCB3b3VsZCBiZW5lZml0XG5cdFx0XHRcdHJldHVybiByZGlzcGxheXN3YXAudGVzdCggalF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSApICYmXG5cdFx0XHRcdFx0ZWxlbS5vZmZzZXRXaWR0aCA9PT0gMCA/XG5cdFx0XHRcdFx0XHRzd2FwKCBlbGVtLCBjc3NTaG93LCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICk7XG5cdFx0XHRcdFx0XHR9ICkgOlxuXHRcdFx0XHRcdFx0Z2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIGV4dHJhICkge1xuXHRcdFx0dmFyIG1hdGNoZXMsXG5cdFx0XHRcdHN0eWxlcyA9IGV4dHJhICYmIGdldFN0eWxlcyggZWxlbSApLFxuXHRcdFx0XHRzdWJ0cmFjdCA9IGV4dHJhICYmIGF1Z21lbnRXaWR0aE9ySGVpZ2h0KFxuXHRcdFx0XHRcdGVsZW0sXG5cdFx0XHRcdFx0bmFtZSxcblx0XHRcdFx0XHRleHRyYSxcblx0XHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiYm9yZGVyLWJveFwiLFxuXHRcdFx0XHRcdHN0eWxlc1xuXHRcdFx0XHQpO1xuXG5cdFx0XHQvLyBDb252ZXJ0IHRvIHBpeGVscyBpZiB2YWx1ZSBhZGp1c3RtZW50IGlzIG5lZWRlZFxuXHRcdFx0aWYgKCBzdWJ0cmFjdCAmJiAoIG1hdGNoZXMgPSByY3NzTnVtLmV4ZWMoIHZhbHVlICkgKSAmJlxuXHRcdFx0XHQoIG1hdGNoZXNbIDMgXSB8fCBcInB4XCIgKSAhPT0gXCJweFwiICkge1xuXG5cdFx0XHRcdGVsZW0uc3R5bGVbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0XHR2YWx1ZSA9IGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgc3VidHJhY3QgKTtcblx0XHR9XG5cdH07XG59ICk7XG5cbmpRdWVyeS5jc3NIb29rcy5tYXJnaW5MZWZ0ID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnJlbGlhYmxlTWFyZ2luTGVmdCxcblx0ZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkge1xuXHRcdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0XHRyZXR1cm4gKCBwYXJzZUZsb2F0KCBjdXJDU1MoIGVsZW0sIFwibWFyZ2luTGVmdFwiICkgKSB8fFxuXHRcdFx0XHRlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLVxuXHRcdFx0XHRcdHN3YXAoIGVsZW0sIHsgbWFyZ2luTGVmdDogMCB9LCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG5cdFx0XHRcdFx0fSApXG5cdFx0XHRcdCkgKyBcInB4XCI7XG5cdFx0fVxuXHR9XG4pO1xuXG4vLyBTdXBwb3J0OiBBbmRyb2lkIDIuM1xualF1ZXJ5LmNzc0hvb2tzLm1hcmdpblJpZ2h0ID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnJlbGlhYmxlTWFyZ2luUmlnaHQsXG5cdGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0cmV0dXJuIHN3YXAoIGVsZW0sIHsgXCJkaXNwbGF5XCI6IFwiaW5saW5lLWJsb2NrXCIgfSxcblx0XHRcdFx0Y3VyQ1NTLCBbIGVsZW0sIFwibWFyZ2luUmlnaHRcIiBdICk7XG5cdFx0fVxuXHR9XG4pO1xuXG4vLyBUaGVzZSBob29rcyBhcmUgdXNlZCBieSBhbmltYXRlIHRvIGV4cGFuZCBwcm9wZXJ0aWVzXG5qUXVlcnkuZWFjaCgge1xuXHRtYXJnaW46IFwiXCIsXG5cdHBhZGRpbmc6IFwiXCIsXG5cdGJvcmRlcjogXCJXaWR0aFwiXG59LCBmdW5jdGlvbiggcHJlZml4LCBzdWZmaXggKSB7XG5cdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0gPSB7XG5cdFx0ZXhwYW5kOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgaSA9IDAsXG5cdFx0XHRcdGV4cGFuZGVkID0ge30sXG5cblx0XHRcdFx0Ly8gQXNzdW1lcyBhIHNpbmdsZSBudW1iZXIgaWYgbm90IGEgc3RyaW5nXG5cdFx0XHRcdHBhcnRzID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUuc3BsaXQoIFwiIFwiICkgOiBbIHZhbHVlIF07XG5cblx0XHRcdGZvciAoIDsgaSA8IDQ7IGkrKyApIHtcblx0XHRcdFx0ZXhwYW5kZWRbIHByZWZpeCArIGNzc0V4cGFuZFsgaSBdICsgc3VmZml4IF0gPVxuXHRcdFx0XHRcdHBhcnRzWyBpIF0gfHwgcGFydHNbIGkgLSAyIF0gfHwgcGFydHNbIDAgXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGV4cGFuZGVkO1xuXHRcdH1cblx0fTtcblxuXHRpZiAoICFybWFyZ2luLnRlc3QoIHByZWZpeCApICkge1xuXHRcdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0uc2V0ID0gc2V0UG9zaXRpdmVOdW1iZXI7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRjc3M6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgc3R5bGVzLCBsZW4sXG5cdFx0XHRcdG1hcCA9IHt9LFxuXHRcdFx0XHRpID0gMDtcblxuXHRcdFx0aWYgKCBqUXVlcnkuaXNBcnJheSggbmFtZSApICkge1xuXHRcdFx0XHRzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKTtcblx0XHRcdFx0bGVuID0gbmFtZS5sZW5ndGg7XG5cblx0XHRcdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdFx0bWFwWyBuYW1lWyBpIF0gXSA9IGpRdWVyeS5jc3MoIGVsZW0sIG5hbWVbIGkgXSwgZmFsc2UsIHN0eWxlcyApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIG1hcDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUsIHZhbHVlICkgOlxuXHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCBuYW1lICk7XG5cdFx0fSwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cdHNob3c6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzaG93SGlkZSggdGhpcywgdHJ1ZSApO1xuXHR9LFxuXHRoaWRlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMgKTtcblx0fSxcblx0dG9nZ2xlOiBmdW5jdGlvbiggc3RhdGUgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygc3RhdGUgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdFx0cmV0dXJuIHN0YXRlID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggaXNIaWRkZW4oIHRoaXMgKSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuc2hvdygpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuaGlkZSgpO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fVxufSApO1xuXG5cbmZ1bmN0aW9uIFR3ZWVuKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApIHtcblx0cmV0dXJuIG5ldyBUd2Vlbi5wcm90b3R5cGUuaW5pdCggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKTtcbn1cbmpRdWVyeS5Ud2VlbiA9IFR3ZWVuO1xuXG5Ud2Vlbi5wcm90b3R5cGUgPSB7XG5cdGNvbnN0cnVjdG9yOiBUd2Vlbixcblx0aW5pdDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkge1xuXHRcdHRoaXMuZWxlbSA9IGVsZW07XG5cdFx0dGhpcy5wcm9wID0gcHJvcDtcblx0XHR0aGlzLmVhc2luZyA9IGVhc2luZyB8fCBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0O1xuXHRcdHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cdFx0dGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKTtcblx0XHR0aGlzLmVuZCA9IGVuZDtcblx0XHR0aGlzLnVuaXQgPSB1bml0IHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApO1xuXHR9LFxuXHRjdXI6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRyZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID9cblx0XHRcdGhvb2tzLmdldCggdGhpcyApIDpcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQoIHRoaXMgKTtcblx0fSxcblx0cnVuOiBmdW5jdGlvbiggcGVyY2VudCApIHtcblx0XHR2YXIgZWFzZWQsXG5cdFx0XHRob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5kdXJhdGlvbiApIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0aGlzLmVhc2luZyBdKFxuXHRcdFx0XHRwZXJjZW50LCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKiBwZXJjZW50LCAwLCAxLCB0aGlzLm9wdGlvbnMuZHVyYXRpb25cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBwZXJjZW50O1xuXHRcdH1cblx0XHR0aGlzLm5vdyA9ICggdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5zdGVwICkge1xuXHRcdFx0dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgaG9va3Muc2V0ICkge1xuXHRcdFx0aG9va3Muc2V0KCB0aGlzICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn07XG5cblR3ZWVuLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IFR3ZWVuLnByb3RvdHlwZTtcblxuVHdlZW4ucHJvcEhvb2tzID0ge1xuXHRfZGVmYXVsdDoge1xuXHRcdGdldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdFx0dmFyIHJlc3VsdDtcblxuXHRcdFx0Ly8gVXNlIGEgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgZGlyZWN0bHkgd2hlbiBpdCBpcyBub3QgYSBET00gZWxlbWVudCxcblx0XHRcdC8vIG9yIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc3R5bGUgcHJvcGVydHkgdGhhdCBleGlzdHMuXG5cdFx0XHRpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgIT09IDEgfHxcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51bGwgJiYgdHdlZW4uZWxlbS5zdHlsZVsgdHdlZW4ucHJvcCBdID09IG51bGwgKSB7XG5cdFx0XHRcdHJldHVybiB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF07XG5cdFx0XHR9XG5cblx0XHRcdC8vIFBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nIGFzIGEgM3JkIHBhcmFtZXRlciB0byAuY3NzIHdpbGwgYXV0b21hdGljYWxseVxuXHRcdFx0Ly8gYXR0ZW1wdCBhIHBhcnNlRmxvYXQgYW5kIGZhbGxiYWNrIHRvIGEgc3RyaW5nIGlmIHRoZSBwYXJzZSBmYWlscy5cblx0XHRcdC8vIFNpbXBsZSB2YWx1ZXMgc3VjaCBhcyBcIjEwcHhcIiBhcmUgcGFyc2VkIHRvIEZsb2F0O1xuXHRcdFx0Ly8gY29tcGxleCB2YWx1ZXMgc3VjaCBhcyBcInJvdGF0ZSgxcmFkKVwiIGFyZSByZXR1cm5lZCBhcy1pcy5cblx0XHRcdHJlc3VsdCA9IGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIFwiXCIgKTtcblxuXHRcdFx0Ly8gRW1wdHkgc3RyaW5ncywgbnVsbCwgdW5kZWZpbmVkIGFuZCBcImF1dG9cIiBhcmUgY29udmVydGVkIHRvIDAuXG5cdFx0XHRyZXR1cm4gIXJlc3VsdCB8fCByZXN1bHQgPT09IFwiYXV0b1wiID8gMCA6IHJlc3VsdDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXG5cdFx0XHQvLyBVc2Ugc3RlcCBob29rIGZvciBiYWNrIGNvbXBhdC5cblx0XHRcdC8vIFVzZSBjc3NIb29rIGlmIGl0cyB0aGVyZS5cblx0XHRcdC8vIFVzZSAuc3R5bGUgaWYgYXZhaWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVydGllcyB3aGVyZSBhdmFpbGFibGUuXG5cdFx0XHRpZiAoIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0oIHR3ZWVuICk7XG5cdFx0XHR9IGVsc2UgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdCggdHdlZW4uZWxlbS5zdHlsZVsgalF1ZXJ5LmNzc1Byb3BzWyB0d2Vlbi5wcm9wIF0gXSAhPSBudWxsIHx8XG5cdFx0XHRcdFx0alF1ZXJ5LmNzc0hvb2tzWyB0d2Vlbi5wcm9wIF0gKSApIHtcblx0XHRcdFx0alF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCB0d2Vlbi5ub3cgKyB0d2Vlbi51bml0ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG4vLyBTdXBwb3J0OiBJRTlcbi8vIFBhbmljIGJhc2VkIGFwcHJvYWNoIHRvIHNldHRpbmcgdGhpbmdzIG9uIGRpc2Nvbm5lY3RlZCBub2Rlc1xuVHdlZW4ucHJvcEhvb2tzLnNjcm9sbFRvcCA9IFR3ZWVuLnByb3BIb29rcy5zY3JvbGxMZWZ0ID0ge1xuXHRzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblx0XHRpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgJiYgdHdlZW4uZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93O1xuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LmVhc2luZyA9IHtcblx0bGluZWFyOiBmdW5jdGlvbiggcCApIHtcblx0XHRyZXR1cm4gcDtcblx0fSxcblx0c3dpbmc6IGZ1bmN0aW9uKCBwICkge1xuXHRcdHJldHVybiAwLjUgLSBNYXRoLmNvcyggcCAqIE1hdGguUEkgKSAvIDI7XG5cdH0sXG5cdF9kZWZhdWx0OiBcInN3aW5nXCJcbn07XG5cbmpRdWVyeS5meCA9IFR3ZWVuLnByb3RvdHlwZS5pbml0O1xuXG4vLyBCYWNrIENvbXBhdCA8MS44IGV4dGVuc2lvbiBwb2ludFxualF1ZXJ5LmZ4LnN0ZXAgPSB7fTtcblxuXG5cblxudmFyXG5cdGZ4Tm93LCB0aW1lcklkLFxuXHRyZnh0eXBlcyA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxcblx0cnJ1biA9IC9xdWV1ZUhvb2tzJC87XG5cbi8vIEFuaW1hdGlvbnMgY3JlYXRlZCBzeW5jaHJvbm91c2x5IHdpbGwgcnVuIHN5bmNocm9ub3VzbHlcbmZ1bmN0aW9uIGNyZWF0ZUZ4Tm93KCkge1xuXHR3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0ZnhOb3cgPSB1bmRlZmluZWQ7XG5cdH0gKTtcblx0cmV0dXJuICggZnhOb3cgPSBqUXVlcnkubm93KCkgKTtcbn1cblxuLy8gR2VuZXJhdGUgcGFyYW1ldGVycyB0byBjcmVhdGUgYSBzdGFuZGFyZCBhbmltYXRpb25cbmZ1bmN0aW9uIGdlbkZ4KCB0eXBlLCBpbmNsdWRlV2lkdGggKSB7XG5cdHZhciB3aGljaCxcblx0XHRpID0gMCxcblx0XHRhdHRycyA9IHsgaGVpZ2h0OiB0eXBlIH07XG5cblx0Ly8gSWYgd2UgaW5jbHVkZSB3aWR0aCwgc3RlcCB2YWx1ZSBpcyAxIHRvIGRvIGFsbCBjc3NFeHBhbmQgdmFsdWVzLFxuXHQvLyBvdGhlcndpc2Ugc3RlcCB2YWx1ZSBpcyAyIHRvIHNraXAgb3ZlciBMZWZ0IGFuZCBSaWdodFxuXHRpbmNsdWRlV2lkdGggPSBpbmNsdWRlV2lkdGggPyAxIDogMDtcblx0Zm9yICggOyBpIDwgNCA7IGkgKz0gMiAtIGluY2x1ZGVXaWR0aCApIHtcblx0XHR3aGljaCA9IGNzc0V4cGFuZFsgaSBdO1xuXHRcdGF0dHJzWyBcIm1hcmdpblwiICsgd2hpY2ggXSA9IGF0dHJzWyBcInBhZGRpbmdcIiArIHdoaWNoIF0gPSB0eXBlO1xuXHR9XG5cblx0aWYgKCBpbmNsdWRlV2lkdGggKSB7XG5cdFx0YXR0cnMub3BhY2l0eSA9IGF0dHJzLndpZHRoID0gdHlwZTtcblx0fVxuXG5cdHJldHVybiBhdHRycztcbn1cblxuZnVuY3Rpb24gY3JlYXRlVHdlZW4oIHZhbHVlLCBwcm9wLCBhbmltYXRpb24gKSB7XG5cdHZhciB0d2Vlbixcblx0XHRjb2xsZWN0aW9uID0gKCBBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSB8fCBbXSApLmNvbmNhdCggQW5pbWF0aW9uLnR3ZWVuZXJzWyBcIipcIiBdICksXG5cdFx0aW5kZXggPSAwLFxuXHRcdGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoO1xuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGlmICggKCB0d2VlbiA9IGNvbGxlY3Rpb25bIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBwcm9wLCB2YWx1ZSApICkgKSB7XG5cblx0XHRcdC8vIFdlJ3JlIGRvbmUgd2l0aCB0aGlzIHByb3BlcnR5XG5cdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRQcmVmaWx0ZXIoIGVsZW0sIHByb3BzLCBvcHRzICkge1xuXHQvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG5cdHZhciBwcm9wLCB2YWx1ZSwgdG9nZ2xlLCB0d2VlbiwgaG9va3MsIG9sZGZpcmUsIGRpc3BsYXksIGNoZWNrRGlzcGxheSxcblx0XHRhbmltID0gdGhpcyxcblx0XHRvcmlnID0ge30sXG5cdFx0c3R5bGUgPSBlbGVtLnN0eWxlLFxuXHRcdGhpZGRlbiA9IGVsZW0ubm9kZVR5cGUgJiYgaXNIaWRkZW4oIGVsZW0gKSxcblx0XHRkYXRhU2hvdyA9IGRhdGFQcml2LmdldCggZWxlbSwgXCJmeHNob3dcIiApO1xuXG5cdC8vIEhhbmRsZSBxdWV1ZTogZmFsc2UgcHJvbWlzZXNcblx0aWYgKCAhb3B0cy5xdWV1ZSApIHtcblx0XHRob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgXCJmeFwiICk7XG5cdFx0aWYgKCBob29rcy51bnF1ZXVlZCA9PSBudWxsICkge1xuXHRcdFx0aG9va3MudW5xdWV1ZWQgPSAwO1xuXHRcdFx0b2xkZmlyZSA9IGhvb2tzLmVtcHR5LmZpcmU7XG5cdFx0XHRob29rcy5lbXB0eS5maXJlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggIWhvb2tzLnVucXVldWVkICkge1xuXHRcdFx0XHRcdG9sZGZpcmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0aG9va3MudW5xdWV1ZWQrKztcblxuXHRcdGFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRW5zdXJlIHRoZSBjb21wbGV0ZSBoYW5kbGVyIGlzIGNhbGxlZCBiZWZvcmUgdGhpcyBjb21wbGV0ZXNcblx0XHRcdGFuaW0uYWx3YXlzKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0aG9va3MudW5xdWV1ZWQtLTtcblx0XHRcdFx0aWYgKCAhalF1ZXJ5LnF1ZXVlKCBlbGVtLCBcImZ4XCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdFx0aG9va3MuZW1wdHkuZmlyZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gSGVpZ2h0L3dpZHRoIG92ZXJmbG93IHBhc3Ncblx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICggXCJoZWlnaHRcIiBpbiBwcm9wcyB8fCBcIndpZHRoXCIgaW4gcHJvcHMgKSApIHtcblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IG5vdGhpbmcgc25lYWtzIG91dFxuXHRcdC8vIFJlY29yZCBhbGwgMyBvdmVyZmxvdyBhdHRyaWJ1dGVzIGJlY2F1c2UgSUU5LTEwIGRvIG5vdFxuXHRcdC8vIGNoYW5nZSB0aGUgb3ZlcmZsb3cgYXR0cmlidXRlIHdoZW4gb3ZlcmZsb3dYIGFuZFxuXHRcdC8vIG92ZXJmbG93WSBhcmUgc2V0IHRvIHRoZSBzYW1lIHZhbHVlXG5cdFx0b3B0cy5vdmVyZmxvdyA9IFsgc3R5bGUub3ZlcmZsb3csIHN0eWxlLm92ZXJmbG93WCwgc3R5bGUub3ZlcmZsb3dZIF07XG5cblx0XHQvLyBTZXQgZGlzcGxheSBwcm9wZXJ0eSB0byBpbmxpbmUtYmxvY2sgZm9yIGhlaWdodC93aWR0aFxuXHRcdC8vIGFuaW1hdGlvbnMgb24gaW5saW5lIGVsZW1lbnRzIHRoYXQgYXJlIGhhdmluZyB3aWR0aC9oZWlnaHQgYW5pbWF0ZWRcblx0XHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKTtcblxuXHRcdC8vIFRlc3QgZGVmYXVsdCBkaXNwbGF5IGlmIGRpc3BsYXkgaXMgY3VycmVudGx5IFwibm9uZVwiXG5cdFx0Y2hlY2tEaXNwbGF5ID0gZGlzcGxheSA9PT0gXCJub25lXCIgP1xuXHRcdFx0ZGF0YVByaXYuZ2V0KCBlbGVtLCBcIm9sZGRpc3BsYXlcIiApIHx8IGRlZmF1bHREaXNwbGF5KCBlbGVtLm5vZGVOYW1lICkgOiBkaXNwbGF5O1xuXG5cdFx0aWYgKCBjaGVja0Rpc3BsYXkgPT09IFwiaW5saW5lXCIgJiYgalF1ZXJ5LmNzcyggZWxlbSwgXCJmbG9hdFwiICkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0c3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCBvcHRzLm92ZXJmbG93ICkge1xuXHRcdHN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcblx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cdFx0XHRzdHlsZS5vdmVyZmxvdyA9IG9wdHMub3ZlcmZsb3dbIDAgXTtcblx0XHRcdHN0eWxlLm92ZXJmbG93WCA9IG9wdHMub3ZlcmZsb3dbIDEgXTtcblx0XHRcdHN0eWxlLm92ZXJmbG93WSA9IG9wdHMub3ZlcmZsb3dbIDIgXTtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBzaG93L2hpZGUgcGFzc1xuXHRmb3IgKCBwcm9wIGluIHByb3BzICkge1xuXHRcdHZhbHVlID0gcHJvcHNbIHByb3AgXTtcblx0XHRpZiAoIHJmeHR5cGVzLmV4ZWMoIHZhbHVlICkgKSB7XG5cdFx0XHRkZWxldGUgcHJvcHNbIHByb3AgXTtcblx0XHRcdHRvZ2dsZSA9IHRvZ2dsZSB8fCB2YWx1ZSA9PT0gXCJ0b2dnbGVcIjtcblx0XHRcdGlmICggdmFsdWUgPT09ICggaGlkZGVuID8gXCJoaWRlXCIgOiBcInNob3dcIiApICkge1xuXG5cdFx0XHRcdC8vIElmIHRoZXJlIGlzIGRhdGFTaG93IGxlZnQgb3ZlciBmcm9tIGEgc3RvcHBlZCBoaWRlIG9yIHNob3dcblx0XHRcdFx0Ly8gYW5kIHdlIGFyZSBnb2luZyB0byBwcm9jZWVkIHdpdGggc2hvdywgd2Ugc2hvdWxkIHByZXRlbmQgdG8gYmUgaGlkZGVuXG5cdFx0XHRcdGlmICggdmFsdWUgPT09IFwic2hvd1wiICYmIGRhdGFTaG93ICYmIGRhdGFTaG93WyBwcm9wIF0gIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRoaWRkZW4gPSB0cnVlO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRvcmlnWyBwcm9wIF0gPSBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdIHx8IGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCApO1xuXG5cdFx0Ly8gQW55IG5vbi1meCB2YWx1ZSBzdG9wcyB1cyBmcm9tIHJlc3RvcmluZyB0aGUgb3JpZ2luYWwgZGlzcGxheSB2YWx1ZVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRkaXNwbGF5ID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdGlmICggIWpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvcmlnICkgKSB7XG5cdFx0aWYgKCBkYXRhU2hvdyApIHtcblx0XHRcdGlmICggXCJoaWRkZW5cIiBpbiBkYXRhU2hvdyApIHtcblx0XHRcdFx0aGlkZGVuID0gZGF0YVNob3cuaGlkZGVuO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRkYXRhU2hvdyA9IGRhdGFQcml2LmFjY2VzcyggZWxlbSwgXCJmeHNob3dcIiwge30gKTtcblx0XHR9XG5cblx0XHQvLyBTdG9yZSBzdGF0ZSBpZiBpdHMgdG9nZ2xlIC0gZW5hYmxlcyAuc3RvcCgpLnRvZ2dsZSgpIHRvIFwicmV2ZXJzZVwiXG5cdFx0aWYgKCB0b2dnbGUgKSB7XG5cdFx0XHRkYXRhU2hvdy5oaWRkZW4gPSAhaGlkZGVuO1xuXHRcdH1cblx0XHRpZiAoIGhpZGRlbiApIHtcblx0XHRcdGpRdWVyeSggZWxlbSApLnNob3coKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YW5pbS5kb25lKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0alF1ZXJ5KCBlbGVtICkuaGlkZSgpO1xuXHRcdFx0fSApO1xuXHRcdH1cblx0XHRhbmltLmRvbmUoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHByb3A7XG5cblx0XHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgXCJmeHNob3dcIiApO1xuXHRcdFx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIG9yaWdbIHByb3AgXSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0XHRmb3IgKCBwcm9wIGluIG9yaWcgKSB7XG5cdFx0XHR0d2VlbiA9IGNyZWF0ZVR3ZWVuKCBoaWRkZW4gPyBkYXRhU2hvd1sgcHJvcCBdIDogMCwgcHJvcCwgYW5pbSApO1xuXG5cdFx0XHRpZiAoICEoIHByb3AgaW4gZGF0YVNob3cgKSApIHtcblx0XHRcdFx0ZGF0YVNob3dbIHByb3AgXSA9IHR3ZWVuLnN0YXJ0O1xuXHRcdFx0XHRpZiAoIGhpZGRlbiApIHtcblx0XHRcdFx0XHR0d2Vlbi5lbmQgPSB0d2Vlbi5zdGFydDtcblx0XHRcdFx0XHR0d2Vlbi5zdGFydCA9IHByb3AgPT09IFwid2lkdGhcIiB8fCBwcm9wID09PSBcImhlaWdodFwiID8gMSA6IDA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0Ly8gSWYgdGhpcyBpcyBhIG5vb3AgbGlrZSAuaGlkZSgpLmhpZGUoKSwgcmVzdG9yZSBhbiBvdmVyd3JpdHRlbiBkaXNwbGF5IHZhbHVlXG5cdH0gZWxzZSBpZiAoICggZGlzcGxheSA9PT0gXCJub25lXCIgPyBkZWZhdWx0RGlzcGxheSggZWxlbS5ub2RlTmFtZSApIDogZGlzcGxheSApID09PSBcImlubGluZVwiICkge1xuXHRcdHN0eWxlLmRpc3BsYXkgPSBkaXNwbGF5O1xuXHR9XG59XG5cbmZ1bmN0aW9uIHByb3BGaWx0ZXIoIHByb3BzLCBzcGVjaWFsRWFzaW5nICkge1xuXHR2YXIgaW5kZXgsIG5hbWUsIGVhc2luZywgdmFsdWUsIGhvb2tzO1xuXG5cdC8vIGNhbWVsQ2FzZSwgc3BlY2lhbEVhc2luZyBhbmQgZXhwYW5kIGNzc0hvb2sgcGFzc1xuXHRmb3IgKCBpbmRleCBpbiBwcm9wcyApIHtcblx0XHRuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggaW5kZXggKTtcblx0XHRlYXNpbmcgPSBzcGVjaWFsRWFzaW5nWyBuYW1lIF07XG5cdFx0dmFsdWUgPSBwcm9wc1sgaW5kZXggXTtcblx0XHRpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0ZWFzaW5nID0gdmFsdWVbIDEgXTtcblx0XHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdO1xuXHRcdH1cblxuXHRcdGlmICggaW5kZXggIT09IG5hbWUgKSB7XG5cdFx0XHRwcm9wc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRkZWxldGUgcHJvcHNbIGluZGV4IF07XG5cdFx0fVxuXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXTtcblx0XHRpZiAoIGhvb2tzICYmIFwiZXhwYW5kXCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWx1ZSA9IGhvb2tzLmV4cGFuZCggdmFsdWUgKTtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgbmFtZSBdO1xuXG5cdFx0XHQvLyBOb3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGtleXMuXG5cdFx0XHQvLyBSZXVzaW5nICdpbmRleCcgYmVjYXVzZSB3ZSBoYXZlIHRoZSBjb3JyZWN0IFwibmFtZVwiXG5cdFx0XHRmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHtcblx0XHRcdFx0aWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkge1xuXHRcdFx0XHRcdHByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07XG5cdFx0XHRcdFx0c3BlY2lhbEVhc2luZ1sgaW5kZXggXSA9IGVhc2luZztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzcGVjaWFsRWFzaW5nWyBuYW1lIF0gPSBlYXNpbmc7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIEFuaW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyApIHtcblx0dmFyIHJlc3VsdCxcblx0XHRzdG9wcGVkLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBBbmltYXRpb24ucHJlZmlsdGVycy5sZW5ndGgsXG5cdFx0ZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBEb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3Jcblx0XHRcdGRlbGV0ZSB0aWNrLmVsZW07XG5cdFx0fSApLFxuXHRcdHRpY2sgPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggc3RvcHBlZCApIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGN1cnJlbnRUaW1lID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdFx0cmVtYWluaW5nID0gTWF0aC5tYXgoIDAsIGFuaW1hdGlvbi5zdGFydFRpbWUgKyBhbmltYXRpb24uZHVyYXRpb24gLSBjdXJyZW50VGltZSApLFxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zXG5cdFx0XHRcdC8vIEFyY2hhaWMgY3Jhc2ggYnVnIHdvbid0IGFsbG93IHVzIHRvIHVzZSBgMSAtICggMC41IHx8IDAgKWAgKCMxMjQ5Nylcblx0XHRcdFx0dGVtcCA9IHJlbWFpbmluZyAvIGFuaW1hdGlvbi5kdXJhdGlvbiB8fCAwLFxuXHRcdFx0XHRwZXJjZW50ID0gMSAtIHRlbXAsXG5cdFx0XHRcdGluZGV4ID0gMCxcblx0XHRcdFx0bGVuZ3RoID0gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGg7XG5cblx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGggOyBpbmRleCsrICkge1xuXHRcdFx0XHRhbmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggcGVyY2VudCApO1xuXHRcdFx0fVxuXG5cdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgcGVyY2VudCwgcmVtYWluaW5nIF0gKTtcblxuXHRcdFx0aWYgKCBwZXJjZW50IDwgMSAmJiBsZW5ndGggKSB7XG5cdFx0XHRcdHJldHVybiByZW1haW5pbmc7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24gXSApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRhbmltYXRpb24gPSBkZWZlcnJlZC5wcm9taXNlKCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0cHJvcHM6IGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wZXJ0aWVzICksXG5cdFx0XHRvcHRzOiBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB7XG5cdFx0XHRcdHNwZWNpYWxFYXNpbmc6IHt9LFxuXHRcdFx0XHRlYXNpbmc6IGpRdWVyeS5lYXNpbmcuX2RlZmF1bHRcblx0XHRcdH0sIG9wdGlvbnMgKSxcblx0XHRcdG9yaWdpbmFsUHJvcGVydGllczogcHJvcGVydGllcyxcblx0XHRcdG9yaWdpbmFsT3B0aW9uczogb3B0aW9ucyxcblx0XHRcdHN0YXJ0VGltZTogZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0aW9uLFxuXHRcdFx0dHdlZW5zOiBbXSxcblx0XHRcdGNyZWF0ZVR3ZWVuOiBmdW5jdGlvbiggcHJvcCwgZW5kICkge1xuXHRcdFx0XHR2YXIgdHdlZW4gPSBqUXVlcnkuVHdlZW4oIGVsZW0sIGFuaW1hdGlvbi5vcHRzLCBwcm9wLCBlbmQsXG5cdFx0XHRcdFx0XHRhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nWyBwcm9wIF0gfHwgYW5pbWF0aW9uLm9wdHMuZWFzaW5nICk7XG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnMucHVzaCggdHdlZW4gKTtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdFx0fSxcblx0XHRcdHN0b3A6IGZ1bmN0aW9uKCBnb3RvRW5kICkge1xuXHRcdFx0XHR2YXIgaW5kZXggPSAwLFxuXG5cdFx0XHRcdFx0Ly8gSWYgd2UgYXJlIGdvaW5nIHRvIHRoZSBlbmQsIHdlIHdhbnQgdG8gcnVuIGFsbCB0aGUgdHdlZW5zXG5cdFx0XHRcdFx0Ly8gb3RoZXJ3aXNlIHdlIHNraXAgdGhpcyBwYXJ0XG5cdFx0XHRcdFx0bGVuZ3RoID0gZ290b0VuZCA/IGFuaW1hdGlvbi50d2VlbnMubGVuZ3RoIDogMDtcblx0XHRcdFx0aWYgKCBzdG9wcGVkICkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN0b3BwZWQgPSB0cnVlO1xuXHRcdFx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHtcblx0XHRcdFx0XHRhbmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggMSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVzb2x2ZSB3aGVuIHdlIHBsYXllZCB0aGUgbGFzdCBmcmFtZTsgb3RoZXJ3aXNlLCByZWplY3Rcblx0XHRcdFx0aWYgKCBnb3RvRW5kICkge1xuXHRcdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCAxLCAwIF0gKTtcblx0XHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH1cblx0XHR9ICksXG5cdFx0cHJvcHMgPSBhbmltYXRpb24ucHJvcHM7XG5cblx0cHJvcEZpbHRlciggcHJvcHMsIGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmcgKTtcblxuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHtcblx0XHRyZXN1bHQgPSBBbmltYXRpb24ucHJlZmlsdGVyc1sgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIGVsZW0sIHByb3BzLCBhbmltYXRpb24ub3B0cyApO1xuXHRcdGlmICggcmVzdWx0ICkge1xuXHRcdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcmVzdWx0LnN0b3AgKSApIHtcblx0XHRcdFx0alF1ZXJ5Ll9xdWV1ZUhvb2tzKCBhbmltYXRpb24uZWxlbSwgYW5pbWF0aW9uLm9wdHMucXVldWUgKS5zdG9wID1cblx0XHRcdFx0XHRqUXVlcnkucHJveHkoIHJlc3VsdC5zdG9wLCByZXN1bHQgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXHR9XG5cblx0alF1ZXJ5Lm1hcCggcHJvcHMsIGNyZWF0ZVR3ZWVuLCBhbmltYXRpb24gKTtcblxuXHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBhbmltYXRpb24ub3B0cy5zdGFydCApICkge1xuXHRcdGFuaW1hdGlvbi5vcHRzLnN0YXJ0LmNhbGwoIGVsZW0sIGFuaW1hdGlvbiApO1xuXHR9XG5cblx0alF1ZXJ5LmZ4LnRpbWVyKFxuXHRcdGpRdWVyeS5leHRlbmQoIHRpY2ssIHtcblx0XHRcdGVsZW06IGVsZW0sXG5cdFx0XHRhbmltOiBhbmltYXRpb24sXG5cdFx0XHRxdWV1ZTogYW5pbWF0aW9uLm9wdHMucXVldWVcblx0XHR9IClcblx0KTtcblxuXHQvLyBhdHRhY2ggY2FsbGJhY2tzIGZyb20gb3B0aW9uc1xuXHRyZXR1cm4gYW5pbWF0aW9uLnByb2dyZXNzKCBhbmltYXRpb24ub3B0cy5wcm9ncmVzcyApXG5cdFx0LmRvbmUoIGFuaW1hdGlvbi5vcHRzLmRvbmUsIGFuaW1hdGlvbi5vcHRzLmNvbXBsZXRlIClcblx0XHQuZmFpbCggYW5pbWF0aW9uLm9wdHMuZmFpbCApXG5cdFx0LmFsd2F5cyggYW5pbWF0aW9uLm9wdHMuYWx3YXlzICk7XG59XG5cbmpRdWVyeS5BbmltYXRpb24gPSBqUXVlcnkuZXh0ZW5kKCBBbmltYXRpb24sIHtcblx0dHdlZW5lcnM6IHtcblx0XHRcIipcIjogWyBmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgdHdlZW4gPSB0aGlzLmNyZWF0ZVR3ZWVuKCBwcm9wLCB2YWx1ZSApO1xuXHRcdFx0YWRqdXN0Q1NTKCB0d2Vlbi5lbGVtLCBwcm9wLCByY3NzTnVtLmV4ZWMoIHZhbHVlICksIHR3ZWVuICk7XG5cdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0fSBdXG5cdH0sXG5cblx0dHdlZW5lcjogZnVuY3Rpb24oIHByb3BzLCBjYWxsYmFjayApIHtcblx0XHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBwcm9wcyApICkge1xuXHRcdFx0Y2FsbGJhY2sgPSBwcm9wcztcblx0XHRcdHByb3BzID0gWyBcIipcIiBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRwcm9wcyA9IHByb3BzLm1hdGNoKCBybm90d2hpdGUgKTtcblx0XHR9XG5cblx0XHR2YXIgcHJvcCxcblx0XHRcdGluZGV4ID0gMCxcblx0XHRcdGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuXHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGggOyBpbmRleCsrICkge1xuXHRcdFx0cHJvcCA9IHByb3BzWyBpbmRleCBdO1xuXHRcdFx0QW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gPSBBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSB8fCBbXTtcblx0XHRcdEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9LFxuXG5cdHByZWZpbHRlcnM6IFsgZGVmYXVsdFByZWZpbHRlciBdLFxuXG5cdHByZWZpbHRlcjogZnVuY3Rpb24oIGNhbGxiYWNrLCBwcmVwZW5kICkge1xuXHRcdGlmICggcHJlcGVuZCApIHtcblx0XHRcdEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnB1c2goIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cbmpRdWVyeS5zcGVlZCA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBmbiApIHtcblx0dmFyIG9wdCA9IHNwZWVkICYmIHR5cGVvZiBzcGVlZCA9PT0gXCJvYmplY3RcIiA/IGpRdWVyeS5leHRlbmQoIHt9LCBzcGVlZCApIDoge1xuXHRcdGNvbXBsZXRlOiBmbiB8fCAhZm4gJiYgZWFzaW5nIHx8XG5cdFx0XHRqUXVlcnkuaXNGdW5jdGlvbiggc3BlZWQgKSAmJiBzcGVlZCxcblx0XHRkdXJhdGlvbjogc3BlZWQsXG5cdFx0ZWFzaW5nOiBmbiAmJiBlYXNpbmcgfHwgZWFzaW5nICYmICFqUXVlcnkuaXNGdW5jdGlvbiggZWFzaW5nICkgJiYgZWFzaW5nXG5cdH07XG5cblx0b3B0LmR1cmF0aW9uID0galF1ZXJ5LmZ4Lm9mZiA/IDAgOiB0eXBlb2Ygb3B0LmR1cmF0aW9uID09PSBcIm51bWJlclwiID9cblx0XHRvcHQuZHVyYXRpb24gOiBvcHQuZHVyYXRpb24gaW4galF1ZXJ5LmZ4LnNwZWVkcyA/XG5cdFx0XHRqUXVlcnkuZnguc3BlZWRzWyBvcHQuZHVyYXRpb24gXSA6IGpRdWVyeS5meC5zcGVlZHMuX2RlZmF1bHQ7XG5cblx0Ly8gTm9ybWFsaXplIG9wdC5xdWV1ZSAtIHRydWUvdW5kZWZpbmVkL251bGwgLT4gXCJmeFwiXG5cdGlmICggb3B0LnF1ZXVlID09IG51bGwgfHwgb3B0LnF1ZXVlID09PSB0cnVlICkge1xuXHRcdG9wdC5xdWV1ZSA9IFwiZnhcIjtcblx0fVxuXG5cdC8vIFF1ZXVlaW5nXG5cdG9wdC5vbGQgPSBvcHQuY29tcGxldGU7XG5cblx0b3B0LmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0Lm9sZCApICkge1xuXHRcdFx0b3B0Lm9sZC5jYWxsKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHQucXVldWUgKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgb3B0LnF1ZXVlICk7XG5cdFx0fVxuXHR9O1xuXG5cdHJldHVybiBvcHQ7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGZhZGVUbzogZnVuY3Rpb24oIHNwZWVkLCB0bywgZWFzaW5nLCBjYWxsYmFjayApIHtcblxuXHRcdC8vIFNob3cgYW55IGhpZGRlbiBlbGVtZW50cyBhZnRlciBzZXR0aW5nIG9wYWNpdHkgdG8gMFxuXHRcdHJldHVybiB0aGlzLmZpbHRlciggaXNIaWRkZW4gKS5jc3MoIFwib3BhY2l0eVwiLCAwICkuc2hvdygpXG5cblx0XHRcdC8vIEFuaW1hdGUgdG8gdGhlIHZhbHVlIHNwZWNpZmllZFxuXHRcdFx0LmVuZCgpLmFuaW1hdGUoIHsgb3BhY2l0eTogdG8gfSwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcblx0fSxcblx0YW5pbWF0ZTogZnVuY3Rpb24oIHByb3AsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdHZhciBlbXB0eSA9IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBwcm9wICksXG5cdFx0XHRvcHRhbGwgPSBqUXVlcnkuc3BlZWQoIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICksXG5cdFx0XHRkb0FuaW1hdGlvbiA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8vIE9wZXJhdGUgb24gYSBjb3B5IG9mIHByb3Agc28gcGVyLXByb3BlcnR5IGVhc2luZyB3b24ndCBiZSBsb3N0XG5cdFx0XHRcdHZhciBhbmltID0gQW5pbWF0aW9uKCB0aGlzLCBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcCApLCBvcHRhbGwgKTtcblxuXHRcdFx0XHQvLyBFbXB0eSBhbmltYXRpb25zLCBvciBmaW5pc2hpbmcgcmVzb2x2ZXMgaW1tZWRpYXRlbHlcblx0XHRcdFx0aWYgKCBlbXB0eSB8fCBkYXRhUHJpdi5nZXQoIHRoaXMsIFwiZmluaXNoXCIgKSApIHtcblx0XHRcdFx0XHRhbmltLnN0b3AoIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdGRvQW5pbWF0aW9uLmZpbmlzaCA9IGRvQW5pbWF0aW9uO1xuXG5cdFx0cmV0dXJuIGVtcHR5IHx8IG9wdGFsbC5xdWV1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0dGhpcy5lYWNoKCBkb0FuaW1hdGlvbiApIDpcblx0XHRcdHRoaXMucXVldWUoIG9wdGFsbC5xdWV1ZSwgZG9BbmltYXRpb24gKTtcblx0fSxcblx0c3RvcDogZnVuY3Rpb24oIHR5cGUsIGNsZWFyUXVldWUsIGdvdG9FbmQgKSB7XG5cdFx0dmFyIHN0b3BRdWV1ZSA9IGZ1bmN0aW9uKCBob29rcyApIHtcblx0XHRcdHZhciBzdG9wID0gaG9va3Muc3RvcDtcblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xuXHRcdFx0c3RvcCggZ290b0VuZCApO1xuXHRcdH07XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0Z290b0VuZCA9IGNsZWFyUXVldWU7XG5cdFx0XHRjbGVhclF1ZXVlID0gdHlwZTtcblx0XHRcdHR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICggY2xlYXJRdWV1ZSAmJiB0eXBlICE9PSBmYWxzZSApIHtcblx0XHRcdHRoaXMucXVldWUoIHR5cGUgfHwgXCJmeFwiLCBbXSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGRlcXVldWUgPSB0cnVlLFxuXHRcdFx0XHRpbmRleCA9IHR5cGUgIT0gbnVsbCAmJiB0eXBlICsgXCJxdWV1ZUhvb2tzXCIsXG5cdFx0XHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnMsXG5cdFx0XHRcdGRhdGEgPSBkYXRhUHJpdi5nZXQoIHRoaXMgKTtcblxuXHRcdFx0aWYgKCBpbmRleCApIHtcblx0XHRcdFx0aWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCApIHtcblx0XHRcdFx0XHRzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yICggaW5kZXggaW4gZGF0YSApIHtcblx0XHRcdFx0XHRpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICYmIHJydW4udGVzdCggaW5kZXggKSApIHtcblx0XHRcdFx0XHRcdHN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkge1xuXHRcdFx0XHRpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmXG5cdFx0XHRcdFx0KCB0eXBlID09IG51bGwgfHwgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkgKSB7XG5cblx0XHRcdFx0XHR0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCBnb3RvRW5kICk7XG5cdFx0XHRcdFx0ZGVxdWV1ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhcnQgdGhlIG5leHQgaW4gdGhlIHF1ZXVlIGlmIHRoZSBsYXN0IHN0ZXAgd2Fzbid0IGZvcmNlZC5cblx0XHRcdC8vIFRpbWVycyBjdXJyZW50bHkgd2lsbCBjYWxsIHRoZWlyIGNvbXBsZXRlIGNhbGxiYWNrcywgd2hpY2hcblx0XHRcdC8vIHdpbGwgZGVxdWV1ZSBidXQgb25seSBpZiB0aGV5IHdlcmUgZ290b0VuZC5cblx0XHRcdGlmICggZGVxdWV1ZSB8fCAhZ290b0VuZCApIHtcblx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cdGZpbmlzaDogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0aWYgKCB0eXBlICE9PSBmYWxzZSApIHtcblx0XHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaW5kZXgsXG5cdFx0XHRcdGRhdGEgPSBkYXRhUHJpdi5nZXQoIHRoaXMgKSxcblx0XHRcdFx0cXVldWUgPSBkYXRhWyB0eXBlICsgXCJxdWV1ZVwiIF0sXG5cdFx0XHRcdGhvb2tzID0gZGF0YVsgdHlwZSArIFwicXVldWVIb29rc1wiIF0sXG5cdFx0XHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnMsXG5cdFx0XHRcdGxlbmd0aCA9IHF1ZXVlID8gcXVldWUubGVuZ3RoIDogMDtcblxuXHRcdFx0Ly8gRW5hYmxlIGZpbmlzaGluZyBmbGFnIG9uIHByaXZhdGUgZGF0YVxuXHRcdFx0ZGF0YS5maW5pc2ggPSB0cnVlO1xuXG5cdFx0XHQvLyBFbXB0eSB0aGUgcXVldWUgZmlyc3Rcblx0XHRcdGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgW10gKTtcblxuXHRcdFx0aWYgKCBob29rcyAmJiBob29rcy5zdG9wICkge1xuXHRcdFx0XHRob29rcy5zdG9wLmNhbGwoIHRoaXMsIHRydWUgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTG9vayBmb3IgYW55IGFjdGl2ZSBhbmltYXRpb25zLCBhbmQgZmluaXNoIHRoZW1cblx0XHRcdGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7XG5cdFx0XHRcdGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiYgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkge1xuXHRcdFx0XHRcdHRpbWVyc1sgaW5kZXggXS5hbmltLnN0b3AoIHRydWUgKTtcblx0XHRcdFx0XHR0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIExvb2sgZm9yIGFueSBhbmltYXRpb25zIGluIHRoZSBvbGQgcXVldWUgYW5kIGZpbmlzaCB0aGVtXG5cdFx0XHRmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0XHRpZiAoIHF1ZXVlWyBpbmRleCBdICYmIHF1ZXVlWyBpbmRleCBdLmZpbmlzaCApIHtcblx0XHRcdFx0XHRxdWV1ZVsgaW5kZXggXS5maW5pc2guY2FsbCggdGhpcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFR1cm4gb2ZmIGZpbmlzaGluZyBmbGFnXG5cdFx0XHRkZWxldGUgZGF0YS5maW5pc2g7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwidG9nZ2xlXCIsIFwic2hvd1wiLCBcImhpZGVcIiBdLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcblx0dmFyIGNzc0ZuID0galF1ZXJ5LmZuWyBuYW1lIF07XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBzcGVlZCA9PSBudWxsIHx8IHR5cGVvZiBzcGVlZCA9PT0gXCJib29sZWFuXCIgP1xuXHRcdFx0Y3NzRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApIDpcblx0XHRcdHRoaXMuYW5pbWF0ZSggZ2VuRngoIG5hbWUsIHRydWUgKSwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcblx0fTtcbn0gKTtcblxuLy8gR2VuZXJhdGUgc2hvcnRjdXRzIGZvciBjdXN0b20gYW5pbWF0aW9uc1xualF1ZXJ5LmVhY2goIHtcblx0c2xpZGVEb3duOiBnZW5GeCggXCJzaG93XCIgKSxcblx0c2xpZGVVcDogZ2VuRngoIFwiaGlkZVwiICksXG5cdHNsaWRlVG9nZ2xlOiBnZW5GeCggXCJ0b2dnbGVcIiApLFxuXHRmYWRlSW46IHsgb3BhY2l0eTogXCJzaG93XCIgfSxcblx0ZmFkZU91dDogeyBvcGFjaXR5OiBcImhpZGVcIiB9LFxuXHRmYWRlVG9nZ2xlOiB7IG9wYWNpdHk6IFwidG9nZ2xlXCIgfVxufSwgZnVuY3Rpb24oIG5hbWUsIHByb3BzICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gdGhpcy5hbmltYXRlKCBwcm9wcywgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcblx0fTtcbn0gKTtcblxualF1ZXJ5LnRpbWVycyA9IFtdO1xualF1ZXJ5LmZ4LnRpY2sgPSBmdW5jdGlvbigpIHtcblx0dmFyIHRpbWVyLFxuXHRcdGkgPSAwLFxuXHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnM7XG5cblx0ZnhOb3cgPSBqUXVlcnkubm93KCk7XG5cblx0Zm9yICggOyBpIDwgdGltZXJzLmxlbmd0aDsgaSsrICkge1xuXHRcdHRpbWVyID0gdGltZXJzWyBpIF07XG5cblx0XHQvLyBDaGVja3MgdGhlIHRpbWVyIGhhcyBub3QgYWxyZWFkeSBiZWVuIHJlbW92ZWRcblx0XHRpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciApIHtcblx0XHRcdHRpbWVycy5zcGxpY2UoIGktLSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdGlmICggIXRpbWVycy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmZ4LnN0b3AoKTtcblx0fVxuXHRmeE5vdyA9IHVuZGVmaW5lZDtcbn07XG5cbmpRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9uKCB0aW1lciApIHtcblx0alF1ZXJ5LnRpbWVycy5wdXNoKCB0aW1lciApO1xuXHRpZiAoIHRpbWVyKCkgKSB7XG5cdFx0alF1ZXJ5LmZ4LnN0YXJ0KCk7XG5cdH0gZWxzZSB7XG5cdFx0alF1ZXJ5LnRpbWVycy5wb3AoKTtcblx0fVxufTtcblxualF1ZXJ5LmZ4LmludGVydmFsID0gMTM7XG5qUXVlcnkuZnguc3RhcnQgPSBmdW5jdGlvbigpIHtcblx0aWYgKCAhdGltZXJJZCApIHtcblx0XHR0aW1lcklkID0gd2luZG93LnNldEludGVydmFsKCBqUXVlcnkuZngudGljaywgalF1ZXJ5LmZ4LmludGVydmFsICk7XG5cdH1cbn07XG5cbmpRdWVyeS5meC5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdHdpbmRvdy5jbGVhckludGVydmFsKCB0aW1lcklkICk7XG5cblx0dGltZXJJZCA9IG51bGw7XG59O1xuXG5qUXVlcnkuZnguc3BlZWRzID0ge1xuXHRzbG93OiA2MDAsXG5cdGZhc3Q6IDIwMCxcblxuXHQvLyBEZWZhdWx0IHNwZWVkXG5cdF9kZWZhdWx0OiA0MDBcbn07XG5cblxuLy8gQmFzZWQgb2ZmIG9mIHRoZSBwbHVnaW4gYnkgQ2xpbnQgSGVsZmVycywgd2l0aCBwZXJtaXNzaW9uLlxuLy8gaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMDAzMjQwMTQ3NDcvaHR0cDovL2JsaW5kc2lnbmFscy5jb20vaW5kZXgucGhwLzIwMDkvMDcvanF1ZXJ5LWRlbGF5L1xualF1ZXJ5LmZuLmRlbGF5ID0gZnVuY3Rpb24oIHRpbWUsIHR5cGUgKSB7XG5cdHRpbWUgPSBqUXVlcnkuZnggPyBqUXVlcnkuZnguc3BlZWRzWyB0aW1lIF0gfHwgdGltZSA6IHRpbWU7XG5cdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSwgZnVuY3Rpb24oIG5leHQsIGhvb2tzICkge1xuXHRcdHZhciB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoIG5leHQsIHRpbWUgKTtcblx0XHRob29rcy5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdFx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KCB0aW1lb3V0ICk7XG5cdFx0fTtcblx0fSApO1xufTtcblxuXG4oIGZ1bmN0aW9uKCkge1xuXHR2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKSxcblx0XHRzZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcInNlbGVjdFwiICksXG5cdFx0b3B0ID0gc2VsZWN0LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcIm9wdGlvblwiICkgKTtcblxuXHRpbnB1dC50eXBlID0gXCJjaGVja2JveFwiO1xuXG5cdC8vIFN1cHBvcnQ6IGlPUzw9NS4xLCBBbmRyb2lkPD00LjIrXG5cdC8vIERlZmF1bHQgdmFsdWUgZm9yIGEgY2hlY2tib3ggc2hvdWxkIGJlIFwib25cIlxuXHRzdXBwb3J0LmNoZWNrT24gPSBpbnB1dC52YWx1ZSAhPT0gXCJcIjtcblxuXHQvLyBTdXBwb3J0OiBJRTw9MTErXG5cdC8vIE11c3QgYWNjZXNzIHNlbGVjdGVkSW5kZXggdG8gbWFrZSBkZWZhdWx0IG9wdGlvbnMgc2VsZWN0XG5cdHN1cHBvcnQub3B0U2VsZWN0ZWQgPSBvcHQuc2VsZWN0ZWQ7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZDw9Mi4zXG5cdC8vIE9wdGlvbnMgaW5zaWRlIGRpc2FibGVkIHNlbGVjdHMgYXJlIGluY29ycmVjdGx5IG1hcmtlZCBhcyBkaXNhYmxlZFxuXHRzZWxlY3QuZGlzYWJsZWQgPSB0cnVlO1xuXHRzdXBwb3J0Lm9wdERpc2FibGVkID0gIW9wdC5kaXNhYmxlZDtcblxuXHQvLyBTdXBwb3J0OiBJRTw9MTErXG5cdC8vIEFuIGlucHV0IGxvc2VzIGl0cyB2YWx1ZSBhZnRlciBiZWNvbWluZyBhIHJhZGlvXG5cdGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICk7XG5cdGlucHV0LnZhbHVlID0gXCJ0XCI7XG5cdGlucHV0LnR5cGUgPSBcInJhZGlvXCI7XG5cdHN1cHBvcnQucmFkaW9WYWx1ZSA9IGlucHV0LnZhbHVlID09PSBcInRcIjtcbn0gKSgpO1xuXG5cbnZhciBib29sSG9vayxcblx0YXR0ckhhbmRsZSA9IGpRdWVyeS5leHByLmF0dHJIYW5kbGU7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0YXR0cjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fSxcblxuXHRyZW1vdmVBdHRyOiBmdW5jdGlvbiggbmFtZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCB0aGlzLCBuYW1lICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0YXR0cjogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciByZXQsIGhvb2tzLFxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdFx0Ly8gRG9uJ3QgZ2V0L3NldCBhdHRyaWJ1dGVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2Rlc1xuXHRcdGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRmFsbGJhY2sgdG8gcHJvcCB3aGVuIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWRcblx0XHRpZiAoIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSA9PT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRcdHJldHVybiBqUXVlcnkucHJvcCggZWxlbSwgbmFtZSwgdmFsdWUgKTtcblx0XHR9XG5cblx0XHQvLyBBbGwgYXR0cmlidXRlcyBhcmUgbG93ZXJjYXNlXG5cdFx0Ly8gR3JhYiBuZWNlc3NhcnkgaG9vayBpZiBvbmUgaXMgZGVmaW5lZFxuXHRcdGlmICggblR5cGUgIT09IDEgfHwgIWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkge1xuXHRcdFx0bmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdGhvb2tzID0galF1ZXJ5LmF0dHJIb29rc1sgbmFtZSBdIHx8XG5cdFx0XHRcdCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KCBuYW1lICkgPyBib29sSG9vayA6IHVuZGVmaW5lZCApO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggdmFsdWUgPT09IG51bGwgKSB7XG5cdFx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBob29rcyAmJiBcInNldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIHZhbHVlICsgXCJcIiApO1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdC8vIE5vbi1leGlzdGVudCBhdHRyaWJ1dGVzIHJldHVybiBudWxsLCB3ZSBub3JtYWxpemUgdG8gdW5kZWZpbmVkXG5cdFx0cmV0dXJuIHJldCA9PSBudWxsID8gdW5kZWZpbmVkIDogcmV0O1xuXHR9LFxuXG5cdGF0dHJIb29rczoge1xuXHRcdHR5cGU6IHtcblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHRpZiAoICFzdXBwb3J0LnJhZGlvVmFsdWUgJiYgdmFsdWUgPT09IFwicmFkaW9cIiAmJlxuXHRcdFx0XHRcdGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgXCJpbnB1dFwiICkgKSB7XG5cdFx0XHRcdFx0dmFyIHZhbCA9IGVsZW0udmFsdWU7XG5cdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCB2YWx1ZSApO1xuXHRcdFx0XHRcdGlmICggdmFsICkge1xuXHRcdFx0XHRcdFx0ZWxlbS52YWx1ZSA9IHZhbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHR2YXIgbmFtZSwgcHJvcE5hbWUsXG5cdFx0XHRpID0gMCxcblx0XHRcdGF0dHJOYW1lcyA9IHZhbHVlICYmIHZhbHVlLm1hdGNoKCBybm90d2hpdGUgKTtcblxuXHRcdGlmICggYXR0ck5hbWVzICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHR3aGlsZSAoICggbmFtZSA9IGF0dHJOYW1lc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0cHJvcE5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7XG5cblx0XHRcdFx0Ly8gQm9vbGVhbiBhdHRyaWJ1dGVzIGdldCBzcGVjaWFsIHRyZWF0bWVudCAoIzEwODcwKVxuXHRcdFx0XHRpZiAoIGpRdWVyeS5leHByLm1hdGNoLmJvb2wudGVzdCggbmFtZSApICkge1xuXG5cdFx0XHRcdFx0Ly8gU2V0IGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdG8gZmFsc2Vcblx0XHRcdFx0XHRlbGVtWyBwcm9wTmFtZSBdID0gZmFsc2U7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRlbGVtLnJlbW92ZUF0dHJpYnV0ZSggbmFtZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSApO1xuXG4vLyBIb29rcyBmb3IgYm9vbGVhbiBhdHRyaWJ1dGVzXG5ib29sSG9vayA9IHtcblx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7XG5cdFx0aWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdC8vIFJlbW92ZSBib29sZWFuIGF0dHJpYnV0ZXMgd2hlbiBzZXQgdG8gZmFsc2Vcblx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lICk7XG5cdFx0fVxuXHRcdHJldHVybiBuYW1lO1xuXHR9XG59O1xualF1ZXJ5LmVhY2goIGpRdWVyeS5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKCAvXFx3Ky9nICksIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHR2YXIgZ2V0dGVyID0gYXR0ckhhbmRsZVsgbmFtZSBdIHx8IGpRdWVyeS5maW5kLmF0dHI7XG5cblx0YXR0ckhhbmRsZVsgbmFtZSBdID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdHZhciByZXQsIGhhbmRsZTtcblx0XHRpZiAoICFpc1hNTCApIHtcblxuXHRcdFx0Ly8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBieSB0ZW1wb3JhcmlseSByZW1vdmluZyB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGdldHRlclxuXHRcdFx0aGFuZGxlID0gYXR0ckhhbmRsZVsgbmFtZSBdO1xuXHRcdFx0YXR0ckhhbmRsZVsgbmFtZSBdID0gcmV0O1xuXHRcdFx0cmV0ID0gZ2V0dGVyKCBlbGVtLCBuYW1lLCBpc1hNTCApICE9IG51bGwgP1xuXHRcdFx0XHRuYW1lLnRvTG93ZXJDYXNlKCkgOlxuXHRcdFx0XHRudWxsO1xuXHRcdFx0YXR0ckhhbmRsZVsgbmFtZSBdID0gaGFuZGxlO1xuXHRcdH1cblx0XHRyZXR1cm4gcmV0O1xuXHR9O1xufSApO1xuXG5cblxuXG52YXIgcmZvY3VzYWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksXG5cdHJjbGlja2FibGUgPSAvXig/OmF8YXJlYSkkL2k7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0cHJvcDogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5wcm9wLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fSxcblxuXHRyZW1vdmVQcm9wOiBmdW5jdGlvbiggbmFtZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGRlbGV0ZSB0aGlzWyBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWUgXTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHRwcm9wOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0dmFyIHJldCwgaG9va3MsXG5cdFx0XHRuVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0XHQvLyBEb24ndCBnZXQvc2V0IHByb3BlcnRpZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzXG5cdFx0aWYgKCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHtcblxuXHRcdFx0Ly8gRml4IG5hbWUgYW5kIGF0dGFjaCBob29rc1xuXHRcdFx0bmFtZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZTtcblx0XHRcdGhvb2tzID0galF1ZXJ5LnByb3BIb29rc1sgbmFtZSBdO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggaG9va3MgJiYgXCJzZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHQoIHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiAoIGVsZW1bIG5hbWUgXSA9IHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmICggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBuYW1lICkgKSAhPT0gbnVsbCApIHtcblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGVsZW1bIG5hbWUgXTtcblx0fSxcblxuXHRwcm9wSG9va3M6IHtcblx0XHR0YWJJbmRleDoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0XHQvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGVcblx0XHRcdFx0Ly8gY29ycmVjdCB2YWx1ZSB3aGVuIGl0IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0XG5cdFx0XHRcdC8vIGh0dHA6Ly9mbHVpZHByb2plY3Qub3JnL2Jsb2cvMjAwOC8wMS8wOS9nZXR0aW5nLXNldHRpbmctYW5kLXJlbW92aW5nLXRhYmluZGV4LXZhbHVlcy13aXRoLWphdmFzY3JpcHQvXG5cdFx0XHRcdC8vIFVzZSBwcm9wZXIgYXR0cmlidXRlIHJldHJpZXZhbCgjMTIwNzIpXG5cdFx0XHRcdHZhciB0YWJpbmRleCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIFwidGFiaW5kZXhcIiApO1xuXG5cdFx0XHRcdHJldHVybiB0YWJpbmRleCA/XG5cdFx0XHRcdFx0cGFyc2VJbnQoIHRhYmluZGV4LCAxMCApIDpcblx0XHRcdFx0XHRyZm9jdXNhYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSB8fFxuXHRcdFx0XHRcdFx0cmNsaWNrYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgJiYgZWxlbS5ocmVmID9cblx0XHRcdFx0XHRcdFx0MCA6XG5cdFx0XHRcdFx0XHRcdC0xO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHRwcm9wRml4OiB7XG5cdFx0XCJmb3JcIjogXCJodG1sRm9yXCIsXG5cdFx0XCJjbGFzc1wiOiBcImNsYXNzTmFtZVwiXG5cdH1cbn0gKTtcblxuLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG4vLyBBY2Nlc3NpbmcgdGhlIHNlbGVjdGVkSW5kZXggcHJvcGVydHlcbi8vIGZvcmNlcyB0aGUgYnJvd3NlciB0byByZXNwZWN0IHNldHRpbmcgc2VsZWN0ZWRcbi8vIG9uIHRoZSBvcHRpb25cbi8vIFRoZSBnZXR0ZXIgZW5zdXJlcyBhIGRlZmF1bHQgb3B0aW9uIGlzIHNlbGVjdGVkXG4vLyB3aGVuIGluIGFuIG9wdGdyb3VwXG5pZiAoICFzdXBwb3J0Lm9wdFNlbGVjdGVkICkge1xuXHRqUXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0aWYgKCBwYXJlbnQgJiYgcGFyZW50LnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0aWYgKCBwYXJlbnQgKSB7XG5cdFx0XHRcdHBhcmVudC5zZWxlY3RlZEluZGV4O1xuXG5cdFx0XHRcdGlmICggcGFyZW50LnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdFx0cGFyZW50LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxualF1ZXJ5LmVhY2goIFtcblx0XCJ0YWJJbmRleFwiLFxuXHRcInJlYWRPbmx5XCIsXG5cdFwibWF4TGVuZ3RoXCIsXG5cdFwiY2VsbFNwYWNpbmdcIixcblx0XCJjZWxsUGFkZGluZ1wiLFxuXHRcInJvd1NwYW5cIixcblx0XCJjb2xTcGFuXCIsXG5cdFwidXNlTWFwXCIsXG5cdFwiZnJhbWVCb3JkZXJcIixcblx0XCJjb250ZW50RWRpdGFibGVcIlxuXSwgZnVuY3Rpb24oKSB7XG5cdGpRdWVyeS5wcm9wRml4WyB0aGlzLnRvTG93ZXJDYXNlKCkgXSA9IHRoaXM7XG59ICk7XG5cblxuXG5cbnZhciByY2xhc3MgPSAvW1xcdFxcclxcblxcZl0vZztcblxuZnVuY3Rpb24gZ2V0Q2xhc3MoIGVsZW0gKSB7XG5cdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSAmJiBlbGVtLmdldEF0dHJpYnV0ZSggXCJjbGFzc1wiICkgfHwgXCJcIjtcbn1cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRhZGRDbGFzczogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBjbGFzc2VzLCBlbGVtLCBjdXIsIGN1clZhbHVlLCBjbGF6eiwgaiwgZmluYWxWYWx1ZSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5hZGRDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUgKSB7XG5cdFx0XHRjbGFzc2VzID0gdmFsdWUubWF0Y2goIHJub3R3aGl0ZSApIHx8IFtdO1xuXG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7XG5cdFx0XHRcdGN1clZhbHVlID0gZ2V0Q2xhc3MoIGVsZW0gKTtcblx0XHRcdFx0Y3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0XHRcdCggXCIgXCIgKyBjdXJWYWx1ZSArIFwiIFwiICkucmVwbGFjZSggcmNsYXNzLCBcIiBcIiApO1xuXG5cdFx0XHRcdGlmICggY3VyICkge1xuXHRcdFx0XHRcdGogPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKCBjbGF6eiA9IGNsYXNzZXNbIGorKyBdICkgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGN1ci5pbmRleE9mKCBcIiBcIiArIGNsYXp6ICsgXCIgXCIgKSA8IDAgKSB7XG5cdFx0XHRcdFx0XHRcdGN1ciArPSBjbGF6eiArIFwiIFwiO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIE9ubHkgYXNzaWduIGlmIGRpZmZlcmVudCB0byBhdm9pZCB1bm5lZWRlZCByZW5kZXJpbmcuXG5cdFx0XHRcdFx0ZmluYWxWYWx1ZSA9IGpRdWVyeS50cmltKCBjdXIgKTtcblx0XHRcdFx0XHRpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiwgZmluYWxWYWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHJlbW92ZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGogKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnJlbW92ZUNsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCBnZXRDbGFzcyggdGhpcyApICkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRpZiAoICFhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuYXR0ciggXCJjbGFzc1wiLCBcIlwiICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUgKSB7XG5cdFx0XHRjbGFzc2VzID0gdmFsdWUubWF0Y2goIHJub3R3aGl0ZSApIHx8IFtdO1xuXG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7XG5cdFx0XHRcdGN1clZhbHVlID0gZ2V0Q2xhc3MoIGVsZW0gKTtcblxuXHRcdFx0XHQvLyBUaGlzIGV4cHJlc3Npb24gaXMgaGVyZSBmb3IgYmV0dGVyIGNvbXByZXNzaWJpbGl0eSAoc2VlIGFkZENsYXNzKVxuXHRcdFx0XHRjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdFx0KCBcIiBcIiArIGN1clZhbHVlICsgXCIgXCIgKS5yZXBsYWNlKCByY2xhc3MsIFwiIFwiICk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisrIF0gKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlICphbGwqIGluc3RhbmNlc1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPiAtMSApIHtcblx0XHRcdFx0XHRcdFx0Y3VyID0gY3VyLnJlcGxhY2UoIFwiIFwiICsgY2xhenogKyBcIiBcIiwgXCIgXCIgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBqUXVlcnkudHJpbSggY3VyICk7XG5cdFx0XHRcdFx0aWYgKCBjdXJWYWx1ZSAhPT0gZmluYWxWYWx1ZSApIHtcblx0XHRcdFx0XHRcdGVsZW0uc2V0QXR0cmlidXRlKCBcImNsYXNzXCIsIGZpbmFsVmFsdWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR0b2dnbGVDbGFzczogZnVuY3Rpb24oIHZhbHVlLCBzdGF0ZVZhbCApIHtcblx0XHR2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcblxuXHRcdGlmICggdHlwZW9mIHN0YXRlVmFsID09PSBcImJvb2xlYW5cIiAmJiB0eXBlID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIHN0YXRlVmFsID8gdGhpcy5hZGRDbGFzcyggdmFsdWUgKSA6IHRoaXMucmVtb3ZlQ2xhc3MoIHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcyhcblx0XHRcdFx0XHR2YWx1ZS5jYWxsKCB0aGlzLCBpLCBnZXRDbGFzcyggdGhpcyApLCBzdGF0ZVZhbCApLFxuXHRcdFx0XHRcdHN0YXRlVmFsXG5cdFx0XHRcdCk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgY2xhc3NOYW1lLCBpLCBzZWxmLCBjbGFzc05hbWVzO1xuXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdFx0Ly8gVG9nZ2xlIGluZGl2aWR1YWwgY2xhc3MgbmFtZXNcblx0XHRcdFx0aSA9IDA7XG5cdFx0XHRcdHNlbGYgPSBqUXVlcnkoIHRoaXMgKTtcblx0XHRcdFx0Y2xhc3NOYW1lcyA9IHZhbHVlLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbXTtcblxuXHRcdFx0XHR3aGlsZSAoICggY2xhc3NOYW1lID0gY2xhc3NOYW1lc1sgaSsrIF0gKSApIHtcblxuXHRcdFx0XHRcdC8vIENoZWNrIGVhY2ggY2xhc3NOYW1lIGdpdmVuLCBzcGFjZSBzZXBhcmF0ZWQgbGlzdFxuXHRcdFx0XHRcdGlmICggc2VsZi5oYXNDbGFzcyggY2xhc3NOYW1lICkgKSB7XG5cdFx0XHRcdFx0XHRzZWxmLnJlbW92ZUNsYXNzKCBjbGFzc05hbWUgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0c2VsZi5hZGRDbGFzcyggY2xhc3NOYW1lICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdC8vIFRvZ2dsZSB3aG9sZSBjbGFzcyBuYW1lXG5cdFx0XHR9IGVsc2UgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGUgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdFx0XHRjbGFzc05hbWUgPSBnZXRDbGFzcyggdGhpcyApO1xuXHRcdFx0XHRpZiAoIGNsYXNzTmFtZSApIHtcblxuXHRcdFx0XHRcdC8vIFN0b3JlIGNsYXNzTmFtZSBpZiBzZXRcblx0XHRcdFx0XHRkYXRhUHJpdi5zZXQoIHRoaXMsIFwiX19jbGFzc05hbWVfX1wiLCBjbGFzc05hbWUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIElmIHRoZSBlbGVtZW50IGhhcyBhIGNsYXNzIG5hbWUgb3IgaWYgd2UncmUgcGFzc2VkIGBmYWxzZWAsXG5cdFx0XHRcdC8vIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBjbGFzc25hbWUgKGlmIHRoZXJlIHdhcyBvbmUsIHRoZSBhYm92ZSBzYXZlZCBpdCkuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBicmluZyBiYWNrIHdoYXRldmVyIHdhcyBwcmV2aW91c2x5IHNhdmVkIChpZiBhbnl0aGluZyksXG5cdFx0XHRcdC8vIGZhbGxpbmcgYmFjayB0byB0aGUgZW1wdHkgc3RyaW5nIGlmIG5vdGhpbmcgd2FzIHN0b3JlZC5cblx0XHRcdFx0aWYgKCB0aGlzLnNldEF0dHJpYnV0ZSApIHtcblx0XHRcdFx0XHR0aGlzLnNldEF0dHJpYnV0ZSggXCJjbGFzc1wiLFxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lIHx8IHZhbHVlID09PSBmYWxzZSA/XG5cdFx0XHRcdFx0XHRcIlwiIDpcblx0XHRcdFx0XHRcdGRhdGFQcml2LmdldCggdGhpcywgXCJfX2NsYXNzTmFtZV9fXCIgKSB8fCBcIlwiXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRoYXNDbGFzczogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBjbGFzc05hbWUsIGVsZW0sXG5cdFx0XHRpID0gMDtcblxuXHRcdGNsYXNzTmFtZSA9IFwiIFwiICsgc2VsZWN0b3IgKyBcIiBcIjtcblx0XHR3aGlsZSAoICggZWxlbSA9IHRoaXNbIGkrKyBdICkgKSB7XG5cdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdFx0KCBcIiBcIiArIGdldENsYXNzKCBlbGVtICkgKyBcIiBcIiApLnJlcGxhY2UoIHJjbGFzcywgXCIgXCIgKVxuXHRcdFx0XHRcdC5pbmRleE9mKCBjbGFzc05hbWUgKSA+IC0xXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBycmV0dXJuID0gL1xcci9nLFxuXHRyc3BhY2VzID0gL1tcXHgyMFxcdFxcclxcblxcZl0rL2c7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0dmFsOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGhvb2tzLCByZXQsIGlzRnVuY3Rpb24sXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdO1xuXG5cdFx0aWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8XG5cdFx0XHRcdFx0alF1ZXJ5LnZhbEhvb2tzWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0XHRpZiAoIGhvb2tzICYmXG5cdFx0XHRcdFx0XCJnZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBcInZhbHVlXCIgKSApICE9PSB1bmRlZmluZWRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldCA9IGVsZW0udmFsdWU7XG5cblx0XHRcdFx0cmV0dXJuIHR5cGVvZiByZXQgPT09IFwic3RyaW5nXCIgP1xuXG5cdFx0XHRcdFx0Ly8gSGFuZGxlIG1vc3QgY29tbW9uIHN0cmluZyBjYXNlc1xuXHRcdFx0XHRcdHJldC5yZXBsYWNlKCBycmV0dXJuLCBcIlwiICkgOlxuXG5cdFx0XHRcdFx0Ly8gSGFuZGxlIGNhc2VzIHdoZXJlIHZhbHVlIGlzIG51bGwvdW5kZWYgb3IgbnVtYmVyXG5cdFx0XHRcdFx0cmV0ID09IG51bGwgPyBcIlwiIDogcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aXNGdW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApO1xuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHR2YXIgdmFsO1xuXG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgIT09IDEgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBpc0Z1bmN0aW9uICkge1xuXHRcdFx0XHR2YWwgPSB2YWx1ZS5jYWxsKCB0aGlzLCBpLCBqUXVlcnkoIHRoaXMgKS52YWwoKSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dmFsID0gdmFsdWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRyZWF0IG51bGwvdW5kZWZpbmVkIGFzIFwiXCI7IGNvbnZlcnQgbnVtYmVycyB0byBzdHJpbmdcblx0XHRcdGlmICggdmFsID09IG51bGwgKSB7XG5cdFx0XHRcdHZhbCA9IFwiXCI7XG5cblx0XHRcdH0gZWxzZSBpZiAoIHR5cGVvZiB2YWwgPT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRcdHZhbCArPSBcIlwiO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBqUXVlcnkuaXNBcnJheSggdmFsICkgKSB7XG5cdFx0XHRcdHZhbCA9IGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiB2YWx1ZSA9PSBudWxsID8gXCJcIiA6IHZhbHVlICsgXCJcIjtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXG5cdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0Ly8gSWYgc2V0IHJldHVybnMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gbm9ybWFsIHNldHRpbmdcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoIFwic2V0XCIgaW4gaG9va3MgKSB8fCBob29rcy5zZXQoIHRoaXMsIHZhbCwgXCJ2YWx1ZVwiICkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0dGhpcy52YWx1ZSA9IHZhbDtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHR2YWxIb29rczoge1xuXHRcdG9wdGlvbjoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0XHR2YXIgdmFsID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgXCJ2YWx1ZVwiICk7XG5cdFx0XHRcdHJldHVybiB2YWwgIT0gbnVsbCA/XG5cdFx0XHRcdFx0dmFsIDpcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFMTAtMTErXG5cdFx0XHRcdFx0Ly8gb3B0aW9uLnRleHQgdGhyb3dzIGV4Y2VwdGlvbnMgKCMxNDY4NiwgIzE0ODU4KVxuXHRcdFx0XHRcdC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlXG5cdFx0XHRcdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jc3RyaXAtYW5kLWNvbGxhcHNlLXdoaXRlc3BhY2Vcblx0XHRcdFx0XHRqUXVlcnkudHJpbSggalF1ZXJ5LnRleHQoIGVsZW0gKSApLnJlcGxhY2UoIHJzcGFjZXMsIFwiIFwiICk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRzZWxlY3Q6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciB2YWx1ZSwgb3B0aW9uLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0aW5kZXggPSBlbGVtLnNlbGVjdGVkSW5kZXgsXG5cdFx0XHRcdFx0b25lID0gZWxlbS50eXBlID09PSBcInNlbGVjdC1vbmVcIiB8fCBpbmRleCA8IDAsXG5cdFx0XHRcdFx0dmFsdWVzID0gb25lID8gbnVsbCA6IFtdLFxuXHRcdFx0XHRcdG1heCA9IG9uZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoLFxuXHRcdFx0XHRcdGkgPSBpbmRleCA8IDAgP1xuXHRcdFx0XHRcdFx0bWF4IDpcblx0XHRcdFx0XHRcdG9uZSA/IGluZGV4IDogMDtcblxuXHRcdFx0XHQvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zXG5cdFx0XHRcdGZvciAoIDsgaSA8IG1heDsgaSsrICkge1xuXHRcdFx0XHRcdG9wdGlvbiA9IG9wdGlvbnNbIGkgXTtcblxuXHRcdFx0XHRcdC8vIElFOC05IGRvZXNuJ3QgdXBkYXRlIHNlbGVjdGVkIGFmdGVyIGZvcm0gcmVzZXQgKCMyNTUxKVxuXHRcdFx0XHRcdGlmICggKCBvcHRpb24uc2VsZWN0ZWQgfHwgaSA9PT0gaW5kZXggKSAmJlxuXG5cdFx0XHRcdFx0XHRcdC8vIERvbid0IHJldHVybiBvcHRpb25zIHRoYXQgYXJlIGRpc2FibGVkIG9yIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXBcblx0XHRcdFx0XHRcdFx0KCBzdXBwb3J0Lm9wdERpc2FibGVkID9cblx0XHRcdFx0XHRcdFx0XHQhb3B0aW9uLmRpc2FibGVkIDogb3B0aW9uLmdldEF0dHJpYnV0ZSggXCJkaXNhYmxlZFwiICkgPT09IG51bGwgKSAmJlxuXHRcdFx0XHRcdFx0XHQoICFvcHRpb24ucGFyZW50Tm9kZS5kaXNhYmxlZCB8fFxuXHRcdFx0XHRcdFx0XHRcdCFqUXVlcnkubm9kZU5hbWUoIG9wdGlvbi5wYXJlbnROb2RlLCBcIm9wdGdyb3VwXCIgKSApICkge1xuXG5cdFx0XHRcdFx0XHQvLyBHZXQgdGhlIHNwZWNpZmljIHZhbHVlIGZvciB0aGUgb3B0aW9uXG5cdFx0XHRcdFx0XHR2YWx1ZSA9IGpRdWVyeSggb3B0aW9uICkudmFsKCk7XG5cblx0XHRcdFx0XHRcdC8vIFdlIGRvbid0IG5lZWQgYW4gYXJyYXkgZm9yIG9uZSBzZWxlY3RzXG5cdFx0XHRcdFx0XHRpZiAoIG9uZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBNdWx0aS1TZWxlY3RzIHJldHVybiBhbiBhcnJheVxuXHRcdFx0XHRcdFx0dmFsdWVzLnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlcztcblx0XHRcdH0sXG5cblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHR2YXIgb3B0aW9uU2V0LCBvcHRpb24sXG5cdFx0XHRcdFx0b3B0aW9ucyA9IGVsZW0ub3B0aW9ucyxcblx0XHRcdFx0XHR2YWx1ZXMgPSBqUXVlcnkubWFrZUFycmF5KCB2YWx1ZSApLFxuXHRcdFx0XHRcdGkgPSBvcHRpb25zLmxlbmd0aDtcblxuXHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRvcHRpb24gPSBvcHRpb25zWyBpIF07XG5cdFx0XHRcdFx0aWYgKCBvcHRpb24uc2VsZWN0ZWQgPVxuXHRcdFx0XHRcdFx0alF1ZXJ5LmluQXJyYXkoIGpRdWVyeS52YWxIb29rcy5vcHRpb24uZ2V0KCBvcHRpb24gKSwgdmFsdWVzICkgPiAtMVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0b3B0aW9uU2V0ID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBGb3JjZSBicm93c2VycyB0byBiZWhhdmUgY29uc2lzdGVudGx5IHdoZW4gbm9uLW1hdGNoaW5nIHZhbHVlIGlzIHNldFxuXHRcdFx0XHRpZiAoICFvcHRpb25TZXQgKSB7XG5cdFx0XHRcdFx0ZWxlbS5zZWxlY3RlZEluZGV4ID0gLTE7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHZhbHVlcztcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gUmFkaW9zIGFuZCBjaGVja2JveGVzIGdldHRlci9zZXR0ZXJcbmpRdWVyeS5lYWNoKCBbIFwicmFkaW9cIiwgXCJjaGVja2JveFwiIF0sIGZ1bmN0aW9uKCkge1xuXHRqUXVlcnkudmFsSG9va3NbIHRoaXMgXSA9IHtcblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoIGVsZW0gKS52YWwoKSwgdmFsdWUgKSA+IC0xICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRpZiAoICFzdXBwb3J0LmNoZWNrT24gKSB7XG5cdFx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0uZ2V0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiApID09PSBudWxsID8gXCJvblwiIDogZWxlbS52YWx1ZTtcblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFJldHVybiBqUXVlcnkgZm9yIGF0dHJpYnV0ZXMtb25seSBpbmNsdXNpb25cblxuXG52YXIgcmZvY3VzTW9ycGggPSAvXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC87XG5cbmpRdWVyeS5leHRlbmQoIGpRdWVyeS5ldmVudCwge1xuXG5cdHRyaWdnZXI6IGZ1bmN0aW9uKCBldmVudCwgZGF0YSwgZWxlbSwgb25seUhhbmRsZXJzICkge1xuXG5cdFx0dmFyIGksIGN1ciwgdG1wLCBidWJibGVUeXBlLCBvbnR5cGUsIGhhbmRsZSwgc3BlY2lhbCxcblx0XHRcdGV2ZW50UGF0aCA9IFsgZWxlbSB8fCBkb2N1bWVudCBdLFxuXHRcdFx0dHlwZSA9IGhhc093bi5jYWxsKCBldmVudCwgXCJ0eXBlXCIgKSA/IGV2ZW50LnR5cGUgOiBldmVudCxcblx0XHRcdG5hbWVzcGFjZXMgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwibmFtZXNwYWNlXCIgKSA/IGV2ZW50Lm5hbWVzcGFjZS5zcGxpdCggXCIuXCIgKSA6IFtdO1xuXG5cdFx0Y3VyID0gdG1wID0gZWxlbSA9IGVsZW0gfHwgZG9jdW1lbnQ7XG5cblx0XHQvLyBEb24ndCBkbyBldmVudHMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rlc1xuXHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIGZvY3VzL2JsdXIgbW9ycGhzIHRvIGZvY3VzaW4vb3V0OyBlbnN1cmUgd2UncmUgbm90IGZpcmluZyB0aGVtIHJpZ2h0IG5vd1xuXHRcdGlmICggcmZvY3VzTW9ycGgudGVzdCggdHlwZSArIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIHR5cGUuaW5kZXhPZiggXCIuXCIgKSA+IC0xICkge1xuXG5cdFx0XHQvLyBOYW1lc3BhY2VkIHRyaWdnZXI7IGNyZWF0ZSBhIHJlZ2V4cCB0byBtYXRjaCBldmVudCB0eXBlIGluIGhhbmRsZSgpXG5cdFx0XHRuYW1lc3BhY2VzID0gdHlwZS5zcGxpdCggXCIuXCIgKTtcblx0XHRcdHR5cGUgPSBuYW1lc3BhY2VzLnNoaWZ0KCk7XG5cdFx0XHRuYW1lc3BhY2VzLnNvcnQoKTtcblx0XHR9XG5cdFx0b250eXBlID0gdHlwZS5pbmRleE9mKCBcIjpcIiApIDwgMCAmJiBcIm9uXCIgKyB0eXBlO1xuXG5cdFx0Ly8gQ2FsbGVyIGNhbiBwYXNzIGluIGEgalF1ZXJ5LkV2ZW50IG9iamVjdCwgT2JqZWN0LCBvciBqdXN0IGFuIGV2ZW50IHR5cGUgc3RyaW5nXG5cdFx0ZXZlbnQgPSBldmVudFsgalF1ZXJ5LmV4cGFuZG8gXSA/XG5cdFx0XHRldmVudCA6XG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCB0eXBlLCB0eXBlb2YgZXZlbnQgPT09IFwib2JqZWN0XCIgJiYgZXZlbnQgKTtcblxuXHRcdC8vIFRyaWdnZXIgYml0bWFzazogJiAxIGZvciBuYXRpdmUgaGFuZGxlcnM7ICYgMiBmb3IgalF1ZXJ5IChhbHdheXMgdHJ1ZSlcblx0XHRldmVudC5pc1RyaWdnZXIgPSBvbmx5SGFuZGxlcnMgPyAyIDogMztcblx0XHRldmVudC5uYW1lc3BhY2UgPSBuYW1lc3BhY2VzLmpvaW4oIFwiLlwiICk7XG5cdFx0ZXZlbnQucm5hbWVzcGFjZSA9IGV2ZW50Lm5hbWVzcGFjZSA/XG5cdFx0XHRuZXcgUmVnRXhwKCBcIihefFxcXFwuKVwiICsgbmFtZXNwYWNlcy5qb2luKCBcIlxcXFwuKD86LipcXFxcLnwpXCIgKSArIFwiKFxcXFwufCQpXCIgKSA6XG5cdFx0XHRudWxsO1xuXG5cdFx0Ly8gQ2xlYW4gdXAgdGhlIGV2ZW50IGluIGNhc2UgaXQgaXMgYmVpbmcgcmV1c2VkXG5cdFx0ZXZlbnQucmVzdWx0ID0gdW5kZWZpbmVkO1xuXHRcdGlmICggIWV2ZW50LnRhcmdldCApIHtcblx0XHRcdGV2ZW50LnRhcmdldCA9IGVsZW07XG5cdFx0fVxuXG5cdFx0Ly8gQ2xvbmUgYW55IGluY29taW5nIGRhdGEgYW5kIHByZXBlbmQgdGhlIGV2ZW50LCBjcmVhdGluZyB0aGUgaGFuZGxlciBhcmcgbGlzdFxuXHRcdGRhdGEgPSBkYXRhID09IG51bGwgP1xuXHRcdFx0WyBldmVudCBdIDpcblx0XHRcdGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEsIFsgZXZlbnQgXSApO1xuXG5cdFx0Ly8gQWxsb3cgc3BlY2lhbCBldmVudHMgdG8gZHJhdyBvdXRzaWRlIHRoZSBsaW5lc1xuXHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiBzcGVjaWFsLnRyaWdnZXIgJiYgc3BlY2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBldmVudCBwcm9wYWdhdGlvbiBwYXRoIGluIGFkdmFuY2UsIHBlciBXM0MgZXZlbnRzIHNwZWMgKCM5OTUxKVxuXHRcdC8vIEJ1YmJsZSB1cCB0byBkb2N1bWVudCwgdGhlbiB0byB3aW5kb3c7IHdhdGNoIGZvciBhIGdsb2JhbCBvd25lckRvY3VtZW50IHZhciAoIzk3MjQpXG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmICFzcGVjaWFsLm5vQnViYmxlICYmICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0YnViYmxlVHlwZSA9IHNwZWNpYWwuZGVsZWdhdGVUeXBlIHx8IHR5cGU7XG5cdFx0XHRpZiAoICFyZm9jdXNNb3JwaC50ZXN0KCBidWJibGVUeXBlICsgdHlwZSApICkge1xuXHRcdFx0XHRjdXIgPSBjdXIucGFyZW50Tm9kZTtcblx0XHRcdH1cblx0XHRcdGZvciAoIDsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0ZXZlbnRQYXRoLnB1c2goIGN1ciApO1xuXHRcdFx0XHR0bXAgPSBjdXI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE9ubHkgYWRkIHdpbmRvdyBpZiB3ZSBnb3QgdG8gZG9jdW1lbnQgKGUuZy4sIG5vdCBwbGFpbiBvYmogb3IgZGV0YWNoZWQgRE9NKVxuXHRcdFx0aWYgKCB0bXAgPT09ICggZWxlbS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50ICkgKSB7XG5cdFx0XHRcdGV2ZW50UGF0aC5wdXNoKCB0bXAuZGVmYXVsdFZpZXcgfHwgdG1wLnBhcmVudFdpbmRvdyB8fCB3aW5kb3cgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBGaXJlIGhhbmRsZXJzIG9uIHRoZSBldmVudCBwYXRoXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAoIGN1ciA9IGV2ZW50UGF0aFsgaSsrIF0gKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblxuXHRcdFx0ZXZlbnQudHlwZSA9IGkgPiAxID9cblx0XHRcdFx0YnViYmxlVHlwZSA6XG5cdFx0XHRcdHNwZWNpYWwuYmluZFR5cGUgfHwgdHlwZTtcblxuXHRcdFx0Ly8galF1ZXJ5IGhhbmRsZXJcblx0XHRcdGhhbmRsZSA9ICggZGF0YVByaXYuZ2V0KCBjdXIsIFwiZXZlbnRzXCIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gJiZcblx0XHRcdFx0ZGF0YVByaXYuZ2V0KCBjdXIsIFwiaGFuZGxlXCIgKTtcblx0XHRcdGlmICggaGFuZGxlICkge1xuXHRcdFx0XHRoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBOYXRpdmUgaGFuZGxlclxuXHRcdFx0aGFuZGxlID0gb250eXBlICYmIGN1clsgb250eXBlIF07XG5cdFx0XHRpZiAoIGhhbmRsZSAmJiBoYW5kbGUuYXBwbHkgJiYgYWNjZXB0RGF0YSggY3VyICkgKSB7XG5cdFx0XHRcdGV2ZW50LnJlc3VsdCA9IGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7XG5cdFx0XHRcdGlmICggZXZlbnQucmVzdWx0ID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGV2ZW50LnR5cGUgPSB0eXBlO1xuXG5cdFx0Ly8gSWYgbm9ib2R5IHByZXZlbnRlZCB0aGUgZGVmYXVsdCBhY3Rpb24sIGRvIGl0IG5vd1xuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiAhZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkgKSB7XG5cblx0XHRcdGlmICggKCAhc3BlY2lhbC5fZGVmYXVsdCB8fFxuXHRcdFx0XHRzcGVjaWFsLl9kZWZhdWx0LmFwcGx5KCBldmVudFBhdGgucG9wKCksIGRhdGEgKSA9PT0gZmFsc2UgKSAmJlxuXHRcdFx0XHRhY2NlcHREYXRhKCBlbGVtICkgKSB7XG5cblx0XHRcdFx0Ly8gQ2FsbCBhIG5hdGl2ZSBET00gbWV0aG9kIG9uIHRoZSB0YXJnZXQgd2l0aCB0aGUgc2FtZSBuYW1lIG5hbWUgYXMgdGhlIGV2ZW50LlxuXHRcdFx0XHQvLyBEb24ndCBkbyBkZWZhdWx0IGFjdGlvbnMgb24gd2luZG93LCB0aGF0J3Mgd2hlcmUgZ2xvYmFsIHZhcmlhYmxlcyBiZSAoIzYxNzApXG5cdFx0XHRcdGlmICggb250eXBlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBlbGVtWyB0eXBlIF0gKSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdFx0XHQvLyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9kXG5cdFx0XHRcdFx0dG1wID0gZWxlbVsgb250eXBlIF07XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gbnVsbDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBQcmV2ZW50IHJlLXRyaWdnZXJpbmcgb2YgdGhlIHNhbWUgZXZlbnQsIHNpbmNlIHdlIGFscmVhZHkgYnViYmxlZCBpdCBhYm92ZVxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB0eXBlO1xuXHRcdFx0XHRcdGVsZW1bIHR5cGUgXSgpO1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gdG1wO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0Ly8gUGlnZ3liYWNrIG9uIGEgZG9ub3IgZXZlbnQgdG8gc2ltdWxhdGUgYSBkaWZmZXJlbnQgb25lXG5cdC8vIFVzZWQgb25seSBmb3IgYGZvY3VzKGluIHwgb3V0KWAgZXZlbnRzXG5cdHNpbXVsYXRlOiBmdW5jdGlvbiggdHlwZSwgZWxlbSwgZXZlbnQgKSB7XG5cdFx0dmFyIGUgPSBqUXVlcnkuZXh0ZW5kKFxuXHRcdFx0bmV3IGpRdWVyeS5FdmVudCgpLFxuXHRcdFx0ZXZlbnQsXG5cdFx0XHR7XG5cdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdGlzU2ltdWxhdGVkOiB0cnVlXG5cdFx0XHR9XG5cdFx0KTtcblxuXHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCBlLCBudWxsLCBlbGVtICk7XG5cdH1cblxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0dHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpcyApO1xuXHRcdH0gKTtcblx0fSxcblx0dHJpZ2dlckhhbmRsZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBlbGVtID0gdGhpc1sgMCBdO1xuXHRcdGlmICggZWxlbSApIHtcblx0XHRcdHJldHVybiBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgZWxlbSwgdHJ1ZSApO1xuXHRcdH1cblx0fVxufSApO1xuXG5cbmpRdWVyeS5lYWNoKCAoIFwiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgXCIgK1xuXHRcIm1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIFwiICtcblx0XCJjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGVycm9yIGNvbnRleHRtZW51XCIgKS5zcGxpdCggXCIgXCIgKSxcblx0ZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cblx0Ly8gSGFuZGxlIGV2ZW50IGJpbmRpbmdcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID9cblx0XHRcdHRoaXMub24oIG5hbWUsIG51bGwsIGRhdGEsIGZuICkgOlxuXHRcdFx0dGhpcy50cmlnZ2VyKCBuYW1lICk7XG5cdH07XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0aG92ZXI6IGZ1bmN0aW9uKCBmbk92ZXIsIGZuT3V0ICkge1xuXHRcdHJldHVybiB0aGlzLm1vdXNlZW50ZXIoIGZuT3ZlciApLm1vdXNlbGVhdmUoIGZuT3V0IHx8IGZuT3ZlciApO1xuXHR9XG59ICk7XG5cblxuXG5cbnN1cHBvcnQuZm9jdXNpbiA9IFwib25mb2N1c2luXCIgaW4gd2luZG93O1xuXG5cbi8vIFN1cHBvcnQ6IEZpcmVmb3hcbi8vIEZpcmVmb3ggZG9lc24ndCBoYXZlIGZvY3VzKGluIHwgb3V0KSBldmVudHNcbi8vIFJlbGF0ZWQgdGlja2V0IC0gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg3Nzg3XG4vL1xuLy8gU3VwcG9ydDogQ2hyb21lLCBTYWZhcmlcbi8vIGZvY3VzKGluIHwgb3V0KSBldmVudHMgZmlyZSBhZnRlciBmb2N1cyAmIGJsdXIgZXZlbnRzLFxuLy8gd2hpY2ggaXMgc3BlYyB2aW9sYXRpb24gLSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50cy1mb2N1c2V2ZW50LWV2ZW50LW9yZGVyXG4vLyBSZWxhdGVkIHRpY2tldCAtIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NDk4NTdcbmlmICggIXN1cHBvcnQuZm9jdXNpbiApIHtcblx0alF1ZXJ5LmVhY2goIHsgZm9jdXM6IFwiZm9jdXNpblwiLCBibHVyOiBcImZvY3Vzb3V0XCIgfSwgZnVuY3Rpb24oIG9yaWcsIGZpeCApIHtcblxuXHRcdC8vIEF0dGFjaCBhIHNpbmdsZSBjYXB0dXJpbmcgaGFuZGxlciBvbiB0aGUgZG9jdW1lbnQgd2hpbGUgc29tZW9uZSB3YW50cyBmb2N1c2luL2ZvY3Vzb3V0XG5cdFx0dmFyIGhhbmRsZXIgPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQuc2ltdWxhdGUoIGZpeCwgZXZlbnQudGFyZ2V0LCBqUXVlcnkuZXZlbnQuZml4KCBldmVudCApICk7XG5cdFx0fTtcblxuXHRcdGpRdWVyeS5ldmVudC5zcGVjaWFsWyBmaXggXSA9IHtcblx0XHRcdHNldHVwOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLFxuXHRcdFx0XHRcdGF0dGFjaGVzID0gZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCApO1xuXG5cdFx0XHRcdGlmICggIWF0dGFjaGVzICkge1xuXHRcdFx0XHRcdGRvYy5hZGRFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCwgKCBhdHRhY2hlcyB8fCAwICkgKyAxICk7XG5cdFx0XHR9LFxuXHRcdFx0dGVhcmRvd246IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZG9jID0gdGhpcy5vd25lckRvY3VtZW50IHx8IHRoaXMsXG5cdFx0XHRcdFx0YXR0YWNoZXMgPSBkYXRhUHJpdi5hY2Nlc3MoIGRvYywgZml4ICkgLSAxO1xuXG5cdFx0XHRcdGlmICggIWF0dGFjaGVzICkge1xuXHRcdFx0XHRcdGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7XG5cdFx0XHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBkb2MsIGZpeCApO1xuXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCwgYXR0YWNoZXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH0gKTtcbn1cbnZhciBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjtcblxudmFyIG5vbmNlID0galF1ZXJ5Lm5vdygpO1xuXG52YXIgcnF1ZXJ5ID0gKCAvXFw/LyApO1xuXG5cblxuLy8gU3VwcG9ydDogQW5kcm9pZCAyLjNcbi8vIFdvcmthcm91bmQgZmFpbHVyZSB0byBzdHJpbmctY2FzdCBudWxsIGlucHV0XG5qUXVlcnkucGFyc2VKU09OID0gZnVuY3Rpb24oIGRhdGEgKSB7XG5cdHJldHVybiBKU09OLnBhcnNlKCBkYXRhICsgXCJcIiApO1xufTtcblxuXG4vLyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nXG5qUXVlcnkucGFyc2VYTUwgPSBmdW5jdGlvbiggZGF0YSApIHtcblx0dmFyIHhtbDtcblx0aWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFOVxuXHR0cnkge1xuXHRcdHhtbCA9ICggbmV3IHdpbmRvdy5ET01QYXJzZXIoKSApLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgXCJ0ZXh0L3htbFwiICk7XG5cdH0gY2F0Y2ggKCBlICkge1xuXHRcdHhtbCA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGlmICggIXhtbCB8fCB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIFwicGFyc2VyZXJyb3JcIiApLmxlbmd0aCApIHtcblx0XHRqUXVlcnkuZXJyb3IoIFwiSW52YWxpZCBYTUw6IFwiICsgZGF0YSApO1xuXHR9XG5cdHJldHVybiB4bWw7XG59O1xuXG5cbnZhclxuXHRyaGFzaCA9IC8jLiokLyxcblx0cnRzID0gLyhbPyZdKV89W14mXSovLFxuXHRyaGVhZGVycyA9IC9eKC4qPyk6WyBcXHRdKihbXlxcclxcbl0qKSQvbWcsXG5cblx0Ly8gIzc2NTMsICM4MTI1LCAjODE1MjogbG9jYWwgcHJvdG9jb2wgZGV0ZWN0aW9uXG5cdHJsb2NhbFByb3RvY29sID0gL14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sXG5cdHJub0NvbnRlbnQgPSAvXig/OkdFVHxIRUFEKSQvLFxuXHRycHJvdG9jb2wgPSAvXlxcL1xcLy8sXG5cblx0LyogUHJlZmlsdGVyc1xuXHQgKiAxKSBUaGV5IGFyZSB1c2VmdWwgdG8gaW50cm9kdWNlIGN1c3RvbSBkYXRhVHlwZXMgKHNlZSBhamF4L2pzb25wLmpzIGZvciBhbiBleGFtcGxlKVxuXHQgKiAyKSBUaGVzZSBhcmUgY2FsbGVkOlxuXHQgKiAgICAtIEJFRk9SRSBhc2tpbmcgZm9yIGEgdHJhbnNwb3J0XG5cdCAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFsaXphdGlvbiAocy5kYXRhIGlzIGEgc3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSlcblx0ICogMykga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiA0KSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDUpIGV4ZWN1dGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRvd24gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHRwcmVmaWx0ZXJzID0ge30sXG5cblx0LyogVHJhbnNwb3J0cyBiaW5kaW5nc1xuXHQgKiAxKSBrZXkgaXMgdGhlIGRhdGFUeXBlXG5cdCAqIDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgXCIqXCIgY2FuIGJlIHVzZWRcblx0ICogMykgc2VsZWN0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gZ28gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHR0cmFuc3BvcnRzID0ge30sXG5cblx0Ly8gQXZvaWQgY29tbWVudC1wcm9sb2cgY2hhciBzZXF1ZW5jZSAoIzEwMDk4KTsgbXVzdCBhcHBlYXNlIGxpbnQgYW5kIGV2YWRlIGNvbXByZXNzaW9uXG5cdGFsbFR5cGVzID0gXCIqL1wiLmNvbmNhdCggXCIqXCIgKSxcblxuXHQvLyBBbmNob3IgdGFnIGZvciBwYXJzaW5nIHRoZSBkb2N1bWVudCBvcmlnaW5cblx0b3JpZ2luQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJhXCIgKTtcblx0b3JpZ2luQW5jaG9yLmhyZWYgPSBsb2NhdGlvbi5ocmVmO1xuXG4vLyBCYXNlIFwiY29uc3RydWN0b3JcIiBmb3IgalF1ZXJ5LmFqYXhQcmVmaWx0ZXIgYW5kIGpRdWVyeS5hamF4VHJhbnNwb3J0XG5mdW5jdGlvbiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSApIHtcblxuXHQvLyBkYXRhVHlwZUV4cHJlc3Npb24gaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIFwiKlwiXG5cdHJldHVybiBmdW5jdGlvbiggZGF0YVR5cGVFeHByZXNzaW9uLCBmdW5jICkge1xuXG5cdFx0aWYgKCB0eXBlb2YgZGF0YVR5cGVFeHByZXNzaW9uICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0ZnVuYyA9IGRhdGFUeXBlRXhwcmVzc2lvbjtcblx0XHRcdGRhdGFUeXBlRXhwcmVzc2lvbiA9IFwiKlwiO1xuXHRcdH1cblxuXHRcdHZhciBkYXRhVHlwZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0ZGF0YVR5cGVzID0gZGF0YVR5cGVFeHByZXNzaW9uLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3R3aGl0ZSApIHx8IFtdO1xuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggZnVuYyApICkge1xuXG5cdFx0XHQvLyBGb3IgZWFjaCBkYXRhVHlwZSBpbiB0aGUgZGF0YVR5cGVFeHByZXNzaW9uXG5cdFx0XHR3aGlsZSAoICggZGF0YVR5cGUgPSBkYXRhVHlwZXNbIGkrKyBdICkgKSB7XG5cblx0XHRcdFx0Ly8gUHJlcGVuZCBpZiByZXF1ZXN0ZWRcblx0XHRcdFx0aWYgKCBkYXRhVHlwZVsgMCBdID09PSBcIitcIiApIHtcblx0XHRcdFx0XHRkYXRhVHlwZSA9IGRhdGFUeXBlLnNsaWNlKCAxICkgfHwgXCIqXCI7XG5cdFx0XHRcdFx0KCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10gKS51bnNoaWZ0KCBmdW5jICk7XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIGFwcGVuZFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdCggc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdICkucHVzaCggZnVuYyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuXG4vLyBCYXNlIGluc3BlY3Rpb24gZnVuY3Rpb24gZm9yIHByZWZpbHRlcnMgYW5kIHRyYW5zcG9ydHNcbmZ1bmN0aW9uIGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUsIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKSB7XG5cblx0dmFyIGluc3BlY3RlZCA9IHt9LFxuXHRcdHNlZWtpbmdUcmFuc3BvcnQgPSAoIHN0cnVjdHVyZSA9PT0gdHJhbnNwb3J0cyApO1xuXG5cdGZ1bmN0aW9uIGluc3BlY3QoIGRhdGFUeXBlICkge1xuXHRcdHZhciBzZWxlY3RlZDtcblx0XHRpbnNwZWN0ZWRbIGRhdGFUeXBlIF0gPSB0cnVlO1xuXHRcdGpRdWVyeS5lYWNoKCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10sIGZ1bmN0aW9uKCBfLCBwcmVmaWx0ZXJPckZhY3RvcnkgKSB7XG5cdFx0XHR2YXIgZGF0YVR5cGVPclRyYW5zcG9ydCA9IHByZWZpbHRlck9yRmFjdG9yeSggb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiApO1xuXHRcdFx0aWYgKCB0eXBlb2YgZGF0YVR5cGVPclRyYW5zcG9ydCA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHQhc2Vla2luZ1RyYW5zcG9ydCAmJiAhaW5zcGVjdGVkWyBkYXRhVHlwZU9yVHJhbnNwb3J0IF0gKSB7XG5cblx0XHRcdFx0b3B0aW9ucy5kYXRhVHlwZXMudW5zaGlmdCggZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0XHRpbnNwZWN0KCBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0gZWxzZSBpZiAoIHNlZWtpbmdUcmFuc3BvcnQgKSB7XG5cdFx0XHRcdHJldHVybiAhKCBzZWxlY3RlZCA9IGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdFx0cmV0dXJuIHNlbGVjdGVkO1xuXHR9XG5cblx0cmV0dXJuIGluc3BlY3QoIG9wdGlvbnMuZGF0YVR5cGVzWyAwIF0gKSB8fCAhaW5zcGVjdGVkWyBcIipcIiBdICYmIGluc3BlY3QoIFwiKlwiICk7XG59XG5cbi8vIEEgc3BlY2lhbCBleHRlbmQgZm9yIGFqYXggb3B0aW9uc1xuLy8gdGhhdCB0YWtlcyBcImZsYXRcIiBvcHRpb25zIChub3QgdG8gYmUgZGVlcCBleHRlbmRlZClcbi8vIEZpeGVzICM5ODg3XG5mdW5jdGlvbiBhamF4RXh0ZW5kKCB0YXJnZXQsIHNyYyApIHtcblx0dmFyIGtleSwgZGVlcCxcblx0XHRmbGF0T3B0aW9ucyA9IGpRdWVyeS5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnMgfHwge307XG5cblx0Zm9yICgga2V5IGluIHNyYyApIHtcblx0XHRpZiAoIHNyY1sga2V5IF0gIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdCggZmxhdE9wdGlvbnNbIGtleSBdID8gdGFyZ2V0IDogKCBkZWVwIHx8ICggZGVlcCA9IHt9ICkgKSApWyBrZXkgXSA9IHNyY1sga2V5IF07XG5cdFx0fVxuXHR9XG5cdGlmICggZGVlcCApIHtcblx0XHRqUXVlcnkuZXh0ZW5kKCB0cnVlLCB0YXJnZXQsIGRlZXAgKTtcblx0fVxuXG5cdHJldHVybiB0YXJnZXQ7XG59XG5cbi8qIEhhbmRsZXMgcmVzcG9uc2VzIHRvIGFuIGFqYXggcmVxdWVzdDpcbiAqIC0gZmluZHMgdGhlIHJpZ2h0IGRhdGFUeXBlIChtZWRpYXRlcyBiZXR3ZWVuIGNvbnRlbnQtdHlwZSBhbmQgZXhwZWN0ZWQgZGF0YVR5cGUpXG4gKiAtIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2VcbiAqL1xuZnVuY3Rpb24gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApIHtcblxuXHR2YXIgY3QsIHR5cGUsIGZpbmFsRGF0YVR5cGUsIGZpcnN0RGF0YVR5cGUsXG5cdFx0Y29udGVudHMgPSBzLmNvbnRlbnRzLFxuXHRcdGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzO1xuXG5cdC8vIFJlbW92ZSBhdXRvIGRhdGFUeXBlIGFuZCBnZXQgY29udGVudC10eXBlIGluIHRoZSBwcm9jZXNzXG5cdHdoaWxlICggZGF0YVR5cGVzWyAwIF0gPT09IFwiKlwiICkge1xuXHRcdGRhdGFUeXBlcy5zaGlmdCgpO1xuXHRcdGlmICggY3QgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGN0ID0gcy5taW1lVHlwZSB8fCBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggXCJDb250ZW50LVR5cGVcIiApO1xuXHRcdH1cblx0fVxuXG5cdC8vIENoZWNrIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGtub3duIGNvbnRlbnQtdHlwZVxuXHRpZiAoIGN0ICkge1xuXHRcdGZvciAoIHR5cGUgaW4gY29udGVudHMgKSB7XG5cdFx0XHRpZiAoIGNvbnRlbnRzWyB0eXBlIF0gJiYgY29udGVudHNbIHR5cGUgXS50ZXN0KCBjdCApICkge1xuXHRcdFx0XHRkYXRhVHlwZXMudW5zaGlmdCggdHlwZSApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBhIHJlc3BvbnNlIGZvciB0aGUgZXhwZWN0ZWQgZGF0YVR5cGVcblx0aWYgKCBkYXRhVHlwZXNbIDAgXSBpbiByZXNwb25zZXMgKSB7XG5cdFx0ZmluYWxEYXRhVHlwZSA9IGRhdGFUeXBlc1sgMCBdO1xuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gVHJ5IGNvbnZlcnRpYmxlIGRhdGFUeXBlc1xuXHRcdGZvciAoIHR5cGUgaW4gcmVzcG9uc2VzICkge1xuXHRcdFx0aWYgKCAhZGF0YVR5cGVzWyAwIF0gfHwgcy5jb252ZXJ0ZXJzWyB0eXBlICsgXCIgXCIgKyBkYXRhVHlwZXNbIDAgXSBdICkge1xuXHRcdFx0XHRmaW5hbERhdGFUeXBlID0gdHlwZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoICFmaXJzdERhdGFUeXBlICkge1xuXHRcdFx0XHRmaXJzdERhdGFUeXBlID0gdHlwZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBPciBqdXN0IHVzZSBmaXJzdCBvbmVcblx0XHRmaW5hbERhdGFUeXBlID0gZmluYWxEYXRhVHlwZSB8fCBmaXJzdERhdGFUeXBlO1xuXHR9XG5cblx0Ly8gSWYgd2UgZm91bmQgYSBkYXRhVHlwZVxuXHQvLyBXZSBhZGQgdGhlIGRhdGFUeXBlIHRvIHRoZSBsaXN0IGlmIG5lZWRlZFxuXHQvLyBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXG5cdGlmICggZmluYWxEYXRhVHlwZSApIHtcblx0XHRpZiAoIGZpbmFsRGF0YVR5cGUgIT09IGRhdGFUeXBlc1sgMCBdICkge1xuXHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIGZpbmFsRGF0YVR5cGUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3BvbnNlc1sgZmluYWxEYXRhVHlwZSBdO1xuXHR9XG59XG5cbi8qIENoYWluIGNvbnZlcnNpb25zIGdpdmVuIHRoZSByZXF1ZXN0IGFuZCB0aGUgb3JpZ2luYWwgcmVzcG9uc2VcbiAqIEFsc28gc2V0cyB0aGUgcmVzcG9uc2VYWFggZmllbGRzIG9uIHRoZSBqcVhIUiBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKSB7XG5cdHZhciBjb252MiwgY3VycmVudCwgY29udiwgdG1wLCBwcmV2LFxuXHRcdGNvbnZlcnRlcnMgPSB7fSxcblxuXHRcdC8vIFdvcmsgd2l0aCBhIGNvcHkgb2YgZGF0YVR5cGVzIGluIGNhc2Ugd2UgbmVlZCB0byBtb2RpZnkgaXQgZm9yIGNvbnZlcnNpb25cblx0XHRkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcy5zbGljZSgpO1xuXG5cdC8vIENyZWF0ZSBjb252ZXJ0ZXJzIG1hcCB3aXRoIGxvd2VyY2FzZWQga2V5c1xuXHRpZiAoIGRhdGFUeXBlc1sgMSBdICkge1xuXHRcdGZvciAoIGNvbnYgaW4gcy5jb252ZXJ0ZXJzICkge1xuXHRcdFx0Y29udmVydGVyc1sgY29udi50b0xvd2VyQ2FzZSgpIF0gPSBzLmNvbnZlcnRlcnNbIGNvbnYgXTtcblx0XHR9XG5cdH1cblxuXHRjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0KCk7XG5cblx0Ly8gQ29udmVydCB0byBlYWNoIHNlcXVlbnRpYWwgZGF0YVR5cGVcblx0d2hpbGUgKCBjdXJyZW50ICkge1xuXG5cdFx0aWYgKCBzLnJlc3BvbnNlRmllbGRzWyBjdXJyZW50IF0gKSB7XG5cdFx0XHRqcVhIUlsgcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdIF0gPSByZXNwb25zZTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSB0aGUgZGF0YUZpbHRlciBpZiBwcm92aWRlZFxuXHRcdGlmICggIXByZXYgJiYgaXNTdWNjZXNzICYmIHMuZGF0YUZpbHRlciApIHtcblx0XHRcdHJlc3BvbnNlID0gcy5kYXRhRmlsdGVyKCByZXNwb25zZSwgcy5kYXRhVHlwZSApO1xuXHRcdH1cblxuXHRcdHByZXYgPSBjdXJyZW50O1xuXHRcdGN1cnJlbnQgPSBkYXRhVHlwZXMuc2hpZnQoKTtcblxuXHRcdGlmICggY3VycmVudCApIHtcblxuXHRcdC8vIFRoZXJlJ3Mgb25seSB3b3JrIHRvIGRvIGlmIGN1cnJlbnQgZGF0YVR5cGUgaXMgbm9uLWF1dG9cblx0XHRcdGlmICggY3VycmVudCA9PT0gXCIqXCIgKSB7XG5cblx0XHRcdFx0Y3VycmVudCA9IHByZXY7XG5cblx0XHRcdC8vIENvbnZlcnQgcmVzcG9uc2UgaWYgcHJldiBkYXRhVHlwZSBpcyBub24tYXV0byBhbmQgZGlmZmVycyBmcm9tIGN1cnJlbnRcblx0XHRcdH0gZWxzZSBpZiAoIHByZXYgIT09IFwiKlwiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU2VlayBhIGRpcmVjdCBjb252ZXJ0ZXJcblx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIGN1cnJlbnQgXSB8fCBjb252ZXJ0ZXJzWyBcIiogXCIgKyBjdXJyZW50IF07XG5cblx0XHRcdFx0Ly8gSWYgbm9uZSBmb3VuZCwgc2VlayBhIHBhaXJcblx0XHRcdFx0aWYgKCAhY29udiApIHtcblx0XHRcdFx0XHRmb3IgKCBjb252MiBpbiBjb252ZXJ0ZXJzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBJZiBjb252MiBvdXRwdXRzIGN1cnJlbnRcblx0XHRcdFx0XHRcdHRtcCA9IGNvbnYyLnNwbGl0KCBcIiBcIiApO1xuXHRcdFx0XHRcdFx0aWYgKCB0bXBbIDEgXSA9PT0gY3VycmVudCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBJZiBwcmV2IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYWNjZXB0ZWQgaW5wdXRcblx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIHRtcFsgMCBdIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJzWyBcIiogXCIgKyB0bXBbIDAgXSBdO1xuXHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBjb252ZXJ0ZXJzXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBjb252ID09PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIGNvbnYyIF07XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGluc2VydCB0aGUgaW50ZXJtZWRpYXRlIGRhdGFUeXBlXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggY29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnQgPSB0bXBbIDAgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCB0bXBbIDEgXSApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFwcGx5IGNvbnZlcnRlciAoaWYgbm90IGFuIGVxdWl2YWxlbmNlKVxuXHRcdFx0XHRpZiAoIGNvbnYgIT09IHRydWUgKSB7XG5cblx0XHRcdFx0XHQvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2VkIHRvIGJ1YmJsZSwgY2F0Y2ggYW5kIHJldHVybiB0aGVtXG5cdFx0XHRcdFx0aWYgKCBjb252ICYmIHMudGhyb3dzICkge1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZTogXCJwYXJzZXJlcnJvclwiLFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yOiBjb252ID8gZSA6IFwiTm8gY29udmVyc2lvbiBmcm9tIFwiICsgcHJldiArIFwiIHRvIFwiICsgY3VycmVudFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHN0YXRlOiBcInN1Y2Nlc3NcIiwgZGF0YTogcmVzcG9uc2UgfTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIENvdW50ZXIgZm9yIGhvbGRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUgcXVlcmllc1xuXHRhY3RpdmU6IDAsXG5cblx0Ly8gTGFzdC1Nb2RpZmllZCBoZWFkZXIgY2FjaGUgZm9yIG5leHQgcmVxdWVzdFxuXHRsYXN0TW9kaWZpZWQ6IHt9LFxuXHRldGFnOiB7fSxcblxuXHRhamF4U2V0dGluZ3M6IHtcblx0XHR1cmw6IGxvY2F0aW9uLmhyZWYsXG5cdFx0dHlwZTogXCJHRVRcIixcblx0XHRpc0xvY2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBsb2NhdGlvbi5wcm90b2NvbCApLFxuXHRcdGdsb2JhbDogdHJ1ZSxcblx0XHRwcm9jZXNzRGF0YTogdHJ1ZSxcblx0XHRhc3luYzogdHJ1ZSxcblx0XHRjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIixcblx0XHQvKlxuXHRcdHRpbWVvdXQ6IDAsXG5cdFx0ZGF0YTogbnVsbCxcblx0XHRkYXRhVHlwZTogbnVsbCxcblx0XHR1c2VybmFtZTogbnVsbCxcblx0XHRwYXNzd29yZDogbnVsbCxcblx0XHRjYWNoZTogbnVsbCxcblx0XHR0aHJvd3M6IGZhbHNlLFxuXHRcdHRyYWRpdGlvbmFsOiBmYWxzZSxcblx0XHRoZWFkZXJzOiB7fSxcblx0XHQqL1xuXG5cdFx0YWNjZXB0czoge1xuXHRcdFx0XCIqXCI6IGFsbFR5cGVzLFxuXHRcdFx0dGV4dDogXCJ0ZXh0L3BsYWluXCIsXG5cdFx0XHRodG1sOiBcInRleHQvaHRtbFwiLFxuXHRcdFx0eG1sOiBcImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWxcIixcblx0XHRcdGpzb246IFwiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0XCJcblx0XHR9LFxuXG5cdFx0Y29udGVudHM6IHtcblx0XHRcdHhtbDogL1xcYnhtbFxcYi8sXG5cdFx0XHRodG1sOiAvXFxiaHRtbC8sXG5cdFx0XHRqc29uOiAvXFxianNvblxcYi9cblx0XHR9LFxuXG5cdFx0cmVzcG9uc2VGaWVsZHM6IHtcblx0XHRcdHhtbDogXCJyZXNwb25zZVhNTFwiLFxuXHRcdFx0dGV4dDogXCJyZXNwb25zZVRleHRcIixcblx0XHRcdGpzb246IFwicmVzcG9uc2VKU09OXCJcblx0XHR9LFxuXG5cdFx0Ly8gRGF0YSBjb252ZXJ0ZXJzXG5cdFx0Ly8gS2V5cyBzZXBhcmF0ZSBzb3VyY2UgKG9yIGNhdGNoYWxsIFwiKlwiKSBhbmQgZGVzdGluYXRpb24gdHlwZXMgd2l0aCBhIHNpbmdsZSBzcGFjZVxuXHRcdGNvbnZlcnRlcnM6IHtcblxuXHRcdFx0Ly8gQ29udmVydCBhbnl0aGluZyB0byB0ZXh0XG5cdFx0XHRcIiogdGV4dFwiOiBTdHJpbmcsXG5cblx0XHRcdC8vIFRleHQgdG8gaHRtbCAodHJ1ZSA9IG5vIHRyYW5zZm9ybWF0aW9uKVxuXHRcdFx0XCJ0ZXh0IGh0bWxcIjogdHJ1ZSxcblxuXHRcdFx0Ly8gRXZhbHVhdGUgdGV4dCBhcyBhIGpzb24gZXhwcmVzc2lvblxuXHRcdFx0XCJ0ZXh0IGpzb25cIjogalF1ZXJ5LnBhcnNlSlNPTixcblxuXHRcdFx0Ly8gUGFyc2UgdGV4dCBhcyB4bWxcblx0XHRcdFwidGV4dCB4bWxcIjogalF1ZXJ5LnBhcnNlWE1MXG5cdFx0fSxcblxuXHRcdC8vIEZvciBvcHRpb25zIHRoYXQgc2hvdWxkbid0IGJlIGRlZXAgZXh0ZW5kZWQ6XG5cdFx0Ly8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIG9wdGlvbnMgaGVyZSBpZlxuXHRcdC8vIGFuZCB3aGVuIHlvdSBjcmVhdGUgb25lIHRoYXQgc2hvdWxkbid0IGJlXG5cdFx0Ly8gZGVlcCBleHRlbmRlZCAoc2VlIGFqYXhFeHRlbmQpXG5cdFx0ZmxhdE9wdGlvbnM6IHtcblx0XHRcdHVybDogdHJ1ZSxcblx0XHRcdGNvbnRleHQ6IHRydWVcblx0XHR9XG5cdH0sXG5cblx0Ly8gQ3JlYXRlcyBhIGZ1bGwgZmxlZGdlZCBzZXR0aW5ncyBvYmplY3QgaW50byB0YXJnZXRcblx0Ly8gd2l0aCBib3RoIGFqYXhTZXR0aW5ncyBhbmQgc2V0dGluZ3MgZmllbGRzLlxuXHQvLyBJZiB0YXJnZXQgaXMgb21pdHRlZCwgd3JpdGVzIGludG8gYWpheFNldHRpbmdzLlxuXHRhamF4U2V0dXA6IGZ1bmN0aW9uKCB0YXJnZXQsIHNldHRpbmdzICkge1xuXHRcdHJldHVybiBzZXR0aW5ncyA/XG5cblx0XHRcdC8vIEJ1aWxkaW5nIGEgc2V0dGluZ3Mgb2JqZWN0XG5cdFx0XHRhamF4RXh0ZW5kKCBhamF4RXh0ZW5kKCB0YXJnZXQsIGpRdWVyeS5hamF4U2V0dGluZ3MgKSwgc2V0dGluZ3MgKSA6XG5cblx0XHRcdC8vIEV4dGVuZGluZyBhamF4U2V0dGluZ3Ncblx0XHRcdGFqYXhFeHRlbmQoIGpRdWVyeS5hamF4U2V0dGluZ3MsIHRhcmdldCApO1xuXHR9LFxuXG5cdGFqYXhQcmVmaWx0ZXI6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycyApLFxuXHRhamF4VHJhbnNwb3J0OiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMgKSxcblxuXHQvLyBNYWluIG1ldGhvZFxuXHRhamF4OiBmdW5jdGlvbiggdXJsLCBvcHRpb25zICkge1xuXG5cdFx0Ly8gSWYgdXJsIGlzIGFuIG9iamVjdCwgc2ltdWxhdGUgcHJlLTEuNSBzaWduYXR1cmVcblx0XHRpZiAoIHR5cGVvZiB1cmwgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRvcHRpb25zID0gdXJsO1xuXHRcdFx0dXJsID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIEZvcmNlIG9wdGlvbnMgdG8gYmUgYW4gb2JqZWN0XG5cdFx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cblx0XHR2YXIgdHJhbnNwb3J0LFxuXG5cdFx0XHQvLyBVUkwgd2l0aG91dCBhbnRpLWNhY2hlIHBhcmFtXG5cdFx0XHRjYWNoZVVSTCxcblxuXHRcdFx0Ly8gUmVzcG9uc2UgaGVhZGVyc1xuXHRcdFx0cmVzcG9uc2VIZWFkZXJzU3RyaW5nLFxuXHRcdFx0cmVzcG9uc2VIZWFkZXJzLFxuXG5cdFx0XHQvLyB0aW1lb3V0IGhhbmRsZVxuXHRcdFx0dGltZW91dFRpbWVyLFxuXG5cdFx0XHQvLyBVcmwgY2xlYW51cCB2YXJcblx0XHRcdHVybEFuY2hvcixcblxuXHRcdFx0Ly8gVG8ga25vdyBpZiBnbG9iYWwgZXZlbnRzIGFyZSB0byBiZSBkaXNwYXRjaGVkXG5cdFx0XHRmaXJlR2xvYmFscyxcblxuXHRcdFx0Ly8gTG9vcCB2YXJpYWJsZVxuXHRcdFx0aSxcblxuXHRcdFx0Ly8gQ3JlYXRlIHRoZSBmaW5hbCBvcHRpb25zIG9iamVjdFxuXHRcdFx0cyA9IGpRdWVyeS5hamF4U2V0dXAoIHt9LCBvcHRpb25zICksXG5cblx0XHRcdC8vIENhbGxiYWNrcyBjb250ZXh0XG5cdFx0XHRjYWxsYmFja0NvbnRleHQgPSBzLmNvbnRleHQgfHwgcyxcblxuXHRcdFx0Ly8gQ29udGV4dCBmb3IgZ2xvYmFsIGV2ZW50cyBpcyBjYWxsYmFja0NvbnRleHQgaWYgaXQgaXMgYSBET00gbm9kZSBvciBqUXVlcnkgY29sbGVjdGlvblxuXHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0ID0gcy5jb250ZXh0ICYmXG5cdFx0XHRcdCggY2FsbGJhY2tDb250ZXh0Lm5vZGVUeXBlIHx8IGNhbGxiYWNrQ29udGV4dC5qcXVlcnkgKSA/XG5cdFx0XHRcdFx0alF1ZXJ5KCBjYWxsYmFja0NvbnRleHQgKSA6XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LFxuXG5cdFx0XHQvLyBEZWZlcnJlZHNcblx0XHRcdGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCksXG5cdFx0XHRjb21wbGV0ZURlZmVycmVkID0galF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksXG5cblx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRzdGF0dXNDb2RlID0gcy5zdGF0dXNDb2RlIHx8IHt9LFxuXG5cdFx0XHQvLyBIZWFkZXJzICh0aGV5IGFyZSBzZW50IGFsbCBhdCBvbmNlKVxuXHRcdFx0cmVxdWVzdEhlYWRlcnMgPSB7fSxcblx0XHRcdHJlcXVlc3RIZWFkZXJzTmFtZXMgPSB7fSxcblxuXHRcdFx0Ly8gVGhlIGpxWEhSIHN0YXRlXG5cdFx0XHRzdGF0ZSA9IDAsXG5cblx0XHRcdC8vIERlZmF1bHQgYWJvcnQgbWVzc2FnZVxuXHRcdFx0c3RyQWJvcnQgPSBcImNhbmNlbGVkXCIsXG5cblx0XHRcdC8vIEZha2UgeGhyXG5cdFx0XHRqcVhIUiA9IHtcblx0XHRcdFx0cmVhZHlTdGF0ZTogMCxcblxuXHRcdFx0XHQvLyBCdWlsZHMgaGVhZGVycyBoYXNodGFibGUgaWYgbmVlZGVkXG5cdFx0XHRcdGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdFx0XHRcdHZhciBtYXRjaDtcblx0XHRcdFx0XHRpZiAoIHN0YXRlID09PSAyICkge1xuXHRcdFx0XHRcdFx0aWYgKCAhcmVzcG9uc2VIZWFkZXJzICkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZUhlYWRlcnMgPSB7fTtcblx0XHRcdFx0XHRcdFx0d2hpbGUgKCAoIG1hdGNoID0gcmhlYWRlcnMuZXhlYyggcmVzcG9uc2VIZWFkZXJzU3RyaW5nICkgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXNwb25zZUhlYWRlcnNbIG1hdGNoWyAxIF0udG9Mb3dlckNhc2UoKSBdID0gbWF0Y2hbIDIgXTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0bWF0Y2ggPSByZXNwb25zZUhlYWRlcnNbIGtleS50b0xvd2VyQ2FzZSgpIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBtYXRjaCA9PSBudWxsID8gbnVsbCA6IG1hdGNoO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIFJhdyBzdHJpbmdcblx0XHRcdFx0Z2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gc3RhdGUgPT09IDIgPyByZXNwb25zZUhlYWRlcnNTdHJpbmcgOiBudWxsO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIENhY2hlcyB0aGUgaGVhZGVyXG5cdFx0XHRcdHNldFJlcXVlc3RIZWFkZXI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRcdFx0XHR2YXIgbG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdFx0aWYgKCAhc3RhdGUgKSB7XG5cdFx0XHRcdFx0XHRuYW1lID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbG5hbWUgXSA9IHJlcXVlc3RIZWFkZXJzTmFtZXNbIGxuYW1lIF0gfHwgbmFtZTtcblx0XHRcdFx0XHRcdHJlcXVlc3RIZWFkZXJzWyBuYW1lIF0gPSB2YWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gT3ZlcnJpZGVzIHJlc3BvbnNlIGNvbnRlbnQtdHlwZSBoZWFkZXJcblx0XHRcdFx0b3ZlcnJpZGVNaW1lVHlwZTogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0XHRcdFx0aWYgKCAhc3RhdGUgKSB7XG5cdFx0XHRcdFx0XHRzLm1pbWVUeXBlID0gdHlwZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3Ncblx0XHRcdFx0c3RhdHVzQ29kZTogZnVuY3Rpb24oIG1hcCApIHtcblx0XHRcdFx0XHR2YXIgY29kZTtcblx0XHRcdFx0XHRpZiAoIG1hcCApIHtcblx0XHRcdFx0XHRcdGlmICggc3RhdGUgPCAyICkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKCBjb2RlIGluIG1hcCApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2sgaW4gYSB3YXkgdGhhdCBwcmVzZXJ2ZXMgb2xkIG9uZXNcblx0XHRcdFx0XHRcdFx0XHRzdGF0dXNDb2RlWyBjb2RlIF0gPSBbIHN0YXR1c0NvZGVbIGNvZGUgXSwgbWFwWyBjb2RlIF0gXTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3Ncblx0XHRcdFx0XHRcdFx0anFYSFIuYWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBdICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIENhbmNlbCB0aGUgcmVxdWVzdFxuXHRcdFx0XHRhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0dmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7XG5cdFx0XHRcdFx0aWYgKCB0cmFuc3BvcnQgKSB7XG5cdFx0XHRcdFx0XHR0cmFuc3BvcnQuYWJvcnQoIGZpbmFsVGV4dCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkb25lKCAwLCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdC8vIEF0dGFjaCBkZWZlcnJlZHNcblx0XHRkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApLmNvbXBsZXRlID0gY29tcGxldGVEZWZlcnJlZC5hZGQ7XG5cdFx0anFYSFIuc3VjY2VzcyA9IGpxWEhSLmRvbmU7XG5cdFx0anFYSFIuZXJyb3IgPSBqcVhIUi5mYWlsO1xuXG5cdFx0Ly8gUmVtb3ZlIGhhc2ggY2hhcmFjdGVyICgjNzUzMTogYW5kIHN0cmluZyBwcm9tb3Rpb24pXG5cdFx0Ly8gQWRkIHByb3RvY29sIGlmIG5vdCBwcm92aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBlY3QgaXQpXG5cdFx0Ly8gSGFuZGxlIGZhbHN5IHVybCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0ICgjMTAwOTM6IGNvbnNpc3RlbmN5IHdpdGggb2xkIHNpZ25hdHVyZSlcblx0XHQvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGVcblx0XHRzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgfHwgbG9jYXRpb24uaHJlZiApICsgXCJcIiApLnJlcGxhY2UoIHJoYXNoLCBcIlwiIClcblx0XHRcdC5yZXBsYWNlKCBycHJvdG9jb2wsIGxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICk7XG5cblx0XHQvLyBBbGlhcyBtZXRob2Qgb3B0aW9uIHRvIHR5cGUgYXMgcGVyIHRpY2tldCAjMTIwMDRcblx0XHRzLnR5cGUgPSBvcHRpb25zLm1ldGhvZCB8fCBvcHRpb25zLnR5cGUgfHwgcy5tZXRob2QgfHwgcy50eXBlO1xuXG5cdFx0Ly8gRXh0cmFjdCBkYXRhVHlwZXMgbGlzdFxuXHRcdHMuZGF0YVR5cGVzID0galF1ZXJ5LnRyaW0oIHMuZGF0YVR5cGUgfHwgXCIqXCIgKS50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbIFwiXCIgXTtcblxuXHRcdC8vIEEgY3Jvc3MtZG9tYWluIHJlcXVlc3QgaXMgaW4gb3JkZXIgd2hlbiB0aGUgb3JpZ2luIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgb3JpZ2luLlxuXHRcdGlmICggcy5jcm9zc0RvbWFpbiA9PSBudWxsICkge1xuXHRcdFx0dXJsQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJhXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4LTExK1xuXHRcdFx0Ly8gSUUgdGhyb3dzIGV4Y2VwdGlvbiBpZiB1cmwgaXMgbWFsZm9ybWVkLCBlLmcuIGh0dHA6Ly9leGFtcGxlLmNvbTo4MHgvXG5cdFx0XHR0cnkge1xuXHRcdFx0XHR1cmxBbmNob3IuaHJlZiA9IHMudXJsO1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFOC0xMStcblx0XHRcdFx0Ly8gQW5jaG9yJ3MgaG9zdCBwcm9wZXJ0eSBpc24ndCBjb3JyZWN0bHkgc2V0IHdoZW4gcy51cmwgaXMgcmVsYXRpdmVcblx0XHRcdFx0dXJsQW5jaG9yLmhyZWYgPSB1cmxBbmNob3IuaHJlZjtcblx0XHRcdFx0cy5jcm9zc0RvbWFpbiA9IG9yaWdpbkFuY2hvci5wcm90b2NvbCArIFwiLy9cIiArIG9yaWdpbkFuY2hvci5ob3N0ICE9PVxuXHRcdFx0XHRcdHVybEFuY2hvci5wcm90b2NvbCArIFwiLy9cIiArIHVybEFuY2hvci5ob3N0O1xuXHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cblx0XHRcdFx0Ly8gSWYgdGhlcmUgaXMgYW4gZXJyb3IgcGFyc2luZyB0aGUgVVJMLCBhc3N1bWUgaXQgaXMgY3Jvc3NEb21haW4sXG5cdFx0XHRcdC8vIGl0IGNhbiBiZSByZWplY3RlZCBieSB0aGUgdHJhbnNwb3J0IGlmIGl0IGlzIGludmFsaWRcblx0XHRcdFx0cy5jcm9zc0RvbWFpbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ29udmVydCBkYXRhIGlmIG5vdCBhbHJlYWR5IGEgc3RyaW5nXG5cdFx0aWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJiB0eXBlb2Ygcy5kYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cy5kYXRhID0galF1ZXJ5LnBhcmFtKCBzLmRhdGEsIHMudHJhZGl0aW9uYWwgKTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSBwcmVmaWx0ZXJzXG5cdFx0aW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMsIHMsIG9wdGlvbnMsIGpxWEhSICk7XG5cblx0XHQvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhIHByZWZpbHRlciwgc3RvcCB0aGVyZVxuXHRcdGlmICggc3RhdGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0fVxuXG5cdFx0Ly8gV2UgY2FuIGZpcmUgZ2xvYmFsIGV2ZW50cyBhcyBvZiBub3cgaWYgYXNrZWQgdG9cblx0XHQvLyBEb24ndCBmaXJlIGV2ZW50cyBpZiBqUXVlcnkuZXZlbnQgaXMgdW5kZWZpbmVkIGluIGFuIEFNRC11c2FnZSBzY2VuYXJpbyAoIzE1MTE4KVxuXHRcdGZpcmVHbG9iYWxzID0galF1ZXJ5LmV2ZW50ICYmIHMuZ2xvYmFsO1xuXG5cdFx0Ly8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0c1xuXHRcdGlmICggZmlyZUdsb2JhbHMgJiYgalF1ZXJ5LmFjdGl2ZSsrID09PSAwICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0YXJ0XCIgKTtcblx0XHR9XG5cblx0XHQvLyBVcHBlcmNhc2UgdGhlIHR5cGVcblx0XHRzLnR5cGUgPSBzLnR5cGUudG9VcHBlckNhc2UoKTtcblxuXHRcdC8vIERldGVybWluZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50XG5cdFx0cy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7XG5cblx0XHQvLyBTYXZlIHRoZSBVUkwgaW4gY2FzZSB3ZSdyZSB0b3lpbmcgd2l0aCB0aGUgSWYtTW9kaWZpZWQtU2luY2Vcblx0XHQvLyBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb25cblx0XHRjYWNoZVVSTCA9IHMudXJsO1xuXG5cdFx0Ly8gTW9yZSBvcHRpb25zIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnRcblx0XHRpZiAoICFzLmhhc0NvbnRlbnQgKSB7XG5cblx0XHRcdC8vIElmIGRhdGEgaXMgYXZhaWxhYmxlLCBhcHBlbmQgZGF0YSB0byB1cmxcblx0XHRcdGlmICggcy5kYXRhICkge1xuXHRcdFx0XHRjYWNoZVVSTCA9ICggcy51cmwgKz0gKCBycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/IFwiJlwiIDogXCI/XCIgKSArIHMuZGF0YSApO1xuXG5cdFx0XHRcdC8vICM5NjgyOiByZW1vdmUgZGF0YSBzbyB0aGF0IGl0J3Mgbm90IHVzZWQgaW4gYW4gZXZlbnR1YWwgcmV0cnlcblx0XHRcdFx0ZGVsZXRlIHMuZGF0YTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIGFudGktY2FjaGUgaW4gdXJsIGlmIG5lZWRlZFxuXHRcdFx0aWYgKCBzLmNhY2hlID09PSBmYWxzZSApIHtcblx0XHRcdFx0cy51cmwgPSBydHMudGVzdCggY2FjaGVVUkwgKSA/XG5cblx0XHRcdFx0XHQvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgJ18nIHBhcmFtZXRlciwgc2V0IGl0cyB2YWx1ZVxuXHRcdFx0XHRcdGNhY2hlVVJMLnJlcGxhY2UoIHJ0cywgXCIkMV89XCIgKyBub25jZSsrICkgOlxuXG5cdFx0XHRcdFx0Ly8gT3RoZXJ3aXNlIGFkZCBvbmUgdG8gdGhlIGVuZFxuXHRcdFx0XHRcdGNhY2hlVVJMICsgKCBycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/IFwiJlwiIDogXCI/XCIgKSArIFwiXz1cIiArIG5vbmNlKys7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS5cblx0XHRpZiAoIHMuaWZNb2RpZmllZCApIHtcblx0XHRcdGlmICggalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApIHtcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Nb2RpZmllZC1TaW5jZVwiLCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICkge1xuXHRcdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIklmLU5vbmUtTWF0Y2hcIiwgalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIGNvcnJlY3QgaGVhZGVyLCBpZiBkYXRhIGlzIGJlaW5nIHNlbnRcblx0XHRpZiAoIHMuZGF0YSAmJiBzLmhhc0NvbnRlbnQgJiYgcy5jb250ZW50VHlwZSAhPT0gZmFsc2UgfHwgb3B0aW9ucy5jb250ZW50VHlwZSApIHtcblx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiQ29udGVudC1UeXBlXCIsIHMuY29udGVudFR5cGUgKTtcblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIEFjY2VwdHMgaGVhZGVyIGZvciB0aGUgc2VydmVyLCBkZXBlbmRpbmcgb24gdGhlIGRhdGFUeXBlXG5cdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlcihcblx0XHRcdFwiQWNjZXB0XCIsXG5cdFx0XHRzLmRhdGFUeXBlc1sgMCBdICYmIHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdID9cblx0XHRcdFx0cy5hY2NlcHRzWyBzLmRhdGFUeXBlc1sgMCBdIF0gK1xuXHRcdFx0XHRcdCggcy5kYXRhVHlwZXNbIDAgXSAhPT0gXCIqXCIgPyBcIiwgXCIgKyBhbGxUeXBlcyArIFwiOyBxPTAuMDFcIiA6IFwiXCIgKSA6XG5cdFx0XHRcdHMuYWNjZXB0c1sgXCIqXCIgXVxuXHRcdCk7XG5cblx0XHQvLyBDaGVjayBmb3IgaGVhZGVycyBvcHRpb25cblx0XHRmb3IgKCBpIGluIHMuaGVhZGVycyApIHtcblx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIGksIHMuaGVhZGVyc1sgaSBdICk7XG5cdFx0fVxuXG5cdFx0Ly8gQWxsb3cgY3VzdG9tIGhlYWRlcnMvbWltZXR5cGVzIGFuZCBlYXJseSBhYm9ydFxuXHRcdGlmICggcy5iZWZvcmVTZW5kICYmXG5cdFx0XHQoIHMuYmVmb3JlU2VuZC5jYWxsKCBjYWxsYmFja0NvbnRleHQsIGpxWEhSLCBzICkgPT09IGZhbHNlIHx8IHN0YXRlID09PSAyICkgKSB7XG5cblx0XHRcdC8vIEFib3J0IGlmIG5vdCBkb25lIGFscmVhZHkgYW5kIHJldHVyblxuXHRcdFx0cmV0dXJuIGpxWEhSLmFib3J0KCk7XG5cdFx0fVxuXG5cdFx0Ly8gQWJvcnRpbmcgaXMgbm8gbG9uZ2VyIGEgY2FuY2VsbGF0aW9uXG5cdFx0c3RyQWJvcnQgPSBcImFib3J0XCI7XG5cblx0XHQvLyBJbnN0YWxsIGNhbGxiYWNrcyBvbiBkZWZlcnJlZHNcblx0XHRmb3IgKCBpIGluIHsgc3VjY2VzczogMSwgZXJyb3I6IDEsIGNvbXBsZXRlOiAxIH0gKSB7XG5cdFx0XHRqcVhIUlsgaSBdKCBzWyBpIF0gKTtcblx0XHR9XG5cblx0XHQvLyBHZXQgdHJhbnNwb3J0XG5cdFx0dHJhbnNwb3J0ID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMsIHMsIG9wdGlvbnMsIGpxWEhSICk7XG5cblx0XHQvLyBJZiBubyB0cmFuc3BvcnQsIHdlIGF1dG8tYWJvcnRcblx0XHRpZiAoICF0cmFuc3BvcnQgKSB7XG5cdFx0XHRkb25lKCAtMSwgXCJObyBUcmFuc3BvcnRcIiApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRqcVhIUi5yZWFkeVN0YXRlID0gMTtcblxuXHRcdFx0Ly8gU2VuZCBnbG9iYWwgZXZlbnRcblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBcImFqYXhTZW5kXCIsIFsganFYSFIsIHMgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhamF4U2VuZCwgc3RvcCB0aGVyZVxuXHRcdFx0aWYgKCBzdGF0ZSA9PT0gMiApIHtcblx0XHRcdFx0cmV0dXJuIGpxWEhSO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUaW1lb3V0XG5cdFx0XHRpZiAoIHMuYXN5bmMgJiYgcy50aW1lb3V0ID4gMCApIHtcblx0XHRcdFx0dGltZW91dFRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGpxWEhSLmFib3J0KCBcInRpbWVvdXRcIiApO1xuXHRcdFx0XHR9LCBzLnRpbWVvdXQgKTtcblx0XHRcdH1cblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0c3RhdGUgPSAxO1xuXHRcdFx0XHR0cmFuc3BvcnQuc2VuZCggcmVxdWVzdEhlYWRlcnMsIGRvbmUgKTtcblx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdC8vIFByb3BhZ2F0ZSBleGNlcHRpb24gYXMgZXJyb3IgaWYgbm90IGRvbmVcblx0XHRcdFx0aWYgKCBzdGF0ZSA8IDIgKSB7XG5cdFx0XHRcdFx0ZG9uZSggLTEsIGUgKTtcblxuXHRcdFx0XHQvLyBTaW1wbHkgcmV0aHJvdyBvdGhlcndpc2Vcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbGJhY2sgZm9yIHdoZW4gZXZlcnl0aGluZyBpcyBkb25lXG5cdFx0ZnVuY3Rpb24gZG9uZSggc3RhdHVzLCBuYXRpdmVTdGF0dXNUZXh0LCByZXNwb25zZXMsIGhlYWRlcnMgKSB7XG5cdFx0XHR2YXIgaXNTdWNjZXNzLCBzdWNjZXNzLCBlcnJvciwgcmVzcG9uc2UsIG1vZGlmaWVkLFxuXHRcdFx0XHRzdGF0dXNUZXh0ID0gbmF0aXZlU3RhdHVzVGV4dDtcblxuXHRcdFx0Ly8gQ2FsbGVkIG9uY2Vcblx0XHRcdGlmICggc3RhdGUgPT09IDIgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhdGUgaXMgXCJkb25lXCIgbm93XG5cdFx0XHRzdGF0ZSA9IDI7XG5cblx0XHRcdC8vIENsZWFyIHRpbWVvdXQgaWYgaXQgZXhpc3RzXG5cdFx0XHRpZiAoIHRpbWVvdXRUaW1lciApIHtcblx0XHRcdFx0d2luZG93LmNsZWFyVGltZW91dCggdGltZW91dFRpbWVyICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIERlcmVmZXJlbmNlIHRyYW5zcG9ydCBmb3IgZWFybHkgZ2FyYmFnZSBjb2xsZWN0aW9uXG5cdFx0XHQvLyAobm8gbWF0dGVyIGhvdyBsb25nIHRoZSBqcVhIUiBvYmplY3Qgd2lsbCBiZSB1c2VkKVxuXHRcdFx0dHJhbnNwb3J0ID0gdW5kZWZpbmVkO1xuXG5cdFx0XHQvLyBDYWNoZSByZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcgPSBoZWFkZXJzIHx8IFwiXCI7XG5cblx0XHRcdC8vIFNldCByZWFkeVN0YXRlXG5cdFx0XHRqcVhIUi5yZWFkeVN0YXRlID0gc3RhdHVzID4gMCA/IDQgOiAwO1xuXG5cdFx0XHQvLyBEZXRlcm1pbmUgaWYgc3VjY2Vzc2Z1bFxuXHRcdFx0aXNTdWNjZXNzID0gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDAgfHwgc3RhdHVzID09PSAzMDQ7XG5cblx0XHRcdC8vIEdldCByZXNwb25zZSBkYXRhXG5cdFx0XHRpZiAoIHJlc3BvbnNlcyApIHtcblx0XHRcdFx0cmVzcG9uc2UgPSBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnZlcnQgbm8gbWF0dGVyIHdoYXQgKHRoYXQgd2F5IHJlc3BvbnNlWFhYIGZpZWxkcyBhcmUgYWx3YXlzIHNldClcblx0XHRcdHJlc3BvbnNlID0gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICk7XG5cblx0XHRcdC8vIElmIHN1Y2Nlc3NmdWwsIGhhbmRsZSB0eXBlIGNoYWluaW5nXG5cdFx0XHRpZiAoIGlzU3VjY2VzcyApIHtcblxuXHRcdFx0XHQvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLlxuXHRcdFx0XHRpZiAoIHMuaWZNb2RpZmllZCApIHtcblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCBcIkxhc3QtTW9kaWZpZWRcIiApO1xuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiZXRhZ1wiICk7XG5cdFx0XHRcdFx0aWYgKCBtb2RpZmllZCApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gaWYgbm8gY29udGVudFxuXHRcdFx0XHRpZiAoIHN0YXR1cyA9PT0gMjA0IHx8IHMudHlwZSA9PT0gXCJIRUFEXCIgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwibm9jb250ZW50XCI7XG5cblx0XHRcdFx0Ly8gaWYgbm90IG1vZGlmaWVkXG5cdFx0XHRcdH0gZWxzZSBpZiAoIHN0YXR1cyA9PT0gMzA0ICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcIm5vdG1vZGlmaWVkXCI7XG5cblx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBkYXRhLCBsZXQncyBjb252ZXJ0IGl0XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXRlO1xuXHRcdFx0XHRcdHN1Y2Nlc3MgPSByZXNwb25zZS5kYXRhO1xuXHRcdFx0XHRcdGVycm9yID0gcmVzcG9uc2UuZXJyb3I7XG5cdFx0XHRcdFx0aXNTdWNjZXNzID0gIWVycm9yO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIEV4dHJhY3QgZXJyb3IgZnJvbSBzdGF0dXNUZXh0IGFuZCBub3JtYWxpemUgZm9yIG5vbi1hYm9ydHNcblx0XHRcdFx0ZXJyb3IgPSBzdGF0dXNUZXh0O1xuXHRcdFx0XHRpZiAoIHN0YXR1cyB8fCAhc3RhdHVzVGV4dCApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJlcnJvclwiO1xuXHRcdFx0XHRcdGlmICggc3RhdHVzIDwgMCApIHtcblx0XHRcdFx0XHRcdHN0YXR1cyA9IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCBkYXRhIGZvciB0aGUgZmFrZSB4aHIgb2JqZWN0XG5cdFx0XHRqcVhIUi5zdGF0dXMgPSBzdGF0dXM7XG5cdFx0XHRqcVhIUi5zdGF0dXNUZXh0ID0gKCBuYXRpdmVTdGF0dXNUZXh0IHx8IHN0YXR1c1RleHQgKSArIFwiXCI7XG5cblx0XHRcdC8vIFN1Y2Nlc3MvRXJyb3Jcblx0XHRcdGlmICggaXNTdWNjZXNzICkge1xuXHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIHN1Y2Nlc3MsIHN0YXR1c1RleHQsIGpxWEhSIF0gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCwgZXJyb3IgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0anFYSFIuc3RhdHVzQ29kZSggc3RhdHVzQ29kZSApO1xuXHRcdFx0c3RhdHVzQ29kZSA9IHVuZGVmaW5lZDtcblxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIGlzU3VjY2VzcyA/IFwiYWpheFN1Y2Nlc3NcIiA6IFwiYWpheEVycm9yXCIsXG5cdFx0XHRcdFx0WyBqcVhIUiwgcywgaXNTdWNjZXNzID8gc3VjY2VzcyA6IGVycm9yIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29tcGxldGVcblx0XHRcdGNvbXBsZXRlRGVmZXJyZWQuZmlyZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCBdICk7XG5cblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBcImFqYXhDb21wbGV0ZVwiLCBbIGpxWEhSLCBzIF0gKTtcblxuXHRcdFx0XHQvLyBIYW5kbGUgdGhlIGdsb2JhbCBBSkFYIGNvdW50ZXJcblx0XHRcdFx0aWYgKCAhKCAtLWpRdWVyeS5hY3RpdmUgKSApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggXCJhamF4U3RvcFwiICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4ganFYSFI7XG5cdH0sXG5cblx0Z2V0SlNPTjogZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgZGF0YSwgY2FsbGJhY2ssIFwianNvblwiICk7XG5cdH0sXG5cblx0Z2V0U2NyaXB0OiBmdW5jdGlvbiggdXJsLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdldCggdXJsLCB1bmRlZmluZWQsIGNhbGxiYWNrLCBcInNjcmlwdFwiICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goIFsgXCJnZXRcIiwgXCJwb3N0XCIgXSwgZnVuY3Rpb24oIGksIG1ldGhvZCApIHtcblx0alF1ZXJ5WyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrLCB0eXBlICkge1xuXG5cdFx0Ly8gU2hpZnQgYXJndW1lbnRzIGlmIGRhdGEgYXJndW1lbnQgd2FzIG9taXR0ZWRcblx0XHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBkYXRhICkgKSB7XG5cdFx0XHR0eXBlID0gdHlwZSB8fCBjYWxsYmFjaztcblx0XHRcdGNhbGxiYWNrID0gZGF0YTtcblx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gVGhlIHVybCBjYW4gYmUgYW4gb3B0aW9ucyBvYmplY3QgKHdoaWNoIHRoZW4gbXVzdCBoYXZlIC51cmwpXG5cdFx0cmV0dXJuIGpRdWVyeS5hamF4KCBqUXVlcnkuZXh0ZW5kKCB7XG5cdFx0XHR1cmw6IHVybCxcblx0XHRcdHR5cGU6IG1ldGhvZCxcblx0XHRcdGRhdGFUeXBlOiB0eXBlLFxuXHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdHN1Y2Nlc3M6IGNhbGxiYWNrXG5cdFx0fSwgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHVybCApICYmIHVybCApICk7XG5cdH07XG59ICk7XG5cblxualF1ZXJ5Ll9ldmFsVXJsID0gZnVuY3Rpb24oIHVybCApIHtcblx0cmV0dXJuIGpRdWVyeS5hamF4KCB7XG5cdFx0dXJsOiB1cmwsXG5cblx0XHQvLyBNYWtlIHRoaXMgZXhwbGljaXQsIHNpbmNlIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgdGhyb3VnaCBhamF4U2V0dXAgKCMxMTI2NClcblx0XHR0eXBlOiBcIkdFVFwiLFxuXHRcdGRhdGFUeXBlOiBcInNjcmlwdFwiLFxuXHRcdGFzeW5jOiBmYWxzZSxcblx0XHRnbG9iYWw6IGZhbHNlLFxuXHRcdFwidGhyb3dzXCI6IHRydWVcblx0fSApO1xufTtcblxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHZhciB3cmFwO1xuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGh0bWwuY2FsbCggdGhpcywgaSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzWyAwIF0gKSB7XG5cblx0XHRcdC8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kXG5cdFx0XHR3cmFwID0galF1ZXJ5KCBodG1sLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCApLmVxKCAwICkuY2xvbmUoIHRydWUgKTtcblxuXHRcdFx0aWYgKCB0aGlzWyAwIF0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0d3JhcC5pbnNlcnRCZWZvcmUoIHRoaXNbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHR3cmFwLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBlbGVtID0gdGhpcztcblxuXHRcdFx0XHR3aGlsZSAoIGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQgKSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gZWxlbTtcblx0XHRcdH0gKS5hcHBlbmQoIHRoaXMgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR3cmFwSW5uZXI6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS53cmFwSW5uZXIoIGh0bWwuY2FsbCggdGhpcywgaSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZiA9IGpRdWVyeSggdGhpcyApLFxuXHRcdFx0XHRjb250ZW50cyA9IHNlbGYuY29udGVudHMoKTtcblxuXHRcdFx0aWYgKCBjb250ZW50cy5sZW5ndGggKSB7XG5cdFx0XHRcdGNvbnRlbnRzLndyYXBBbGwoIGh0bWwgKTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2VsZi5hcHBlbmQoIGh0bWwgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0d3JhcDogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0dmFyIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApO1xuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRqUXVlcnkoIHRoaXMgKS53cmFwQWxsKCBpc0Z1bmN0aW9uID8gaHRtbC5jYWxsKCB0aGlzLCBpICkgOiBodG1sICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdHVud3JhcDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoICFqUXVlcnkubm9kZU5hbWUoIHRoaXMsIFwiYm9keVwiICkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnJlcGxhY2VXaXRoKCB0aGlzLmNoaWxkTm9kZXMgKTtcblx0XHRcdH1cblx0XHR9ICkuZW5kKCk7XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuZXhwci5maWx0ZXJzLmhpZGRlbiA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gIWpRdWVyeS5leHByLmZpbHRlcnMudmlzaWJsZSggZWxlbSApO1xufTtcbmpRdWVyeS5leHByLmZpbHRlcnMudmlzaWJsZSA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdC8vIFN1cHBvcnQ6IE9wZXJhIDw9IDEyLjEyXG5cdC8vIE9wZXJhIHJlcG9ydHMgb2Zmc2V0V2lkdGhzIGFuZCBvZmZzZXRIZWlnaHRzIGxlc3MgdGhhbiB6ZXJvIG9uIHNvbWUgZWxlbWVudHNcblx0Ly8gVXNlIE9SIGluc3RlYWQgb2YgQU5EIGFzIHRoZSBlbGVtZW50IGlzIG5vdCB2aXNpYmxlIGlmIGVpdGhlciBpcyB0cnVlXG5cdC8vIFNlZSB0aWNrZXRzICMxMDQwNiBhbmQgIzEzMTMyXG5cdHJldHVybiBlbGVtLm9mZnNldFdpZHRoID4gMCB8fCBlbGVtLm9mZnNldEhlaWdodCA+IDAgfHwgZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCA+IDA7XG59O1xuXG5cblxuXG52YXIgcjIwID0gLyUyMC9nLFxuXHRyYnJhY2tldCA9IC9cXFtcXF0kLyxcblx0ckNSTEYgPSAvXFxyP1xcbi9nLFxuXHRyc3VibWl0dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksXG5cdHJzdWJtaXR0YWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtcblxuZnVuY3Rpb24gYnVpbGRQYXJhbXMoIHByZWZpeCwgb2JqLCB0cmFkaXRpb25hbCwgYWRkICkge1xuXHR2YXIgbmFtZTtcblxuXHRpZiAoIGpRdWVyeS5pc0FycmF5KCBvYmogKSApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBhcnJheSBpdGVtLlxuXHRcdGpRdWVyeS5lYWNoKCBvYmosIGZ1bmN0aW9uKCBpLCB2ICkge1xuXHRcdFx0aWYgKCB0cmFkaXRpb25hbCB8fCByYnJhY2tldC50ZXN0KCBwcmVmaXggKSApIHtcblxuXHRcdFx0XHQvLyBUcmVhdCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBzY2FsYXIuXG5cdFx0XHRcdGFkZCggcHJlZml4LCB2ICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gSXRlbSBpcyBub24tc2NhbGFyIChhcnJheSBvciBvYmplY3QpLCBlbmNvZGUgaXRzIG51bWVyaWMgaW5kZXguXG5cdFx0XHRcdGJ1aWxkUGFyYW1zKFxuXHRcdFx0XHRcdHByZWZpeCArIFwiW1wiICsgKCB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJiB2ICE9IG51bGwgPyBpIDogXCJcIiApICsgXCJdXCIsXG5cdFx0XHRcdFx0dixcblx0XHRcdFx0XHR0cmFkaXRpb25hbCxcblx0XHRcdFx0XHRhZGRcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0fSBlbHNlIGlmICggIXRyYWRpdGlvbmFsICYmIGpRdWVyeS50eXBlKCBvYmogKSA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBvYmplY3QgaXRlbS5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXggKyBcIltcIiArIG5hbWUgKyBcIl1cIiwgb2JqWyBuYW1lIF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cblx0fSBlbHNlIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBzY2FsYXIgaXRlbS5cblx0XHRhZGQoIHByZWZpeCwgb2JqICk7XG5cdH1cbn1cblxuLy8gU2VyaWFsaXplIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMgb3IgYSBzZXQgb2Zcbi8vIGtleS92YWx1ZXMgaW50byBhIHF1ZXJ5IHN0cmluZ1xualF1ZXJ5LnBhcmFtID0gZnVuY3Rpb24oIGEsIHRyYWRpdGlvbmFsICkge1xuXHR2YXIgcHJlZml4LFxuXHRcdHMgPSBbXSxcblx0XHRhZGQgPSBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblxuXHRcdFx0Ly8gSWYgdmFsdWUgaXMgYSBmdW5jdGlvbiwgaW52b2tlIGl0IGFuZCByZXR1cm4gaXRzIHZhbHVlXG5cdFx0XHR2YWx1ZSA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApID8gdmFsdWUoKSA6ICggdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZSApO1xuXHRcdFx0c1sgcy5sZW5ndGggXSA9IGVuY29kZVVSSUNvbXBvbmVudCgga2V5ICkgKyBcIj1cIiArIGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUgKTtcblx0XHR9O1xuXG5cdC8vIFNldCB0cmFkaXRpb25hbCB0byB0cnVlIGZvciBqUXVlcnkgPD0gMS4zLjIgYmVoYXZpb3IuXG5cdGlmICggdHJhZGl0aW9uYWwgPT09IHVuZGVmaW5lZCApIHtcblx0XHR0cmFkaXRpb25hbCA9IGpRdWVyeS5hamF4U2V0dGluZ3MgJiYgalF1ZXJ5LmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbDtcblx0fVxuXG5cdC8vIElmIGFuIGFycmF5IHdhcyBwYXNzZWQgaW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMuXG5cdGlmICggalF1ZXJ5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1ZXJ5ICYmICFqUXVlcnkuaXNQbGFpbk9iamVjdCggYSApICkgKSB7XG5cblx0XHQvLyBTZXJpYWxpemUgdGhlIGZvcm0gZWxlbWVudHNcblx0XHRqUXVlcnkuZWFjaCggYSwgZnVuY3Rpb24oKSB7XG5cdFx0XHRhZGQoIHRoaXMubmFtZSwgdGhpcy52YWx1ZSApO1xuXHRcdH0gKTtcblxuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gSWYgdHJhZGl0aW9uYWwsIGVuY29kZSB0aGUgXCJvbGRcIiB3YXkgKHRoZSB3YXkgMS4zLjIgb3Igb2xkZXJcblx0XHQvLyBkaWQgaXQpLCBvdGhlcndpc2UgZW5jb2RlIHBhcmFtcyByZWN1cnNpdmVseS5cblx0XHRmb3IgKCBwcmVmaXggaW4gYSApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXgsIGFbIHByZWZpeCBdLCB0cmFkaXRpb25hbCwgYWRkICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSByZXN1bHRpbmcgc2VyaWFsaXphdGlvblxuXHRyZXR1cm4gcy5qb2luKCBcIiZcIiApLnJlcGxhY2UoIHIyMCwgXCIrXCIgKTtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0c2VyaWFsaXplOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4galF1ZXJ5LnBhcmFtKCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTtcblx0fSxcblx0c2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIENhbiBhZGQgcHJvcEhvb2sgZm9yIFwiZWxlbWVudHNcIiB0byBmaWx0ZXIgb3IgYWRkIGZvcm0gZWxlbWVudHNcblx0XHRcdHZhciBlbGVtZW50cyA9IGpRdWVyeS5wcm9wKCB0aGlzLCBcImVsZW1lbnRzXCIgKTtcblx0XHRcdHJldHVybiBlbGVtZW50cyA/IGpRdWVyeS5tYWtlQXJyYXkoIGVsZW1lbnRzICkgOiB0aGlzO1xuXHRcdH0gKVxuXHRcdC5maWx0ZXIoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHR5cGUgPSB0aGlzLnR5cGU7XG5cblx0XHRcdC8vIFVzZSAuaXMoIFwiOmRpc2FibGVkXCIgKSBzbyB0aGF0IGZpZWxkc2V0W2Rpc2FibGVkXSB3b3Jrc1xuXHRcdFx0cmV0dXJuIHRoaXMubmFtZSAmJiAhalF1ZXJ5KCB0aGlzICkuaXMoIFwiOmRpc2FibGVkXCIgKSAmJlxuXHRcdFx0XHRyc3VibWl0dGFibGUudGVzdCggdGhpcy5ub2RlTmFtZSApICYmICFyc3VibWl0dGVyVHlwZXMudGVzdCggdHlwZSApICYmXG5cdFx0XHRcdCggdGhpcy5jaGVja2VkIHx8ICFyY2hlY2thYmxlVHlwZS50ZXN0KCB0eXBlICkgKTtcblx0XHR9IClcblx0XHQubWFwKCBmdW5jdGlvbiggaSwgZWxlbSApIHtcblx0XHRcdHZhciB2YWwgPSBqUXVlcnkoIHRoaXMgKS52YWwoKTtcblxuXHRcdFx0cmV0dXJuIHZhbCA9PSBudWxsID9cblx0XHRcdFx0bnVsbCA6XG5cdFx0XHRcdGpRdWVyeS5pc0FycmF5KCB2YWwgKSA/XG5cdFx0XHRcdFx0alF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHRcdFx0XHR9ICkgOlxuXHRcdFx0XHRcdHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHR9ICkuZ2V0KCk7XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuYWpheFNldHRpbmdzLnhociA9IGZ1bmN0aW9uKCkge1xuXHR0cnkge1xuXHRcdHJldHVybiBuZXcgd2luZG93LlhNTEh0dHBSZXF1ZXN0KCk7XG5cdH0gY2F0Y2ggKCBlICkge31cbn07XG5cbnZhciB4aHJTdWNjZXNzU3RhdHVzID0ge1xuXG5cdFx0Ly8gRmlsZSBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyBjb2RlIDAsIGFzc3VtZSAyMDBcblx0XHQwOiAyMDAsXG5cblx0XHQvLyBTdXBwb3J0OiBJRTlcblx0XHQvLyAjMTQ1MDogc29tZXRpbWVzIElFIHJldHVybnMgMTIyMyB3aGVuIGl0IHNob3VsZCBiZSAyMDRcblx0XHQxMjIzOiAyMDRcblx0fSxcblx0eGhyU3VwcG9ydGVkID0galF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIoKTtcblxuc3VwcG9ydC5jb3JzID0gISF4aHJTdXBwb3J0ZWQgJiYgKCBcIndpdGhDcmVkZW50aWFsc1wiIGluIHhoclN1cHBvcnRlZCApO1xuc3VwcG9ydC5hamF4ID0geGhyU3VwcG9ydGVkID0gISF4aHJTdXBwb3J0ZWQ7XG5cbmpRdWVyeS5hamF4VHJhbnNwb3J0KCBmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0dmFyIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrO1xuXG5cdC8vIENyb3NzIGRvbWFpbiBvbmx5IGFsbG93ZWQgaWYgc3VwcG9ydGVkIHRocm91Z2ggWE1MSHR0cFJlcXVlc3Rcblx0aWYgKCBzdXBwb3J0LmNvcnMgfHwgeGhyU3VwcG9ydGVkICYmICFvcHRpb25zLmNyb3NzRG9tYWluICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggaGVhZGVycywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHZhciBpLFxuXHRcdFx0XHRcdHhociA9IG9wdGlvbnMueGhyKCk7XG5cblx0XHRcdFx0eGhyLm9wZW4oXG5cdFx0XHRcdFx0b3B0aW9ucy50eXBlLFxuXHRcdFx0XHRcdG9wdGlvbnMudXJsLFxuXHRcdFx0XHRcdG9wdGlvbnMuYXN5bmMsXG5cdFx0XHRcdFx0b3B0aW9ucy51c2VybmFtZSxcblx0XHRcdFx0XHRvcHRpb25zLnBhc3N3b3JkXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Ly8gQXBwbHkgY3VzdG9tIGZpZWxkcyBpZiBwcm92aWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMueGhyRmllbGRzICkge1xuXHRcdFx0XHRcdGZvciAoIGkgaW4gb3B0aW9ucy54aHJGaWVsZHMgKSB7XG5cdFx0XHRcdFx0XHR4aHJbIGkgXSA9IG9wdGlvbnMueGhyRmllbGRzWyBpIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMubWltZVR5cGUgJiYgeGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7XG5cdFx0XHRcdFx0eGhyLm92ZXJyaWRlTWltZVR5cGUoIG9wdGlvbnMubWltZVR5cGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFgtUmVxdWVzdGVkLVdpdGggaGVhZGVyXG5cdFx0XHRcdC8vIEZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMsIHNlZWluZyBhcyBjb25kaXRpb25zIGZvciBhIHByZWZsaWdodCBhcmVcblx0XHRcdFx0Ly8gYWtpbiB0byBhIGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS5cblx0XHRcdFx0Ly8gKGl0IGNhbiBhbHdheXMgYmUgc2V0IG9uIGEgcGVyLXJlcXVlc3QgYmFzaXMgb3IgZXZlbiB1c2luZyBhamF4U2V0dXApXG5cdFx0XHRcdC8vIEZvciBzYW1lLWRvbWFpbiByZXF1ZXN0cywgd29uJ3QgY2hhbmdlIGhlYWRlciBpZiBhbHJlYWR5IHByb3ZpZGVkLlxuXHRcdFx0XHRpZiAoICFvcHRpb25zLmNyb3NzRG9tYWluICYmICFoZWFkZXJzWyBcIlgtUmVxdWVzdGVkLVdpdGhcIiBdICkge1xuXHRcdFx0XHRcdGhlYWRlcnNbIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiIF0gPSBcIlhNTEh0dHBSZXF1ZXN0XCI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTZXQgaGVhZGVyc1xuXHRcdFx0XHRmb3IgKCBpIGluIGhlYWRlcnMgKSB7XG5cdFx0XHRcdFx0eGhyLnNldFJlcXVlc3RIZWFkZXIoIGksIGhlYWRlcnNbIGkgXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQ2FsbGJhY2tcblx0XHRcdFx0Y2FsbGJhY2sgPSBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0XHRjYWxsYmFjayA9IGVycm9yQ2FsbGJhY2sgPSB4aHIub25sb2FkID1cblx0XHRcdFx0XHRcdFx0XHR4aHIub25lcnJvciA9IHhoci5vbmFib3J0ID0geGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG5cblx0XHRcdFx0XHRcdFx0aWYgKCB0eXBlID09PSBcImFib3J0XCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0eGhyLmFib3J0KCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIHR5cGUgPT09IFwiZXJyb3JcIiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFOVxuXHRcdFx0XHRcdFx0XHRcdC8vIE9uIGEgbWFudWFsIG5hdGl2ZSBhYm9ydCwgSUU5IHRocm93c1xuXHRcdFx0XHRcdFx0XHRcdC8vIGVycm9ycyBvbiBhbnkgcHJvcGVydHkgYWNjZXNzIHRoYXQgaXMgbm90IHJlYWR5U3RhdGVcblx0XHRcdFx0XHRcdFx0XHRpZiAoIHR5cGVvZiB4aHIuc3RhdHVzICE9PSBcIm51bWJlclwiICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoIDAsIFwiZXJyb3JcIiApO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZShcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBGaWxlOiBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyAwOyBzZWUgIzg2MDUsICMxNDIwN1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzVGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHJTdWNjZXNzU3RhdHVzWyB4aHIuc3RhdHVzIF0gfHwgeGhyLnN0YXR1cyxcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXNUZXh0LFxuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRTkgb25seVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSUU5IGhhcyBubyBYSFIyIGJ1dCB0aHJvd3Mgb24gYmluYXJ5ICh0cmFjLTExNDI2KVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gRm9yIFhIUjIgbm9uLXRleHQsIGxldCB0aGUgY2FsbGVyIGhhbmRsZSBpdCAoZ2gtMjQ5OClcblx0XHRcdFx0XHRcdFx0XHRcdCggeGhyLnJlc3BvbnNlVHlwZSB8fCBcInRleHRcIiApICE9PSBcInRleHRcIiAgfHxcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiB4aHIucmVzcG9uc2VUZXh0ICE9PSBcInN0cmluZ1wiID9cblx0XHRcdFx0XHRcdFx0XHRcdFx0eyBiaW5hcnk6IHhoci5yZXNwb25zZSB9IDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0eyB0ZXh0OiB4aHIucmVzcG9uc2VUZXh0IH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKClcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHQvLyBMaXN0ZW4gdG8gZXZlbnRzXG5cdFx0XHRcdHhoci5vbmxvYWQgPSBjYWxsYmFjaygpO1xuXHRcdFx0XHRlcnJvckNhbGxiYWNrID0geGhyLm9uZXJyb3IgPSBjYWxsYmFjayggXCJlcnJvclwiICk7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUU5XG5cdFx0XHRcdC8vIFVzZSBvbnJlYWR5c3RhdGVjaGFuZ2UgdG8gcmVwbGFjZSBvbmFib3J0XG5cdFx0XHRcdC8vIHRvIGhhbmRsZSB1bmNhdWdodCBhYm9ydHNcblx0XHRcdFx0aWYgKCB4aHIub25hYm9ydCAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHhoci5vbmFib3J0ID0gZXJyb3JDYWxsYmFjaztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0XHRcdC8vIENoZWNrIHJlYWR5U3RhdGUgYmVmb3JlIHRpbWVvdXQgYXMgaXQgY2hhbmdlc1xuXHRcdFx0XHRcdFx0aWYgKCB4aHIucmVhZHlTdGF0ZSA9PT0gNCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBBbGxvdyBvbmVycm9yIHRvIGJlIGNhbGxlZCBmaXJzdCxcblx0XHRcdFx0XHRcdFx0Ly8gYnV0IHRoYXQgd2lsbCBub3QgaGFuZGxlIGEgbmF0aXZlIGFib3J0XG5cdFx0XHRcdFx0XHRcdC8vIEFsc28sIHNhdmUgZXJyb3JDYWxsYmFjayB0byBhIHZhcmlhYmxlXG5cdFx0XHRcdFx0XHRcdC8vIGFzIHhoci5vbmVycm9yIGNhbm5vdCBiZSBhY2Nlc3NlZFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yQ2FsbGJhY2soKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQ3JlYXRlIHRoZSBhYm9ydCBjYWxsYmFja1xuXHRcdFx0XHRjYWxsYmFjayA9IGNhbGxiYWNrKCBcImFib3J0XCIgKTtcblxuXHRcdFx0XHR0cnkge1xuXG5cdFx0XHRcdFx0Ly8gRG8gc2VuZCB0aGUgcmVxdWVzdCAodGhpcyBtYXkgcmFpc2UgYW4gZXhjZXB0aW9uKVxuXHRcdFx0XHRcdHhoci5zZW5kKCBvcHRpb25zLmhhc0NvbnRlbnQgJiYgb3B0aW9ucy5kYXRhIHx8IG51bGwgKTtcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cblx0XHRcdFx0XHQvLyAjMTQ2ODM6IE9ubHkgcmV0aHJvdyBpZiB0aGlzIGhhc24ndCBiZWVuIG5vdGlmaWVkIGFzIGFuIGVycm9yIHlldFxuXHRcdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIEluc3RhbGwgc2NyaXB0IGRhdGFUeXBlXG5qUXVlcnkuYWpheFNldHVwKCB7XG5cdGFjY2VwdHM6IHtcblx0XHRzY3JpcHQ6IFwidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBcIiArXG5cdFx0XHRcImFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdFwiXG5cdH0sXG5cdGNvbnRlbnRzOiB7XG5cdFx0c2NyaXB0OiAvXFxiKD86amF2YXxlY21hKXNjcmlwdFxcYi9cblx0fSxcblx0Y29udmVydGVyczoge1xuXHRcdFwidGV4dCBzY3JpcHRcIjogZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0XHRqUXVlcnkuZ2xvYmFsRXZhbCggdGV4dCApO1xuXHRcdFx0cmV0dXJuIHRleHQ7XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIEhhbmRsZSBjYWNoZSdzIHNwZWNpYWwgY2FzZSBhbmQgY3Jvc3NEb21haW5cbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBcInNjcmlwdFwiLCBmdW5jdGlvbiggcyApIHtcblx0aWYgKCBzLmNhY2hlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0cy5jYWNoZSA9IGZhbHNlO1xuXHR9XG5cdGlmICggcy5jcm9zc0RvbWFpbiApIHtcblx0XHRzLnR5cGUgPSBcIkdFVFwiO1xuXHR9XG59ICk7XG5cbi8vIEJpbmQgc2NyaXB0IHRhZyBoYWNrIHRyYW5zcG9ydFxualF1ZXJ5LmFqYXhUcmFuc3BvcnQoIFwic2NyaXB0XCIsIGZ1bmN0aW9uKCBzICkge1xuXG5cdC8vIFRoaXMgdHJhbnNwb3J0IG9ubHkgZGVhbHMgd2l0aCBjcm9zcyBkb21haW4gcmVxdWVzdHNcblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHZhciBzY3JpcHQsIGNhbGxiYWNrO1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggXywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHNjcmlwdCA9IGpRdWVyeSggXCI8c2NyaXB0PlwiICkucHJvcCgge1xuXHRcdFx0XHRcdGNoYXJzZXQ6IHMuc2NyaXB0Q2hhcnNldCxcblx0XHRcdFx0XHRzcmM6IHMudXJsXG5cdFx0XHRcdH0gKS5vbihcblx0XHRcdFx0XHRcImxvYWQgZXJyb3JcIixcblx0XHRcdFx0XHRjYWxsYmFjayA9IGZ1bmN0aW9uKCBldnQgKSB7XG5cdFx0XHRcdFx0XHRzY3JpcHQucmVtb3ZlKCk7XG5cdFx0XHRcdFx0XHRjYWxsYmFjayA9IG51bGw7XG5cdFx0XHRcdFx0XHRpZiAoIGV2dCApIHtcblx0XHRcdFx0XHRcdFx0Y29tcGxldGUoIGV2dC50eXBlID09PSBcImVycm9yXCIgPyA0MDQgOiAyMDAsIGV2dC50eXBlICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdC8vIFVzZSBuYXRpdmUgRE9NIG1hbmlwdWxhdGlvbiB0byBhdm9pZCBvdXIgZG9tTWFuaXAgQUpBWCB0cmlja2VyeVxuXHRcdFx0XHRkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKCBzY3JpcHRbIDAgXSApO1xuXHRcdFx0fSxcblx0XHRcdGFib3J0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxufSApO1xuXG5cblxuXG52YXIgb2xkQ2FsbGJhY2tzID0gW10sXG5cdHJqc29ucCA9IC8oPSlcXD8oPz0mfCQpfFxcP1xcPy87XG5cbi8vIERlZmF1bHQganNvbnAgc2V0dGluZ3NcbmpRdWVyeS5hamF4U2V0dXAoIHtcblx0anNvbnA6IFwiY2FsbGJhY2tcIixcblx0anNvbnBDYWxsYmFjazogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGNhbGxiYWNrID0gb2xkQ2FsbGJhY2tzLnBvcCgpIHx8ICggalF1ZXJ5LmV4cGFuZG8gKyBcIl9cIiArICggbm9uY2UrKyApICk7XG5cdFx0dGhpc1sgY2FsbGJhY2sgXSA9IHRydWU7XG5cdFx0cmV0dXJuIGNhbGxiYWNrO1xuXHR9XG59ICk7XG5cbi8vIERldGVjdCwgbm9ybWFsaXplIG9wdGlvbnMgYW5kIGluc3RhbGwgY2FsbGJhY2tzIGZvciBqc29ucCByZXF1ZXN0c1xualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIFwianNvbiBqc29ucFwiLCBmdW5jdGlvbiggcywgb3JpZ2luYWxTZXR0aW5ncywganFYSFIgKSB7XG5cblx0dmFyIGNhbGxiYWNrTmFtZSwgb3ZlcndyaXR0ZW4sIHJlc3BvbnNlQ29udGFpbmVyLFxuXHRcdGpzb25Qcm9wID0gcy5qc29ucCAhPT0gZmFsc2UgJiYgKCByanNvbnAudGVzdCggcy51cmwgKSA/XG5cdFx0XHRcInVybFwiIDpcblx0XHRcdHR5cGVvZiBzLmRhdGEgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0KCBzLmNvbnRlbnRUeXBlIHx8IFwiXCIgKVxuXHRcdFx0XHRcdC5pbmRleE9mKCBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiICkgPT09IDAgJiZcblx0XHRcdFx0cmpzb25wLnRlc3QoIHMuZGF0YSApICYmIFwiZGF0YVwiXG5cdFx0KTtcblxuXHQvLyBIYW5kbGUgaWZmIHRoZSBleHBlY3RlZCBkYXRhIHR5cGUgaXMgXCJqc29ucFwiIG9yIHdlIGhhdmUgYSBwYXJhbWV0ZXIgdG8gc2V0XG5cdGlmICgganNvblByb3AgfHwgcy5kYXRhVHlwZXNbIDAgXSA9PT0gXCJqc29ucFwiICkge1xuXG5cdFx0Ly8gR2V0IGNhbGxiYWNrIG5hbWUsIHJlbWVtYmVyaW5nIHByZWV4aXN0aW5nIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBpdFxuXHRcdGNhbGxiYWNrTmFtZSA9IHMuanNvbnBDYWxsYmFjayA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBzLmpzb25wQ2FsbGJhY2sgKSA/XG5cdFx0XHRzLmpzb25wQ2FsbGJhY2soKSA6XG5cdFx0XHRzLmpzb25wQ2FsbGJhY2s7XG5cblx0XHQvLyBJbnNlcnQgY2FsbGJhY2sgaW50byB1cmwgb3IgZm9ybSBkYXRhXG5cdFx0aWYgKCBqc29uUHJvcCApIHtcblx0XHRcdHNbIGpzb25Qcm9wIF0gPSBzWyBqc29uUHJvcCBdLnJlcGxhY2UoIHJqc29ucCwgXCIkMVwiICsgY2FsbGJhY2tOYW1lICk7XG5cdFx0fSBlbHNlIGlmICggcy5qc29ucCAhPT0gZmFsc2UgKSB7XG5cdFx0XHRzLnVybCArPSAoIHJxdWVyeS50ZXN0KCBzLnVybCApID8gXCImXCIgOiBcIj9cIiApICsgcy5qc29ucCArIFwiPVwiICsgY2FsbGJhY2tOYW1lO1xuXHRcdH1cblxuXHRcdC8vIFVzZSBkYXRhIGNvbnZlcnRlciB0byByZXRyaWV2ZSBqc29uIGFmdGVyIHNjcmlwdCBleGVjdXRpb25cblx0XHRzLmNvbnZlcnRlcnNbIFwic2NyaXB0IGpzb25cIiBdID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoICFyZXNwb25zZUNvbnRhaW5lciApIHtcblx0XHRcdFx0alF1ZXJ5LmVycm9yKCBjYWxsYmFja05hbWUgKyBcIiB3YXMgbm90IGNhbGxlZFwiICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzcG9uc2VDb250YWluZXJbIDAgXTtcblx0XHR9O1xuXG5cdFx0Ly8gRm9yY2UganNvbiBkYXRhVHlwZVxuXHRcdHMuZGF0YVR5cGVzWyAwIF0gPSBcImpzb25cIjtcblxuXHRcdC8vIEluc3RhbGwgY2FsbGJhY2tcblx0XHRvdmVyd3JpdHRlbiA9IHdpbmRvd1sgY2FsbGJhY2tOYW1lIF07XG5cdFx0d2luZG93WyBjYWxsYmFja05hbWUgXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmVzcG9uc2VDb250YWluZXIgPSBhcmd1bWVudHM7XG5cdFx0fTtcblxuXHRcdC8vIENsZWFuLXVwIGZ1bmN0aW9uIChmaXJlcyBhZnRlciBjb252ZXJ0ZXJzKVxuXHRcdGpxWEhSLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIElmIHByZXZpb3VzIHZhbHVlIGRpZG4ndCBleGlzdCAtIHJlbW92ZSBpdFxuXHRcdFx0aWYgKCBvdmVyd3JpdHRlbiA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRqUXVlcnkoIHdpbmRvdyApLnJlbW92ZVByb3AoIGNhbGxiYWNrTmFtZSApO1xuXG5cdFx0XHQvLyBPdGhlcndpc2UgcmVzdG9yZSBwcmVleGlzdGluZyB2YWx1ZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0d2luZG93WyBjYWxsYmFja05hbWUgXSA9IG92ZXJ3cml0dGVuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTYXZlIGJhY2sgYXMgZnJlZVxuXHRcdFx0aWYgKCBzWyBjYWxsYmFja05hbWUgXSApIHtcblxuXHRcdFx0XHQvLyBNYWtlIHN1cmUgdGhhdCByZS11c2luZyB0aGUgb3B0aW9ucyBkb2Vzbid0IHNjcmV3IHRoaW5ncyBhcm91bmRcblx0XHRcdFx0cy5qc29ucENhbGxiYWNrID0gb3JpZ2luYWxTZXR0aW5ncy5qc29ucENhbGxiYWNrO1xuXG5cdFx0XHRcdC8vIFNhdmUgdGhlIGNhbGxiYWNrIG5hbWUgZm9yIGZ1dHVyZSB1c2Vcblx0XHRcdFx0b2xkQ2FsbGJhY2tzLnB1c2goIGNhbGxiYWNrTmFtZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDYWxsIGlmIGl0IHdhcyBhIGZ1bmN0aW9uIGFuZCB3ZSBoYXZlIGEgcmVzcG9uc2Vcblx0XHRcdGlmICggcmVzcG9uc2VDb250YWluZXIgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7XG5cdFx0XHRcdG92ZXJ3cml0dGVuKCByZXNwb25zZUNvbnRhaW5lclsgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gb3ZlcndyaXR0ZW4gPSB1bmRlZmluZWQ7XG5cdFx0fSApO1xuXG5cdFx0Ly8gRGVsZWdhdGUgdG8gc2NyaXB0XG5cdFx0cmV0dXJuIFwic2NyaXB0XCI7XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gQXJndW1lbnQgXCJkYXRhXCIgc2hvdWxkIGJlIHN0cmluZyBvZiBodG1sXG4vLyBjb250ZXh0IChvcHRpb25hbCk6IElmIHNwZWNpZmllZCwgdGhlIGZyYWdtZW50IHdpbGwgYmUgY3JlYXRlZCBpbiB0aGlzIGNvbnRleHQsXG4vLyBkZWZhdWx0cyB0byBkb2N1bWVudFxuLy8ga2VlcFNjcmlwdHMgKG9wdGlvbmFsKTogSWYgdHJ1ZSwgd2lsbCBpbmNsdWRlIHNjcmlwdHMgcGFzc2VkIGluIHRoZSBodG1sIHN0cmluZ1xualF1ZXJ5LnBhcnNlSFRNTCA9IGZ1bmN0aW9uKCBkYXRhLCBjb250ZXh0LCBrZWVwU2NyaXB0cyApIHtcblx0aWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXHRpZiAoIHR5cGVvZiBjb250ZXh0ID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRrZWVwU2NyaXB0cyA9IGNvbnRleHQ7XG5cdFx0Y29udGV4dCA9IGZhbHNlO1xuXHR9XG5cdGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50O1xuXG5cdHZhciBwYXJzZWQgPSByc2luZ2xlVGFnLmV4ZWMoIGRhdGEgKSxcblx0XHRzY3JpcHRzID0gIWtlZXBTY3JpcHRzICYmIFtdO1xuXG5cdC8vIFNpbmdsZSB0YWdcblx0aWYgKCBwYXJzZWQgKSB7XG5cdFx0cmV0dXJuIFsgY29udGV4dC5jcmVhdGVFbGVtZW50KCBwYXJzZWRbIDEgXSApIF07XG5cdH1cblxuXHRwYXJzZWQgPSBidWlsZEZyYWdtZW50KCBbIGRhdGEgXSwgY29udGV4dCwgc2NyaXB0cyApO1xuXG5cdGlmICggc2NyaXB0cyAmJiBzY3JpcHRzLmxlbmd0aCApIHtcblx0XHRqUXVlcnkoIHNjcmlwdHMgKS5yZW1vdmUoKTtcblx0fVxuXG5cdHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBwYXJzZWQuY2hpbGROb2RlcyApO1xufTtcblxuXG4vLyBLZWVwIGEgY29weSBvZiB0aGUgb2xkIGxvYWQgbWV0aG9kXG52YXIgX2xvYWQgPSBqUXVlcnkuZm4ubG9hZDtcblxuLyoqXG4gKiBMb2FkIGEgdXJsIGludG8gYSBwYWdlXG4gKi9cbmpRdWVyeS5mbi5sb2FkID0gZnVuY3Rpb24oIHVybCwgcGFyYW1zLCBjYWxsYmFjayApIHtcblx0aWYgKCB0eXBlb2YgdXJsICE9PSBcInN0cmluZ1wiICYmIF9sb2FkICkge1xuXHRcdHJldHVybiBfbG9hZC5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdH1cblxuXHR2YXIgc2VsZWN0b3IsIHR5cGUsIHJlc3BvbnNlLFxuXHRcdHNlbGYgPSB0aGlzLFxuXHRcdG9mZiA9IHVybC5pbmRleE9mKCBcIiBcIiApO1xuXG5cdGlmICggb2ZmID4gLTEgKSB7XG5cdFx0c2VsZWN0b3IgPSBqUXVlcnkudHJpbSggdXJsLnNsaWNlKCBvZmYgKSApO1xuXHRcdHVybCA9IHVybC5zbGljZSggMCwgb2ZmICk7XG5cdH1cblxuXHQvLyBJZiBpdCdzIGEgZnVuY3Rpb25cblx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcGFyYW1zICkgKSB7XG5cblx0XHQvLyBXZSBhc3N1bWUgdGhhdCBpdCdzIHRoZSBjYWxsYmFja1xuXHRcdGNhbGxiYWNrID0gcGFyYW1zO1xuXHRcdHBhcmFtcyA9IHVuZGVmaW5lZDtcblxuXHQvLyBPdGhlcndpc2UsIGJ1aWxkIGEgcGFyYW0gc3RyaW5nXG5cdH0gZWxzZSBpZiAoIHBhcmFtcyAmJiB0eXBlb2YgcGFyYW1zID09PSBcIm9iamVjdFwiICkge1xuXHRcdHR5cGUgPSBcIlBPU1RcIjtcblx0fVxuXG5cdC8vIElmIHdlIGhhdmUgZWxlbWVudHMgdG8gbW9kaWZ5LCBtYWtlIHRoZSByZXF1ZXN0XG5cdGlmICggc2VsZi5sZW5ndGggPiAwICkge1xuXHRcdGpRdWVyeS5hamF4KCB7XG5cdFx0XHR1cmw6IHVybCxcblxuXHRcdFx0Ly8gSWYgXCJ0eXBlXCIgdmFyaWFibGUgaXMgdW5kZWZpbmVkLCB0aGVuIFwiR0VUXCIgbWV0aG9kIHdpbGwgYmUgdXNlZC5cblx0XHRcdC8vIE1ha2UgdmFsdWUgb2YgdGhpcyBmaWVsZCBleHBsaWNpdCBzaW5jZVxuXHRcdFx0Ly8gdXNlciBjYW4gb3ZlcnJpZGUgaXQgdGhyb3VnaCBhamF4U2V0dXAgbWV0aG9kXG5cdFx0XHR0eXBlOiB0eXBlIHx8IFwiR0VUXCIsXG5cdFx0XHRkYXRhVHlwZTogXCJodG1sXCIsXG5cdFx0XHRkYXRhOiBwYXJhbXNcblx0XHR9ICkuZG9uZSggZnVuY3Rpb24oIHJlc3BvbnNlVGV4dCApIHtcblxuXHRcdFx0Ly8gU2F2ZSByZXNwb25zZSBmb3IgdXNlIGluIGNvbXBsZXRlIGNhbGxiYWNrXG5cdFx0XHRyZXNwb25zZSA9IGFyZ3VtZW50cztcblxuXHRcdFx0c2VsZi5odG1sKCBzZWxlY3RvciA/XG5cblx0XHRcdFx0Ly8gSWYgYSBzZWxlY3RvciB3YXMgc3BlY2lmaWVkLCBsb2NhdGUgdGhlIHJpZ2h0IGVsZW1lbnRzIGluIGEgZHVtbXkgZGl2XG5cdFx0XHRcdC8vIEV4Y2x1ZGUgc2NyaXB0cyB0byBhdm9pZCBJRSAnUGVybWlzc2lvbiBEZW5pZWQnIGVycm9yc1xuXHRcdFx0XHRqUXVlcnkoIFwiPGRpdj5cIiApLmFwcGVuZCggalF1ZXJ5LnBhcnNlSFRNTCggcmVzcG9uc2VUZXh0ICkgKS5maW5kKCBzZWxlY3RvciApIDpcblxuXHRcdFx0XHQvLyBPdGhlcndpc2UgdXNlIHRoZSBmdWxsIHJlc3VsdFxuXHRcdFx0XHRyZXNwb25zZVRleHQgKTtcblxuXHRcdC8vIElmIHRoZSByZXF1ZXN0IHN1Y2NlZWRzLCB0aGlzIGZ1bmN0aW9uIGdldHMgXCJkYXRhXCIsIFwic3RhdHVzXCIsIFwianFYSFJcIlxuXHRcdC8vIGJ1dCB0aGV5IGFyZSBpZ25vcmVkIGJlY2F1c2UgcmVzcG9uc2Ugd2FzIHNldCBhYm92ZS5cblx0XHQvLyBJZiBpdCBmYWlscywgdGhpcyBmdW5jdGlvbiBnZXRzIFwianFYSFJcIiwgXCJzdGF0dXNcIiwgXCJlcnJvclwiXG5cdFx0fSApLmFsd2F5cyggY2FsbGJhY2sgJiYgZnVuY3Rpb24oIGpxWEhSLCBzdGF0dXMgKSB7XG5cdFx0XHRzZWxmLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRjYWxsYmFjay5hcHBseSggdGhpcywgcmVzcG9uc2UgfHwgWyBqcVhIUi5yZXNwb25zZVRleHQsIHN0YXR1cywganFYSFIgXSApO1xuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fVxuXG5cdHJldHVybiB0aGlzO1xufTtcblxuXG5cblxuLy8gQXR0YWNoIGEgYnVuY2ggb2YgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBjb21tb24gQUpBWCBldmVudHNcbmpRdWVyeS5lYWNoKCBbXG5cdFwiYWpheFN0YXJ0XCIsXG5cdFwiYWpheFN0b3BcIixcblx0XCJhamF4Q29tcGxldGVcIixcblx0XCJhamF4RXJyb3JcIixcblx0XCJhamF4U3VjY2Vzc1wiLFxuXHRcImFqYXhTZW5kXCJcbl0sIGZ1bmN0aW9uKCBpLCB0eXBlICkge1xuXHRqUXVlcnkuZm5bIHR5cGUgXSA9IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZSwgZm4gKTtcblx0fTtcbn0gKTtcblxuXG5cblxualF1ZXJ5LmV4cHIuZmlsdGVycy5hbmltYXRlZCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4galF1ZXJ5LmdyZXAoIGpRdWVyeS50aW1lcnMsIGZ1bmN0aW9uKCBmbiApIHtcblx0XHRyZXR1cm4gZWxlbSA9PT0gZm4uZWxlbTtcblx0fSApLmxlbmd0aDtcbn07XG5cblxuXG5cbi8qKlxuICogR2V0cyBhIHdpbmRvdyBmcm9tIGFuIGVsZW1lbnRcbiAqL1xuZnVuY3Rpb24gZ2V0V2luZG93KCBlbGVtICkge1xuXHRyZXR1cm4galF1ZXJ5LmlzV2luZG93KCBlbGVtICkgPyBlbGVtIDogZWxlbS5ub2RlVHlwZSA9PT0gOSAmJiBlbGVtLmRlZmF1bHRWaWV3O1xufVxuXG5qUXVlcnkub2Zmc2V0ID0ge1xuXHRzZXRPZmZzZXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBpICkge1xuXHRcdHZhciBjdXJQb3NpdGlvbiwgY3VyTGVmdCwgY3VyQ1NTVG9wLCBjdXJUb3AsIGN1ck9mZnNldCwgY3VyQ1NTTGVmdCwgY2FsY3VsYXRlUG9zaXRpb24sXG5cdFx0XHRwb3NpdGlvbiA9IGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApLFxuXHRcdFx0Y3VyRWxlbSA9IGpRdWVyeSggZWxlbSApLFxuXHRcdFx0cHJvcHMgPSB7fTtcblxuXHRcdC8vIFNldCBwb3NpdGlvbiBmaXJzdCwgaW4tY2FzZSB0b3AvbGVmdCBhcmUgc2V0IGV2ZW4gb24gc3RhdGljIGVsZW1cblx0XHRpZiAoIHBvc2l0aW9uID09PSBcInN0YXRpY1wiICkge1xuXHRcdFx0ZWxlbS5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcblx0XHR9XG5cblx0XHRjdXJPZmZzZXQgPSBjdXJFbGVtLm9mZnNldCgpO1xuXHRcdGN1ckNTU1RvcCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwidG9wXCIgKTtcblx0XHRjdXJDU1NMZWZ0ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJsZWZ0XCIgKTtcblx0XHRjYWxjdWxhdGVQb3NpdGlvbiA9ICggcG9zaXRpb24gPT09IFwiYWJzb2x1dGVcIiB8fCBwb3NpdGlvbiA9PT0gXCJmaXhlZFwiICkgJiZcblx0XHRcdCggY3VyQ1NTVG9wICsgY3VyQ1NTTGVmdCApLmluZGV4T2YoIFwiYXV0b1wiICkgPiAtMTtcblxuXHRcdC8vIE5lZWQgdG8gYmUgYWJsZSB0byBjYWxjdWxhdGUgcG9zaXRpb24gaWYgZWl0aGVyXG5cdFx0Ly8gdG9wIG9yIGxlZnQgaXMgYXV0byBhbmQgcG9zaXRpb24gaXMgZWl0aGVyIGFic29sdXRlIG9yIGZpeGVkXG5cdFx0aWYgKCBjYWxjdWxhdGVQb3NpdGlvbiApIHtcblx0XHRcdGN1clBvc2l0aW9uID0gY3VyRWxlbS5wb3NpdGlvbigpO1xuXHRcdFx0Y3VyVG9wID0gY3VyUG9zaXRpb24udG9wO1xuXHRcdFx0Y3VyTGVmdCA9IGN1clBvc2l0aW9uLmxlZnQ7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VyVG9wID0gcGFyc2VGbG9hdCggY3VyQ1NTVG9wICkgfHwgMDtcblx0XHRcdGN1ckxlZnQgPSBwYXJzZUZsb2F0KCBjdXJDU1NMZWZ0ICkgfHwgMDtcblx0XHR9XG5cblx0XHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBvcHRpb25zICkgKSB7XG5cblx0XHRcdC8vIFVzZSBqUXVlcnkuZXh0ZW5kIGhlcmUgdG8gYWxsb3cgbW9kaWZpY2F0aW9uIG9mIGNvb3JkaW5hdGVzIGFyZ3VtZW50IChnaC0xODQ4KVxuXHRcdFx0b3B0aW9ucyA9IG9wdGlvbnMuY2FsbCggZWxlbSwgaSwgalF1ZXJ5LmV4dGVuZCgge30sIGN1ck9mZnNldCApICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHRpb25zLnRvcCAhPSBudWxsICkge1xuXHRcdFx0cHJvcHMudG9wID0gKCBvcHRpb25zLnRvcCAtIGN1ck9mZnNldC50b3AgKSArIGN1clRvcDtcblx0XHR9XG5cdFx0aWYgKCBvcHRpb25zLmxlZnQgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLmxlZnQgPSAoIG9wdGlvbnMubGVmdCAtIGN1ck9mZnNldC5sZWZ0ICkgKyBjdXJMZWZ0O1xuXHRcdH1cblxuXHRcdGlmICggXCJ1c2luZ1wiIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRvcHRpb25zLnVzaW5nLmNhbGwoIGVsZW0sIHByb3BzICk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VyRWxlbS5jc3MoIHByb3BzICk7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdG9mZnNldDogZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHRoaXMgOlxuXHRcdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRcdGpRdWVyeS5vZmZzZXQuc2V0T2Zmc2V0KCB0aGlzLCBvcHRpb25zLCBpICk7XG5cdFx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHR2YXIgZG9jRWxlbSwgd2luLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdGJveCA9IHsgdG9wOiAwLCBsZWZ0OiAwIH0sXG5cdFx0XHRkb2MgPSBlbGVtICYmIGVsZW0ub3duZXJEb2N1bWVudDtcblxuXHRcdGlmICggIWRvYyApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudDtcblxuXHRcdC8vIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIGRpc2Nvbm5lY3RlZCBET00gbm9kZVxuXHRcdGlmICggIWpRdWVyeS5jb250YWlucyggZG9jRWxlbSwgZWxlbSApICkge1xuXHRcdFx0cmV0dXJuIGJveDtcblx0XHR9XG5cblx0XHRib3ggPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdHdpbiA9IGdldFdpbmRvdyggZG9jICk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRvcDogYm94LnRvcCArIHdpbi5wYWdlWU9mZnNldCAtIGRvY0VsZW0uY2xpZW50VG9wLFxuXHRcdFx0bGVmdDogYm94LmxlZnQgKyB3aW4ucGFnZVhPZmZzZXQgLSBkb2NFbGVtLmNsaWVudExlZnRcblx0XHR9O1xuXHR9LFxuXG5cdHBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblx0XHRpZiAoICF0aGlzWyAwIF0gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dmFyIG9mZnNldFBhcmVudCwgb2Zmc2V0LFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdHBhcmVudE9mZnNldCA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07XG5cblx0XHQvLyBGaXhlZCBlbGVtZW50cyBhcmUgb2Zmc2V0IGZyb20gd2luZG93IChwYXJlbnRPZmZzZXQgPSB7dG9wOjAsIGxlZnQ6IDB9LFxuXHRcdC8vIGJlY2F1c2UgaXQgaXMgaXRzIG9ubHkgb2Zmc2V0IHBhcmVudFxuXHRcdGlmICggalF1ZXJ5LmNzcyggZWxlbSwgXCJwb3NpdGlvblwiICkgPT09IFwiZml4ZWRcIiApIHtcblxuXHRcdFx0Ly8gQXNzdW1lIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBpcyB0aGVyZSB3aGVuIGNvbXB1dGVkIHBvc2l0aW9uIGlzIGZpeGVkXG5cdFx0XHRvZmZzZXQgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gR2V0ICpyZWFsKiBvZmZzZXRQYXJlbnRcblx0XHRcdG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50KCk7XG5cblx0XHRcdC8vIEdldCBjb3JyZWN0IG9mZnNldHNcblx0XHRcdG9mZnNldCA9IHRoaXMub2Zmc2V0KCk7XG5cdFx0XHRpZiAoICFqUXVlcnkubm9kZU5hbWUoIG9mZnNldFBhcmVudFsgMCBdLCBcImh0bWxcIiApICkge1xuXHRcdFx0XHRwYXJlbnRPZmZzZXQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0KCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCBvZmZzZXRQYXJlbnQgYm9yZGVyc1xuXHRcdFx0cGFyZW50T2Zmc2V0LnRvcCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRbIDAgXSwgXCJib3JkZXJUb3BXaWR0aFwiLCB0cnVlICk7XG5cdFx0XHRwYXJlbnRPZmZzZXQubGVmdCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRbIDAgXSwgXCJib3JkZXJMZWZ0V2lkdGhcIiwgdHJ1ZSApO1xuXHRcdH1cblxuXHRcdC8vIFN1YnRyYWN0IHBhcmVudCBvZmZzZXRzIGFuZCBlbGVtZW50IG1hcmdpbnNcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiBvZmZzZXQudG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGpRdWVyeS5jc3MoIGVsZW0sIFwibWFyZ2luVG9wXCIsIHRydWUgKSxcblx0XHRcdGxlZnQ6IG9mZnNldC5sZWZ0IC0gcGFyZW50T2Zmc2V0LmxlZnQgLSBqUXVlcnkuY3NzKCBlbGVtLCBcIm1hcmdpbkxlZnRcIiwgdHJ1ZSApXG5cdFx0fTtcblx0fSxcblxuXHQvLyBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBkb2N1bWVudEVsZW1lbnQgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcblx0Ly8gMSkgRm9yIHRoZSBlbGVtZW50IGluc2lkZSB0aGUgaWZyYW1lIHdpdGhvdXQgb2Zmc2V0UGFyZW50LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVyblxuXHQvLyAgICBkb2N1bWVudEVsZW1lbnQgb2YgdGhlIHBhcmVudCB3aW5kb3dcblx0Ly8gMikgRm9yIHRoZSBoaWRkZW4gb3IgZGV0YWNoZWQgZWxlbWVudFxuXHQvLyAzKSBGb3IgYm9keSBvciBodG1sIGVsZW1lbnQsIGkuZS4gaW4gY2FzZSBvZiB0aGUgaHRtbCBub2RlIC0gaXQgd2lsbCByZXR1cm4gaXRzZWxmXG5cdC8vXG5cdC8vIGJ1dCB0aG9zZSBleGNlcHRpb25zIHdlcmUgbmV2ZXIgcHJlc2VudGVkIGFzIGEgcmVhbCBsaWZlIHVzZS1jYXNlc1xuXHQvLyBhbmQgbWlnaHQgYmUgY29uc2lkZXJlZCBhcyBtb3JlIHByZWZlcmFibGUgcmVzdWx0cy5cblx0Ly9cblx0Ly8gVGhpcyBsb2dpYywgaG93ZXZlciwgaXMgbm90IGd1YXJhbnRlZWQgYW5kIGNhbiBjaGFuZ2UgYXQgYW55IHBvaW50IGluIHRoZSBmdXR1cmVcblx0b2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50O1xuXG5cdFx0XHR3aGlsZSAoIG9mZnNldFBhcmVudCAmJiBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwicG9zaXRpb25cIiApID09PSBcInN0YXRpY1wiICkge1xuXHRcdFx0XHRvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50RWxlbWVudDtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBzY3JvbGxMZWZ0OiBcInBhZ2VYT2Zmc2V0XCIsIHNjcm9sbFRvcDogXCJwYWdlWU9mZnNldFwiIH0sIGZ1bmN0aW9uKCBtZXRob2QsIHByb3AgKSB7XG5cdHZhciB0b3AgPSBcInBhZ2VZT2Zmc2V0XCIgPT09IHByb3A7XG5cblx0alF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG1ldGhvZCwgdmFsICkge1xuXHRcdFx0dmFyIHdpbiA9IGdldFdpbmRvdyggZWxlbSApO1xuXG5cdFx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gd2luID8gd2luWyBwcm9wIF0gOiBlbGVtWyBtZXRob2QgXTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB3aW4gKSB7XG5cdFx0XHRcdHdpbi5zY3JvbGxUbyhcblx0XHRcdFx0XHQhdG9wID8gdmFsIDogd2luLnBhZ2VYT2Zmc2V0LFxuXHRcdFx0XHRcdHRvcCA/IHZhbCA6IHdpbi5wYWdlWU9mZnNldFxuXHRcdFx0XHQpO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtWyBtZXRob2QgXSA9IHZhbDtcblx0XHRcdH1cblx0XHR9LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9O1xufSApO1xuXG4vLyBTdXBwb3J0OiBTYWZhcmk8Ny04KywgQ2hyb21lPDM3LTQ0K1xuLy8gQWRkIHRoZSB0b3AvbGVmdCBjc3NIb29rcyB1c2luZyBqUXVlcnkuZm4ucG9zaXRpb25cbi8vIFdlYmtpdCBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTA4NFxuLy8gQmxpbmsgYnVnOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MjI5MjgwXG4vLyBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgcGVyY2VudCB3aGVuIHNwZWNpZmllZCBmb3IgdG9wL2xlZnQvYm90dG9tL3JpZ2h0O1xuLy8gcmF0aGVyIHRoYW4gbWFrZSB0aGUgY3NzIG1vZHVsZSBkZXBlbmQgb24gdGhlIG9mZnNldCBtb2R1bGUsIGp1c3QgY2hlY2sgZm9yIGl0IGhlcmVcbmpRdWVyeS5lYWNoKCBbIFwidG9wXCIsIFwibGVmdFwiIF0sIGZ1bmN0aW9uKCBpLCBwcm9wICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIHByb3AgXSA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5waXhlbFBvc2l0aW9uLFxuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGNvbXB1dGVkID0gY3VyQ1NTKCBlbGVtLCBwcm9wICk7XG5cblx0XHRcdFx0Ly8gSWYgY3VyQ1NTIHJldHVybnMgcGVyY2VudGFnZSwgZmFsbGJhY2sgdG8gb2Zmc2V0XG5cdFx0XHRcdHJldHVybiBybnVtbm9ucHgudGVzdCggY29tcHV0ZWQgKSA/XG5cdFx0XHRcdFx0alF1ZXJ5KCBlbGVtICkucG9zaXRpb24oKVsgcHJvcCBdICsgXCJweFwiIDpcblx0XHRcdFx0XHRjb21wdXRlZDtcblx0XHRcdH1cblx0XHR9XG5cdCk7XG59ICk7XG5cblxuLy8gQ3JlYXRlIGlubmVySGVpZ2h0LCBpbm5lcldpZHRoLCBoZWlnaHQsIHdpZHRoLCBvdXRlckhlaWdodCBhbmQgb3V0ZXJXaWR0aCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBIZWlnaHQ6IFwiaGVpZ2h0XCIsIFdpZHRoOiBcIndpZHRoXCIgfSwgZnVuY3Rpb24oIG5hbWUsIHR5cGUgKSB7XG5cdGpRdWVyeS5lYWNoKCB7IHBhZGRpbmc6IFwiaW5uZXJcIiArIG5hbWUsIGNvbnRlbnQ6IHR5cGUsIFwiXCI6IFwib3V0ZXJcIiArIG5hbWUgfSxcblx0XHRmdW5jdGlvbiggZGVmYXVsdEV4dHJhLCBmdW5jTmFtZSApIHtcblxuXHRcdC8vIE1hcmdpbiBpcyBvbmx5IGZvciBvdXRlckhlaWdodCwgb3V0ZXJXaWR0aFxuXHRcdGpRdWVyeS5mblsgZnVuY05hbWUgXSA9IGZ1bmN0aW9uKCBtYXJnaW4sIHZhbHVlICkge1xuXHRcdFx0dmFyIGNoYWluYWJsZSA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKCBkZWZhdWx0RXh0cmEgfHwgdHlwZW9mIG1hcmdpbiAhPT0gXCJib29sZWFuXCIgKSxcblx0XHRcdFx0ZXh0cmEgPSBkZWZhdWx0RXh0cmEgfHwgKCBtYXJnaW4gPT09IHRydWUgfHwgdmFsdWUgPT09IHRydWUgPyBcIm1hcmdpblwiIDogXCJib3JkZXJcIiApO1xuXG5cdFx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgdHlwZSwgdmFsdWUgKSB7XG5cdFx0XHRcdHZhciBkb2M7XG5cblx0XHRcdFx0aWYgKCBqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0XHRcdC8vIEFzIG9mIDUvOC8yMDEyIHRoaXMgd2lsbCB5aWVsZCBpbmNvcnJlY3QgcmVzdWx0cyBmb3IgTW9iaWxlIFNhZmFyaSwgYnV0IHRoZXJlXG5cdFx0XHRcdFx0Ly8gaXNuJ3QgYSB3aG9sZSBsb3Qgd2UgY2FuIGRvLiBTZWUgcHVsbCByZXF1ZXN0IGF0IHRoaXMgVVJMIGZvciBkaXNjdXNzaW9uOlxuXHRcdFx0XHRcdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwvNzY0XG5cdFx0XHRcdFx0cmV0dXJuIGVsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyBcImNsaWVudFwiICsgbmFtZSBdO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gR2V0IGRvY3VtZW50IHdpZHRoIG9yIGhlaWdodFxuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0ZG9jID0gZWxlbS5kb2N1bWVudEVsZW1lbnQ7XG5cblx0XHRcdFx0XHQvLyBFaXRoZXIgc2Nyb2xsW1dpZHRoL0hlaWdodF0gb3Igb2Zmc2V0W1dpZHRoL0hlaWdodF0gb3IgY2xpZW50W1dpZHRoL0hlaWdodF0sXG5cdFx0XHRcdFx0Ly8gd2hpY2hldmVyIGlzIGdyZWF0ZXN0XG5cdFx0XHRcdFx0cmV0dXJuIE1hdGgubWF4KFxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcInNjcm9sbFwiICsgbmFtZSBdLCBkb2NbIFwic2Nyb2xsXCIgKyBuYW1lIF0sXG5cdFx0XHRcdFx0XHRlbGVtLmJvZHlbIFwib2Zmc2V0XCIgKyBuYW1lIF0sIGRvY1sgXCJvZmZzZXRcIiArIG5hbWUgXSxcblx0XHRcdFx0XHRcdGRvY1sgXCJjbGllbnRcIiArIG5hbWUgXVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/XG5cblx0XHRcdFx0XHQvLyBHZXQgd2lkdGggb3IgaGVpZ2h0IG9uIHRoZSBlbGVtZW50LCByZXF1ZXN0aW5nIGJ1dCBub3QgZm9yY2luZyBwYXJzZUZsb2F0XG5cdFx0XHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgdHlwZSwgZXh0cmEgKSA6XG5cblx0XHRcdFx0XHQvLyBTZXQgd2lkdGggb3IgaGVpZ2h0IG9uIHRoZSBlbGVtZW50XG5cdFx0XHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCB0eXBlLCB2YWx1ZSwgZXh0cmEgKTtcblx0XHRcdH0sIHR5cGUsIGNoYWluYWJsZSA/IG1hcmdpbiA6IHVuZGVmaW5lZCwgY2hhaW5hYmxlLCBudWxsICk7XG5cdFx0fTtcblx0fSApO1xufSApO1xuXG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHRiaW5kOiBmdW5jdGlvbiggdHlwZXMsIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlcywgbnVsbCwgZGF0YSwgZm4gKTtcblx0fSxcblx0dW5iaW5kOiBmdW5jdGlvbiggdHlwZXMsIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9mZiggdHlwZXMsIG51bGwsIGZuICk7XG5cdH0sXG5cblx0ZGVsZWdhdGU6IGZ1bmN0aW9uKCBzZWxlY3RvciwgdHlwZXMsIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlcywgc2VsZWN0b3IsIGRhdGEsIGZuICk7XG5cdH0sXG5cdHVuZGVsZWdhdGU6IGZ1bmN0aW9uKCBzZWxlY3RvciwgdHlwZXMsIGZuICkge1xuXG5cdFx0Ly8gKCBuYW1lc3BhY2UgKSBvciAoIHNlbGVjdG9yLCB0eXBlcyBbLCBmbl0gKVxuXHRcdHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID9cblx0XHRcdHRoaXMub2ZmKCBzZWxlY3RvciwgXCIqKlwiICkgOlxuXHRcdFx0dGhpcy5vZmYoIHR5cGVzLCBzZWxlY3RvciB8fCBcIioqXCIsIGZuICk7XG5cdH0sXG5cdHNpemU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmxlbmd0aDtcblx0fVxufSApO1xuXG5qUXVlcnkuZm4uYW5kU2VsZiA9IGpRdWVyeS5mbi5hZGRCYWNrO1xuXG5cblxuXG4vLyBSZWdpc3RlciBhcyBhIG5hbWVkIEFNRCBtb2R1bGUsIHNpbmNlIGpRdWVyeSBjYW4gYmUgY29uY2F0ZW5hdGVkIHdpdGggb3RoZXJcbi8vIGZpbGVzIHRoYXQgbWF5IHVzZSBkZWZpbmUsIGJ1dCBub3QgdmlhIGEgcHJvcGVyIGNvbmNhdGVuYXRpb24gc2NyaXB0IHRoYXRcbi8vIHVuZGVyc3RhbmRzIGFub255bW91cyBBTUQgbW9kdWxlcy4gQSBuYW1lZCBBTUQgaXMgc2FmZXN0IGFuZCBtb3N0IHJvYnVzdFxuLy8gd2F5IHRvIHJlZ2lzdGVyLiBMb3dlcmNhc2UganF1ZXJ5IGlzIHVzZWQgYmVjYXVzZSBBTUQgbW9kdWxlIG5hbWVzIGFyZVxuLy8gZGVyaXZlZCBmcm9tIGZpbGUgbmFtZXMsIGFuZCBqUXVlcnkgaXMgbm9ybWFsbHkgZGVsaXZlcmVkIGluIGEgbG93ZXJjYXNlXG4vLyBmaWxlIG5hbWUuIERvIHRoaXMgYWZ0ZXIgY3JlYXRpbmcgdGhlIGdsb2JhbCBzbyB0aGF0IGlmIGFuIEFNRCBtb2R1bGUgd2FudHNcbi8vIHRvIGNhbGwgbm9Db25mbGljdCB0byBoaWRlIHRoaXMgdmVyc2lvbiBvZiBqUXVlcnksIGl0IHdpbGwgd29yay5cblxuLy8gTm90ZSB0aGF0IGZvciBtYXhpbXVtIHBvcnRhYmlsaXR5LCBsaWJyYXJpZXMgdGhhdCBhcmUgbm90IGpRdWVyeSBzaG91bGRcbi8vIGRlY2xhcmUgdGhlbXNlbHZlcyBhcyBhbm9ueW1vdXMgbW9kdWxlcywgYW5kIGF2b2lkIHNldHRpbmcgYSBnbG9iYWwgaWYgYW5cbi8vIEFNRCBsb2FkZXIgaXMgcHJlc2VudC4galF1ZXJ5IGlzIGEgc3BlY2lhbCBjYXNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlXG4vLyBodHRwczovL2dpdGh1Yi5jb20vanJidXJrZS9yZXF1aXJlanMvd2lraS9VcGRhdGluZy1leGlzdGluZy1saWJyYXJpZXMjd2lraS1hbm9uXG5cbmlmICggdHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQgKSB7XG5cdGRlZmluZSggXCJqcXVlcnlcIiwgW10sIGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBqUXVlcnk7XG5cdH0gKTtcbn1cblxuXG5cbnZhclxuXG5cdC8vIE1hcCBvdmVyIGpRdWVyeSBpbiBjYXNlIG9mIG92ZXJ3cml0ZVxuXHRfalF1ZXJ5ID0gd2luZG93LmpRdWVyeSxcblxuXHQvLyBNYXAgb3ZlciB0aGUgJCBpbiBjYXNlIG9mIG92ZXJ3cml0ZVxuXHRfJCA9IHdpbmRvdy4kO1xuXG5qUXVlcnkubm9Db25mbGljdCA9IGZ1bmN0aW9uKCBkZWVwICkge1xuXHRpZiAoIHdpbmRvdy4kID09PSBqUXVlcnkgKSB7XG5cdFx0d2luZG93LiQgPSBfJDtcblx0fVxuXG5cdGlmICggZGVlcCAmJiB3aW5kb3cualF1ZXJ5ID09PSBqUXVlcnkgKSB7XG5cdFx0d2luZG93LmpRdWVyeSA9IF9qUXVlcnk7XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5O1xufTtcblxuLy8gRXhwb3NlIGpRdWVyeSBhbmQgJCBpZGVudGlmaWVycywgZXZlbiBpbiBBTURcbi8vICgjNzEwMiNjb21tZW50OjEwLCBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9wdWxsLzU1Nylcbi8vIGFuZCBDb21tb25KUyBmb3IgYnJvd3NlciBlbXVsYXRvcnMgKCMxMzU2NilcbmlmICggIW5vR2xvYmFsICkge1xuXHR3aW5kb3cualF1ZXJ5ID0gd2luZG93LiQgPSBqUXVlcnk7XG59XG5cbnJldHVybiBqUXVlcnk7XG59KSk7XG4iLCIvKipcbiAqIHdoYXQtaW5wdXQgLSBBIGdsb2JhbCB1dGlsaXR5IGZvciB0cmFja2luZyB0aGUgY3VycmVudCBpbnB1dCBtZXRob2QgKG1vdXNlLCBrZXlib2FyZCBvciB0b3VjaCkuXG4gKiBAdmVyc2lvbiB2NC4wLjZcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS90ZW4xc2V2ZW4vd2hhdC1pbnB1dFxuICogQGxpY2Vuc2UgTUlUXG4gKi9cbihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwid2hhdElucHV0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIndoYXRJbnB1dFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJ3aGF0SW5wdXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fSxcbi8qKioqKiovIFx0XHRcdGlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGxvYWRlZDogZmFsc2Vcbi8qKioqKiovIFx0XHR9O1xuXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuXG5cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSAoZnVuY3Rpb24oKSB7XG5cblx0ICAvKlxuXHQgICAgLS0tLS0tLS0tLS0tLS0tXG5cdCAgICBWYXJpYWJsZXNcblx0ICAgIC0tLS0tLS0tLS0tLS0tLVxuXHQgICovXG5cblx0ICAvLyBjYWNoZSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcblx0ICB2YXIgZG9jRWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuXHQgIC8vIGxhc3QgdXNlZCBpbnB1dCB0eXBlXG5cdCAgdmFyIGN1cnJlbnRJbnB1dCA9ICdpbml0aWFsJztcblxuXHQgIC8vIGxhc3QgdXNlZCBpbnB1dCBpbnRlbnRcblx0ICB2YXIgY3VycmVudEludGVudCA9IG51bGw7XG5cblx0ICAvLyBmb3JtIGlucHV0IHR5cGVzXG5cdCAgdmFyIGZvcm1JbnB1dHMgPSBbXG5cdCAgICAnaW5wdXQnLFxuXHQgICAgJ3NlbGVjdCcsXG5cdCAgICAndGV4dGFyZWEnXG5cdCAgXTtcblxuXHQgIC8vIGxpc3Qgb2YgbW9kaWZpZXIga2V5cyBjb21tb25seSB1c2VkIHdpdGggdGhlIG1vdXNlIGFuZFxuXHQgIC8vIGNhbiBiZSBzYWZlbHkgaWdub3JlZCB0byBwcmV2ZW50IGZhbHNlIGtleWJvYXJkIGRldGVjdGlvblxuXHQgIHZhciBpZ25vcmVNYXAgPSBbXG5cdCAgICAxNiwgLy8gc2hpZnRcblx0ICAgIDE3LCAvLyBjb250cm9sXG5cdCAgICAxOCwgLy8gYWx0XG5cdCAgICA5MSwgLy8gV2luZG93cyBrZXkgLyBsZWZ0IEFwcGxlIGNtZFxuXHQgICAgOTMgIC8vIFdpbmRvd3MgbWVudSAvIHJpZ2h0IEFwcGxlIGNtZFxuXHQgIF07XG5cblx0ICAvLyBtYXBwaW5nIG9mIGV2ZW50cyB0byBpbnB1dCB0eXBlc1xuXHQgIHZhciBpbnB1dE1hcCA9IHtcblx0ICAgICdrZXl1cCc6ICdrZXlib2FyZCcsXG5cdCAgICAnbW91c2Vkb3duJzogJ21vdXNlJyxcblx0ICAgICdtb3VzZW1vdmUnOiAnbW91c2UnLFxuXHQgICAgJ01TUG9pbnRlckRvd24nOiAncG9pbnRlcicsXG5cdCAgICAnTVNQb2ludGVyTW92ZSc6ICdwb2ludGVyJyxcblx0ICAgICdwb2ludGVyZG93bic6ICdwb2ludGVyJyxcblx0ICAgICdwb2ludGVybW92ZSc6ICdwb2ludGVyJyxcblx0ICAgICd0b3VjaHN0YXJ0JzogJ3RvdWNoJ1xuXHQgIH07XG5cblx0ICAvLyBhcnJheSBvZiBhbGwgdXNlZCBpbnB1dCB0eXBlc1xuXHQgIHZhciBpbnB1dFR5cGVzID0gW107XG5cblx0ICAvLyBib29sZWFuOiB0cnVlIGlmIHRvdWNoIGJ1ZmZlciB0aW1lciBpcyBydW5uaW5nXG5cdCAgdmFyIGlzQnVmZmVyaW5nID0gZmFsc2U7XG5cblx0ICAvLyBtYXAgb2YgSUUgMTAgcG9pbnRlciBldmVudHNcblx0ICB2YXIgcG9pbnRlck1hcCA9IHtcblx0ICAgIDI6ICd0b3VjaCcsXG5cdCAgICAzOiAndG91Y2gnLCAvLyB0cmVhdCBwZW4gbGlrZSB0b3VjaFxuXHQgICAgNDogJ21vdXNlJ1xuXHQgIH07XG5cblx0ICAvLyB0b3VjaCBidWZmZXIgdGltZXJcblx0ICB2YXIgdG91Y2hUaW1lciA9IG51bGw7XG5cblxuXHQgIC8qXG5cdCAgICAtLS0tLS0tLS0tLS0tLS1cblx0ICAgIFNldCB1cFxuXHQgICAgLS0tLS0tLS0tLS0tLS0tXG5cdCAgKi9cblxuXHQgIHZhciBzZXRVcCA9IGZ1bmN0aW9uKCkge1xuXG5cdCAgICAvLyBhZGQgY29ycmVjdCBtb3VzZSB3aGVlbCBldmVudCBtYXBwaW5nIHRvIGBpbnB1dE1hcGBcblx0ICAgIGlucHV0TWFwW2RldGVjdFdoZWVsKCldID0gJ21vdXNlJztcblxuXHQgICAgYWRkTGlzdGVuZXJzKCk7XG5cdCAgICBzZXRJbnB1dCgpO1xuXHQgIH07XG5cblxuXHQgIC8qXG5cdCAgICAtLS0tLS0tLS0tLS0tLS1cblx0ICAgIEV2ZW50c1xuXHQgICAgLS0tLS0tLS0tLS0tLS0tXG5cdCAgKi9cblxuXHQgIHZhciBhZGRMaXN0ZW5lcnMgPSBmdW5jdGlvbigpIHtcblxuXHQgICAgLy8gYHBvaW50ZXJtb3ZlYCwgYE1TUG9pbnRlck1vdmVgLCBgbW91c2Vtb3ZlYCBhbmQgbW91c2Ugd2hlZWwgZXZlbnQgYmluZGluZ1xuXHQgICAgLy8gY2FuIG9ubHkgZGVtb25zdHJhdGUgcG90ZW50aWFsLCBidXQgbm90IGFjdHVhbCwgaW50ZXJhY3Rpb25cblx0ICAgIC8vIGFuZCBhcmUgdHJlYXRlZCBzZXBhcmF0ZWx5XG5cblx0ICAgIC8vIHBvaW50ZXIgZXZlbnRzIChtb3VzZSwgcGVuLCB0b3VjaClcblx0ICAgIGlmICh3aW5kb3cuUG9pbnRlckV2ZW50KSB7XG5cdCAgICAgIGRvY0VsZW0uYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCB1cGRhdGVJbnB1dCk7XG5cdCAgICAgIGRvY0VsZW0uYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBzZXRJbnRlbnQpO1xuXHQgICAgfSBlbHNlIGlmICh3aW5kb3cuTVNQb2ludGVyRXZlbnQpIHtcblx0ICAgICAgZG9jRWxlbS5hZGRFdmVudExpc3RlbmVyKCdNU1BvaW50ZXJEb3duJywgdXBkYXRlSW5wdXQpO1xuXHQgICAgICBkb2NFbGVtLmFkZEV2ZW50TGlzdGVuZXIoJ01TUG9pbnRlck1vdmUnLCBzZXRJbnRlbnQpO1xuXHQgICAgfSBlbHNlIHtcblxuXHQgICAgICAvLyBtb3VzZSBldmVudHNcblx0ICAgICAgZG9jRWxlbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB1cGRhdGVJbnB1dCk7XG5cdCAgICAgIGRvY0VsZW0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgc2V0SW50ZW50KTtcblxuXHQgICAgICAvLyB0b3VjaCBldmVudHNcblx0ICAgICAgaWYgKCdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdykge1xuXHQgICAgICAgIGRvY0VsZW0uYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRvdWNoQnVmZmVyKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICAvLyBtb3VzZSB3aGVlbFxuXHQgICAgZG9jRWxlbS5hZGRFdmVudExpc3RlbmVyKGRldGVjdFdoZWVsKCksIHNldEludGVudCk7XG5cblx0ICAgIC8vIGtleWJvYXJkIGV2ZW50c1xuXHQgICAgZG9jRWxlbS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdXBkYXRlSW5wdXQpO1xuXHQgICAgZG9jRWxlbS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHVwZGF0ZUlucHV0KTtcblx0ICB9O1xuXG5cdCAgLy8gY2hlY2tzIGNvbmRpdGlvbnMgYmVmb3JlIHVwZGF0aW5nIG5ldyBpbnB1dFxuXHQgIHZhciB1cGRhdGVJbnB1dCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cblx0ICAgIC8vIG9ubHkgZXhlY3V0ZSBpZiB0aGUgdG91Y2ggYnVmZmVyIHRpbWVyIGlzbid0IHJ1bm5pbmdcblx0ICAgIGlmICghaXNCdWZmZXJpbmcpIHtcblx0ICAgICAgdmFyIGV2ZW50S2V5ID0gZXZlbnQud2hpY2g7XG5cdCAgICAgIHZhciB2YWx1ZSA9IGlucHV0TWFwW2V2ZW50LnR5cGVdO1xuXHQgICAgICBpZiAodmFsdWUgPT09ICdwb2ludGVyJykgdmFsdWUgPSBwb2ludGVyVHlwZShldmVudCk7XG5cblx0ICAgICAgaWYgKFxuXHQgICAgICAgIGN1cnJlbnRJbnB1dCAhPT0gdmFsdWUgfHxcblx0ICAgICAgICBjdXJyZW50SW50ZW50ICE9PSB2YWx1ZVxuXHQgICAgICApIHtcblxuXHQgICAgICAgIHZhciBhY3RpdmVFbGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblx0ICAgICAgICB2YXIgYWN0aXZlSW5wdXQgPSAoXG5cdCAgICAgICAgICBhY3RpdmVFbGVtICYmXG5cdCAgICAgICAgICBhY3RpdmVFbGVtLm5vZGVOYW1lICYmXG5cdCAgICAgICAgICBmb3JtSW5wdXRzLmluZGV4T2YoYWN0aXZlRWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSA9PT0gLTFcblx0ICAgICAgICApID8gdHJ1ZSA6IGZhbHNlO1xuXG5cdCAgICAgICAgaWYgKFxuXHQgICAgICAgICAgdmFsdWUgPT09ICd0b3VjaCcgfHxcblxuXHQgICAgICAgICAgLy8gaWdub3JlIG1vdXNlIG1vZGlmaWVyIGtleXNcblx0ICAgICAgICAgICh2YWx1ZSA9PT0gJ21vdXNlJyAmJiBpZ25vcmVNYXAuaW5kZXhPZihldmVudEtleSkgPT09IC0xKSB8fFxuXG5cdCAgICAgICAgICAvLyBkb24ndCBzd2l0Y2ggaWYgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBhIGZvcm0gaW5wdXRcblx0ICAgICAgICAgICh2YWx1ZSA9PT0gJ2tleWJvYXJkJyAmJiBhY3RpdmVJbnB1dClcblx0ICAgICAgICApIHtcblxuXHQgICAgICAgICAgLy8gc2V0IHRoZSBjdXJyZW50IGFuZCBjYXRjaC1hbGwgdmFyaWFibGVcblx0ICAgICAgICAgIGN1cnJlbnRJbnB1dCA9IGN1cnJlbnRJbnRlbnQgPSB2YWx1ZTtcblxuXHQgICAgICAgICAgc2V0SW5wdXQoKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9O1xuXG5cdCAgLy8gdXBkYXRlcyB0aGUgZG9jIGFuZCBgaW5wdXRUeXBlc2AgYXJyYXkgd2l0aCBuZXcgaW5wdXRcblx0ICB2YXIgc2V0SW5wdXQgPSBmdW5jdGlvbigpIHtcblx0ICAgIGRvY0VsZW0uc2V0QXR0cmlidXRlKCdkYXRhLXdoYXRpbnB1dCcsIGN1cnJlbnRJbnB1dCk7XG5cdCAgICBkb2NFbGVtLnNldEF0dHJpYnV0ZSgnZGF0YS13aGF0aW50ZW50JywgY3VycmVudElucHV0KTtcblxuXHQgICAgaWYgKGlucHV0VHlwZXMuaW5kZXhPZihjdXJyZW50SW5wdXQpID09PSAtMSkge1xuXHQgICAgICBpbnB1dFR5cGVzLnB1c2goY3VycmVudElucHV0KTtcblx0ICAgICAgZG9jRWxlbS5jbGFzc05hbWUgKz0gJyB3aGF0aW5wdXQtdHlwZXMtJyArIGN1cnJlbnRJbnB1dDtcblx0ICAgIH1cblx0ICB9O1xuXG5cdCAgLy8gdXBkYXRlcyBpbnB1dCBpbnRlbnQgZm9yIGBtb3VzZW1vdmVgIGFuZCBgcG9pbnRlcm1vdmVgXG5cdCAgdmFyIHNldEludGVudCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cblx0ICAgIC8vIG9ubHkgZXhlY3V0ZSBpZiB0aGUgdG91Y2ggYnVmZmVyIHRpbWVyIGlzbid0IHJ1bm5pbmdcblx0ICAgIGlmICghaXNCdWZmZXJpbmcpIHtcblx0ICAgICAgdmFyIHZhbHVlID0gaW5wdXRNYXBbZXZlbnQudHlwZV07XG5cdCAgICAgIGlmICh2YWx1ZSA9PT0gJ3BvaW50ZXInKSB2YWx1ZSA9IHBvaW50ZXJUeXBlKGV2ZW50KTtcblxuXHQgICAgICBpZiAoY3VycmVudEludGVudCAhPT0gdmFsdWUpIHtcblx0ICAgICAgICBjdXJyZW50SW50ZW50ID0gdmFsdWU7XG5cblx0ICAgICAgICBkb2NFbGVtLnNldEF0dHJpYnV0ZSgnZGF0YS13aGF0aW50ZW50JywgY3VycmVudEludGVudCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9O1xuXG5cdCAgLy8gYnVmZmVycyB0b3VjaCBldmVudHMgYmVjYXVzZSB0aGV5IGZyZXF1ZW50bHkgYWxzbyBmaXJlIG1vdXNlIGV2ZW50c1xuXHQgIHZhciB0b3VjaEJ1ZmZlciA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cblx0ICAgIC8vIGNsZWFyIHRoZSB0aW1lciBpZiBpdCBoYXBwZW5zIHRvIGJlIHJ1bm5pbmdcblx0ICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodG91Y2hUaW1lcik7XG5cblx0ICAgIC8vIHNldCB0aGUgY3VycmVudCBpbnB1dFxuXHQgICAgdXBkYXRlSW5wdXQoZXZlbnQpO1xuXG5cdCAgICAvLyBzZXQgdGhlIGlzQnVmZmVyaW5nIHRvIGB0cnVlYFxuXHQgICAgaXNCdWZmZXJpbmcgPSB0cnVlO1xuXG5cdCAgICAvLyBydW4gdGhlIHRpbWVyXG5cdCAgICB0b3VjaFRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cblx0ICAgICAgLy8gaWYgdGhlIHRpbWVyIHJ1bnMgb3V0LCBzZXQgaXNCdWZmZXJpbmcgYmFjayB0byBgZmFsc2VgXG5cdCAgICAgIGlzQnVmZmVyaW5nID0gZmFsc2U7XG5cdCAgICB9LCAyMDApO1xuXHQgIH07XG5cblxuXHQgIC8qXG5cdCAgICAtLS0tLS0tLS0tLS0tLS1cblx0ICAgIFV0aWxpdGllc1xuXHQgICAgLS0tLS0tLS0tLS0tLS0tXG5cdCAgKi9cblxuXHQgIHZhciBwb2ludGVyVHlwZSA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cdCAgIGlmICh0eXBlb2YgZXZlbnQucG9pbnRlclR5cGUgPT09ICdudW1iZXInKSB7XG5cdCAgICAgIHJldHVybiBwb2ludGVyTWFwW2V2ZW50LnBvaW50ZXJUeXBlXTtcblx0ICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIChldmVudC5wb2ludGVyVHlwZSA9PT0gJ3BlbicpID8gJ3RvdWNoJyA6IGV2ZW50LnBvaW50ZXJUeXBlOyAvLyB0cmVhdCBwZW4gbGlrZSB0b3VjaFxuXHQgICB9XG5cdCAgfTtcblxuXHQgIC8vIGRldGVjdCB2ZXJzaW9uIG9mIG1vdXNlIHdoZWVsIGV2ZW50IHRvIHVzZVxuXHQgIC8vIHZpYSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9FdmVudHMvd2hlZWxcblx0ICB2YXIgZGV0ZWN0V2hlZWwgPSBmdW5jdGlvbigpIHtcblx0ICAgIHJldHVybiAnb253aGVlbCcgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykgP1xuXHQgICAgICAnd2hlZWwnIDogLy8gTW9kZXJuIGJyb3dzZXJzIHN1cHBvcnQgXCJ3aGVlbFwiXG5cblx0ICAgICAgZG9jdW1lbnQub25tb3VzZXdoZWVsICE9PSB1bmRlZmluZWQgP1xuXHQgICAgICAgICdtb3VzZXdoZWVsJyA6IC8vIFdlYmtpdCBhbmQgSUUgc3VwcG9ydCBhdCBsZWFzdCBcIm1vdXNld2hlZWxcIlxuXHQgICAgICAgICdET01Nb3VzZVNjcm9sbCc7IC8vIGxldCdzIGFzc3VtZSB0aGF0IHJlbWFpbmluZyBicm93c2VycyBhcmUgb2xkZXIgRmlyZWZveFxuXHQgIH07XG5cblxuXHQgIC8qXG5cdCAgICAtLS0tLS0tLS0tLS0tLS1cblx0ICAgIEluaXRcblxuXHQgICAgZG9uJ3Qgc3RhcnQgc2NyaXB0IHVubGVzcyBicm93c2VyIGN1dHMgdGhlIG11c3RhcmRcblx0ICAgIChhbHNvIHBhc3NlcyBpZiBwb2x5ZmlsbHMgYXJlIHVzZWQpXG5cdCAgICAtLS0tLS0tLS0tLS0tLS1cblx0ICAqL1xuXG5cdCAgaWYgKFxuXHQgICAgJ2FkZEV2ZW50TGlzdGVuZXInIGluIHdpbmRvdyAmJlxuXHQgICAgQXJyYXkucHJvdG90eXBlLmluZGV4T2Zcblx0ICApIHtcblx0ICAgIHNldFVwKCk7XG5cdCAgfVxuXG5cblx0ICAvKlxuXHQgICAgLS0tLS0tLS0tLS0tLS0tXG5cdCAgICBBUElcblx0ICAgIC0tLS0tLS0tLS0tLS0tLVxuXHQgICovXG5cblx0ICByZXR1cm4ge1xuXG5cdCAgICAvLyByZXR1cm5zIHN0cmluZzogdGhlIGN1cnJlbnQgaW5wdXQgdHlwZVxuXHQgICAgLy8gb3B0OiAnbG9vc2UnfCdzdHJpY3QnXG5cdCAgICAvLyAnc3RyaWN0JyAoZGVmYXVsdCk6IHJldHVybnMgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGBkYXRhLXdoYXRpbnB1dGAgYXR0cmlidXRlXG5cdCAgICAvLyAnbG9vc2UnOiBpbmNsdWRlcyBgZGF0YS13aGF0aW50ZW50YCB2YWx1ZSBpZiBpdCdzIG1vcmUgY3VycmVudCB0aGFuIGBkYXRhLXdoYXRpbnB1dGBcblx0ICAgIGFzazogZnVuY3Rpb24ob3B0KSB7IHJldHVybiAob3B0ID09PSAnbG9vc2UnKSA/IGN1cnJlbnRJbnRlbnQgOiBjdXJyZW50SW5wdXQ7IH0sXG5cblx0ICAgIC8vIHJldHVybnMgYXJyYXk6IGFsbCB0aGUgZGV0ZWN0ZWQgaW5wdXQgdHlwZXNcblx0ICAgIHR5cGVzOiBmdW5jdGlvbigpIHsgcmV0dXJuIGlucHV0VHlwZXM7IH1cblxuXHQgIH07XG5cblx0fSgpKTtcblxuXG4vKioqLyB9XG4vKioqKioqLyBdKVxufSk7XG47IiwiIWZ1bmN0aW9uKCQpIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBGT1VOREFUSU9OX1ZFUlNJT04gPSAnNi4zLjAnO1xuXG4vLyBHbG9iYWwgRm91bmRhdGlvbiBvYmplY3Rcbi8vIFRoaXMgaXMgYXR0YWNoZWQgdG8gdGhlIHdpbmRvdywgb3IgdXNlZCBhcyBhIG1vZHVsZSBmb3IgQU1EL0Jyb3dzZXJpZnlcbnZhciBGb3VuZGF0aW9uID0ge1xuICB2ZXJzaW9uOiBGT1VOREFUSU9OX1ZFUlNJT04sXG5cbiAgLyoqXG4gICAqIFN0b3JlcyBpbml0aWFsaXplZCBwbHVnaW5zLlxuICAgKi9cbiAgX3BsdWdpbnM6IHt9LFxuXG4gIC8qKlxuICAgKiBTdG9yZXMgZ2VuZXJhdGVkIHVuaXF1ZSBpZHMgZm9yIHBsdWdpbiBpbnN0YW5jZXNcbiAgICovXG4gIF91dWlkczogW10sXG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBib29sZWFuIGZvciBSVEwgc3VwcG9ydFxuICAgKi9cbiAgcnRsOiBmdW5jdGlvbigpe1xuICAgIHJldHVybiAkKCdodG1sJykuYXR0cignZGlyJykgPT09ICdydGwnO1xuICB9LFxuICAvKipcbiAgICogRGVmaW5lcyBhIEZvdW5kYXRpb24gcGx1Z2luLCBhZGRpbmcgaXQgdG8gdGhlIGBGb3VuZGF0aW9uYCBuYW1lc3BhY2UgYW5kIHRoZSBsaXN0IG9mIHBsdWdpbnMgdG8gaW5pdGlhbGl6ZSB3aGVuIHJlZmxvd2luZy5cbiAgICogQHBhcmFtIHtPYmplY3R9IHBsdWdpbiAtIFRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgcGx1Z2luLlxuICAgKi9cbiAgcGx1Z2luOiBmdW5jdGlvbihwbHVnaW4sIG5hbWUpIHtcbiAgICAvLyBPYmplY3Qga2V5IHRvIHVzZSB3aGVuIGFkZGluZyB0byBnbG9iYWwgRm91bmRhdGlvbiBvYmplY3RcbiAgICAvLyBFeGFtcGxlczogRm91bmRhdGlvbi5SZXZlYWwsIEZvdW5kYXRpb24uT2ZmQ2FudmFzXG4gICAgdmFyIGNsYXNzTmFtZSA9IChuYW1lIHx8IGZ1bmN0aW9uTmFtZShwbHVnaW4pKTtcbiAgICAvLyBPYmplY3Qga2V5IHRvIHVzZSB3aGVuIHN0b3JpbmcgdGhlIHBsdWdpbiwgYWxzbyB1c2VkIHRvIGNyZWF0ZSB0aGUgaWRlbnRpZnlpbmcgZGF0YSBhdHRyaWJ1dGUgZm9yIHRoZSBwbHVnaW5cbiAgICAvLyBFeGFtcGxlczogZGF0YS1yZXZlYWwsIGRhdGEtb2ZmLWNhbnZhc1xuICAgIHZhciBhdHRyTmFtZSAgPSBoeXBoZW5hdGUoY2xhc3NOYW1lKTtcblxuICAgIC8vIEFkZCB0byB0aGUgRm91bmRhdGlvbiBvYmplY3QgYW5kIHRoZSBwbHVnaW5zIGxpc3QgKGZvciByZWZsb3dpbmcpXG4gICAgdGhpcy5fcGx1Z2luc1thdHRyTmFtZV0gPSB0aGlzW2NsYXNzTmFtZV0gPSBwbHVnaW47XG4gIH0sXG4gIC8qKlxuICAgKiBAZnVuY3Rpb25cbiAgICogUG9wdWxhdGVzIHRoZSBfdXVpZHMgYXJyYXkgd2l0aCBwb2ludGVycyB0byBlYWNoIGluZGl2aWR1YWwgcGx1Z2luIGluc3RhbmNlLlxuICAgKiBBZGRzIHRoZSBgemZQbHVnaW5gIGRhdGEtYXR0cmlidXRlIHRvIHByb2dyYW1tYXRpY2FsbHkgY3JlYXRlZCBwbHVnaW5zIHRvIGFsbG93IHVzZSBvZiAkKHNlbGVjdG9yKS5mb3VuZGF0aW9uKG1ldGhvZCkgY2FsbHMuXG4gICAqIEFsc28gZmlyZXMgdGhlIGluaXRpYWxpemF0aW9uIGV2ZW50IGZvciBlYWNoIHBsdWdpbiwgY29uc29saWRhdGluZyByZXBldGl0aXZlIGNvZGUuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwbHVnaW4gLSBhbiBpbnN0YW5jZSBvZiBhIHBsdWdpbiwgdXN1YWxseSBgdGhpc2AgaW4gY29udGV4dC5cbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSB0aGUgbmFtZSBvZiB0aGUgcGx1Z2luLCBwYXNzZWQgYXMgYSBjYW1lbENhc2VkIHN0cmluZy5cbiAgICogQGZpcmVzIFBsdWdpbiNpbml0XG4gICAqL1xuICByZWdpc3RlclBsdWdpbjogZnVuY3Rpb24ocGx1Z2luLCBuYW1lKXtcbiAgICB2YXIgcGx1Z2luTmFtZSA9IG5hbWUgPyBoeXBoZW5hdGUobmFtZSkgOiBmdW5jdGlvbk5hbWUocGx1Z2luLmNvbnN0cnVjdG9yKS50b0xvd2VyQ2FzZSgpO1xuICAgIHBsdWdpbi51dWlkID0gdGhpcy5HZXRZb0RpZ2l0cyg2LCBwbHVnaW5OYW1lKTtcblxuICAgIGlmKCFwbHVnaW4uJGVsZW1lbnQuYXR0cihgZGF0YS0ke3BsdWdpbk5hbWV9YCkpeyBwbHVnaW4uJGVsZW1lbnQuYXR0cihgZGF0YS0ke3BsdWdpbk5hbWV9YCwgcGx1Z2luLnV1aWQpOyB9XG4gICAgaWYoIXBsdWdpbi4kZWxlbWVudC5kYXRhKCd6ZlBsdWdpbicpKXsgcGx1Z2luLiRlbGVtZW50LmRhdGEoJ3pmUGx1Z2luJywgcGx1Z2luKTsgfVxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZpcmVzIHdoZW4gdGhlIHBsdWdpbiBoYXMgaW5pdGlhbGl6ZWQuXG4gICAgICAgICAgICogQGV2ZW50IFBsdWdpbiNpbml0XG4gICAgICAgICAgICovXG4gICAgcGx1Z2luLiRlbGVtZW50LnRyaWdnZXIoYGluaXQuemYuJHtwbHVnaW5OYW1lfWApO1xuXG4gICAgdGhpcy5fdXVpZHMucHVzaChwbHVnaW4udXVpZCk7XG5cbiAgICByZXR1cm47XG4gIH0sXG4gIC8qKlxuICAgKiBAZnVuY3Rpb25cbiAgICogUmVtb3ZlcyB0aGUgcGx1Z2lucyB1dWlkIGZyb20gdGhlIF91dWlkcyBhcnJheS5cbiAgICogUmVtb3ZlcyB0aGUgemZQbHVnaW4gZGF0YSBhdHRyaWJ1dGUsIGFzIHdlbGwgYXMgdGhlIGRhdGEtcGx1Z2luLW5hbWUgYXR0cmlidXRlLlxuICAgKiBBbHNvIGZpcmVzIHRoZSBkZXN0cm95ZWQgZXZlbnQgZm9yIHRoZSBwbHVnaW4sIGNvbnNvbGlkYXRpbmcgcmVwZXRpdGl2ZSBjb2RlLlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGx1Z2luIC0gYW4gaW5zdGFuY2Ugb2YgYSBwbHVnaW4sIHVzdWFsbHkgYHRoaXNgIGluIGNvbnRleHQuXG4gICAqIEBmaXJlcyBQbHVnaW4jZGVzdHJveWVkXG4gICAqL1xuICB1bnJlZ2lzdGVyUGx1Z2luOiBmdW5jdGlvbihwbHVnaW4pe1xuICAgIHZhciBwbHVnaW5OYW1lID0gaHlwaGVuYXRlKGZ1bmN0aW9uTmFtZShwbHVnaW4uJGVsZW1lbnQuZGF0YSgnemZQbHVnaW4nKS5jb25zdHJ1Y3RvcikpO1xuXG4gICAgdGhpcy5fdXVpZHMuc3BsaWNlKHRoaXMuX3V1aWRzLmluZGV4T2YocGx1Z2luLnV1aWQpLCAxKTtcbiAgICBwbHVnaW4uJGVsZW1lbnQucmVtb3ZlQXR0cihgZGF0YS0ke3BsdWdpbk5hbWV9YCkucmVtb3ZlRGF0YSgnemZQbHVnaW4nKVxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZpcmVzIHdoZW4gdGhlIHBsdWdpbiBoYXMgYmVlbiBkZXN0cm95ZWQuXG4gICAgICAgICAgICogQGV2ZW50IFBsdWdpbiNkZXN0cm95ZWRcbiAgICAgICAgICAgKi9cbiAgICAgICAgICAudHJpZ2dlcihgZGVzdHJveWVkLnpmLiR7cGx1Z2luTmFtZX1gKTtcbiAgICBmb3IodmFyIHByb3AgaW4gcGx1Z2luKXtcbiAgICAgIHBsdWdpbltwcm9wXSA9IG51bGw7Ly9jbGVhbiB1cCBzY3JpcHQgdG8gcHJlcCBmb3IgZ2FyYmFnZSBjb2xsZWN0aW9uLlxuICAgIH1cbiAgICByZXR1cm47XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBmdW5jdGlvblxuICAgKiBDYXVzZXMgb25lIG9yIG1vcmUgYWN0aXZlIHBsdWdpbnMgdG8gcmUtaW5pdGlhbGl6ZSwgcmVzZXR0aW5nIGV2ZW50IGxpc3RlbmVycywgcmVjYWxjdWxhdGluZyBwb3NpdGlvbnMsIGV0Yy5cbiAgICogQHBhcmFtIHtTdHJpbmd9IHBsdWdpbnMgLSBvcHRpb25hbCBzdHJpbmcgb2YgYW4gaW5kaXZpZHVhbCBwbHVnaW4ga2V5LCBhdHRhaW5lZCBieSBjYWxsaW5nIGAkKGVsZW1lbnQpLmRhdGEoJ3BsdWdpbk5hbWUnKWAsIG9yIHN0cmluZyBvZiBhIHBsdWdpbiBjbGFzcyBpLmUuIGAnZHJvcGRvd24nYFxuICAgKiBAZGVmYXVsdCBJZiBubyBhcmd1bWVudCBpcyBwYXNzZWQsIHJlZmxvdyBhbGwgY3VycmVudGx5IGFjdGl2ZSBwbHVnaW5zLlxuICAgKi9cbiAgIHJlSW5pdDogZnVuY3Rpb24ocGx1Z2lucyl7XG4gICAgIHZhciBpc0pRID0gcGx1Z2lucyBpbnN0YW5jZW9mICQ7XG4gICAgIHRyeXtcbiAgICAgICBpZihpc0pRKXtcbiAgICAgICAgIHBsdWdpbnMuZWFjaChmdW5jdGlvbigpe1xuICAgICAgICAgICAkKHRoaXMpLmRhdGEoJ3pmUGx1Z2luJykuX2luaXQoKTtcbiAgICAgICAgIH0pO1xuICAgICAgIH1lbHNle1xuICAgICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgcGx1Z2lucyxcbiAgICAgICAgIF90aGlzID0gdGhpcyxcbiAgICAgICAgIGZucyA9IHtcbiAgICAgICAgICAgJ29iamVjdCc6IGZ1bmN0aW9uKHBsZ3Mpe1xuICAgICAgICAgICAgIHBsZ3MuZm9yRWFjaChmdW5jdGlvbihwKXtcbiAgICAgICAgICAgICAgIHAgPSBoeXBoZW5hdGUocCk7XG4gICAgICAgICAgICAgICAkKCdbZGF0YS0nKyBwICsnXScpLmZvdW5kYXRpb24oJ19pbml0Jyk7XG4gICAgICAgICAgICAgfSk7XG4gICAgICAgICAgIH0sXG4gICAgICAgICAgICdzdHJpbmcnOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgIHBsdWdpbnMgPSBoeXBoZW5hdGUocGx1Z2lucyk7XG4gICAgICAgICAgICAgJCgnW2RhdGEtJysgcGx1Z2lucyArJ10nKS5mb3VuZGF0aW9uKCdfaW5pdCcpO1xuICAgICAgICAgICB9LFxuICAgICAgICAgICAndW5kZWZpbmVkJzogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICB0aGlzWydvYmplY3QnXShPYmplY3Qua2V5cyhfdGhpcy5fcGx1Z2lucykpO1xuICAgICAgICAgICB9XG4gICAgICAgICB9O1xuICAgICAgICAgZm5zW3R5cGVdKHBsdWdpbnMpO1xuICAgICAgIH1cbiAgICAgfWNhdGNoKGVycil7XG4gICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICB9ZmluYWxseXtcbiAgICAgICByZXR1cm4gcGx1Z2lucztcbiAgICAgfVxuICAgfSxcblxuICAvKipcbiAgICogcmV0dXJucyBhIHJhbmRvbSBiYXNlLTM2IHVpZCB3aXRoIG5hbWVzcGFjaW5nXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcGFyYW0ge051bWJlcn0gbGVuZ3RoIC0gbnVtYmVyIG9mIHJhbmRvbSBiYXNlLTM2IGRpZ2l0cyBkZXNpcmVkLiBJbmNyZWFzZSBmb3IgbW9yZSByYW5kb20gc3RyaW5ncy5cbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZSAtIG5hbWUgb2YgcGx1Z2luIHRvIGJlIGluY29ycG9yYXRlZCBpbiB1aWQsIG9wdGlvbmFsLlxuICAgKiBAZGVmYXVsdCB7U3RyaW5nfSAnJyAtIGlmIG5vIHBsdWdpbiBuYW1lIGlzIHByb3ZpZGVkLCBub3RoaW5nIGlzIGFwcGVuZGVkIHRvIHRoZSB1aWQuXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IC0gdW5pcXVlIGlkXG4gICAqL1xuICBHZXRZb0RpZ2l0czogZnVuY3Rpb24obGVuZ3RoLCBuYW1lc3BhY2Upe1xuICAgIGxlbmd0aCA9IGxlbmd0aCB8fCA2O1xuICAgIHJldHVybiBNYXRoLnJvdW5kKChNYXRoLnBvdygzNiwgbGVuZ3RoICsgMSkgLSBNYXRoLnJhbmRvbSgpICogTWF0aC5wb3coMzYsIGxlbmd0aCkpKS50b1N0cmluZygzNikuc2xpY2UoMSkgKyAobmFtZXNwYWNlID8gYC0ke25hbWVzcGFjZX1gIDogJycpO1xuICB9LFxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBwbHVnaW5zIG9uIGFueSBlbGVtZW50cyB3aXRoaW4gYGVsZW1gIChhbmQgYGVsZW1gIGl0c2VsZikgdGhhdCBhcmVuJ3QgYWxyZWFkeSBpbml0aWFsaXplZC5cbiAgICogQHBhcmFtIHtPYmplY3R9IGVsZW0gLSBqUXVlcnkgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGVsZW1lbnQgdG8gY2hlY2sgaW5zaWRlLiBBbHNvIGNoZWNrcyB0aGUgZWxlbWVudCBpdHNlbGYsIHVubGVzcyBpdCdzIHRoZSBgZG9jdW1lbnRgIG9iamVjdC5cbiAgICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IHBsdWdpbnMgLSBBIGxpc3Qgb2YgcGx1Z2lucyB0byBpbml0aWFsaXplLiBMZWF2ZSB0aGlzIG91dCB0byBpbml0aWFsaXplIGV2ZXJ5dGhpbmcuXG4gICAqL1xuICByZWZsb3c6IGZ1bmN0aW9uKGVsZW0sIHBsdWdpbnMpIHtcblxuICAgIC8vIElmIHBsdWdpbnMgaXMgdW5kZWZpbmVkLCBqdXN0IGdyYWIgZXZlcnl0aGluZ1xuICAgIGlmICh0eXBlb2YgcGx1Z2lucyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHBsdWdpbnMgPSBPYmplY3Qua2V5cyh0aGlzLl9wbHVnaW5zKTtcbiAgICB9XG4gICAgLy8gSWYgcGx1Z2lucyBpcyBhIHN0cmluZywgY29udmVydCBpdCB0byBhbiBhcnJheSB3aXRoIG9uZSBpdGVtXG4gICAgZWxzZSBpZiAodHlwZW9mIHBsdWdpbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICBwbHVnaW5zID0gW3BsdWdpbnNdO1xuICAgIH1cblxuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggZWFjaCBwbHVnaW5cbiAgICAkLmVhY2gocGx1Z2lucywgZnVuY3Rpb24oaSwgbmFtZSkge1xuICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IHBsdWdpblxuICAgICAgdmFyIHBsdWdpbiA9IF90aGlzLl9wbHVnaW5zW25hbWVdO1xuXG4gICAgICAvLyBMb2NhbGl6ZSB0aGUgc2VhcmNoIHRvIGFsbCBlbGVtZW50cyBpbnNpZGUgZWxlbSwgYXMgd2VsbCBhcyBlbGVtIGl0c2VsZiwgdW5sZXNzIGVsZW0gPT09IGRvY3VtZW50XG4gICAgICB2YXIgJGVsZW0gPSAkKGVsZW0pLmZpbmQoJ1tkYXRhLScrbmFtZSsnXScpLmFkZEJhY2soJ1tkYXRhLScrbmFtZSsnXScpO1xuXG4gICAgICAvLyBGb3IgZWFjaCBwbHVnaW4gZm91bmQsIGluaXRpYWxpemUgaXRcbiAgICAgICRlbGVtLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciAkZWwgPSAkKHRoaXMpLFxuICAgICAgICAgICAgb3B0cyA9IHt9O1xuICAgICAgICAvLyBEb24ndCBkb3VibGUtZGlwIG9uIHBsdWdpbnNcbiAgICAgICAgaWYgKCRlbC5kYXRhKCd6ZlBsdWdpbicpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiVHJpZWQgdG8gaW5pdGlhbGl6ZSBcIituYW1lK1wiIG9uIGFuIGVsZW1lbnQgdGhhdCBhbHJlYWR5IGhhcyBhIEZvdW5kYXRpb24gcGx1Z2luLlwiKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZigkZWwuYXR0cignZGF0YS1vcHRpb25zJykpe1xuICAgICAgICAgIHZhciB0aGluZyA9ICRlbC5hdHRyKCdkYXRhLW9wdGlvbnMnKS5zcGxpdCgnOycpLmZvckVhY2goZnVuY3Rpb24oZSwgaSl7XG4gICAgICAgICAgICB2YXIgb3B0ID0gZS5zcGxpdCgnOicpLm1hcChmdW5jdGlvbihlbCl7IHJldHVybiBlbC50cmltKCk7IH0pO1xuICAgICAgICAgICAgaWYob3B0WzBdKSBvcHRzW29wdFswXV0gPSBwYXJzZVZhbHVlKG9wdFsxXSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5e1xuICAgICAgICAgICRlbC5kYXRhKCd6ZlBsdWdpbicsIG5ldyBwbHVnaW4oJCh0aGlzKSwgb3B0cykpO1xuICAgICAgICB9Y2F0Y2goZXIpe1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXIpO1xuICAgICAgICB9ZmluYWxseXtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuICBnZXRGbk5hbWU6IGZ1bmN0aW9uTmFtZSxcbiAgdHJhbnNpdGlvbmVuZDogZnVuY3Rpb24oJGVsZW0pe1xuICAgIHZhciB0cmFuc2l0aW9ucyA9IHtcbiAgICAgICd0cmFuc2l0aW9uJzogJ3RyYW5zaXRpb25lbmQnLFxuICAgICAgJ1dlYmtpdFRyYW5zaXRpb24nOiAnd2Via2l0VHJhbnNpdGlvbkVuZCcsXG4gICAgICAnTW96VHJhbnNpdGlvbic6ICd0cmFuc2l0aW9uZW5kJyxcbiAgICAgICdPVHJhbnNpdGlvbic6ICdvdHJhbnNpdGlvbmVuZCdcbiAgICB9O1xuICAgIHZhciBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksXG4gICAgICAgIGVuZDtcblxuICAgIGZvciAodmFyIHQgaW4gdHJhbnNpdGlvbnMpe1xuICAgICAgaWYgKHR5cGVvZiBlbGVtLnN0eWxlW3RdICE9PSAndW5kZWZpbmVkJyl7XG4gICAgICAgIGVuZCA9IHRyYW5zaXRpb25zW3RdO1xuICAgICAgfVxuICAgIH1cbiAgICBpZihlbmQpe1xuICAgICAgcmV0dXJuIGVuZDtcbiAgICB9ZWxzZXtcbiAgICAgIGVuZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgICAgJGVsZW0udHJpZ2dlckhhbmRsZXIoJ3RyYW5zaXRpb25lbmQnLCBbJGVsZW1dKTtcbiAgICAgIH0sIDEpO1xuICAgICAgcmV0dXJuICd0cmFuc2l0aW9uZW5kJztcbiAgICB9XG4gIH1cbn07XG5cbkZvdW5kYXRpb24udXRpbCA9IHtcbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGZvciBhcHBseWluZyBhIGRlYm91bmNlIGVmZmVjdCB0byBhIGZ1bmN0aW9uIGNhbGwuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGF0IGVuZCBvZiB0aW1lb3V0LlxuICAgKiBAcGFyYW0ge051bWJlcn0gZGVsYXkgLSBUaW1lIGluIG1zIHRvIGRlbGF5IHRoZSBjYWxsIG9mIGBmdW5jYC5cbiAgICogQHJldHVybnMgZnVuY3Rpb25cbiAgICovXG4gIHRocm90dGxlOiBmdW5jdGlvbiAoZnVuYywgZGVsYXkpIHtcbiAgICB2YXIgdGltZXIgPSBudWxsO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcywgYXJncyA9IGFyZ3VtZW50cztcblxuICAgICAgaWYgKHRpbWVyID09PSBudWxsKSB7XG4gICAgICAgIHRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgICB0aW1lciA9IG51bGw7XG4gICAgICAgIH0sIGRlbGF5KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59O1xuXG4vLyBUT0RPOiBjb25zaWRlciBub3QgbWFraW5nIHRoaXMgYSBqUXVlcnkgZnVuY3Rpb25cbi8vIFRPRE86IG5lZWQgd2F5IHRvIHJlZmxvdyB2cy4gcmUtaW5pdGlhbGl6ZVxuLyoqXG4gKiBUaGUgRm91bmRhdGlvbiBqUXVlcnkgbWV0aG9kLlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IG1ldGhvZCAtIEFuIGFjdGlvbiB0byBwZXJmb3JtIG9uIHRoZSBjdXJyZW50IGpRdWVyeSBvYmplY3QuXG4gKi9cbnZhciBmb3VuZGF0aW9uID0gZnVuY3Rpb24obWV0aG9kKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIG1ldGhvZCxcbiAgICAgICRtZXRhID0gJCgnbWV0YS5mb3VuZGF0aW9uLW1xJyksXG4gICAgICAkbm9KUyA9ICQoJy5uby1qcycpO1xuXG4gIGlmKCEkbWV0YS5sZW5ndGgpe1xuICAgICQoJzxtZXRhIGNsYXNzPVwiZm91bmRhdGlvbi1tcVwiPicpLmFwcGVuZFRvKGRvY3VtZW50LmhlYWQpO1xuICB9XG4gIGlmKCRub0pTLmxlbmd0aCl7XG4gICAgJG5vSlMucmVtb3ZlQ2xhc3MoJ25vLWpzJyk7XG4gIH1cblxuICBpZih0eXBlID09PSAndW5kZWZpbmVkJyl7Ly9uZWVkcyB0byBpbml0aWFsaXplIHRoZSBGb3VuZGF0aW9uIG9iamVjdCwgb3IgYW4gaW5kaXZpZHVhbCBwbHVnaW4uXG4gICAgRm91bmRhdGlvbi5NZWRpYVF1ZXJ5Ll9pbml0KCk7XG4gICAgRm91bmRhdGlvbi5yZWZsb3codGhpcyk7XG4gIH1lbHNlIGlmKHR5cGUgPT09ICdzdHJpbmcnKXsvL2FuIGluZGl2aWR1YWwgbWV0aG9kIHRvIGludm9rZSBvbiBhIHBsdWdpbiBvciBncm91cCBvZiBwbHVnaW5zXG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOy8vY29sbGVjdCBhbGwgdGhlIGFyZ3VtZW50cywgaWYgbmVjZXNzYXJ5XG4gICAgdmFyIHBsdWdDbGFzcyA9IHRoaXMuZGF0YSgnemZQbHVnaW4nKTsvL2RldGVybWluZSB0aGUgY2xhc3Mgb2YgcGx1Z2luXG5cbiAgICBpZihwbHVnQ2xhc3MgIT09IHVuZGVmaW5lZCAmJiBwbHVnQ2xhc3NbbWV0aG9kXSAhPT0gdW5kZWZpbmVkKXsvL21ha2Ugc3VyZSBib3RoIHRoZSBjbGFzcyBhbmQgbWV0aG9kIGV4aXN0XG4gICAgICBpZih0aGlzLmxlbmd0aCA9PT0gMSl7Ly9pZiB0aGVyZSdzIG9ubHkgb25lLCBjYWxsIGl0IGRpcmVjdGx5LlxuICAgICAgICAgIHBsdWdDbGFzc1ttZXRob2RdLmFwcGx5KHBsdWdDbGFzcywgYXJncyk7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uKGksIGVsKXsvL290aGVyd2lzZSBsb29wIHRocm91Z2ggdGhlIGpRdWVyeSBjb2xsZWN0aW9uIGFuZCBpbnZva2UgdGhlIG1ldGhvZCBvbiBlYWNoXG4gICAgICAgICAgcGx1Z0NsYXNzW21ldGhvZF0uYXBwbHkoJChlbCkuZGF0YSgnemZQbHVnaW4nKSwgYXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1lbHNley8vZXJyb3IgZm9yIG5vIGNsYXNzIG9yIG5vIG1ldGhvZFxuICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwiV2UncmUgc29ycnksICdcIiArIG1ldGhvZCArIFwiJyBpcyBub3QgYW4gYXZhaWxhYmxlIG1ldGhvZCBmb3IgXCIgKyAocGx1Z0NsYXNzID8gZnVuY3Rpb25OYW1lKHBsdWdDbGFzcykgOiAndGhpcyBlbGVtZW50JykgKyAnLicpO1xuICAgIH1cbiAgfWVsc2V7Ly9lcnJvciBmb3IgaW52YWxpZCBhcmd1bWVudCB0eXBlXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgV2UncmUgc29ycnksICR7dHlwZX0gaXMgbm90IGEgdmFsaWQgcGFyYW1ldGVyLiBZb3UgbXVzdCB1c2UgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBtZXRob2QgeW91IHdpc2ggdG8gaW52b2tlLmApO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxud2luZG93LkZvdW5kYXRpb24gPSBGb3VuZGF0aW9uO1xuJC5mbi5mb3VuZGF0aW9uID0gZm91bmRhdGlvbjtcblxuLy8gUG9seWZpbGwgZm9yIHJlcXVlc3RBbmltYXRpb25GcmFtZVxuKGZ1bmN0aW9uKCkge1xuICBpZiAoIURhdGUubm93IHx8ICF3aW5kb3cuRGF0ZS5ub3cpXG4gICAgd2luZG93LkRhdGUubm93ID0gRGF0ZS5ub3cgPSBmdW5jdGlvbigpIHsgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VGltZSgpOyB9O1xuXG4gIHZhciB2ZW5kb3JzID0gWyd3ZWJraXQnLCAnbW96J107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmVuZG9ycy5sZW5ndGggJiYgIXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7ICsraSkge1xuICAgICAgdmFyIHZwID0gdmVuZG9yc1tpXTtcbiAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSB3aW5kb3dbdnArJ1JlcXVlc3RBbmltYXRpb25GcmFtZSddO1xuICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lID0gKHdpbmRvd1t2cCsnQ2FuY2VsQW5pbWF0aW9uRnJhbWUnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgd2luZG93W3ZwKydDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXSk7XG4gIH1cbiAgaWYgKC9pUChhZHxob25lfG9kKS4qT1MgNi8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudClcbiAgICB8fCAhd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCAhd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKSB7XG4gICAgdmFyIGxhc3RUaW1lID0gMDtcbiAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIHZhciBuZXh0VGltZSA9IE1hdGgubWF4KGxhc3RUaW1lICsgMTYsIG5vdyk7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayhsYXN0VGltZSA9IG5leHRUaW1lKTsgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFRpbWUgLSBub3cpO1xuICAgIH07XG4gICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lID0gY2xlYXJUaW1lb3V0O1xuICB9XG4gIC8qKlxuICAgKiBQb2x5ZmlsbCBmb3IgcGVyZm9ybWFuY2Uubm93LCByZXF1aXJlZCBieSByQUZcbiAgICovXG4gIGlmKCF3aW5kb3cucGVyZm9ybWFuY2UgfHwgIXdpbmRvdy5wZXJmb3JtYW5jZS5ub3cpe1xuICAgIHdpbmRvdy5wZXJmb3JtYW5jZSA9IHtcbiAgICAgIHN0YXJ0OiBEYXRlLm5vdygpLFxuICAgICAgbm93OiBmdW5jdGlvbigpeyByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuc3RhcnQ7IH1cbiAgICB9O1xuICB9XG59KSgpO1xuaWYgKCFGdW5jdGlvbi5wcm90b3R5cGUuYmluZCkge1xuICBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKG9UaGlzKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBjbG9zZXN0IHRoaW5nIHBvc3NpYmxlIHRvIHRoZSBFQ01BU2NyaXB0IDVcbiAgICAgIC8vIGludGVybmFsIElzQ2FsbGFibGUgZnVuY3Rpb25cbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Z1bmN0aW9uLnByb3RvdHlwZS5iaW5kIC0gd2hhdCBpcyB0cnlpbmcgdG8gYmUgYm91bmQgaXMgbm90IGNhbGxhYmxlJyk7XG4gICAgfVxuXG4gICAgdmFyIGFBcmdzICAgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpLFxuICAgICAgICBmVG9CaW5kID0gdGhpcyxcbiAgICAgICAgZk5PUCAgICA9IGZ1bmN0aW9uKCkge30sXG4gICAgICAgIGZCb3VuZCAgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gZlRvQmluZC5hcHBseSh0aGlzIGluc3RhbmNlb2YgZk5PUFxuICAgICAgICAgICAgICAgICA/IHRoaXNcbiAgICAgICAgICAgICAgICAgOiBvVGhpcyxcbiAgICAgICAgICAgICAgICAgYUFyZ3MuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKTtcbiAgICAgICAgfTtcblxuICAgIGlmICh0aGlzLnByb3RvdHlwZSkge1xuICAgICAgLy8gbmF0aXZlIGZ1bmN0aW9ucyBkb24ndCBoYXZlIGEgcHJvdG90eXBlXG4gICAgICBmTk9QLnByb3RvdHlwZSA9IHRoaXMucHJvdG90eXBlO1xuICAgIH1cbiAgICBmQm91bmQucHJvdG90eXBlID0gbmV3IGZOT1AoKTtcblxuICAgIHJldHVybiBmQm91bmQ7XG4gIH07XG59XG4vLyBQb2x5ZmlsbCB0byBnZXQgdGhlIG5hbWUgb2YgYSBmdW5jdGlvbiBpbiBJRTlcbmZ1bmN0aW9uIGZ1bmN0aW9uTmFtZShmbikge1xuICBpZiAoRnVuY3Rpb24ucHJvdG90eXBlLm5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBmdW5jTmFtZVJlZ2V4ID0gL2Z1bmN0aW9uXFxzKFteKF17MSx9KVxcKC87XG4gICAgdmFyIHJlc3VsdHMgPSAoZnVuY05hbWVSZWdleCkuZXhlYygoZm4pLnRvU3RyaW5nKCkpO1xuICAgIHJldHVybiAocmVzdWx0cyAmJiByZXN1bHRzLmxlbmd0aCA+IDEpID8gcmVzdWx0c1sxXS50cmltKCkgOiBcIlwiO1xuICB9XG4gIGVsc2UgaWYgKGZuLnByb3RvdHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZuLmNvbnN0cnVjdG9yLm5hbWU7XG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIGZuLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5uYW1lO1xuICB9XG59XG5mdW5jdGlvbiBwYXJzZVZhbHVlKHN0cil7XG4gIGlmICgndHJ1ZScgPT09IHN0cikgcmV0dXJuIHRydWU7XG4gIGVsc2UgaWYgKCdmYWxzZScgPT09IHN0cikgcmV0dXJuIGZhbHNlO1xuICBlbHNlIGlmICghaXNOYU4oc3RyICogMSkpIHJldHVybiBwYXJzZUZsb2F0KHN0cik7XG4gIHJldHVybiBzdHI7XG59XG4vLyBDb252ZXJ0IFBhc2NhbENhc2UgdG8ga2ViYWItY2FzZVxuLy8gVGhhbmsgeW91OiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS84OTU1NTgwXG5mdW5jdGlvbiBoeXBoZW5hdGUoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxLSQyJykudG9Mb3dlckNhc2UoKTtcbn1cblxufShqUXVlcnkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4hZnVuY3Rpb24oJCkge1xuXG5Gb3VuZGF0aW9uLkJveCA9IHtcbiAgSW1Ob3RUb3VjaGluZ1lvdTogSW1Ob3RUb3VjaGluZ1lvdSxcbiAgR2V0RGltZW5zaW9uczogR2V0RGltZW5zaW9ucyxcbiAgR2V0T2Zmc2V0czogR2V0T2Zmc2V0c1xufVxuXG4vKipcbiAqIENvbXBhcmVzIHRoZSBkaW1lbnNpb25zIG9mIGFuIGVsZW1lbnQgdG8gYSBjb250YWluZXIgYW5kIGRldGVybWluZXMgY29sbGlzaW9uIGV2ZW50cyB3aXRoIGNvbnRhaW5lci5cbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtqUXVlcnl9IGVsZW1lbnQgLSBqUXVlcnkgb2JqZWN0IHRvIHRlc3QgZm9yIGNvbGxpc2lvbnMuXG4gKiBAcGFyYW0ge2pRdWVyeX0gcGFyZW50IC0galF1ZXJ5IG9iamVjdCB0byB1c2UgYXMgYm91bmRpbmcgY29udGFpbmVyLlxuICogQHBhcmFtIHtCb29sZWFufSBsck9ubHkgLSBzZXQgdG8gdHJ1ZSB0byBjaGVjayBsZWZ0IGFuZCByaWdodCB2YWx1ZXMgb25seS5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gdGJPbmx5IC0gc2V0IHRvIHRydWUgdG8gY2hlY2sgdG9wIGFuZCBib3R0b20gdmFsdWVzIG9ubHkuXG4gKiBAZGVmYXVsdCBpZiBubyBwYXJlbnQgb2JqZWN0IHBhc3NlZCwgZGV0ZWN0cyBjb2xsaXNpb25zIHdpdGggYHdpbmRvd2AuXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gLSB0cnVlIGlmIGNvbGxpc2lvbiBmcmVlLCBmYWxzZSBpZiBhIGNvbGxpc2lvbiBpbiBhbnkgZGlyZWN0aW9uLlxuICovXG5mdW5jdGlvbiBJbU5vdFRvdWNoaW5nWW91KGVsZW1lbnQsIHBhcmVudCwgbHJPbmx5LCB0Yk9ubHkpIHtcbiAgdmFyIGVsZURpbXMgPSBHZXREaW1lbnNpb25zKGVsZW1lbnQpLFxuICAgICAgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0O1xuXG4gIGlmIChwYXJlbnQpIHtcbiAgICB2YXIgcGFyRGltcyA9IEdldERpbWVuc2lvbnMocGFyZW50KTtcblxuICAgIGJvdHRvbSA9IChlbGVEaW1zLm9mZnNldC50b3AgKyBlbGVEaW1zLmhlaWdodCA8PSBwYXJEaW1zLmhlaWdodCArIHBhckRpbXMub2Zmc2V0LnRvcCk7XG4gICAgdG9wICAgID0gKGVsZURpbXMub2Zmc2V0LnRvcCA+PSBwYXJEaW1zLm9mZnNldC50b3ApO1xuICAgIGxlZnQgICA9IChlbGVEaW1zLm9mZnNldC5sZWZ0ID49IHBhckRpbXMub2Zmc2V0LmxlZnQpO1xuICAgIHJpZ2h0ICA9IChlbGVEaW1zLm9mZnNldC5sZWZ0ICsgZWxlRGltcy53aWR0aCA8PSBwYXJEaW1zLndpZHRoICsgcGFyRGltcy5vZmZzZXQubGVmdCk7XG4gIH1cbiAgZWxzZSB7XG4gICAgYm90dG9tID0gKGVsZURpbXMub2Zmc2V0LnRvcCArIGVsZURpbXMuaGVpZ2h0IDw9IGVsZURpbXMud2luZG93RGltcy5oZWlnaHQgKyBlbGVEaW1zLndpbmRvd0RpbXMub2Zmc2V0LnRvcCk7XG4gICAgdG9wICAgID0gKGVsZURpbXMub2Zmc2V0LnRvcCA+PSBlbGVEaW1zLndpbmRvd0RpbXMub2Zmc2V0LnRvcCk7XG4gICAgbGVmdCAgID0gKGVsZURpbXMub2Zmc2V0LmxlZnQgPj0gZWxlRGltcy53aW5kb3dEaW1zLm9mZnNldC5sZWZ0KTtcbiAgICByaWdodCAgPSAoZWxlRGltcy5vZmZzZXQubGVmdCArIGVsZURpbXMud2lkdGggPD0gZWxlRGltcy53aW5kb3dEaW1zLndpZHRoKTtcbiAgfVxuXG4gIHZhciBhbGxEaXJzID0gW2JvdHRvbSwgdG9wLCBsZWZ0LCByaWdodF07XG5cbiAgaWYgKGxyT25seSkge1xuICAgIHJldHVybiBsZWZ0ID09PSByaWdodCA9PT0gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0Yk9ubHkpIHtcbiAgICByZXR1cm4gdG9wID09PSBib3R0b20gPT09IHRydWU7XG4gIH1cblxuICByZXR1cm4gYWxsRGlycy5pbmRleE9mKGZhbHNlKSA9PT0gLTE7XG59O1xuXG4vKipcbiAqIFVzZXMgbmF0aXZlIG1ldGhvZHMgdG8gcmV0dXJuIGFuIG9iamVjdCBvZiBkaW1lbnNpb24gdmFsdWVzLlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge2pRdWVyeSB8fCBIVE1MfSBlbGVtZW50IC0galF1ZXJ5IG9iamVjdCBvciBET00gZWxlbWVudCBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBkaW1lbnNpb25zLiBDYW4gYmUgYW55IGVsZW1lbnQgb3RoZXIgdGhhdCBkb2N1bWVudCBvciB3aW5kb3cuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSAtIG5lc3RlZCBvYmplY3Qgb2YgaW50ZWdlciBwaXhlbCB2YWx1ZXNcbiAqIFRPRE8gLSBpZiBlbGVtZW50IGlzIHdpbmRvdywgcmV0dXJuIG9ubHkgdGhvc2UgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBHZXREaW1lbnNpb25zKGVsZW0sIHRlc3Qpe1xuICBlbGVtID0gZWxlbS5sZW5ndGggPyBlbGVtWzBdIDogZWxlbTtcblxuICBpZiAoZWxlbSA9PT0gd2luZG93IHx8IGVsZW0gPT09IGRvY3VtZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSSdtIHNvcnJ5LCBEYXZlLiBJJ20gYWZyYWlkIEkgY2FuJ3QgZG8gdGhhdC5cIik7XG4gIH1cblxuICB2YXIgcmVjdCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBwYXJSZWN0ID0gZWxlbS5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgd2luUmVjdCA9IGRvY3VtZW50LmJvZHkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICB3aW5ZID0gd2luZG93LnBhZ2VZT2Zmc2V0LFxuICAgICAgd2luWCA9IHdpbmRvdy5wYWdlWE9mZnNldDtcblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQsXG4gICAgb2Zmc2V0OiB7XG4gICAgICB0b3A6IHJlY3QudG9wICsgd2luWSxcbiAgICAgIGxlZnQ6IHJlY3QubGVmdCArIHdpblhcbiAgICB9LFxuICAgIHBhcmVudERpbXM6IHtcbiAgICAgIHdpZHRoOiBwYXJSZWN0LndpZHRoLFxuICAgICAgaGVpZ2h0OiBwYXJSZWN0LmhlaWdodCxcbiAgICAgIG9mZnNldDoge1xuICAgICAgICB0b3A6IHBhclJlY3QudG9wICsgd2luWSxcbiAgICAgICAgbGVmdDogcGFyUmVjdC5sZWZ0ICsgd2luWFxuICAgICAgfVxuICAgIH0sXG4gICAgd2luZG93RGltczoge1xuICAgICAgd2lkdGg6IHdpblJlY3Qud2lkdGgsXG4gICAgICBoZWlnaHQ6IHdpblJlY3QuaGVpZ2h0LFxuICAgICAgb2Zmc2V0OiB7XG4gICAgICAgIHRvcDogd2luWSxcbiAgICAgICAgbGVmdDogd2luWFxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYW4gb2JqZWN0IG9mIHRvcCBhbmQgbGVmdCBpbnRlZ2VyIHBpeGVsIHZhbHVlcyBmb3IgZHluYW1pY2FsbHkgcmVuZGVyZWQgZWxlbWVudHMsXG4gKiBzdWNoIGFzOiBUb29sdGlwLCBSZXZlYWwsIGFuZCBEcm9wZG93blxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge2pRdWVyeX0gZWxlbWVudCAtIGpRdWVyeSBvYmplY3QgZm9yIHRoZSBlbGVtZW50IGJlaW5nIHBvc2l0aW9uZWQuXG4gKiBAcGFyYW0ge2pRdWVyeX0gYW5jaG9yIC0galF1ZXJ5IG9iamVjdCBmb3IgdGhlIGVsZW1lbnQncyBhbmNob3IgcG9pbnQuXG4gKiBAcGFyYW0ge1N0cmluZ30gcG9zaXRpb24gLSBhIHN0cmluZyByZWxhdGluZyB0byB0aGUgZGVzaXJlZCBwb3NpdGlvbiBvZiB0aGUgZWxlbWVudCwgcmVsYXRpdmUgdG8gaXQncyBhbmNob3JcbiAqIEBwYXJhbSB7TnVtYmVyfSB2T2Zmc2V0IC0gaW50ZWdlciBwaXhlbCB2YWx1ZSBvZiBkZXNpcmVkIHZlcnRpY2FsIHNlcGFyYXRpb24gYmV0d2VlbiBhbmNob3IgYW5kIGVsZW1lbnQuXG4gKiBAcGFyYW0ge051bWJlcn0gaE9mZnNldCAtIGludGVnZXIgcGl4ZWwgdmFsdWUgb2YgZGVzaXJlZCBob3Jpem9udGFsIHNlcGFyYXRpb24gYmV0d2VlbiBhbmNob3IgYW5kIGVsZW1lbnQuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGlzT3ZlcmZsb3cgLSBpZiBhIGNvbGxpc2lvbiBldmVudCBpcyBkZXRlY3RlZCwgc2V0cyB0byB0cnVlIHRvIGRlZmF1bHQgdGhlIGVsZW1lbnQgdG8gZnVsbCB3aWR0aCAtIGFueSBkZXNpcmVkIG9mZnNldC5cbiAqIFRPRE8gYWx0ZXIvcmV3cml0ZSB0byB3b3JrIHdpdGggYGVtYCB2YWx1ZXMgYXMgd2VsbC9pbnN0ZWFkIG9mIHBpeGVsc1xuICovXG5mdW5jdGlvbiBHZXRPZmZzZXRzKGVsZW1lbnQsIGFuY2hvciwgcG9zaXRpb24sIHZPZmZzZXQsIGhPZmZzZXQsIGlzT3ZlcmZsb3cpIHtcbiAgdmFyICRlbGVEaW1zID0gR2V0RGltZW5zaW9ucyhlbGVtZW50KSxcbiAgICAgICRhbmNob3JEaW1zID0gYW5jaG9yID8gR2V0RGltZW5zaW9ucyhhbmNob3IpIDogbnVsbDtcblxuICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6IChGb3VuZGF0aW9uLnJ0bCgpID8gJGFuY2hvckRpbXMub2Zmc2V0LmxlZnQgLSAkZWxlRGltcy53aWR0aCArICRhbmNob3JEaW1zLndpZHRoIDogJGFuY2hvckRpbXMub2Zmc2V0LmxlZnQpLFxuICAgICAgICB0b3A6ICRhbmNob3JEaW1zLm9mZnNldC50b3AgLSAoJGVsZURpbXMuaGVpZ2h0ICsgdk9mZnNldClcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGVmdDogJGFuY2hvckRpbXMub2Zmc2V0LmxlZnQgLSAoJGVsZURpbXMud2lkdGggKyBoT2Zmc2V0KSxcbiAgICAgICAgdG9wOiAkYW5jaG9yRGltcy5vZmZzZXQudG9wXG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0OiAkYW5jaG9yRGltcy5vZmZzZXQubGVmdCArICRhbmNob3JEaW1zLndpZHRoICsgaE9mZnNldCxcbiAgICAgICAgdG9wOiAkYW5jaG9yRGltcy5vZmZzZXQudG9wXG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjZW50ZXIgdG9wJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6ICgkYW5jaG9yRGltcy5vZmZzZXQubGVmdCArICgkYW5jaG9yRGltcy53aWR0aCAvIDIpKSAtICgkZWxlRGltcy53aWR0aCAvIDIpLFxuICAgICAgICB0b3A6ICRhbmNob3JEaW1zLm9mZnNldC50b3AgLSAoJGVsZURpbXMuaGVpZ2h0ICsgdk9mZnNldClcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NlbnRlciBib3R0b20nOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGVmdDogaXNPdmVyZmxvdyA/IGhPZmZzZXQgOiAoKCRhbmNob3JEaW1zLm9mZnNldC5sZWZ0ICsgKCRhbmNob3JEaW1zLndpZHRoIC8gMikpIC0gKCRlbGVEaW1zLndpZHRoIC8gMikpLFxuICAgICAgICB0b3A6ICRhbmNob3JEaW1zLm9mZnNldC50b3AgKyAkYW5jaG9yRGltcy5oZWlnaHQgKyB2T2Zmc2V0XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjZW50ZXIgbGVmdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0OiAkYW5jaG9yRGltcy5vZmZzZXQubGVmdCAtICgkZWxlRGltcy53aWR0aCArIGhPZmZzZXQpLFxuICAgICAgICB0b3A6ICgkYW5jaG9yRGltcy5vZmZzZXQudG9wICsgKCRhbmNob3JEaW1zLmhlaWdodCAvIDIpKSAtICgkZWxlRGltcy5oZWlnaHQgLyAyKVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnY2VudGVyIHJpZ2h0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6ICRhbmNob3JEaW1zLm9mZnNldC5sZWZ0ICsgJGFuY2hvckRpbXMud2lkdGggKyBoT2Zmc2V0ICsgMSxcbiAgICAgICAgdG9wOiAoJGFuY2hvckRpbXMub2Zmc2V0LnRvcCArICgkYW5jaG9yRGltcy5oZWlnaHQgLyAyKSkgLSAoJGVsZURpbXMuaGVpZ2h0IC8gMilcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0OiAoJGVsZURpbXMud2luZG93RGltcy5vZmZzZXQubGVmdCArICgkZWxlRGltcy53aW5kb3dEaW1zLndpZHRoIC8gMikpIC0gKCRlbGVEaW1zLndpZHRoIC8gMiksXG4gICAgICAgIHRvcDogKCRlbGVEaW1zLndpbmRvd0RpbXMub2Zmc2V0LnRvcCArICgkZWxlRGltcy53aW5kb3dEaW1zLmhlaWdodCAvIDIpKSAtICgkZWxlRGltcy5oZWlnaHQgLyAyKVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmV2ZWFsJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6ICgkZWxlRGltcy53aW5kb3dEaW1zLndpZHRoIC0gJGVsZURpbXMud2lkdGgpIC8gMixcbiAgICAgICAgdG9wOiAkZWxlRGltcy53aW5kb3dEaW1zLm9mZnNldC50b3AgKyB2T2Zmc2V0XG4gICAgICB9XG4gICAgY2FzZSAncmV2ZWFsIGZ1bGwnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGVmdDogJGVsZURpbXMud2luZG93RGltcy5vZmZzZXQubGVmdCxcbiAgICAgICAgdG9wOiAkZWxlRGltcy53aW5kb3dEaW1zLm9mZnNldC50b3BcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQgYm90dG9tJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6ICRhbmNob3JEaW1zLm9mZnNldC5sZWZ0LFxuICAgICAgICB0b3A6ICRhbmNob3JEaW1zLm9mZnNldC50b3AgKyAkYW5jaG9yRGltcy5oZWlnaHQgKyB2T2Zmc2V0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQgYm90dG9tJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6ICRhbmNob3JEaW1zLm9mZnNldC5sZWZ0ICsgJGFuY2hvckRpbXMud2lkdGggKyBoT2Zmc2V0IC0gJGVsZURpbXMud2lkdGgsXG4gICAgICAgIHRvcDogJGFuY2hvckRpbXMub2Zmc2V0LnRvcCArICRhbmNob3JEaW1zLmhlaWdodCArIHZPZmZzZXRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGVmdDogKEZvdW5kYXRpb24ucnRsKCkgPyAkYW5jaG9yRGltcy5vZmZzZXQubGVmdCAtICRlbGVEaW1zLndpZHRoICsgJGFuY2hvckRpbXMud2lkdGggOiAkYW5jaG9yRGltcy5vZmZzZXQubGVmdCArIGhPZmZzZXQpLFxuICAgICAgICB0b3A6ICRhbmNob3JEaW1zLm9mZnNldC50b3AgKyAkYW5jaG9yRGltcy5oZWlnaHQgKyB2T2Zmc2V0XG4gICAgICB9XG4gIH1cbn1cblxufShqUXVlcnkpO1xuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gKiBUaGlzIHV0aWwgd2FzIGNyZWF0ZWQgYnkgTWFyaXVzIE9sYmVydHogKlxuICogUGxlYXNlIHRoYW5rIE1hcml1cyBvbiBHaXRIdWIgL293bGJlcnR6ICpcbiAqIG9yIHRoZSB3ZWIgaHR0cDovL3d3dy5tYXJpdXNvbGJlcnR6LmRlLyAqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4hZnVuY3Rpb24oJCkge1xuXG5jb25zdCBrZXlDb2RlcyA9IHtcbiAgOTogJ1RBQicsXG4gIDEzOiAnRU5URVInLFxuICAyNzogJ0VTQ0FQRScsXG4gIDMyOiAnU1BBQ0UnLFxuICAzNzogJ0FSUk9XX0xFRlQnLFxuICAzODogJ0FSUk9XX1VQJyxcbiAgMzk6ICdBUlJPV19SSUdIVCcsXG4gIDQwOiAnQVJST1dfRE9XTidcbn1cblxudmFyIGNvbW1hbmRzID0ge31cblxudmFyIEtleWJvYXJkID0ge1xuICBrZXlzOiBnZXRLZXlDb2RlcyhrZXlDb2RlcyksXG5cbiAgLyoqXG4gICAqIFBhcnNlcyB0aGUgKGtleWJvYXJkKSBldmVudCBhbmQgcmV0dXJucyBhIFN0cmluZyB0aGF0IHJlcHJlc2VudHMgaXRzIGtleVxuICAgKiBDYW4gYmUgdXNlZCBsaWtlIEZvdW5kYXRpb24ucGFyc2VLZXkoZXZlbnQpID09PSBGb3VuZGF0aW9uLmtleXMuU1BBQ0VcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSB0aGUgZXZlbnQgZ2VuZXJhdGVkIGJ5IHRoZSBldmVudCBoYW5kbGVyXG4gICAqIEByZXR1cm4gU3RyaW5nIGtleSAtIFN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhlIGtleSBwcmVzc2VkXG4gICAqL1xuICBwYXJzZUtleShldmVudCkge1xuICAgIHZhciBrZXkgPSBrZXlDb2Rlc1tldmVudC53aGljaCB8fCBldmVudC5rZXlDb2RlXSB8fCBTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LndoaWNoKS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgLy8gUmVtb3ZlIHVuLXByaW50YWJsZSBjaGFyYWN0ZXJzLCBlLmcuIGZvciBgZnJvbUNoYXJDb2RlYCBjYWxscyBmb3IgQ1RSTCBvbmx5IGV2ZW50c1xuICAgIGtleSA9IGtleS5yZXBsYWNlKC9cXFcrLywgJycpO1xuXG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSBrZXkgPSBgU0hJRlRfJHtrZXl9YDtcbiAgICBpZiAoZXZlbnQuY3RybEtleSkga2V5ID0gYENUUkxfJHtrZXl9YDtcbiAgICBpZiAoZXZlbnQuYWx0S2V5KSBrZXkgPSBgQUxUXyR7a2V5fWA7XG5cbiAgICAvLyBSZW1vdmUgdHJhaWxpbmcgdW5kZXJzY29yZSwgaW4gY2FzZSBvbmx5IG1vZGlmaWVycyB3ZXJlIHVzZWQgKGUuZy4gb25seSBgQ1RSTF9BTFRgKVxuICAgIGtleSA9IGtleS5yZXBsYWNlKC9fJC8sICcnKTtcblxuICAgIHJldHVybiBrZXk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGdpdmVuIChrZXlib2FyZCkgZXZlbnRcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSB0aGUgZXZlbnQgZ2VuZXJhdGVkIGJ5IHRoZSBldmVudCBoYW5kbGVyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBjb21wb25lbnQgLSBGb3VuZGF0aW9uIGNvbXBvbmVudCdzIG5hbWUsIGUuZy4gU2xpZGVyIG9yIFJldmVhbFxuICAgKiBAcGFyYW0ge09iamVjdHN9IGZ1bmN0aW9ucyAtIGNvbGxlY3Rpb24gb2YgZnVuY3Rpb25zIHRoYXQgYXJlIHRvIGJlIGV4ZWN1dGVkXG4gICAqL1xuICBoYW5kbGVLZXkoZXZlbnQsIGNvbXBvbmVudCwgZnVuY3Rpb25zKSB7XG4gICAgdmFyIGNvbW1hbmRMaXN0ID0gY29tbWFuZHNbY29tcG9uZW50XSxcbiAgICAgIGtleUNvZGUgPSB0aGlzLnBhcnNlS2V5KGV2ZW50KSxcbiAgICAgIGNtZHMsXG4gICAgICBjb21tYW5kLFxuICAgICAgZm47XG5cbiAgICBpZiAoIWNvbW1hbmRMaXN0KSByZXR1cm4gY29uc29sZS53YXJuKCdDb21wb25lbnQgbm90IGRlZmluZWQhJyk7XG5cbiAgICBpZiAodHlwZW9mIGNvbW1hbmRMaXN0Lmx0ciA9PT0gJ3VuZGVmaW5lZCcpIHsgLy8gdGhpcyBjb21wb25lbnQgZG9lcyBub3QgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGx0ciBhbmQgcnRsXG4gICAgICAgIGNtZHMgPSBjb21tYW5kTGlzdDsgLy8gdXNlIHBsYWluIGxpc3RcbiAgICB9IGVsc2UgeyAvLyBtZXJnZSBsdHIgYW5kIHJ0bDogaWYgZG9jdW1lbnQgaXMgcnRsLCBydGwgb3ZlcndyaXRlcyBsdHIgYW5kIHZpY2UgdmVyc2FcbiAgICAgICAgaWYgKEZvdW5kYXRpb24ucnRsKCkpIGNtZHMgPSAkLmV4dGVuZCh7fSwgY29tbWFuZExpc3QubHRyLCBjb21tYW5kTGlzdC5ydGwpO1xuXG4gICAgICAgIGVsc2UgY21kcyA9ICQuZXh0ZW5kKHt9LCBjb21tYW5kTGlzdC5ydGwsIGNvbW1hbmRMaXN0Lmx0cik7XG4gICAgfVxuICAgIGNvbW1hbmQgPSBjbWRzW2tleUNvZGVdO1xuXG4gICAgZm4gPSBmdW5jdGlvbnNbY29tbWFuZF07XG4gICAgaWYgKGZuICYmIHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBleGVjdXRlIGZ1bmN0aW9uICBpZiBleGlzdHNcbiAgICAgIHZhciByZXR1cm5WYWx1ZSA9IGZuLmFwcGx5KCk7XG4gICAgICBpZiAoZnVuY3Rpb25zLmhhbmRsZWQgfHwgdHlwZW9mIGZ1bmN0aW9ucy5oYW5kbGVkID09PSAnZnVuY3Rpb24nKSB7IC8vIGV4ZWN1dGUgZnVuY3Rpb24gd2hlbiBldmVudCB3YXMgaGFuZGxlZFxuICAgICAgICAgIGZ1bmN0aW9ucy5oYW5kbGVkKHJldHVyblZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZ1bmN0aW9ucy51bmhhbmRsZWQgfHwgdHlwZW9mIGZ1bmN0aW9ucy51bmhhbmRsZWQgPT09ICdmdW5jdGlvbicpIHsgLy8gZXhlY3V0ZSBmdW5jdGlvbiB3aGVuIGV2ZW50IHdhcyBub3QgaGFuZGxlZFxuICAgICAgICAgIGZ1bmN0aW9ucy51bmhhbmRsZWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbmRzIGFsbCBmb2N1c2FibGUgZWxlbWVudHMgd2l0aGluIHRoZSBnaXZlbiBgJGVsZW1lbnRgXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkZWxlbWVudCAtIGpRdWVyeSBvYmplY3QgdG8gc2VhcmNoIHdpdGhpblxuICAgKiBAcmV0dXJuIHtqUXVlcnl9ICRmb2N1c2FibGUgLSBhbGwgZm9jdXNhYmxlIGVsZW1lbnRzIHdpdGhpbiBgJGVsZW1lbnRgXG4gICAqL1xuICBmaW5kRm9jdXNhYmxlKCRlbGVtZW50KSB7XG4gICAgaWYoISRlbGVtZW50KSB7cmV0dXJuIGZhbHNlOyB9XG4gICAgcmV0dXJuICRlbGVtZW50LmZpbmQoJ2FbaHJlZl0sIGFyZWFbaHJlZl0sIGlucHV0Om5vdChbZGlzYWJsZWRdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKSwgdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLCBidXR0b246bm90KFtkaXNhYmxlZF0pLCBpZnJhbWUsIG9iamVjdCwgZW1iZWQsICpbdGFiaW5kZXhdLCAqW2NvbnRlbnRlZGl0YWJsZV0nKS5maWx0ZXIoZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoISQodGhpcykuaXMoJzp2aXNpYmxlJykgfHwgJCh0aGlzKS5hdHRyKCd0YWJpbmRleCcpIDwgMCkgeyByZXR1cm4gZmFsc2U7IH0gLy9vbmx5IGhhdmUgdmlzaWJsZSBlbGVtZW50cyBhbmQgdGhvc2UgdGhhdCBoYXZlIGEgdGFiaW5kZXggZ3JlYXRlciBvciBlcXVhbCAwXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29tcG9uZW50IG5hbWUgbmFtZVxuICAgKiBAcGFyYW0ge09iamVjdH0gY29tcG9uZW50IC0gRm91bmRhdGlvbiBjb21wb25lbnQsIGUuZy4gU2xpZGVyIG9yIFJldmVhbFxuICAgKiBAcmV0dXJuIFN0cmluZyBjb21wb25lbnROYW1lXG4gICAqL1xuXG4gIHJlZ2lzdGVyKGNvbXBvbmVudE5hbWUsIGNtZHMpIHtcbiAgICBjb21tYW5kc1tjb21wb25lbnROYW1lXSA9IGNtZHM7XG4gIH0sICBcblxuICAvKipcbiAgICogVHJhcHMgdGhlIGZvY3VzIGluIHRoZSBnaXZlbiBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHtqUXVlcnl9ICRlbGVtZW50ICBqUXVlcnkgb2JqZWN0IHRvIHRyYXAgdGhlIGZvdWNzIGludG8uXG4gICAqL1xuICB0cmFwRm9jdXMoJGVsZW1lbnQpIHtcbiAgICB2YXIgJGZvY3VzYWJsZSA9IEZvdW5kYXRpb24uS2V5Ym9hcmQuZmluZEZvY3VzYWJsZSgkZWxlbWVudCksXG4gICAgICAgICRmaXJzdEZvY3VzYWJsZSA9ICRmb2N1c2FibGUuZXEoMCksXG4gICAgICAgICRsYXN0Rm9jdXNhYmxlID0gJGZvY3VzYWJsZS5lcSgtMSk7XG5cbiAgICAkZWxlbWVudC5vbigna2V5ZG93bi56Zi50cmFwZm9jdXMnLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gJGxhc3RGb2N1c2FibGVbMF0gJiYgRm91bmRhdGlvbi5LZXlib2FyZC5wYXJzZUtleShldmVudCkgPT09ICdUQUInKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICRmaXJzdEZvY3VzYWJsZS5mb2N1cygpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZXZlbnQudGFyZ2V0ID09PSAkZmlyc3RGb2N1c2FibGVbMF0gJiYgRm91bmRhdGlvbi5LZXlib2FyZC5wYXJzZUtleShldmVudCkgPT09ICdTSElGVF9UQUInKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICRsYXN0Rm9jdXNhYmxlLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG4gIC8qKlxuICAgKiBSZWxlYXNlcyB0aGUgdHJhcHBlZCBmb2N1cyBmcm9tIHRoZSBnaXZlbiBlbGVtZW50LlxuICAgKiBAcGFyYW0gIHtqUXVlcnl9ICRlbGVtZW50ICBqUXVlcnkgb2JqZWN0IHRvIHJlbGVhc2UgdGhlIGZvY3VzIGZvci5cbiAgICovXG4gIHJlbGVhc2VGb2N1cygkZWxlbWVudCkge1xuICAgICRlbGVtZW50Lm9mZigna2V5ZG93bi56Zi50cmFwZm9jdXMnKTtcbiAgfVxufVxuXG4vKlxuICogQ29uc3RhbnRzIGZvciBlYXNpZXIgY29tcGFyaW5nLlxuICogQ2FuIGJlIHVzZWQgbGlrZSBGb3VuZGF0aW9uLnBhcnNlS2V5KGV2ZW50KSA9PT0gRm91bmRhdGlvbi5rZXlzLlNQQUNFXG4gKi9cbmZ1bmN0aW9uIGdldEtleUNvZGVzKGtjcykge1xuICB2YXIgayA9IHt9O1xuICBmb3IgKHZhciBrYyBpbiBrY3MpIGtba2NzW2tjXV0gPSBrY3Nba2NdO1xuICByZXR1cm4gaztcbn1cblxuRm91bmRhdGlvbi5LZXlib2FyZCA9IEtleWJvYXJkO1xuXG59KGpRdWVyeSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbiFmdW5jdGlvbigkKSB7XG5cbi8vIERlZmF1bHQgc2V0IG9mIG1lZGlhIHF1ZXJpZXNcbmNvbnN0IGRlZmF1bHRRdWVyaWVzID0ge1xuICAnZGVmYXVsdCcgOiAnb25seSBzY3JlZW4nLFxuICBsYW5kc2NhcGUgOiAnb25seSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gIHBvcnRyYWl0IDogJ29ubHkgc2NyZWVuIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gIHJldGluYSA6ICdvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksJyArXG4gICAgJ29ubHkgc2NyZWVuIGFuZCAobWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwnICtcbiAgICAnb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyLzEpLCcgK1xuICAgICdvbmx5IHNjcmVlbiBhbmQgKG1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCcgK1xuICAgICdvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpLCcgK1xuICAgICdvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAyZHBweCknXG59O1xuXG52YXIgTWVkaWFRdWVyeSA9IHtcbiAgcXVlcmllczogW10sXG5cbiAgY3VycmVudDogJycsXG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBtZWRpYSBxdWVyeSBoZWxwZXIsIGJ5IGV4dHJhY3RpbmcgdGhlIGJyZWFrcG9pbnQgbGlzdCBmcm9tIHRoZSBDU1MgYW5kIGFjdGl2YXRpbmcgdGhlIGJyZWFrcG9pbnQgd2F0Y2hlci5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfaW5pdCgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGV4dHJhY3RlZFN0eWxlcyA9ICQoJy5mb3VuZGF0aW9uLW1xJykuY3NzKCdmb250LWZhbWlseScpO1xuICAgIHZhciBuYW1lZFF1ZXJpZXM7XG5cbiAgICBuYW1lZFF1ZXJpZXMgPSBwYXJzZVN0eWxlVG9PYmplY3QoZXh0cmFjdGVkU3R5bGVzKTtcblxuICAgIGZvciAodmFyIGtleSBpbiBuYW1lZFF1ZXJpZXMpIHtcbiAgICAgIGlmKG5hbWVkUXVlcmllcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNlbGYucXVlcmllcy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBrZXksXG4gICAgICAgICAgdmFsdWU6IGBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHtuYW1lZFF1ZXJpZXNba2V5XX0pYFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLl9nZXRDdXJyZW50U2l6ZSgpO1xuXG4gICAgdGhpcy5fd2F0Y2hlcigpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIHNjcmVlbiBpcyBhdCBsZWFzdCBhcyB3aWRlIGFzIGEgYnJlYWtwb2ludC5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBzaXplIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludCB0byBjaGVjay5cbiAgICogQHJldHVybnMge0Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgYnJlYWtwb2ludCBtYXRjaGVzLCBgZmFsc2VgIGlmIGl0J3Mgc21hbGxlci5cbiAgICovXG4gIGF0TGVhc3Qoc2l6ZSkge1xuICAgIHZhciBxdWVyeSA9IHRoaXMuZ2V0KHNpemUpO1xuXG4gICAgaWYgKHF1ZXJ5KSB7XG4gICAgICByZXR1cm4gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpLm1hdGNoZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIHNjcmVlbiBtYXRjaGVzIHRvIGEgYnJlYWtwb2ludC5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBzaXplIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludCB0byBjaGVjaywgZWl0aGVyICdzbWFsbCBvbmx5JyBvciAnc21hbGwnLiBPbWl0dGluZyAnb25seScgZmFsbHMgYmFjayB0byB1c2luZyBhdExlYXN0KCkgbWV0aG9kLlxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gYHRydWVgIGlmIHRoZSBicmVha3BvaW50IG1hdGNoZXMsIGBmYWxzZWAgaWYgaXQgZG9lcyBub3QuXG4gICAqL1xuICBpcyhzaXplKSB7XG4gICAgc2l6ZSA9IHNpemUudHJpbSgpLnNwbGl0KCcgJyk7XG4gICAgaWYoc2l6ZS5sZW5ndGggPiAxICYmIHNpemVbMV0gPT09ICdvbmx5Jykge1xuICAgICAgaWYoc2l6ZVswXSA9PT0gdGhpcy5fZ2V0Q3VycmVudFNpemUoKSkgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmF0TGVhc3Qoc2l6ZVswXSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0cyB0aGUgbWVkaWEgcXVlcnkgb2YgYSBicmVha3BvaW50LlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHBhcmFtIHtTdHJpbmd9IHNpemUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50IHRvIGdldC5cbiAgICogQHJldHVybnMge1N0cmluZ3xudWxsfSAtIFRoZSBtZWRpYSBxdWVyeSBvZiB0aGUgYnJlYWtwb2ludCwgb3IgYG51bGxgIGlmIHRoZSBicmVha3BvaW50IGRvZXNuJ3QgZXhpc3QuXG4gICAqL1xuICBnZXQoc2l6ZSkge1xuICAgIGZvciAodmFyIGkgaW4gdGhpcy5xdWVyaWVzKSB7XG4gICAgICBpZih0aGlzLnF1ZXJpZXMuaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgdmFyIHF1ZXJ5ID0gdGhpcy5xdWVyaWVzW2ldO1xuICAgICAgICBpZiAoc2l6ZSA9PT0gcXVlcnkubmFtZSkgcmV0dXJuIHF1ZXJ5LnZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQgbmFtZSBieSB0ZXN0aW5nIGV2ZXJ5IGJyZWFrcG9pbnQgYW5kIHJldHVybmluZyB0aGUgbGFzdCBvbmUgdG8gbWF0Y2ggKHRoZSBiaWdnZXN0IG9uZSkuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSBOYW1lIG9mIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQuXG4gICAqL1xuICBfZ2V0Q3VycmVudFNpemUoKSB7XG4gICAgdmFyIG1hdGNoZWQ7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucXVlcmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHF1ZXJ5ID0gdGhpcy5xdWVyaWVzW2ldO1xuXG4gICAgICBpZiAod2luZG93Lm1hdGNoTWVkaWEocXVlcnkudmFsdWUpLm1hdGNoZXMpIHtcbiAgICAgICAgbWF0Y2hlZCA9IHF1ZXJ5O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbWF0Y2hlZCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiBtYXRjaGVkLm5hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBtYXRjaGVkO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRoZSBicmVha3BvaW50IHdhdGNoZXIsIHdoaWNoIGZpcmVzIGFuIGV2ZW50IG9uIHRoZSB3aW5kb3cgd2hlbmV2ZXIgdGhlIGJyZWFrcG9pbnQgY2hhbmdlcy5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfd2F0Y2hlcigpIHtcbiAgICAkKHdpbmRvdykub24oJ3Jlc2l6ZS56Zi5tZWRpYXF1ZXJ5JywgKCkgPT4ge1xuICAgICAgdmFyIG5ld1NpemUgPSB0aGlzLl9nZXRDdXJyZW50U2l6ZSgpLCBjdXJyZW50U2l6ZSA9IHRoaXMuY3VycmVudDtcblxuICAgICAgaWYgKG5ld1NpemUgIT09IGN1cnJlbnRTaXplKSB7XG4gICAgICAgIC8vIENoYW5nZSB0aGUgY3VycmVudCBtZWRpYSBxdWVyeVxuICAgICAgICB0aGlzLmN1cnJlbnQgPSBuZXdTaXplO1xuXG4gICAgICAgIC8vIEJyb2FkY2FzdCB0aGUgbWVkaWEgcXVlcnkgY2hhbmdlIG9uIHRoZSB3aW5kb3dcbiAgICAgICAgJCh3aW5kb3cpLnRyaWdnZXIoJ2NoYW5nZWQuemYubWVkaWFxdWVyeScsIFtuZXdTaXplLCBjdXJyZW50U2l6ZV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuXG5Gb3VuZGF0aW9uLk1lZGlhUXVlcnkgPSBNZWRpYVF1ZXJ5O1xuXG4vLyBtYXRjaE1lZGlhKCkgcG9seWZpbGwgLSBUZXN0IGEgQ1NTIG1lZGlhIHR5cGUvcXVlcnkgaW4gSlMuXG4vLyBBdXRob3JzICYgY29weXJpZ2h0IChjKSAyMDEyOiBTY290dCBKZWhsLCBQYXVsIElyaXNoLCBOaWNob2xhcyBaYWthcywgRGF2aWQgS25pZ2h0LiBEdWFsIE1JVC9CU0QgbGljZW5zZVxud2luZG93Lm1hdGNoTWVkaWEgfHwgKHdpbmRvdy5tYXRjaE1lZGlhID0gZnVuY3Rpb24oKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBGb3IgYnJvd3NlcnMgdGhhdCBzdXBwb3J0IG1hdGNoTWVkaXVtIGFwaSBzdWNoIGFzIElFIDkgYW5kIHdlYmtpdFxuICB2YXIgc3R5bGVNZWRpYSA9ICh3aW5kb3cuc3R5bGVNZWRpYSB8fCB3aW5kb3cubWVkaWEpO1xuXG4gIC8vIEZvciB0aG9zZSB0aGF0IGRvbid0IHN1cHBvcnQgbWF0Y2hNZWRpdW1cbiAgaWYgKCFzdHlsZU1lZGlhKSB7XG4gICAgdmFyIHN0eWxlICAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpLFxuICAgIHNjcmlwdCAgICAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdLFxuICAgIGluZm8gICAgICAgID0gbnVsbDtcblxuICAgIHN0eWxlLnR5cGUgID0gJ3RleHQvY3NzJztcbiAgICBzdHlsZS5pZCAgICA9ICdtYXRjaG1lZGlhanMtdGVzdCc7XG5cbiAgICBzY3JpcHQgJiYgc2NyaXB0LnBhcmVudE5vZGUgJiYgc2NyaXB0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHN0eWxlLCBzY3JpcHQpO1xuXG4gICAgLy8gJ3N0eWxlLmN1cnJlbnRTdHlsZScgaXMgdXNlZCBieSBJRSA8PSA4IGFuZCAnd2luZG93LmdldENvbXB1dGVkU3R5bGUnIGZvciBhbGwgb3RoZXIgYnJvd3NlcnNcbiAgICBpbmZvID0gKCdnZXRDb21wdXRlZFN0eWxlJyBpbiB3aW5kb3cpICYmIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHN0eWxlLCBudWxsKSB8fCBzdHlsZS5jdXJyZW50U3R5bGU7XG5cbiAgICBzdHlsZU1lZGlhID0ge1xuICAgICAgbWF0Y2hNZWRpdW0obWVkaWEpIHtcbiAgICAgICAgdmFyIHRleHQgPSBgQG1lZGlhICR7bWVkaWF9eyAjbWF0Y2htZWRpYWpzLXRlc3QgeyB3aWR0aDogMXB4OyB9IH1gO1xuXG4gICAgICAgIC8vICdzdHlsZS5zdHlsZVNoZWV0JyBpcyB1c2VkIGJ5IElFIDw9IDggYW5kICdzdHlsZS50ZXh0Q29udGVudCcgZm9yIGFsbCBvdGhlciBicm93c2Vyc1xuICAgICAgICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgICAgICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IHRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSB0ZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGVzdCBpZiBtZWRpYSBxdWVyeSBpcyB0cnVlIG9yIGZhbHNlXG4gICAgICAgIHJldHVybiBpbmZvLndpZHRoID09PSAnMXB4JztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24obWVkaWEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWF0Y2hlczogc3R5bGVNZWRpYS5tYXRjaE1lZGl1bShtZWRpYSB8fCAnYWxsJyksXG4gICAgICBtZWRpYTogbWVkaWEgfHwgJ2FsbCdcbiAgICB9O1xuICB9XG59KCkpO1xuXG4vLyBUaGFuayB5b3U6IGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvcXVlcnktc3RyaW5nXG5mdW5jdGlvbiBwYXJzZVN0eWxlVG9PYmplY3Qoc3RyKSB7XG4gIHZhciBzdHlsZU9iamVjdCA9IHt9O1xuXG4gIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBzdHlsZU9iamVjdDtcbiAgfVxuXG4gIHN0ciA9IHN0ci50cmltKCkuc2xpY2UoMSwgLTEpOyAvLyBicm93c2VycyByZS1xdW90ZSBzdHJpbmcgc3R5bGUgdmFsdWVzXG5cbiAgaWYgKCFzdHIpIHtcbiAgICByZXR1cm4gc3R5bGVPYmplY3Q7XG4gIH1cblxuICBzdHlsZU9iamVjdCA9IHN0ci5zcGxpdCgnJicpLnJlZHVjZShmdW5jdGlvbihyZXQsIHBhcmFtKSB7XG4gICAgdmFyIHBhcnRzID0gcGFyYW0ucmVwbGFjZSgvXFwrL2csICcgJykuc3BsaXQoJz0nKTtcbiAgICB2YXIga2V5ID0gcGFydHNbMF07XG4gICAgdmFyIHZhbCA9IHBhcnRzWzFdO1xuICAgIGtleSA9IGRlY29kZVVSSUNvbXBvbmVudChrZXkpO1xuXG4gICAgLy8gbWlzc2luZyBgPWAgc2hvdWxkIGJlIGBudWxsYDpcbiAgICAvLyBodHRwOi8vdzMub3JnL1RSLzIwMTIvV0QtdXJsLTIwMTIwNTI0LyNjb2xsZWN0LXVybC1wYXJhbWV0ZXJzXG4gICAgdmFsID0gdmFsID09PSB1bmRlZmluZWQgPyBudWxsIDogZGVjb2RlVVJJQ29tcG9uZW50KHZhbCk7XG5cbiAgICBpZiAoIXJldC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICByZXRba2V5XSA9IHZhbDtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmV0W2tleV0pKSB7XG4gICAgICByZXRba2V5XS5wdXNoKHZhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldFtrZXldID0gW3JldFtrZXldLCB2YWxdO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9LCB7fSk7XG5cbiAgcmV0dXJuIHN0eWxlT2JqZWN0O1xufVxuXG5Gb3VuZGF0aW9uLk1lZGlhUXVlcnkgPSBNZWRpYVF1ZXJ5O1xuXG59KGpRdWVyeSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbiFmdW5jdGlvbigkKSB7XG5cbi8qKlxuICogTW90aW9uIG1vZHVsZS5cbiAqIEBtb2R1bGUgZm91bmRhdGlvbi5tb3Rpb25cbiAqL1xuXG5jb25zdCBpbml0Q2xhc3NlcyAgID0gWydtdWktZW50ZXInLCAnbXVpLWxlYXZlJ107XG5jb25zdCBhY3RpdmVDbGFzc2VzID0gWydtdWktZW50ZXItYWN0aXZlJywgJ211aS1sZWF2ZS1hY3RpdmUnXTtcblxuY29uc3QgTW90aW9uID0ge1xuICBhbmltYXRlSW46IGZ1bmN0aW9uKGVsZW1lbnQsIGFuaW1hdGlvbiwgY2IpIHtcbiAgICBhbmltYXRlKHRydWUsIGVsZW1lbnQsIGFuaW1hdGlvbiwgY2IpO1xuICB9LFxuXG4gIGFuaW1hdGVPdXQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGFuaW1hdGlvbiwgY2IpIHtcbiAgICBhbmltYXRlKGZhbHNlLCBlbGVtZW50LCBhbmltYXRpb24sIGNiKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBNb3ZlKGR1cmF0aW9uLCBlbGVtLCBmbil7XG4gIHZhciBhbmltLCBwcm9nLCBzdGFydCA9IG51bGw7XG4gIC8vIGNvbnNvbGUubG9nKCdjYWxsZWQnKTtcblxuICBpZiAoZHVyYXRpb24gPT09IDApIHtcbiAgICBmbi5hcHBseShlbGVtKTtcbiAgICBlbGVtLnRyaWdnZXIoJ2ZpbmlzaGVkLnpmLmFuaW1hdGUnLCBbZWxlbV0pLnRyaWdnZXJIYW5kbGVyKCdmaW5pc2hlZC56Zi5hbmltYXRlJywgW2VsZW1dKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiBtb3ZlKHRzKXtcbiAgICBpZighc3RhcnQpIHN0YXJ0ID0gdHM7XG4gICAgLy8gY29uc29sZS5sb2coc3RhcnQsIHRzKTtcbiAgICBwcm9nID0gdHMgLSBzdGFydDtcbiAgICBmbi5hcHBseShlbGVtKTtcblxuICAgIGlmKHByb2cgPCBkdXJhdGlvbil7IGFuaW0gPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG1vdmUsIGVsZW0pOyB9XG4gICAgZWxzZXtcbiAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShhbmltKTtcbiAgICAgIGVsZW0udHJpZ2dlcignZmluaXNoZWQuemYuYW5pbWF0ZScsIFtlbGVtXSkudHJpZ2dlckhhbmRsZXIoJ2ZpbmlzaGVkLnpmLmFuaW1hdGUnLCBbZWxlbV0pO1xuICAgIH1cbiAgfVxuICBhbmltID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShtb3ZlKTtcbn1cblxuLyoqXG4gKiBBbmltYXRlcyBhbiBlbGVtZW50IGluIG9yIG91dCB1c2luZyBhIENTUyB0cmFuc2l0aW9uIGNsYXNzLlxuICogQGZ1bmN0aW9uXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtCb29sZWFufSBpc0luIC0gRGVmaW5lcyBpZiB0aGUgYW5pbWF0aW9uIGlzIGluIG9yIG91dC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBlbGVtZW50IC0galF1ZXJ5IG9yIEhUTUwgb2JqZWN0IHRvIGFuaW1hdGUuXG4gKiBAcGFyYW0ge1N0cmluZ30gYW5pbWF0aW9uIC0gQ1NTIGNsYXNzIHRvIHVzZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNiIC0gQ2FsbGJhY2sgdG8gcnVuIHdoZW4gYW5pbWF0aW9uIGlzIGZpbmlzaGVkLlxuICovXG5mdW5jdGlvbiBhbmltYXRlKGlzSW4sIGVsZW1lbnQsIGFuaW1hdGlvbiwgY2IpIHtcbiAgZWxlbWVudCA9ICQoZWxlbWVudCkuZXEoMCk7XG5cbiAgaWYgKCFlbGVtZW50Lmxlbmd0aCkgcmV0dXJuO1xuXG4gIHZhciBpbml0Q2xhc3MgPSBpc0luID8gaW5pdENsYXNzZXNbMF0gOiBpbml0Q2xhc3Nlc1sxXTtcbiAgdmFyIGFjdGl2ZUNsYXNzID0gaXNJbiA/IGFjdGl2ZUNsYXNzZXNbMF0gOiBhY3RpdmVDbGFzc2VzWzFdO1xuXG4gIC8vIFNldCB1cCB0aGUgYW5pbWF0aW9uXG4gIHJlc2V0KCk7XG5cbiAgZWxlbWVudFxuICAgIC5hZGRDbGFzcyhhbmltYXRpb24pXG4gICAgLmNzcygndHJhbnNpdGlvbicsICdub25lJyk7XG5cbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICBlbGVtZW50LmFkZENsYXNzKGluaXRDbGFzcyk7XG4gICAgaWYgKGlzSW4pIGVsZW1lbnQuc2hvdygpO1xuICB9KTtcblxuICAvLyBTdGFydCB0aGUgYW5pbWF0aW9uXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgZWxlbWVudFswXS5vZmZzZXRXaWR0aDtcbiAgICBlbGVtZW50XG4gICAgICAuY3NzKCd0cmFuc2l0aW9uJywgJycpXG4gICAgICAuYWRkQ2xhc3MoYWN0aXZlQ2xhc3MpO1xuICB9KTtcblxuICAvLyBDbGVhbiB1cCB0aGUgYW5pbWF0aW9uIHdoZW4gaXQgZmluaXNoZXNcbiAgZWxlbWVudC5vbmUoRm91bmRhdGlvbi50cmFuc2l0aW9uZW5kKGVsZW1lbnQpLCBmaW5pc2gpO1xuXG4gIC8vIEhpZGVzIHRoZSBlbGVtZW50IChmb3Igb3V0IGFuaW1hdGlvbnMpLCByZXNldHMgdGhlIGVsZW1lbnQsIGFuZCBydW5zIGEgY2FsbGJhY2tcbiAgZnVuY3Rpb24gZmluaXNoKCkge1xuICAgIGlmICghaXNJbikgZWxlbWVudC5oaWRlKCk7XG4gICAgcmVzZXQoKTtcbiAgICBpZiAoY2IpIGNiLmFwcGx5KGVsZW1lbnQpO1xuICB9XG5cbiAgLy8gUmVzZXRzIHRyYW5zaXRpb25zIGFuZCByZW1vdmVzIG1vdGlvbi1zcGVjaWZpYyBjbGFzc2VzXG4gIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGVsZW1lbnRbMF0uc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gMDtcbiAgICBlbGVtZW50LnJlbW92ZUNsYXNzKGAke2luaXRDbGFzc30gJHthY3RpdmVDbGFzc30gJHthbmltYXRpb259YCk7XG4gIH1cbn1cblxuRm91bmRhdGlvbi5Nb3ZlID0gTW92ZTtcbkZvdW5kYXRpb24uTW90aW9uID0gTW90aW9uO1xuXG59KGpRdWVyeSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbiFmdW5jdGlvbigkKSB7XG5cbmNvbnN0IE5lc3QgPSB7XG4gIEZlYXRoZXIobWVudSwgdHlwZSA9ICd6ZicpIHtcbiAgICBtZW51LmF0dHIoJ3JvbGUnLCAnbWVudWJhcicpO1xuXG4gICAgdmFyIGl0ZW1zID0gbWVudS5maW5kKCdsaScpLmF0dHIoeydyb2xlJzogJ21lbnVpdGVtJ30pLFxuICAgICAgICBzdWJNZW51Q2xhc3MgPSBgaXMtJHt0eXBlfS1zdWJtZW51YCxcbiAgICAgICAgc3ViSXRlbUNsYXNzID0gYCR7c3ViTWVudUNsYXNzfS1pdGVtYCxcbiAgICAgICAgaGFzU3ViQ2xhc3MgPSBgaXMtJHt0eXBlfS1zdWJtZW51LXBhcmVudGA7XG5cbiAgICBpdGVtcy5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyICRpdGVtID0gJCh0aGlzKSxcbiAgICAgICAgICAkc3ViID0gJGl0ZW0uY2hpbGRyZW4oJ3VsJyk7XG5cbiAgICAgIGlmICgkc3ViLmxlbmd0aCkge1xuICAgICAgICAkaXRlbVxuICAgICAgICAgIC5hZGRDbGFzcyhoYXNTdWJDbGFzcylcbiAgICAgICAgICAuYXR0cih7XG4gICAgICAgICAgICAnYXJpYS1oYXNwb3B1cCc6IHRydWUsXG4gICAgICAgICAgICAnYXJpYS1sYWJlbCc6ICRpdGVtLmNoaWxkcmVuKCdhOmZpcnN0JykudGV4dCgpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gTm90ZTogIERyaWxsZG93bnMgYmVoYXZlIGRpZmZlcmVudGx5IGluIGhvdyB0aGV5IGhpZGUsIGFuZCBzbyBuZWVkXG4gICAgICAgICAgLy8gYWRkaXRpb25hbCBhdHRyaWJ1dGVzLiAgV2Ugc2hvdWxkIGxvb2sgaWYgdGhpcyBwb3NzaWJseSBvdmVyLWdlbmVyYWxpemVkXG4gICAgICAgICAgLy8gdXRpbGl0eSAoTmVzdCkgaXMgYXBwcm9wcmlhdGUgd2hlbiB3ZSByZXdvcmsgbWVudXMgaW4gNi40XG4gICAgICAgICAgaWYodHlwZSA9PT0gJ2RyaWxsZG93bicpIHtcbiAgICAgICAgICAgICRpdGVtLmF0dHIoeydhcmlhLWV4cGFuZGVkJzogZmFsc2V9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgJHN1YlxuICAgICAgICAgIC5hZGRDbGFzcyhgc3VibWVudSAke3N1Yk1lbnVDbGFzc31gKVxuICAgICAgICAgIC5hdHRyKHtcbiAgICAgICAgICAgICdkYXRhLXN1Ym1lbnUnOiAnJyxcbiAgICAgICAgICAgICdyb2xlJzogJ21lbnUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIGlmKHR5cGUgPT09ICdkcmlsbGRvd24nKSB7XG4gICAgICAgICAgJHN1Yi5hdHRyKHsnYXJpYS1oaWRkZW4nOiB0cnVlfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCRpdGVtLnBhcmVudCgnW2RhdGEtc3VibWVudV0nKS5sZW5ndGgpIHtcbiAgICAgICAgJGl0ZW0uYWRkQ2xhc3MoYGlzLXN1Ym1lbnUtaXRlbSAke3N1Ykl0ZW1DbGFzc31gKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybjtcbiAgfSxcblxuICBCdXJuKG1lbnUsIHR5cGUpIHtcbiAgICB2YXIgLy9pdGVtcyA9IG1lbnUuZmluZCgnbGknKSxcbiAgICAgICAgc3ViTWVudUNsYXNzID0gYGlzLSR7dHlwZX0tc3VibWVudWAsXG4gICAgICAgIHN1Ykl0ZW1DbGFzcyA9IGAke3N1Yk1lbnVDbGFzc30taXRlbWAsXG4gICAgICAgIGhhc1N1YkNsYXNzID0gYGlzLSR7dHlwZX0tc3VibWVudS1wYXJlbnRgO1xuXG4gICAgbWVudVxuICAgICAgLmZpbmQoJz5saSwgLm1lbnUsIC5tZW51ID4gbGknKVxuICAgICAgLnJlbW92ZUNsYXNzKGAke3N1Yk1lbnVDbGFzc30gJHtzdWJJdGVtQ2xhc3N9ICR7aGFzU3ViQ2xhc3N9IGlzLXN1Ym1lbnUtaXRlbSBzdWJtZW51IGlzLWFjdGl2ZWApXG4gICAgICAucmVtb3ZlQXR0cignZGF0YS1zdWJtZW51JykuY3NzKCdkaXNwbGF5JywgJycpO1xuXG4gICAgLy8gY29uc29sZS5sb2coICAgICAgbWVudS5maW5kKCcuJyArIHN1Yk1lbnVDbGFzcyArICcsIC4nICsgc3ViSXRlbUNsYXNzICsgJywgLmhhcy1zdWJtZW51LCAuaXMtc3VibWVudS1pdGVtLCAuc3VibWVudSwgW2RhdGEtc3VibWVudV0nKVxuICAgIC8vICAgICAgICAgICAucmVtb3ZlQ2xhc3Moc3ViTWVudUNsYXNzICsgJyAnICsgc3ViSXRlbUNsYXNzICsgJyBoYXMtc3VibWVudSBpcy1zdWJtZW51LWl0ZW0gc3VibWVudScpXG4gICAgLy8gICAgICAgICAgIC5yZW1vdmVBdHRyKCdkYXRhLXN1Ym1lbnUnKSk7XG4gICAgLy8gaXRlbXMuZWFjaChmdW5jdGlvbigpe1xuICAgIC8vICAgdmFyICRpdGVtID0gJCh0aGlzKSxcbiAgICAvLyAgICAgICAkc3ViID0gJGl0ZW0uY2hpbGRyZW4oJ3VsJyk7XG4gICAgLy8gICBpZigkaXRlbS5wYXJlbnQoJ1tkYXRhLXN1Ym1lbnVdJykubGVuZ3RoKXtcbiAgICAvLyAgICAgJGl0ZW0ucmVtb3ZlQ2xhc3MoJ2lzLXN1Ym1lbnUtaXRlbSAnICsgc3ViSXRlbUNsYXNzKTtcbiAgICAvLyAgIH1cbiAgICAvLyAgIGlmKCRzdWIubGVuZ3RoKXtcbiAgICAvLyAgICAgJGl0ZW0ucmVtb3ZlQ2xhc3MoJ2hhcy1zdWJtZW51Jyk7XG4gICAgLy8gICAgICRzdWIucmVtb3ZlQ2xhc3MoJ3N1Ym1lbnUgJyArIHN1Yk1lbnVDbGFzcykucmVtb3ZlQXR0cignZGF0YS1zdWJtZW51Jyk7XG4gICAgLy8gICB9XG4gICAgLy8gfSk7XG4gIH1cbn1cblxuRm91bmRhdGlvbi5OZXN0ID0gTmVzdDtcblxufShqUXVlcnkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4hZnVuY3Rpb24oJCkge1xuXG5mdW5jdGlvbiBUaW1lcihlbGVtLCBvcHRpb25zLCBjYikge1xuICB2YXIgX3RoaXMgPSB0aGlzLFxuICAgICAgZHVyYXRpb24gPSBvcHRpb25zLmR1cmF0aW9uLC8vb3B0aW9ucyBpcyBhbiBvYmplY3QgZm9yIGVhc2lseSBhZGRpbmcgZmVhdHVyZXMgbGF0ZXIuXG4gICAgICBuYW1lU3BhY2UgPSBPYmplY3Qua2V5cyhlbGVtLmRhdGEoKSlbMF0gfHwgJ3RpbWVyJyxcbiAgICAgIHJlbWFpbiA9IC0xLFxuICAgICAgc3RhcnQsXG4gICAgICB0aW1lcjtcblxuICB0aGlzLmlzUGF1c2VkID0gZmFsc2U7XG5cbiAgdGhpcy5yZXN0YXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgcmVtYWluID0gLTE7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICB0aGlzLnN0YXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5pc1BhdXNlZCA9IGZhbHNlO1xuICAgIC8vIGlmKCFlbGVtLmRhdGEoJ3BhdXNlZCcpKXsgcmV0dXJuIGZhbHNlOyB9Ly9tYXliZSBpbXBsZW1lbnQgdGhpcyBzYW5pdHkgY2hlY2sgaWYgdXNlZCBmb3Igb3RoZXIgdGhpbmdzLlxuICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgcmVtYWluID0gcmVtYWluIDw9IDAgPyBkdXJhdGlvbiA6IHJlbWFpbjtcbiAgICBlbGVtLmRhdGEoJ3BhdXNlZCcsIGZhbHNlKTtcbiAgICBzdGFydCA9IERhdGUubm93KCk7XG4gICAgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICBpZihvcHRpb25zLmluZmluaXRlKXtcbiAgICAgICAgX3RoaXMucmVzdGFydCgpOy8vcmVydW4gdGhlIHRpbWVyLlxuICAgICAgfVxuICAgICAgaWYgKGNiICYmIHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykgeyBjYigpOyB9XG4gICAgfSwgcmVtYWluKTtcbiAgICBlbGVtLnRyaWdnZXIoYHRpbWVyc3RhcnQuemYuJHtuYW1lU3BhY2V9YCk7XG4gIH1cblxuICB0aGlzLnBhdXNlID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5pc1BhdXNlZCA9IHRydWU7XG4gICAgLy9pZihlbGVtLmRhdGEoJ3BhdXNlZCcpKXsgcmV0dXJuIGZhbHNlOyB9Ly9tYXliZSBpbXBsZW1lbnQgdGhpcyBzYW5pdHkgY2hlY2sgaWYgdXNlZCBmb3Igb3RoZXIgdGhpbmdzLlxuICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgZWxlbS5kYXRhKCdwYXVzZWQnLCB0cnVlKTtcbiAgICB2YXIgZW5kID0gRGF0ZS5ub3coKTtcbiAgICByZW1haW4gPSByZW1haW4gLSAoZW5kIC0gc3RhcnQpO1xuICAgIGVsZW0udHJpZ2dlcihgdGltZXJwYXVzZWQuemYuJHtuYW1lU3BhY2V9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSdW5zIGEgY2FsbGJhY2sgZnVuY3Rpb24gd2hlbiBpbWFnZXMgYXJlIGZ1bGx5IGxvYWRlZC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBpbWFnZXMgLSBJbWFnZShzKSB0byBjaGVjayBpZiBsb2FkZWQuXG4gKiBAcGFyYW0ge0Z1bmN9IGNhbGxiYWNrIC0gRnVuY3Rpb24gdG8gZXhlY3V0ZSB3aGVuIGltYWdlIGlzIGZ1bGx5IGxvYWRlZC5cbiAqL1xuZnVuY3Rpb24gb25JbWFnZXNMb2FkZWQoaW1hZ2VzLCBjYWxsYmFjayl7XG4gIHZhciBzZWxmID0gdGhpcyxcbiAgICAgIHVubG9hZGVkID0gaW1hZ2VzLmxlbmd0aDtcblxuICBpZiAodW5sb2FkZWQgPT09IDApIHtcbiAgICBjYWxsYmFjaygpO1xuICB9XG5cbiAgaW1hZ2VzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgLy8gQ2hlY2sgaWYgaW1hZ2UgaXMgbG9hZGVkXG4gICAgaWYgKHRoaXMuY29tcGxldGUgfHwgKHRoaXMucmVhZHlTdGF0ZSA9PT0gNCkgfHwgKHRoaXMucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJykpIHtcbiAgICAgIHNpbmdsZUltYWdlTG9hZGVkKCk7XG4gICAgfVxuICAgIC8vIEZvcmNlIGxvYWQgdGhlIGltYWdlXG4gICAgZWxzZSB7XG4gICAgICAvLyBmaXggZm9yIElFLiBTZWUgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9qcXVlcnkvZml4aW5nLWxvYWQtaW4taWUtZm9yLWNhY2hlZC1pbWFnZXMvXG4gICAgICB2YXIgc3JjID0gJCh0aGlzKS5hdHRyKCdzcmMnKTtcbiAgICAgICQodGhpcykuYXR0cignc3JjJywgc3JjICsgJz8nICsgKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSk7XG4gICAgICAkKHRoaXMpLm9uZSgnbG9hZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICBzaW5nbGVJbWFnZUxvYWRlZCgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICBmdW5jdGlvbiBzaW5nbGVJbWFnZUxvYWRlZCgpIHtcbiAgICB1bmxvYWRlZC0tO1xuICAgIGlmICh1bmxvYWRlZCA9PT0gMCkge1xuICAgICAgY2FsbGJhY2soKTtcbiAgICB9XG4gIH1cbn1cblxuRm91bmRhdGlvbi5UaW1lciA9IFRpbWVyO1xuRm91bmRhdGlvbi5vbkltYWdlc0xvYWRlZCA9IG9uSW1hZ2VzTG9hZGVkO1xuXG59KGpRdWVyeSk7XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyoqV29yayBpbnNwaXJlZCBieSBtdWx0aXBsZSBqcXVlcnkgc3dpcGUgcGx1Z2lucyoqXG4vLyoqRG9uZSBieSBZb2hhaSBBcmFyYXQgKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4oZnVuY3Rpb24oJCkge1xuXG4gICQuc3BvdFN3aXBlID0ge1xuICAgIHZlcnNpb246ICcxLjAuMCcsXG4gICAgZW5hYmxlZDogJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgIHByZXZlbnREZWZhdWx0OiBmYWxzZSxcbiAgICBtb3ZlVGhyZXNob2xkOiA3NSxcbiAgICB0aW1lVGhyZXNob2xkOiAyMDBcbiAgfTtcblxuICB2YXIgICBzdGFydFBvc1gsXG4gICAgICAgIHN0YXJ0UG9zWSxcbiAgICAgICAgc3RhcnRUaW1lLFxuICAgICAgICBlbGFwc2VkVGltZSxcbiAgICAgICAgaXNNb3ZpbmcgPSBmYWxzZTtcblxuICBmdW5jdGlvbiBvblRvdWNoRW5kKCkge1xuICAgIC8vICBhbGVydCh0aGlzKTtcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlKTtcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgb25Ub3VjaEVuZCk7XG4gICAgaXNNb3ZpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uVG91Y2hNb3ZlKGUpIHtcbiAgICBpZiAoJC5zcG90U3dpcGUucHJldmVudERlZmF1bHQpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9XG4gICAgaWYoaXNNb3ZpbmcpIHtcbiAgICAgIHZhciB4ID0gZS50b3VjaGVzWzBdLnBhZ2VYO1xuICAgICAgdmFyIHkgPSBlLnRvdWNoZXNbMF0ucGFnZVk7XG4gICAgICB2YXIgZHggPSBzdGFydFBvc1ggLSB4O1xuICAgICAgdmFyIGR5ID0gc3RhcnRQb3NZIC0geTtcbiAgICAgIHZhciBkaXI7XG4gICAgICBlbGFwc2VkVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gc3RhcnRUaW1lO1xuICAgICAgaWYoTWF0aC5hYnMoZHgpID49ICQuc3BvdFN3aXBlLm1vdmVUaHJlc2hvbGQgJiYgZWxhcHNlZFRpbWUgPD0gJC5zcG90U3dpcGUudGltZVRocmVzaG9sZCkge1xuICAgICAgICBkaXIgPSBkeCA+IDAgPyAnbGVmdCcgOiAncmlnaHQnO1xuICAgICAgfVxuICAgICAgLy8gZWxzZSBpZihNYXRoLmFicyhkeSkgPj0gJC5zcG90U3dpcGUubW92ZVRocmVzaG9sZCAmJiBlbGFwc2VkVGltZSA8PSAkLnNwb3RTd2lwZS50aW1lVGhyZXNob2xkKSB7XG4gICAgICAvLyAgIGRpciA9IGR5ID4gMCA/ICdkb3duJyA6ICd1cCc7XG4gICAgICAvLyB9XG4gICAgICBpZihkaXIpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvblRvdWNoRW5kLmNhbGwodGhpcyk7XG4gICAgICAgICQodGhpcykudHJpZ2dlcignc3dpcGUnLCBkaXIpLnRyaWdnZXIoYHN3aXBlJHtkaXJ9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25Ub3VjaFN0YXJ0KGUpIHtcbiAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA9PSAxKSB7XG4gICAgICBzdGFydFBvc1ggPSBlLnRvdWNoZXNbMF0ucGFnZVg7XG4gICAgICBzdGFydFBvc1kgPSBlLnRvdWNoZXNbMF0ucGFnZVk7XG4gICAgICBpc01vdmluZyA9IHRydWU7XG4gICAgICBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgb25Ub3VjaE1vdmUsIGZhbHNlKTtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBvblRvdWNoRW5kLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIgJiYgdGhpcy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0LCBmYWxzZSk7XG4gIH1cblxuICBmdW5jdGlvbiB0ZWFyZG93bigpIHtcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQpO1xuICB9XG5cbiAgJC5ldmVudC5zcGVjaWFsLnN3aXBlID0geyBzZXR1cDogaW5pdCB9O1xuXG4gICQuZWFjaChbJ2xlZnQnLCAndXAnLCAnZG93bicsICdyaWdodCddLCBmdW5jdGlvbiAoKSB7XG4gICAgJC5ldmVudC5zcGVjaWFsW2Bzd2lwZSR7dGhpc31gXSA9IHsgc2V0dXA6IGZ1bmN0aW9uKCl7XG4gICAgICAkKHRoaXMpLm9uKCdzd2lwZScsICQubm9vcCk7XG4gICAgfSB9O1xuICB9KTtcbn0pKGpRdWVyeSk7XG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogTWV0aG9kIGZvciBhZGRpbmcgcHN1ZWRvIGRyYWcgZXZlbnRzIHRvIGVsZW1lbnRzICpcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4hZnVuY3Rpb24oJCl7XG4gICQuZm4uYWRkVG91Y2ggPSBmdW5jdGlvbigpe1xuICAgIHRoaXMuZWFjaChmdW5jdGlvbihpLGVsKXtcbiAgICAgICQoZWwpLmJpbmQoJ3RvdWNoc3RhcnQgdG91Y2htb3ZlIHRvdWNoZW5kIHRvdWNoY2FuY2VsJyxmdW5jdGlvbigpe1xuICAgICAgICAvL3dlIHBhc3MgdGhlIG9yaWdpbmFsIGV2ZW50IG9iamVjdCBiZWNhdXNlIHRoZSBqUXVlcnkgZXZlbnRcbiAgICAgICAgLy9vYmplY3QgaXMgbm9ybWFsaXplZCB0byB3M2Mgc3BlY3MgYW5kIGRvZXMgbm90IHByb3ZpZGUgdGhlIFRvdWNoTGlzdFxuICAgICAgICBoYW5kbGVUb3VjaChldmVudCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHZhciBoYW5kbGVUb3VjaCA9IGZ1bmN0aW9uKGV2ZW50KXtcbiAgICAgIHZhciB0b3VjaGVzID0gZXZlbnQuY2hhbmdlZFRvdWNoZXMsXG4gICAgICAgICAgZmlyc3QgPSB0b3VjaGVzWzBdLFxuICAgICAgICAgIGV2ZW50VHlwZXMgPSB7XG4gICAgICAgICAgICB0b3VjaHN0YXJ0OiAnbW91c2Vkb3duJyxcbiAgICAgICAgICAgIHRvdWNobW92ZTogJ21vdXNlbW92ZScsXG4gICAgICAgICAgICB0b3VjaGVuZDogJ21vdXNldXAnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0eXBlID0gZXZlbnRUeXBlc1tldmVudC50eXBlXSxcbiAgICAgICAgICBzaW11bGF0ZWRFdmVudFxuICAgICAgICA7XG5cbiAgICAgIGlmKCdNb3VzZUV2ZW50JyBpbiB3aW5kb3cgJiYgdHlwZW9mIHdpbmRvdy5Nb3VzZUV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHNpbXVsYXRlZEV2ZW50ID0gbmV3IHdpbmRvdy5Nb3VzZUV2ZW50KHR5cGUsIHtcbiAgICAgICAgICAnYnViYmxlcyc6IHRydWUsXG4gICAgICAgICAgJ2NhbmNlbGFibGUnOiB0cnVlLFxuICAgICAgICAgICdzY3JlZW5YJzogZmlyc3Quc2NyZWVuWCxcbiAgICAgICAgICAnc2NyZWVuWSc6IGZpcnN0LnNjcmVlblksXG4gICAgICAgICAgJ2NsaWVudFgnOiBmaXJzdC5jbGllbnRYLFxuICAgICAgICAgICdjbGllbnRZJzogZmlyc3QuY2xpZW50WVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNpbXVsYXRlZEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnQnKTtcbiAgICAgICAgc2ltdWxhdGVkRXZlbnQuaW5pdE1vdXNlRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgd2luZG93LCAxLCBmaXJzdC5zY3JlZW5YLCBmaXJzdC5zY3JlZW5ZLCBmaXJzdC5jbGllbnRYLCBmaXJzdC5jbGllbnRZLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMC8qbGVmdCovLCBudWxsKTtcbiAgICAgIH1cbiAgICAgIGZpcnN0LnRhcmdldC5kaXNwYXRjaEV2ZW50KHNpbXVsYXRlZEV2ZW50KTtcbiAgICB9O1xuICB9O1xufShqUXVlcnkpO1xuXG5cbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8qKkZyb20gdGhlIGpRdWVyeSBNb2JpbGUgTGlicmFyeSoqXG4vLyoqbmVlZCB0byByZWNyZWF0ZSBmdW5jdGlvbmFsaXR5Kipcbi8vKiphbmQgdHJ5IHRvIGltcHJvdmUgaWYgcG9zc2libGUqKlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbi8qIFJlbW92aW5nIHRoZSBqUXVlcnkgZnVuY3Rpb24gKioqKlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbihmdW5jdGlvbiggJCwgd2luZG93LCB1bmRlZmluZWQgKSB7XG5cblx0dmFyICRkb2N1bWVudCA9ICQoIGRvY3VtZW50ICksXG5cdFx0Ly8gc3VwcG9ydFRvdWNoID0gJC5tb2JpbGUuc3VwcG9ydC50b3VjaCxcblx0XHR0b3VjaFN0YXJ0RXZlbnQgPSAndG91Y2hzdGFydCcvL3N1cHBvcnRUb3VjaCA/IFwidG91Y2hzdGFydFwiIDogXCJtb3VzZWRvd25cIixcblx0XHR0b3VjaFN0b3BFdmVudCA9ICd0b3VjaGVuZCcvL3N1cHBvcnRUb3VjaCA/IFwidG91Y2hlbmRcIiA6IFwibW91c2V1cFwiLFxuXHRcdHRvdWNoTW92ZUV2ZW50ID0gJ3RvdWNobW92ZScvL3N1cHBvcnRUb3VjaCA/IFwidG91Y2htb3ZlXCIgOiBcIm1vdXNlbW92ZVwiO1xuXG5cdC8vIHNldHVwIG5ldyBldmVudCBzaG9ydGN1dHNcblx0JC5lYWNoKCAoIFwidG91Y2hzdGFydCB0b3VjaG1vdmUgdG91Y2hlbmQgXCIgK1xuXHRcdFwic3dpcGUgc3dpcGVsZWZ0IHN3aXBlcmlnaHRcIiApLnNwbGl0KCBcIiBcIiApLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcblxuXHRcdCQuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRcdHJldHVybiBmbiA/IHRoaXMuYmluZCggbmFtZSwgZm4gKSA6IHRoaXMudHJpZ2dlciggbmFtZSApO1xuXHRcdH07XG5cblx0XHQvLyBqUXVlcnkgPCAxLjhcblx0XHRpZiAoICQuYXR0ckZuICkge1xuXHRcdFx0JC5hdHRyRm5bIG5hbWUgXSA9IHRydWU7XG5cdFx0fVxuXHR9KTtcblxuXHRmdW5jdGlvbiB0cmlnZ2VyQ3VzdG9tRXZlbnQoIG9iaiwgZXZlbnRUeXBlLCBldmVudCwgYnViYmxlICkge1xuXHRcdHZhciBvcmlnaW5hbFR5cGUgPSBldmVudC50eXBlO1xuXHRcdGV2ZW50LnR5cGUgPSBldmVudFR5cGU7XG5cdFx0aWYgKCBidWJibGUgKSB7XG5cdFx0XHQkLmV2ZW50LnRyaWdnZXIoIGV2ZW50LCB1bmRlZmluZWQsIG9iaiApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkLmV2ZW50LmRpc3BhdGNoLmNhbGwoIG9iaiwgZXZlbnQgKTtcblx0XHR9XG5cdFx0ZXZlbnQudHlwZSA9IG9yaWdpbmFsVHlwZTtcblx0fVxuXG5cdC8vIGFsc28gaGFuZGxlcyB0YXBob2xkXG5cblx0Ly8gQWxzbyBoYW5kbGVzIHN3aXBlbGVmdCwgc3dpcGVyaWdodFxuXHQkLmV2ZW50LnNwZWNpYWwuc3dpcGUgPSB7XG5cblx0XHQvLyBNb3JlIHRoYW4gdGhpcyBob3Jpem9udGFsIGRpc3BsYWNlbWVudCwgYW5kIHdlIHdpbGwgc3VwcHJlc3Mgc2Nyb2xsaW5nLlxuXHRcdHNjcm9sbFN1cHJlc3Npb25UaHJlc2hvbGQ6IDMwLFxuXG5cdFx0Ly8gTW9yZSB0aW1lIHRoYW4gdGhpcywgYW5kIGl0IGlzbid0IGEgc3dpcGUuXG5cdFx0ZHVyYXRpb25UaHJlc2hvbGQ6IDEwMDAsXG5cblx0XHQvLyBTd2lwZSBob3Jpem9udGFsIGRpc3BsYWNlbWVudCBtdXN0IGJlIG1vcmUgdGhhbiB0aGlzLlxuXHRcdGhvcml6b250YWxEaXN0YW5jZVRocmVzaG9sZDogd2luZG93LmRldmljZVBpeGVsUmF0aW8gPj0gMiA/IDE1IDogMzAsXG5cblx0XHQvLyBTd2lwZSB2ZXJ0aWNhbCBkaXNwbGFjZW1lbnQgbXVzdCBiZSBsZXNzIHRoYW4gdGhpcy5cblx0XHR2ZXJ0aWNhbERpc3RhbmNlVGhyZXNob2xkOiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyA+PSAyID8gMTUgOiAzMCxcblxuXHRcdGdldExvY2F0aW9uOiBmdW5jdGlvbiAoIGV2ZW50ICkge1xuXHRcdFx0dmFyIHdpblBhZ2VYID0gd2luZG93LnBhZ2VYT2Zmc2V0LFxuXHRcdFx0XHR3aW5QYWdlWSA9IHdpbmRvdy5wYWdlWU9mZnNldCxcblx0XHRcdFx0eCA9IGV2ZW50LmNsaWVudFgsXG5cdFx0XHRcdHkgPSBldmVudC5jbGllbnRZO1xuXG5cdFx0XHRpZiAoIGV2ZW50LnBhZ2VZID09PSAwICYmIE1hdGguZmxvb3IoIHkgKSA+IE1hdGguZmxvb3IoIGV2ZW50LnBhZ2VZICkgfHxcblx0XHRcdFx0ZXZlbnQucGFnZVggPT09IDAgJiYgTWF0aC5mbG9vciggeCApID4gTWF0aC5mbG9vciggZXZlbnQucGFnZVggKSApIHtcblxuXHRcdFx0XHQvLyBpT1M0IGNsaWVudFgvY2xpZW50WSBoYXZlIHRoZSB2YWx1ZSB0aGF0IHNob3VsZCBoYXZlIGJlZW5cblx0XHRcdFx0Ly8gaW4gcGFnZVgvcGFnZVkuIFdoaWxlIHBhZ2VYL3BhZ2UvIGhhdmUgdGhlIHZhbHVlIDBcblx0XHRcdFx0eCA9IHggLSB3aW5QYWdlWDtcblx0XHRcdFx0eSA9IHkgLSB3aW5QYWdlWTtcblx0XHRcdH0gZWxzZSBpZiAoIHkgPCAoIGV2ZW50LnBhZ2VZIC0gd2luUGFnZVkpIHx8IHggPCAoIGV2ZW50LnBhZ2VYIC0gd2luUGFnZVggKSApIHtcblxuXHRcdFx0XHQvLyBTb21lIEFuZHJvaWQgYnJvd3NlcnMgaGF2ZSB0b3RhbGx5IGJvZ3VzIHZhbHVlcyBmb3IgY2xpZW50WC9ZXG5cdFx0XHRcdC8vIHdoZW4gc2Nyb2xsaW5nL3pvb21pbmcgYSBwYWdlLiBEZXRlY3RhYmxlIHNpbmNlIGNsaWVudFgvY2xpZW50WVxuXHRcdFx0XHQvLyBzaG91bGQgbmV2ZXIgYmUgc21hbGxlciB0aGFuIHBhZ2VYL3BhZ2VZIG1pbnVzIHBhZ2Ugc2Nyb2xsXG5cdFx0XHRcdHggPSBldmVudC5wYWdlWCAtIHdpblBhZ2VYO1xuXHRcdFx0XHR5ID0gZXZlbnQucGFnZVkgLSB3aW5QYWdlWTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0eDogeCxcblx0XHRcdFx0eTogeVxuXHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0c3RhcnQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciBkYXRhID0gZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzID9cblx0XHRcdFx0XHRldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXNbIDAgXSA6IGV2ZW50LFxuXHRcdFx0XHRsb2NhdGlvbiA9ICQuZXZlbnQuc3BlY2lhbC5zd2lwZS5nZXRMb2NhdGlvbiggZGF0YSApO1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdHRpbWU6ICggbmV3IERhdGUoKSApLmdldFRpbWUoKSxcblx0XHRcdFx0XHRcdGNvb3JkczogWyBsb2NhdGlvbi54LCBsb2NhdGlvbi55IF0sXG5cdFx0XHRcdFx0XHRvcmlnaW46ICQoIGV2ZW50LnRhcmdldCApXG5cdFx0XHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0c3RvcDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0dmFyIGRhdGEgPSBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgP1xuXHRcdFx0XHRcdGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1sgMCBdIDogZXZlbnQsXG5cdFx0XHRcdGxvY2F0aW9uID0gJC5ldmVudC5zcGVjaWFsLnN3aXBlLmdldExvY2F0aW9uKCBkYXRhICk7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0dGltZTogKCBuZXcgRGF0ZSgpICkuZ2V0VGltZSgpLFxuXHRcdFx0XHRcdFx0Y29vcmRzOiBbIGxvY2F0aW9uLngsIGxvY2F0aW9uLnkgXVxuXHRcdFx0XHRcdH07XG5cdFx0fSxcblxuXHRcdGhhbmRsZVN3aXBlOiBmdW5jdGlvbiggc3RhcnQsIHN0b3AsIHRoaXNPYmplY3QsIG9yaWdUYXJnZXQgKSB7XG5cdFx0XHRpZiAoIHN0b3AudGltZSAtIHN0YXJ0LnRpbWUgPCAkLmV2ZW50LnNwZWNpYWwuc3dpcGUuZHVyYXRpb25UaHJlc2hvbGQgJiZcblx0XHRcdFx0TWF0aC5hYnMoIHN0YXJ0LmNvb3Jkc1sgMCBdIC0gc3RvcC5jb29yZHNbIDAgXSApID4gJC5ldmVudC5zcGVjaWFsLnN3aXBlLmhvcml6b250YWxEaXN0YW5jZVRocmVzaG9sZCAmJlxuXHRcdFx0XHRNYXRoLmFicyggc3RhcnQuY29vcmRzWyAxIF0gLSBzdG9wLmNvb3Jkc1sgMSBdICkgPCAkLmV2ZW50LnNwZWNpYWwuc3dpcGUudmVydGljYWxEaXN0YW5jZVRocmVzaG9sZCApIHtcblx0XHRcdFx0dmFyIGRpcmVjdGlvbiA9IHN0YXJ0LmNvb3Jkc1swXSA+IHN0b3AuY29vcmRzWyAwIF0gPyBcInN3aXBlbGVmdFwiIDogXCJzd2lwZXJpZ2h0XCI7XG5cblx0XHRcdFx0dHJpZ2dlckN1c3RvbUV2ZW50KCB0aGlzT2JqZWN0LCBcInN3aXBlXCIsICQuRXZlbnQoIFwic3dpcGVcIiwgeyB0YXJnZXQ6IG9yaWdUYXJnZXQsIHN3aXBlc3RhcnQ6IHN0YXJ0LCBzd2lwZXN0b3A6IHN0b3AgfSksIHRydWUgKTtcblx0XHRcdFx0dHJpZ2dlckN1c3RvbUV2ZW50KCB0aGlzT2JqZWN0LCBkaXJlY3Rpb24sJC5FdmVudCggZGlyZWN0aW9uLCB7IHRhcmdldDogb3JpZ1RhcmdldCwgc3dpcGVzdGFydDogc3RhcnQsIHN3aXBlc3RvcDogc3RvcCB9ICksIHRydWUgKTtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cblx0XHR9LFxuXG5cdFx0Ly8gVGhpcyBzZXJ2ZXMgYXMgYSBmbGFnIHRvIGVuc3VyZSB0aGF0IGF0IG1vc3Qgb25lIHN3aXBlIGV2ZW50IGV2ZW50IGlzXG5cdFx0Ly8gaW4gd29yayBhdCBhbnkgZ2l2ZW4gdGltZVxuXHRcdGV2ZW50SW5Qcm9ncmVzczogZmFsc2UsXG5cblx0XHRzZXR1cDogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgZXZlbnRzLFxuXHRcdFx0XHR0aGlzT2JqZWN0ID0gdGhpcyxcblx0XHRcdFx0JHRoaXMgPSAkKCB0aGlzT2JqZWN0ICksXG5cdFx0XHRcdGNvbnRleHQgPSB7fTtcblxuXHRcdFx0Ly8gUmV0cmlldmUgdGhlIGV2ZW50cyBkYXRhIGZvciB0aGlzIGVsZW1lbnQgYW5kIGFkZCB0aGUgc3dpcGUgY29udGV4dFxuXHRcdFx0ZXZlbnRzID0gJC5kYXRhKCB0aGlzLCBcIm1vYmlsZS1ldmVudHNcIiApO1xuXHRcdFx0aWYgKCAhZXZlbnRzICkge1xuXHRcdFx0XHRldmVudHMgPSB7IGxlbmd0aDogMCB9O1xuXHRcdFx0XHQkLmRhdGEoIHRoaXMsIFwibW9iaWxlLWV2ZW50c1wiLCBldmVudHMgKTtcblx0XHRcdH1cblx0XHRcdGV2ZW50cy5sZW5ndGgrKztcblx0XHRcdGV2ZW50cy5zd2lwZSA9IGNvbnRleHQ7XG5cblx0XHRcdGNvbnRleHQuc3RhcnQgPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRcdFx0Ly8gQmFpbCBpZiB3ZSdyZSBhbHJlYWR5IHdvcmtpbmcgb24gYSBzd2lwZSBldmVudFxuXHRcdFx0XHRpZiAoICQuZXZlbnQuc3BlY2lhbC5zd2lwZS5ldmVudEluUHJvZ3Jlc3MgKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdCQuZXZlbnQuc3BlY2lhbC5zd2lwZS5ldmVudEluUHJvZ3Jlc3MgPSB0cnVlO1xuXG5cdFx0XHRcdHZhciBzdG9wLFxuXHRcdFx0XHRcdHN0YXJ0ID0gJC5ldmVudC5zcGVjaWFsLnN3aXBlLnN0YXJ0KCBldmVudCApLFxuXHRcdFx0XHRcdG9yaWdUYXJnZXQgPSBldmVudC50YXJnZXQsXG5cdFx0XHRcdFx0ZW1pdHRlZCA9IGZhbHNlO1xuXG5cdFx0XHRcdGNvbnRleHQubW92ZSA9IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0XHRpZiAoICFzdGFydCB8fCBldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSApIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRzdG9wID0gJC5ldmVudC5zcGVjaWFsLnN3aXBlLnN0b3AoIGV2ZW50ICk7XG5cdFx0XHRcdFx0aWYgKCAhZW1pdHRlZCApIHtcblx0XHRcdFx0XHRcdGVtaXR0ZWQgPSAkLmV2ZW50LnNwZWNpYWwuc3dpcGUuaGFuZGxlU3dpcGUoIHN0YXJ0LCBzdG9wLCB0aGlzT2JqZWN0LCBvcmlnVGFyZ2V0ICk7XG5cdFx0XHRcdFx0XHRpZiAoIGVtaXR0ZWQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gUmVzZXQgdGhlIGNvbnRleHQgdG8gbWFrZSB3YXkgZm9yIHRoZSBuZXh0IHN3aXBlIGV2ZW50XG5cdFx0XHRcdFx0XHRcdCQuZXZlbnQuc3BlY2lhbC5zd2lwZS5ldmVudEluUHJvZ3Jlc3MgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gcHJldmVudCBzY3JvbGxpbmdcblx0XHRcdFx0XHRpZiAoIE1hdGguYWJzKCBzdGFydC5jb29yZHNbIDAgXSAtIHN0b3AuY29vcmRzWyAwIF0gKSA+ICQuZXZlbnQuc3BlY2lhbC5zd2lwZS5zY3JvbGxTdXByZXNzaW9uVGhyZXNob2xkICkge1xuXHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0Y29udGV4dC5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRlbWl0dGVkID0gdHJ1ZTtcblxuXHRcdFx0XHRcdFx0Ly8gUmVzZXQgdGhlIGNvbnRleHQgdG8gbWFrZSB3YXkgZm9yIHRoZSBuZXh0IHN3aXBlIGV2ZW50XG5cdFx0XHRcdFx0XHQkLmV2ZW50LnNwZWNpYWwuc3dpcGUuZXZlbnRJblByb2dyZXNzID0gZmFsc2U7XG5cdFx0XHRcdFx0XHQkZG9jdW1lbnQub2ZmKCB0b3VjaE1vdmVFdmVudCwgY29udGV4dC5tb3ZlICk7XG5cdFx0XHRcdFx0XHRjb250ZXh0Lm1vdmUgPSBudWxsO1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdCRkb2N1bWVudC5vbiggdG91Y2hNb3ZlRXZlbnQsIGNvbnRleHQubW92ZSApXG5cdFx0XHRcdFx0Lm9uZSggdG91Y2hTdG9wRXZlbnQsIGNvbnRleHQuc3RvcCApO1xuXHRcdFx0fTtcblx0XHRcdCR0aGlzLm9uKCB0b3VjaFN0YXJ0RXZlbnQsIGNvbnRleHQuc3RhcnQgKTtcblx0XHR9LFxuXG5cdFx0dGVhcmRvd246IGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGV2ZW50cywgY29udGV4dDtcblxuXHRcdFx0ZXZlbnRzID0gJC5kYXRhKCB0aGlzLCBcIm1vYmlsZS1ldmVudHNcIiApO1xuXHRcdFx0aWYgKCBldmVudHMgKSB7XG5cdFx0XHRcdGNvbnRleHQgPSBldmVudHMuc3dpcGU7XG5cdFx0XHRcdGRlbGV0ZSBldmVudHMuc3dpcGU7XG5cdFx0XHRcdGV2ZW50cy5sZW5ndGgtLTtcblx0XHRcdFx0aWYgKCBldmVudHMubGVuZ3RoID09PSAwICkge1xuXHRcdFx0XHRcdCQucmVtb3ZlRGF0YSggdGhpcywgXCJtb2JpbGUtZXZlbnRzXCIgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGNvbnRleHQgKSB7XG5cdFx0XHRcdGlmICggY29udGV4dC5zdGFydCApIHtcblx0XHRcdFx0XHQkKCB0aGlzICkub2ZmKCB0b3VjaFN0YXJ0RXZlbnQsIGNvbnRleHQuc3RhcnQgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIGNvbnRleHQubW92ZSApIHtcblx0XHRcdFx0XHQkZG9jdW1lbnQub2ZmKCB0b3VjaE1vdmVFdmVudCwgY29udGV4dC5tb3ZlICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBjb250ZXh0LnN0b3AgKSB7XG5cdFx0XHRcdFx0JGRvY3VtZW50Lm9mZiggdG91Y2hTdG9wRXZlbnQsIGNvbnRleHQuc3RvcCApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHQkLmVhY2goe1xuXHRcdHN3aXBlbGVmdDogXCJzd2lwZS5sZWZ0XCIsXG5cdFx0c3dpcGVyaWdodDogXCJzd2lwZS5yaWdodFwiXG5cdH0sIGZ1bmN0aW9uKCBldmVudCwgc291cmNlRXZlbnQgKSB7XG5cblx0XHQkLmV2ZW50LnNwZWNpYWxbIGV2ZW50IF0gPSB7XG5cdFx0XHRzZXR1cDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdCQoIHRoaXMgKS5iaW5kKCBzb3VyY2VFdmVudCwgJC5ub29wICk7XG5cdFx0XHR9LFxuXHRcdFx0dGVhcmRvd246IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQkKCB0aGlzICkudW5iaW5kKCBzb3VyY2VFdmVudCApO1xuXHRcdFx0fVxuXHRcdH07XG5cdH0pO1xufSkoIGpRdWVyeSwgdGhpcyApO1xuKi9cbiIsIid1c2Ugc3RyaWN0JztcblxuIWZ1bmN0aW9uKCQpIHtcblxuY29uc3QgTXV0YXRpb25PYnNlcnZlciA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBwcmVmaXhlcyA9IFsnV2ViS2l0JywgJ01veicsICdPJywgJ01zJywgJyddO1xuICBmb3IgKHZhciBpPTA7IGkgPCBwcmVmaXhlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChgJHtwcmVmaXhlc1tpXX1NdXRhdGlvbk9ic2VydmVyYCBpbiB3aW5kb3cpIHtcbiAgICAgIHJldHVybiB3aW5kb3dbYCR7cHJlZml4ZXNbaV19TXV0YXRpb25PYnNlcnZlcmBdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59KCkpO1xuXG5jb25zdCB0cmlnZ2VycyA9IChlbCwgdHlwZSkgPT4ge1xuICBlbC5kYXRhKHR5cGUpLnNwbGl0KCcgJykuZm9yRWFjaChpZCA9PiB7XG4gICAgJChgIyR7aWR9YClbIHR5cGUgPT09ICdjbG9zZScgPyAndHJpZ2dlcicgOiAndHJpZ2dlckhhbmRsZXInXShgJHt0eXBlfS56Zi50cmlnZ2VyYCwgW2VsXSk7XG4gIH0pO1xufTtcbi8vIEVsZW1lbnRzIHdpdGggW2RhdGEtb3Blbl0gd2lsbCByZXZlYWwgYSBwbHVnaW4gdGhhdCBzdXBwb3J0cyBpdCB3aGVuIGNsaWNrZWQuXG4kKGRvY3VtZW50KS5vbignY2xpY2suemYudHJpZ2dlcicsICdbZGF0YS1vcGVuXScsIGZ1bmN0aW9uKCkge1xuICB0cmlnZ2VycygkKHRoaXMpLCAnb3BlbicpO1xufSk7XG5cbi8vIEVsZW1lbnRzIHdpdGggW2RhdGEtY2xvc2VdIHdpbGwgY2xvc2UgYSBwbHVnaW4gdGhhdCBzdXBwb3J0cyBpdCB3aGVuIGNsaWNrZWQuXG4vLyBJZiB1c2VkIHdpdGhvdXQgYSB2YWx1ZSBvbiBbZGF0YS1jbG9zZV0sIHRoZSBldmVudCB3aWxsIGJ1YmJsZSwgYWxsb3dpbmcgaXQgdG8gY2xvc2UgYSBwYXJlbnQgY29tcG9uZW50LlxuJChkb2N1bWVudCkub24oJ2NsaWNrLnpmLnRyaWdnZXInLCAnW2RhdGEtY2xvc2VdJywgZnVuY3Rpb24oKSB7XG4gIGxldCBpZCA9ICQodGhpcykuZGF0YSgnY2xvc2UnKTtcbiAgaWYgKGlkKSB7XG4gICAgdHJpZ2dlcnMoJCh0aGlzKSwgJ2Nsb3NlJyk7XG4gIH1cbiAgZWxzZSB7XG4gICAgJCh0aGlzKS50cmlnZ2VyKCdjbG9zZS56Zi50cmlnZ2VyJyk7XG4gIH1cbn0pO1xuXG4vLyBFbGVtZW50cyB3aXRoIFtkYXRhLXRvZ2dsZV0gd2lsbCB0b2dnbGUgYSBwbHVnaW4gdGhhdCBzdXBwb3J0cyBpdCB3aGVuIGNsaWNrZWQuXG4kKGRvY3VtZW50KS5vbignY2xpY2suemYudHJpZ2dlcicsICdbZGF0YS10b2dnbGVdJywgZnVuY3Rpb24oKSB7XG4gIGxldCBpZCA9ICQodGhpcykuZGF0YSgndG9nZ2xlJyk7XG4gIGlmIChpZCkge1xuICAgIHRyaWdnZXJzKCQodGhpcyksICd0b2dnbGUnKTtcbiAgfSBlbHNlIHtcbiAgICAkKHRoaXMpLnRyaWdnZXIoJ3RvZ2dsZS56Zi50cmlnZ2VyJyk7XG4gIH1cbn0pO1xuXG4vLyBFbGVtZW50cyB3aXRoIFtkYXRhLWNsb3NhYmxlXSB3aWxsIHJlc3BvbmQgdG8gY2xvc2UuemYudHJpZ2dlciBldmVudHMuXG4kKGRvY3VtZW50KS5vbignY2xvc2UuemYudHJpZ2dlcicsICdbZGF0YS1jbG9zYWJsZV0nLCBmdW5jdGlvbihlKXtcbiAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgbGV0IGFuaW1hdGlvbiA9ICQodGhpcykuZGF0YSgnY2xvc2FibGUnKTtcblxuICBpZihhbmltYXRpb24gIT09ICcnKXtcbiAgICBGb3VuZGF0aW9uLk1vdGlvbi5hbmltYXRlT3V0KCQodGhpcyksIGFuaW1hdGlvbiwgZnVuY3Rpb24oKSB7XG4gICAgICAkKHRoaXMpLnRyaWdnZXIoJ2Nsb3NlZC56ZicpO1xuICAgIH0pO1xuICB9ZWxzZXtcbiAgICAkKHRoaXMpLmZhZGVPdXQoKS50cmlnZ2VyKCdjbG9zZWQuemYnKTtcbiAgfVxufSk7XG5cbiQoZG9jdW1lbnQpLm9uKCdmb2N1cy56Zi50cmlnZ2VyIGJsdXIuemYudHJpZ2dlcicsICdbZGF0YS10b2dnbGUtZm9jdXNdJywgZnVuY3Rpb24oKSB7XG4gIGxldCBpZCA9ICQodGhpcykuZGF0YSgndG9nZ2xlLWZvY3VzJyk7XG4gICQoYCMke2lkfWApLnRyaWdnZXJIYW5kbGVyKCd0b2dnbGUuemYudHJpZ2dlcicsIFskKHRoaXMpXSk7XG59KTtcblxuLyoqXG4qIEZpcmVzIG9uY2UgYWZ0ZXIgYWxsIG90aGVyIHNjcmlwdHMgaGF2ZSBsb2FkZWRcbiogQGZ1bmN0aW9uXG4qIEBwcml2YXRlXG4qL1xuJCh3aW5kb3cpLm9uKCdsb2FkJywgKCkgPT4ge1xuICBjaGVja0xpc3RlbmVycygpO1xufSk7XG5cbmZ1bmN0aW9uIGNoZWNrTGlzdGVuZXJzKCkge1xuICBldmVudHNMaXN0ZW5lcigpO1xuICByZXNpemVMaXN0ZW5lcigpO1xuICBzY3JvbGxMaXN0ZW5lcigpO1xuICBtdXRhdGVMaXN0ZW5lcigpO1xuICBjbG9zZW1lTGlzdGVuZXIoKTtcbn1cblxuLy8qKioqKioqKiBvbmx5IGZpcmVzIHRoaXMgZnVuY3Rpb24gb25jZSBvbiBsb2FkLCBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byB3YXRjaCAqKioqKioqKlxuZnVuY3Rpb24gY2xvc2VtZUxpc3RlbmVyKHBsdWdpbk5hbWUpIHtcbiAgdmFyIHlldGlCb3hlcyA9ICQoJ1tkYXRhLXlldGktYm94XScpLFxuICAgICAgcGx1Z05hbWVzID0gWydkcm9wZG93bicsICd0b29sdGlwJywgJ3JldmVhbCddO1xuXG4gIGlmKHBsdWdpbk5hbWUpe1xuICAgIGlmKHR5cGVvZiBwbHVnaW5OYW1lID09PSAnc3RyaW5nJyl7XG4gICAgICBwbHVnTmFtZXMucHVzaChwbHVnaW5OYW1lKTtcbiAgICB9ZWxzZSBpZih0eXBlb2YgcGx1Z2luTmFtZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHBsdWdpbk5hbWVbMF0gPT09ICdzdHJpbmcnKXtcbiAgICAgIHBsdWdOYW1lcy5jb25jYXQocGx1Z2luTmFtZSk7XG4gICAgfWVsc2V7XG4gICAgICBjb25zb2xlLmVycm9yKCdQbHVnaW4gbmFtZXMgbXVzdCBiZSBzdHJpbmdzJyk7XG4gICAgfVxuICB9XG4gIGlmKHlldGlCb3hlcy5sZW5ndGgpe1xuICAgIGxldCBsaXN0ZW5lcnMgPSBwbHVnTmFtZXMubWFwKChuYW1lKSA9PiB7XG4gICAgICByZXR1cm4gYGNsb3NlbWUuemYuJHtuYW1lfWA7XG4gICAgfSkuam9pbignICcpO1xuXG4gICAgJCh3aW5kb3cpLm9mZihsaXN0ZW5lcnMpLm9uKGxpc3RlbmVycywgZnVuY3Rpb24oZSwgcGx1Z2luSWQpe1xuICAgICAgbGV0IHBsdWdpbiA9IGUubmFtZXNwYWNlLnNwbGl0KCcuJylbMF07XG4gICAgICBsZXQgcGx1Z2lucyA9ICQoYFtkYXRhLSR7cGx1Z2lufV1gKS5ub3QoYFtkYXRhLXlldGktYm94PVwiJHtwbHVnaW5JZH1cIl1gKTtcblxuICAgICAgcGx1Z2lucy5lYWNoKGZ1bmN0aW9uKCl7XG4gICAgICAgIGxldCBfdGhpcyA9ICQodGhpcyk7XG5cbiAgICAgICAgX3RoaXMudHJpZ2dlckhhbmRsZXIoJ2Nsb3NlLnpmLnRyaWdnZXInLCBbX3RoaXNdKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc2l6ZUxpc3RlbmVyKGRlYm91bmNlKXtcbiAgbGV0IHRpbWVyLFxuICAgICAgJG5vZGVzID0gJCgnW2RhdGEtcmVzaXplXScpO1xuICBpZigkbm9kZXMubGVuZ3RoKXtcbiAgICAkKHdpbmRvdykub2ZmKCdyZXNpemUuemYudHJpZ2dlcicpXG4gICAgLm9uKCdyZXNpemUuemYudHJpZ2dlcicsIGZ1bmN0aW9uKGUpIHtcbiAgICAgIGlmICh0aW1lcikgeyBjbGVhclRpbWVvdXQodGltZXIpOyB9XG5cbiAgICAgIHRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpe1xuXG4gICAgICAgIGlmKCFNdXRhdGlvbk9ic2VydmVyKXsvL2ZhbGxiYWNrIGZvciBJRSA5XG4gICAgICAgICAgJG5vZGVzLmVhY2goZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICQodGhpcykudHJpZ2dlckhhbmRsZXIoJ3Jlc2l6ZW1lLnpmLnRyaWdnZXInKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvL3RyaWdnZXIgYWxsIGxpc3RlbmluZyBlbGVtZW50cyBhbmQgc2lnbmFsIGEgcmVzaXplIGV2ZW50XG4gICAgICAgICRub2Rlcy5hdHRyKCdkYXRhLWV2ZW50cycsIFwicmVzaXplXCIpO1xuICAgICAgfSwgZGVib3VuY2UgfHwgMTApOy8vZGVmYXVsdCB0aW1lIHRvIGVtaXQgcmVzaXplIGV2ZW50XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2Nyb2xsTGlzdGVuZXIoZGVib3VuY2Upe1xuICBsZXQgdGltZXIsXG4gICAgICAkbm9kZXMgPSAkKCdbZGF0YS1zY3JvbGxdJyk7XG4gIGlmKCRub2Rlcy5sZW5ndGgpe1xuICAgICQod2luZG93KS5vZmYoJ3Njcm9sbC56Zi50cmlnZ2VyJylcbiAgICAub24oJ3Njcm9sbC56Zi50cmlnZ2VyJywgZnVuY3Rpb24oZSl7XG4gICAgICBpZih0aW1lcil7IGNsZWFyVGltZW91dCh0aW1lcik7IH1cblxuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG5cbiAgICAgICAgaWYoIU11dGF0aW9uT2JzZXJ2ZXIpey8vZmFsbGJhY2sgZm9yIElFIDlcbiAgICAgICAgICAkbm9kZXMuZWFjaChmdW5jdGlvbigpe1xuICAgICAgICAgICAgJCh0aGlzKS50cmlnZ2VySGFuZGxlcignc2Nyb2xsbWUuemYudHJpZ2dlcicpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vdHJpZ2dlciBhbGwgbGlzdGVuaW5nIGVsZW1lbnRzIGFuZCBzaWduYWwgYSBzY3JvbGwgZXZlbnRcbiAgICAgICAgJG5vZGVzLmF0dHIoJ2RhdGEtZXZlbnRzJywgXCJzY3JvbGxcIik7XG4gICAgICB9LCBkZWJvdW5jZSB8fCAxMCk7Ly9kZWZhdWx0IHRpbWUgdG8gZW1pdCBzY3JvbGwgZXZlbnRcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtdXRhdGVMaXN0ZW5lcihkZWJvdW5jZSkge1xuICAgIGxldCAkbm9kZXMgPSAkKCdbZGF0YS1tdXRhdGVdJyk7XG4gICAgaWYgKCRub2Rlcy5sZW5ndGggJiYgTXV0YXRpb25PYnNlcnZlcil7XG5cdFx0XHQvL3RyaWdnZXIgYWxsIGxpc3RlbmluZyBlbGVtZW50cyBhbmQgc2lnbmFsIGEgbXV0YXRlIGV2ZW50XG4gICAgICAvL25vIElFIDkgb3IgMTBcblx0XHRcdCRub2Rlcy5lYWNoKGZ1bmN0aW9uICgpIHtcblx0XHRcdCAgJCh0aGlzKS50cmlnZ2VySGFuZGxlcignbXV0YXRlbWUuemYudHJpZ2dlcicpO1xuXHRcdFx0fSk7XG4gICAgfVxuIH1cblxuZnVuY3Rpb24gZXZlbnRzTGlzdGVuZXIoKSB7XG4gIGlmKCFNdXRhdGlvbk9ic2VydmVyKXsgcmV0dXJuIGZhbHNlOyB9XG4gIGxldCBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXJlc2l6ZV0sIFtkYXRhLXNjcm9sbF0sIFtkYXRhLW11dGF0ZV0nKTtcblxuICAvL2VsZW1lbnQgY2FsbGJhY2tcbiAgdmFyIGxpc3RlbmluZ0VsZW1lbnRzTXV0YXRpb24gPSBmdW5jdGlvbiAobXV0YXRpb25SZWNvcmRzTGlzdCkge1xuICAgICAgdmFyICR0YXJnZXQgPSAkKG11dGF0aW9uUmVjb3Jkc0xpc3RbMF0udGFyZ2V0KTtcblxuXHQgIC8vdHJpZ2dlciB0aGUgZXZlbnQgaGFuZGxlciBmb3IgdGhlIGVsZW1lbnQgZGVwZW5kaW5nIG9uIHR5cGVcbiAgICAgIHN3aXRjaCAobXV0YXRpb25SZWNvcmRzTGlzdFswXS50eXBlKSB7XG5cbiAgICAgICAgY2FzZSBcImF0dHJpYnV0ZXNcIjpcbiAgICAgICAgICBpZiAoJHRhcmdldC5hdHRyKFwiZGF0YS1ldmVudHNcIikgPT09IFwic2Nyb2xsXCIgJiYgbXV0YXRpb25SZWNvcmRzTGlzdFswXS5hdHRyaWJ1dGVOYW1lID09PSBcImRhdGEtZXZlbnRzXCIpIHtcblx0XHQgIFx0JHRhcmdldC50cmlnZ2VySGFuZGxlcignc2Nyb2xsbWUuemYudHJpZ2dlcicsIFskdGFyZ2V0LCB3aW5kb3cucGFnZVlPZmZzZXRdKTtcblx0XHQgIH1cblx0XHQgIGlmICgkdGFyZ2V0LmF0dHIoXCJkYXRhLWV2ZW50c1wiKSA9PT0gXCJyZXNpemVcIiAmJiBtdXRhdGlvblJlY29yZHNMaXN0WzBdLmF0dHJpYnV0ZU5hbWUgPT09IFwiZGF0YS1ldmVudHNcIikge1xuXHRcdCAgXHQkdGFyZ2V0LnRyaWdnZXJIYW5kbGVyKCdyZXNpemVtZS56Zi50cmlnZ2VyJywgWyR0YXJnZXRdKTtcblx0XHQgICB9XG5cdFx0ICBpZiAobXV0YXRpb25SZWNvcmRzTGlzdFswXS5hdHRyaWJ1dGVOYW1lID09PSBcInN0eWxlXCIpIHtcblx0XHRcdCAgJHRhcmdldC5jbG9zZXN0KFwiW2RhdGEtbXV0YXRlXVwiKS5hdHRyKFwiZGF0YS1ldmVudHNcIixcIm11dGF0ZVwiKTtcblx0XHRcdCAgJHRhcmdldC5jbG9zZXN0KFwiW2RhdGEtbXV0YXRlXVwiKS50cmlnZ2VySGFuZGxlcignbXV0YXRlbWUuemYudHJpZ2dlcicsIFskdGFyZ2V0LmNsb3Nlc3QoXCJbZGF0YS1tdXRhdGVdXCIpXSk7XG5cdFx0ICB9XG5cdFx0ICBicmVhaztcblxuICAgICAgICBjYXNlIFwiY2hpbGRMaXN0XCI6XG5cdFx0ICAkdGFyZ2V0LmNsb3Nlc3QoXCJbZGF0YS1tdXRhdGVdXCIpLmF0dHIoXCJkYXRhLWV2ZW50c1wiLFwibXV0YXRlXCIpO1xuXHRcdCAgJHRhcmdldC5jbG9zZXN0KFwiW2RhdGEtbXV0YXRlXVwiKS50cmlnZ2VySGFuZGxlcignbXV0YXRlbWUuemYudHJpZ2dlcicsIFskdGFyZ2V0LmNsb3Nlc3QoXCJbZGF0YS1tdXRhdGVdXCIpXSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vbm90aGluZ1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAobm9kZXMubGVuZ3RoKSB7XG4gICAgICAvL2ZvciBlYWNoIGVsZW1lbnQgdGhhdCBuZWVkcyB0byBsaXN0ZW4gZm9yIHJlc2l6aW5nLCBzY3JvbGxpbmcsIG9yIG11dGF0aW9uIGFkZCBhIHNpbmdsZSBvYnNlcnZlclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gbm9kZXMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIHZhciBlbGVtZW50T2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihsaXN0ZW5pbmdFbGVtZW50c011dGF0aW9uKTtcbiAgICAgICAgZWxlbWVudE9ic2VydmVyLm9ic2VydmUobm9kZXNbaV0sIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiBmYWxzZSwgc3VidHJlZTogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbXCJkYXRhLWV2ZW50c1wiLCBcInN0eWxlXCJdIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gW1BIXVxuLy8gRm91bmRhdGlvbi5DaGVja1dhdGNoZXJzID0gY2hlY2tXYXRjaGVycztcbkZvdW5kYXRpb24uSUhlYXJZb3UgPSBjaGVja0xpc3RlbmVycztcbi8vIEZvdW5kYXRpb24uSVNlZVlvdSA9IHNjcm9sbExpc3RlbmVyO1xuLy8gRm91bmRhdGlvbi5JRmVlbFlvdSA9IGNsb3NlbWVMaXN0ZW5lcjtcblxufShqUXVlcnkpO1xuXG4vLyBmdW5jdGlvbiBkb21NdXRhdGlvbk9ic2VydmVyKGRlYm91bmNlKSB7XG4vLyAgIC8vICEhISBUaGlzIGlzIGNvbWluZyBzb29uIGFuZCBuZWVkcyBtb3JlIHdvcms7IG5vdCBhY3RpdmUgICEhISAvL1xuLy8gICB2YXIgdGltZXIsXG4vLyAgIG5vZGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtbXV0YXRlXScpO1xuLy8gICAvL1xuLy8gICBpZiAobm9kZXMubGVuZ3RoKSB7XG4vLyAgICAgLy8gdmFyIE11dGF0aW9uT2JzZXJ2ZXIgPSAoZnVuY3Rpb24gKCkge1xuLy8gICAgIC8vICAgdmFyIHByZWZpeGVzID0gWydXZWJLaXQnLCAnTW96JywgJ08nLCAnTXMnLCAnJ107XG4vLyAgICAgLy8gICBmb3IgKHZhciBpPTA7IGkgPCBwcmVmaXhlcy5sZW5ndGg7IGkrKykge1xuLy8gICAgIC8vICAgICBpZiAocHJlZml4ZXNbaV0gKyAnTXV0YXRpb25PYnNlcnZlcicgaW4gd2luZG93KSB7XG4vLyAgICAgLy8gICAgICAgcmV0dXJuIHdpbmRvd1twcmVmaXhlc1tpXSArICdNdXRhdGlvbk9ic2VydmVyJ107XG4vLyAgICAgLy8gICAgIH1cbi8vICAgICAvLyAgIH1cbi8vICAgICAvLyAgIHJldHVybiBmYWxzZTtcbi8vICAgICAvLyB9KCkpO1xuLy9cbi8vXG4vLyAgICAgLy9mb3IgdGhlIGJvZHksIHdlIG5lZWQgdG8gbGlzdGVuIGZvciBhbGwgY2hhbmdlcyBlZmZlY3RpbmcgdGhlIHN0eWxlIGFuZCBjbGFzcyBhdHRyaWJ1dGVzXG4vLyAgICAgdmFyIGJvZHlPYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGJvZHlNdXRhdGlvbik7XG4vLyAgICAgYm9keU9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBjaGlsZExpc3Q6IHRydWUsIGNoYXJhY3RlckRhdGE6IGZhbHNlLCBzdWJ0cmVlOnRydWUsIGF0dHJpYnV0ZUZpbHRlcjpbXCJzdHlsZVwiLCBcImNsYXNzXCJdfSk7XG4vL1xuLy9cbi8vICAgICAvL2JvZHkgY2FsbGJhY2tcbi8vICAgICBmdW5jdGlvbiBib2R5TXV0YXRpb24obXV0YXRlKSB7XG4vLyAgICAgICAvL3RyaWdnZXIgYWxsIGxpc3RlbmluZyBlbGVtZW50cyBhbmQgc2lnbmFsIGEgbXV0YXRpb24gZXZlbnRcbi8vICAgICAgIGlmICh0aW1lcikgeyBjbGVhclRpbWVvdXQodGltZXIpOyB9XG4vL1xuLy8gICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuLy8gICAgICAgICBib2R5T2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuLy8gICAgICAgICAkKCdbZGF0YS1tdXRhdGVdJykuYXR0cignZGF0YS1ldmVudHMnLFwibXV0YXRlXCIpO1xuLy8gICAgICAgfSwgZGVib3VuY2UgfHwgMTUwKTtcbi8vICAgICB9XG4vLyAgIH1cbi8vIH1cbiIsIid1c2Ugc3RyaWN0JztcblxuIWZ1bmN0aW9uKCQpIHtcblxuLyoqXG4gKiBBYmlkZSBtb2R1bGUuXG4gKiBAbW9kdWxlIGZvdW5kYXRpb24uYWJpZGVcbiAqL1xuXG5jbGFzcyBBYmlkZSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIEFiaWRlLlxuICAgKiBAY2xhc3NcbiAgICogQGZpcmVzIEFiaWRlI2luaXRcbiAgICogQHBhcmFtIHtPYmplY3R9IGVsZW1lbnQgLSBqUXVlcnkgb2JqZWN0IHRvIGFkZCB0aGUgdHJpZ2dlciB0by5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBPdmVycmlkZXMgdG8gdGhlIGRlZmF1bHQgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZWxlbWVudCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy4kZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5vcHRpb25zICA9ICQuZXh0ZW5kKHt9LCBBYmlkZS5kZWZhdWx0cywgdGhpcy4kZWxlbWVudC5kYXRhKCksIG9wdGlvbnMpO1xuXG4gICAgdGhpcy5faW5pdCgpO1xuXG4gICAgRm91bmRhdGlvbi5yZWdpc3RlclBsdWdpbih0aGlzLCAnQWJpZGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgQWJpZGUgcGx1Z2luIGFuZCBjYWxscyBmdW5jdGlvbnMgdG8gZ2V0IEFiaWRlIGZ1bmN0aW9uaW5nIG9uIGxvYWQuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfaW5pdCgpIHtcbiAgICB0aGlzLiRpbnB1dHMgPSB0aGlzLiRlbGVtZW50LmZpbmQoJ2lucHV0LCB0ZXh0YXJlYSwgc2VsZWN0Jyk7XG5cbiAgICB0aGlzLl9ldmVudHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyBldmVudHMgZm9yIEFiaWRlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2V2ZW50cygpIHtcbiAgICB0aGlzLiRlbGVtZW50Lm9mZignLmFiaWRlJylcbiAgICAgIC5vbigncmVzZXQuemYuYWJpZGUnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICB9KVxuICAgICAgLm9uKCdzdWJtaXQuemYuYWJpZGUnLCAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlRm9ybSgpO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnZhbGlkYXRlT24gPT09ICdmaWVsZENoYW5nZScpIHtcbiAgICAgIHRoaXMuJGlucHV0c1xuICAgICAgICAub2ZmKCdjaGFuZ2UuemYuYWJpZGUnKVxuICAgICAgICAub24oJ2NoYW5nZS56Zi5hYmlkZScsIChlKSA9PiB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUlucHV0KCQoZS50YXJnZXQpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5saXZlVmFsaWRhdGUpIHtcbiAgICAgIHRoaXMuJGlucHV0c1xuICAgICAgICAub2ZmKCdpbnB1dC56Zi5hYmlkZScpXG4gICAgICAgIC5vbignaW5wdXQuemYuYWJpZGUnLCAoZSkgPT4ge1xuICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dCgkKGUudGFyZ2V0KSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMudmFsaWRhdGVPbkJsdXIpIHtcbiAgICAgIHRoaXMuJGlucHV0c1xuICAgICAgICAub2ZmKCdibHVyLnpmLmFiaWRlJylcbiAgICAgICAgLm9uKCdibHVyLnpmLmFiaWRlJywgKGUpID0+IHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXQoJChlLnRhcmdldCkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbHMgbmVjZXNzYXJ5IGZ1bmN0aW9ucyB0byB1cGRhdGUgQWJpZGUgdXBvbiBET00gY2hhbmdlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcmVmbG93KCkge1xuICAgIHRoaXMuX2luaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgYSBmb3JtIGVsZW1lbnQgaGFzIHRoZSByZXF1aXJlZCBhdHRyaWJ1dGUgYW5kIGlmIGl0J3MgY2hlY2tlZCBvciBub3RcbiAgICogQHBhcmFtIHtPYmplY3R9IGVsZW1lbnQgLSBqUXVlcnkgb2JqZWN0IHRvIGNoZWNrIGZvciByZXF1aXJlZCBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMge0Jvb2xlYW59IEJvb2xlYW4gdmFsdWUgZGVwZW5kcyBvbiB3aGV0aGVyIG9yIG5vdCBhdHRyaWJ1dGUgaXMgY2hlY2tlZCBvciBlbXB0eVxuICAgKi9cbiAgcmVxdWlyZWRDaGVjaygkZWwpIHtcbiAgICBpZiAoISRlbC5hdHRyKCdyZXF1aXJlZCcpKSByZXR1cm4gdHJ1ZTtcblxuICAgIHZhciBpc0dvb2QgPSB0cnVlO1xuXG4gICAgc3dpdGNoICgkZWxbMF0udHlwZSkge1xuICAgICAgY2FzZSAnY2hlY2tib3gnOlxuICAgICAgICBpc0dvb2QgPSAkZWxbMF0uY2hlY2tlZDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICBjYXNlICdzZWxlY3Qtb25lJzpcbiAgICAgIGNhc2UgJ3NlbGVjdC1tdWx0aXBsZSc6XG4gICAgICAgIHZhciBvcHQgPSAkZWwuZmluZCgnb3B0aW9uOnNlbGVjdGVkJyk7XG4gICAgICAgIGlmICghb3B0Lmxlbmd0aCB8fCAhb3B0LnZhbCgpKSBpc0dvb2QgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmKCEkZWwudmFsKCkgfHwgISRlbC52YWwoKS5sZW5ndGgpIGlzR29vZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBpc0dvb2Q7XG4gIH1cblxuICAvKipcbiAgICogQmFzZWQgb24gJGVsLCBnZXQgdGhlIGZpcnN0IGVsZW1lbnQgd2l0aCBzZWxlY3RvciBpbiB0aGlzIG9yZGVyOlxuICAgKiAxLiBUaGUgZWxlbWVudCdzIGRpcmVjdCBzaWJsaW5nKCdzKS5cbiAgICogMy4gVGhlIGVsZW1lbnQncyBwYXJlbnQncyBjaGlsZHJlbi5cbiAgICpcbiAgICogVGhpcyBhbGxvd3MgZm9yIG11bHRpcGxlIGZvcm0gZXJyb3JzIHBlciBpbnB1dCwgdGhvdWdoIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBmb3JtIGVycm9ycyB3aWxsIGJlIHNob3duLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gJGVsIC0galF1ZXJ5IG9iamVjdCB0byB1c2UgYXMgcmVmZXJlbmNlIHRvIGZpbmQgdGhlIGZvcm0gZXJyb3Igc2VsZWN0b3IuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IGpRdWVyeSBvYmplY3Qgd2l0aCB0aGUgc2VsZWN0b3IuXG4gICAqL1xuICBmaW5kRm9ybUVycm9yKCRlbCkge1xuICAgIHZhciAkZXJyb3IgPSAkZWwuc2libGluZ3ModGhpcy5vcHRpb25zLmZvcm1FcnJvclNlbGVjdG9yKTtcblxuICAgIGlmICghJGVycm9yLmxlbmd0aCkge1xuICAgICAgJGVycm9yID0gJGVsLnBhcmVudCgpLmZpbmQodGhpcy5vcHRpb25zLmZvcm1FcnJvclNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJGVycm9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGlzIG9yZGVyOlxuICAgKiAyLiBUaGUgPGxhYmVsPiB3aXRoIHRoZSBhdHRyaWJ1dGUgYFtmb3I9XCJzb21lSW5wdXRJZFwiXWBcbiAgICogMy4gVGhlIGAuY2xvc2VzdCgpYCA8bGFiZWw+XG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSAkZWwgLSBqUXVlcnkgb2JqZWN0IHRvIGNoZWNrIGZvciByZXF1aXJlZCBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMge0Jvb2xlYW59IEJvb2xlYW4gdmFsdWUgZGVwZW5kcyBvbiB3aGV0aGVyIG9yIG5vdCBhdHRyaWJ1dGUgaXMgY2hlY2tlZCBvciBlbXB0eVxuICAgKi9cbiAgZmluZExhYmVsKCRlbCkge1xuICAgIHZhciBpZCA9ICRlbFswXS5pZDtcbiAgICB2YXIgJGxhYmVsID0gdGhpcy4kZWxlbWVudC5maW5kKGBsYWJlbFtmb3I9XCIke2lkfVwiXWApO1xuXG4gICAgaWYgKCEkbGFiZWwubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gJGVsLmNsb3Nlc3QoJ2xhYmVsJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuICRsYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNldCBvZiBsYWJlbHMgYXNzb2NpYXRlZCB3aXRoIGEgc2V0IG9mIHJhZGlvIGVscyBpbiB0aGlzIG9yZGVyXG4gICAqIDIuIFRoZSA8bGFiZWw+IHdpdGggdGhlIGF0dHJpYnV0ZSBgW2Zvcj1cInNvbWVJbnB1dElkXCJdYFxuICAgKiAzLiBUaGUgYC5jbG9zZXN0KClgIDxsYWJlbD5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9ICRlbCAtIGpRdWVyeSBvYmplY3QgdG8gY2hlY2sgZm9yIHJlcXVpcmVkIGF0dHJpYnV0ZVxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gQm9vbGVhbiB2YWx1ZSBkZXBlbmRzIG9uIHdoZXRoZXIgb3Igbm90IGF0dHJpYnV0ZSBpcyBjaGVja2VkIG9yIGVtcHR5XG4gICAqL1xuICBmaW5kUmFkaW9MYWJlbHMoJGVscykge1xuICAgIHZhciBsYWJlbHMgPSAkZWxzLm1hcCgoaSwgZWwpID0+IHtcbiAgICAgIHZhciBpZCA9IGVsLmlkO1xuICAgICAgdmFyICRsYWJlbCA9IHRoaXMuJGVsZW1lbnQuZmluZChgbGFiZWxbZm9yPVwiJHtpZH1cIl1gKTtcblxuICAgICAgaWYgKCEkbGFiZWwubGVuZ3RoKSB7XG4gICAgICAgICRsYWJlbCA9ICQoZWwpLmNsb3Nlc3QoJ2xhYmVsJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gJGxhYmVsWzBdO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuICQobGFiZWxzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBDU1MgZXJyb3IgY2xhc3MgYXMgc3BlY2lmaWVkIGJ5IHRoZSBBYmlkZSBzZXR0aW5ncyB0byB0aGUgbGFiZWwsIGlucHV0LCBhbmQgdGhlIGZvcm1cbiAgICogQHBhcmFtIHtPYmplY3R9ICRlbCAtIGpRdWVyeSBvYmplY3QgdG8gYWRkIHRoZSBjbGFzcyB0b1xuICAgKi9cbiAgYWRkRXJyb3JDbGFzc2VzKCRlbCkge1xuICAgIHZhciAkbGFiZWwgPSB0aGlzLmZpbmRMYWJlbCgkZWwpO1xuICAgIHZhciAkZm9ybUVycm9yID0gdGhpcy5maW5kRm9ybUVycm9yKCRlbCk7XG5cbiAgICBpZiAoJGxhYmVsLmxlbmd0aCkge1xuICAgICAgJGxhYmVsLmFkZENsYXNzKHRoaXMub3B0aW9ucy5sYWJlbEVycm9yQ2xhc3MpO1xuICAgIH1cblxuICAgIGlmICgkZm9ybUVycm9yLmxlbmd0aCkge1xuICAgICAgJGZvcm1FcnJvci5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuZm9ybUVycm9yQ2xhc3MpO1xuICAgIH1cblxuICAgICRlbC5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuaW5wdXRFcnJvckNsYXNzKS5hdHRyKCdkYXRhLWludmFsaWQnLCAnJyk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIENTUyBlcnJvciBjbGFzc2VzIGV0YyBmcm9tIGFuIGVudGlyZSByYWRpbyBidXR0b24gZ3JvdXBcbiAgICogQHBhcmFtIHtTdHJpbmd9IGdyb3VwTmFtZSAtIEEgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBuYW1lIG9mIGEgcmFkaW8gYnV0dG9uIGdyb3VwXG4gICAqXG4gICAqL1xuXG4gIHJlbW92ZVJhZGlvRXJyb3JDbGFzc2VzKGdyb3VwTmFtZSkge1xuICAgIHZhciAkZWxzID0gdGhpcy4kZWxlbWVudC5maW5kKGA6cmFkaW9bbmFtZT1cIiR7Z3JvdXBOYW1lfVwiXWApO1xuICAgIHZhciAkbGFiZWxzID0gdGhpcy5maW5kUmFkaW9MYWJlbHMoJGVscyk7XG4gICAgdmFyICRmb3JtRXJyb3JzID0gdGhpcy5maW5kRm9ybUVycm9yKCRlbHMpO1xuXG4gICAgaWYgKCRsYWJlbHMubGVuZ3RoKSB7XG4gICAgICAkbGFiZWxzLnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5sYWJlbEVycm9yQ2xhc3MpO1xuICAgIH1cblxuICAgIGlmICgkZm9ybUVycm9ycy5sZW5ndGgpIHtcbiAgICAgICRmb3JtRXJyb3JzLnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5mb3JtRXJyb3JDbGFzcyk7XG4gICAgfVxuXG4gICAgJGVscy5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaW5wdXRFcnJvckNsYXNzKS5yZW1vdmVBdHRyKCdkYXRhLWludmFsaWQnKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgQ1NTIGVycm9yIGNsYXNzIGFzIHNwZWNpZmllZCBieSB0aGUgQWJpZGUgc2V0dGluZ3MgZnJvbSB0aGUgbGFiZWwsIGlucHV0LCBhbmQgdGhlIGZvcm1cbiAgICogQHBhcmFtIHtPYmplY3R9ICRlbCAtIGpRdWVyeSBvYmplY3QgdG8gcmVtb3ZlIHRoZSBjbGFzcyBmcm9tXG4gICAqL1xuICByZW1vdmVFcnJvckNsYXNzZXMoJGVsKSB7XG4gICAgLy8gcmFkaW9zIG5lZWQgdG8gY2xlYXIgYWxsIG9mIHRoZSBlbHNcbiAgICBpZigkZWxbMF0udHlwZSA9PSAncmFkaW8nKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW1vdmVSYWRpb0Vycm9yQ2xhc3NlcygkZWwuYXR0cignbmFtZScpKTtcbiAgICB9XG5cbiAgICB2YXIgJGxhYmVsID0gdGhpcy5maW5kTGFiZWwoJGVsKTtcbiAgICB2YXIgJGZvcm1FcnJvciA9IHRoaXMuZmluZEZvcm1FcnJvcigkZWwpO1xuXG4gICAgaWYgKCRsYWJlbC5sZW5ndGgpIHtcbiAgICAgICRsYWJlbC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMubGFiZWxFcnJvckNsYXNzKTtcbiAgICB9XG5cbiAgICBpZiAoJGZvcm1FcnJvci5sZW5ndGgpIHtcbiAgICAgICRmb3JtRXJyb3IucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmZvcm1FcnJvckNsYXNzKTtcbiAgICB9XG5cbiAgICAkZWwucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmlucHV0RXJyb3JDbGFzcykucmVtb3ZlQXR0cignZGF0YS1pbnZhbGlkJyk7XG4gIH1cblxuICAvKipcbiAgICogR29lcyB0aHJvdWdoIGEgZm9ybSB0byBmaW5kIGlucHV0cyBhbmQgcHJvY2VlZHMgdG8gdmFsaWRhdGUgdGhlbSBpbiB3YXlzIHNwZWNpZmljIHRvIHRoZWlyIHR5cGVcbiAgICogQGZpcmVzIEFiaWRlI2ludmFsaWRcbiAgICogQGZpcmVzIEFiaWRlI3ZhbGlkXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBlbGVtZW50IC0galF1ZXJ5IG9iamVjdCB0byB2YWxpZGF0ZSwgc2hvdWxkIGJlIGFuIEhUTUwgaW5wdXRcbiAgICogQHJldHVybnMge0Jvb2xlYW59IGdvb2RUb0dvIC0gSWYgdGhlIGlucHV0IGlzIHZhbGlkIG9yIG5vdC5cbiAgICovXG4gIHZhbGlkYXRlSW5wdXQoJGVsKSB7XG4gICAgdmFyIGNsZWFyUmVxdWlyZSA9IHRoaXMucmVxdWlyZWRDaGVjaygkZWwpLFxuICAgICAgICB2YWxpZGF0ZWQgPSBmYWxzZSxcbiAgICAgICAgY3VzdG9tVmFsaWRhdG9yID0gdHJ1ZSxcbiAgICAgICAgdmFsaWRhdG9yID0gJGVsLmF0dHIoJ2RhdGEtdmFsaWRhdG9yJyksXG4gICAgICAgIGVxdWFsVG8gPSB0cnVlO1xuXG4gICAgLy8gZG9uJ3QgdmFsaWRhdGUgaWdub3JlZCBpbnB1dHMgb3IgaGlkZGVuIGlucHV0c1xuICAgIGlmICgkZWwuaXMoJ1tkYXRhLWFiaWRlLWlnbm9yZV0nKSB8fCAkZWwuaXMoJ1t0eXBlPVwiaGlkZGVuXCJdJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHN3aXRjaCAoJGVsWzBdLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3JhZGlvJzpcbiAgICAgICAgdmFsaWRhdGVkID0gdGhpcy52YWxpZGF0ZVJhZGlvKCRlbC5hdHRyKCduYW1lJykpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnY2hlY2tib3gnOlxuICAgICAgICB2YWxpZGF0ZWQgPSBjbGVhclJlcXVpcmU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgY2FzZSAnc2VsZWN0LW9uZSc6XG4gICAgICBjYXNlICdzZWxlY3QtbXVsdGlwbGUnOlxuICAgICAgICB2YWxpZGF0ZWQgPSBjbGVhclJlcXVpcmU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YWxpZGF0ZWQgPSB0aGlzLnZhbGlkYXRlVGV4dCgkZWwpO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgIGN1c3RvbVZhbGlkYXRvciA9IHRoaXMubWF0Y2hWYWxpZGF0aW9uKCRlbCwgdmFsaWRhdG9yLCAkZWwuYXR0cigncmVxdWlyZWQnKSk7XG4gICAgfVxuXG4gICAgaWYgKCRlbC5hdHRyKCdkYXRhLWVxdWFsdG8nKSkge1xuICAgICAgZXF1YWxUbyA9IHRoaXMub3B0aW9ucy52YWxpZGF0b3JzLmVxdWFsVG8oJGVsKTtcbiAgICB9XG5cblxuICAgIHZhciBnb29kVG9HbyA9IFtjbGVhclJlcXVpcmUsIHZhbGlkYXRlZCwgY3VzdG9tVmFsaWRhdG9yLCBlcXVhbFRvXS5pbmRleE9mKGZhbHNlKSA9PT0gLTE7XG4gICAgdmFyIG1lc3NhZ2UgPSAoZ29vZFRvR28gPyAndmFsaWQnIDogJ2ludmFsaWQnKSArICcuemYuYWJpZGUnO1xuXG4gICAgaWYgKGdvb2RUb0dvKSB7XG4gICAgICAvLyBSZS12YWxpZGF0ZSBpbnB1dHMgdGhhdCBkZXBlbmQgb24gdGhpcyBvbmUgd2l0aCBlcXVhbHRvXG4gICAgICBjb25zdCBkZXBlbmRlbnRFbGVtZW50cyA9IHRoaXMuJGVsZW1lbnQuZmluZChgW2RhdGEtZXF1YWx0bz1cIiR7JGVsLmF0dHIoJ2lkJyl9XCJdYCk7XG4gICAgICBpZiAoZGVwZW5kZW50RWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGxldCBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGRlcGVuZGVudEVsZW1lbnRzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKCQodGhpcykudmFsKCkpIHtcbiAgICAgICAgICAgIF90aGlzLnZhbGlkYXRlSW5wdXQoJCh0aGlzKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzW2dvb2RUb0dvID8gJ3JlbW92ZUVycm9yQ2xhc3NlcycgOiAnYWRkRXJyb3JDbGFzc2VzJ10oJGVsKTtcblxuICAgIC8qKlxuICAgICAqIEZpcmVzIHdoZW4gdGhlIGlucHV0IGlzIGRvbmUgY2hlY2tpbmcgZm9yIHZhbGlkYXRpb24uIEV2ZW50IHRyaWdnZXIgaXMgZWl0aGVyIGB2YWxpZC56Zi5hYmlkZWAgb3IgYGludmFsaWQuemYuYWJpZGVgXG4gICAgICogVHJpZ2dlciBpbmNsdWRlcyB0aGUgRE9NIGVsZW1lbnQgb2YgdGhlIGlucHV0LlxuICAgICAqIEBldmVudCBBYmlkZSN2YWxpZFxuICAgICAqIEBldmVudCBBYmlkZSNpbnZhbGlkXG4gICAgICovXG4gICAgJGVsLnRyaWdnZXIobWVzc2FnZSwgWyRlbF0pO1xuXG4gICAgcmV0dXJuIGdvb2RUb0dvO1xuICB9XG5cbiAgLyoqXG4gICAqIEdvZXMgdGhyb3VnaCBhIGZvcm0gYW5kIGlmIHRoZXJlIGFyZSBhbnkgaW52YWxpZCBpbnB1dHMsIGl0IHdpbGwgZGlzcGxheSB0aGUgZm9ybSBlcnJvciBlbGVtZW50XG4gICAqIEByZXR1cm5zIHtCb29sZWFufSBub0Vycm9yIC0gdHJ1ZSBpZiBubyBlcnJvcnMgd2VyZSBkZXRlY3RlZC4uLlxuICAgKiBAZmlyZXMgQWJpZGUjZm9ybXZhbGlkXG4gICAqIEBmaXJlcyBBYmlkZSNmb3JtaW52YWxpZFxuICAgKi9cbiAgdmFsaWRhdGVGb3JtKCkge1xuICAgIHZhciBhY2MgPSBbXTtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy4kaW5wdXRzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICBhY2MucHVzaChfdGhpcy52YWxpZGF0ZUlucHV0KCQodGhpcykpKTtcbiAgICB9KTtcblxuICAgIHZhciBub0Vycm9yID0gYWNjLmluZGV4T2YoZmFsc2UpID09PSAtMTtcblxuICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnW2RhdGEtYWJpZGUtZXJyb3JdJykuY3NzKCdkaXNwbGF5JywgKG5vRXJyb3IgPyAnbm9uZScgOiAnYmxvY2snKSk7XG5cbiAgICAvKipcbiAgICAgKiBGaXJlcyB3aGVuIHRoZSBmb3JtIGlzIGZpbmlzaGVkIHZhbGlkYXRpbmcuIEV2ZW50IHRyaWdnZXIgaXMgZWl0aGVyIGBmb3JtdmFsaWQuemYuYWJpZGVgIG9yIGBmb3JtaW52YWxpZC56Zi5hYmlkZWAuXG4gICAgICogVHJpZ2dlciBpbmNsdWRlcyB0aGUgZWxlbWVudCBvZiB0aGUgZm9ybS5cbiAgICAgKiBAZXZlbnQgQWJpZGUjZm9ybXZhbGlkXG4gICAgICogQGV2ZW50IEFiaWRlI2Zvcm1pbnZhbGlkXG4gICAgICovXG4gICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKChub0Vycm9yID8gJ2Zvcm12YWxpZCcgOiAnZm9ybWludmFsaWQnKSArICcuemYuYWJpZGUnLCBbdGhpcy4kZWxlbWVudF0pO1xuXG4gICAgcmV0dXJuIG5vRXJyb3I7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIGEgbm90IGEgdGV4dCBpbnB1dCBpcyB2YWxpZCBiYXNlZCBvbiB0aGUgcGF0dGVybiBzcGVjaWZpZWQgaW4gdGhlIGF0dHJpYnV0ZS4gSWYgbm8gbWF0Y2hpbmcgcGF0dGVybiBpcyBmb3VuZCwgcmV0dXJucyB0cnVlLlxuICAgKiBAcGFyYW0ge09iamVjdH0gJGVsIC0galF1ZXJ5IG9iamVjdCB0byB2YWxpZGF0ZSwgc2hvdWxkIGJlIGEgdGV4dCBpbnB1dCBIVE1MIGVsZW1lbnRcbiAgICogQHBhcmFtIHtTdHJpbmd9IHBhdHRlcm4gLSBzdHJpbmcgdmFsdWUgb2Ygb25lIG9mIHRoZSBSZWdFeCBwYXR0ZXJucyBpbiBBYmlkZS5vcHRpb25zLnBhdHRlcm5zXG4gICAqIEByZXR1cm5zIHtCb29sZWFufSBCb29sZWFuIHZhbHVlIGRlcGVuZHMgb24gd2hldGhlciBvciBub3QgdGhlIGlucHV0IHZhbHVlIG1hdGNoZXMgdGhlIHBhdHRlcm4gc3BlY2lmaWVkXG4gICAqL1xuICB2YWxpZGF0ZVRleHQoJGVsLCBwYXR0ZXJuKSB7XG4gICAgLy8gQSBwYXR0ZXJuIGNhbiBiZSBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiwgb3IgaXQgd2lsbCBiZSBpbmZlcmVkIGZyb20gdGhlIGlucHV0J3MgXCJwYXR0ZXJuXCIgYXR0cmlidXRlLCBvciBpdCdzIFwidHlwZVwiIGF0dHJpYnV0ZVxuICAgIHBhdHRlcm4gPSAocGF0dGVybiB8fCAkZWwuYXR0cigncGF0dGVybicpIHx8ICRlbC5hdHRyKCd0eXBlJykpO1xuICAgIHZhciBpbnB1dFRleHQgPSAkZWwudmFsKCk7XG4gICAgdmFyIHZhbGlkID0gZmFsc2U7XG5cbiAgICBpZiAoaW5wdXRUZXh0Lmxlbmd0aCkge1xuICAgICAgLy8gSWYgdGhlIHBhdHRlcm4gYXR0cmlidXRlIG9uIHRoZSBlbGVtZW50IGlzIGluIEFiaWRlJ3MgbGlzdCBvZiBwYXR0ZXJucywgdGhlbiB0ZXN0IHRoYXQgcmVnZXhwXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBhdHRlcm5zLmhhc093blByb3BlcnR5KHBhdHRlcm4pKSB7XG4gICAgICAgIHZhbGlkID0gdGhpcy5vcHRpb25zLnBhdHRlcm5zW3BhdHRlcm5dLnRlc3QoaW5wdXRUZXh0KTtcbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBwYXR0ZXJuIG5hbWUgaXNuJ3QgYWxzbyB0aGUgdHlwZSBhdHRyaWJ1dGUgb2YgdGhlIGZpZWxkLCB0aGVuIHRlc3QgaXQgYXMgYSByZWdleHBcbiAgICAgIGVsc2UgaWYgKHBhdHRlcm4gIT09ICRlbC5hdHRyKCd0eXBlJykpIHtcbiAgICAgICAgdmFsaWQgPSBuZXcgUmVnRXhwKHBhdHRlcm4pLnRlc3QoaW5wdXRUZXh0KTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB2YWxpZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEFuIGVtcHR5IGZpZWxkIGlzIHZhbGlkIGlmIGl0J3Mgbm90IHJlcXVpcmVkXG4gICAgZWxzZSBpZiAoISRlbC5wcm9wKCdyZXF1aXJlZCcpKSB7XG4gICAgICB2YWxpZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkO1xuICAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3IgYSBub3QgYSByYWRpbyBpbnB1dCBpcyB2YWxpZCBiYXNlZCBvbiB3aGV0aGVyIG9yIG5vdCBpdCBpcyByZXF1aXJlZCBhbmQgc2VsZWN0ZWQuIEFsdGhvdWdoIHRoZSBmdW5jdGlvbiB0YXJnZXRzIGEgc2luZ2xlIGA8aW5wdXQ+YCwgaXQgdmFsaWRhdGVzIGJ5IGNoZWNraW5nIHRoZSBgcmVxdWlyZWRgIGFuZCBgY2hlY2tlZGAgcHJvcGVydGllcyBvZiBhbGwgcmFkaW8gYnV0dG9ucyBpbiBpdHMgZ3JvdXAuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBncm91cE5hbWUgLSBBIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbmFtZSBvZiBhIHJhZGlvIGJ1dHRvbiBncm91cFxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gQm9vbGVhbiB2YWx1ZSBkZXBlbmRzIG9uIHdoZXRoZXIgb3Igbm90IGF0IGxlYXN0IG9uZSByYWRpbyBpbnB1dCBoYXMgYmVlbiBzZWxlY3RlZCAoaWYgaXQncyByZXF1aXJlZClcbiAgICovXG4gIHZhbGlkYXRlUmFkaW8oZ3JvdXBOYW1lKSB7XG4gICAgLy8gSWYgYXQgbGVhc3Qgb25lIHJhZGlvIGluIHRoZSBncm91cCBoYXMgdGhlIGByZXF1aXJlZGAgYXR0cmlidXRlLCB0aGUgZ3JvdXAgaXMgY29uc2lkZXJlZCByZXF1aXJlZFxuICAgIC8vIFBlciBXM0Mgc3BlYywgYWxsIHJhZGlvIGJ1dHRvbnMgaW4gYSBncm91cCBzaG91bGQgaGF2ZSBgcmVxdWlyZWRgLCBidXQgd2UncmUgYmVpbmcgbmljZVxuICAgIHZhciAkZ3JvdXAgPSB0aGlzLiRlbGVtZW50LmZpbmQoYDpyYWRpb1tuYW1lPVwiJHtncm91cE5hbWV9XCJdYCk7XG4gICAgdmFyIHZhbGlkID0gZmFsc2UsIHJlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvLyBGb3IgdGhlIGdyb3VwIHRvIGJlIHJlcXVpcmVkLCBhdCBsZWFzdCBvbmUgcmFkaW8gbmVlZHMgdG8gYmUgcmVxdWlyZWRcbiAgICAkZ3JvdXAuZWFjaCgoaSwgZSkgPT4ge1xuICAgICAgaWYgKCQoZSkuYXR0cigncmVxdWlyZWQnKSkge1xuICAgICAgICByZXF1aXJlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYoIXJlcXVpcmVkKSB2YWxpZD10cnVlO1xuXG4gICAgaWYgKCF2YWxpZCkge1xuICAgICAgLy8gRm9yIHRoZSBncm91cCB0byBiZSB2YWxpZCwgYXQgbGVhc3Qgb25lIHJhZGlvIG5lZWRzIHRvIGJlIGNoZWNrZWRcbiAgICAgICRncm91cC5lYWNoKChpLCBlKSA9PiB7XG4gICAgICAgIGlmICgkKGUpLnByb3AoJ2NoZWNrZWQnKSkge1xuICAgICAgICAgIHZhbGlkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgc2VsZWN0ZWQgaW5wdXQgcGFzc2VzIGEgY3VzdG9tIHZhbGlkYXRpb24gZnVuY3Rpb24uIE11bHRpcGxlIHZhbGlkYXRpb25zIGNhbiBiZSB1c2VkLCBpZiBwYXNzZWQgdG8gdGhlIGVsZW1lbnQgd2l0aCBgZGF0YS12YWxpZGF0b3I9XCJmb28gYmFyIGJhelwiYCBpbiBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0ZWQuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSAkZWwgLSBqUXVlcnkgaW5wdXQgZWxlbWVudC5cbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbGlkYXRvcnMgLSBhIHN0cmluZyBvZiBmdW5jdGlvbiBuYW1lcyBtYXRjaGluZyBmdW5jdGlvbnMgaW4gdGhlIEFiaWRlLm9wdGlvbnMudmFsaWRhdG9ycyBvYmplY3QuXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gcmVxdWlyZWQgLSBzZWxmIGV4cGxhbmF0b3J5P1xuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gLSB0cnVlIGlmIHZhbGlkYXRpb25zIHBhc3NlZC5cbiAgICovXG4gIG1hdGNoVmFsaWRhdGlvbigkZWwsIHZhbGlkYXRvcnMsIHJlcXVpcmVkKSB7XG4gICAgcmVxdWlyZWQgPSByZXF1aXJlZCA/IHRydWUgOiBmYWxzZTtcblxuICAgIHZhciBjbGVhciA9IHZhbGlkYXRvcnMuc3BsaXQoJyAnKS5tYXAoKHYpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMudmFsaWRhdG9yc1t2XSgkZWwsIHJlcXVpcmVkLCAkZWwucGFyZW50KCkpO1xuICAgIH0pO1xuICAgIHJldHVybiBjbGVhci5pbmRleE9mKGZhbHNlKSA9PT0gLTE7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIGZvcm0gaW5wdXRzIGFuZCBzdHlsZXNcbiAgICogQGZpcmVzIEFiaWRlI2Zvcm1yZXNldFxuICAgKi9cbiAgcmVzZXRGb3JtKCkge1xuICAgIHZhciAkZm9ybSA9IHRoaXMuJGVsZW1lbnQsXG4gICAgICAgIG9wdHMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAkKGAuJHtvcHRzLmxhYmVsRXJyb3JDbGFzc31gLCAkZm9ybSkubm90KCdzbWFsbCcpLnJlbW92ZUNsYXNzKG9wdHMubGFiZWxFcnJvckNsYXNzKTtcbiAgICAkKGAuJHtvcHRzLmlucHV0RXJyb3JDbGFzc31gLCAkZm9ybSkubm90KCdzbWFsbCcpLnJlbW92ZUNsYXNzKG9wdHMuaW5wdXRFcnJvckNsYXNzKTtcbiAgICAkKGAke29wdHMuZm9ybUVycm9yU2VsZWN0b3J9LiR7b3B0cy5mb3JtRXJyb3JDbGFzc31gKS5yZW1vdmVDbGFzcyhvcHRzLmZvcm1FcnJvckNsYXNzKTtcbiAgICAkZm9ybS5maW5kKCdbZGF0YS1hYmlkZS1lcnJvcl0nKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICQoJzppbnB1dCcsICRmb3JtKS5ub3QoJzpidXR0b24sIDpzdWJtaXQsIDpyZXNldCwgOmhpZGRlbiwgOnJhZGlvLCA6Y2hlY2tib3gsIFtkYXRhLWFiaWRlLWlnbm9yZV0nKS52YWwoJycpLnJlbW92ZUF0dHIoJ2RhdGEtaW52YWxpZCcpO1xuICAgICQoJzppbnB1dDpyYWRpbycsICRmb3JtKS5ub3QoJ1tkYXRhLWFiaWRlLWlnbm9yZV0nKS5wcm9wKCdjaGVja2VkJyxmYWxzZSkucmVtb3ZlQXR0cignZGF0YS1pbnZhbGlkJyk7XG4gICAgJCgnOmlucHV0OmNoZWNrYm94JywgJGZvcm0pLm5vdCgnW2RhdGEtYWJpZGUtaWdub3JlXScpLnByb3AoJ2NoZWNrZWQnLGZhbHNlKS5yZW1vdmVBdHRyKCdkYXRhLWludmFsaWQnKTtcbiAgICAvKipcbiAgICAgKiBGaXJlcyB3aGVuIHRoZSBmb3JtIGhhcyBiZWVuIHJlc2V0LlxuICAgICAqIEBldmVudCBBYmlkZSNmb3JtcmVzZXRcbiAgICAgKi9cbiAgICAkZm9ybS50cmlnZ2VyKCdmb3JtcmVzZXQuemYuYWJpZGUnLCBbJGZvcm1dKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBhbiBpbnN0YW5jZSBvZiBBYmlkZS5cbiAgICogUmVtb3ZlcyBlcnJvciBzdHlsZXMgYW5kIGNsYXNzZXMgZnJvbSBlbGVtZW50cywgd2l0aG91dCByZXNldHRpbmcgdGhlaXIgdmFsdWVzLlxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIHRoaXMuJGVsZW1lbnRcbiAgICAgIC5vZmYoJy5hYmlkZScpXG4gICAgICAuZmluZCgnW2RhdGEtYWJpZGUtZXJyb3JdJylcbiAgICAgICAgLmNzcygnZGlzcGxheScsICdub25lJyk7XG5cbiAgICB0aGlzLiRpbnB1dHNcbiAgICAgIC5vZmYoJy5hYmlkZScpXG4gICAgICAuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgX3RoaXMucmVtb3ZlRXJyb3JDbGFzc2VzKCQodGhpcykpO1xuICAgICAgfSk7XG5cbiAgICBGb3VuZGF0aW9uLnVucmVnaXN0ZXJQbHVnaW4odGhpcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBEZWZhdWx0IHNldHRpbmdzIGZvciBwbHVnaW5cbiAqL1xuQWJpZGUuZGVmYXVsdHMgPSB7XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBldmVudCB0byB2YWxpZGF0ZSBpbnB1dHMuIENoZWNrYm94ZXMgYW5kIHJhZGlvcyB2YWxpZGF0ZSBpbW1lZGlhdGVseS5cbiAgICogUmVtb3ZlIG9yIGNoYW5nZSB0aGlzIHZhbHVlIGZvciBtYW51YWwgdmFsaWRhdGlvbi5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAnZmllbGRDaGFuZ2UnXG4gICAqL1xuICB2YWxpZGF0ZU9uOiAnZmllbGRDaGFuZ2UnLFxuXG4gIC8qKlxuICAgKiBDbGFzcyB0byBiZSBhcHBsaWVkIHRvIGlucHV0IGxhYmVscyBvbiBmYWlsZWQgdmFsaWRhdGlvbi5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAnaXMtaW52YWxpZC1sYWJlbCdcbiAgICovXG4gIGxhYmVsRXJyb3JDbGFzczogJ2lzLWludmFsaWQtbGFiZWwnLFxuXG4gIC8qKlxuICAgKiBDbGFzcyB0byBiZSBhcHBsaWVkIHRvIGlucHV0cyBvbiBmYWlsZWQgdmFsaWRhdGlvbi5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAnaXMtaW52YWxpZC1pbnB1dCdcbiAgICovXG4gIGlucHV0RXJyb3JDbGFzczogJ2lzLWludmFsaWQtaW5wdXQnLFxuXG4gIC8qKlxuICAgKiBDbGFzcyBzZWxlY3RvciB0byB1c2UgdG8gdGFyZ2V0IEZvcm0gRXJyb3JzIGZvciBzaG93L2hpZGUuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgJy5mb3JtLWVycm9yJ1xuICAgKi9cbiAgZm9ybUVycm9yU2VsZWN0b3I6ICcuZm9ybS1lcnJvcicsXG5cbiAgLyoqXG4gICAqIENsYXNzIGFkZGVkIHRvIEZvcm0gRXJyb3JzIG9uIGZhaWxlZCB2YWxpZGF0aW9uLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlICdpcy12aXNpYmxlJ1xuICAgKi9cbiAgZm9ybUVycm9yQ2xhc3M6ICdpcy12aXNpYmxlJyxcblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gdmFsaWRhdGUgdGV4dCBpbnB1dHMgb24gYW55IHZhbHVlIGNoYW5nZS5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSBmYWxzZVxuICAgKi9cbiAgbGl2ZVZhbGlkYXRlOiBmYWxzZSxcblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gdmFsaWRhdGUgaW5wdXRzIG9uIGJsdXIuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIHZhbGlkYXRlT25CbHVyOiBmYWxzZSxcblxuICBwYXR0ZXJuczoge1xuICAgIGFscGhhIDogL15bYS16QS1aXSskLyxcbiAgICBhbHBoYV9udW1lcmljIDogL15bYS16QS1aMC05XSskLyxcbiAgICBpbnRlZ2VyIDogL15bLStdP1xcZCskLyxcbiAgICBudW1iZXIgOiAvXlstK10/XFxkKig/OltcXC5cXCxdXFxkKyk/JC8sXG5cbiAgICAvLyBhbWV4LCB2aXNhLCBkaW5lcnNcbiAgICBjYXJkIDogL14oPzo0WzAtOV17MTJ9KD86WzAtOV17M30pP3w1WzEtNV1bMC05XXsxNH18Nig/OjAxMXw1WzAtOV1bMC05XSlbMC05XXsxMn18M1s0N11bMC05XXsxM318Myg/OjBbMC01XXxbNjhdWzAtOV0pWzAtOV17MTF9fCg/OjIxMzF8MTgwMHwzNVxcZHszfSlcXGR7MTF9KSQvLFxuICAgIGN2diA6IC9eKFswLTldKXszLDR9JC8sXG5cbiAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9zdGF0ZXMtb2YtdGhlLXR5cGUtYXR0cmlidXRlLmh0bWwjdmFsaWQtZS1tYWlsLWFkZHJlc3NcbiAgICBlbWFpbCA6IC9eW2EtekEtWjAtOS4hIyQlJicqK1xcLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKyQvLFxuXG4gICAgdXJsIDogL14oaHR0cHM/fGZ0cHxmaWxlfHNzaCk6XFwvXFwvKCgoKFthLXpBLVpdfFxcZHwtfFxcLnxffH58W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pfCglW1xcZGEtZl17Mn0pfFshXFwkJidcXChcXClcXCpcXCssOz1dfDopKkApPygoKFxcZHxbMS05XVxcZHwxXFxkXFxkfDJbMC00XVxcZHwyNVswLTVdKVxcLihcXGR8WzEtOV1cXGR8MVxcZFxcZHwyWzAtNF1cXGR8MjVbMC01XSlcXC4oXFxkfFsxLTldXFxkfDFcXGRcXGR8MlswLTRdXFxkfDI1WzAtNV0pXFwuKFxcZHxbMS05XVxcZHwxXFxkXFxkfDJbMC00XVxcZHwyNVswLTVdKSl8KCgoW2EtekEtWl18XFxkfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKXwoKFthLXpBLVpdfFxcZHxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkoW2EtekEtWl18XFxkfC18XFwufF98fnxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkqKFthLXpBLVpdfFxcZHxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkpKVxcLikrKChbYS16QS1aXXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSl8KChbYS16QS1aXXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkoW2EtekEtWl18XFxkfC18XFwufF98fnxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkqKFthLXpBLVpdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSkpXFwuPykoOlxcZCopPykoXFwvKCgoW2EtekEtWl18XFxkfC18XFwufF98fnxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSl8KCVbXFxkYS1mXXsyfSl8WyFcXCQmJ1xcKFxcKVxcKlxcKyw7PV18OnxAKSsoXFwvKChbYS16QS1aXXxcXGR8LXxcXC58X3x+fFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKXwoJVtcXGRhLWZdezJ9KXxbIVxcJCYnXFwoXFwpXFwqXFwrLDs9XXw6fEApKikqKT8pPyhcXD8oKChbYS16QS1aXXxcXGR8LXxcXC58X3x+fFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKXwoJVtcXGRhLWZdezJ9KXxbIVxcJCYnXFwoXFwpXFwqXFwrLDs9XXw6fEApfFtcXHVFMDAwLVxcdUY4RkZdfFxcL3xcXD8pKik/KFxcIygoKFthLXpBLVpdfFxcZHwtfFxcLnxffH58W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pfCglW1xcZGEtZl17Mn0pfFshXFwkJidcXChcXClcXCpcXCssOz1dfDp8QCl8XFwvfFxcPykqKT8kLyxcbiAgICAvLyBhYmMuZGVcbiAgICBkb21haW4gOiAvXihbYS16QS1aMC05XShbYS16QS1aMC05XFwtXXswLDYxfVthLXpBLVowLTldKT9cXC4pK1thLXpBLVpdezIsOH0kLyxcblxuICAgIGRhdGV0aW1lIDogL14oWzAtMl1bMC05XXszfSlcXC0oWzAtMV1bMC05XSlcXC0oWzAtM11bMC05XSlUKFswLTVdWzAtOV0pXFw6KFswLTVdWzAtOV0pXFw6KFswLTVdWzAtOV0pKFp8KFtcXC1cXCtdKFswLTFdWzAtOV0pXFw6MDApKSQvLFxuICAgIC8vIFlZWVktTU0tRERcbiAgICBkYXRlIDogLyg/OjE5fDIwKVswLTldezJ9LSg/Oig/OjBbMS05XXwxWzAtMl0pLSg/OjBbMS05XXwxWzAtOV18MlswLTldKXwoPzooPyEwMikoPzowWzEtOV18MVswLTJdKS0oPzozMCkpfCg/Oig/OjBbMTM1NzhdfDFbMDJdKS0zMSkpJC8sXG4gICAgLy8gSEg6TU06U1NcbiAgICB0aW1lIDogL14oMFswLTldfDFbMC05XXwyWzAtM10pKDpbMC01XVswLTldKXsyfSQvLFxuICAgIGRhdGVJU08gOiAvXlxcZHs0fVtcXC9cXC1dXFxkezEsMn1bXFwvXFwtXVxcZHsxLDJ9JC8sXG4gICAgLy8gTU0vREQvWVlZWVxuICAgIG1vbnRoX2RheV95ZWFyIDogL14oMFsxLTldfDFbMDEyXSlbLSBcXC8uXSgwWzEtOV18WzEyXVswLTldfDNbMDFdKVstIFxcLy5dXFxkezR9JC8sXG4gICAgLy8gREQvTU0vWVlZWVxuICAgIGRheV9tb250aF95ZWFyIDogL14oMFsxLTldfFsxMl1bMC05XXwzWzAxXSlbLSBcXC8uXSgwWzEtOV18MVswMTJdKVstIFxcLy5dXFxkezR9JC8sXG5cbiAgICAvLyAjRkZGIG9yICNGRkZGRkZcbiAgICBjb2xvciA6IC9eIz8oW2EtZkEtRjAtOV17Nn18W2EtZkEtRjAtOV17M30pJC9cbiAgfSxcblxuICAvKipcbiAgICogT3B0aW9uYWwgdmFsaWRhdGlvbiBmdW5jdGlvbnMgdG8gYmUgdXNlZC4gYGVxdWFsVG9gIGJlaW5nIHRoZSBvbmx5IGRlZmF1bHQgaW5jbHVkZWQgZnVuY3Rpb24uXG4gICAqIEZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIG9ubHkgYSBib29sZWFuIGlmIHRoZSBpbnB1dCBpcyB2YWxpZCBvciBub3QuIEZ1bmN0aW9ucyBhcmUgZ2l2ZW4gdGhlIGZvbGxvd2luZyBhcmd1bWVudHM6XG4gICAqIGVsIDogVGhlIGpRdWVyeSBlbGVtZW50IHRvIHZhbGlkYXRlLlxuICAgKiByZXF1aXJlZCA6IEJvb2xlYW4gdmFsdWUgb2YgdGhlIHJlcXVpcmVkIGF0dHJpYnV0ZSBiZSBwcmVzZW50IG9yIG5vdC5cbiAgICogcGFyZW50IDogVGhlIGRpcmVjdCBwYXJlbnQgb2YgdGhlIGlucHV0LlxuICAgKiBAb3B0aW9uXG4gICAqL1xuICB2YWxpZGF0b3JzOiB7XG4gICAgZXF1YWxUbzogZnVuY3Rpb24gKGVsLCByZXF1aXJlZCwgcGFyZW50KSB7XG4gICAgICByZXR1cm4gJChgIyR7ZWwuYXR0cignZGF0YS1lcXVhbHRvJyl9YCkudmFsKCkgPT09IGVsLnZhbCgpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBXaW5kb3cgZXhwb3J0c1xuRm91bmRhdGlvbi5wbHVnaW4oQWJpZGUsICdBYmlkZScpO1xuXG59KGpRdWVyeSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbiFmdW5jdGlvbigkKSB7XG5cbi8qKlxuICogQWNjb3JkaW9uIG1vZHVsZS5cbiAqIEBtb2R1bGUgZm91bmRhdGlvbi5hY2NvcmRpb25cbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwua2V5Ym9hcmRcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwubW90aW9uXG4gKi9cblxuY2xhc3MgQWNjb3JkaW9uIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgYW4gYWNjb3JkaW9uLlxuICAgKiBAY2xhc3NcbiAgICogQGZpcmVzIEFjY29yZGlvbiNpbml0XG4gICAqIEBwYXJhbSB7alF1ZXJ5fSBlbGVtZW50IC0galF1ZXJ5IG9iamVjdCB0byBtYWtlIGludG8gYW4gYWNjb3JkaW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGEgcGxhaW4gb2JqZWN0IHdpdGggc2V0dGluZ3MgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgb3B0aW9ucy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRlbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgQWNjb3JkaW9uLmRlZmF1bHRzLCB0aGlzLiRlbGVtZW50LmRhdGEoKSwgb3B0aW9ucyk7XG5cbiAgICB0aGlzLl9pbml0KCk7XG5cbiAgICBGb3VuZGF0aW9uLnJlZ2lzdGVyUGx1Z2luKHRoaXMsICdBY2NvcmRpb24nKTtcbiAgICBGb3VuZGF0aW9uLktleWJvYXJkLnJlZ2lzdGVyKCdBY2NvcmRpb24nLCB7XG4gICAgICAnRU5URVInOiAndG9nZ2xlJyxcbiAgICAgICdTUEFDRSc6ICd0b2dnbGUnLFxuICAgICAgJ0FSUk9XX0RPV04nOiAnbmV4dCcsXG4gICAgICAnQVJST1dfVVAnOiAncHJldmlvdXMnXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGFjY29yZGlvbiBieSBhbmltYXRpbmcgdGhlIHByZXNldCBhY3RpdmUgcGFuZShzKS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9pbml0KCkge1xuICAgIHRoaXMuJGVsZW1lbnQuYXR0cigncm9sZScsICd0YWJsaXN0Jyk7XG4gICAgdGhpcy4kdGFicyA9IHRoaXMuJGVsZW1lbnQuY2hpbGRyZW4oJ1tkYXRhLWFjY29yZGlvbi1pdGVtXScpO1xuXG4gICAgdGhpcy4kdGFicy5lYWNoKGZ1bmN0aW9uKGlkeCwgZWwpIHtcbiAgICAgIHZhciAkZWwgPSAkKGVsKSxcbiAgICAgICAgICAkY29udGVudCA9ICRlbC5jaGlsZHJlbignW2RhdGEtdGFiLWNvbnRlbnRdJyksXG4gICAgICAgICAgaWQgPSAkY29udGVudFswXS5pZCB8fCBGb3VuZGF0aW9uLkdldFlvRGlnaXRzKDYsICdhY2NvcmRpb24nKSxcbiAgICAgICAgICBsaW5rSWQgPSBlbC5pZCB8fCBgJHtpZH0tbGFiZWxgO1xuXG4gICAgICAkZWwuZmluZCgnYTpmaXJzdCcpLmF0dHIoe1xuICAgICAgICAnYXJpYS1jb250cm9scyc6IGlkLFxuICAgICAgICAncm9sZSc6ICd0YWInLFxuICAgICAgICAnaWQnOiBsaW5rSWQsXG4gICAgICAgICdhcmlhLWV4cGFuZGVkJzogZmFsc2UsXG4gICAgICAgICdhcmlhLXNlbGVjdGVkJzogZmFsc2VcbiAgICAgIH0pO1xuXG4gICAgICAkY29udGVudC5hdHRyKHsncm9sZSc6ICd0YWJwYW5lbCcsICdhcmlhLWxhYmVsbGVkYnknOiBsaW5rSWQsICdhcmlhLWhpZGRlbic6IHRydWUsICdpZCc6IGlkfSk7XG4gICAgfSk7XG4gICAgdmFyICRpbml0QWN0aXZlID0gdGhpcy4kZWxlbWVudC5maW5kKCcuaXMtYWN0aXZlJykuY2hpbGRyZW4oJ1tkYXRhLXRhYi1jb250ZW50XScpO1xuICAgIGlmKCRpbml0QWN0aXZlLmxlbmd0aCl7XG4gICAgICB0aGlzLmRvd24oJGluaXRBY3RpdmUsIHRydWUpO1xuICAgIH1cbiAgICB0aGlzLl9ldmVudHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGV2ZW50IGhhbmRsZXJzIGZvciBpdGVtcyB3aXRoaW4gdGhlIGFjY29yZGlvbi5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9ldmVudHMoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuJHRhYnMuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgIHZhciAkZWxlbSA9ICQodGhpcyk7XG4gICAgICB2YXIgJHRhYkNvbnRlbnQgPSAkZWxlbS5jaGlsZHJlbignW2RhdGEtdGFiLWNvbnRlbnRdJyk7XG4gICAgICBpZiAoJHRhYkNvbnRlbnQubGVuZ3RoKSB7XG4gICAgICAgICRlbGVtLmNoaWxkcmVuKCdhJykub2ZmKCdjbGljay56Zi5hY2NvcmRpb24ga2V5ZG93bi56Zi5hY2NvcmRpb24nKVxuICAgICAgICAgICAgICAgLm9uKCdjbGljay56Zi5hY2NvcmRpb24nLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIF90aGlzLnRvZ2dsZSgkdGFiQ29udGVudCk7XG4gICAgICAgIH0pLm9uKCdrZXlkb3duLnpmLmFjY29yZGlvbicsIGZ1bmN0aW9uKGUpe1xuICAgICAgICAgIEZvdW5kYXRpb24uS2V5Ym9hcmQuaGFuZGxlS2V5KGUsICdBY2NvcmRpb24nLCB7XG4gICAgICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICBfdGhpcy50b2dnbGUoJHRhYkNvbnRlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICB2YXIgJGEgPSAkZWxlbS5uZXh0KCkuZmluZCgnYScpLmZvY3VzKCk7XG4gICAgICAgICAgICAgIGlmICghX3RoaXMub3B0aW9ucy5tdWx0aUV4cGFuZCkge1xuICAgICAgICAgICAgICAgICRhLnRyaWdnZXIoJ2NsaWNrLnpmLmFjY29yZGlvbicpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmV2aW91czogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHZhciAkYSA9ICRlbGVtLnByZXYoKS5maW5kKCdhJykuZm9jdXMoKTtcbiAgICAgICAgICAgICAgaWYgKCFfdGhpcy5vcHRpb25zLm11bHRpRXhwYW5kKSB7XG4gICAgICAgICAgICAgICAgJGEudHJpZ2dlcignY2xpY2suemYuYWNjb3JkaW9uJylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhbmRsZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHNlbGVjdGVkIGNvbnRlbnQgcGFuZSdzIG9wZW4vY2xvc2Ugc3RhdGUuXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkdGFyZ2V0IC0galF1ZXJ5IG9iamVjdCBvZiB0aGUgcGFuZSB0byB0b2dnbGUgKGAuYWNjb3JkaW9uLWNvbnRlbnRgKS5cbiAgICogQGZ1bmN0aW9uXG4gICAqL1xuICB0b2dnbGUoJHRhcmdldCkge1xuICAgIGlmKCR0YXJnZXQucGFyZW50KCkuaGFzQ2xhc3MoJ2lzLWFjdGl2ZScpKSB7XG4gICAgICB0aGlzLnVwKCR0YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRvd24oJHRhcmdldCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBhY2NvcmRpb24gdGFiIGRlZmluZWQgYnkgYCR0YXJnZXRgLlxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJHRhcmdldCAtIEFjY29yZGlvbiBwYW5lIHRvIG9wZW4gKGAuYWNjb3JkaW9uLWNvbnRlbnRgKS5cbiAgICogQHBhcmFtIHtCb29sZWFufSBmaXJzdFRpbWUgLSBmbGFnIHRvIGRldGVybWluZSBpZiByZWZsb3cgc2hvdWxkIGhhcHBlbi5cbiAgICogQGZpcmVzIEFjY29yZGlvbiNkb3duXG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgZG93bigkdGFyZ2V0LCBmaXJzdFRpbWUpIHtcbiAgICAkdGFyZ2V0XG4gICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCBmYWxzZSlcbiAgICAgIC5wYXJlbnQoJ1tkYXRhLXRhYi1jb250ZW50XScpXG4gICAgICAuYWRkQmFjaygpXG4gICAgICAucGFyZW50KCkuYWRkQ2xhc3MoJ2lzLWFjdGl2ZScpO1xuXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMubXVsdGlFeHBhbmQgJiYgIWZpcnN0VGltZSkge1xuICAgICAgdmFyICRjdXJyZW50QWN0aXZlID0gdGhpcy4kZWxlbWVudC5jaGlsZHJlbignLmlzLWFjdGl2ZScpLmNoaWxkcmVuKCdbZGF0YS10YWItY29udGVudF0nKTtcbiAgICAgIGlmICgkY3VycmVudEFjdGl2ZS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy51cCgkY3VycmVudEFjdGl2ZS5ub3QoJHRhcmdldCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgICR0YXJnZXQuc2xpZGVEb3duKHRoaXMub3B0aW9ucy5zbGlkZVNwZWVkLCAoKSA9PiB7XG4gICAgICAvKipcbiAgICAgICAqIEZpcmVzIHdoZW4gdGhlIHRhYiBpcyBkb25lIG9wZW5pbmcuXG4gICAgICAgKiBAZXZlbnQgQWNjb3JkaW9uI2Rvd25cbiAgICAgICAqL1xuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdkb3duLnpmLmFjY29yZGlvbicsIFskdGFyZ2V0XSk7XG4gICAgfSk7XG5cbiAgICAkKGAjJHskdGFyZ2V0LmF0dHIoJ2FyaWEtbGFiZWxsZWRieScpfWApLmF0dHIoe1xuICAgICAgJ2FyaWEtZXhwYW5kZWQnOiB0cnVlLFxuICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSB0YWIgZGVmaW5lZCBieSBgJHRhcmdldGAuXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkdGFyZ2V0IC0gQWNjb3JkaW9uIHRhYiB0byBjbG9zZSAoYC5hY2NvcmRpb24tY29udGVudGApLlxuICAgKiBAZmlyZXMgQWNjb3JkaW9uI3VwXG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgdXAoJHRhcmdldCkge1xuICAgIHZhciAkYXVudHMgPSAkdGFyZ2V0LnBhcmVudCgpLnNpYmxpbmdzKCksXG4gICAgICAgIF90aGlzID0gdGhpcztcblxuICAgIGlmKCghdGhpcy5vcHRpb25zLmFsbG93QWxsQ2xvc2VkICYmICEkYXVudHMuaGFzQ2xhc3MoJ2lzLWFjdGl2ZScpKSB8fCAhJHRhcmdldC5wYXJlbnQoKS5oYXNDbGFzcygnaXMtYWN0aXZlJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBGb3VuZGF0aW9uLk1vdmUodGhpcy5vcHRpb25zLnNsaWRlU3BlZWQsICR0YXJnZXQsIGZ1bmN0aW9uKCl7XG4gICAgICAkdGFyZ2V0LnNsaWRlVXAoX3RoaXMub3B0aW9ucy5zbGlkZVNwZWVkLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGaXJlcyB3aGVuIHRoZSB0YWIgaXMgZG9uZSBjb2xsYXBzaW5nIHVwLlxuICAgICAgICAgKiBAZXZlbnQgQWNjb3JkaW9uI3VwXG4gICAgICAgICAqL1xuICAgICAgICBfdGhpcy4kZWxlbWVudC50cmlnZ2VyKCd1cC56Zi5hY2NvcmRpb24nLCBbJHRhcmdldF0pO1xuICAgICAgfSk7XG4gICAgLy8gfSk7XG5cbiAgICAkdGFyZ2V0LmF0dHIoJ2FyaWEtaGlkZGVuJywgdHJ1ZSlcbiAgICAgICAgICAgLnBhcmVudCgpLnJlbW92ZUNsYXNzKCdpcy1hY3RpdmUnKTtcblxuICAgICQoYCMkeyR0YXJnZXQuYXR0cignYXJpYS1sYWJlbGxlZGJ5Jyl9YCkuYXR0cih7XG4gICAgICdhcmlhLWV4cGFuZGVkJzogZmFsc2UsXG4gICAgICdhcmlhLXNlbGVjdGVkJzogZmFsc2VcbiAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGFuIGluc3RhbmNlIG9mIGFuIGFjY29yZGlvbi5cbiAgICogQGZpcmVzIEFjY29yZGlvbiNkZXN0cm95ZWRcbiAgICogQGZ1bmN0aW9uXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnW2RhdGEtdGFiLWNvbnRlbnRdJykuc3RvcCh0cnVlKS5zbGlkZVVwKDApLmNzcygnZGlzcGxheScsICcnKTtcbiAgICB0aGlzLiRlbGVtZW50LmZpbmQoJ2EnKS5vZmYoJy56Zi5hY2NvcmRpb24nKTtcblxuICAgIEZvdW5kYXRpb24udW5yZWdpc3RlclBsdWdpbih0aGlzKTtcbiAgfVxufVxuXG5BY2NvcmRpb24uZGVmYXVsdHMgPSB7XG4gIC8qKlxuICAgKiBBbW91bnQgb2YgdGltZSB0byBhbmltYXRlIHRoZSBvcGVuaW5nIG9mIGFuIGFjY29yZGlvbiBwYW5lLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIDI1MFxuICAgKi9cbiAgc2xpZGVTcGVlZDogMjUwLFxuICAvKipcbiAgICogQWxsb3cgdGhlIGFjY29yZGlvbiB0byBoYXZlIG11bHRpcGxlIG9wZW4gcGFuZXMuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIG11bHRpRXhwYW5kOiBmYWxzZSxcbiAgLyoqXG4gICAqIEFsbG93IHRoZSBhY2NvcmRpb24gdG8gY2xvc2UgYWxsIHBhbmVzLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIGZhbHNlXG4gICAqL1xuICBhbGxvd0FsbENsb3NlZDogZmFsc2Vcbn07XG5cbi8vIFdpbmRvdyBleHBvcnRzXG5Gb3VuZGF0aW9uLnBsdWdpbihBY2NvcmRpb24sICdBY2NvcmRpb24nKTtcblxufShqUXVlcnkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4hZnVuY3Rpb24oJCkge1xuXG4vKipcbiAqIEFjY29yZGlvbk1lbnUgbW9kdWxlLlxuICogQG1vZHVsZSBmb3VuZGF0aW9uLmFjY29yZGlvbk1lbnVcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwua2V5Ym9hcmRcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwubW90aW9uXG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLm5lc3RcbiAqL1xuXG5jbGFzcyBBY2NvcmRpb25NZW51IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgYW4gYWNjb3JkaW9uIG1lbnUuXG4gICAqIEBjbGFzc1xuICAgKiBAZmlyZXMgQWNjb3JkaW9uTWVudSNpbml0XG4gICAqIEBwYXJhbSB7alF1ZXJ5fSBlbGVtZW50IC0galF1ZXJ5IG9iamVjdCB0byBtYWtlIGludG8gYW4gYWNjb3JkaW9uIG1lbnUuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gT3ZlcnJpZGVzIHRvIHRoZSBkZWZhdWx0IHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRlbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgQWNjb3JkaW9uTWVudS5kZWZhdWx0cywgdGhpcy4kZWxlbWVudC5kYXRhKCksIG9wdGlvbnMpO1xuXG4gICAgRm91bmRhdGlvbi5OZXN0LkZlYXRoZXIodGhpcy4kZWxlbWVudCwgJ2FjY29yZGlvbicpO1xuXG4gICAgdGhpcy5faW5pdCgpO1xuXG4gICAgRm91bmRhdGlvbi5yZWdpc3RlclBsdWdpbih0aGlzLCAnQWNjb3JkaW9uTWVudScpO1xuICAgIEZvdW5kYXRpb24uS2V5Ym9hcmQucmVnaXN0ZXIoJ0FjY29yZGlvbk1lbnUnLCB7XG4gICAgICAnRU5URVInOiAndG9nZ2xlJyxcbiAgICAgICdTUEFDRSc6ICd0b2dnbGUnLFxuICAgICAgJ0FSUk9XX1JJR0hUJzogJ29wZW4nLFxuICAgICAgJ0FSUk9XX1VQJzogJ3VwJyxcbiAgICAgICdBUlJPV19ET1dOJzogJ2Rvd24nLFxuICAgICAgJ0FSUk9XX0xFRlQnOiAnY2xvc2UnLFxuICAgICAgJ0VTQ0FQRSc6ICdjbG9zZUFsbCdcbiAgICB9KTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGFjY29yZGlvbiBtZW51IGJ5IGhpZGluZyBhbGwgbmVzdGVkIG1lbnVzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2luaXQoKSB7XG4gICAgdGhpcy4kZWxlbWVudC5maW5kKCdbZGF0YS1zdWJtZW51XScpLm5vdCgnLmlzLWFjdGl2ZScpLnNsaWRlVXAoMCk7Ly8uZmluZCgnYScpLmNzcygncGFkZGluZy1sZWZ0JywgJzFyZW0nKTtcbiAgICB0aGlzLiRlbGVtZW50LmF0dHIoe1xuICAgICAgJ3JvbGUnOiAnbWVudScsXG4gICAgICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiB0aGlzLm9wdGlvbnMubXVsdGlPcGVuXG4gICAgfSk7XG5cbiAgICB0aGlzLiRtZW51TGlua3MgPSB0aGlzLiRlbGVtZW50LmZpbmQoJy5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQnKTtcbiAgICB0aGlzLiRtZW51TGlua3MuZWFjaChmdW5jdGlvbigpe1xuICAgICAgdmFyIGxpbmtJZCA9IHRoaXMuaWQgfHwgRm91bmRhdGlvbi5HZXRZb0RpZ2l0cyg2LCAnYWNjLW1lbnUtbGluaycpLFxuICAgICAgICAgICRlbGVtID0gJCh0aGlzKSxcbiAgICAgICAgICAkc3ViID0gJGVsZW0uY2hpbGRyZW4oJ1tkYXRhLXN1Ym1lbnVdJyksXG4gICAgICAgICAgc3ViSWQgPSAkc3ViWzBdLmlkIHx8IEZvdW5kYXRpb24uR2V0WW9EaWdpdHMoNiwgJ2FjYy1tZW51JyksXG4gICAgICAgICAgaXNBY3RpdmUgPSAkc3ViLmhhc0NsYXNzKCdpcy1hY3RpdmUnKTtcbiAgICAgICRlbGVtLmF0dHIoe1xuICAgICAgICAnYXJpYS1jb250cm9scyc6IHN1YklkLFxuICAgICAgICAnYXJpYS1leHBhbmRlZCc6IGlzQWN0aXZlLFxuICAgICAgICAncm9sZSc6ICdtZW51aXRlbScsXG4gICAgICAgICdpZCc6IGxpbmtJZFxuICAgICAgfSk7XG4gICAgICAkc3ViLmF0dHIoe1xuICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogbGlua0lkLFxuICAgICAgICAnYXJpYS1oaWRkZW4nOiAhaXNBY3RpdmUsXG4gICAgICAgICdyb2xlJzogJ21lbnUnLFxuICAgICAgICAnaWQnOiBzdWJJZFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdmFyIGluaXRQYW5lcyA9IHRoaXMuJGVsZW1lbnQuZmluZCgnLmlzLWFjdGl2ZScpO1xuICAgIGlmKGluaXRQYW5lcy5sZW5ndGgpe1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgIGluaXRQYW5lcy5lYWNoKGZ1bmN0aW9uKCl7XG4gICAgICAgIF90aGlzLmRvd24oJCh0aGlzKSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5fZXZlbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBldmVudCBoYW5kbGVycyBmb3IgaXRlbXMgd2l0aGluIHRoZSBtZW51LlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2V2ZW50cygpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy4kZWxlbWVudC5maW5kKCdsaScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgJHN1Ym1lbnUgPSAkKHRoaXMpLmNoaWxkcmVuKCdbZGF0YS1zdWJtZW51XScpO1xuXG4gICAgICBpZiAoJHN1Ym1lbnUubGVuZ3RoKSB7XG4gICAgICAgICQodGhpcykuY2hpbGRyZW4oJ2EnKS5vZmYoJ2NsaWNrLnpmLmFjY29yZGlvbk1lbnUnKS5vbignY2xpY2suemYuYWNjb3JkaW9uTWVudScsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICBfdGhpcy50b2dnbGUoJHN1Ym1lbnUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KS5vbigna2V5ZG93bi56Zi5hY2NvcmRpb25tZW51JywgZnVuY3Rpb24oZSl7XG4gICAgICB2YXIgJGVsZW1lbnQgPSAkKHRoaXMpLFxuICAgICAgICAgICRlbGVtZW50cyA9ICRlbGVtZW50LnBhcmVudCgndWwnKS5jaGlsZHJlbignbGknKSxcbiAgICAgICAgICAkcHJldkVsZW1lbnQsXG4gICAgICAgICAgJG5leHRFbGVtZW50LFxuICAgICAgICAgICR0YXJnZXQgPSAkZWxlbWVudC5jaGlsZHJlbignW2RhdGEtc3VibWVudV0nKTtcblxuICAgICAgJGVsZW1lbnRzLmVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgICBpZiAoJCh0aGlzKS5pcygkZWxlbWVudCkpIHtcbiAgICAgICAgICAkcHJldkVsZW1lbnQgPSAkZWxlbWVudHMuZXEoTWF0aC5tYXgoMCwgaS0xKSkuZmluZCgnYScpLmZpcnN0KCk7XG4gICAgICAgICAgJG5leHRFbGVtZW50ID0gJGVsZW1lbnRzLmVxKE1hdGgubWluKGkrMSwgJGVsZW1lbnRzLmxlbmd0aC0xKSkuZmluZCgnYScpLmZpcnN0KCk7XG5cbiAgICAgICAgICBpZiAoJCh0aGlzKS5jaGlsZHJlbignW2RhdGEtc3VibWVudV06dmlzaWJsZScpLmxlbmd0aCkgeyAvLyBoYXMgb3BlbiBzdWIgbWVudVxuICAgICAgICAgICAgJG5leHRFbGVtZW50ID0gJGVsZW1lbnQuZmluZCgnbGk6Zmlyc3QtY2hpbGQnKS5maW5kKCdhJykuZmlyc3QoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCQodGhpcykuaXMoJzpmaXJzdC1jaGlsZCcpKSB7IC8vIGlzIGZpcnN0IGVsZW1lbnQgb2Ygc3ViIG1lbnVcbiAgICAgICAgICAgICRwcmV2RWxlbWVudCA9ICRlbGVtZW50LnBhcmVudHMoJ2xpJykuZmlyc3QoKS5maW5kKCdhJykuZmlyc3QoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCRwcmV2RWxlbWVudC5wYXJlbnRzKCdsaScpLmZpcnN0KCkuY2hpbGRyZW4oJ1tkYXRhLXN1Ym1lbnVdOnZpc2libGUnKS5sZW5ndGgpIHsgLy8gaWYgcHJldmlvdXMgZWxlbWVudCBoYXMgb3BlbiBzdWIgbWVudVxuICAgICAgICAgICAgJHByZXZFbGVtZW50ID0gJHByZXZFbGVtZW50LnBhcmVudHMoJ2xpJykuZmluZCgnbGk6bGFzdC1jaGlsZCcpLmZpbmQoJ2EnKS5maXJzdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoJCh0aGlzKS5pcygnOmxhc3QtY2hpbGQnKSkgeyAvLyBpcyBsYXN0IGVsZW1lbnQgb2Ygc3ViIG1lbnVcbiAgICAgICAgICAgICRuZXh0RWxlbWVudCA9ICRlbGVtZW50LnBhcmVudHMoJ2xpJykuZmlyc3QoKS5uZXh0KCdsaScpLmZpbmQoJ2EnKS5maXJzdCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIEZvdW5kYXRpb24uS2V5Ym9hcmQuaGFuZGxlS2V5KGUsICdBY2NvcmRpb25NZW51Jywge1xuICAgICAgICBvcGVuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBpZiAoJHRhcmdldC5pcygnOmhpZGRlbicpKSB7XG4gICAgICAgICAgICBfdGhpcy5kb3duKCR0YXJnZXQpO1xuICAgICAgICAgICAgJHRhcmdldC5maW5kKCdsaScpLmZpcnN0KCkuZmluZCgnYScpLmZpcnN0KCkuZm9jdXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBpZiAoJHRhcmdldC5sZW5ndGggJiYgISR0YXJnZXQuaXMoJzpoaWRkZW4nKSkgeyAvLyBjbG9zZSBhY3RpdmUgc3ViIG9mIHRoaXMgaXRlbVxuICAgICAgICAgICAgX3RoaXMudXAoJHRhcmdldCk7XG4gICAgICAgICAgfSBlbHNlIGlmICgkZWxlbWVudC5wYXJlbnQoJ1tkYXRhLXN1Ym1lbnVdJykubGVuZ3RoKSB7IC8vIGNsb3NlIGN1cnJlbnRseSBvcGVuIHN1YlxuICAgICAgICAgICAgX3RoaXMudXAoJGVsZW1lbnQucGFyZW50KCdbZGF0YS1zdWJtZW51XScpKTtcbiAgICAgICAgICAgICRlbGVtZW50LnBhcmVudHMoJ2xpJykuZmlyc3QoKS5maW5kKCdhJykuZmlyc3QoKS5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdXA6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICRwcmV2RWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBkb3duOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAkbmV4dEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgdG9nZ2xlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBpZiAoJGVsZW1lbnQuY2hpbGRyZW4oJ1tkYXRhLXN1Ym1lbnVdJykubGVuZ3RoKSB7XG4gICAgICAgICAgICBfdGhpcy50b2dnbGUoJGVsZW1lbnQuY2hpbGRyZW4oJ1tkYXRhLXN1Ym1lbnVdJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2xvc2VBbGw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIF90aGlzLmhpZGVBbGwoKTtcbiAgICAgICAgfSxcbiAgICAgICAgaGFuZGxlZDogZnVuY3Rpb24ocHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgICBpZiAocHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7Ly8uYXR0cigndGFiaW5kZXgnLCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgYWxsIHBhbmVzIG9mIHRoZSBtZW51LlxuICAgKiBAZnVuY3Rpb25cbiAgICovXG4gIGhpZGVBbGwoKSB7XG4gICAgdGhpcy51cCh0aGlzLiRlbGVtZW50LmZpbmQoJ1tkYXRhLXN1Ym1lbnVdJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGFsbCBwYW5lcyBvZiB0aGUgbWVudS5cbiAgICogQGZ1bmN0aW9uXG4gICAqL1xuICBzaG93QWxsKCkge1xuICAgIHRoaXMuZG93bih0aGlzLiRlbGVtZW50LmZpbmQoJ1tkYXRhLXN1Ym1lbnVdJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIG9wZW4vY2xvc2Ugc3RhdGUgb2YgYSBzdWJtZW51LlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHBhcmFtIHtqUXVlcnl9ICR0YXJnZXQgLSB0aGUgc3VibWVudSB0byB0b2dnbGVcbiAgICovXG4gIHRvZ2dsZSgkdGFyZ2V0KXtcbiAgICBpZighJHRhcmdldC5pcygnOmFuaW1hdGVkJykpIHtcbiAgICAgIGlmICghJHRhcmdldC5pcygnOmhpZGRlbicpKSB7XG4gICAgICAgIHRoaXMudXAoJHRhcmdldCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5kb3duKCR0YXJnZXQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgc3ViLW1lbnUgZGVmaW5lZCBieSBgJHRhcmdldGAuXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkdGFyZ2V0IC0gU3ViLW1lbnUgdG8gb3Blbi5cbiAgICogQGZpcmVzIEFjY29yZGlvbk1lbnUjZG93blxuICAgKi9cbiAgZG93bigkdGFyZ2V0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmKCF0aGlzLm9wdGlvbnMubXVsdGlPcGVuKSB7XG4gICAgICB0aGlzLnVwKHRoaXMuJGVsZW1lbnQuZmluZCgnLmlzLWFjdGl2ZScpLm5vdCgkdGFyZ2V0LnBhcmVudHNVbnRpbCh0aGlzLiRlbGVtZW50KS5hZGQoJHRhcmdldCkpKTtcbiAgICB9XG5cbiAgICAkdGFyZ2V0LmFkZENsYXNzKCdpcy1hY3RpdmUnKS5hdHRyKHsnYXJpYS1oaWRkZW4nOiBmYWxzZX0pXG4gICAgICAucGFyZW50KCcuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50JykuYXR0cih7J2FyaWEtZXhwYW5kZWQnOiB0cnVlfSk7XG5cbiAgICAgIC8vRm91bmRhdGlvbi5Nb3ZlKHRoaXMub3B0aW9ucy5zbGlkZVNwZWVkLCAkdGFyZ2V0LCBmdW5jdGlvbigpIHtcbiAgICAgICAgJHRhcmdldC5zbGlkZURvd24oX3RoaXMub3B0aW9ucy5zbGlkZVNwZWVkLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRmlyZXMgd2hlbiB0aGUgbWVudSBpcyBkb25lIG9wZW5pbmcuXG4gICAgICAgICAgICogQGV2ZW50IEFjY29yZGlvbk1lbnUjZG93blxuICAgICAgICAgICAqL1xuICAgICAgICAgIF90aGlzLiRlbGVtZW50LnRyaWdnZXIoJ2Rvd24uemYuYWNjb3JkaW9uTWVudScsIFskdGFyZ2V0XSk7XG4gICAgICAgIH0pO1xuICAgICAgLy99KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIHN1Yi1tZW51IGRlZmluZWQgYnkgYCR0YXJnZXRgLiBBbGwgc3ViLW1lbnVzIGluc2lkZSB0aGUgdGFyZ2V0IHdpbGwgYmUgY2xvc2VkIGFzIHdlbGwuXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkdGFyZ2V0IC0gU3ViLW1lbnUgdG8gY2xvc2UuXG4gICAqIEBmaXJlcyBBY2NvcmRpb25NZW51I3VwXG4gICAqL1xuICB1cCgkdGFyZ2V0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAvL0ZvdW5kYXRpb24uTW92ZSh0aGlzLm9wdGlvbnMuc2xpZGVTcGVlZCwgJHRhcmdldCwgZnVuY3Rpb24oKXtcbiAgICAgICR0YXJnZXQuc2xpZGVVcChfdGhpcy5vcHRpb25zLnNsaWRlU3BlZWQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZpcmVzIHdoZW4gdGhlIG1lbnUgaXMgZG9uZSBjb2xsYXBzaW5nIHVwLlxuICAgICAgICAgKiBAZXZlbnQgQWNjb3JkaW9uTWVudSN1cFxuICAgICAgICAgKi9cbiAgICAgICAgX3RoaXMuJGVsZW1lbnQudHJpZ2dlcigndXAuemYuYWNjb3JkaW9uTWVudScsIFskdGFyZ2V0XSk7XG4gICAgICB9KTtcbiAgICAvL30pO1xuXG4gICAgdmFyICRtZW51cyA9ICR0YXJnZXQuZmluZCgnW2RhdGEtc3VibWVudV0nKS5zbGlkZVVwKDApLmFkZEJhY2soKS5hdHRyKCdhcmlhLWhpZGRlbicsIHRydWUpO1xuXG4gICAgJG1lbnVzLnBhcmVudCgnLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudCcpLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgYW4gaW5zdGFuY2Ugb2YgYWNjb3JkaW9uIG1lbnUuXG4gICAqIEBmaXJlcyBBY2NvcmRpb25NZW51I2Rlc3Ryb3llZFxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLiRlbGVtZW50LmZpbmQoJ1tkYXRhLXN1Ym1lbnVdJykuc2xpZGVEb3duKDApLmNzcygnZGlzcGxheScsICcnKTtcbiAgICB0aGlzLiRlbGVtZW50LmZpbmQoJ2EnKS5vZmYoJ2NsaWNrLnpmLmFjY29yZGlvbk1lbnUnKTtcblxuICAgIEZvdW5kYXRpb24uTmVzdC5CdXJuKHRoaXMuJGVsZW1lbnQsICdhY2NvcmRpb24nKTtcbiAgICBGb3VuZGF0aW9uLnVucmVnaXN0ZXJQbHVnaW4odGhpcyk7XG4gIH1cbn1cblxuQWNjb3JkaW9uTWVudS5kZWZhdWx0cyA9IHtcbiAgLyoqXG4gICAqIEFtb3VudCBvZiB0aW1lIHRvIGFuaW1hdGUgdGhlIG9wZW5pbmcgb2YgYSBzdWJtZW51IGluIG1zLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIDI1MFxuICAgKi9cbiAgc2xpZGVTcGVlZDogMjUwLFxuICAvKipcbiAgICogQWxsb3cgdGhlIG1lbnUgdG8gaGF2ZSBtdWx0aXBsZSBvcGVuIHBhbmVzLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIHRydWVcbiAgICovXG4gIG11bHRpT3BlbjogdHJ1ZVxufTtcblxuLy8gV2luZG93IGV4cG9ydHNcbkZvdW5kYXRpb24ucGx1Z2luKEFjY29yZGlvbk1lbnUsICdBY2NvcmRpb25NZW51Jyk7XG5cbn0oalF1ZXJ5KTtcbiIsIid1c2Ugc3RyaWN0JztcblxuIWZ1bmN0aW9uKCQpIHtcblxuLyoqXG4gKiBEcmlsbGRvd24gbW9kdWxlLlxuICogQG1vZHVsZSBmb3VuZGF0aW9uLmRyaWxsZG93blxuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC5rZXlib2FyZFxuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC5tb3Rpb25cbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwubmVzdFxuICovXG5cbmNsYXNzIERyaWxsZG93biB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIGEgZHJpbGxkb3duIG1lbnUuXG4gICAqIEBjbGFzc1xuICAgKiBAcGFyYW0ge2pRdWVyeX0gZWxlbWVudCAtIGpRdWVyeSBvYmplY3QgdG8gbWFrZSBpbnRvIGFuIGFjY29yZGlvbiBtZW51LlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIE92ZXJyaWRlcyB0byB0aGUgZGVmYXVsdCBwbHVnaW4gc2V0dGluZ3MuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5vcHRpb25zID0gJC5leHRlbmQoe30sIERyaWxsZG93bi5kZWZhdWx0cywgdGhpcy4kZWxlbWVudC5kYXRhKCksIG9wdGlvbnMpO1xuXG4gICAgRm91bmRhdGlvbi5OZXN0LkZlYXRoZXIodGhpcy4kZWxlbWVudCwgJ2RyaWxsZG93bicpO1xuXG4gICAgdGhpcy5faW5pdCgpO1xuXG4gICAgRm91bmRhdGlvbi5yZWdpc3RlclBsdWdpbih0aGlzLCAnRHJpbGxkb3duJyk7XG4gICAgRm91bmRhdGlvbi5LZXlib2FyZC5yZWdpc3RlcignRHJpbGxkb3duJywge1xuICAgICAgJ0VOVEVSJzogJ29wZW4nLFxuICAgICAgJ1NQQUNFJzogJ29wZW4nLFxuICAgICAgJ0FSUk9XX1JJR0hUJzogJ25leHQnLFxuICAgICAgJ0FSUk9XX1VQJzogJ3VwJyxcbiAgICAgICdBUlJPV19ET1dOJzogJ2Rvd24nLFxuICAgICAgJ0FSUk9XX0xFRlQnOiAncHJldmlvdXMnLFxuICAgICAgJ0VTQ0FQRSc6ICdjbG9zZScsXG4gICAgICAnVEFCJzogJ2Rvd24nLFxuICAgICAgJ1NISUZUX1RBQic6ICd1cCdcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgZHJpbGxkb3duIGJ5IGNyZWF0aW5nIGpRdWVyeSBjb2xsZWN0aW9ucyBvZiBlbGVtZW50c1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2luaXQoKSB7XG4gICAgdGhpcy4kc3VibWVudUFuY2hvcnMgPSB0aGlzLiRlbGVtZW50LmZpbmQoJ2xpLmlzLWRyaWxsZG93bi1zdWJtZW51LXBhcmVudCcpLmNoaWxkcmVuKCdhJyk7XG4gICAgdGhpcy4kc3VibWVudXMgPSB0aGlzLiRzdWJtZW51QW5jaG9ycy5wYXJlbnQoJ2xpJykuY2hpbGRyZW4oJ1tkYXRhLXN1Ym1lbnVdJyk7XG4gICAgdGhpcy4kbWVudUl0ZW1zID0gdGhpcy4kZWxlbWVudC5maW5kKCdsaScpLm5vdCgnLmpzLWRyaWxsZG93bi1iYWNrJykuYXR0cigncm9sZScsICdtZW51aXRlbScpLmZpbmQoJ2EnKTtcbiAgICB0aGlzLiRlbGVtZW50LmF0dHIoJ2RhdGEtbXV0YXRlJywgKHRoaXMuJGVsZW1lbnQuYXR0cignZGF0YS1kcmlsbGRvd24nKSB8fCBGb3VuZGF0aW9uLkdldFlvRGlnaXRzKDYsICdkcmlsbGRvd24nKSkpO1xuXG4gICAgdGhpcy5fcHJlcGFyZU1lbnUoKTtcbiAgICB0aGlzLl9yZWdpc3RlckV2ZW50cygpO1xuXG4gICAgdGhpcy5fa2V5Ym9hcmRFdmVudHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBwcmVwYXJlcyBkcmlsbGRvd24gbWVudSBieSBzZXR0aW5nIGF0dHJpYnV0ZXMgdG8gbGlua3MgYW5kIGVsZW1lbnRzXG4gICAqIHNldHMgYSBtaW4gaGVpZ2h0IHRvIHByZXZlbnQgY29udGVudCBqdW1waW5nXG4gICAqIHdyYXBzIHRoZSBlbGVtZW50IGlmIG5vdCBhbHJlYWR5IHdyYXBwZWRcbiAgICogQHByaXZhdGVcbiAgICogQGZ1bmN0aW9uXG4gICAqL1xuICBfcHJlcGFyZU1lbnUoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAvLyBpZighdGhpcy5vcHRpb25zLmhvbGRPcGVuKXtcbiAgICAvLyAgIHRoaXMuX21lbnVMaW5rRXZlbnRzKCk7XG4gICAgLy8gfVxuICAgIHRoaXMuJHN1Ym1lbnVBbmNob3JzLmVhY2goZnVuY3Rpb24oKXtcbiAgICAgIHZhciAkbGluayA9ICQodGhpcyk7XG4gICAgICB2YXIgJHN1YiA9ICRsaW5rLnBhcmVudCgpO1xuICAgICAgaWYoX3RoaXMub3B0aW9ucy5wYXJlbnRMaW5rKXtcbiAgICAgICAgJGxpbmsuY2xvbmUoKS5wcmVwZW5kVG8oJHN1Yi5jaGlsZHJlbignW2RhdGEtc3VibWVudV0nKSkud3JhcCgnPGxpIGNsYXNzPVwiaXMtc3VibWVudS1wYXJlbnQtaXRlbSBpcy1zdWJtZW51LWl0ZW0gaXMtZHJpbGxkb3duLXN1Ym1lbnUtaXRlbVwiIHJvbGU9XCJtZW51LWl0ZW1cIj48L2xpPicpO1xuICAgICAgfVxuICAgICAgJGxpbmsuZGF0YSgnc2F2ZWRIcmVmJywgJGxpbmsuYXR0cignaHJlZicpKS5yZW1vdmVBdHRyKCdocmVmJykuYXR0cigndGFiaW5kZXgnLCAwKTtcbiAgICAgICRsaW5rLmNoaWxkcmVuKCdbZGF0YS1zdWJtZW51XScpXG4gICAgICAgICAgLmF0dHIoe1xuICAgICAgICAgICAgJ2FyaWEtaGlkZGVuJzogdHJ1ZSxcbiAgICAgICAgICAgICd0YWJpbmRleCc6IDAsXG4gICAgICAgICAgICAncm9sZSc6ICdtZW51J1xuICAgICAgICAgIH0pO1xuICAgICAgX3RoaXMuX2V2ZW50cygkbGluayk7XG4gICAgfSk7XG4gICAgdGhpcy4kc3VibWVudXMuZWFjaChmdW5jdGlvbigpe1xuICAgICAgdmFyICRtZW51ID0gJCh0aGlzKSxcbiAgICAgICAgICAkYmFjayA9ICRtZW51LmZpbmQoJy5qcy1kcmlsbGRvd24tYmFjaycpO1xuICAgICAgaWYoISRiYWNrLmxlbmd0aCl7XG4gICAgICAgIHN3aXRjaCAoX3RoaXMub3B0aW9ucy5iYWNrQnV0dG9uUG9zaXRpb24pIHtcbiAgICAgICAgICBjYXNlIFwiYm90dG9tXCI6XG4gICAgICAgICAgICAkbWVudS5hcHBlbmQoX3RoaXMub3B0aW9ucy5iYWNrQnV0dG9uKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJ0b3BcIjpcbiAgICAgICAgICAgICRtZW51LnByZXBlbmQoX3RoaXMub3B0aW9ucy5iYWNrQnV0dG9uKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVW5zdXBwb3J0ZWQgYmFja0J1dHRvblBvc2l0aW9uIHZhbHVlICdcIiArIF90aGlzLm9wdGlvbnMuYmFja0J1dHRvblBvc2l0aW9uICsgXCInXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfdGhpcy5fYmFjaygkbWVudSk7XG4gICAgfSk7XG5cbiAgICBpZighdGhpcy5vcHRpb25zLmF1dG9IZWlnaHQpIHtcbiAgICAgIHRoaXMuJHN1Ym1lbnVzLmFkZENsYXNzKCdkcmlsbGRvd24tc3VibWVudS1jb3Zlci1wcmV2aW91cycpO1xuICAgIH1cblxuICAgIGlmKCF0aGlzLiRlbGVtZW50LnBhcmVudCgpLmhhc0NsYXNzKCdpcy1kcmlsbGRvd24nKSl7XG4gICAgICB0aGlzLiR3cmFwcGVyID0gJCh0aGlzLm9wdGlvbnMud3JhcHBlcikuYWRkQ2xhc3MoJ2lzLWRyaWxsZG93bicpO1xuICAgICAgaWYodGhpcy5vcHRpb25zLmFuaW1hdGVIZWlnaHQpIHRoaXMuJHdyYXBwZXIuYWRkQ2xhc3MoJ2FuaW1hdGUtaGVpZ2h0Jyk7XG4gICAgICB0aGlzLiR3cmFwcGVyID0gdGhpcy4kZWxlbWVudC53cmFwKHRoaXMuJHdyYXBwZXIpLnBhcmVudCgpLmNzcyh0aGlzLl9nZXRNYXhEaW1zKCkpO1xuICAgIH1cbiAgfVxuXG4gIF9yZXNpemUoKSB7XG4gICAgdGhpcy4kd3JhcHBlci5jc3MoeydtYXgtd2lkdGgnOiAnbm9uZScsICdtaW4taGVpZ2h0JzogJ25vbmUnfSk7XG4gICAgLy8gX2dldE1heERpbXMgaGFzIHNpZGUgZWZmZWN0cyAoYm9vKSBidXQgY2FsbGluZyBpdCBzaG91bGQgdXBkYXRlIGFsbCBvdGhlciBuZWNlc3NhcnkgaGVpZ2h0cyAmIHdpZHRoc1xuICAgIHRoaXMuJHdyYXBwZXIuY3NzKHRoaXMuX2dldE1heERpbXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBldmVudCBoYW5kbGVycyB0byBlbGVtZW50cyBpbiB0aGUgbWVudS5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkZWxlbSAtIHRoZSBjdXJyZW50IG1lbnUgaXRlbSB0byBhZGQgaGFuZGxlcnMgdG8uXG4gICAqL1xuICBfZXZlbnRzKCRlbGVtKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICRlbGVtLm9mZignY2xpY2suemYuZHJpbGxkb3duJylcbiAgICAub24oJ2NsaWNrLnpmLmRyaWxsZG93bicsIGZ1bmN0aW9uKGUpe1xuICAgICAgaWYoJChlLnRhcmdldCkucGFyZW50c1VudGlsKCd1bCcsICdsaScpLmhhc0NsYXNzKCdpcy1kcmlsbGRvd24tc3VibWVudS1wYXJlbnQnKSl7XG4gICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gaWYoZS50YXJnZXQgIT09IGUuY3VycmVudFRhcmdldC5maXJzdEVsZW1lbnRDaGlsZCl7XG4gICAgICAvLyAgIHJldHVybiBmYWxzZTtcbiAgICAgIC8vIH1cbiAgICAgIF90aGlzLl9zaG93KCRlbGVtLnBhcmVudCgnbGknKSk7XG5cbiAgICAgIGlmKF90aGlzLm9wdGlvbnMuY2xvc2VPbkNsaWNrKXtcbiAgICAgICAgdmFyICRib2R5ID0gJCgnYm9keScpO1xuICAgICAgICAkYm9keS5vZmYoJy56Zi5kcmlsbGRvd24nKS5vbignY2xpY2suemYuZHJpbGxkb3duJywgZnVuY3Rpb24oZSl7XG4gICAgICAgICAgaWYgKGUudGFyZ2V0ID09PSBfdGhpcy4kZWxlbWVudFswXSB8fCAkLmNvbnRhaW5zKF90aGlzLiRlbGVtZW50WzBdLCBlLnRhcmdldCkpIHsgcmV0dXJuOyB9XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIF90aGlzLl9oaWRlQWxsKCk7XG4gICAgICAgICAgJGJvZHkub2ZmKCcuemYuZHJpbGxkb3duJyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXHQgIHRoaXMuJGVsZW1lbnQub24oJ211dGF0ZW1lLnpmLnRyaWdnZXInLCB0aGlzLl9yZXNpemUuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBldmVudCBoYW5kbGVycyB0byB0aGUgbWVudSBlbGVtZW50LlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9yZWdpc3RlckV2ZW50cygpIHtcbiAgICBpZih0aGlzLm9wdGlvbnMuc2Nyb2xsVG9wKXtcbiAgICAgIHRoaXMuX2JpbmRIYW5kbGVyID0gdGhpcy5fc2Nyb2xsVG9wLmJpbmQodGhpcyk7XG4gICAgICB0aGlzLiRlbGVtZW50Lm9uKCdvcGVuLnpmLmRyaWxsZG93biBoaWRlLnpmLmRyaWxsZG93biBjbG9zZWQuemYuZHJpbGxkb3duJyx0aGlzLl9iaW5kSGFuZGxlcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNjcm9sbCB0byBUb3Agb2YgRWxlbWVudCBvciBkYXRhLXNjcm9sbC10b3AtZWxlbWVudFxuICAgKiBAZnVuY3Rpb25cbiAgICogQGZpcmVzIERyaWxsZG93biNzY3JvbGxtZVxuICAgKi9cbiAgX3Njcm9sbFRvcCgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIHZhciAkc2Nyb2xsVG9wRWxlbWVudCA9IF90aGlzLm9wdGlvbnMuc2Nyb2xsVG9wRWxlbWVudCE9Jyc/JChfdGhpcy5vcHRpb25zLnNjcm9sbFRvcEVsZW1lbnQpOl90aGlzLiRlbGVtZW50LFxuICAgICAgICBzY3JvbGxQb3MgPSBwYXJzZUludCgkc2Nyb2xsVG9wRWxlbWVudC5vZmZzZXQoKS50b3ArX3RoaXMub3B0aW9ucy5zY3JvbGxUb3BPZmZzZXQpO1xuICAgICQoJ2h0bWwsIGJvZHknKS5zdG9wKHRydWUpLmFuaW1hdGUoeyBzY3JvbGxUb3A6IHNjcm9sbFBvcyB9LCBfdGhpcy5vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uLCBfdGhpcy5vcHRpb25zLmFuaW1hdGlvbkVhc2luZyxmdW5jdGlvbigpe1xuICAgICAgLyoqXG4gICAgICAgICogRmlyZXMgYWZ0ZXIgdGhlIG1lbnUgaGFzIHNjcm9sbGVkXG4gICAgICAgICogQGV2ZW50IERyaWxsZG93biNzY3JvbGxtZVxuICAgICAgICAqL1xuICAgICAgaWYodGhpcz09PSQoJ2h0bWwnKVswXSlfdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdzY3JvbGxtZS56Zi5kcmlsbGRvd24nKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGtleWRvd24gZXZlbnQgbGlzdGVuZXIgdG8gYGxpYCdzIGluIHRoZSBtZW51LlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2tleWJvYXJkRXZlbnRzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLiRtZW51SXRlbXMuYWRkKHRoaXMuJGVsZW1lbnQuZmluZCgnLmpzLWRyaWxsZG93bi1iYWNrID4gYSwgLmlzLXN1Ym1lbnUtcGFyZW50LWl0ZW0gPiBhJykpLm9uKCdrZXlkb3duLnpmLmRyaWxsZG93bicsIGZ1bmN0aW9uKGUpe1xuICAgICAgdmFyICRlbGVtZW50ID0gJCh0aGlzKSxcbiAgICAgICAgICAkZWxlbWVudHMgPSAkZWxlbWVudC5wYXJlbnQoJ2xpJykucGFyZW50KCd1bCcpLmNoaWxkcmVuKCdsaScpLmNoaWxkcmVuKCdhJyksXG4gICAgICAgICAgJHByZXZFbGVtZW50LFxuICAgICAgICAgICRuZXh0RWxlbWVudDtcblxuICAgICAgJGVsZW1lbnRzLmVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgICBpZiAoJCh0aGlzKS5pcygkZWxlbWVudCkpIHtcbiAgICAgICAgICAkcHJldkVsZW1lbnQgPSAkZWxlbWVudHMuZXEoTWF0aC5tYXgoMCwgaS0xKSk7XG4gICAgICAgICAgJG5leHRFbGVtZW50ID0gJGVsZW1lbnRzLmVxKE1hdGgubWluKGkrMSwgJGVsZW1lbnRzLmxlbmd0aC0xKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgRm91bmRhdGlvbi5LZXlib2FyZC5oYW5kbGVLZXkoZSwgJ0RyaWxsZG93bicsIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKCRlbGVtZW50LmlzKF90aGlzLiRzdWJtZW51QW5jaG9ycykpIHtcbiAgICAgICAgICAgIF90aGlzLl9zaG93KCRlbGVtZW50LnBhcmVudCgnbGknKSk7XG4gICAgICAgICAgICAkZWxlbWVudC5wYXJlbnQoJ2xpJykub25lKEZvdW5kYXRpb24udHJhbnNpdGlvbmVuZCgkZWxlbWVudCksIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICRlbGVtZW50LnBhcmVudCgnbGknKS5maW5kKCd1bCBsaSBhJykuZmlsdGVyKF90aGlzLiRtZW51SXRlbXMpLmZpcnN0KCkuZm9jdXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwcmV2aW91czogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgX3RoaXMuX2hpZGUoJGVsZW1lbnQucGFyZW50KCdsaScpLnBhcmVudCgndWwnKSk7XG4gICAgICAgICAgJGVsZW1lbnQucGFyZW50KCdsaScpLnBhcmVudCgndWwnKS5vbmUoRm91bmRhdGlvbi50cmFuc2l0aW9uZW5kKCRlbGVtZW50KSwgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICRlbGVtZW50LnBhcmVudCgnbGknKS5wYXJlbnQoJ3VsJykucGFyZW50KCdsaScpLmNoaWxkcmVuKCdhJykuZmlyc3QoKS5mb2N1cygpO1xuICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIHVwOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAkcHJldkVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgZG93bjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgJG5leHRFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBfdGhpcy5fYmFjaygpO1xuICAgICAgICAgIC8vX3RoaXMuJG1lbnVJdGVtcy5maXJzdCgpLmZvY3VzKCk7IC8vIGZvY3VzIHRvIGZpcnN0IGVsZW1lbnRcbiAgICAgICAgfSxcbiAgICAgICAgb3BlbjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKCEkZWxlbWVudC5pcyhfdGhpcy4kbWVudUl0ZW1zKSkgeyAvLyBub3QgbWVudSBpdGVtIG1lYW5zIGJhY2sgYnV0dG9uXG4gICAgICAgICAgICBfdGhpcy5faGlkZSgkZWxlbWVudC5wYXJlbnQoJ2xpJykucGFyZW50KCd1bCcpKTtcbiAgICAgICAgICAgICRlbGVtZW50LnBhcmVudCgnbGknKS5wYXJlbnQoJ3VsJykub25lKEZvdW5kYXRpb24udHJhbnNpdGlvbmVuZCgkZWxlbWVudCksIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgJGVsZW1lbnQucGFyZW50KCdsaScpLnBhcmVudCgndWwnKS5wYXJlbnQoJ2xpJykuY2hpbGRyZW4oJ2EnKS5maXJzdCgpLmZvY3VzKCk7XG4gICAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCRlbGVtZW50LmlzKF90aGlzLiRzdWJtZW51QW5jaG9ycykpIHtcbiAgICAgICAgICAgIF90aGlzLl9zaG93KCRlbGVtZW50LnBhcmVudCgnbGknKSk7XG4gICAgICAgICAgICAkZWxlbWVudC5wYXJlbnQoJ2xpJykub25lKEZvdW5kYXRpb24udHJhbnNpdGlvbmVuZCgkZWxlbWVudCksIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICRlbGVtZW50LnBhcmVudCgnbGknKS5maW5kKCd1bCBsaSBhJykuZmlsdGVyKF90aGlzLiRtZW51SXRlbXMpLmZpcnN0KCkuZm9jdXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBoYW5kbGVkOiBmdW5jdGlvbihwcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICAgIGlmIChwcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTsgLy8gZW5kIGtleWJvYXJkQWNjZXNzXG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIGFsbCBvcGVuIGVsZW1lbnRzLCBhbmQgcmV0dXJucyB0byByb290IG1lbnUuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAZmlyZXMgRHJpbGxkb3duI2Nsb3NlZFxuICAgKi9cbiAgX2hpZGVBbGwoKSB7XG4gICAgdmFyICRlbGVtID0gdGhpcy4kZWxlbWVudC5maW5kKCcuaXMtZHJpbGxkb3duLXN1Ym1lbnUuaXMtYWN0aXZlJykuYWRkQ2xhc3MoJ2lzLWNsb3NpbmcnKTtcbiAgICBpZih0aGlzLm9wdGlvbnMuYXV0b0hlaWdodCkgdGhpcy4kd3JhcHBlci5jc3Moe2hlaWdodDokZWxlbS5wYXJlbnQoKS5jbG9zZXN0KCd1bCcpLmRhdGEoJ2NhbGNIZWlnaHQnKX0pO1xuICAgICRlbGVtLm9uZShGb3VuZGF0aW9uLnRyYW5zaXRpb25lbmQoJGVsZW0pLCBmdW5jdGlvbihlKXtcbiAgICAgICRlbGVtLnJlbW92ZUNsYXNzKCdpcy1hY3RpdmUgaXMtY2xvc2luZycpO1xuICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogRmlyZXMgd2hlbiB0aGUgbWVudSBpcyBmdWxseSBjbG9zZWQuXG4gICAgICAgICAqIEBldmVudCBEcmlsbGRvd24jY2xvc2VkXG4gICAgICAgICAqL1xuICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignY2xvc2VkLnpmLmRyaWxsZG93bicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgZXZlbnQgbGlzdGVuZXIgZm9yIGVhY2ggYGJhY2tgIGJ1dHRvbiwgYW5kIGNsb3NlcyBvcGVuIG1lbnVzLlxuICAgKiBAZnVuY3Rpb25cbiAgICogQGZpcmVzIERyaWxsZG93biNiYWNrXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkZWxlbSAtIHRoZSBjdXJyZW50IHN1Yi1tZW51IHRvIGFkZCBgYmFja2AgZXZlbnQuXG4gICAqL1xuICBfYmFjaygkZWxlbSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgJGVsZW0ub2ZmKCdjbGljay56Zi5kcmlsbGRvd24nKTtcbiAgICAkZWxlbS5jaGlsZHJlbignLmpzLWRyaWxsZG93bi1iYWNrJylcbiAgICAgIC5vbignY2xpY2suemYuZHJpbGxkb3duJywgZnVuY3Rpb24oZSl7XG4gICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdtb3VzZXVwIG9uIGJhY2snKTtcbiAgICAgICAgX3RoaXMuX2hpZGUoJGVsZW0pO1xuXG4gICAgICAgIC8vIElmIHRoZXJlIGlzIGEgcGFyZW50IHN1Ym1lbnUsIGNhbGwgc2hvd1xuICAgICAgICBsZXQgcGFyZW50U3ViTWVudSA9ICRlbGVtLnBhcmVudCgnbGknKS5wYXJlbnQoJ3VsJykucGFyZW50KCdsaScpO1xuICAgICAgICBpZiAocGFyZW50U3ViTWVudS5sZW5ndGgpIHtcbiAgICAgICAgICBfdGhpcy5fc2hvdyhwYXJlbnRTdWJNZW51KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBldmVudCBsaXN0ZW5lciB0byBtZW51IGl0ZW1zIHcvbyBzdWJtZW51cyB0byBjbG9zZSBvcGVuIG1lbnVzIG9uIGNsaWNrLlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9tZW51TGlua0V2ZW50cygpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIHRoaXMuJG1lbnVJdGVtcy5ub3QoJy5pcy1kcmlsbGRvd24tc3VibWVudS1wYXJlbnQnKVxuICAgICAgICAub2ZmKCdjbGljay56Zi5kcmlsbGRvd24nKVxuICAgICAgICAub24oJ2NsaWNrLnpmLmRyaWxsZG93bicsIGZ1bmN0aW9uKGUpe1xuICAgICAgICAgIC8vIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgICAgX3RoaXMuX2hpZGVBbGwoKTtcbiAgICAgICAgICB9LCAwKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgc3VibWVudS5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBmaXJlcyBEcmlsbGRvd24jb3BlblxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJGVsZW0gLSB0aGUgY3VycmVudCBlbGVtZW50IHdpdGggYSBzdWJtZW51IHRvIG9wZW4sIGkuZS4gdGhlIGBsaWAgdGFnLlxuICAgKi9cbiAgX3Nob3coJGVsZW0pIHtcbiAgICBpZih0aGlzLm9wdGlvbnMuYXV0b0hlaWdodCkgdGhpcy4kd3JhcHBlci5jc3Moe2hlaWdodDokZWxlbS5jaGlsZHJlbignW2RhdGEtc3VibWVudV0nKS5kYXRhKCdjYWxjSGVpZ2h0Jyl9KTtcbiAgICAkZWxlbS5hdHRyKCdhcmlhLWV4cGFuZGVkJywgdHJ1ZSk7XG4gICAgJGVsZW0uY2hpbGRyZW4oJ1tkYXRhLXN1Ym1lbnVdJykuYWRkQ2xhc3MoJ2lzLWFjdGl2ZScpLmF0dHIoJ2FyaWEtaGlkZGVuJywgZmFsc2UpO1xuICAgIC8qKlxuICAgICAqIEZpcmVzIHdoZW4gdGhlIHN1Ym1lbnUgaGFzIG9wZW5lZC5cbiAgICAgKiBAZXZlbnQgRHJpbGxkb3duI29wZW5cbiAgICAgKi9cbiAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ29wZW4uemYuZHJpbGxkb3duJywgWyRlbGVtXSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhpZGVzIGEgc3VibWVudVxuICAgKiBAZnVuY3Rpb25cbiAgICogQGZpcmVzIERyaWxsZG93biNoaWRlXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkZWxlbSAtIHRoZSBjdXJyZW50IHN1Yi1tZW51IHRvIGhpZGUsIGkuZS4gdGhlIGB1bGAgdGFnLlxuICAgKi9cbiAgX2hpZGUoJGVsZW0pIHtcbiAgICBpZih0aGlzLm9wdGlvbnMuYXV0b0hlaWdodCkgdGhpcy4kd3JhcHBlci5jc3Moe2hlaWdodDokZWxlbS5wYXJlbnQoKS5jbG9zZXN0KCd1bCcpLmRhdGEoJ2NhbGNIZWlnaHQnKX0pO1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgJGVsZW0ucGFyZW50KCdsaScpLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSk7XG4gICAgJGVsZW0uYXR0cignYXJpYS1oaWRkZW4nLCB0cnVlKS5hZGRDbGFzcygnaXMtY2xvc2luZycpXG4gICAgJGVsZW0uYWRkQ2xhc3MoJ2lzLWNsb3NpbmcnKVxuICAgICAgICAgLm9uZShGb3VuZGF0aW9uLnRyYW5zaXRpb25lbmQoJGVsZW0pLCBmdW5jdGlvbigpe1xuICAgICAgICAgICAkZWxlbS5yZW1vdmVDbGFzcygnaXMtYWN0aXZlIGlzLWNsb3NpbmcnKTtcbiAgICAgICAgICAgJGVsZW0uYmx1cigpO1xuICAgICAgICAgfSk7XG4gICAgLyoqXG4gICAgICogRmlyZXMgd2hlbiB0aGUgc3VibWVudSBoYXMgY2xvc2VkLlxuICAgICAqIEBldmVudCBEcmlsbGRvd24jaGlkZVxuICAgICAqL1xuICAgICRlbGVtLnRyaWdnZXIoJ2hpZGUuemYuZHJpbGxkb3duJywgWyRlbGVtXSk7XG4gIH1cblxuICAvKipcbiAgICogSXRlcmF0ZXMgdGhyb3VnaCB0aGUgbmVzdGVkIG1lbnVzIHRvIGNhbGN1bGF0ZSB0aGUgbWluLWhlaWdodCwgYW5kIG1heC13aWR0aCBmb3IgdGhlIG1lbnUuXG4gICAqIFByZXZlbnRzIGNvbnRlbnQganVtcGluZy5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfZ2V0TWF4RGltcygpIHtcbiAgICB2YXIgIG1heEhlaWdodCA9IDAsIHJlc3VsdCA9IHt9LCBfdGhpcyA9IHRoaXM7XG4gICAgdGhpcy4kc3VibWVudXMuYWRkKHRoaXMuJGVsZW1lbnQpLmVhY2goZnVuY3Rpb24oKXtcbiAgICAgIHZhciBudW1PZkVsZW1zID0gJCh0aGlzKS5jaGlsZHJlbignbGknKS5sZW5ndGg7XG4gICAgICB2YXIgaGVpZ2h0ID0gRm91bmRhdGlvbi5Cb3guR2V0RGltZW5zaW9ucyh0aGlzKS5oZWlnaHQ7XG4gICAgICBtYXhIZWlnaHQgPSBoZWlnaHQgPiBtYXhIZWlnaHQgPyBoZWlnaHQgOiBtYXhIZWlnaHQ7XG4gICAgICBpZihfdGhpcy5vcHRpb25zLmF1dG9IZWlnaHQpIHtcbiAgICAgICAgJCh0aGlzKS5kYXRhKCdjYWxjSGVpZ2h0JyxoZWlnaHQpO1xuICAgICAgICBpZiAoISQodGhpcykuaGFzQ2xhc3MoJ2lzLWRyaWxsZG93bi1zdWJtZW51JykpIHJlc3VsdFsnaGVpZ2h0J10gPSBoZWlnaHQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZighdGhpcy5vcHRpb25zLmF1dG9IZWlnaHQpIHJlc3VsdFsnbWluLWhlaWdodCddID0gYCR7bWF4SGVpZ2h0fXB4YDtcblxuICAgIHJlc3VsdFsnbWF4LXdpZHRoJ10gPSBgJHt0aGlzLiRlbGVtZW50WzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofXB4YDtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgdGhlIERyaWxsZG93biBNZW51XG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICBpZih0aGlzLm9wdGlvbnMuc2Nyb2xsVG9wKSB0aGlzLiRlbGVtZW50Lm9mZignLnpmLmRyaWxsZG93bicsdGhpcy5fYmluZEhhbmRsZXIpO1xuICAgIHRoaXMuX2hpZGVBbGwoKTtcblx0ICB0aGlzLiRlbGVtZW50Lm9mZignbXV0YXRlbWUuemYudHJpZ2dlcicpO1xuICAgIEZvdW5kYXRpb24uTmVzdC5CdXJuKHRoaXMuJGVsZW1lbnQsICdkcmlsbGRvd24nKTtcbiAgICB0aGlzLiRlbGVtZW50LnVud3JhcCgpXG4gICAgICAgICAgICAgICAgIC5maW5kKCcuanMtZHJpbGxkb3duLWJhY2ssIC5pcy1zdWJtZW51LXBhcmVudC1pdGVtJykucmVtb3ZlKClcbiAgICAgICAgICAgICAgICAgLmVuZCgpLmZpbmQoJy5pcy1hY3RpdmUsIC5pcy1jbG9zaW5nLCAuaXMtZHJpbGxkb3duLXN1Ym1lbnUnKS5yZW1vdmVDbGFzcygnaXMtYWN0aXZlIGlzLWNsb3NpbmcgaXMtZHJpbGxkb3duLXN1Ym1lbnUnKVxuICAgICAgICAgICAgICAgICAuZW5kKCkuZmluZCgnW2RhdGEtc3VibWVudV0nKS5yZW1vdmVBdHRyKCdhcmlhLWhpZGRlbiB0YWJpbmRleCByb2xlJyk7XG4gICAgdGhpcy4kc3VibWVudUFuY2hvcnMuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICQodGhpcykub2ZmKCcuemYuZHJpbGxkb3duJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRzdWJtZW51cy5yZW1vdmVDbGFzcygnZHJpbGxkb3duLXN1Ym1lbnUtY292ZXItcHJldmlvdXMnKTtcblxuICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnYScpLmVhY2goZnVuY3Rpb24oKXtcbiAgICAgIHZhciAkbGluayA9ICQodGhpcyk7XG4gICAgICAkbGluay5yZW1vdmVBdHRyKCd0YWJpbmRleCcpO1xuICAgICAgaWYoJGxpbmsuZGF0YSgnc2F2ZWRIcmVmJykpe1xuICAgICAgICAkbGluay5hdHRyKCdocmVmJywgJGxpbmsuZGF0YSgnc2F2ZWRIcmVmJykpLnJlbW92ZURhdGEoJ3NhdmVkSHJlZicpO1xuICAgICAgfWVsc2V7IHJldHVybjsgfVxuICAgIH0pO1xuICAgIEZvdW5kYXRpb24udW5yZWdpc3RlclBsdWdpbih0aGlzKTtcbiAgfTtcbn1cblxuRHJpbGxkb3duLmRlZmF1bHRzID0ge1xuICAvKipcbiAgICogTWFya3VwIHVzZWQgZm9yIEpTIGdlbmVyYXRlZCBiYWNrIGJ1dHRvbi4gUHJlcGVuZGVkICBvciBhcHBlbmRlZCAoc2VlIGJhY2tCdXR0b25Qb3NpdGlvbikgdG8gc3VibWVudSBsaXN0cyBhbmQgZGVsZXRlZCBvbiBgZGVzdHJveWAgbWV0aG9kLCAnanMtZHJpbGxkb3duLWJhY2snIGNsYXNzIHJlcXVpcmVkLiBSZW1vdmUgdGhlIGJhY2tzbGFzaCAoYFxcYCkgaWYgY29weSBhbmQgcGFzdGluZy5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAnPFxcbGk+PFxcYT5CYWNrPFxcL2E+PFxcL2xpPidcbiAgICovXG4gIGJhY2tCdXR0b246ICc8bGkgY2xhc3M9XCJqcy1kcmlsbGRvd24tYmFja1wiPjxhIHRhYmluZGV4PVwiMFwiPkJhY2s8L2E+PC9saT4nLFxuICAvKipcbiAgICogUG9zaXRpb24gdGhlIGJhY2sgYnV0dG9uIGVpdGhlciBhdCB0aGUgdG9wIG9yIGJvdHRvbSBvZiBkcmlsbGRvd24gc3VibWVudXMuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgYm90dG9tXG4gICAqL1xuICBiYWNrQnV0dG9uUG9zaXRpb246ICd0b3AnLFxuICAvKipcbiAgICogTWFya3VwIHVzZWQgdG8gd3JhcCBkcmlsbGRvd24gbWVudS4gVXNlIGEgY2xhc3MgbmFtZSBmb3IgaW5kZXBlbmRlbnQgc3R5bGluZzsgdGhlIEpTIGFwcGxpZWQgY2xhc3M6IGBpcy1kcmlsbGRvd25gIGlzIHJlcXVpcmVkLiBSZW1vdmUgdGhlIGJhY2tzbGFzaCAoYFxcYCkgaWYgY29weSBhbmQgcGFzdGluZy5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAnPFxcZGl2IGNsYXNzPVwiaXMtZHJpbGxkb3duXCI+PFxcL2Rpdj4nXG4gICAqL1xuICB3cmFwcGVyOiAnPGRpdj48L2Rpdj4nLFxuICAvKipcbiAgICogQWRkcyB0aGUgcGFyZW50IGxpbmsgdG8gdGhlIHN1Ym1lbnUuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIHBhcmVudExpbms6IGZhbHNlLFxuICAvKipcbiAgICogQWxsb3cgdGhlIG1lbnUgdG8gcmV0dXJuIHRvIHJvb3QgbGlzdCBvbiBib2R5IGNsaWNrLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIGZhbHNlXG4gICAqL1xuICBjbG9zZU9uQ2xpY2s6IGZhbHNlLFxuICAvKipcbiAgICogQWxsb3cgdGhlIG1lbnUgdG8gYXV0byBhZGp1c3QgaGVpZ2h0LlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIGZhbHNlXG4gICAqL1xuICBhdXRvSGVpZ2h0OiBmYWxzZSxcbiAgLyoqXG4gICAqIEFuaW1hdGUgdGhlIGF1dG8gYWRqdXN0IGhlaWdodC5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSBmYWxzZVxuICAgKi9cbiAgYW5pbWF0ZUhlaWdodDogZmFsc2UsXG4gIC8qKlxuICAgKiBTY3JvbGwgdG8gdGhlIHRvcCBvZiB0aGUgbWVudSBhZnRlciBvcGVuaW5nIGEgc3VibWVudSBvciBuYXZpZ2F0aW5nIGJhY2sgdXNpbmcgdGhlIG1lbnUgYmFjayBidXR0b25cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSBmYWxzZVxuICAgKi9cbiAgc2Nyb2xsVG9wOiBmYWxzZSxcbiAgLyoqXG4gICAqIFN0cmluZyBqcXVlcnkgc2VsZWN0b3IgKGZvciBleGFtcGxlICdib2R5Jykgb2YgZWxlbWVudCB0byB0YWtlIG9mZnNldCgpLnRvcCBmcm9tLCBpZiBlbXB0eSBzdHJpbmcgdGhlIGRyaWxsZG93biBtZW51IG9mZnNldCgpLnRvcCBpcyB0YWtlblxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlICcnXG4gICAqL1xuICBzY3JvbGxUb3BFbGVtZW50OiAnJyxcbiAgLyoqXG4gICAqIFNjcm9sbFRvcCBvZmZzZXRcbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAxMDBcbiAgICovXG4gIHNjcm9sbFRvcE9mZnNldDogMCxcbiAgLyoqXG4gICAqIFNjcm9sbCBhbmltYXRpb24gZHVyYXRpb25cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSA1MDBcbiAgICovXG4gIGFuaW1hdGlvbkR1cmF0aW9uOiA1MDAsXG4gIC8qKlxuICAgKiBTY3JvbGwgYW5pbWF0aW9uIGVhc2luZ1xuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlICdzd2luZydcbiAgICovXG4gIGFuaW1hdGlvbkVhc2luZzogJ3N3aW5nJ1xuICAvLyBob2xkT3BlbjogZmFsc2Vcbn07XG5cbi8vIFdpbmRvdyBleHBvcnRzXG5Gb3VuZGF0aW9uLnBsdWdpbihEcmlsbGRvd24sICdEcmlsbGRvd24nKTtcblxufShqUXVlcnkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4hZnVuY3Rpb24oJCkge1xuXG4vKipcbiAqIERyb3Bkb3duIG1vZHVsZS5cbiAqIEBtb2R1bGUgZm91bmRhdGlvbi5kcm9wZG93blxuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC5rZXlib2FyZFxuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC5ib3hcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwudHJpZ2dlcnNcbiAqL1xuXG5jbGFzcyBEcm9wZG93biB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIGEgZHJvcGRvd24uXG4gICAqIEBjbGFzc1xuICAgKiBAcGFyYW0ge2pRdWVyeX0gZWxlbWVudCAtIGpRdWVyeSBvYmplY3QgdG8gbWFrZSBpbnRvIGEgZHJvcGRvd24uXG4gICAqICAgICAgICBPYmplY3Qgc2hvdWxkIGJlIG9mIHRoZSBkcm9wZG93biBwYW5lbCwgcmF0aGVyIHRoYW4gaXRzIGFuY2hvci5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBPdmVycmlkZXMgdG8gdGhlIGRlZmF1bHQgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuJGVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBEcm9wZG93bi5kZWZhdWx0cywgdGhpcy4kZWxlbWVudC5kYXRhKCksIG9wdGlvbnMpO1xuICAgIHRoaXMuX2luaXQoKTtcblxuICAgIEZvdW5kYXRpb24ucmVnaXN0ZXJQbHVnaW4odGhpcywgJ0Ryb3Bkb3duJyk7XG4gICAgRm91bmRhdGlvbi5LZXlib2FyZC5yZWdpc3RlcignRHJvcGRvd24nLCB7XG4gICAgICAnRU5URVInOiAnb3BlbicsXG4gICAgICAnU1BBQ0UnOiAnb3BlbicsXG4gICAgICAnRVNDQVBFJzogJ2Nsb3NlJ1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBwbHVnaW4gYnkgc2V0dGluZy9jaGVja2luZyBvcHRpb25zIGFuZCBhdHRyaWJ1dGVzLCBhZGRpbmcgaGVscGVyIHZhcmlhYmxlcywgYW5kIHNhdmluZyB0aGUgYW5jaG9yLlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9pbml0KCkge1xuICAgIHZhciAkaWQgPSB0aGlzLiRlbGVtZW50LmF0dHIoJ2lkJyk7XG5cbiAgICB0aGlzLiRhbmNob3IgPSAkKGBbZGF0YS10b2dnbGU9XCIkeyRpZH1cIl1gKS5sZW5ndGggPyAkKGBbZGF0YS10b2dnbGU9XCIkeyRpZH1cIl1gKSA6ICQoYFtkYXRhLW9wZW49XCIkeyRpZH1cIl1gKTtcbiAgICB0aGlzLiRhbmNob3IuYXR0cih7XG4gICAgICAnYXJpYS1jb250cm9scyc6ICRpZCxcbiAgICAgICdkYXRhLWlzLWZvY3VzJzogZmFsc2UsXG4gICAgICAnZGF0YS15ZXRpLWJveCc6ICRpZCxcbiAgICAgICdhcmlhLWhhc3BvcHVwJzogdHJ1ZSxcbiAgICAgICdhcmlhLWV4cGFuZGVkJzogZmFsc2VcblxuICAgIH0pO1xuXG4gICAgaWYodGhpcy5vcHRpb25zLnBhcmVudENsYXNzKXtcbiAgICAgIHRoaXMuJHBhcmVudCA9IHRoaXMuJGVsZW1lbnQucGFyZW50cygnLicgKyB0aGlzLm9wdGlvbnMucGFyZW50Q2xhc3MpO1xuICAgIH1lbHNle1xuICAgICAgdGhpcy4kcGFyZW50ID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uQ2xhc3MgPSB0aGlzLmdldFBvc2l0aW9uQ2xhc3MoKTtcbiAgICB0aGlzLmNvdW50ZXIgPSA0O1xuICAgIHRoaXMudXNlZFBvc2l0aW9ucyA9IFtdO1xuICAgIHRoaXMuJGVsZW1lbnQuYXR0cih7XG4gICAgICAnYXJpYS1oaWRkZW4nOiAndHJ1ZScsXG4gICAgICAnZGF0YS15ZXRpLWJveCc6ICRpZCxcbiAgICAgICdkYXRhLXJlc2l6ZSc6ICRpZCxcbiAgICAgICdhcmlhLWxhYmVsbGVkYnknOiB0aGlzLiRhbmNob3JbMF0uaWQgfHwgRm91bmRhdGlvbi5HZXRZb0RpZ2l0cyg2LCAnZGQtYW5jaG9yJylcbiAgICB9KTtcbiAgICB0aGlzLl9ldmVudHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGN1cnJlbnQgb3JpZW50YXRpb24gb2YgZHJvcGRvd24gcGFuZS5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IHBvc2l0aW9uIC0gc3RyaW5nIHZhbHVlIG9mIGEgcG9zaXRpb24gY2xhc3MuXG4gICAqL1xuICBnZXRQb3NpdGlvbkNsYXNzKCkge1xuICAgIHZhciB2ZXJ0aWNhbFBvc2l0aW9uID0gdGhpcy4kZWxlbWVudFswXS5jbGFzc05hbWUubWF0Y2goLyh0b3B8bGVmdHxyaWdodHxib3R0b20pL2cpO1xuICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9uID0gdmVydGljYWxQb3NpdGlvbiA/IHZlcnRpY2FsUG9zaXRpb25bMF0gOiAnJztcbiAgICB2YXIgaG9yaXpvbnRhbFBvc2l0aW9uID0gL2Zsb2F0LShcXFMrKS8uZXhlYyh0aGlzLiRhbmNob3JbMF0uY2xhc3NOYW1lKTtcbiAgICAgICAgaG9yaXpvbnRhbFBvc2l0aW9uID0gaG9yaXpvbnRhbFBvc2l0aW9uID8gaG9yaXpvbnRhbFBvc2l0aW9uWzFdIDogJyc7XG4gICAgdmFyIHBvc2l0aW9uID0gaG9yaXpvbnRhbFBvc2l0aW9uID8gaG9yaXpvbnRhbFBvc2l0aW9uICsgJyAnICsgdmVydGljYWxQb3NpdGlvbiA6IHZlcnRpY2FsUG9zaXRpb247XG5cbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH1cblxuICAvKipcbiAgICogQWRqdXN0cyB0aGUgZHJvcGRvd24gcGFuZXMgb3JpZW50YXRpb24gYnkgYWRkaW5nL3JlbW92aW5nIHBvc2l0aW9uaW5nIGNsYXNzZXMuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gcG9zaXRpb24gLSBwb3NpdGlvbiBjbGFzcyB0byByZW1vdmUuXG4gICAqL1xuICBfcmVwb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMudXNlZFBvc2l0aW9ucy5wdXNoKHBvc2l0aW9uID8gcG9zaXRpb24gOiAnYm90dG9tJyk7XG4gICAgLy9kZWZhdWx0LCB0cnkgc3dpdGNoaW5nIHRvIG9wcG9zaXRlIHNpZGVcbiAgICBpZighcG9zaXRpb24gJiYgKHRoaXMudXNlZFBvc2l0aW9ucy5pbmRleE9mKCd0b3AnKSA8IDApKXtcbiAgICAgIHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3MoJ3RvcCcpO1xuICAgIH1lbHNlIGlmKHBvc2l0aW9uID09PSAndG9wJyAmJiAodGhpcy51c2VkUG9zaXRpb25zLmluZGV4T2YoJ2JvdHRvbScpIDwgMCkpe1xuICAgICAgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhwb3NpdGlvbik7XG4gICAgfWVsc2UgaWYocG9zaXRpb24gPT09ICdsZWZ0JyAmJiAodGhpcy51c2VkUG9zaXRpb25zLmluZGV4T2YoJ3JpZ2h0JykgPCAwKSl7XG4gICAgICB0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKHBvc2l0aW9uKVxuICAgICAgICAgIC5hZGRDbGFzcygncmlnaHQnKTtcbiAgICB9ZWxzZSBpZihwb3NpdGlvbiA9PT0gJ3JpZ2h0JyAmJiAodGhpcy51c2VkUG9zaXRpb25zLmluZGV4T2YoJ2xlZnQnKSA8IDApKXtcbiAgICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MocG9zaXRpb24pXG4gICAgICAgICAgLmFkZENsYXNzKCdsZWZ0Jyk7XG4gICAgfVxuXG4gICAgLy9pZiBkZWZhdWx0IGNoYW5nZSBkaWRuJ3Qgd29yaywgdHJ5IGJvdHRvbSBvciBsZWZ0IGZpcnN0XG4gICAgZWxzZSBpZighcG9zaXRpb24gJiYgKHRoaXMudXNlZFBvc2l0aW9ucy5pbmRleE9mKCd0b3AnKSA+IC0xKSAmJiAodGhpcy51c2VkUG9zaXRpb25zLmluZGV4T2YoJ2xlZnQnKSA8IDApKXtcbiAgICAgIHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3MoJ2xlZnQnKTtcbiAgICB9ZWxzZSBpZihwb3NpdGlvbiA9PT0gJ3RvcCcgJiYgKHRoaXMudXNlZFBvc2l0aW9ucy5pbmRleE9mKCdib3R0b20nKSA+IC0xKSAmJiAodGhpcy51c2VkUG9zaXRpb25zLmluZGV4T2YoJ2xlZnQnKSA8IDApKXtcbiAgICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MocG9zaXRpb24pXG4gICAgICAgICAgLmFkZENsYXNzKCdsZWZ0Jyk7XG4gICAgfWVsc2UgaWYocG9zaXRpb24gPT09ICdsZWZ0JyAmJiAodGhpcy51c2VkUG9zaXRpb25zLmluZGV4T2YoJ3JpZ2h0JykgPiAtMSkgJiYgKHRoaXMudXNlZFBvc2l0aW9ucy5pbmRleE9mKCdib3R0b20nKSA8IDApKXtcbiAgICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MocG9zaXRpb24pO1xuICAgIH1lbHNlIGlmKHBvc2l0aW9uID09PSAncmlnaHQnICYmICh0aGlzLnVzZWRQb3NpdGlvbnMuaW5kZXhPZignbGVmdCcpID4gLTEpICYmICh0aGlzLnVzZWRQb3NpdGlvbnMuaW5kZXhPZignYm90dG9tJykgPCAwKSl7XG4gICAgICB0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKHBvc2l0aW9uKTtcbiAgICB9XG4gICAgLy9pZiBub3RoaW5nIGNsZWFyZWQsIHNldCB0byBib3R0b21cbiAgICBlbHNle1xuICAgICAgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhwb3NpdGlvbik7XG4gICAgfVxuICAgIHRoaXMuY2xhc3NDaGFuZ2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNvdW50ZXItLTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwb3NpdGlvbiBhbmQgb3JpZW50YXRpb24gb2YgdGhlIGRyb3Bkb3duIHBhbmUsIGNoZWNrcyBmb3IgY29sbGlzaW9ucy5cbiAgICogUmVjdXJzaXZlbHkgY2FsbHMgaXRzZWxmIGlmIGEgY29sbGlzaW9uIGlzIGRldGVjdGVkLCB3aXRoIGEgbmV3IHBvc2l0aW9uIGNsYXNzLlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9zZXRQb3NpdGlvbigpIHtcbiAgICBpZih0aGlzLiRhbmNob3IuYXR0cignYXJpYS1leHBhbmRlZCcpID09PSAnZmFsc2UnKXsgcmV0dXJuIGZhbHNlOyB9XG4gICAgdmFyIHBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkNsYXNzKCksXG4gICAgICAgICRlbGVEaW1zID0gRm91bmRhdGlvbi5Cb3guR2V0RGltZW5zaW9ucyh0aGlzLiRlbGVtZW50KSxcbiAgICAgICAgJGFuY2hvckRpbXMgPSBGb3VuZGF0aW9uLkJveC5HZXREaW1lbnNpb25zKHRoaXMuJGFuY2hvciksXG4gICAgICAgIF90aGlzID0gdGhpcyxcbiAgICAgICAgZGlyZWN0aW9uID0gKHBvc2l0aW9uID09PSAnbGVmdCcgPyAnbGVmdCcgOiAoKHBvc2l0aW9uID09PSAncmlnaHQnKSA/ICdsZWZ0JyA6ICd0b3AnKSksXG4gICAgICAgIHBhcmFtID0gKGRpcmVjdGlvbiA9PT0gJ3RvcCcpID8gJ2hlaWdodCcgOiAnd2lkdGgnLFxuICAgICAgICBvZmZzZXQgPSAocGFyYW0gPT09ICdoZWlnaHQnKSA/IHRoaXMub3B0aW9ucy52T2Zmc2V0IDogdGhpcy5vcHRpb25zLmhPZmZzZXQ7XG5cbiAgICBpZigoJGVsZURpbXMud2lkdGggPj0gJGVsZURpbXMud2luZG93RGltcy53aWR0aCkgfHwgKCF0aGlzLmNvdW50ZXIgJiYgIUZvdW5kYXRpb24uQm94LkltTm90VG91Y2hpbmdZb3UodGhpcy4kZWxlbWVudCwgdGhpcy4kcGFyZW50KSkpe1xuICAgICAgdmFyIG5ld1dpZHRoID0gJGVsZURpbXMud2luZG93RGltcy53aWR0aCxcbiAgICAgICAgICBwYXJlbnRIT2Zmc2V0ID0gMDtcbiAgICAgIGlmKHRoaXMuJHBhcmVudCl7XG4gICAgICAgIHZhciAkcGFyZW50RGltcyA9IEZvdW5kYXRpb24uQm94LkdldERpbWVuc2lvbnModGhpcy4kcGFyZW50KSxcbiAgICAgICAgICAgIHBhcmVudEhPZmZzZXQgPSAkcGFyZW50RGltcy5vZmZzZXQubGVmdDtcbiAgICAgICAgaWYgKCRwYXJlbnREaW1zLndpZHRoIDwgbmV3V2lkdGgpe1xuICAgICAgICAgIG5ld1dpZHRoID0gJHBhcmVudERpbXMud2lkdGg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy4kZWxlbWVudC5vZmZzZXQoRm91bmRhdGlvbi5Cb3guR2V0T2Zmc2V0cyh0aGlzLiRlbGVtZW50LCB0aGlzLiRhbmNob3IsICdjZW50ZXIgYm90dG9tJywgdGhpcy5vcHRpb25zLnZPZmZzZXQsIHRoaXMub3B0aW9ucy5oT2Zmc2V0ICsgcGFyZW50SE9mZnNldCwgdHJ1ZSkpLmNzcyh7XG4gICAgICAgICd3aWR0aCc6IG5ld1dpZHRoIC0gKHRoaXMub3B0aW9ucy5oT2Zmc2V0ICogMiksXG4gICAgICAgICdoZWlnaHQnOiAnYXV0bydcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jbGFzc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuJGVsZW1lbnQub2Zmc2V0KEZvdW5kYXRpb24uQm94LkdldE9mZnNldHModGhpcy4kZWxlbWVudCwgdGhpcy4kYW5jaG9yLCBwb3NpdGlvbiwgdGhpcy5vcHRpb25zLnZPZmZzZXQsIHRoaXMub3B0aW9ucy5oT2Zmc2V0KSk7XG5cbiAgICB3aGlsZSghRm91bmRhdGlvbi5Cb3guSW1Ob3RUb3VjaGluZ1lvdSh0aGlzLiRlbGVtZW50LCB0aGlzLiRwYXJlbnQsIHRydWUpICYmIHRoaXMuY291bnRlcil7XG4gICAgICB0aGlzLl9yZXBvc2l0aW9uKHBvc2l0aW9uKTtcbiAgICAgIHRoaXMuX3NldFBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgZXZlbnQgbGlzdGVuZXJzIHRvIHRoZSBlbGVtZW50IHV0aWxpemluZyB0aGUgdHJpZ2dlcnMgdXRpbGl0eSBsaWJyYXJ5LlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9ldmVudHMoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcbiAgICB0aGlzLiRlbGVtZW50Lm9uKHtcbiAgICAgICdvcGVuLnpmLnRyaWdnZXInOiB0aGlzLm9wZW4uYmluZCh0aGlzKSxcbiAgICAgICdjbG9zZS56Zi50cmlnZ2VyJzogdGhpcy5jbG9zZS5iaW5kKHRoaXMpLFxuICAgICAgJ3RvZ2dsZS56Zi50cmlnZ2VyJzogdGhpcy50b2dnbGUuYmluZCh0aGlzKSxcbiAgICAgICdyZXNpemVtZS56Zi50cmlnZ2VyJzogdGhpcy5fc2V0UG9zaXRpb24uYmluZCh0aGlzKVxuICAgIH0pO1xuXG4gICAgaWYodGhpcy5vcHRpb25zLmhvdmVyKXtcbiAgICAgIHRoaXMuJGFuY2hvci5vZmYoJ21vdXNlZW50ZXIuemYuZHJvcGRvd24gbW91c2VsZWF2ZS56Zi5kcm9wZG93bicpXG4gICAgICAub24oJ21vdXNlZW50ZXIuemYuZHJvcGRvd24nLCBmdW5jdGlvbigpe1xuICAgICAgICB2YXIgYm9keURhdGEgPSAkKCdib2R5JykuZGF0YSgpO1xuICAgICAgICBpZih0eXBlb2YoYm9keURhdGEud2hhdGlucHV0KSA9PT0gJ3VuZGVmaW5lZCcgfHwgYm9keURhdGEud2hhdGlucHV0ID09PSAnbW91c2UnKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KF90aGlzLnRpbWVvdXQpO1xuICAgICAgICAgIF90aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBfdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICBfdGhpcy4kYW5jaG9yLmRhdGEoJ2hvdmVyJywgdHJ1ZSk7XG4gICAgICAgICAgfSwgX3RoaXMub3B0aW9ucy5ob3ZlckRlbGF5KTtcbiAgICAgICAgfVxuICAgICAgfSkub24oJ21vdXNlbGVhdmUuemYuZHJvcGRvd24nLCBmdW5jdGlvbigpe1xuICAgICAgICBjbGVhclRpbWVvdXQoX3RoaXMudGltZW91dCk7XG4gICAgICAgIF90aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgX3RoaXMuY2xvc2UoKTtcbiAgICAgICAgICBfdGhpcy4kYW5jaG9yLmRhdGEoJ2hvdmVyJywgZmFsc2UpO1xuICAgICAgICB9LCBfdGhpcy5vcHRpb25zLmhvdmVyRGVsYXkpO1xuICAgICAgfSk7XG4gICAgICBpZih0aGlzLm9wdGlvbnMuaG92ZXJQYW5lKXtcbiAgICAgICAgdGhpcy4kZWxlbWVudC5vZmYoJ21vdXNlZW50ZXIuemYuZHJvcGRvd24gbW91c2VsZWF2ZS56Zi5kcm9wZG93bicpXG4gICAgICAgICAgICAub24oJ21vdXNlZW50ZXIuemYuZHJvcGRvd24nLCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoX3RoaXMudGltZW91dCk7XG4gICAgICAgICAgICB9KS5vbignbW91c2VsZWF2ZS56Zi5kcm9wZG93bicsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgIGNsZWFyVGltZW91dChfdGhpcy50aW1lb3V0KTtcbiAgICAgICAgICAgICAgX3RoaXMudGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBfdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIF90aGlzLiRhbmNob3IuZGF0YSgnaG92ZXInLCBmYWxzZSk7XG4gICAgICAgICAgICAgIH0sIF90aGlzLm9wdGlvbnMuaG92ZXJEZWxheSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy4kYW5jaG9yLmFkZCh0aGlzLiRlbGVtZW50KS5vbigna2V5ZG93bi56Zi5kcm9wZG93bicsIGZ1bmN0aW9uKGUpIHtcblxuICAgICAgdmFyICR0YXJnZXQgPSAkKHRoaXMpLFxuICAgICAgICB2aXNpYmxlRm9jdXNhYmxlRWxlbWVudHMgPSBGb3VuZGF0aW9uLktleWJvYXJkLmZpbmRGb2N1c2FibGUoX3RoaXMuJGVsZW1lbnQpO1xuXG4gICAgICBGb3VuZGF0aW9uLktleWJvYXJkLmhhbmRsZUtleShlLCAnRHJvcGRvd24nLCB7XG4gICAgICAgIG9wZW46IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmICgkdGFyZ2V0LmlzKF90aGlzLiRhbmNob3IpKSB7XG4gICAgICAgICAgICBfdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICBfdGhpcy4kZWxlbWVudC5hdHRyKCd0YWJpbmRleCcsIC0xKS5mb2N1cygpO1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIF90aGlzLmNsb3NlKCk7XG4gICAgICAgICAgX3RoaXMuJGFuY2hvci5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGV2ZW50IGhhbmRsZXIgdG8gdGhlIGJvZHkgdG8gY2xvc2UgYW55IGRyb3Bkb3ducyBvbiBhIGNsaWNrLlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9hZGRCb2R5SGFuZGxlcigpIHtcbiAgICAgdmFyICRib2R5ID0gJChkb2N1bWVudC5ib2R5KS5ub3QodGhpcy4kZWxlbWVudCksXG4gICAgICAgICBfdGhpcyA9IHRoaXM7XG4gICAgICRib2R5Lm9mZignY2xpY2suemYuZHJvcGRvd24nKVxuICAgICAgICAgIC5vbignY2xpY2suemYuZHJvcGRvd24nLCBmdW5jdGlvbihlKXtcbiAgICAgICAgICAgIGlmKF90aGlzLiRhbmNob3IuaXMoZS50YXJnZXQpIHx8IF90aGlzLiRhbmNob3IuZmluZChlLnRhcmdldCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKF90aGlzLiRlbGVtZW50LmZpbmQoZS50YXJnZXQpLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgJGJvZHkub2ZmKCdjbGljay56Zi5kcm9wZG93bicpO1xuICAgICAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBkcm9wZG93biBwYW5lLCBhbmQgZmlyZXMgYSBidWJibGluZyBldmVudCB0byBjbG9zZSBvdGhlciBkcm9wZG93bnMuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAZmlyZXMgRHJvcGRvd24jY2xvc2VtZVxuICAgKiBAZmlyZXMgRHJvcGRvd24jc2hvd1xuICAgKi9cbiAgb3BlbigpIHtcbiAgICAvLyB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIC8qKlxuICAgICAqIEZpcmVzIHRvIGNsb3NlIG90aGVyIG9wZW4gZHJvcGRvd25zXG4gICAgICogQGV2ZW50IERyb3Bkb3duI2Nsb3NlbWVcbiAgICAgKi9cbiAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ2Nsb3NlbWUuemYuZHJvcGRvd24nLCB0aGlzLiRlbGVtZW50LmF0dHIoJ2lkJykpO1xuICAgIHRoaXMuJGFuY2hvci5hZGRDbGFzcygnaG92ZXInKVxuICAgICAgICAuYXR0cih7J2FyaWEtZXhwYW5kZWQnOiB0cnVlfSk7XG4gICAgLy8gdGhpcy4kZWxlbWVudC8qLnNob3coKSovO1xuICAgIHRoaXMuX3NldFBvc2l0aW9uKCk7XG4gICAgdGhpcy4kZWxlbWVudC5hZGRDbGFzcygnaXMtb3BlbicpXG4gICAgICAgIC5hdHRyKHsnYXJpYS1oaWRkZW4nOiBmYWxzZX0pO1xuXG4gICAgaWYodGhpcy5vcHRpb25zLmF1dG9Gb2N1cyl7XG4gICAgICB2YXIgJGZvY3VzYWJsZSA9IEZvdW5kYXRpb24uS2V5Ym9hcmQuZmluZEZvY3VzYWJsZSh0aGlzLiRlbGVtZW50KTtcbiAgICAgIGlmKCRmb2N1c2FibGUubGVuZ3RoKXtcbiAgICAgICAgJGZvY3VzYWJsZS5lcSgwKS5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKHRoaXMub3B0aW9ucy5jbG9zZU9uQ2xpY2speyB0aGlzLl9hZGRCb2R5SGFuZGxlcigpOyB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnRyYXBGb2N1cykge1xuICAgICAgRm91bmRhdGlvbi5LZXlib2FyZC50cmFwRm9jdXModGhpcy4kZWxlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlyZXMgb25jZSB0aGUgZHJvcGRvd24gaXMgdmlzaWJsZS5cbiAgICAgKiBAZXZlbnQgRHJvcGRvd24jc2hvd1xuICAgICAqL1xuICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignc2hvdy56Zi5kcm9wZG93bicsIFt0aGlzLiRlbGVtZW50XSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBvcGVuIGRyb3Bkb3duIHBhbmUuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAZmlyZXMgRHJvcGRvd24jaGlkZVxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgaWYoIXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoJ2lzLW9wZW4nKSl7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoJ2lzLW9wZW4nKVxuICAgICAgICAuYXR0cih7J2FyaWEtaGlkZGVuJzogdHJ1ZX0pO1xuXG4gICAgdGhpcy4kYW5jaG9yLnJlbW92ZUNsYXNzKCdob3ZlcicpXG4gICAgICAgIC5hdHRyKCdhcmlhLWV4cGFuZGVkJywgZmFsc2UpO1xuXG4gICAgaWYodGhpcy5jbGFzc0NoYW5nZWQpe1xuICAgICAgdmFyIGN1clBvc2l0aW9uQ2xhc3MgPSB0aGlzLmdldFBvc2l0aW9uQ2xhc3MoKTtcbiAgICAgIGlmKGN1clBvc2l0aW9uQ2xhc3Mpe1xuICAgICAgICB0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKGN1clBvc2l0aW9uQ2xhc3MpO1xuICAgICAgfVxuICAgICAgdGhpcy4kZWxlbWVudC5hZGRDbGFzcyh0aGlzLm9wdGlvbnMucG9zaXRpb25DbGFzcylcbiAgICAgICAgICAvKi5oaWRlKCkqLy5jc3Moe2hlaWdodDogJycsIHdpZHRoOiAnJ30pO1xuICAgICAgdGhpcy5jbGFzc0NoYW5nZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuY291bnRlciA9IDQ7XG4gICAgICB0aGlzLnVzZWRQb3NpdGlvbnMubGVuZ3RoID0gMDtcbiAgICB9XG4gICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdoaWRlLnpmLmRyb3Bkb3duJywgW3RoaXMuJGVsZW1lbnRdKTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMudHJhcEZvY3VzKSB7XG4gICAgICBGb3VuZGF0aW9uLktleWJvYXJkLnJlbGVhc2VGb2N1cyh0aGlzLiRlbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgZHJvcGRvd24gcGFuZSdzIHZpc2liaWxpdHkuXG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgdG9nZ2xlKCkge1xuICAgIGlmKHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoJ2lzLW9wZW4nKSl7XG4gICAgICBpZih0aGlzLiRhbmNob3IuZGF0YSgnaG92ZXInKSkgcmV0dXJuO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1lbHNle1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSBkcm9wZG93bi5cbiAgICogQGZ1bmN0aW9uXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuJGVsZW1lbnQub2ZmKCcuemYudHJpZ2dlcicpLmhpZGUoKTtcbiAgICB0aGlzLiRhbmNob3Iub2ZmKCcuemYuZHJvcGRvd24nKTtcblxuICAgIEZvdW5kYXRpb24udW5yZWdpc3RlclBsdWdpbih0aGlzKTtcbiAgfVxufVxuXG5Ecm9wZG93bi5kZWZhdWx0cyA9IHtcbiAgLyoqXG4gICAqIENsYXNzIHRoYXQgZGVzaWduYXRlcyBib3VuZGluZyBjb250YWluZXIgb2YgRHJvcGRvd24gKERlZmF1bHQ6IHdpbmRvdylcbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAnZHJvcGRvd24tcGFyZW50J1xuICAgKi9cbiAgcGFyZW50Q2xhc3M6IG51bGwsXG4gIC8qKlxuICAgKiBBbW91bnQgb2YgdGltZSB0byBkZWxheSBvcGVuaW5nIGEgc3VibWVudSBvbiBob3ZlciBldmVudC5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAyNTBcbiAgICovXG4gIGhvdmVyRGVsYXk6IDI1MCxcbiAgLyoqXG4gICAqIEFsbG93IHN1Ym1lbnVzIHRvIG9wZW4gb24gaG92ZXIgZXZlbnRzXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIGhvdmVyOiBmYWxzZSxcbiAgLyoqXG4gICAqIERvbid0IGNsb3NlIGRyb3Bkb3duIHdoZW4gaG92ZXJpbmcgb3ZlciBkcm9wZG93biBwYW5lXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgdHJ1ZVxuICAgKi9cbiAgaG92ZXJQYW5lOiBmYWxzZSxcbiAgLyoqXG4gICAqIE51bWJlciBvZiBwaXhlbHMgYmV0d2VlbiB0aGUgZHJvcGRvd24gcGFuZSBhbmQgdGhlIHRyaWdnZXJpbmcgZWxlbWVudCBvbiBvcGVuLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIDFcbiAgICovXG4gIHZPZmZzZXQ6IDEsXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgcGl4ZWxzIGJldHdlZW4gdGhlIGRyb3Bkb3duIHBhbmUgYW5kIHRoZSB0cmlnZ2VyaW5nIGVsZW1lbnQgb24gb3Blbi5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAxXG4gICAqL1xuICBoT2Zmc2V0OiAxLFxuICAvKipcbiAgICogQ2xhc3MgYXBwbGllZCB0byBhZGp1c3Qgb3BlbiBwb3NpdGlvbi4gSlMgd2lsbCB0ZXN0IGFuZCBmaWxsIHRoaXMgaW4uXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgJ3RvcCdcbiAgICovXG4gIHBvc2l0aW9uQ2xhc3M6ICcnLFxuICAvKipcbiAgICogQWxsb3cgdGhlIHBsdWdpbiB0byB0cmFwIGZvY3VzIHRvIHRoZSBkcm9wZG93biBwYW5lIGlmIG9wZW5lZCB3aXRoIGtleWJvYXJkIGNvbW1hbmRzLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIGZhbHNlXG4gICAqL1xuICB0cmFwRm9jdXM6IGZhbHNlLFxuICAvKipcbiAgICogQWxsb3cgdGhlIHBsdWdpbiB0byBzZXQgZm9jdXMgdG8gdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50IHdpdGhpbiB0aGUgcGFuZSwgcmVnYXJkbGVzcyBvZiBtZXRob2Qgb2Ygb3BlbmluZy5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSB0cnVlXG4gICAqL1xuICBhdXRvRm9jdXM6IGZhbHNlLFxuICAvKipcbiAgICogQWxsb3dzIGEgY2xpY2sgb24gdGhlIGJvZHkgdG8gY2xvc2UgdGhlIGRyb3Bkb3duLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIGZhbHNlXG4gICAqL1xuICBjbG9zZU9uQ2xpY2s6IGZhbHNlXG59XG5cbi8vIFdpbmRvdyBleHBvcnRzXG5Gb3VuZGF0aW9uLnBsdWdpbihEcm9wZG93biwgJ0Ryb3Bkb3duJyk7XG5cbn0oalF1ZXJ5KTtcbiIsIid1c2Ugc3RyaWN0JztcblxuIWZ1bmN0aW9uKCQpIHtcblxuLyoqXG4gKiBEcm9wZG93bk1lbnUgbW9kdWxlLlxuICogQG1vZHVsZSBmb3VuZGF0aW9uLmRyb3Bkb3duLW1lbnVcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwua2V5Ym9hcmRcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwuYm94XG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLm5lc3RcbiAqL1xuXG5jbGFzcyBEcm9wZG93bk1lbnUge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBEcm9wZG93bk1lbnUuXG4gICAqIEBjbGFzc1xuICAgKiBAZmlyZXMgRHJvcGRvd25NZW51I2luaXRcbiAgICogQHBhcmFtIHtqUXVlcnl9IGVsZW1lbnQgLSBqUXVlcnkgb2JqZWN0IHRvIG1ha2UgaW50byBhIGRyb3Bkb3duIG1lbnUuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gT3ZlcnJpZGVzIHRvIHRoZSBkZWZhdWx0IHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRlbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgRHJvcGRvd25NZW51LmRlZmF1bHRzLCB0aGlzLiRlbGVtZW50LmRhdGEoKSwgb3B0aW9ucyk7XG5cbiAgICBGb3VuZGF0aW9uLk5lc3QuRmVhdGhlcih0aGlzLiRlbGVtZW50LCAnZHJvcGRvd24nKTtcbiAgICB0aGlzLl9pbml0KCk7XG5cbiAgICBGb3VuZGF0aW9uLnJlZ2lzdGVyUGx1Z2luKHRoaXMsICdEcm9wZG93bk1lbnUnKTtcbiAgICBGb3VuZGF0aW9uLktleWJvYXJkLnJlZ2lzdGVyKCdEcm9wZG93bk1lbnUnLCB7XG4gICAgICAnRU5URVInOiAnb3BlbicsXG4gICAgICAnU1BBQ0UnOiAnb3BlbicsXG4gICAgICAnQVJST1dfUklHSFQnOiAnbmV4dCcsXG4gICAgICAnQVJST1dfVVAnOiAndXAnLFxuICAgICAgJ0FSUk9XX0RPV04nOiAnZG93bicsXG4gICAgICAnQVJST1dfTEVGVCc6ICdwcmV2aW91cycsXG4gICAgICAnRVNDQVBFJzogJ2Nsb3NlJ1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBwbHVnaW4sIGFuZCBjYWxscyBfcHJlcGFyZU1lbnVcbiAgICogQHByaXZhdGVcbiAgICogQGZ1bmN0aW9uXG4gICAqL1xuICBfaW5pdCgpIHtcbiAgICB2YXIgc3VicyA9IHRoaXMuJGVsZW1lbnQuZmluZCgnbGkuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQnKTtcbiAgICB0aGlzLiRlbGVtZW50LmNoaWxkcmVuKCcuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQnKS5jaGlsZHJlbignLmlzLWRyb3Bkb3duLXN1Ym1lbnUnKS5hZGRDbGFzcygnZmlyc3Qtc3ViJyk7XG5cbiAgICB0aGlzLiRtZW51SXRlbXMgPSB0aGlzLiRlbGVtZW50LmZpbmQoJ1tyb2xlPVwibWVudWl0ZW1cIl0nKTtcbiAgICB0aGlzLiR0YWJzID0gdGhpcy4kZWxlbWVudC5jaGlsZHJlbignW3JvbGU9XCJtZW51aXRlbVwiXScpO1xuICAgIHRoaXMuJHRhYnMuZmluZCgndWwuaXMtZHJvcGRvd24tc3VibWVudScpLmFkZENsYXNzKHRoaXMub3B0aW9ucy52ZXJ0aWNhbENsYXNzKTtcblxuICAgIGlmICh0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKHRoaXMub3B0aW9ucy5yaWdodENsYXNzKSB8fCB0aGlzLm9wdGlvbnMuYWxpZ25tZW50ID09PSAncmlnaHQnIHx8IEZvdW5kYXRpb24ucnRsKCkgfHwgdGhpcy4kZWxlbWVudC5wYXJlbnRzKCcudG9wLWJhci1yaWdodCcpLmlzKCcqJykpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5hbGlnbm1lbnQgPSAncmlnaHQnO1xuICAgICAgc3Vicy5hZGRDbGFzcygnb3BlbnMtbGVmdCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdWJzLmFkZENsYXNzKCdvcGVucy1yaWdodCcpO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9ldmVudHMoKTtcbiAgfTtcblxuICBfaXNWZXJ0aWNhbCgpIHtcbiAgICByZXR1cm4gdGhpcy4kdGFicy5jc3MoJ2Rpc3BsYXknKSA9PT0gJ2Jsb2NrJztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGV2ZW50IGxpc3RlbmVycyB0byBlbGVtZW50cyB3aXRoaW4gdGhlIG1lbnVcbiAgICogQHByaXZhdGVcbiAgICogQGZ1bmN0aW9uXG4gICAqL1xuICBfZXZlbnRzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXMsXG4gICAgICAgIGhhc1RvdWNoID0gJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8ICh0eXBlb2Ygd2luZG93Lm9udG91Y2hzdGFydCAhPT0gJ3VuZGVmaW5lZCcpLFxuICAgICAgICBwYXJDbGFzcyA9ICdpcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCc7XG5cbiAgICAvLyB1c2VkIGZvciBvbkNsaWNrIGFuZCBpbiB0aGUga2V5Ym9hcmQgaGFuZGxlcnNcbiAgICB2YXIgaGFuZGxlQ2xpY2tGbiA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHZhciAkZWxlbSA9ICQoZS50YXJnZXQpLnBhcmVudHNVbnRpbCgndWwnLCBgLiR7cGFyQ2xhc3N9YCksXG4gICAgICAgICAgaGFzU3ViID0gJGVsZW0uaGFzQ2xhc3MocGFyQ2xhc3MpLFxuICAgICAgICAgIGhhc0NsaWNrZWQgPSAkZWxlbS5hdHRyKCdkYXRhLWlzLWNsaWNrJykgPT09ICd0cnVlJyxcbiAgICAgICAgICAkc3ViID0gJGVsZW0uY2hpbGRyZW4oJy5pcy1kcm9wZG93bi1zdWJtZW51Jyk7XG5cbiAgICAgIGlmIChoYXNTdWIpIHtcbiAgICAgICAgaWYgKGhhc0NsaWNrZWQpIHtcbiAgICAgICAgICBpZiAoIV90aGlzLm9wdGlvbnMuY2xvc2VPbkNsaWNrIHx8ICghX3RoaXMub3B0aW9ucy5jbGlja09wZW4gJiYgIWhhc1RvdWNoKSB8fCAoX3RoaXMub3B0aW9ucy5mb3JjZUZvbGxvdyAmJiBoYXNUb3VjaCkpIHsgcmV0dXJuOyB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgX3RoaXMuX2hpZGUoJGVsZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBfdGhpcy5fc2hvdygkc3ViKTtcbiAgICAgICAgICAkZWxlbS5hZGQoJGVsZW0ucGFyZW50c1VudGlsKF90aGlzLiRlbGVtZW50LCBgLiR7cGFyQ2xhc3N9YCkpLmF0dHIoJ2RhdGEtaXMtY2xpY2snLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmNsaWNrT3BlbiB8fCBoYXNUb3VjaCkge1xuICAgICAgdGhpcy4kbWVudUl0ZW1zLm9uKCdjbGljay56Zi5kcm9wZG93bm1lbnUgdG91Y2hzdGFydC56Zi5kcm9wZG93bm1lbnUnLCBoYW5kbGVDbGlja0ZuKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgTGVhZiBlbGVtZW50IENsaWNrc1xuICAgIGlmKF90aGlzLm9wdGlvbnMuY2xvc2VPbkNsaWNrSW5zaWRlKXtcbiAgICAgIHRoaXMuJG1lbnVJdGVtcy5vbignY2xpY2suemYuZHJvcGRvd25tZW51IHRvdWNoZW5kLnpmLmRyb3Bkb3dubWVudScsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgdmFyICRlbGVtID0gJCh0aGlzKSxcbiAgICAgICAgICAgIGhhc1N1YiA9ICRlbGVtLmhhc0NsYXNzKHBhckNsYXNzKTtcbiAgICAgICAgaWYoIWhhc1N1Yil7XG4gICAgICAgICAgX3RoaXMuX2hpZGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuZGlzYWJsZUhvdmVyKSB7XG4gICAgICB0aGlzLiRtZW51SXRlbXMub24oJ21vdXNlZW50ZXIuemYuZHJvcGRvd25tZW51JywgZnVuY3Rpb24oZSkge1xuICAgICAgICB2YXIgJGVsZW0gPSAkKHRoaXMpLFxuICAgICAgICAgICAgaGFzU3ViID0gJGVsZW0uaGFzQ2xhc3MocGFyQ2xhc3MpO1xuXG4gICAgICAgIGlmIChoYXNTdWIpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoJGVsZW0uZGF0YSgnX2RlbGF5JykpO1xuICAgICAgICAgICRlbGVtLmRhdGEoJ19kZWxheScsIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBfdGhpcy5fc2hvdygkZWxlbS5jaGlsZHJlbignLmlzLWRyb3Bkb3duLXN1Ym1lbnUnKSk7XG4gICAgICAgICAgfSwgX3RoaXMub3B0aW9ucy5ob3ZlckRlbGF5KSk7XG4gICAgICAgIH1cbiAgICAgIH0pLm9uKCdtb3VzZWxlYXZlLnpmLmRyb3Bkb3dubWVudScsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgdmFyICRlbGVtID0gJCh0aGlzKSxcbiAgICAgICAgICAgIGhhc1N1YiA9ICRlbGVtLmhhc0NsYXNzKHBhckNsYXNzKTtcbiAgICAgICAgaWYgKGhhc1N1YiAmJiBfdGhpcy5vcHRpb25zLmF1dG9jbG9zZSkge1xuICAgICAgICAgIGlmICgkZWxlbS5hdHRyKCdkYXRhLWlzLWNsaWNrJykgPT09ICd0cnVlJyAmJiBfdGhpcy5vcHRpb25zLmNsaWNrT3BlbikgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgICAgICAgIGNsZWFyVGltZW91dCgkZWxlbS5kYXRhKCdfZGVsYXknKSk7XG4gICAgICAgICAgJGVsZW0uZGF0YSgnX2RlbGF5Jywgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIF90aGlzLl9oaWRlKCRlbGVtKTtcbiAgICAgICAgICB9LCBfdGhpcy5vcHRpb25zLmNsb3NpbmdUaW1lKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLiRtZW51SXRlbXMub24oJ2tleWRvd24uemYuZHJvcGRvd25tZW51JywgZnVuY3Rpb24oZSkge1xuICAgICAgdmFyICRlbGVtZW50ID0gJChlLnRhcmdldCkucGFyZW50c1VudGlsKCd1bCcsICdbcm9sZT1cIm1lbnVpdGVtXCJdJyksXG4gICAgICAgICAgaXNUYWIgPSBfdGhpcy4kdGFicy5pbmRleCgkZWxlbWVudCkgPiAtMSxcbiAgICAgICAgICAkZWxlbWVudHMgPSBpc1RhYiA/IF90aGlzLiR0YWJzIDogJGVsZW1lbnQuc2libGluZ3MoJ2xpJykuYWRkKCRlbGVtZW50KSxcbiAgICAgICAgICAkcHJldkVsZW1lbnQsXG4gICAgICAgICAgJG5leHRFbGVtZW50O1xuXG4gICAgICAkZWxlbWVudHMuZWFjaChmdW5jdGlvbihpKSB7XG4gICAgICAgIGlmICgkKHRoaXMpLmlzKCRlbGVtZW50KSkge1xuICAgICAgICAgICRwcmV2RWxlbWVudCA9ICRlbGVtZW50cy5lcShpLTEpO1xuICAgICAgICAgICRuZXh0RWxlbWVudCA9ICRlbGVtZW50cy5lcShpKzEpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHZhciBuZXh0U2libGluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoISRlbGVtZW50LmlzKCc6bGFzdC1jaGlsZCcpKSB7XG4gICAgICAgICAgJG5leHRFbGVtZW50LmNoaWxkcmVuKCdhOmZpcnN0JykuZm9jdXMoKTtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH0sIHByZXZTaWJsaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICRwcmV2RWxlbWVudC5jaGlsZHJlbignYTpmaXJzdCcpLmZvY3VzKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH0sIG9wZW5TdWIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyICRzdWIgPSAkZWxlbWVudC5jaGlsZHJlbigndWwuaXMtZHJvcGRvd24tc3VibWVudScpO1xuICAgICAgICBpZiAoJHN1Yi5sZW5ndGgpIHtcbiAgICAgICAgICBfdGhpcy5fc2hvdygkc3ViKTtcbiAgICAgICAgICAkZWxlbWVudC5maW5kKCdsaSA+IGE6Zmlyc3QnKS5mb2N1cygpO1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIHsgcmV0dXJuOyB9XG4gICAgICB9LCBjbG9zZVN1YiA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAvL2lmICgkZWxlbWVudC5pcygnOmZpcnN0LWNoaWxkJykpIHtcbiAgICAgICAgdmFyIGNsb3NlID0gJGVsZW1lbnQucGFyZW50KCd1bCcpLnBhcmVudCgnbGknKTtcbiAgICAgICAgY2xvc2UuY2hpbGRyZW4oJ2E6Zmlyc3QnKS5mb2N1cygpO1xuICAgICAgICBfdGhpcy5faGlkZShjbG9zZSk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgLy99XG4gICAgICB9O1xuICAgICAgdmFyIGZ1bmN0aW9ucyA9IHtcbiAgICAgICAgb3Blbjogb3BlblN1YixcbiAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIF90aGlzLl9oaWRlKF90aGlzLiRlbGVtZW50KTtcbiAgICAgICAgICBfdGhpcy4kbWVudUl0ZW1zLmZpbmQoJ2E6Zmlyc3QnKS5mb2N1cygpOyAvLyBmb2N1cyB0byBmaXJzdCBlbGVtZW50XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9LFxuICAgICAgICBoYW5kbGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAoaXNUYWIpIHtcbiAgICAgICAgaWYgKF90aGlzLl9pc1ZlcnRpY2FsKCkpIHsgLy8gdmVydGljYWwgbWVudVxuICAgICAgICAgIGlmIChGb3VuZGF0aW9uLnJ0bCgpKSB7IC8vIHJpZ2h0IGFsaWduZWRcbiAgICAgICAgICAgICQuZXh0ZW5kKGZ1bmN0aW9ucywge1xuICAgICAgICAgICAgICBkb3duOiBuZXh0U2libGluZyxcbiAgICAgICAgICAgICAgdXA6IHByZXZTaWJsaW5nLFxuICAgICAgICAgICAgICBuZXh0OiBjbG9zZVN1YixcbiAgICAgICAgICAgICAgcHJldmlvdXM6IG9wZW5TdWJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7IC8vIGxlZnQgYWxpZ25lZFxuICAgICAgICAgICAgJC5leHRlbmQoZnVuY3Rpb25zLCB7XG4gICAgICAgICAgICAgIGRvd246IG5leHRTaWJsaW5nLFxuICAgICAgICAgICAgICB1cDogcHJldlNpYmxpbmcsXG4gICAgICAgICAgICAgIG5leHQ6IG9wZW5TdWIsXG4gICAgICAgICAgICAgIHByZXZpb3VzOiBjbG9zZVN1YlxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgeyAvLyBob3Jpem9udGFsIG1lbnVcbiAgICAgICAgICBpZiAoRm91bmRhdGlvbi5ydGwoKSkgeyAvLyByaWdodCBhbGlnbmVkXG4gICAgICAgICAgICAkLmV4dGVuZChmdW5jdGlvbnMsIHtcbiAgICAgICAgICAgICAgbmV4dDogcHJldlNpYmxpbmcsXG4gICAgICAgICAgICAgIHByZXZpb3VzOiBuZXh0U2libGluZyxcbiAgICAgICAgICAgICAgZG93bjogb3BlblN1YixcbiAgICAgICAgICAgICAgdXA6IGNsb3NlU3ViXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgeyAvLyBsZWZ0IGFsaWduZWRcbiAgICAgICAgICAgICQuZXh0ZW5kKGZ1bmN0aW9ucywge1xuICAgICAgICAgICAgICBuZXh0OiBuZXh0U2libGluZyxcbiAgICAgICAgICAgICAgcHJldmlvdXM6IHByZXZTaWJsaW5nLFxuICAgICAgICAgICAgICBkb3duOiBvcGVuU3ViLFxuICAgICAgICAgICAgICB1cDogY2xvc2VTdWJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHsgLy8gbm90IHRhYnMgLT4gb25lIHN1YlxuICAgICAgICBpZiAoRm91bmRhdGlvbi5ydGwoKSkgeyAvLyByaWdodCBhbGlnbmVkXG4gICAgICAgICAgJC5leHRlbmQoZnVuY3Rpb25zLCB7XG4gICAgICAgICAgICBuZXh0OiBjbG9zZVN1YixcbiAgICAgICAgICAgIHByZXZpb3VzOiBvcGVuU3ViLFxuICAgICAgICAgICAgZG93bjogbmV4dFNpYmxpbmcsXG4gICAgICAgICAgICB1cDogcHJldlNpYmxpbmdcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHsgLy8gbGVmdCBhbGlnbmVkXG4gICAgICAgICAgJC5leHRlbmQoZnVuY3Rpb25zLCB7XG4gICAgICAgICAgICBuZXh0OiBvcGVuU3ViLFxuICAgICAgICAgICAgcHJldmlvdXM6IGNsb3NlU3ViLFxuICAgICAgICAgICAgZG93bjogbmV4dFNpYmxpbmcsXG4gICAgICAgICAgICB1cDogcHJldlNpYmxpbmdcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgRm91bmRhdGlvbi5LZXlib2FyZC5oYW5kbGVLZXkoZSwgJ0Ryb3Bkb3duTWVudScsIGZ1bmN0aW9ucyk7XG5cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGV2ZW50IGhhbmRsZXIgdG8gdGhlIGJvZHkgdG8gY2xvc2UgYW55IGRyb3Bkb3ducyBvbiBhIGNsaWNrLlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9hZGRCb2R5SGFuZGxlcigpIHtcbiAgICB2YXIgJGJvZHkgPSAkKGRvY3VtZW50LmJvZHkpLFxuICAgICAgICBfdGhpcyA9IHRoaXM7XG4gICAgJGJvZHkub2ZmKCdtb3VzZXVwLnpmLmRyb3Bkb3dubWVudSB0b3VjaGVuZC56Zi5kcm9wZG93bm1lbnUnKVxuICAgICAgICAgLm9uKCdtb3VzZXVwLnpmLmRyb3Bkb3dubWVudSB0b3VjaGVuZC56Zi5kcm9wZG93bm1lbnUnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgIHZhciAkbGluayA9IF90aGlzLiRlbGVtZW50LmZpbmQoZS50YXJnZXQpO1xuICAgICAgICAgICBpZiAoJGxpbmsubGVuZ3RoKSB7IHJldHVybjsgfVxuXG4gICAgICAgICAgIF90aGlzLl9oaWRlKCk7XG4gICAgICAgICAgICRib2R5Lm9mZignbW91c2V1cC56Zi5kcm9wZG93bm1lbnUgdG91Y2hlbmQuemYuZHJvcGRvd25tZW51Jyk7XG4gICAgICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyBhIGRyb3Bkb3duIHBhbmUsIGFuZCBjaGVja3MgZm9yIGNvbGxpc2lvbnMgZmlyc3QuXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkc3ViIC0gdWwgZWxlbWVudCB0aGF0IGlzIGEgc3VibWVudSB0byBzaG93XG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKiBAZmlyZXMgRHJvcGRvd25NZW51I3Nob3dcbiAgICovXG4gIF9zaG93KCRzdWIpIHtcbiAgICB2YXIgaWR4ID0gdGhpcy4kdGFicy5pbmRleCh0aGlzLiR0YWJzLmZpbHRlcihmdW5jdGlvbihpLCBlbCkge1xuICAgICAgcmV0dXJuICQoZWwpLmZpbmQoJHN1YikubGVuZ3RoID4gMDtcbiAgICB9KSk7XG4gICAgdmFyICRzaWJzID0gJHN1Yi5wYXJlbnQoJ2xpLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50Jykuc2libGluZ3MoJ2xpLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50Jyk7XG4gICAgdGhpcy5faGlkZSgkc2licywgaWR4KTtcbiAgICAkc3ViLmNzcygndmlzaWJpbGl0eScsICdoaWRkZW4nKS5hZGRDbGFzcygnanMtZHJvcGRvd24tYWN0aXZlJylcbiAgICAgICAgLnBhcmVudCgnbGkuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQnKS5hZGRDbGFzcygnaXMtYWN0aXZlJyk7XG4gICAgdmFyIGNsZWFyID0gRm91bmRhdGlvbi5Cb3guSW1Ob3RUb3VjaGluZ1lvdSgkc3ViLCBudWxsLCB0cnVlKTtcbiAgICBpZiAoIWNsZWFyKSB7XG4gICAgICB2YXIgb2xkQ2xhc3MgPSB0aGlzLm9wdGlvbnMuYWxpZ25tZW50ID09PSAnbGVmdCcgPyAnLXJpZ2h0JyA6ICctbGVmdCcsXG4gICAgICAgICAgJHBhcmVudExpID0gJHN1Yi5wYXJlbnQoJy5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCcpO1xuICAgICAgJHBhcmVudExpLnJlbW92ZUNsYXNzKGBvcGVucyR7b2xkQ2xhc3N9YCkuYWRkQ2xhc3MoYG9wZW5zLSR7dGhpcy5vcHRpb25zLmFsaWdubWVudH1gKTtcbiAgICAgIGNsZWFyID0gRm91bmRhdGlvbi5Cb3guSW1Ob3RUb3VjaGluZ1lvdSgkc3ViLCBudWxsLCB0cnVlKTtcbiAgICAgIGlmICghY2xlYXIpIHtcbiAgICAgICAgJHBhcmVudExpLnJlbW92ZUNsYXNzKGBvcGVucy0ke3RoaXMub3B0aW9ucy5hbGlnbm1lbnR9YCkuYWRkQ2xhc3MoJ29wZW5zLWlubmVyJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZWQgPSB0cnVlO1xuICAgIH1cbiAgICAkc3ViLmNzcygndmlzaWJpbGl0eScsICcnKTtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNsb3NlT25DbGljaykgeyB0aGlzLl9hZGRCb2R5SGFuZGxlcigpOyB9XG4gICAgLyoqXG4gICAgICogRmlyZXMgd2hlbiB0aGUgbmV3IGRyb3Bkb3duIHBhbmUgaXMgdmlzaWJsZS5cbiAgICAgKiBAZXZlbnQgRHJvcGRvd25NZW51I3Nob3dcbiAgICAgKi9cbiAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ3Nob3cuemYuZHJvcGRvd25tZW51JywgWyRzdWJdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlcyBhIHNpbmdsZSwgY3VycmVudGx5IG9wZW4gZHJvcGRvd24gcGFuZSwgaWYgcGFzc2VkIGEgcGFyYW1ldGVyLCBvdGhlcndpc2UsIGhpZGVzIGV2ZXJ5dGhpbmcuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJGVsZW0gLSBlbGVtZW50IHdpdGggYSBzdWJtZW51IHRvIGhpZGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGlkeCAtIGluZGV4IG9mIHRoZSAkdGFicyBjb2xsZWN0aW9uIHRvIGhpZGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9oaWRlKCRlbGVtLCBpZHgpIHtcbiAgICB2YXIgJHRvQ2xvc2U7XG4gICAgaWYgKCRlbGVtICYmICRlbGVtLmxlbmd0aCkge1xuICAgICAgJHRvQ2xvc2UgPSAkZWxlbTtcbiAgICB9IGVsc2UgaWYgKGlkeCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAkdG9DbG9zZSA9IHRoaXMuJHRhYnMubm90KGZ1bmN0aW9uKGksIGVsKSB7XG4gICAgICAgIHJldHVybiBpID09PSBpZHg7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAkdG9DbG9zZSA9IHRoaXMuJGVsZW1lbnQ7XG4gICAgfVxuICAgIHZhciBzb21ldGhpbmdUb0Nsb3NlID0gJHRvQ2xvc2UuaGFzQ2xhc3MoJ2lzLWFjdGl2ZScpIHx8ICR0b0Nsb3NlLmZpbmQoJy5pcy1hY3RpdmUnKS5sZW5ndGggPiAwO1xuXG4gICAgaWYgKHNvbWV0aGluZ1RvQ2xvc2UpIHtcbiAgICAgICR0b0Nsb3NlLmZpbmQoJ2xpLmlzLWFjdGl2ZScpLmFkZCgkdG9DbG9zZSkuYXR0cih7XG4gICAgICAgICdkYXRhLWlzLWNsaWNrJzogZmFsc2VcbiAgICAgIH0pLnJlbW92ZUNsYXNzKCdpcy1hY3RpdmUnKTtcblxuICAgICAgJHRvQ2xvc2UuZmluZCgndWwuanMtZHJvcGRvd24tYWN0aXZlJykucmVtb3ZlQ2xhc3MoJ2pzLWRyb3Bkb3duLWFjdGl2ZScpO1xuXG4gICAgICBpZiAodGhpcy5jaGFuZ2VkIHx8ICR0b0Nsb3NlLmZpbmQoJ29wZW5zLWlubmVyJykubGVuZ3RoKSB7XG4gICAgICAgIHZhciBvbGRDbGFzcyA9IHRoaXMub3B0aW9ucy5hbGlnbm1lbnQgPT09ICdsZWZ0JyA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgICAgICR0b0Nsb3NlLmZpbmQoJ2xpLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50JykuYWRkKCR0b0Nsb3NlKVxuICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcyhgb3BlbnMtaW5uZXIgb3BlbnMtJHt0aGlzLm9wdGlvbnMuYWxpZ25tZW50fWApXG4gICAgICAgICAgICAgICAgLmFkZENsYXNzKGBvcGVucy0ke29sZENsYXNzfWApO1xuICAgICAgICB0aGlzLmNoYW5nZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8qKlxuICAgICAgICogRmlyZXMgd2hlbiB0aGUgb3BlbiBtZW51cyBhcmUgY2xvc2VkLlxuICAgICAgICogQGV2ZW50IERyb3Bkb3duTWVudSNoaWRlXG4gICAgICAgKi9cbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignaGlkZS56Zi5kcm9wZG93bm1lbnUnLCBbJHRvQ2xvc2VdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgdGhlIHBsdWdpbi5cbiAgICogQGZ1bmN0aW9uXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuJG1lbnVJdGVtcy5vZmYoJy56Zi5kcm9wZG93bm1lbnUnKS5yZW1vdmVBdHRyKCdkYXRhLWlzLWNsaWNrJylcbiAgICAgICAgLnJlbW92ZUNsYXNzKCdpcy1yaWdodC1hcnJvdyBpcy1sZWZ0LWFycm93IGlzLWRvd24tYXJyb3cgb3BlbnMtcmlnaHQgb3BlbnMtbGVmdCBvcGVucy1pbm5lcicpO1xuICAgICQoZG9jdW1lbnQuYm9keSkub2ZmKCcuemYuZHJvcGRvd25tZW51Jyk7XG4gICAgRm91bmRhdGlvbi5OZXN0LkJ1cm4odGhpcy4kZWxlbWVudCwgJ2Ryb3Bkb3duJyk7XG4gICAgRm91bmRhdGlvbi51bnJlZ2lzdGVyUGx1Z2luKHRoaXMpO1xuICB9XG59XG5cbi8qKlxuICogRGVmYXVsdCBzZXR0aW5ncyBmb3IgcGx1Z2luXG4gKi9cbkRyb3Bkb3duTWVudS5kZWZhdWx0cyA9IHtcbiAgLyoqXG4gICAqIERpc2FsbG93cyBob3ZlciBldmVudHMgZnJvbSBvcGVuaW5nIHN1Ym1lbnVzXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIGRpc2FibGVIb3ZlcjogZmFsc2UsXG4gIC8qKlxuICAgKiBBbGxvdyBhIHN1Ym1lbnUgdG8gYXV0b21hdGljYWxseSBjbG9zZSBvbiBhIG1vdXNlbGVhdmUgZXZlbnQsIGlmIG5vdCBjbGlja2VkIG9wZW4uXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgdHJ1ZVxuICAgKi9cbiAgYXV0b2Nsb3NlOiB0cnVlLFxuICAvKipcbiAgICogQW1vdW50IG9mIHRpbWUgdG8gZGVsYXkgb3BlbmluZyBhIHN1Ym1lbnUgb24gaG92ZXIgZXZlbnQuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgNTBcbiAgICovXG4gIGhvdmVyRGVsYXk6IDUwLFxuICAvKipcbiAgICogQWxsb3cgYSBzdWJtZW51IHRvIG9wZW4vcmVtYWluIG9wZW4gb24gcGFyZW50IGNsaWNrIGV2ZW50LiBBbGxvd3MgY3Vyc29yIHRvIG1vdmUgYXdheSBmcm9tIG1lbnUuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgdHJ1ZVxuICAgKi9cbiAgY2xpY2tPcGVuOiBmYWxzZSxcbiAgLyoqXG4gICAqIEFtb3VudCBvZiB0aW1lIHRvIGRlbGF5IGNsb3NpbmcgYSBzdWJtZW51IG9uIGEgbW91c2VsZWF2ZSBldmVudC5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSA1MDBcbiAgICovXG5cbiAgY2xvc2luZ1RpbWU6IDUwMCxcbiAgLyoqXG4gICAqIFBvc2l0aW9uIG9mIHRoZSBtZW51IHJlbGF0aXZlIHRvIHdoYXQgZGlyZWN0aW9uIHRoZSBzdWJtZW51cyBzaG91bGQgb3Blbi4gSGFuZGxlZCBieSBKUy5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAnbGVmdCdcbiAgICovXG4gIGFsaWdubWVudDogJ2xlZnQnLFxuICAvKipcbiAgICogQWxsb3cgY2xpY2tzIG9uIHRoZSBib2R5IHRvIGNsb3NlIGFueSBvcGVuIHN1Ym1lbnVzLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIHRydWVcbiAgICovXG4gIGNsb3NlT25DbGljazogdHJ1ZSxcbiAgLyoqXG4gICAqIEFsbG93IGNsaWNrcyBvbiBsZWFmIGFuY2hvciBsaW5rcyB0byBjbG9zZSBhbnkgb3BlbiBzdWJtZW51cy5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSB0cnVlXG4gICAqL1xuICBjbG9zZU9uQ2xpY2tJbnNpZGU6IHRydWUsXG4gIC8qKlxuICAgKiBDbGFzcyBhcHBsaWVkIHRvIHZlcnRpY2FsIG9yaWVudGVkIG1lbnVzLCBGb3VuZGF0aW9uIGRlZmF1bHQgaXMgYHZlcnRpY2FsYC4gVXBkYXRlIHRoaXMgaWYgdXNpbmcgeW91ciBvd24gY2xhc3MuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgJ3ZlcnRpY2FsJ1xuICAgKi9cbiAgdmVydGljYWxDbGFzczogJ3ZlcnRpY2FsJyxcbiAgLyoqXG4gICAqIENsYXNzIGFwcGxpZWQgdG8gcmlnaHQtc2lkZSBvcmllbnRlZCBtZW51cywgRm91bmRhdGlvbiBkZWZhdWx0IGlzIGBhbGlnbi1yaWdodGAuIFVwZGF0ZSB0aGlzIGlmIHVzaW5nIHlvdXIgb3duIGNsYXNzLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlICdhbGlnbi1yaWdodCdcbiAgICovXG4gIHJpZ2h0Q2xhc3M6ICdhbGlnbi1yaWdodCcsXG4gIC8qKlxuICAgKiBCb29sZWFuIHRvIGZvcmNlIG92ZXJpZGUgdGhlIGNsaWNraW5nIG9mIGxpbmtzIHRvIHBlcmZvcm0gZGVmYXVsdCBhY3Rpb24sIG9uIHNlY29uZCB0b3VjaCBldmVudCBmb3IgbW9iaWxlLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIGZhbHNlXG4gICAqL1xuICBmb3JjZUZvbGxvdzogdHJ1ZVxufTtcblxuLy8gV2luZG93IGV4cG9ydHNcbkZvdW5kYXRpb24ucGx1Z2luKERyb3Bkb3duTWVudSwgJ0Ryb3Bkb3duTWVudScpO1xuXG59KGpRdWVyeSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbiFmdW5jdGlvbigkKSB7XG5cbi8qKlxuICogRXF1YWxpemVyIG1vZHVsZS5cbiAqIEBtb2R1bGUgZm91bmRhdGlvbi5lcXVhbGl6ZXJcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwubWVkaWFRdWVyeVxuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC50aW1lckFuZEltYWdlTG9hZGVyIGlmIGVxdWFsaXplciBjb250YWlucyBpbWFnZXNcbiAqL1xuXG5jbGFzcyBFcXVhbGl6ZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBFcXVhbGl6ZXIuXG4gICAqIEBjbGFzc1xuICAgKiBAZmlyZXMgRXF1YWxpemVyI2luaXRcbiAgICogQHBhcmFtIHtPYmplY3R9IGVsZW1lbnQgLSBqUXVlcnkgb2JqZWN0IHRvIGFkZCB0aGUgdHJpZ2dlciB0by5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBPdmVycmlkZXMgdG8gdGhlIGRlZmF1bHQgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZWxlbWVudCwgb3B0aW9ucyl7XG4gICAgdGhpcy4kZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5vcHRpb25zICA9ICQuZXh0ZW5kKHt9LCBFcXVhbGl6ZXIuZGVmYXVsdHMsIHRoaXMuJGVsZW1lbnQuZGF0YSgpLCBvcHRpb25zKTtcblxuICAgIHRoaXMuX2luaXQoKTtcblxuICAgIEZvdW5kYXRpb24ucmVnaXN0ZXJQbHVnaW4odGhpcywgJ0VxdWFsaXplcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBFcXVhbGl6ZXIgcGx1Z2luIGFuZCBjYWxscyBmdW5jdGlvbnMgdG8gZ2V0IGVxdWFsaXplciBmdW5jdGlvbmluZyBvbiBsb2FkLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2luaXQoKSB7XG4gICAgdmFyIGVxSWQgPSB0aGlzLiRlbGVtZW50LmF0dHIoJ2RhdGEtZXF1YWxpemVyJykgfHwgJyc7XG4gICAgdmFyICR3YXRjaGVkID0gdGhpcy4kZWxlbWVudC5maW5kKGBbZGF0YS1lcXVhbGl6ZXItd2F0Y2g9XCIke2VxSWR9XCJdYCk7XG5cbiAgICB0aGlzLiR3YXRjaGVkID0gJHdhdGNoZWQubGVuZ3RoID8gJHdhdGNoZWQgOiB0aGlzLiRlbGVtZW50LmZpbmQoJ1tkYXRhLWVxdWFsaXplci13YXRjaF0nKTtcbiAgICB0aGlzLiRlbGVtZW50LmF0dHIoJ2RhdGEtcmVzaXplJywgKGVxSWQgfHwgRm91bmRhdGlvbi5HZXRZb0RpZ2l0cyg2LCAnZXEnKSkpO1xuXHR0aGlzLiRlbGVtZW50LmF0dHIoJ2RhdGEtbXV0YXRlJywgKGVxSWQgfHwgRm91bmRhdGlvbi5HZXRZb0RpZ2l0cyg2LCAnZXEnKSkpO1xuXG4gICAgdGhpcy5oYXNOZXN0ZWQgPSB0aGlzLiRlbGVtZW50LmZpbmQoJ1tkYXRhLWVxdWFsaXplcl0nKS5sZW5ndGggPiAwO1xuICAgIHRoaXMuaXNOZXN0ZWQgPSB0aGlzLiRlbGVtZW50LnBhcmVudHNVbnRpbChkb2N1bWVudC5ib2R5LCAnW2RhdGEtZXF1YWxpemVyXScpLmxlbmd0aCA+IDA7XG4gICAgdGhpcy5pc09uID0gZmFsc2U7XG4gICAgdGhpcy5fYmluZEhhbmRsZXIgPSB7XG4gICAgICBvblJlc2l6ZU1lQm91bmQ6IHRoaXMuX29uUmVzaXplTWUuYmluZCh0aGlzKSxcbiAgICAgIG9uUG9zdEVxdWFsaXplZEJvdW5kOiB0aGlzLl9vblBvc3RFcXVhbGl6ZWQuYmluZCh0aGlzKVxuICAgIH07XG5cbiAgICB2YXIgaW1ncyA9IHRoaXMuJGVsZW1lbnQuZmluZCgnaW1nJyk7XG4gICAgdmFyIHRvb1NtYWxsO1xuICAgIGlmKHRoaXMub3B0aW9ucy5lcXVhbGl6ZU9uKXtcbiAgICAgIHRvb1NtYWxsID0gdGhpcy5fY2hlY2tNUSgpO1xuICAgICAgJCh3aW5kb3cpLm9uKCdjaGFuZ2VkLnpmLm1lZGlhcXVlcnknLCB0aGlzLl9jaGVja01RLmJpbmQodGhpcykpO1xuICAgIH1lbHNle1xuICAgICAgdGhpcy5fZXZlbnRzKCk7XG4gICAgfVxuICAgIGlmKCh0b29TbWFsbCAhPT0gdW5kZWZpbmVkICYmIHRvb1NtYWxsID09PSBmYWxzZSkgfHwgdG9vU21hbGwgPT09IHVuZGVmaW5lZCl7XG4gICAgICBpZihpbWdzLmxlbmd0aCl7XG4gICAgICAgIEZvdW5kYXRpb24ub25JbWFnZXNMb2FkZWQoaW1ncywgdGhpcy5fcmVmbG93LmJpbmQodGhpcykpO1xuICAgICAgfWVsc2V7XG4gICAgICAgIHRoaXMuX3JlZmxvdygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGV2ZW50IGxpc3RlbmVycyBpZiB0aGUgYnJlYWtwb2ludCBpcyB0b28gc21hbGwuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcGF1c2VFdmVudHMoKSB7XG4gICAgdGhpcy5pc09uID0gZmFsc2U7XG4gICAgdGhpcy4kZWxlbWVudC5vZmYoe1xuICAgICAgJy56Zi5lcXVhbGl6ZXInOiB0aGlzLl9iaW5kSGFuZGxlci5vblBvc3RFcXVhbGl6ZWRCb3VuZCxcbiAgICAgICdyZXNpemVtZS56Zi50cmlnZ2VyJzogdGhpcy5fYmluZEhhbmRsZXIub25SZXNpemVNZUJvdW5kLFxuXHQgICdtdXRhdGVtZS56Zi50cmlnZ2VyJzogdGhpcy5fYmluZEhhbmRsZXIub25SZXNpemVNZUJvdW5kXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogZnVuY3Rpb24gdG8gaGFuZGxlICRlbGVtZW50cyByZXNpemVtZS56Zi50cmlnZ2VyLCB3aXRoIGJvdW5kIHRoaXMgb24gX2JpbmRIYW5kbGVyLm9uUmVzaXplTWVCb3VuZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX29uUmVzaXplTWUoZSkge1xuICAgIHRoaXMuX3JlZmxvdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIGZ1bmN0aW9uIHRvIGhhbmRsZSAkZWxlbWVudHMgcG9zdGVxdWFsaXplZC56Zi5lcXVhbGl6ZXIsIHdpdGggYm91bmQgdGhpcyBvbiBfYmluZEhhbmRsZXIub25Qb3N0RXF1YWxpemVkQm91bmRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9vblBvc3RFcXVhbGl6ZWQoZSkge1xuICAgIGlmKGUudGFyZ2V0ICE9PSB0aGlzLiRlbGVtZW50WzBdKXsgdGhpcy5fcmVmbG93KCk7IH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyBldmVudHMgZm9yIEVxdWFsaXplci5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9ldmVudHMoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcbiAgICB0aGlzLl9wYXVzZUV2ZW50cygpO1xuICAgIGlmKHRoaXMuaGFzTmVzdGVkKXtcbiAgICAgIHRoaXMuJGVsZW1lbnQub24oJ3Bvc3RlcXVhbGl6ZWQuemYuZXF1YWxpemVyJywgdGhpcy5fYmluZEhhbmRsZXIub25Qb3N0RXF1YWxpemVkQm91bmQpO1xuICAgIH1lbHNle1xuICAgICAgdGhpcy4kZWxlbWVudC5vbigncmVzaXplbWUuemYudHJpZ2dlcicsIHRoaXMuX2JpbmRIYW5kbGVyLm9uUmVzaXplTWVCb3VuZCk7XG5cdCAgdGhpcy4kZWxlbWVudC5vbignbXV0YXRlbWUuemYudHJpZ2dlcicsIHRoaXMuX2JpbmRIYW5kbGVyLm9uUmVzaXplTWVCb3VuZCk7XG4gICAgfVxuICAgIHRoaXMuaXNPbiA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQgdG8gdGhlIG1pbmltdW0gcmVxdWlyZWQgc2l6ZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9jaGVja01RKCkge1xuICAgIHZhciB0b29TbWFsbCA9ICFGb3VuZGF0aW9uLk1lZGlhUXVlcnkuaXModGhpcy5vcHRpb25zLmVxdWFsaXplT24pO1xuICAgIGlmKHRvb1NtYWxsKXtcbiAgICAgIGlmKHRoaXMuaXNPbil7XG4gICAgICAgIHRoaXMuX3BhdXNlRXZlbnRzKCk7XG4gICAgICAgIHRoaXMuJHdhdGNoZWQuY3NzKCdoZWlnaHQnLCAnYXV0bycpO1xuICAgICAgfVxuICAgIH1lbHNle1xuICAgICAgaWYoIXRoaXMuaXNPbil7XG4gICAgICAgIHRoaXMuX2V2ZW50cygpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG9vU21hbGw7XG4gIH1cblxuICAvKipcbiAgICogQSBub29wIHZlcnNpb24gZm9yIHRoZSBwbHVnaW5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9raWxsc3dpdGNoKCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyBuZWNlc3NhcnkgZnVuY3Rpb25zIHRvIHVwZGF0ZSBFcXVhbGl6ZXIgdXBvbiBET00gY2hhbmdlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcmVmbG93KCkge1xuICAgIGlmKCF0aGlzLm9wdGlvbnMuZXF1YWxpemVPblN0YWNrKXtcbiAgICAgIGlmKHRoaXMuX2lzU3RhY2tlZCgpKXtcbiAgICAgICAgdGhpcy4kd2F0Y2hlZC5jc3MoJ2hlaWdodCcsICdhdXRvJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5lcXVhbGl6ZUJ5Um93KSB7XG4gICAgICB0aGlzLmdldEhlaWdodHNCeVJvdyh0aGlzLmFwcGx5SGVpZ2h0QnlSb3cuYmluZCh0aGlzKSk7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLmdldEhlaWdodHModGhpcy5hcHBseUhlaWdodC5iaW5kKHRoaXMpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWFudWFsbHkgZGV0ZXJtaW5lcyBpZiB0aGUgZmlyc3QgMiBlbGVtZW50cyBhcmUgKk5PVCogc3RhY2tlZC5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9pc1N0YWNrZWQoKSB7XG4gICAgaWYgKCF0aGlzLiR3YXRjaGVkWzBdIHx8ICF0aGlzLiR3YXRjaGVkWzFdKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuJHdhdGNoZWRbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICE9PSB0aGlzLiR3YXRjaGVkWzFdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgb3V0ZXIgaGVpZ2h0cyBvZiBjaGlsZHJlbiBjb250YWluZWQgd2l0aGluIGFuIEVxdWFsaXplciBwYXJlbnQgYW5kIHJldHVybnMgdGhlbSBpbiBhbiBhcnJheVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYiAtIEEgbm9uLW9wdGlvbmFsIGNhbGxiYWNrIHRvIHJldHVybiB0aGUgaGVpZ2h0cyBhcnJheSB0by5cbiAgICogQHJldHVybnMge0FycmF5fSBoZWlnaHRzIC0gQW4gYXJyYXkgb2YgaGVpZ2h0cyBvZiBjaGlsZHJlbiB3aXRoaW4gRXF1YWxpemVyIGNvbnRhaW5lclxuICAgKi9cbiAgZ2V0SGVpZ2h0cyhjYikge1xuICAgIHZhciBoZWlnaHRzID0gW107XG4gICAgZm9yKHZhciBpID0gMCwgbGVuID0gdGhpcy4kd2F0Y2hlZC5sZW5ndGg7IGkgPCBsZW47IGkrKyl7XG4gICAgICB0aGlzLiR3YXRjaGVkW2ldLnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgIGhlaWdodHMucHVzaCh0aGlzLiR3YXRjaGVkW2ldLm9mZnNldEhlaWdodCk7XG4gICAgfVxuICAgIGNiKGhlaWdodHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBvdXRlciBoZWlnaHRzIG9mIGNoaWxkcmVuIGNvbnRhaW5lZCB3aXRoaW4gYW4gRXF1YWxpemVyIHBhcmVudCBhbmQgcmV0dXJucyB0aGVtIGluIGFuIGFycmF5XG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNiIC0gQSBub24tb3B0aW9uYWwgY2FsbGJhY2sgdG8gcmV0dXJuIHRoZSBoZWlnaHRzIGFycmF5IHRvLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IGdyb3VwcyAtIEFuIGFycmF5IG9mIGhlaWdodHMgb2YgY2hpbGRyZW4gd2l0aGluIEVxdWFsaXplciBjb250YWluZXIgZ3JvdXBlZCBieSByb3cgd2l0aCBlbGVtZW50LGhlaWdodCBhbmQgbWF4IGFzIGxhc3QgY2hpbGRcbiAgICovXG4gIGdldEhlaWdodHNCeVJvdyhjYikge1xuICAgIHZhciBsYXN0RWxUb3BPZmZzZXQgPSAodGhpcy4kd2F0Y2hlZC5sZW5ndGggPyB0aGlzLiR3YXRjaGVkLmZpcnN0KCkub2Zmc2V0KCkudG9wIDogMCksXG4gICAgICAgIGdyb3VwcyA9IFtdLFxuICAgICAgICBncm91cCA9IDA7XG4gICAgLy9ncm91cCBieSBSb3dcbiAgICBncm91cHNbZ3JvdXBdID0gW107XG4gICAgZm9yKHZhciBpID0gMCwgbGVuID0gdGhpcy4kd2F0Y2hlZC5sZW5ndGg7IGkgPCBsZW47IGkrKyl7XG4gICAgICB0aGlzLiR3YXRjaGVkW2ldLnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgIC8vbWF5YmUgY291bGQgdXNlIHRoaXMuJHdhdGNoZWRbaV0ub2Zmc2V0VG9wXG4gICAgICB2YXIgZWxPZmZzZXRUb3AgPSAkKHRoaXMuJHdhdGNoZWRbaV0pLm9mZnNldCgpLnRvcDtcbiAgICAgIGlmIChlbE9mZnNldFRvcCE9bGFzdEVsVG9wT2Zmc2V0KSB7XG4gICAgICAgIGdyb3VwKys7XG4gICAgICAgIGdyb3Vwc1tncm91cF0gPSBbXTtcbiAgICAgICAgbGFzdEVsVG9wT2Zmc2V0PWVsT2Zmc2V0VG9wO1xuICAgICAgfVxuICAgICAgZ3JvdXBzW2dyb3VwXS5wdXNoKFt0aGlzLiR3YXRjaGVkW2ldLHRoaXMuJHdhdGNoZWRbaV0ub2Zmc2V0SGVpZ2h0XSk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IDAsIGxuID0gZ3JvdXBzLmxlbmd0aDsgaiA8IGxuOyBqKyspIHtcbiAgICAgIHZhciBoZWlnaHRzID0gJChncm91cHNbal0pLm1hcChmdW5jdGlvbigpeyByZXR1cm4gdGhpc1sxXTsgfSkuZ2V0KCk7XG4gICAgICB2YXIgbWF4ICAgICAgICAgPSBNYXRoLm1heC5hcHBseShudWxsLCBoZWlnaHRzKTtcbiAgICAgIGdyb3Vwc1tqXS5wdXNoKG1heCk7XG4gICAgfVxuICAgIGNiKGdyb3Vwcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlcyB0aGUgQ1NTIGhlaWdodCBwcm9wZXJ0eSBvZiBlYWNoIGNoaWxkIGluIGFuIEVxdWFsaXplciBwYXJlbnQgdG8gbWF0Y2ggdGhlIHRhbGxlc3RcbiAgICogQHBhcmFtIHthcnJheX0gaGVpZ2h0cyAtIEFuIGFycmF5IG9mIGhlaWdodHMgb2YgY2hpbGRyZW4gd2l0aGluIEVxdWFsaXplciBjb250YWluZXJcbiAgICogQGZpcmVzIEVxdWFsaXplciNwcmVlcXVhbGl6ZWRcbiAgICogQGZpcmVzIEVxdWFsaXplciNwb3N0ZXF1YWxpemVkXG4gICAqL1xuICBhcHBseUhlaWdodChoZWlnaHRzKSB7XG4gICAgdmFyIG1heCA9IE1hdGgubWF4LmFwcGx5KG51bGwsIGhlaWdodHMpO1xuICAgIC8qKlxuICAgICAqIEZpcmVzIGJlZm9yZSB0aGUgaGVpZ2h0cyBhcmUgYXBwbGllZFxuICAgICAqIEBldmVudCBFcXVhbGl6ZXIjcHJlZXF1YWxpemVkXG4gICAgICovXG4gICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdwcmVlcXVhbGl6ZWQuemYuZXF1YWxpemVyJyk7XG5cbiAgICB0aGlzLiR3YXRjaGVkLmNzcygnaGVpZ2h0JywgbWF4KTtcblxuICAgIC8qKlxuICAgICAqIEZpcmVzIHdoZW4gdGhlIGhlaWdodHMgaGF2ZSBiZWVuIGFwcGxpZWRcbiAgICAgKiBAZXZlbnQgRXF1YWxpemVyI3Bvc3RlcXVhbGl6ZWRcbiAgICAgKi9cbiAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdwb3N0ZXF1YWxpemVkLnpmLmVxdWFsaXplcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZXMgdGhlIENTUyBoZWlnaHQgcHJvcGVydHkgb2YgZWFjaCBjaGlsZCBpbiBhbiBFcXVhbGl6ZXIgcGFyZW50IHRvIG1hdGNoIHRoZSB0YWxsZXN0IGJ5IHJvd1xuICAgKiBAcGFyYW0ge2FycmF5fSBncm91cHMgLSBBbiBhcnJheSBvZiBoZWlnaHRzIG9mIGNoaWxkcmVuIHdpdGhpbiBFcXVhbGl6ZXIgY29udGFpbmVyIGdyb3VwZWQgYnkgcm93IHdpdGggZWxlbWVudCxoZWlnaHQgYW5kIG1heCBhcyBsYXN0IGNoaWxkXG4gICAqIEBmaXJlcyBFcXVhbGl6ZXIjcHJlZXF1YWxpemVkXG4gICAqIEBmaXJlcyBFcXVhbGl6ZXIjcHJlZXF1YWxpemVkcm93XG4gICAqIEBmaXJlcyBFcXVhbGl6ZXIjcG9zdGVxdWFsaXplZHJvd1xuICAgKiBAZmlyZXMgRXF1YWxpemVyI3Bvc3RlcXVhbGl6ZWRcbiAgICovXG4gIGFwcGx5SGVpZ2h0QnlSb3coZ3JvdXBzKSB7XG4gICAgLyoqXG4gICAgICogRmlyZXMgYmVmb3JlIHRoZSBoZWlnaHRzIGFyZSBhcHBsaWVkXG4gICAgICovXG4gICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdwcmVlcXVhbGl6ZWQuemYuZXF1YWxpemVyJyk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGdyb3Vwcy5sZW5ndGg7IGkgPCBsZW4gOyBpKyspIHtcbiAgICAgIHZhciBncm91cHNJTGVuZ3RoID0gZ3JvdXBzW2ldLmxlbmd0aCxcbiAgICAgICAgICBtYXggPSBncm91cHNbaV1bZ3JvdXBzSUxlbmd0aCAtIDFdO1xuICAgICAgaWYgKGdyb3Vwc0lMZW5ndGg8PTIpIHtcbiAgICAgICAgJChncm91cHNbaV1bMF1bMF0pLmNzcyh7J2hlaWdodCc6J2F1dG8nfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLyoqXG4gICAgICAgICogRmlyZXMgYmVmb3JlIHRoZSBoZWlnaHRzIHBlciByb3cgYXJlIGFwcGxpZWRcbiAgICAgICAgKiBAZXZlbnQgRXF1YWxpemVyI3ByZWVxdWFsaXplZHJvd1xuICAgICAgICAqL1xuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdwcmVlcXVhbGl6ZWRyb3cuemYuZXF1YWxpemVyJyk7XG4gICAgICBmb3IgKHZhciBqID0gMCwgbGVuSiA9IChncm91cHNJTGVuZ3RoLTEpOyBqIDwgbGVuSiA7IGorKykge1xuICAgICAgICAkKGdyb3Vwc1tpXVtqXVswXSkuY3NzKHsnaGVpZ2h0JzptYXh9KTtcbiAgICAgIH1cbiAgICAgIC8qKlxuICAgICAgICAqIEZpcmVzIHdoZW4gdGhlIGhlaWdodHMgcGVyIHJvdyBoYXZlIGJlZW4gYXBwbGllZFxuICAgICAgICAqIEBldmVudCBFcXVhbGl6ZXIjcG9zdGVxdWFsaXplZHJvd1xuICAgICAgICAqL1xuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdwb3N0ZXF1YWxpemVkcm93LnpmLmVxdWFsaXplcicpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGaXJlcyB3aGVuIHRoZSBoZWlnaHRzIGhhdmUgYmVlbiBhcHBsaWVkXG4gICAgICovXG4gICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcigncG9zdGVxdWFsaXplZC56Zi5lcXVhbGl6ZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBhbiBpbnN0YW5jZSBvZiBFcXVhbGl6ZXIuXG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLl9wYXVzZUV2ZW50cygpO1xuICAgIHRoaXMuJHdhdGNoZWQuY3NzKCdoZWlnaHQnLCAnYXV0bycpO1xuXG4gICAgRm91bmRhdGlvbi51bnJlZ2lzdGVyUGx1Z2luKHRoaXMpO1xuICB9XG59XG5cbi8qKlxuICogRGVmYXVsdCBzZXR0aW5ncyBmb3IgcGx1Z2luXG4gKi9cbkVxdWFsaXplci5kZWZhdWx0cyA9IHtcbiAgLyoqXG4gICAqIEVuYWJsZSBoZWlnaHQgZXF1YWxpemF0aW9uIHdoZW4gc3RhY2tlZCBvbiBzbWFsbGVyIHNjcmVlbnMuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgdHJ1ZVxuICAgKi9cbiAgZXF1YWxpemVPblN0YWNrOiBmYWxzZSxcbiAgLyoqXG4gICAqIEVuYWJsZSBoZWlnaHQgZXF1YWxpemF0aW9uIHJvdyBieSByb3cuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIGVxdWFsaXplQnlSb3c6IGZhbHNlLFxuICAvKipcbiAgICogU3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbWluaW11bSBicmVha3BvaW50IHNpemUgdGhlIHBsdWdpbiBzaG91bGQgZXF1YWxpemUgaGVpZ2h0cyBvbi5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAnbWVkaXVtJ1xuICAgKi9cbiAgZXF1YWxpemVPbjogJydcbn07XG5cbi8vIFdpbmRvdyBleHBvcnRzXG5Gb3VuZGF0aW9uLnBsdWdpbihFcXVhbGl6ZXIsICdFcXVhbGl6ZXInKTtcblxufShqUXVlcnkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4hZnVuY3Rpb24oJCkge1xuXG4vKipcbiAqIEludGVyY2hhbmdlIG1vZHVsZS5cbiAqIEBtb2R1bGUgZm91bmRhdGlvbi5pbnRlcmNoYW5nZVxuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC5tZWRpYVF1ZXJ5XG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLnRpbWVyQW5kSW1hZ2VMb2FkZXJcbiAqL1xuXG5jbGFzcyBJbnRlcmNoYW5nZSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIEludGVyY2hhbmdlLlxuICAgKiBAY2xhc3NcbiAgICogQGZpcmVzIEludGVyY2hhbmdlI2luaXRcbiAgICogQHBhcmFtIHtPYmplY3R9IGVsZW1lbnQgLSBqUXVlcnkgb2JqZWN0IHRvIGFkZCB0aGUgdHJpZ2dlciB0by5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBPdmVycmlkZXMgdG8gdGhlIGRlZmF1bHQgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuJGVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBJbnRlcmNoYW5nZS5kZWZhdWx0cywgb3B0aW9ucyk7XG4gICAgdGhpcy5ydWxlcyA9IFtdO1xuICAgIHRoaXMuY3VycmVudFBhdGggPSAnJztcblxuICAgIHRoaXMuX2luaXQoKTtcbiAgICB0aGlzLl9ldmVudHMoKTtcblxuICAgIEZvdW5kYXRpb24ucmVnaXN0ZXJQbHVnaW4odGhpcywgJ0ludGVyY2hhbmdlJyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIEludGVyY2hhbmdlIHBsdWdpbiBhbmQgY2FsbHMgZnVuY3Rpb25zIHRvIGdldCBpbnRlcmNoYW5nZSBmdW5jdGlvbmluZyBvbiBsb2FkLlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9pbml0KCkge1xuICAgIHRoaXMuX2FkZEJyZWFrcG9pbnRzKCk7XG4gICAgdGhpcy5fZ2VuZXJhdGVSdWxlcygpO1xuICAgIHRoaXMuX3JlZmxvdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGV2ZW50cyBmb3IgSW50ZXJjaGFuZ2UuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2V2ZW50cygpIHtcbiAgICAkKHdpbmRvdykub24oJ3Jlc2l6ZS56Zi5pbnRlcmNoYW5nZScsIEZvdW5kYXRpb24udXRpbC50aHJvdHRsZSgoKSA9PiB7XG4gICAgICB0aGlzLl9yZWZsb3coKTtcbiAgICB9LCA1MCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIG5lY2Vzc2FyeSBmdW5jdGlvbnMgdG8gdXBkYXRlIEludGVyY2hhbmdlIHVwb24gRE9NIGNoYW5nZVxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9yZWZsb3coKSB7XG4gICAgdmFyIG1hdGNoO1xuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGVhY2ggcnVsZSwgYnV0IG9ubHkgc2F2ZSB0aGUgbGFzdCBtYXRjaFxuICAgIGZvciAodmFyIGkgaW4gdGhpcy5ydWxlcykge1xuICAgICAgaWYodGhpcy5ydWxlcy5oYXNPd25Qcm9wZXJ0eShpKSkge1xuICAgICAgICB2YXIgcnVsZSA9IHRoaXMucnVsZXNbaV07XG4gICAgICAgIGlmICh3aW5kb3cubWF0Y2hNZWRpYShydWxlLnF1ZXJ5KS5tYXRjaGVzKSB7XG4gICAgICAgICAgbWF0Y2ggPSBydWxlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICB0aGlzLnJlcGxhY2UobWF0Y2gucGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEZvdW5kYXRpb24gYnJlYWtwb2ludHMgYW5kIGFkZHMgdGhlbSB0byB0aGUgSW50ZXJjaGFuZ2UuU1BFQ0lBTF9RVUVSSUVTIG9iamVjdC5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfYWRkQnJlYWtwb2ludHMoKSB7XG4gICAgZm9yICh2YXIgaSBpbiBGb3VuZGF0aW9uLk1lZGlhUXVlcnkucXVlcmllcykge1xuICAgICAgaWYgKEZvdW5kYXRpb24uTWVkaWFRdWVyeS5xdWVyaWVzLmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgIHZhciBxdWVyeSA9IEZvdW5kYXRpb24uTWVkaWFRdWVyeS5xdWVyaWVzW2ldO1xuICAgICAgICBJbnRlcmNoYW5nZS5TUEVDSUFMX1FVRVJJRVNbcXVlcnkubmFtZV0gPSBxdWVyeS52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHRoZSBJbnRlcmNoYW5nZSBlbGVtZW50IGZvciB0aGUgcHJvdmlkZWQgbWVkaWEgcXVlcnkgKyBjb250ZW50IHBhaXJpbmdzXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gZWxlbWVudCAtIGpRdWVyeSBvYmplY3QgdGhhdCBpcyBhbiBJbnRlcmNoYW5nZSBpbnN0YW5jZVxuICAgKiBAcmV0dXJucyB7QXJyYXl9IHNjZW5hcmlvcyAtIEFycmF5IG9mIG9iamVjdHMgdGhhdCBoYXZlICdtcScgYW5kICdwYXRoJyBrZXlzIHdpdGggY29ycmVzcG9uZGluZyBrZXlzXG4gICAqL1xuICBfZ2VuZXJhdGVSdWxlcyhlbGVtZW50KSB7XG4gICAgdmFyIHJ1bGVzTGlzdCA9IFtdO1xuICAgIHZhciBydWxlcztcblxuICAgIGlmICh0aGlzLm9wdGlvbnMucnVsZXMpIHtcbiAgICAgIHJ1bGVzID0gdGhpcy5vcHRpb25zLnJ1bGVzO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJ1bGVzID0gdGhpcy4kZWxlbWVudC5kYXRhKCdpbnRlcmNoYW5nZScpLm1hdGNoKC9cXFsuKj9cXF0vZyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSBpbiBydWxlcykge1xuICAgICAgaWYocnVsZXMuaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgdmFyIHJ1bGUgPSBydWxlc1tpXS5zbGljZSgxLCAtMSkuc3BsaXQoJywgJyk7XG4gICAgICAgIHZhciBwYXRoID0gcnVsZS5zbGljZSgwLCAtMSkuam9pbignJyk7XG4gICAgICAgIHZhciBxdWVyeSA9IHJ1bGVbcnVsZS5sZW5ndGggLSAxXTtcblxuICAgICAgICBpZiAoSW50ZXJjaGFuZ2UuU1BFQ0lBTF9RVUVSSUVTW3F1ZXJ5XSkge1xuICAgICAgICAgIHF1ZXJ5ID0gSW50ZXJjaGFuZ2UuU1BFQ0lBTF9RVUVSSUVTW3F1ZXJ5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJ1bGVzTGlzdC5wdXNoKHtcbiAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgIHF1ZXJ5OiBxdWVyeVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnJ1bGVzID0gcnVsZXNMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgYHNyY2AgcHJvcGVydHkgb2YgYW4gaW1hZ2UsIG9yIGNoYW5nZSB0aGUgSFRNTCBvZiBhIGNvbnRhaW5lciwgdG8gdGhlIHNwZWNpZmllZCBwYXRoLlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHBhcmFtIHtTdHJpbmd9IHBhdGggLSBQYXRoIHRvIHRoZSBpbWFnZSBvciBIVE1MIHBhcnRpYWwuXG4gICAqIEBmaXJlcyBJbnRlcmNoYW5nZSNyZXBsYWNlZFxuICAgKi9cbiAgcmVwbGFjZShwYXRoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhdGggPT09IHBhdGgpIHJldHVybjtcblxuICAgIHZhciBfdGhpcyA9IHRoaXMsXG4gICAgICAgIHRyaWdnZXIgPSAncmVwbGFjZWQuemYuaW50ZXJjaGFuZ2UnO1xuXG4gICAgLy8gUmVwbGFjaW5nIGltYWdlc1xuICAgIGlmICh0aGlzLiRlbGVtZW50WzBdLm5vZGVOYW1lID09PSAnSU1HJykge1xuICAgICAgdGhpcy4kZWxlbWVudC5hdHRyKCdzcmMnLCBwYXRoKS5vbignbG9hZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICBfdGhpcy5jdXJyZW50UGF0aCA9IHBhdGg7XG4gICAgICB9KVxuICAgICAgLnRyaWdnZXIodHJpZ2dlcik7XG4gICAgfVxuICAgIC8vIFJlcGxhY2luZyBiYWNrZ3JvdW5kIGltYWdlc1xuICAgIGVsc2UgaWYgKHBhdGgubWF0Y2goL1xcLihnaWZ8anBnfGpwZWd8cG5nfHN2Z3x0aWZmKShbPyNdLiopPy9pKSkge1xuICAgICAgdGhpcy4kZWxlbWVudC5jc3MoeyAnYmFja2dyb3VuZC1pbWFnZSc6ICd1cmwoJytwYXRoKycpJyB9KVxuICAgICAgICAgIC50cmlnZ2VyKHRyaWdnZXIpO1xuICAgIH1cbiAgICAvLyBSZXBsYWNpbmcgSFRNTFxuICAgIGVsc2Uge1xuICAgICAgJC5nZXQocGF0aCwgZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgICAgICAgX3RoaXMuJGVsZW1lbnQuaHRtbChyZXNwb25zZSlcbiAgICAgICAgICAgICAudHJpZ2dlcih0cmlnZ2VyKTtcbiAgICAgICAgJChyZXNwb25zZSkuZm91bmRhdGlvbigpO1xuICAgICAgICBfdGhpcy5jdXJyZW50UGF0aCA9IHBhdGg7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaXJlcyB3aGVuIGNvbnRlbnQgaW4gYW4gSW50ZXJjaGFuZ2UgZWxlbWVudCBpcyBkb25lIGJlaW5nIGxvYWRlZC5cbiAgICAgKiBAZXZlbnQgSW50ZXJjaGFuZ2UjcmVwbGFjZWRcbiAgICAgKi9cbiAgICAvLyB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ3JlcGxhY2VkLnpmLmludGVyY2hhbmdlJyk7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgYW4gaW5zdGFuY2Ugb2YgaW50ZXJjaGFuZ2UuXG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICAvL1RPRE8gdGhpcy5cbiAgfVxufVxuXG4vKipcbiAqIERlZmF1bHQgc2V0dGluZ3MgZm9yIHBsdWdpblxuICovXG5JbnRlcmNoYW5nZS5kZWZhdWx0cyA9IHtcbiAgLyoqXG4gICAqIFJ1bGVzIHRvIGJlIGFwcGxpZWQgdG8gSW50ZXJjaGFuZ2UgZWxlbWVudHMuIFNldCB3aXRoIHRoZSBgZGF0YS1pbnRlcmNoYW5nZWAgYXJyYXkgbm90YXRpb24uXG4gICAqIEBvcHRpb25cbiAgICovXG4gIHJ1bGVzOiBudWxsXG59O1xuXG5JbnRlcmNoYW5nZS5TUEVDSUFMX1FVRVJJRVMgPSB7XG4gICdsYW5kc2NhcGUnOiAnc2NyZWVuIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAncG9ydHJhaXQnOiAnc2NyZWVuIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICdyZXRpbmEnOiAnb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMiksIG9ubHkgc2NyZWVuIGFuZCAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogMi8xKSwgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSwgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogMmRwcHgpJ1xufTtcblxuLy8gV2luZG93IGV4cG9ydHNcbkZvdW5kYXRpb24ucGx1Z2luKEludGVyY2hhbmdlLCAnSW50ZXJjaGFuZ2UnKTtcblxufShqUXVlcnkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4hZnVuY3Rpb24oJCkge1xuXG4vKipcbiAqIE1hZ2VsbGFuIG1vZHVsZS5cbiAqIEBtb2R1bGUgZm91bmRhdGlvbi5tYWdlbGxhblxuICovXG5cbmNsYXNzIE1hZ2VsbGFuIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgTWFnZWxsYW4uXG4gICAqIEBjbGFzc1xuICAgKiBAZmlyZXMgTWFnZWxsYW4jaW5pdFxuICAgKiBAcGFyYW0ge09iamVjdH0gZWxlbWVudCAtIGpRdWVyeSBvYmplY3QgdG8gYWRkIHRoZSB0cmlnZ2VyIHRvLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIE92ZXJyaWRlcyB0byB0aGUgZGVmYXVsdCBwbHVnaW4gc2V0dGluZ3MuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5vcHRpb25zICA9ICQuZXh0ZW5kKHt9LCBNYWdlbGxhbi5kZWZhdWx0cywgdGhpcy4kZWxlbWVudC5kYXRhKCksIG9wdGlvbnMpO1xuXG4gICAgdGhpcy5faW5pdCgpO1xuICAgIHRoaXMuY2FsY1BvaW50cygpO1xuXG4gICAgRm91bmRhdGlvbi5yZWdpc3RlclBsdWdpbih0aGlzLCAnTWFnZWxsYW4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgTWFnZWxsYW4gcGx1Z2luIGFuZCBjYWxscyBmdW5jdGlvbnMgdG8gZ2V0IGVxdWFsaXplciBmdW5jdGlvbmluZyBvbiBsb2FkLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2luaXQoKSB7XG4gICAgdmFyIGlkID0gdGhpcy4kZWxlbWVudFswXS5pZCB8fCBGb3VuZGF0aW9uLkdldFlvRGlnaXRzKDYsICdtYWdlbGxhbicpO1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgdGhpcy4kdGFyZ2V0cyA9ICQoJ1tkYXRhLW1hZ2VsbGFuLXRhcmdldF0nKTtcbiAgICB0aGlzLiRsaW5rcyA9IHRoaXMuJGVsZW1lbnQuZmluZCgnYScpO1xuICAgIHRoaXMuJGVsZW1lbnQuYXR0cih7XG4gICAgICAnZGF0YS1yZXNpemUnOiBpZCxcbiAgICAgICdkYXRhLXNjcm9sbCc6IGlkLFxuICAgICAgJ2lkJzogaWRcbiAgICB9KTtcbiAgICB0aGlzLiRhY3RpdmUgPSAkKCk7XG4gICAgdGhpcy5zY3JvbGxQb3MgPSBwYXJzZUludCh3aW5kb3cucGFnZVlPZmZzZXQsIDEwKTtcblxuICAgIHRoaXMuX2V2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgYW4gYXJyYXkgb2YgcGl4ZWwgdmFsdWVzIHRoYXQgYXJlIHRoZSBkZW1hcmNhdGlvbiBsaW5lcyBiZXR3ZWVuIGxvY2F0aW9ucyBvbiB0aGUgcGFnZS5cbiAgICogQ2FuIGJlIGludm9rZWQgaWYgbmV3IGVsZW1lbnRzIGFyZSBhZGRlZCBvciB0aGUgc2l6ZSBvZiBhIGxvY2F0aW9uIGNoYW5nZXMuXG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgY2FsY1BvaW50cygpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzLFxuICAgICAgICBib2R5ID0gZG9jdW1lbnQuYm9keSxcbiAgICAgICAgaHRtbCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAgIHRoaXMucG9pbnRzID0gW107XG4gICAgdGhpcy53aW5IZWlnaHQgPSBNYXRoLnJvdW5kKE1hdGgubWF4KHdpbmRvdy5pbm5lckhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQpKTtcbiAgICB0aGlzLmRvY0hlaWdodCA9IE1hdGgucm91bmQoTWF0aC5tYXgoYm9keS5zY3JvbGxIZWlnaHQsIGJvZHkub2Zmc2V0SGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwub2Zmc2V0SGVpZ2h0KSk7XG5cbiAgICB0aGlzLiR0YXJnZXRzLmVhY2goZnVuY3Rpb24oKXtcbiAgICAgIHZhciAkdGFyID0gJCh0aGlzKSxcbiAgICAgICAgICBwdCA9IE1hdGgucm91bmQoJHRhci5vZmZzZXQoKS50b3AgLSBfdGhpcy5vcHRpb25zLnRocmVzaG9sZCk7XG4gICAgICAkdGFyLnRhcmdldFBvaW50ID0gcHQ7XG4gICAgICBfdGhpcy5wb2ludHMucHVzaChwdCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgZXZlbnRzIGZvciBNYWdlbGxhbi5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9ldmVudHMoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcyxcbiAgICAgICAgJGJvZHkgPSAkKCdodG1sLCBib2R5JyksXG4gICAgICAgIG9wdHMgPSB7XG4gICAgICAgICAgZHVyYXRpb246IF90aGlzLm9wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgICAgZWFzaW5nOiAgIF90aGlzLm9wdGlvbnMuYW5pbWF0aW9uRWFzaW5nXG4gICAgICAgIH07XG4gICAgJCh3aW5kb3cpLm9uZSgnbG9hZCcsIGZ1bmN0aW9uKCl7XG4gICAgICBpZihfdGhpcy5vcHRpb25zLmRlZXBMaW5raW5nKXtcbiAgICAgICAgaWYobG9jYXRpb24uaGFzaCl7XG4gICAgICAgICAgX3RoaXMuc2Nyb2xsVG9Mb2MobG9jYXRpb24uaGFzaCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF90aGlzLmNhbGNQb2ludHMoKTtcbiAgICAgIF90aGlzLl91cGRhdGVBY3RpdmUoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuJGVsZW1lbnQub24oe1xuICAgICAgJ3Jlc2l6ZW1lLnpmLnRyaWdnZXInOiB0aGlzLnJlZmxvdy5iaW5kKHRoaXMpLFxuICAgICAgJ3Njcm9sbG1lLnpmLnRyaWdnZXInOiB0aGlzLl91cGRhdGVBY3RpdmUuYmluZCh0aGlzKVxuICAgIH0pLm9uKCdjbGljay56Zi5tYWdlbGxhbicsICdhW2hyZWZePVwiI1wiXScsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB2YXIgYXJyaXZhbCAgID0gdGhpcy5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtcbiAgICAgICAgX3RoaXMuc2Nyb2xsVG9Mb2MoYXJyaXZhbCk7XG4gICAgICB9KTtcbiAgICAkKHdpbmRvdykub24oJ3BvcHN0YXRlJywgZnVuY3Rpb24oZSkge1xuICAgICAgaWYoX3RoaXMub3B0aW9ucy5kZWVwTGlua2luZykge1xuICAgICAgICBfdGhpcy5zY3JvbGxUb0xvYyh3aW5kb3cubG9jYXRpb24uaGFzaCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gc2Nyb2xsIHRvIGEgZ2l2ZW4gbG9jYXRpb24gb24gdGhlIHBhZ2UuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBsb2MgLSBhIHByb3Blcmx5IGZvcm1hdHRlZCBqUXVlcnkgaWQgc2VsZWN0b3IuIEV4YW1wbGU6ICcjZm9vJ1xuICAgKiBAZnVuY3Rpb25cbiAgICovXG4gIHNjcm9sbFRvTG9jKGxvYykge1xuICAgIC8vIERvIG5vdGhpbmcgaWYgdGFyZ2V0IGRvZXMgbm90IGV4aXN0IHRvIHByZXZlbnQgZXJyb3JzXG4gICAgaWYgKCEkKGxvYykubGVuZ3RoKSB7cmV0dXJuIGZhbHNlO31cbiAgICB0aGlzLl9pblRyYW5zaXRpb24gPSB0cnVlO1xuICAgIHZhciBfdGhpcyA9IHRoaXMsXG4gICAgICAgIHNjcm9sbFBvcyA9IE1hdGgucm91bmQoJChsb2MpLm9mZnNldCgpLnRvcCAtIHRoaXMub3B0aW9ucy50aHJlc2hvbGQgLyAyIC0gdGhpcy5vcHRpb25zLmJhck9mZnNldCk7XG5cbiAgICAkKCdodG1sLCBib2R5Jykuc3RvcCh0cnVlKS5hbmltYXRlKFxuICAgICAgeyBzY3JvbGxUb3A6IHNjcm9sbFBvcyB9LFxuICAgICAgdGhpcy5vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgdGhpcy5vcHRpb25zLmFuaW1hdGlvbkVhc2luZyxcbiAgICAgIGZ1bmN0aW9uKCkge190aGlzLl9pblRyYW5zaXRpb24gPSBmYWxzZTsgX3RoaXMuX3VwZGF0ZUFjdGl2ZSgpfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbHMgbmVjZXNzYXJ5IGZ1bmN0aW9ucyB0byB1cGRhdGUgTWFnZWxsYW4gdXBvbiBET00gY2hhbmdlXG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgcmVmbG93KCkge1xuICAgIHRoaXMuY2FsY1BvaW50cygpO1xuICAgIHRoaXMuX3VwZGF0ZUFjdGl2ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHZpc2liaWxpdHkgb2YgYW4gYWN0aXZlIGxvY2F0aW9uIGxpbmssIGFuZCB1cGRhdGVzIHRoZSB1cmwgaGFzaCBmb3IgdGhlIHBhZ2UsIGlmIGRlZXBMaW5raW5nIGVuYWJsZWQuXG4gICAqIEBwcml2YXRlXG4gICAqIEBmdW5jdGlvblxuICAgKiBAZmlyZXMgTWFnZWxsYW4jdXBkYXRlXG4gICAqL1xuICBfdXBkYXRlQWN0aXZlKC8qZXZ0LCBlbGVtLCBzY3JvbGxQb3MqLykge1xuICAgIGlmKHRoaXMuX2luVHJhbnNpdGlvbikge3JldHVybjt9XG4gICAgdmFyIHdpblBvcyA9IC8qc2Nyb2xsUG9zIHx8Ki8gcGFyc2VJbnQod2luZG93LnBhZ2VZT2Zmc2V0LCAxMCksXG4gICAgICAgIGN1cklkeDtcblxuICAgIGlmKHdpblBvcyArIHRoaXMud2luSGVpZ2h0ID09PSB0aGlzLmRvY0hlaWdodCl7IGN1cklkeCA9IHRoaXMucG9pbnRzLmxlbmd0aCAtIDE7IH1cbiAgICBlbHNlIGlmKHdpblBvcyA8IHRoaXMucG9pbnRzWzBdKXsgY3VySWR4ID0gdW5kZWZpbmVkOyB9XG4gICAgZWxzZXtcbiAgICAgIHZhciBpc0Rvd24gPSB0aGlzLnNjcm9sbFBvcyA8IHdpblBvcyxcbiAgICAgICAgICBfdGhpcyA9IHRoaXMsXG4gICAgICAgICAgY3VyVmlzaWJsZSA9IHRoaXMucG9pbnRzLmZpbHRlcihmdW5jdGlvbihwLCBpKXtcbiAgICAgICAgICAgIHJldHVybiBpc0Rvd24gPyBwIC0gX3RoaXMub3B0aW9ucy5iYXJPZmZzZXQgPD0gd2luUG9zIDogcCAtIF90aGlzLm9wdGlvbnMuYmFyT2Zmc2V0IC0gX3RoaXMub3B0aW9ucy50aHJlc2hvbGQgPD0gd2luUG9zO1xuICAgICAgICAgIH0pO1xuICAgICAgY3VySWR4ID0gY3VyVmlzaWJsZS5sZW5ndGggPyBjdXJWaXNpYmxlLmxlbmd0aCAtIDEgOiAwO1xuICAgIH1cblxuICAgIHRoaXMuJGFjdGl2ZS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MpO1xuICAgIHRoaXMuJGFjdGl2ZSA9IHRoaXMuJGxpbmtzLmZpbHRlcignW2hyZWY9XCIjJyArIHRoaXMuJHRhcmdldHMuZXEoY3VySWR4KS5kYXRhKCdtYWdlbGxhbi10YXJnZXQnKSArICdcIl0nKS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MpO1xuXG4gICAgaWYodGhpcy5vcHRpb25zLmRlZXBMaW5raW5nKXtcbiAgICAgIHZhciBoYXNoID0gXCJcIjtcbiAgICAgIGlmKGN1cklkeCAhPSB1bmRlZmluZWQpe1xuICAgICAgICBoYXNoID0gdGhpcy4kYWN0aXZlWzBdLmdldEF0dHJpYnV0ZSgnaHJlZicpO1xuICAgICAgfVxuICAgICAgaWYoaGFzaCAhPT0gd2luZG93LmxvY2F0aW9uLmhhc2gpIHtcbiAgICAgICAgaWYod2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKXtcbiAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgaGFzaCk7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gaGFzaDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2Nyb2xsUG9zID0gd2luUG9zO1xuICAgIC8qKlxuICAgICAqIEZpcmVzIHdoZW4gbWFnZWxsYW4gaXMgZmluaXNoZWQgdXBkYXRpbmcgdG8gdGhlIG5ldyBhY3RpdmUgZWxlbWVudC5cbiAgICAgKiBAZXZlbnQgTWFnZWxsYW4jdXBkYXRlXG4gICAgICovXG4gICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCd1cGRhdGUuemYubWFnZWxsYW4nLCBbdGhpcy4kYWN0aXZlXSk7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgYW4gaW5zdGFuY2Ugb2YgTWFnZWxsYW4gYW5kIHJlc2V0cyB0aGUgdXJsIG9mIHRoZSB3aW5kb3cuXG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLiRlbGVtZW50Lm9mZignLnpmLnRyaWdnZXIgLnpmLm1hZ2VsbGFuJylcbiAgICAgICAgLmZpbmQoYC4ke3RoaXMub3B0aW9ucy5hY3RpdmVDbGFzc31gKS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MpO1xuXG4gICAgaWYodGhpcy5vcHRpb25zLmRlZXBMaW5raW5nKXtcbiAgICAgIHZhciBoYXNoID0gdGhpcy4kYWN0aXZlWzBdLmdldEF0dHJpYnV0ZSgnaHJlZicpO1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2gucmVwbGFjZShoYXNoLCAnJyk7XG4gICAgfVxuXG4gICAgRm91bmRhdGlvbi51bnJlZ2lzdGVyUGx1Z2luKHRoaXMpO1xuICB9XG59XG5cbi8qKlxuICogRGVmYXVsdCBzZXR0aW5ncyBmb3IgcGx1Z2luXG4gKi9cbk1hZ2VsbGFuLmRlZmF1bHRzID0ge1xuICAvKipcbiAgICogQW1vdW50IG9mIHRpbWUsIGluIG1zLCB0aGUgYW5pbWF0ZWQgc2Nyb2xsaW5nIHNob3VsZCB0YWtlIGJldHdlZW4gbG9jYXRpb25zLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIDUwMFxuICAgKi9cbiAgYW5pbWF0aW9uRHVyYXRpb246IDUwMCxcbiAgLyoqXG4gICAqIEFuaW1hdGlvbiBzdHlsZSB0byB1c2Ugd2hlbiBzY3JvbGxpbmcgYmV0d2VlbiBsb2NhdGlvbnMuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgJ2Vhc2UtaW4tb3V0J1xuICAgKi9cbiAgYW5pbWF0aW9uRWFzaW5nOiAnbGluZWFyJyxcbiAgLyoqXG4gICAqIE51bWJlciBvZiBwaXhlbHMgdG8gdXNlIGFzIGEgbWFya2VyIGZvciBsb2NhdGlvbiBjaGFuZ2VzLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIDUwXG4gICAqL1xuICB0aHJlc2hvbGQ6IDUwLFxuICAvKipcbiAgICogQ2xhc3MgYXBwbGllZCB0byB0aGUgYWN0aXZlIGxvY2F0aW9ucyBsaW5rIG9uIHRoZSBtYWdlbGxhbiBjb250YWluZXIuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgJ2FjdGl2ZSdcbiAgICovXG4gIGFjdGl2ZUNsYXNzOiAnYWN0aXZlJyxcbiAgLyoqXG4gICAqIEFsbG93cyB0aGUgc2NyaXB0IHRvIG1hbmlwdWxhdGUgdGhlIHVybCBvZiB0aGUgY3VycmVudCBwYWdlLCBhbmQgaWYgc3VwcG9ydGVkLCBhbHRlciB0aGUgaGlzdG9yeS5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSB0cnVlXG4gICAqL1xuICBkZWVwTGlua2luZzogZmFsc2UsXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgcGl4ZWxzIHRvIG9mZnNldCB0aGUgc2Nyb2xsIG9mIHRoZSBwYWdlIG9uIGl0ZW0gY2xpY2sgaWYgdXNpbmcgYSBzdGlja3kgbmF2IGJhci5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAyNVxuICAgKi9cbiAgYmFyT2Zmc2V0OiAwXG59XG5cbi8vIFdpbmRvdyBleHBvcnRzXG5Gb3VuZGF0aW9uLnBsdWdpbihNYWdlbGxhbiwgJ01hZ2VsbGFuJyk7XG5cbn0oalF1ZXJ5KTtcbiIsIid1c2Ugc3RyaWN0JztcblxuIWZ1bmN0aW9uKCQpIHtcblxuLyoqXG4gKiBPZmZDYW52YXMgbW9kdWxlLlxuICogQG1vZHVsZSBmb3VuZGF0aW9uLm9mZmNhbnZhc1xuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC5tZWRpYVF1ZXJ5XG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLnRyaWdnZXJzXG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLm1vdGlvblxuICovXG5cbmNsYXNzIE9mZkNhbnZhcyB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIGFuIG9mZi1jYW52YXMgd3JhcHBlci5cbiAgICogQGNsYXNzXG4gICAqIEBmaXJlcyBPZmZDYW52YXMjaW5pdFxuICAgKiBAcGFyYW0ge09iamVjdH0gZWxlbWVudCAtIGpRdWVyeSBvYmplY3QgdG8gaW5pdGlhbGl6ZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBPdmVycmlkZXMgdG8gdGhlIGRlZmF1bHQgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuJGVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBPZmZDYW52YXMuZGVmYXVsdHMsIHRoaXMuJGVsZW1lbnQuZGF0YSgpLCBvcHRpb25zKTtcbiAgICB0aGlzLiRsYXN0VHJpZ2dlciA9ICQoKTtcbiAgICB0aGlzLiR0cmlnZ2VycyA9ICQoKTtcblxuICAgIHRoaXMuX2luaXQoKTtcbiAgICB0aGlzLl9ldmVudHMoKTtcblxuICAgIEZvdW5kYXRpb24ucmVnaXN0ZXJQbHVnaW4odGhpcywgJ09mZkNhbnZhcycpXG4gICAgRm91bmRhdGlvbi5LZXlib2FyZC5yZWdpc3RlcignT2ZmQ2FudmFzJywge1xuICAgICAgJ0VTQ0FQRSc6ICdjbG9zZSdcbiAgICB9KTtcblxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBvZmYtY2FudmFzIHdyYXBwZXIgYnkgYWRkaW5nIHRoZSBleGl0IG92ZXJsYXkgKGlmIG5lZWRlZCkuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2luaXQoKSB7XG4gICAgdmFyIGlkID0gdGhpcy4kZWxlbWVudC5hdHRyKCdpZCcpO1xuXG4gICAgdGhpcy4kZWxlbWVudC5hdHRyKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG5cbiAgICB0aGlzLiRlbGVtZW50LmFkZENsYXNzKGBpcy10cmFuc2l0aW9uLSR7dGhpcy5vcHRpb25zLnRyYW5zaXRpb259YCk7XG5cbiAgICAvLyBGaW5kIHRyaWdnZXJzIHRoYXQgYWZmZWN0IHRoaXMgZWxlbWVudCBhbmQgYWRkIGFyaWEtZXhwYW5kZWQgdG8gdGhlbVxuICAgIHRoaXMuJHRyaWdnZXJzID0gJChkb2N1bWVudClcbiAgICAgIC5maW5kKCdbZGF0YS1vcGVuPVwiJytpZCsnXCJdLCBbZGF0YS1jbG9zZT1cIicraWQrJ1wiXSwgW2RhdGEtdG9nZ2xlPVwiJytpZCsnXCJdJylcbiAgICAgIC5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJylcbiAgICAgIC5hdHRyKCdhcmlhLWNvbnRyb2xzJywgaWQpO1xuXG4gICAgLy8gQWRkIGFuIG92ZXJsYXkgb3ZlciB0aGUgY29udGVudCBpZiBuZWNlc3NhcnlcbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbnRlbnRPdmVybGF5ID09PSB0cnVlKSB7XG4gICAgICB2YXIgb3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdmFyIG92ZXJsYXlQb3NpdGlvbiA9ICQodGhpcy4kZWxlbWVudCkuY3NzKFwicG9zaXRpb25cIikgPT09ICdmaXhlZCcgPyAnaXMtb3ZlcmxheS1maXhlZCcgOiAnaXMtb3ZlcmxheS1hYnNvbHV0ZSc7XG4gICAgICBvdmVybGF5LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnanMtb2ZmLWNhbnZhcy1vdmVybGF5ICcgKyBvdmVybGF5UG9zaXRpb24pO1xuICAgICAgdGhpcy4kb3ZlcmxheSA9ICQob3ZlcmxheSk7XG4gICAgICBpZihvdmVybGF5UG9zaXRpb24gPT09ICdpcy1vdmVybGF5LWZpeGVkJykge1xuICAgICAgICAkKCdib2R5JykuYXBwZW5kKHRoaXMuJG92ZXJsYXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4kZWxlbWVudC5zaWJsaW5ncygnW2RhdGEtb2ZmLWNhbnZhcy1jb250ZW50XScpLmFwcGVuZCh0aGlzLiRvdmVybGF5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9wdGlvbnMuaXNSZXZlYWxlZCA9IHRoaXMub3B0aW9ucy5pc1JldmVhbGVkIHx8IG5ldyBSZWdFeHAodGhpcy5vcHRpb25zLnJldmVhbENsYXNzLCAnZycpLnRlc3QodGhpcy4kZWxlbWVudFswXS5jbGFzc05hbWUpO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5pc1JldmVhbGVkID09PSB0cnVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnMucmV2ZWFsT24gPSB0aGlzLm9wdGlvbnMucmV2ZWFsT24gfHwgdGhpcy4kZWxlbWVudFswXS5jbGFzc05hbWUubWF0Y2goLyhyZXZlYWwtZm9yLW1lZGl1bXxyZXZlYWwtZm9yLWxhcmdlKS9nKVswXS5zcGxpdCgnLScpWzJdO1xuICAgICAgdGhpcy5fc2V0TVFDaGVja2VyKCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5vcHRpb25zLnRyYW5zaXRpb25UaW1lID09PSB0cnVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnMudHJhbnNpdGlvblRpbWUgPSBwYXJzZUZsb2F0KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCQoJ1tkYXRhLW9mZi1jYW52YXNdJylbMF0pLnRyYW5zaXRpb25EdXJhdGlvbikgKiAxMDAwO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSBvZmYtY2FudmFzIHdyYXBwZXIgYW5kIHRoZSBleGl0IG92ZXJsYXkuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2V2ZW50cygpIHtcbiAgICB0aGlzLiRlbGVtZW50Lm9mZignLnpmLnRyaWdnZXIgLnpmLm9mZmNhbnZhcycpLm9uKHtcbiAgICAgICdvcGVuLnpmLnRyaWdnZXInOiB0aGlzLm9wZW4uYmluZCh0aGlzKSxcbiAgICAgICdjbG9zZS56Zi50cmlnZ2VyJzogdGhpcy5jbG9zZS5iaW5kKHRoaXMpLFxuICAgICAgJ3RvZ2dsZS56Zi50cmlnZ2VyJzogdGhpcy50b2dnbGUuYmluZCh0aGlzKSxcbiAgICAgICdrZXlkb3duLnpmLm9mZmNhbnZhcyc6IHRoaXMuX2hhbmRsZUtleWJvYXJkLmJpbmQodGhpcylcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMuY2xvc2VPbkNsaWNrID09PSB0cnVlKSB7XG4gICAgICB2YXIgJHRhcmdldCA9IHRoaXMub3B0aW9ucy5jb250ZW50T3ZlcmxheSA/IHRoaXMuJG92ZXJsYXkgOiAkKCdbZGF0YS1vZmYtY2FudmFzLWNvbnRlbnRdJyk7XG4gICAgICAkdGFyZ2V0Lm9uKHsnY2xpY2suemYub2ZmY2FudmFzJzogdGhpcy5jbG9zZS5iaW5kKHRoaXMpfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgZXZlbnQgbGlzdGVuZXIgZm9yIGVsZW1lbnRzIHRoYXQgd2lsbCByZXZlYWwgYXQgY2VydGFpbiBicmVha3BvaW50cy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9zZXRNUUNoZWNrZXIoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICQod2luZG93KS5vbignY2hhbmdlZC56Zi5tZWRpYXF1ZXJ5JywgZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoRm91bmRhdGlvbi5NZWRpYVF1ZXJ5LmF0TGVhc3QoX3RoaXMub3B0aW9ucy5yZXZlYWxPbikpIHtcbiAgICAgICAgX3RoaXMucmV2ZWFsKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMucmV2ZWFsKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KS5vbmUoJ2xvYWQuemYub2ZmY2FudmFzJywgZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoRm91bmRhdGlvbi5NZWRpYVF1ZXJ5LmF0TGVhc3QoX3RoaXMub3B0aW9ucy5yZXZlYWxPbikpIHtcbiAgICAgICAgX3RoaXMucmV2ZWFsKHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIHJldmVhbGluZy9oaWRpbmcgdGhlIG9mZi1jYW52YXMgYXQgYnJlYWtwb2ludHMsIG5vdCB0aGUgc2FtZSBhcyBvcGVuLlxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IGlzUmV2ZWFsZWQgLSB0cnVlIGlmIGVsZW1lbnQgc2hvdWxkIGJlIHJldmVhbGVkLlxuICAgKiBAZnVuY3Rpb25cbiAgICovXG4gIHJldmVhbChpc1JldmVhbGVkKSB7XG4gICAgdmFyICRjbG9zZXIgPSB0aGlzLiRlbGVtZW50LmZpbmQoJ1tkYXRhLWNsb3NlXScpO1xuICAgIGlmIChpc1JldmVhbGVkKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB0aGlzLmlzUmV2ZWFsZWQgPSB0cnVlO1xuICAgICAgdGhpcy4kZWxlbWVudC5hdHRyKCdhcmlhLWhpZGRlbicsICdmYWxzZScpO1xuICAgICAgdGhpcy4kZWxlbWVudC5vZmYoJ29wZW4uemYudHJpZ2dlciB0b2dnbGUuemYudHJpZ2dlcicpO1xuICAgICAgaWYgKCRjbG9zZXIubGVuZ3RoKSB7ICRjbG9zZXIuaGlkZSgpOyB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNSZXZlYWxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy4kZWxlbWVudC5hdHRyKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgICB0aGlzLiRlbGVtZW50Lm9uKHtcbiAgICAgICAgJ29wZW4uemYudHJpZ2dlcic6IHRoaXMub3Blbi5iaW5kKHRoaXMpLFxuICAgICAgICAndG9nZ2xlLnpmLnRyaWdnZXInOiB0aGlzLnRvZ2dsZS5iaW5kKHRoaXMpXG4gICAgICB9KTtcbiAgICAgIGlmICgkY2xvc2VyLmxlbmd0aCkge1xuICAgICAgICAkY2xvc2VyLnNob3coKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RvcHMgc2Nyb2xsaW5nIG9mIHRoZSBib2R5IHdoZW4gb2ZmY2FudmFzIGlzIG9wZW4gb24gbW9iaWxlIFNhZmFyaSBhbmQgb3RoZXIgdHJvdWJsZXNvbWUgYnJvd3NlcnMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfc3RvcFNjcm9sbGluZyhldmVudCkge1xuICBcdHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgb2ZmLWNhbnZhcyBtZW51LlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50IC0gRXZlbnQgb2JqZWN0IHBhc3NlZCBmcm9tIGxpc3RlbmVyLlxuICAgKiBAcGFyYW0ge2pRdWVyeX0gdHJpZ2dlciAtIGVsZW1lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIG9mZi1jYW52YXMgdG8gb3Blbi5cbiAgICogQGZpcmVzIE9mZkNhbnZhcyNvcGVuZWRcbiAgICovXG4gIG9wZW4oZXZlbnQsIHRyaWdnZXIpIHtcbiAgICBpZiAodGhpcy4kZWxlbWVudC5oYXNDbGFzcygnaXMtb3BlbicpIHx8IHRoaXMuaXNSZXZlYWxlZCkgeyByZXR1cm47IH1cbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKHRyaWdnZXIpIHtcbiAgICAgIHRoaXMuJGxhc3RUcmlnZ2VyID0gdHJpZ2dlcjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmZvcmNlVG8gPT09ICd0b3AnKSB7XG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VUbyA9PT0gJ2JvdHRvbScpIHtcbiAgICAgIHdpbmRvdy5zY3JvbGxUbygwLGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaXJlcyB3aGVuIHRoZSBvZmYtY2FudmFzIG1lbnUgb3BlbnMuXG4gICAgICogQGV2ZW50IE9mZkNhbnZhcyNvcGVuZWRcbiAgICAgKi9cbiAgICBfdGhpcy4kZWxlbWVudC5hZGRDbGFzcygnaXMtb3BlbicpXG5cbiAgICB0aGlzLiR0cmlnZ2Vycy5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgICB0aGlzLiRlbGVtZW50LmF0dHIoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJylcbiAgICAgICAgLnRyaWdnZXIoJ29wZW5lZC56Zi5vZmZjYW52YXMnKTtcblxuICAgIC8vIElmIGBjb250ZW50U2Nyb2xsYCBpcyBzZXQgdG8gZmFsc2UsIGFkZCBjbGFzcyBhbmQgZGlzYWJsZSBzY3JvbGxpbmcgb24gdG91Y2ggZGV2aWNlcy5cbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbnRlbnRTY3JvbGwgPT09IGZhbHNlKSB7XG4gICAgICAkKCdib2R5JykuYWRkQ2xhc3MoJ2lzLW9mZi1jYW52YXMtb3BlbicpLm9uKCd0b3VjaG1vdmUnLCB0aGlzLl9zdG9wU2Nyb2xsaW5nKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbnRlbnRPdmVybGF5ID09PSB0cnVlKSB7XG4gICAgICB0aGlzLiRvdmVybGF5LmFkZENsYXNzKCdpcy12aXNpYmxlJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jbG9zZU9uQ2xpY2sgPT09IHRydWUgJiYgdGhpcy5vcHRpb25zLmNvbnRlbnRPdmVybGF5ID09PSB0cnVlKSB7XG4gICAgICB0aGlzLiRvdmVybGF5LmFkZENsYXNzKCdpcy1jbG9zYWJsZScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b0ZvY3VzID09PSB0cnVlKSB7XG4gICAgICB0aGlzLiRlbGVtZW50Lm9uZShGb3VuZGF0aW9uLnRyYW5zaXRpb25lbmQodGhpcy4kZWxlbWVudCksIGZ1bmN0aW9uKCkge1xuICAgICAgICBfdGhpcy4kZWxlbWVudC5maW5kKCdhLCBidXR0b24nKS5lcSgwKS5mb2N1cygpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy50cmFwRm9jdXMgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuJGVsZW1lbnQuc2libGluZ3MoJ1tkYXRhLW9mZi1jYW52YXMtY29udGVudF0nKS5hdHRyKCd0YWJpbmRleCcsICctMScpO1xuICAgICAgRm91bmRhdGlvbi5LZXlib2FyZC50cmFwRm9jdXModGhpcy4kZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgb2ZmLWNhbnZhcyBtZW51LlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2IgLSBvcHRpb25hbCBjYiB0byBmaXJlIGFmdGVyIGNsb3N1cmUuXG4gICAqIEBmaXJlcyBPZmZDYW52YXMjY2xvc2VkXG4gICAqL1xuICBjbG9zZShjYikge1xuICAgIGlmICghdGhpcy4kZWxlbWVudC5oYXNDbGFzcygnaXMtb3BlbicpIHx8IHRoaXMuaXNSZXZlYWxlZCkgeyByZXR1cm47IH1cblxuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygnaXMtb3BlbicpO1xuXG4gICAgdGhpcy4kZWxlbWVudC5hdHRyKCdhcmlhLWhpZGRlbicsICd0cnVlJylcbiAgICAgIC8qKlxuICAgICAgICogRmlyZXMgd2hlbiB0aGUgb2ZmLWNhbnZhcyBtZW51IG9wZW5zLlxuICAgICAgICogQGV2ZW50IE9mZkNhbnZhcyNjbG9zZWRcbiAgICAgICAqL1xuICAgICAgICAudHJpZ2dlcignY2xvc2VkLnpmLm9mZmNhbnZhcycpO1xuXG4gICAgLy8gSWYgYGNvbnRlbnRTY3JvbGxgIGlzIHNldCB0byBmYWxzZSwgcmVtb3ZlIGNsYXNzIGFuZCByZS1lbmFibGUgc2Nyb2xsaW5nIG9uIHRvdWNoIGRldmljZXMuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jb250ZW50U2Nyb2xsID09PSBmYWxzZSkge1xuICAgICAgJCgnYm9keScpLnJlbW92ZUNsYXNzKCdpcy1vZmYtY2FudmFzLW9wZW4nKS5vZmYoJ3RvdWNobW92ZScsIHRoaXMuX3N0b3BTY3JvbGxpbmcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuY29udGVudE92ZXJsYXkgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuJG92ZXJsYXkucmVtb3ZlQ2xhc3MoJ2lzLXZpc2libGUnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmNsb3NlT25DbGljayA9PT0gdHJ1ZSAmJiB0aGlzLm9wdGlvbnMuY29udGVudE92ZXJsYXkgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuJG92ZXJsYXkucmVtb3ZlQ2xhc3MoJ2lzLWNsb3NhYmxlJyk7XG4gICAgfVxuXG4gICAgdGhpcy4kdHJpZ2dlcnMuYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy50cmFwRm9jdXMgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuJGVsZW1lbnQuc2libGluZ3MoJ1tkYXRhLW9mZi1jYW52YXMtY29udGVudF0nKS5yZW1vdmVBdHRyKCd0YWJpbmRleCcpO1xuICAgICAgRm91bmRhdGlvbi5LZXlib2FyZC5yZWxlYXNlRm9jdXModGhpcy4kZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIG9mZi1jYW52YXMgbWVudSBvcGVuIG9yIGNsb3NlZC5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudCAtIEV2ZW50IG9iamVjdCBwYXNzZWQgZnJvbSBsaXN0ZW5lci5cbiAgICogQHBhcmFtIHtqUXVlcnl9IHRyaWdnZXIgLSBlbGVtZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBvZmYtY2FudmFzIHRvIG9wZW4uXG4gICAqL1xuICB0b2dnbGUoZXZlbnQsIHRyaWdnZXIpIHtcbiAgICBpZiAodGhpcy4kZWxlbWVudC5oYXNDbGFzcygnaXMtb3BlbicpKSB7XG4gICAgICB0aGlzLmNsb3NlKGV2ZW50LCB0cmlnZ2VyKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLm9wZW4oZXZlbnQsIHRyaWdnZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGtleWJvYXJkIGlucHV0IHdoZW4gZGV0ZWN0ZWQuIFdoZW4gdGhlIGVzY2FwZSBrZXkgaXMgcHJlc3NlZCwgdGhlIG9mZi1jYW52YXMgbWVudSBjbG9zZXMsIGFuZCBmb2N1cyBpcyByZXN0b3JlZCB0byB0aGUgZWxlbWVudCB0aGF0IG9wZW5lZCB0aGUgbWVudS5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfaGFuZGxlS2V5Ym9hcmQoZSkge1xuICAgIEZvdW5kYXRpb24uS2V5Ym9hcmQuaGFuZGxlS2V5KGUsICdPZmZDYW52YXMnLCB7XG4gICAgICBjbG9zZTogKCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuJGxhc3RUcmlnZ2VyLmZvY3VzKCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcbiAgICAgIGhhbmRsZWQ6ICgpID0+IHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSBvZmZjYW52YXMgcGx1Z2luLlxuICAgKiBAZnVuY3Rpb25cbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIHRoaXMuJGVsZW1lbnQub2ZmKCcuemYudHJpZ2dlciAuemYub2ZmY2FudmFzJyk7XG4gICAgdGhpcy4kb3ZlcmxheS5vZmYoJy56Zi5vZmZjYW52YXMnKTtcblxuICAgIEZvdW5kYXRpb24udW5yZWdpc3RlclBsdWdpbih0aGlzKTtcbiAgfVxufVxuXG5PZmZDYW52YXMuZGVmYXVsdHMgPSB7XG4gIC8qKlxuICAgKiBBbGxvdyB0aGUgdXNlciB0byBjbGljayBvdXRzaWRlIG9mIHRoZSBtZW51IHRvIGNsb3NlIGl0LlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIHRydWVcbiAgICovXG4gIGNsb3NlT25DbGljazogdHJ1ZSxcblxuICAvKipcbiAgICogQWRkcyBhbiBvdmVybGF5IG9uIHRvcCBvZiBgW2RhdGEtb2ZmLWNhbnZhcy1jb250ZW50XWAuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgdHJ1ZVxuICAgKi9cbiAgY29udGVudE92ZXJsYXk6IHRydWUsXG5cbiAgLyoqXG4gICAqIEVuYWJsZS9kaXNhYmxlIHNjcm9sbGluZyBvZiB0aGUgbWFpbiBjb250ZW50IHdoZW4gYW4gb2ZmIGNhbnZhcyBwYW5lbCBpcyBvcGVuLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIHRydWVcbiAgICovXG4gIGNvbnRlbnRTY3JvbGw6IHRydWUsXG5cbiAgLyoqXG4gICAqIEFtb3VudCBvZiB0aW1lIGluIG1zIHRoZSBvcGVuIGFuZCBjbG9zZSB0cmFuc2l0aW9uIHJlcXVpcmVzLiBJZiBub25lIHNlbGVjdGVkLCBwdWxscyBmcm9tIGJvZHkgc3R5bGUuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgNTAwXG4gICAqL1xuICB0cmFuc2l0aW9uVGltZTogMCxcblxuICAvKipcbiAgICogVHlwZSBvZiB0cmFuc2l0aW9uIGZvciB0aGUgb2ZmY2FudmFzIG1lbnUuIE9wdGlvbnMgYXJlICdwdXNoJywgJ2RldGFjaGVkJyBvciAnc2xpZGUnLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIHB1c2hcbiAgICovXG4gIHRyYW5zaXRpb246ICdwdXNoJyxcblxuICAvKipcbiAgICogRm9yY2UgdGhlIHBhZ2UgdG8gc2Nyb2xsIHRvIHRvcCBvciBib3R0b20gb24gb3Blbi5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSB0b3BcbiAgICovXG4gIGZvcmNlVG86IG51bGwsXG5cbiAgLyoqXG4gICAqIEFsbG93IHRoZSBvZmZjYW52YXMgdG8gcmVtYWluIG9wZW4gZm9yIGNlcnRhaW4gYnJlYWtwb2ludHMuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIGlzUmV2ZWFsZWQ6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBCcmVha3BvaW50IGF0IHdoaWNoIHRvIHJldmVhbC4gSlMgd2lsbCB1c2UgYSBSZWdFeHAgdG8gdGFyZ2V0IHN0YW5kYXJkIGNsYXNzZXMsIGlmIGNoYW5naW5nIGNsYXNzbmFtZXMsIHBhc3MgeW91ciBjbGFzcyB3aXRoIHRoZSBgcmV2ZWFsQ2xhc3NgIG9wdGlvbi5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSByZXZlYWwtZm9yLWxhcmdlXG4gICAqL1xuICByZXZlYWxPbjogbnVsbCxcblxuICAvKipcbiAgICogRm9yY2UgZm9jdXMgdG8gdGhlIG9mZmNhbnZhcyBvbiBvcGVuLiBJZiB0cnVlLCB3aWxsIGZvY3VzIHRoZSBvcGVuaW5nIHRyaWdnZXIgb24gY2xvc2UuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgdHJ1ZVxuICAgKi9cbiAgYXV0b0ZvY3VzOiB0cnVlLFxuXG4gIC8qKlxuICAgKiBDbGFzcyB1c2VkIHRvIGZvcmNlIGFuIG9mZmNhbnZhcyB0byByZW1haW4gb3Blbi4gRm91bmRhdGlvbiBkZWZhdWx0cyBmb3IgdGhpcyBhcmUgYHJldmVhbC1mb3ItbGFyZ2VgICYgYHJldmVhbC1mb3ItbWVkaXVtYC5cbiAgICogQG9wdGlvblxuICAgKiBUT0RPIGltcHJvdmUgdGhlIHJlZ2V4IHRlc3RpbmcgZm9yIHRoaXMuXG4gICAqIEBleGFtcGxlIHJldmVhbC1mb3ItbGFyZ2VcbiAgICovXG4gIHJldmVhbENsYXNzOiAncmV2ZWFsLWZvci0nLFxuXG4gIC8qKlxuICAgKiBUcmlnZ2VycyBvcHRpb25hbCBmb2N1cyB0cmFwcGluZyB3aGVuIG9wZW5pbmcgYW4gb2ZmY2FudmFzLiBTZXRzIHRhYmluZGV4IG9mIFtkYXRhLW9mZi1jYW52YXMtY29udGVudF0gdG8gLTEgZm9yIGFjY2Vzc2liaWxpdHkgcHVycG9zZXMuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgdHJ1ZVxuICAgKi9cbiAgdHJhcEZvY3VzOiBmYWxzZVxufVxuXG4vLyBXaW5kb3cgZXhwb3J0c1xuRm91bmRhdGlvbi5wbHVnaW4oT2ZmQ2FudmFzLCAnT2ZmQ2FudmFzJyk7XG5cbn0oalF1ZXJ5KTtcbiIsIid1c2Ugc3RyaWN0JztcblxuIWZ1bmN0aW9uKCQpIHtcblxuLyoqXG4gKiBPcmJpdCBtb2R1bGUuXG4gKiBAbW9kdWxlIGZvdW5kYXRpb24ub3JiaXRcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwua2V5Ym9hcmRcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwubW90aW9uXG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLnRpbWVyQW5kSW1hZ2VMb2FkZXJcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwudG91Y2hcbiAqL1xuXG5jbGFzcyBPcmJpdCB7XG4gIC8qKlxuICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgYW4gb3JiaXQgY2Fyb3VzZWwuXG4gICogQGNsYXNzXG4gICogQHBhcmFtIHtqUXVlcnl9IGVsZW1lbnQgLSBqUXVlcnkgb2JqZWN0IHRvIG1ha2UgaW50byBhbiBPcmJpdCBDYXJvdXNlbC5cbiAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIE92ZXJyaWRlcyB0byB0aGUgZGVmYXVsdCBwbHVnaW4gc2V0dGluZ3MuXG4gICovXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG9wdGlvbnMpe1xuICAgIHRoaXMuJGVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBPcmJpdC5kZWZhdWx0cywgdGhpcy4kZWxlbWVudC5kYXRhKCksIG9wdGlvbnMpO1xuXG4gICAgdGhpcy5faW5pdCgpO1xuXG4gICAgRm91bmRhdGlvbi5yZWdpc3RlclBsdWdpbih0aGlzLCAnT3JiaXQnKTtcbiAgICBGb3VuZGF0aW9uLktleWJvYXJkLnJlZ2lzdGVyKCdPcmJpdCcsIHtcbiAgICAgICdsdHInOiB7XG4gICAgICAgICdBUlJPV19SSUdIVCc6ICduZXh0JyxcbiAgICAgICAgJ0FSUk9XX0xFRlQnOiAncHJldmlvdXMnXG4gICAgICB9LFxuICAgICAgJ3J0bCc6IHtcbiAgICAgICAgJ0FSUk9XX0xFRlQnOiAnbmV4dCcsXG4gICAgICAgICdBUlJPV19SSUdIVCc6ICdwcmV2aW91cydcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIEluaXRpYWxpemVzIHRoZSBwbHVnaW4gYnkgY3JlYXRpbmcgalF1ZXJ5IGNvbGxlY3Rpb25zLCBzZXR0aW5nIGF0dHJpYnV0ZXMsIGFuZCBzdGFydGluZyB0aGUgYW5pbWF0aW9uLlxuICAqIEBmdW5jdGlvblxuICAqIEBwcml2YXRlXG4gICovXG4gIF9pbml0KCkge1xuICAgIC8vIEBUT0RPOiBjb25zaWRlciBkaXNjdXNzaW9uIG9uIFBSICM5Mjc4IGFib3V0IERPTSBwb2xsdXRpb24gYnkgY2hhbmdlU2xpZGVcbiAgICB0aGlzLl9yZXNldCgpO1xuXG4gICAgdGhpcy4kd3JhcHBlciA9IHRoaXMuJGVsZW1lbnQuZmluZChgLiR7dGhpcy5vcHRpb25zLmNvbnRhaW5lckNsYXNzfWApO1xuICAgIHRoaXMuJHNsaWRlcyA9IHRoaXMuJGVsZW1lbnQuZmluZChgLiR7dGhpcy5vcHRpb25zLnNsaWRlQ2xhc3N9YCk7XG5cbiAgICB2YXIgJGltYWdlcyA9IHRoaXMuJGVsZW1lbnQuZmluZCgnaW1nJyksXG4gICAgICAgIGluaXRBY3RpdmUgPSB0aGlzLiRzbGlkZXMuZmlsdGVyKCcuaXMtYWN0aXZlJyksXG4gICAgICAgIGlkID0gdGhpcy4kZWxlbWVudFswXS5pZCB8fCBGb3VuZGF0aW9uLkdldFlvRGlnaXRzKDYsICdvcmJpdCcpO1xuXG4gICAgdGhpcy4kZWxlbWVudC5hdHRyKHtcbiAgICAgICdkYXRhLXJlc2l6ZSc6IGlkLFxuICAgICAgJ2lkJzogaWRcbiAgICB9KTtcblxuICAgIGlmICghaW5pdEFjdGl2ZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuJHNsaWRlcy5lcSgwKS5hZGRDbGFzcygnaXMtYWN0aXZlJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMudXNlTVVJKSB7XG4gICAgICB0aGlzLiRzbGlkZXMuYWRkQ2xhc3MoJ25vLW1vdGlvbnVpJyk7XG4gICAgfVxuXG4gICAgaWYgKCRpbWFnZXMubGVuZ3RoKSB7XG4gICAgICBGb3VuZGF0aW9uLm9uSW1hZ2VzTG9hZGVkKCRpbWFnZXMsIHRoaXMuX3ByZXBhcmVGb3JPcmJpdC5iaW5kKHRoaXMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcHJlcGFyZUZvck9yYml0KCk7Ly9oZWhlXG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5idWxsZXRzKSB7XG4gICAgICB0aGlzLl9sb2FkQnVsbGV0cygpO1xuICAgIH1cblxuICAgIHRoaXMuX2V2ZW50cygpO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hdXRvUGxheSAmJiB0aGlzLiRzbGlkZXMubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5nZW9TeW5jKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hY2Nlc3NpYmxlKSB7IC8vIGFsbG93IHdyYXBwZXIgdG8gYmUgZm9jdXNhYmxlIHRvIGVuYWJsZSBhcnJvdyBuYXZpZ2F0aW9uXG4gICAgICB0aGlzLiR3cmFwcGVyLmF0dHIoJ3RhYmluZGV4JywgMCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICogQ3JlYXRlcyBhIGpRdWVyeSBjb2xsZWN0aW9uIG9mIGJ1bGxldHMsIGlmIHRoZXkgYXJlIGJlaW5nIHVzZWQuXG4gICogQGZ1bmN0aW9uXG4gICogQHByaXZhdGVcbiAgKi9cbiAgX2xvYWRCdWxsZXRzKCkge1xuICAgIHRoaXMuJGJ1bGxldHMgPSB0aGlzLiRlbGVtZW50LmZpbmQoYC4ke3RoaXMub3B0aW9ucy5ib3hPZkJ1bGxldHN9YCkuZmluZCgnYnV0dG9uJyk7XG4gIH1cblxuICAvKipcbiAgKiBTZXRzIGEgYHRpbWVyYCBvYmplY3Qgb24gdGhlIG9yYml0LCBhbmQgc3RhcnRzIHRoZSBjb3VudGVyIGZvciB0aGUgbmV4dCBzbGlkZS5cbiAgKiBAZnVuY3Rpb25cbiAgKi9cbiAgZ2VvU3luYygpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIHRoaXMudGltZXIgPSBuZXcgRm91bmRhdGlvbi5UaW1lcihcbiAgICAgIHRoaXMuJGVsZW1lbnQsXG4gICAgICB7XG4gICAgICAgIGR1cmF0aW9uOiB0aGlzLm9wdGlvbnMudGltZXJEZWxheSxcbiAgICAgICAgaW5maW5pdGU6IGZhbHNlXG4gICAgICB9LFxuICAgICAgZnVuY3Rpb24oKSB7XG4gICAgICAgIF90aGlzLmNoYW5nZVNsaWRlKHRydWUpO1xuICAgICAgfSk7XG4gICAgdGhpcy50aW1lci5zdGFydCgpO1xuICB9XG5cbiAgLyoqXG4gICogU2V0cyB3cmFwcGVyIGFuZCBzbGlkZSBoZWlnaHRzIGZvciB0aGUgb3JiaXQuXG4gICogQGZ1bmN0aW9uXG4gICogQHByaXZhdGVcbiAgKi9cbiAgX3ByZXBhcmVGb3JPcmJpdCgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIHRoaXMuX3NldFdyYXBwZXJIZWlnaHQoKTtcbiAgfVxuXG4gIC8qKlxuICAqIENhbHVsYXRlcyB0aGUgaGVpZ2h0IG9mIGVhY2ggc2xpZGUgaW4gdGhlIGNvbGxlY3Rpb24sIGFuZCB1c2VzIHRoZSB0YWxsZXN0IG9uZSBmb3IgdGhlIHdyYXBwZXIgaGVpZ2h0LlxuICAqIEBmdW5jdGlvblxuICAqIEBwcml2YXRlXG4gICogQHBhcmFtIHtGdW5jdGlvbn0gY2IgLSBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGZpcmUgd2hlbiBjb21wbGV0ZS5cbiAgKi9cbiAgX3NldFdyYXBwZXJIZWlnaHQoY2IpIHsvL3Jld3JpdGUgdGhpcyB0byBgZm9yYCBsb29wXG4gICAgdmFyIG1heCA9IDAsIHRlbXAsIGNvdW50ZXIgPSAwLCBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLiRzbGlkZXMuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgIHRlbXAgPSB0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgICQodGhpcykuYXR0cignZGF0YS1zbGlkZScsIGNvdW50ZXIpO1xuXG4gICAgICBpZiAoX3RoaXMuJHNsaWRlcy5maWx0ZXIoJy5pcy1hY3RpdmUnKVswXSAhPT0gX3RoaXMuJHNsaWRlcy5lcShjb3VudGVyKVswXSkgey8vaWYgbm90IHRoZSBhY3RpdmUgc2xpZGUsIHNldCBjc3MgcG9zaXRpb24gYW5kIGRpc3BsYXkgcHJvcGVydHlcbiAgICAgICAgJCh0aGlzKS5jc3Moeydwb3NpdGlvbic6ICdyZWxhdGl2ZScsICdkaXNwbGF5JzogJ25vbmUnfSk7XG4gICAgICB9XG4gICAgICBtYXggPSB0ZW1wID4gbWF4ID8gdGVtcCA6IG1heDtcbiAgICAgIGNvdW50ZXIrKztcbiAgICB9KTtcblxuICAgIGlmIChjb3VudGVyID09PSB0aGlzLiRzbGlkZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLiR3cmFwcGVyLmNzcyh7J2hlaWdodCc6IG1heH0pOyAvL29ubHkgY2hhbmdlIHRoZSB3cmFwcGVyIGhlaWdodCBwcm9wZXJ0eSBvbmNlLlxuICAgICAgaWYoY2IpIHtjYihtYXgpO30gLy9maXJlIGNhbGxiYWNrIHdpdGggbWF4IGhlaWdodCBkaW1lbnNpb24uXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICogU2V0cyB0aGUgbWF4LWhlaWdodCBvZiBlYWNoIHNsaWRlLlxuICAqIEBmdW5jdGlvblxuICAqIEBwcml2YXRlXG4gICovXG4gIF9zZXRTbGlkZUhlaWdodChoZWlnaHQpIHtcbiAgICB0aGlzLiRzbGlkZXMuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICQodGhpcykuY3NzKCdtYXgtaGVpZ2h0JywgaGVpZ2h0KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAqIEFkZHMgZXZlbnQgbGlzdGVuZXJzIHRvIGJhc2ljYWxseSBldmVyeXRoaW5nIHdpdGhpbiB0aGUgZWxlbWVudC5cbiAgKiBAZnVuY3Rpb25cbiAgKiBAcHJpdmF0ZVxuICAqL1xuICBfZXZlbnRzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIC8vKipOb3cgdXNpbmcgY3VzdG9tIGV2ZW50IC0gdGhhbmtzIHRvOioqXG4gICAgLy8qKiAgICAgIFlvaGFpIEFyYXJhdCBvZiBUb3JvbnRvICAgICAgKipcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIC8vXG4gICAgdGhpcy4kZWxlbWVudC5vZmYoJy5yZXNpemVtZS56Zi50cmlnZ2VyJykub24oe1xuICAgICAgJ3Jlc2l6ZW1lLnpmLnRyaWdnZXInOiB0aGlzLl9wcmVwYXJlRm9yT3JiaXQuYmluZCh0aGlzKVxuICAgIH0pXG4gICAgaWYgKHRoaXMuJHNsaWRlcy5sZW5ndGggPiAxKSB7XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuc3dpcGUpIHtcbiAgICAgICAgdGhpcy4kc2xpZGVzLm9mZignc3dpcGVsZWZ0LnpmLm9yYml0IHN3aXBlcmlnaHQuemYub3JiaXQnKVxuICAgICAgICAub24oJ3N3aXBlbGVmdC56Zi5vcmJpdCcsIGZ1bmN0aW9uKGUpe1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBfdGhpcy5jaGFuZ2VTbGlkZSh0cnVlKTtcbiAgICAgICAgfSkub24oJ3N3aXBlcmlnaHQuemYub3JiaXQnLCBmdW5jdGlvbihlKXtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgX3RoaXMuY2hhbmdlU2xpZGUoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b1BsYXkpIHtcbiAgICAgICAgdGhpcy4kc2xpZGVzLm9uKCdjbGljay56Zi5vcmJpdCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIF90aGlzLiRlbGVtZW50LmRhdGEoJ2NsaWNrZWRPbicsIF90aGlzLiRlbGVtZW50LmRhdGEoJ2NsaWNrZWRPbicpID8gZmFsc2UgOiB0cnVlKTtcbiAgICAgICAgICBfdGhpcy50aW1lcltfdGhpcy4kZWxlbWVudC5kYXRhKCdjbGlja2VkT24nKSA/ICdwYXVzZScgOiAnc3RhcnQnXSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBhdXNlT25Ib3Zlcikge1xuICAgICAgICAgIHRoaXMuJGVsZW1lbnQub24oJ21vdXNlZW50ZXIuemYub3JiaXQnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIF90aGlzLnRpbWVyLnBhdXNlKCk7XG4gICAgICAgICAgfSkub24oJ21vdXNlbGVhdmUuemYub3JiaXQnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmICghX3RoaXMuJGVsZW1lbnQuZGF0YSgnY2xpY2tlZE9uJykpIHtcbiAgICAgICAgICAgICAgX3RoaXMudGltZXIuc3RhcnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLm5hdkJ1dHRvbnMpIHtcbiAgICAgICAgdmFyICRjb250cm9scyA9IHRoaXMuJGVsZW1lbnQuZmluZChgLiR7dGhpcy5vcHRpb25zLm5leHRDbGFzc30sIC4ke3RoaXMub3B0aW9ucy5wcmV2Q2xhc3N9YCk7XG4gICAgICAgICRjb250cm9scy5hdHRyKCd0YWJpbmRleCcsIDApXG4gICAgICAgIC8vYWxzbyBuZWVkIHRvIGhhbmRsZSBlbnRlci9yZXR1cm4gYW5kIHNwYWNlYmFyIGtleSBwcmVzc2VzXG4gICAgICAgIC5vbignY2xpY2suemYub3JiaXQgdG91Y2hlbmQuemYub3JiaXQnLCBmdW5jdGlvbihlKXtcblx0ICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgX3RoaXMuY2hhbmdlU2xpZGUoJCh0aGlzKS5oYXNDbGFzcyhfdGhpcy5vcHRpb25zLm5leHRDbGFzcykpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5idWxsZXRzKSB7XG4gICAgICAgIHRoaXMuJGJ1bGxldHMub24oJ2NsaWNrLnpmLm9yYml0IHRvdWNoZW5kLnpmLm9yYml0JywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKC9pcy1hY3RpdmUvZy50ZXN0KHRoaXMuY2xhc3NOYW1lKSkgeyByZXR1cm4gZmFsc2U7IH0vL2lmIHRoaXMgaXMgYWN0aXZlLCBraWNrIG91dCBvZiBmdW5jdGlvbi5cbiAgICAgICAgICB2YXIgaWR4ID0gJCh0aGlzKS5kYXRhKCdzbGlkZScpLFxuICAgICAgICAgIGx0ciA9IGlkeCA+IF90aGlzLiRzbGlkZXMuZmlsdGVyKCcuaXMtYWN0aXZlJykuZGF0YSgnc2xpZGUnKSxcbiAgICAgICAgICAkc2xpZGUgPSBfdGhpcy4kc2xpZGVzLmVxKGlkeCk7XG5cbiAgICAgICAgICBfdGhpcy5jaGFuZ2VTbGlkZShsdHIsICRzbGlkZSwgaWR4KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYWNjZXNzaWJsZSkge1xuICAgICAgICB0aGlzLiR3cmFwcGVyLmFkZCh0aGlzLiRidWxsZXRzKS5vbigna2V5ZG93bi56Zi5vcmJpdCcsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAvLyBoYW5kbGUga2V5Ym9hcmQgZXZlbnQgd2l0aCBrZXlib2FyZCB1dGlsXG4gICAgICAgICAgRm91bmRhdGlvbi5LZXlib2FyZC5oYW5kbGVLZXkoZSwgJ09yYml0Jywge1xuICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIF90aGlzLmNoYW5nZVNsaWRlKHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByZXZpb3VzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgX3RoaXMuY2hhbmdlU2xpZGUoZmFsc2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhbmRsZWQ6IGZ1bmN0aW9uKCkgeyAvLyBpZiBidWxsZXQgaXMgZm9jdXNlZCwgbWFrZSBzdXJlIGZvY3VzIG1vdmVzXG4gICAgICAgICAgICAgIGlmICgkKGUudGFyZ2V0KS5pcyhfdGhpcy4kYnVsbGV0cykpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy4kYnVsbGV0cy5maWx0ZXIoJy5pcy1hY3RpdmUnKS5mb2N1cygpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgT3JiaXQgc28gaXQgY2FuIGJlIHJlaW5pdGlhbGl6ZWRcbiAgICovXG4gIF9yZXNldCgpIHtcbiAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiB0aGVyZSBhcmUgbm8gc2xpZGVzIChmaXJzdCBydW4pXG4gICAgaWYgKHR5cGVvZiB0aGlzLiRzbGlkZXMgPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy4kc2xpZGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIC8vIFJlbW92ZSBvbGQgZXZlbnRzXG4gICAgICB0aGlzLiRlbGVtZW50Lm9mZignLnpmLm9yYml0JykuZmluZCgnKicpLm9mZignLnpmLm9yYml0JylcblxuICAgICAgLy8gUmVzdGFydCB0aW1lciBpZiBhdXRvUGxheSBpcyBlbmFibGVkXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9QbGF5KSB7XG4gICAgICAgIHRoaXMudGltZXIucmVzdGFydCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXNldCBhbGwgc2xpZGRlc1xuICAgICAgdGhpcy4kc2xpZGVzLmVhY2goZnVuY3Rpb24oZWwpIHtcbiAgICAgICAgJChlbCkucmVtb3ZlQ2xhc3MoJ2lzLWFjdGl2ZSBpcy1hY3RpdmUgaXMtaW4nKVxuICAgICAgICAgIC5yZW1vdmVBdHRyKCdhcmlhLWxpdmUnKVxuICAgICAgICAgIC5oaWRlKCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gU2hvdyB0aGUgZmlyc3Qgc2xpZGVcbiAgICAgIHRoaXMuJHNsaWRlcy5maXJzdCgpLmFkZENsYXNzKCdpcy1hY3RpdmUnKS5zaG93KCk7XG5cbiAgICAgIC8vIFRyaWdnZXJzIHdoZW4gdGhlIHNsaWRlIGhhcyBmaW5pc2hlZCBhbmltYXRpbmdcbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignc2xpZGVjaGFuZ2UuemYub3JiaXQnLCBbdGhpcy4kc2xpZGVzLmZpcnN0KCldKTtcblxuICAgICAgLy8gU2VsZWN0IGZpcnN0IGJ1bGxldCBpZiBidWxsZXRzIGFyZSBwcmVzZW50XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmJ1bGxldHMpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlQnVsbGV0cygwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgKiBDaGFuZ2VzIHRoZSBjdXJyZW50IHNsaWRlIHRvIGEgbmV3IG9uZS5cbiAgKiBAZnVuY3Rpb25cbiAgKiBAcGFyYW0ge0Jvb2xlYW59IGlzTFRSIC0gZmxhZyBpZiB0aGUgc2xpZGUgc2hvdWxkIG1vdmUgbGVmdCB0byByaWdodC5cbiAgKiBAcGFyYW0ge2pRdWVyeX0gY2hvc2VuU2xpZGUgLSB0aGUgalF1ZXJ5IGVsZW1lbnQgb2YgdGhlIHNsaWRlIHRvIHNob3cgbmV4dCwgaWYgb25lIGlzIHNlbGVjdGVkLlxuICAqIEBwYXJhbSB7TnVtYmVyfSBpZHggLSB0aGUgaW5kZXggb2YgdGhlIG5ldyBzbGlkZSBpbiBpdHMgY29sbGVjdGlvbiwgaWYgb25lIGNob3Nlbi5cbiAgKiBAZmlyZXMgT3JiaXQjc2xpZGVjaGFuZ2VcbiAgKi9cbiAgY2hhbmdlU2xpZGUoaXNMVFIsIGNob3NlblNsaWRlLCBpZHgpIHtcbiAgICBpZiAoIXRoaXMuJHNsaWRlcykge3JldHVybjsgfSAvLyBEb24ndCBmcmVhayBvdXQgaWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBjbGVhbnVwXG4gICAgdmFyICRjdXJTbGlkZSA9IHRoaXMuJHNsaWRlcy5maWx0ZXIoJy5pcy1hY3RpdmUnKS5lcSgwKTtcblxuICAgIGlmICgvbXVpL2cudGVzdCgkY3VyU2xpZGVbMF0uY2xhc3NOYW1lKSkgeyByZXR1cm4gZmFsc2U7IH0gLy9pZiB0aGUgc2xpZGUgaXMgY3VycmVudGx5IGFuaW1hdGluZywga2ljayBvdXQgb2YgdGhlIGZ1bmN0aW9uXG5cbiAgICB2YXIgJGZpcnN0U2xpZGUgPSB0aGlzLiRzbGlkZXMuZmlyc3QoKSxcbiAgICAkbGFzdFNsaWRlID0gdGhpcy4kc2xpZGVzLmxhc3QoKSxcbiAgICBkaXJJbiA9IGlzTFRSID8gJ1JpZ2h0JyA6ICdMZWZ0JyxcbiAgICBkaXJPdXQgPSBpc0xUUiA/ICdMZWZ0JyA6ICdSaWdodCcsXG4gICAgX3RoaXMgPSB0aGlzLFxuICAgICRuZXdTbGlkZTtcblxuICAgIGlmICghY2hvc2VuU2xpZGUpIHsgLy9tb3N0IG9mIHRoZSB0aW1lLCB0aGlzIHdpbGwgYmUgYXV0byBwbGF5ZWQgb3IgY2xpY2tlZCBmcm9tIHRoZSBuYXZCdXR0b25zLlxuICAgICAgJG5ld1NsaWRlID0gaXNMVFIgPyAvL2lmIHdyYXBwaW5nIGVuYWJsZWQsIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBhIGBuZXh0YCBvciBgcHJldmAgc2libGluZywgaWYgbm90LCBzZWxlY3QgdGhlIGZpcnN0IG9yIGxhc3Qgc2xpZGUgdG8gZmlsbCBpbi4gaWYgd3JhcHBpbmcgbm90IGVuYWJsZWQsIGF0dGVtcHQgdG8gc2VsZWN0IGBuZXh0YCBvciBgcHJldmAsIGlmIHRoZXJlJ3Mgbm90aGluZyB0aGVyZSwgdGhlIGZ1bmN0aW9uIHdpbGwga2ljayBvdXQgb24gbmV4dCBzdGVwLiBDUkFaWSBORVNURUQgVEVSTkFSSUVTISEhISFcbiAgICAgICh0aGlzLm9wdGlvbnMuaW5maW5pdGVXcmFwID8gJGN1clNsaWRlLm5leHQoYC4ke3RoaXMub3B0aW9ucy5zbGlkZUNsYXNzfWApLmxlbmd0aCA/ICRjdXJTbGlkZS5uZXh0KGAuJHt0aGlzLm9wdGlvbnMuc2xpZGVDbGFzc31gKSA6ICRmaXJzdFNsaWRlIDogJGN1clNsaWRlLm5leHQoYC4ke3RoaXMub3B0aW9ucy5zbGlkZUNsYXNzfWApKS8vcGljayBuZXh0IHNsaWRlIGlmIG1vdmluZyBsZWZ0IHRvIHJpZ2h0XG4gICAgICA6XG4gICAgICAodGhpcy5vcHRpb25zLmluZmluaXRlV3JhcCA/ICRjdXJTbGlkZS5wcmV2KGAuJHt0aGlzLm9wdGlvbnMuc2xpZGVDbGFzc31gKS5sZW5ndGggPyAkY3VyU2xpZGUucHJldihgLiR7dGhpcy5vcHRpb25zLnNsaWRlQ2xhc3N9YCkgOiAkbGFzdFNsaWRlIDogJGN1clNsaWRlLnByZXYoYC4ke3RoaXMub3B0aW9ucy5zbGlkZUNsYXNzfWApKTsvL3BpY2sgcHJldiBzbGlkZSBpZiBtb3ZpbmcgcmlnaHQgdG8gbGVmdFxuICAgIH0gZWxzZSB7XG4gICAgICAkbmV3U2xpZGUgPSBjaG9zZW5TbGlkZTtcbiAgICB9XG5cbiAgICBpZiAoJG5ld1NsaWRlLmxlbmd0aCkge1xuICAgICAgLyoqXG4gICAgICAqIFRyaWdnZXJzIGJlZm9yZSB0aGUgbmV4dCBzbGlkZSBzdGFydHMgYW5pbWF0aW5nIGluIGFuZCBvbmx5IGlmIGEgbmV4dCBzbGlkZSBoYXMgYmVlbiBmb3VuZC5cbiAgICAgICogQGV2ZW50IE9yYml0I2JlZm9yZXNsaWRlY2hhbmdlXG4gICAgICAqL1xuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdiZWZvcmVzbGlkZWNoYW5nZS56Zi5vcmJpdCcsIFskY3VyU2xpZGUsICRuZXdTbGlkZV0pO1xuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmJ1bGxldHMpIHtcbiAgICAgICAgaWR4ID0gaWR4IHx8IHRoaXMuJHNsaWRlcy5pbmRleCgkbmV3U2xpZGUpOyAvL2dyYWIgaW5kZXggdG8gdXBkYXRlIGJ1bGxldHNcbiAgICAgICAgdGhpcy5fdXBkYXRlQnVsbGV0cyhpZHgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnVzZU1VSSAmJiAhdGhpcy4kZWxlbWVudC5pcygnOmhpZGRlbicpKSB7XG4gICAgICAgIEZvdW5kYXRpb24uTW90aW9uLmFuaW1hdGVJbihcbiAgICAgICAgICAkbmV3U2xpZGUuYWRkQ2xhc3MoJ2lzLWFjdGl2ZScpLmNzcyh7J3Bvc2l0aW9uJzogJ2Fic29sdXRlJywgJ3RvcCc6IDB9KSxcbiAgICAgICAgICB0aGlzLm9wdGlvbnNbYGFuaW1JbkZyb20ke2RpcklufWBdLFxuICAgICAgICAgIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAkbmV3U2xpZGUuY3NzKHsncG9zaXRpb24nOiAncmVsYXRpdmUnLCAnZGlzcGxheSc6ICdibG9jayd9KVxuICAgICAgICAgICAgLmF0dHIoJ2FyaWEtbGl2ZScsICdwb2xpdGUnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgRm91bmRhdGlvbi5Nb3Rpb24uYW5pbWF0ZU91dChcbiAgICAgICAgICAkY3VyU2xpZGUucmVtb3ZlQ2xhc3MoJ2lzLWFjdGl2ZScpLFxuICAgICAgICAgIHRoaXMub3B0aW9uc1tgYW5pbU91dFRvJHtkaXJPdXR9YF0sXG4gICAgICAgICAgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICRjdXJTbGlkZS5yZW1vdmVBdHRyKCdhcmlhLWxpdmUnKTtcbiAgICAgICAgICAgIGlmKF90aGlzLm9wdGlvbnMuYXV0b1BsYXkgJiYgIV90aGlzLnRpbWVyLmlzUGF1c2VkKXtcbiAgICAgICAgICAgICAgX3RoaXMudGltZXIucmVzdGFydCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9kbyBzdHVmZj9cbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICRjdXJTbGlkZS5yZW1vdmVDbGFzcygnaXMtYWN0aXZlIGlzLWluJykucmVtb3ZlQXR0cignYXJpYS1saXZlJykuaGlkZSgpO1xuICAgICAgICAkbmV3U2xpZGUuYWRkQ2xhc3MoJ2lzLWFjdGl2ZSBpcy1pbicpLmF0dHIoJ2FyaWEtbGl2ZScsICdwb2xpdGUnKS5zaG93KCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b1BsYXkgJiYgIXRoaXMudGltZXIuaXNQYXVzZWQpIHtcbiAgICAgICAgICB0aGlzLnRpbWVyLnJlc3RhcnQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIC8qKlxuICAgICogVHJpZ2dlcnMgd2hlbiB0aGUgc2xpZGUgaGFzIGZpbmlzaGVkIGFuaW1hdGluZyBpbi5cbiAgICAqIEBldmVudCBPcmJpdCNzbGlkZWNoYW5nZVxuICAgICovXG4gICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ3NsaWRlY2hhbmdlLnpmLm9yYml0JywgWyRuZXdTbGlkZV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAqIFVwZGF0ZXMgdGhlIGFjdGl2ZSBzdGF0ZSBvZiB0aGUgYnVsbGV0cywgaWYgZGlzcGxheWVkLlxuICAqIEBmdW5jdGlvblxuICAqIEBwcml2YXRlXG4gICogQHBhcmFtIHtOdW1iZXJ9IGlkeCAtIHRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBzbGlkZS5cbiAgKi9cbiAgX3VwZGF0ZUJ1bGxldHMoaWR4KSB7XG4gICAgdmFyICRvbGRCdWxsZXQgPSB0aGlzLiRlbGVtZW50LmZpbmQoYC4ke3RoaXMub3B0aW9ucy5ib3hPZkJ1bGxldHN9YClcbiAgICAuZmluZCgnLmlzLWFjdGl2ZScpLnJlbW92ZUNsYXNzKCdpcy1hY3RpdmUnKS5ibHVyKCksXG4gICAgc3BhbiA9ICRvbGRCdWxsZXQuZmluZCgnc3BhbjpsYXN0JykuZGV0YWNoKCksXG4gICAgJG5ld0J1bGxldCA9IHRoaXMuJGJ1bGxldHMuZXEoaWR4KS5hZGRDbGFzcygnaXMtYWN0aXZlJykuYXBwZW5kKHNwYW4pO1xuICB9XG5cbiAgLyoqXG4gICogRGVzdHJveXMgdGhlIGNhcm91c2VsIGFuZCBoaWRlcyB0aGUgZWxlbWVudC5cbiAgKiBAZnVuY3Rpb25cbiAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLiRlbGVtZW50Lm9mZignLnpmLm9yYml0JykuZmluZCgnKicpLm9mZignLnpmLm9yYml0JykuZW5kKCkuaGlkZSgpO1xuICAgIEZvdW5kYXRpb24udW5yZWdpc3RlclBsdWdpbih0aGlzKTtcbiAgfVxufVxuXG5PcmJpdC5kZWZhdWx0cyA9IHtcbiAgLyoqXG4gICogVGVsbHMgdGhlIEpTIHRvIGxvb2sgZm9yIGFuZCBsb2FkQnVsbGV0cy5cbiAgKiBAb3B0aW9uXG4gICogQGV4YW1wbGUgdHJ1ZVxuICAqL1xuICBidWxsZXRzOiB0cnVlLFxuICAvKipcbiAgKiBUZWxscyB0aGUgSlMgdG8gYXBwbHkgZXZlbnQgbGlzdGVuZXJzIHRvIG5hdiBidXR0b25zXG4gICogQG9wdGlvblxuICAqIEBleGFtcGxlIHRydWVcbiAgKi9cbiAgbmF2QnV0dG9uczogdHJ1ZSxcbiAgLyoqXG4gICogbW90aW9uLXVpIGFuaW1hdGlvbiBjbGFzcyB0byBhcHBseVxuICAqIEBvcHRpb25cbiAgKiBAZXhhbXBsZSAnc2xpZGUtaW4tcmlnaHQnXG4gICovXG4gIGFuaW1JbkZyb21SaWdodDogJ3NsaWRlLWluLXJpZ2h0JyxcbiAgLyoqXG4gICogbW90aW9uLXVpIGFuaW1hdGlvbiBjbGFzcyB0byBhcHBseVxuICAqIEBvcHRpb25cbiAgKiBAZXhhbXBsZSAnc2xpZGUtb3V0LXJpZ2h0J1xuICAqL1xuICBhbmltT3V0VG9SaWdodDogJ3NsaWRlLW91dC1yaWdodCcsXG4gIC8qKlxuICAqIG1vdGlvbi11aSBhbmltYXRpb24gY2xhc3MgdG8gYXBwbHlcbiAgKiBAb3B0aW9uXG4gICogQGV4YW1wbGUgJ3NsaWRlLWluLWxlZnQnXG4gICpcbiAgKi9cbiAgYW5pbUluRnJvbUxlZnQ6ICdzbGlkZS1pbi1sZWZ0JyxcbiAgLyoqXG4gICogbW90aW9uLXVpIGFuaW1hdGlvbiBjbGFzcyB0byBhcHBseVxuICAqIEBvcHRpb25cbiAgKiBAZXhhbXBsZSAnc2xpZGUtb3V0LWxlZnQnXG4gICovXG4gIGFuaW1PdXRUb0xlZnQ6ICdzbGlkZS1vdXQtbGVmdCcsXG4gIC8qKlxuICAqIEFsbG93cyBPcmJpdCB0byBhdXRvbWF0aWNhbGx5IGFuaW1hdGUgb24gcGFnZSBsb2FkLlxuICAqIEBvcHRpb25cbiAgKiBAZXhhbXBsZSB0cnVlXG4gICovXG4gIGF1dG9QbGF5OiB0cnVlLFxuICAvKipcbiAgKiBBbW91bnQgb2YgdGltZSwgaW4gbXMsIGJldHdlZW4gc2xpZGUgdHJhbnNpdGlvbnNcbiAgKiBAb3B0aW9uXG4gICogQGV4YW1wbGUgNTAwMFxuICAqL1xuICB0aW1lckRlbGF5OiA1MDAwLFxuICAvKipcbiAgKiBBbGxvd3MgT3JiaXQgdG8gaW5maW5pdGVseSBsb29wIHRocm91Z2ggdGhlIHNsaWRlc1xuICAqIEBvcHRpb25cbiAgKiBAZXhhbXBsZSB0cnVlXG4gICovXG4gIGluZmluaXRlV3JhcDogdHJ1ZSxcbiAgLyoqXG4gICogQWxsb3dzIHRoZSBPcmJpdCBzbGlkZXMgdG8gYmluZCB0byBzd2lwZSBldmVudHMgZm9yIG1vYmlsZSwgcmVxdWlyZXMgYW4gYWRkaXRpb25hbCB1dGlsIGxpYnJhcnlcbiAgKiBAb3B0aW9uXG4gICogQGV4YW1wbGUgdHJ1ZVxuICAqL1xuICBzd2lwZTogdHJ1ZSxcbiAgLyoqXG4gICogQWxsb3dzIHRoZSB0aW1pbmcgZnVuY3Rpb24gdG8gcGF1c2UgYW5pbWF0aW9uIG9uIGhvdmVyLlxuICAqIEBvcHRpb25cbiAgKiBAZXhhbXBsZSB0cnVlXG4gICovXG4gIHBhdXNlT25Ib3ZlcjogdHJ1ZSxcbiAgLyoqXG4gICogQWxsb3dzIE9yYml0IHRvIGJpbmQga2V5Ym9hcmQgZXZlbnRzIHRvIHRoZSBzbGlkZXIsIHRvIGFuaW1hdGUgZnJhbWVzIHdpdGggYXJyb3cga2V5c1xuICAqIEBvcHRpb25cbiAgKiBAZXhhbXBsZSB0cnVlXG4gICovXG4gIGFjY2Vzc2libGU6IHRydWUsXG4gIC8qKlxuICAqIENsYXNzIGFwcGxpZWQgdG8gdGhlIGNvbnRhaW5lciBvZiBPcmJpdFxuICAqIEBvcHRpb25cbiAgKiBAZXhhbXBsZSAnb3JiaXQtY29udGFpbmVyJ1xuICAqL1xuICBjb250YWluZXJDbGFzczogJ29yYml0LWNvbnRhaW5lcicsXG4gIC8qKlxuICAqIENsYXNzIGFwcGxpZWQgdG8gaW5kaXZpZHVhbCBzbGlkZXMuXG4gICogQG9wdGlvblxuICAqIEBleGFtcGxlICdvcmJpdC1zbGlkZSdcbiAgKi9cbiAgc2xpZGVDbGFzczogJ29yYml0LXNsaWRlJyxcbiAgLyoqXG4gICogQ2xhc3MgYXBwbGllZCB0byB0aGUgYnVsbGV0IGNvbnRhaW5lci4gWW91J3JlIHdlbGNvbWUuXG4gICogQG9wdGlvblxuICAqIEBleGFtcGxlICdvcmJpdC1idWxsZXRzJ1xuICAqL1xuICBib3hPZkJ1bGxldHM6ICdvcmJpdC1idWxsZXRzJyxcbiAgLyoqXG4gICogQ2xhc3MgYXBwbGllZCB0byB0aGUgYG5leHRgIG5hdmlnYXRpb24gYnV0dG9uLlxuICAqIEBvcHRpb25cbiAgKiBAZXhhbXBsZSAnb3JiaXQtbmV4dCdcbiAgKi9cbiAgbmV4dENsYXNzOiAnb3JiaXQtbmV4dCcsXG4gIC8qKlxuICAqIENsYXNzIGFwcGxpZWQgdG8gdGhlIGBwcmV2aW91c2AgbmF2aWdhdGlvbiBidXR0b24uXG4gICogQG9wdGlvblxuICAqIEBleGFtcGxlICdvcmJpdC1wcmV2aW91cydcbiAgKi9cbiAgcHJldkNsYXNzOiAnb3JiaXQtcHJldmlvdXMnLFxuICAvKipcbiAgKiBCb29sZWFuIHRvIGZsYWcgdGhlIGpzIHRvIHVzZSBtb3Rpb24gdWkgY2xhc3NlcyBvciBub3QuIERlZmF1bHQgdG8gdHJ1ZSBmb3IgYmFja3dhcmRzIGNvbXBhdGFiaWxpdHkuXG4gICogQG9wdGlvblxuICAqIEBleGFtcGxlIHRydWVcbiAgKi9cbiAgdXNlTVVJOiB0cnVlXG59O1xuXG4vLyBXaW5kb3cgZXhwb3J0c1xuRm91bmRhdGlvbi5wbHVnaW4oT3JiaXQsICdPcmJpdCcpO1xuXG59KGpRdWVyeSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbiFmdW5jdGlvbigkKSB7XG5cbi8qKlxuICogUmVzcG9uc2l2ZU1lbnUgbW9kdWxlLlxuICogQG1vZHVsZSBmb3VuZGF0aW9uLnJlc3BvbnNpdmVNZW51XG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLnRyaWdnZXJzXG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLm1lZGlhUXVlcnlcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwuYWNjb3JkaW9uTWVudVxuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC5kcmlsbGRvd25cbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwuZHJvcGRvd24tbWVudVxuICovXG5cbmNsYXNzIFJlc3BvbnNpdmVNZW51IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgYSByZXNwb25zaXZlIG1lbnUuXG4gICAqIEBjbGFzc1xuICAgKiBAZmlyZXMgUmVzcG9uc2l2ZU1lbnUjaW5pdFxuICAgKiBAcGFyYW0ge2pRdWVyeX0gZWxlbWVudCAtIGpRdWVyeSBvYmplY3QgdG8gbWFrZSBpbnRvIGEgZHJvcGRvd24gbWVudS5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBPdmVycmlkZXMgdG8gdGhlIGRlZmF1bHQgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuJGVsZW1lbnQgPSAkKGVsZW1lbnQpO1xuICAgIHRoaXMucnVsZXMgPSB0aGlzLiRlbGVtZW50LmRhdGEoJ3Jlc3BvbnNpdmUtbWVudScpO1xuICAgIHRoaXMuY3VycmVudE1xID0gbnVsbDtcbiAgICB0aGlzLmN1cnJlbnRQbHVnaW4gPSBudWxsO1xuXG4gICAgdGhpcy5faW5pdCgpO1xuICAgIHRoaXMuX2V2ZW50cygpO1xuXG4gICAgRm91bmRhdGlvbi5yZWdpc3RlclBsdWdpbih0aGlzLCAnUmVzcG9uc2l2ZU1lbnUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgTWVudSBieSBwYXJzaW5nIHRoZSBjbGFzc2VzIGZyb20gdGhlICdkYXRhLVJlc3BvbnNpdmVNZW51JyBhdHRyaWJ1dGUgb24gdGhlIGVsZW1lbnQuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2luaXQoKSB7XG4gICAgLy8gVGhlIGZpcnN0IHRpbWUgYW4gSW50ZXJjaGFuZ2UgcGx1Z2luIGlzIGluaXRpYWxpemVkLCB0aGlzLnJ1bGVzIGlzIGNvbnZlcnRlZCBmcm9tIGEgc3RyaW5nIG9mIFwiY2xhc3Nlc1wiIHRvIGFuIG9iamVjdCBvZiBydWxlc1xuICAgIGlmICh0eXBlb2YgdGhpcy5ydWxlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGxldCBydWxlc1RyZWUgPSB7fTtcblxuICAgICAgLy8gUGFyc2UgcnVsZXMgZnJvbSBcImNsYXNzZXNcIiBwdWxsZWQgZnJvbSBkYXRhIGF0dHJpYnV0ZVxuICAgICAgbGV0IHJ1bGVzID0gdGhpcy5ydWxlcy5zcGxpdCgnICcpO1xuXG4gICAgICAvLyBJdGVyYXRlIHRocm91Z2ggZXZlcnkgcnVsZSBmb3VuZFxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgcnVsZSA9IHJ1bGVzW2ldLnNwbGl0KCctJyk7XG4gICAgICAgIGxldCBydWxlU2l6ZSA9IHJ1bGUubGVuZ3RoID4gMSA/IHJ1bGVbMF0gOiAnc21hbGwnO1xuICAgICAgICBsZXQgcnVsZVBsdWdpbiA9IHJ1bGUubGVuZ3RoID4gMSA/IHJ1bGVbMV0gOiBydWxlWzBdO1xuXG4gICAgICAgIGlmIChNZW51UGx1Z2luc1tydWxlUGx1Z2luXSAhPT0gbnVsbCkge1xuICAgICAgICAgIHJ1bGVzVHJlZVtydWxlU2l6ZV0gPSBNZW51UGx1Z2luc1tydWxlUGx1Z2luXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnJ1bGVzID0gcnVsZXNUcmVlO1xuICAgIH1cblxuICAgIGlmICghJC5pc0VtcHR5T2JqZWN0KHRoaXMucnVsZXMpKSB7XG4gICAgICB0aGlzLl9jaGVja01lZGlhUXVlcmllcygpO1xuICAgIH1cbiAgICAvLyBBZGQgZGF0YS1tdXRhdGUgc2luY2UgY2hpbGRyZW4gbWF5IG5lZWQgaXQuXG4gICAgdGhpcy4kZWxlbWVudC5hdHRyKCdkYXRhLW11dGF0ZScsICh0aGlzLiRlbGVtZW50LmF0dHIoJ2RhdGEtbXV0YXRlJykgfHwgRm91bmRhdGlvbi5HZXRZb0RpZ2l0cyg2LCAncmVzcG9uc2l2ZS1tZW51JykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyBldmVudHMgZm9yIHRoZSBNZW51LlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9ldmVudHMoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICQod2luZG93KS5vbignY2hhbmdlZC56Zi5tZWRpYXF1ZXJ5JywgZnVuY3Rpb24oKSB7XG4gICAgICBfdGhpcy5fY2hlY2tNZWRpYVF1ZXJpZXMoKTtcbiAgICB9KTtcbiAgICAvLyAkKHdpbmRvdykub24oJ3Jlc2l6ZS56Zi5SZXNwb25zaXZlTWVudScsIGZ1bmN0aW9uKCkge1xuICAgIC8vICAgX3RoaXMuX2NoZWNrTWVkaWFRdWVyaWVzKCk7XG4gICAgLy8gfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHRoZSBjdXJyZW50IHNjcmVlbiB3aWR0aCBhZ2FpbnN0IGF2YWlsYWJsZSBtZWRpYSBxdWVyaWVzLiBJZiB0aGUgbWVkaWEgcXVlcnkgaGFzIGNoYW5nZWQsIGFuZCB0aGUgcGx1Z2luIG5lZWRlZCBoYXMgY2hhbmdlZCwgdGhlIHBsdWdpbnMgd2lsbCBzd2FwIG91dC5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfY2hlY2tNZWRpYVF1ZXJpZXMoKSB7XG4gICAgdmFyIG1hdGNoZWRNcSwgX3RoaXMgPSB0aGlzO1xuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIHJ1bGUgYW5kIGZpbmQgdGhlIGxhc3QgbWF0Y2hpbmcgcnVsZVxuICAgICQuZWFjaCh0aGlzLnJ1bGVzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgIGlmIChGb3VuZGF0aW9uLk1lZGlhUXVlcnkuYXRMZWFzdChrZXkpKSB7XG4gICAgICAgIG1hdGNoZWRNcSA9IGtleTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIE5vIG1hdGNoPyBObyBkaWNlXG4gICAgaWYgKCFtYXRjaGVkTXEpIHJldHVybjtcblxuICAgIC8vIFBsdWdpbiBhbHJlYWR5IGluaXRpYWxpemVkPyBXZSBnb29kXG4gICAgaWYgKHRoaXMuY3VycmVudFBsdWdpbiBpbnN0YW5jZW9mIHRoaXMucnVsZXNbbWF0Y2hlZE1xXS5wbHVnaW4pIHJldHVybjtcblxuICAgIC8vIFJlbW92ZSBleGlzdGluZyBwbHVnaW4tc3BlY2lmaWMgQ1NTIGNsYXNzZXNcbiAgICAkLmVhY2goTWVudVBsdWdpbnMsIGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICAgIF90aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKHZhbHVlLmNzc0NsYXNzKTtcbiAgICB9KTtcblxuICAgIC8vIEFkZCB0aGUgQ1NTIGNsYXNzIGZvciB0aGUgbmV3IHBsdWdpblxuICAgIHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3ModGhpcy5ydWxlc1ttYXRjaGVkTXFdLmNzc0NsYXNzKTtcblxuICAgIC8vIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgbmV3IHBsdWdpblxuICAgIGlmICh0aGlzLmN1cnJlbnRQbHVnaW4pIHRoaXMuY3VycmVudFBsdWdpbi5kZXN0cm95KCk7XG4gICAgdGhpcy5jdXJyZW50UGx1Z2luID0gbmV3IHRoaXMucnVsZXNbbWF0Y2hlZE1xXS5wbHVnaW4odGhpcy4kZWxlbWVudCwge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSBpbnN0YW5jZSBvZiB0aGUgY3VycmVudCBwbHVnaW4gb24gdGhpcyBlbGVtZW50LCBhcyB3ZWxsIGFzIHRoZSB3aW5kb3cgcmVzaXplIGhhbmRsZXIgdGhhdCBzd2l0Y2hlcyB0aGUgcGx1Z2lucyBvdXQuXG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmN1cnJlbnRQbHVnaW4uZGVzdHJveSgpO1xuICAgICQod2luZG93KS5vZmYoJy56Zi5SZXNwb25zaXZlTWVudScpO1xuICAgIEZvdW5kYXRpb24udW5yZWdpc3RlclBsdWdpbih0aGlzKTtcbiAgfVxufVxuXG5SZXNwb25zaXZlTWVudS5kZWZhdWx0cyA9IHt9O1xuXG4vLyBUaGUgcGx1Z2luIG1hdGNoZXMgdGhlIHBsdWdpbiBjbGFzc2VzIHdpdGggdGhlc2UgcGx1Z2luIGluc3RhbmNlcy5cbnZhciBNZW51UGx1Z2lucyA9IHtcbiAgZHJvcGRvd246IHtcbiAgICBjc3NDbGFzczogJ2Ryb3Bkb3duJyxcbiAgICBwbHVnaW46IEZvdW5kYXRpb24uX3BsdWdpbnNbJ2Ryb3Bkb3duLW1lbnUnXSB8fCBudWxsXG4gIH0sXG4gZHJpbGxkb3duOiB7XG4gICAgY3NzQ2xhc3M6ICdkcmlsbGRvd24nLFxuICAgIHBsdWdpbjogRm91bmRhdGlvbi5fcGx1Z2luc1snZHJpbGxkb3duJ10gfHwgbnVsbFxuICB9LFxuICBhY2NvcmRpb246IHtcbiAgICBjc3NDbGFzczogJ2FjY29yZGlvbi1tZW51JyxcbiAgICBwbHVnaW46IEZvdW5kYXRpb24uX3BsdWdpbnNbJ2FjY29yZGlvbi1tZW51J10gfHwgbnVsbFxuICB9XG59O1xuXG4vLyBXaW5kb3cgZXhwb3J0c1xuRm91bmRhdGlvbi5wbHVnaW4oUmVzcG9uc2l2ZU1lbnUsICdSZXNwb25zaXZlTWVudScpO1xuXG59KGpRdWVyeSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbiFmdW5jdGlvbigkKSB7XG5cbi8qKlxuICogUmVzcG9uc2l2ZVRvZ2dsZSBtb2R1bGUuXG4gKiBAbW9kdWxlIGZvdW5kYXRpb24ucmVzcG9uc2l2ZVRvZ2dsZVxuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC5tZWRpYVF1ZXJ5XG4gKi9cblxuY2xhc3MgUmVzcG9uc2l2ZVRvZ2dsZSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFRhYiBCYXIuXG4gICAqIEBjbGFzc1xuICAgKiBAZmlyZXMgUmVzcG9uc2l2ZVRvZ2dsZSNpbml0XG4gICAqIEBwYXJhbSB7alF1ZXJ5fSBlbGVtZW50IC0galF1ZXJ5IG9iamVjdCB0byBhdHRhY2ggdGFiIGJhciBmdW5jdGlvbmFsaXR5IHRvLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIE92ZXJyaWRlcyB0byB0aGUgZGVmYXVsdCBwbHVnaW4gc2V0dGluZ3MuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudCA9ICQoZWxlbWVudCk7XG4gICAgdGhpcy5vcHRpb25zID0gJC5leHRlbmQoe30sIFJlc3BvbnNpdmVUb2dnbGUuZGVmYXVsdHMsIHRoaXMuJGVsZW1lbnQuZGF0YSgpLCBvcHRpb25zKTtcblxuICAgIHRoaXMuX2luaXQoKTtcbiAgICB0aGlzLl9ldmVudHMoKTtcblxuICAgIEZvdW5kYXRpb24ucmVnaXN0ZXJQbHVnaW4odGhpcywgJ1Jlc3BvbnNpdmVUb2dnbGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgdGFiIGJhciBieSBmaW5kaW5nIHRoZSB0YXJnZXQgZWxlbWVudCwgdG9nZ2xpbmcgZWxlbWVudCwgYW5kIHJ1bm5pbmcgdXBkYXRlKCkuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2luaXQoKSB7XG4gICAgdmFyIHRhcmdldElEID0gdGhpcy4kZWxlbWVudC5kYXRhKCdyZXNwb25zaXZlLXRvZ2dsZScpO1xuICAgIGlmICghdGFyZ2V0SUQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1lvdXIgdGFiIGJhciBuZWVkcyBhbiBJRCBvZiBhIE1lbnUgYXMgdGhlIHZhbHVlIG9mIGRhdGEtdGFiLWJhci4nKTtcbiAgICB9XG5cbiAgICB0aGlzLiR0YXJnZXRNZW51ID0gJChgIyR7dGFyZ2V0SUR9YCk7XG4gICAgdGhpcy4kdG9nZ2xlciA9IHRoaXMuJGVsZW1lbnQuZmluZCgnW2RhdGEtdG9nZ2xlXScpO1xuICAgIHRoaXMub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnMsIHRoaXMuJHRhcmdldE1lbnUuZGF0YSgpKTtcblxuICAgIC8vIElmIHRoZXkgd2VyZSBzZXQsIHBhcnNlIHRoZSBhbmltYXRpb24gY2xhc3Nlc1xuICAgIGlmKHRoaXMub3B0aW9ucy5hbmltYXRlKSB7XG4gICAgICBsZXQgaW5wdXQgPSB0aGlzLm9wdGlvbnMuYW5pbWF0ZS5zcGxpdCgnICcpO1xuXG4gICAgICB0aGlzLmFuaW1hdGlvbkluID0gaW5wdXRbMF07XG4gICAgICB0aGlzLmFuaW1hdGlvbk91dCA9IGlucHV0WzFdIHx8IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBuZWNlc3NhcnkgZXZlbnQgaGFuZGxlcnMgZm9yIHRoZSB0YWIgYmFyIHRvIHdvcmsuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2V2ZW50cygpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy5fdXBkYXRlTXFIYW5kbGVyID0gdGhpcy5fdXBkYXRlLmJpbmQodGhpcyk7XG5cbiAgICAkKHdpbmRvdykub24oJ2NoYW5nZWQuemYubWVkaWFxdWVyeScsIHRoaXMuX3VwZGF0ZU1xSGFuZGxlcik7XG5cbiAgICB0aGlzLiR0b2dnbGVyLm9uKCdjbGljay56Zi5yZXNwb25zaXZlVG9nZ2xlJywgdGhpcy50b2dnbGVNZW51LmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB0aGUgY3VycmVudCBtZWRpYSBxdWVyeSB0byBkZXRlcm1pbmUgaWYgdGhlIHRhYiBiYXIgc2hvdWxkIGJlIHZpc2libGUgb3IgaGlkZGVuLlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF91cGRhdGUoKSB7XG4gICAgLy8gTW9iaWxlXG4gICAgaWYgKCFGb3VuZGF0aW9uLk1lZGlhUXVlcnkuYXRMZWFzdCh0aGlzLm9wdGlvbnMuaGlkZUZvcikpIHtcbiAgICAgIHRoaXMuJGVsZW1lbnQuc2hvdygpO1xuICAgICAgdGhpcy4kdGFyZ2V0TWVudS5oaWRlKCk7XG4gICAgfVxuXG4gICAgLy8gRGVza3RvcFxuICAgIGVsc2Uge1xuICAgICAgdGhpcy4kZWxlbWVudC5oaWRlKCk7XG4gICAgICB0aGlzLiR0YXJnZXRNZW51LnNob3coKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgZWxlbWVudCBhdHRhY2hlZCB0byB0aGUgdGFiIGJhci4gVGhlIHRvZ2dsZSBvbmx5IGhhcHBlbnMgaWYgdGhlIHNjcmVlbiBpcyBzbWFsbCBlbm91Z2ggdG8gYWxsb3cgaXQuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAZmlyZXMgUmVzcG9uc2l2ZVRvZ2dsZSN0b2dnbGVkXG4gICAqL1xuICB0b2dnbGVNZW51KCkge1xuICAgIGlmICghRm91bmRhdGlvbi5NZWRpYVF1ZXJ5LmF0TGVhc3QodGhpcy5vcHRpb25zLmhpZGVGb3IpKSB7XG4gICAgICBpZih0aGlzLm9wdGlvbnMuYW5pbWF0ZSkge1xuICAgICAgICBpZiAodGhpcy4kdGFyZ2V0TWVudS5pcygnOmhpZGRlbicpKSB7XG4gICAgICAgICAgRm91bmRhdGlvbi5Nb3Rpb24uYW5pbWF0ZUluKHRoaXMuJHRhcmdldE1lbnUsIHRoaXMuYW5pbWF0aW9uSW4sICgpID0+IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmlyZXMgd2hlbiB0aGUgZWxlbWVudCBhdHRhY2hlZCB0byB0aGUgdGFiIGJhciB0b2dnbGVzLlxuICAgICAgICAgICAgICogQGV2ZW50IFJlc3BvbnNpdmVUb2dnbGUjdG9nZ2xlZFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ3RvZ2dsZWQuemYucmVzcG9uc2l2ZVRvZ2dsZScpO1xuICAgICAgICAgICAgdGhpcy4kdGFyZ2V0TWVudS5maW5kKCdbZGF0YS1tdXRhdGVdJykudHJpZ2dlckhhbmRsZXIoJ211dGF0ZW1lLnpmLnRyaWdnZXInKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBGb3VuZGF0aW9uLk1vdGlvbi5hbmltYXRlT3V0KHRoaXMuJHRhcmdldE1lbnUsIHRoaXMuYW5pbWF0aW9uT3V0LCAoKSA9PiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZpcmVzIHdoZW4gdGhlIGVsZW1lbnQgYXR0YWNoZWQgdG8gdGhlIHRhYiBiYXIgdG9nZ2xlcy5cbiAgICAgICAgICAgICAqIEBldmVudCBSZXNwb25zaXZlVG9nZ2xlI3RvZ2dsZWRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCd0b2dnbGVkLnpmLnJlc3BvbnNpdmVUb2dnbGUnKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuJHRhcmdldE1lbnUudG9nZ2xlKDApO1xuICAgICAgICB0aGlzLiR0YXJnZXRNZW51LmZpbmQoJ1tkYXRhLW11dGF0ZV0nKS50cmlnZ2VyKCdtdXRhdGVtZS56Zi50cmlnZ2VyJyk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZpcmVzIHdoZW4gdGhlIGVsZW1lbnQgYXR0YWNoZWQgdG8gdGhlIHRhYiBiYXIgdG9nZ2xlcy5cbiAgICAgICAgICogQGV2ZW50IFJlc3BvbnNpdmVUb2dnbGUjdG9nZ2xlZFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCd0b2dnbGVkLnpmLnJlc3BvbnNpdmVUb2dnbGUnKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLiRlbGVtZW50Lm9mZignLnpmLnJlc3BvbnNpdmVUb2dnbGUnKTtcbiAgICB0aGlzLiR0b2dnbGVyLm9mZignLnpmLnJlc3BvbnNpdmVUb2dnbGUnKTtcblxuICAgICQod2luZG93KS5vZmYoJ2NoYW5nZWQuemYubWVkaWFxdWVyeScsIHRoaXMuX3VwZGF0ZU1xSGFuZGxlcik7XG5cbiAgICBGb3VuZGF0aW9uLnVucmVnaXN0ZXJQbHVnaW4odGhpcyk7XG4gIH1cbn1cblxuUmVzcG9uc2l2ZVRvZ2dsZS5kZWZhdWx0cyA9IHtcbiAgLyoqXG4gICAqIFRoZSBicmVha3BvaW50IGFmdGVyIHdoaWNoIHRoZSBtZW51IGlzIGFsd2F5cyBzaG93biwgYW5kIHRoZSB0YWIgYmFyIGlzIGhpZGRlbi5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAnbWVkaXVtJ1xuICAgKi9cbiAgaGlkZUZvcjogJ21lZGl1bScsXG5cbiAgLyoqXG4gICAqIFRvIGRlY2lkZSBpZiB0aGUgdG9nZ2xlIHNob3VsZCBiZSBhbmltYXRlZCBvciBub3QuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIGFuaW1hdGU6IGZhbHNlXG59O1xuXG4vLyBXaW5kb3cgZXhwb3J0c1xuRm91bmRhdGlvbi5wbHVnaW4oUmVzcG9uc2l2ZVRvZ2dsZSwgJ1Jlc3BvbnNpdmVUb2dnbGUnKTtcblxufShqUXVlcnkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4hZnVuY3Rpb24oJCkge1xuXG4vKipcbiAqIFJldmVhbCBtb2R1bGUuXG4gKiBAbW9kdWxlIGZvdW5kYXRpb24ucmV2ZWFsXG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLmtleWJvYXJkXG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLmJveFxuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC50cmlnZ2Vyc1xuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC5tZWRpYVF1ZXJ5XG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLm1vdGlvbiBpZiB1c2luZyBhbmltYXRpb25zXG4gKi9cblxuY2xhc3MgUmV2ZWFsIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgUmV2ZWFsLlxuICAgKiBAY2xhc3NcbiAgICogQHBhcmFtIHtqUXVlcnl9IGVsZW1lbnQgLSBqUXVlcnkgb2JqZWN0IHRvIHVzZSBmb3IgdGhlIG1vZGFsLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIG9wdGlvbmFsIHBhcmFtZXRlcnMuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5vcHRpb25zID0gJC5leHRlbmQoe30sIFJldmVhbC5kZWZhdWx0cywgdGhpcy4kZWxlbWVudC5kYXRhKCksIG9wdGlvbnMpO1xuICAgIHRoaXMuX2luaXQoKTtcblxuICAgIEZvdW5kYXRpb24ucmVnaXN0ZXJQbHVnaW4odGhpcywgJ1JldmVhbCcpO1xuICAgIEZvdW5kYXRpb24uS2V5Ym9hcmQucmVnaXN0ZXIoJ1JldmVhbCcsIHtcbiAgICAgICdFTlRFUic6ICdvcGVuJyxcbiAgICAgICdTUEFDRSc6ICdvcGVuJyxcbiAgICAgICdFU0NBUEUnOiAnY2xvc2UnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBtb2RhbCBieSBhZGRpbmcgdGhlIG92ZXJsYXkgYW5kIGNsb3NlIGJ1dHRvbnMsIChpZiBzZWxlY3RlZCkuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfaW5pdCgpIHtcbiAgICB0aGlzLmlkID0gdGhpcy4kZWxlbWVudC5hdHRyKCdpZCcpO1xuICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLmNhY2hlZCA9IHttcTogRm91bmRhdGlvbi5NZWRpYVF1ZXJ5LmN1cnJlbnR9O1xuICAgIHRoaXMuaXNNb2JpbGUgPSBtb2JpbGVTbmlmZigpO1xuXG4gICAgdGhpcy4kYW5jaG9yID0gJChgW2RhdGEtb3Blbj1cIiR7dGhpcy5pZH1cIl1gKS5sZW5ndGggPyAkKGBbZGF0YS1vcGVuPVwiJHt0aGlzLmlkfVwiXWApIDogJChgW2RhdGEtdG9nZ2xlPVwiJHt0aGlzLmlkfVwiXWApO1xuICAgIHRoaXMuJGFuY2hvci5hdHRyKHtcbiAgICAgICdhcmlhLWNvbnRyb2xzJzogdGhpcy5pZCxcbiAgICAgICdhcmlhLWhhc3BvcHVwJzogdHJ1ZSxcbiAgICAgICd0YWJpbmRleCc6IDBcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZnVsbFNjcmVlbiB8fCB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdmdWxsJykpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5mdWxsU2NyZWVuID0gdHJ1ZTtcbiAgICAgIHRoaXMub3B0aW9ucy5vdmVybGF5ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMub3ZlcmxheSAmJiAhdGhpcy4kb3ZlcmxheSkge1xuICAgICAgdGhpcy4kb3ZlcmxheSA9IHRoaXMuX21ha2VPdmVybGF5KHRoaXMuaWQpO1xuICAgIH1cblxuICAgIHRoaXMuJGVsZW1lbnQuYXR0cih7XG4gICAgICAgICdyb2xlJzogJ2RpYWxvZycsXG4gICAgICAgICdhcmlhLWhpZGRlbic6IHRydWUsXG4gICAgICAgICdkYXRhLXlldGktYm94JzogdGhpcy5pZCxcbiAgICAgICAgJ2RhdGEtcmVzaXplJzogdGhpcy5pZFxuICAgIH0pO1xuXG4gICAgaWYodGhpcy4kb3ZlcmxheSkge1xuICAgICAgdGhpcy4kZWxlbWVudC5kZXRhY2goKS5hcHBlbmRUbyh0aGlzLiRvdmVybGF5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4kZWxlbWVudC5kZXRhY2goKS5hcHBlbmRUbygkKHRoaXMub3B0aW9ucy5hcHBlbmRUbykpO1xuICAgICAgdGhpcy4kZWxlbWVudC5hZGRDbGFzcygnd2l0aG91dC1vdmVybGF5Jyk7XG4gICAgfVxuICAgIHRoaXMuX2V2ZW50cygpO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGVlcExpbmsgJiYgd2luZG93LmxvY2F0aW9uLmhhc2ggPT09ICggYCMke3RoaXMuaWR9YCkpIHtcbiAgICAgICQod2luZG93KS5vbmUoJ2xvYWQuemYucmV2ZWFsJywgdGhpcy5vcGVuLmJpbmQodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIG92ZXJsYXkgZGl2IHRvIGRpc3BsYXkgYmVoaW5kIHRoZSBtb2RhbC5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9tYWtlT3ZlcmxheSgpIHtcbiAgICByZXR1cm4gJCgnPGRpdj48L2Rpdj4nKVxuICAgICAgLmFkZENsYXNzKCdyZXZlYWwtb3ZlcmxheScpXG4gICAgICAuYXBwZW5kVG8odGhpcy5vcHRpb25zLmFwcGVuZFRvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHBvc2l0aW9uIG9mIG1vZGFsXG4gICAqIFRPRE86ICBGaWd1cmUgb3V0IGlmIHdlIGFjdHVhbGx5IG5lZWQgdG8gY2FjaGUgdGhlc2UgdmFsdWVzIG9yIGlmIGl0IGRvZXNuJ3QgbWF0dGVyXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfdXBkYXRlUG9zaXRpb24oKSB7XG4gICAgdmFyIHdpZHRoID0gdGhpcy4kZWxlbWVudC5vdXRlcldpZHRoKCk7XG4gICAgdmFyIG91dGVyV2lkdGggPSAkKHdpbmRvdykud2lkdGgoKTtcbiAgICB2YXIgaGVpZ2h0ID0gdGhpcy4kZWxlbWVudC5vdXRlckhlaWdodCgpO1xuICAgIHZhciBvdXRlckhlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKTtcbiAgICB2YXIgbGVmdCwgdG9wO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuaE9mZnNldCA9PT0gJ2F1dG8nKSB7XG4gICAgICBsZWZ0ID0gcGFyc2VJbnQoKG91dGVyV2lkdGggLSB3aWR0aCkgLyAyLCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlZnQgPSBwYXJzZUludCh0aGlzLm9wdGlvbnMuaE9mZnNldCwgMTApO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLnZPZmZzZXQgPT09ICdhdXRvJykge1xuICAgICAgaWYgKGhlaWdodCA+IG91dGVySGVpZ2h0KSB7XG4gICAgICAgIHRvcCA9IHBhcnNlSW50KE1hdGgubWluKDEwMCwgb3V0ZXJIZWlnaHQgLyAxMCksIDEwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvcCA9IHBhcnNlSW50KChvdXRlckhlaWdodCAtIGhlaWdodCkgLyA0LCAxMCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvcCA9IHBhcnNlSW50KHRoaXMub3B0aW9ucy52T2Zmc2V0LCAxMCk7XG4gICAgfVxuICAgIHRoaXMuJGVsZW1lbnQuY3NzKHt0b3A6IHRvcCArICdweCd9KTtcbiAgICAvLyBvbmx5IHdvcnJ5IGFib3V0IGxlZnQgaWYgd2UgZG9uJ3QgaGF2ZSBhbiBvdmVybGF5IG9yIHdlIGhhdmVhICBob3Jpem9udGFsIG9mZnNldCxcbiAgICAvLyBvdGhlcndpc2Ugd2UncmUgcGVyZmVjdGx5IGluIHRoZSBtaWRkbGVcbiAgICBpZighdGhpcy4kb3ZlcmxheSB8fCAodGhpcy5vcHRpb25zLmhPZmZzZXQgIT09ICdhdXRvJykpIHtcbiAgICAgIHRoaXMuJGVsZW1lbnQuY3NzKHtsZWZ0OiBsZWZ0ICsgJ3B4J30pO1xuICAgICAgdGhpcy4kZWxlbWVudC5jc3Moe21hcmdpbjogJzBweCd9KTtcbiAgICB9XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgbW9kYWwuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfZXZlbnRzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLiRlbGVtZW50Lm9uKHtcbiAgICAgICdvcGVuLnpmLnRyaWdnZXInOiB0aGlzLm9wZW4uYmluZCh0aGlzKSxcbiAgICAgICdjbG9zZS56Zi50cmlnZ2VyJzogKGV2ZW50LCAkZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoKGV2ZW50LnRhcmdldCA9PT0gX3RoaXMuJGVsZW1lbnRbMF0pIHx8XG4gICAgICAgICAgICAoJChldmVudC50YXJnZXQpLnBhcmVudHMoJ1tkYXRhLWNsb3NhYmxlXScpWzBdID09PSAkZWxlbWVudCkpIHsgLy8gb25seSBjbG9zZSByZXZlYWwgd2hlbiBpdCdzIGV4cGxpY2l0bHkgY2FsbGVkXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2xvc2UuYXBwbHkodGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAndG9nZ2xlLnpmLnRyaWdnZXInOiB0aGlzLnRvZ2dsZS5iaW5kKHRoaXMpLFxuICAgICAgJ3Jlc2l6ZW1lLnpmLnRyaWdnZXInOiBmdW5jdGlvbigpIHtcbiAgICAgICAgX3RoaXMuX3VwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy4kYW5jaG9yLmxlbmd0aCkge1xuICAgICAgdGhpcy4kYW5jaG9yLm9uKCdrZXlkb3duLnpmLnJldmVhbCcsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgaWYgKGUud2hpY2ggPT09IDEzIHx8IGUud2hpY2ggPT09IDMyKSB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgX3RoaXMub3BlbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmNsb3NlT25DbGljayAmJiB0aGlzLm9wdGlvbnMub3ZlcmxheSkge1xuICAgICAgdGhpcy4kb3ZlcmxheS5vZmYoJy56Zi5yZXZlYWwnKS5vbignY2xpY2suemYucmV2ZWFsJywgZnVuY3Rpb24oZSkge1xuICAgICAgICBpZiAoZS50YXJnZXQgPT09IF90aGlzLiRlbGVtZW50WzBdIHx8XG4gICAgICAgICAgJC5jb250YWlucyhfdGhpcy4kZWxlbWVudFswXSwgZS50YXJnZXQpIHx8XG4gICAgICAgICAgICAhJC5jb250YWlucyhkb2N1bWVudCwgZS50YXJnZXQpKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBfdGhpcy5jbG9zZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGVlcExpbmspIHtcbiAgICAgICQod2luZG93KS5vbihgcG9wc3RhdGUuemYucmV2ZWFsOiR7dGhpcy5pZH1gLCB0aGlzLl9oYW5kbGVTdGF0ZS5iaW5kKHRoaXMpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBtb2RhbCBtZXRob2RzIG9uIGJhY2svZm9yd2FyZCBidXR0b24gY2xpY2tzIG9yIGFueSBvdGhlciBldmVudCB0aGF0IHRyaWdnZXJzIHBvcHN0YXRlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2hhbmRsZVN0YXRlKGUpIHtcbiAgICBpZih3aW5kb3cubG9jYXRpb24uaGFzaCA9PT0gKCAnIycgKyB0aGlzLmlkKSAmJiAhdGhpcy5pc0FjdGl2ZSl7IHRoaXMub3BlbigpOyB9XG4gICAgZWxzZXsgdGhpcy5jbG9zZSgpOyB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgbW9kYWwgY29udHJvbGxlZCBieSBgdGhpcy4kYW5jaG9yYCwgYW5kIGNsb3NlcyBhbGwgb3RoZXJzIGJ5IGRlZmF1bHQuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAZmlyZXMgUmV2ZWFsI2Nsb3NlbWVcbiAgICogQGZpcmVzIFJldmVhbCNvcGVuXG4gICAqL1xuICBvcGVuKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGVlcExpbmspIHtcbiAgICAgIHZhciBoYXNoID0gYCMke3RoaXMuaWR9YDtcblxuICAgICAgaWYgKHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSkge1xuICAgICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgaGFzaCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9IGhhc2g7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5pc0FjdGl2ZSA9IHRydWU7XG5cbiAgICAvLyBNYWtlIGVsZW1lbnRzIGludmlzaWJsZSwgYnV0IHJlbW92ZSBkaXNwbGF5OiBub25lIHNvIHdlIGNhbiBnZXQgc2l6ZSBhbmQgcG9zaXRpb25pbmdcbiAgICB0aGlzLiRlbGVtZW50XG4gICAgICAgIC5jc3MoeyAndmlzaWJpbGl0eSc6ICdoaWRkZW4nIH0pXG4gICAgICAgIC5zaG93KClcbiAgICAgICAgLnNjcm9sbFRvcCgwKTtcbiAgICBpZiAodGhpcy5vcHRpb25zLm92ZXJsYXkpIHtcbiAgICAgIHRoaXMuJG92ZXJsYXkuY3NzKHsndmlzaWJpbGl0eSc6ICdoaWRkZW4nfSkuc2hvdygpO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZVBvc2l0aW9uKCk7XG5cbiAgICB0aGlzLiRlbGVtZW50XG4gICAgICAuaGlkZSgpXG4gICAgICAuY3NzKHsgJ3Zpc2liaWxpdHknOiAnJyB9KTtcblxuICAgIGlmKHRoaXMuJG92ZXJsYXkpIHtcbiAgICAgIHRoaXMuJG92ZXJsYXkuY3NzKHsndmlzaWJpbGl0eSc6ICcnfSkuaGlkZSgpO1xuICAgICAgaWYodGhpcy4kZWxlbWVudC5oYXNDbGFzcygnZmFzdCcpKSB7XG4gICAgICAgIHRoaXMuJG92ZXJsYXkuYWRkQ2xhc3MoJ2Zhc3QnKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy4kZWxlbWVudC5oYXNDbGFzcygnc2xvdycpKSB7XG4gICAgICAgIHRoaXMuJG92ZXJsYXkuYWRkQ2xhc3MoJ3Nsb3cnKTtcbiAgICAgIH1cbiAgICB9XG5cblxuICAgIGlmICghdGhpcy5vcHRpb25zLm11bHRpcGxlT3BlbmVkKSB7XG4gICAgICAvKipcbiAgICAgICAqIEZpcmVzIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgbW9kYWwgb3BlbnMuXG4gICAgICAgKiBDbG9zZXMgYW55IG90aGVyIG1vZGFscyB0aGF0IGFyZSBjdXJyZW50bHkgb3BlblxuICAgICAgICogQGV2ZW50IFJldmVhbCNjbG9zZW1lXG4gICAgICAgKi9cbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignY2xvc2VtZS56Zi5yZXZlYWwnLCB0aGlzLmlkKTtcbiAgICB9XG5cbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgZnVuY3Rpb24gYWRkUmV2ZWFsT3BlbkNsYXNzZXMoKSB7XG4gICAgICBpZiAoX3RoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgaWYoIV90aGlzLm9yaWdpbmFsU2Nyb2xsUG9zKSB7XG4gICAgICAgICAgX3RoaXMub3JpZ2luYWxTY3JvbGxQb3MgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgJCgnaHRtbCwgYm9keScpLmFkZENsYXNzKCdpcy1yZXZlYWwtb3BlbicpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgICQoJ2JvZHknKS5hZGRDbGFzcygnaXMtcmV2ZWFsLW9wZW4nKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gTW90aW9uIFVJIG1ldGhvZCBvZiByZXZlYWxcbiAgICBpZiAodGhpcy5vcHRpb25zLmFuaW1hdGlvbkluKSB7XG4gICAgICBmdW5jdGlvbiBhZnRlckFuaW1hdGlvbigpe1xuICAgICAgICBfdGhpcy4kZWxlbWVudFxuICAgICAgICAgIC5hdHRyKHtcbiAgICAgICAgICAgICdhcmlhLWhpZGRlbic6IGZhbHNlLFxuICAgICAgICAgICAgJ3RhYmluZGV4JzogLTFcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5mb2N1cygpO1xuICAgICAgICBhZGRSZXZlYWxPcGVuQ2xhc3NlcygpO1xuICAgICAgICBGb3VuZGF0aW9uLktleWJvYXJkLnRyYXBGb2N1cyhfdGhpcy4kZWxlbWVudCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLm92ZXJsYXkpIHtcbiAgICAgICAgRm91bmRhdGlvbi5Nb3Rpb24uYW5pbWF0ZUluKHRoaXMuJG92ZXJsYXksICdmYWRlLWluJyk7XG4gICAgICB9XG4gICAgICBGb3VuZGF0aW9uLk1vdGlvbi5hbmltYXRlSW4odGhpcy4kZWxlbWVudCwgdGhpcy5vcHRpb25zLmFuaW1hdGlvbkluLCAoKSA9PiB7XG4gICAgICAgIGlmKHRoaXMuJGVsZW1lbnQpIHsgLy8gcHJvdGVjdCBhZ2FpbnN0IG9iamVjdCBoYXZpbmcgYmVlbiByZW1vdmVkXG4gICAgICAgICAgdGhpcy5mb2N1c2FibGVFbGVtZW50cyA9IEZvdW5kYXRpb24uS2V5Ym9hcmQuZmluZEZvY3VzYWJsZSh0aGlzLiRlbGVtZW50KTtcbiAgICAgICAgICBhZnRlckFuaW1hdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8galF1ZXJ5IG1ldGhvZCBvZiByZXZlYWxcbiAgICBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMub3ZlcmxheSkge1xuICAgICAgICB0aGlzLiRvdmVybGF5LnNob3coMCk7XG4gICAgICB9XG4gICAgICB0aGlzLiRlbGVtZW50LnNob3codGhpcy5vcHRpb25zLnNob3dEZWxheSk7XG4gICAgfVxuXG4gICAgLy8gaGFuZGxlIGFjY2Vzc2liaWxpdHlcbiAgICB0aGlzLiRlbGVtZW50XG4gICAgICAuYXR0cih7XG4gICAgICAgICdhcmlhLWhpZGRlbic6IGZhbHNlLFxuICAgICAgICAndGFiaW5kZXgnOiAtMVxuICAgICAgfSlcbiAgICAgIC5mb2N1cygpO1xuICAgIEZvdW5kYXRpb24uS2V5Ym9hcmQudHJhcEZvY3VzKHRoaXMuJGVsZW1lbnQpO1xuXG4gICAgLyoqXG4gICAgICogRmlyZXMgd2hlbiB0aGUgbW9kYWwgaGFzIHN1Y2Nlc3NmdWxseSBvcGVuZWQuXG4gICAgICogQGV2ZW50IFJldmVhbCNvcGVuXG4gICAgICovXG4gICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdvcGVuLnpmLnJldmVhbCcpO1xuXG4gICAgYWRkUmV2ZWFsT3BlbkNsYXNzZXMoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fZXh0cmFIYW5kbGVycygpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgZXh0cmEgZXZlbnQgaGFuZGxlcnMgZm9yIHRoZSBib2R5IGFuZCB3aW5kb3cgaWYgbmVjZXNzYXJ5LlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2V4dHJhSGFuZGxlcnMoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcbiAgICBpZighdGhpcy4kZWxlbWVudCkgeyByZXR1cm47IH0gLy8gSWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBjbGVhbnVwLCBkb24ndCBmcmVhayBvdXRcbiAgICB0aGlzLmZvY3VzYWJsZUVsZW1lbnRzID0gRm91bmRhdGlvbi5LZXlib2FyZC5maW5kRm9jdXNhYmxlKHRoaXMuJGVsZW1lbnQpO1xuXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMub3ZlcmxheSAmJiB0aGlzLm9wdGlvbnMuY2xvc2VPbkNsaWNrICYmICF0aGlzLm9wdGlvbnMuZnVsbFNjcmVlbikge1xuICAgICAgJCgnYm9keScpLm9uKCdjbGljay56Zi5yZXZlYWwnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIGlmIChlLnRhcmdldCA9PT0gX3RoaXMuJGVsZW1lbnRbMF0gfHxcbiAgICAgICAgICAkLmNvbnRhaW5zKF90aGlzLiRlbGVtZW50WzBdLCBlLnRhcmdldCkgfHxcbiAgICAgICAgICAgICEkLmNvbnRhaW5zKGRvY3VtZW50LCBlLnRhcmdldCkpIHsgcmV0dXJuOyB9XG4gICAgICAgIF90aGlzLmNsb3NlKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmNsb3NlT25Fc2MpIHtcbiAgICAgICQod2luZG93KS5vbigna2V5ZG93bi56Zi5yZXZlYWwnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIEZvdW5kYXRpb24uS2V5Ym9hcmQuaGFuZGxlS2V5KGUsICdSZXZlYWwnLCB7XG4gICAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKF90aGlzLm9wdGlvbnMuY2xvc2VPbkVzYykge1xuICAgICAgICAgICAgICBfdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICBfdGhpcy4kYW5jaG9yLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGxvY2sgZm9jdXMgd2l0aGluIG1vZGFsIHdoaWxlIHRhYmJpbmdcbiAgICB0aGlzLiRlbGVtZW50Lm9uKCdrZXlkb3duLnpmLnJldmVhbCcsIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHZhciAkdGFyZ2V0ID0gJCh0aGlzKTtcbiAgICAgIC8vIGhhbmRsZSBrZXlib2FyZCBldmVudCB3aXRoIGtleWJvYXJkIHV0aWxcbiAgICAgIEZvdW5kYXRpb24uS2V5Ym9hcmQuaGFuZGxlS2V5KGUsICdSZXZlYWwnLCB7XG4gICAgICAgIG9wZW46IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmIChfdGhpcy4kZWxlbWVudC5maW5kKCc6Zm9jdXMnKS5pcyhfdGhpcy4kZWxlbWVudC5maW5kKCdbZGF0YS1jbG9zZV0nKSkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IC8vIHNldCBmb2N1cyBiYWNrIHRvIGFuY2hvciBpZiBjbG9zZSBidXR0b24gaGFzIGJlZW4gYWN0aXZhdGVkXG4gICAgICAgICAgICAgIF90aGlzLiRhbmNob3IuZm9jdXMoKTtcbiAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoJHRhcmdldC5pcyhfdGhpcy5mb2N1c2FibGVFbGVtZW50cykpIHsgLy8gZG9udCd0IHRyaWdnZXIgaWYgYWN1YWwgZWxlbWVudCBoYXMgZm9jdXMgKGkuZS4gaW5wdXRzLCBsaW5rcywgLi4uKVxuICAgICAgICAgICAgX3RoaXMub3BlbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmIChfdGhpcy5vcHRpb25zLmNsb3NlT25Fc2MpIHtcbiAgICAgICAgICAgIF90aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICBfdGhpcy4kYW5jaG9yLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBoYW5kbGVkOiBmdW5jdGlvbihwcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICAgIGlmIChwcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBtb2RhbC5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBmaXJlcyBSZXZlYWwjY2xvc2VkXG4gICAqL1xuICBjbG9zZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNBY3RpdmUgfHwgIXRoaXMuJGVsZW1lbnQuaXMoJzp2aXNpYmxlJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIC8vIE1vdGlvbiBVSSBtZXRob2Qgb2YgaGlkaW5nXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbmltYXRpb25PdXQpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMub3ZlcmxheSkge1xuICAgICAgICBGb3VuZGF0aW9uLk1vdGlvbi5hbmltYXRlT3V0KHRoaXMuJG92ZXJsYXksICdmYWRlLW91dCcsIGZpbmlzaFVwKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBmaW5pc2hVcCgpO1xuICAgICAgfVxuXG4gICAgICBGb3VuZGF0aW9uLk1vdGlvbi5hbmltYXRlT3V0KHRoaXMuJGVsZW1lbnQsIHRoaXMub3B0aW9ucy5hbmltYXRpb25PdXQpO1xuICAgIH1cbiAgICAvLyBqUXVlcnkgbWV0aG9kIG9mIGhpZGluZ1xuICAgIGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5vdmVybGF5KSB7XG4gICAgICAgIHRoaXMuJG92ZXJsYXkuaGlkZSgwLCBmaW5pc2hVcCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgZmluaXNoVXAoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4kZWxlbWVudC5oaWRlKHRoaXMub3B0aW9ucy5oaWRlRGVsYXkpO1xuICAgIH1cblxuICAgIC8vIENvbmRpdGlvbmFscyB0byByZW1vdmUgZXh0cmEgZXZlbnQgbGlzdGVuZXJzIGFkZGVkIG9uIG9wZW5cbiAgICBpZiAodGhpcy5vcHRpb25zLmNsb3NlT25Fc2MpIHtcbiAgICAgICQod2luZG93KS5vZmYoJ2tleWRvd24uemYucmV2ZWFsJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMub3ZlcmxheSAmJiB0aGlzLm9wdGlvbnMuY2xvc2VPbkNsaWNrKSB7XG4gICAgICAkKCdib2R5Jykub2ZmKCdjbGljay56Zi5yZXZlYWwnKTtcbiAgICB9XG5cbiAgICB0aGlzLiRlbGVtZW50Lm9mZigna2V5ZG93bi56Zi5yZXZlYWwnKTtcblxuICAgIGZ1bmN0aW9uIGZpbmlzaFVwKCkge1xuICAgICAgaWYgKF90aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICQoJ2h0bWwsIGJvZHknKS5yZW1vdmVDbGFzcygnaXMtcmV2ZWFsLW9wZW4nKTtcbiAgICAgICAgaWYoX3RoaXMub3JpZ2luYWxTY3JvbGxQb3MpIHtcbiAgICAgICAgICAkKCdib2R5Jykuc2Nyb2xsVG9wKF90aGlzLm9yaWdpbmFsU2Nyb2xsUG9zKTtcbiAgICAgICAgICBfdGhpcy5vcmlnaW5hbFNjcm9sbFBvcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAkKCdib2R5JykucmVtb3ZlQ2xhc3MoJ2lzLXJldmVhbC1vcGVuJyk7XG4gICAgICB9XG5cblxuICAgICAgRm91bmRhdGlvbi5LZXlib2FyZC5yZWxlYXNlRm9jdXMoX3RoaXMuJGVsZW1lbnQpO1xuXG4gICAgICBfdGhpcy4kZWxlbWVudC5hdHRyKCdhcmlhLWhpZGRlbicsIHRydWUpO1xuXG4gICAgICAvKipcbiAgICAgICogRmlyZXMgd2hlbiB0aGUgbW9kYWwgaXMgZG9uZSBjbG9zaW5nLlxuICAgICAgKiBAZXZlbnQgUmV2ZWFsI2Nsb3NlZFxuICAgICAgKi9cbiAgICAgIF90aGlzLiRlbGVtZW50LnRyaWdnZXIoJ2Nsb3NlZC56Zi5yZXZlYWwnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFJlc2V0cyB0aGUgbW9kYWwgY29udGVudFxuICAgICogVGhpcyBwcmV2ZW50cyBhIHJ1bm5pbmcgdmlkZW8gdG8ga2VlcCBnb2luZyBpbiB0aGUgYmFja2dyb3VuZFxuICAgICovXG4gICAgaWYgKHRoaXMub3B0aW9ucy5yZXNldE9uQ2xvc2UpIHtcbiAgICAgIHRoaXMuJGVsZW1lbnQuaHRtbCh0aGlzLiRlbGVtZW50Lmh0bWwoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICBpZiAoX3RoaXMub3B0aW9ucy5kZWVwTGluaykge1xuICAgICAgIGlmICh3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUpIHtcbiAgICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSgnJywgZG9jdW1lbnQudGl0bGUsIHdpbmRvdy5sb2NhdGlvbi5ocmVmLnJlcGxhY2UoYCMke3RoaXMuaWR9YCwgJycpKTtcbiAgICAgICB9IGVsc2Uge1xuICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSAnJztcbiAgICAgICB9XG4gICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBvcGVuL2Nsb3NlZCBzdGF0ZSBvZiBhIG1vZGFsLlxuICAgKiBAZnVuY3Rpb25cbiAgICovXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGFuIGluc3RhbmNlIG9mIGEgbW9kYWwuXG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLm92ZXJsYXkpIHtcbiAgICAgIHRoaXMuJGVsZW1lbnQuYXBwZW5kVG8oJCh0aGlzLm9wdGlvbnMuYXBwZW5kVG8pKTsgLy8gbW92ZSAkZWxlbWVudCBvdXRzaWRlIG9mICRvdmVybGF5IHRvIHByZXZlbnQgZXJyb3IgdW5yZWdpc3RlclBsdWdpbigpXG4gICAgICB0aGlzLiRvdmVybGF5LmhpZGUoKS5vZmYoKS5yZW1vdmUoKTtcbiAgICB9XG4gICAgdGhpcy4kZWxlbWVudC5oaWRlKCkub2ZmKCk7XG4gICAgdGhpcy4kYW5jaG9yLm9mZignLnpmJyk7XG4gICAgJCh3aW5kb3cpLm9mZihgLnpmLnJldmVhbDoke3RoaXMuaWR9YCk7XG5cbiAgICBGb3VuZGF0aW9uLnVucmVnaXN0ZXJQbHVnaW4odGhpcyk7XG4gIH07XG59XG5cblJldmVhbC5kZWZhdWx0cyA9IHtcbiAgLyoqXG4gICAqIE1vdGlvbi1VSSBjbGFzcyB0byB1c2UgZm9yIGFuaW1hdGVkIGVsZW1lbnRzLiBJZiBub25lIHVzZWQsIGRlZmF1bHRzIHRvIHNpbXBsZSBzaG93L2hpZGUuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgJ3NsaWRlLWluLWxlZnQnXG4gICAqL1xuICBhbmltYXRpb25JbjogJycsXG4gIC8qKlxuICAgKiBNb3Rpb24tVUkgY2xhc3MgdG8gdXNlIGZvciBhbmltYXRlZCBlbGVtZW50cy4gSWYgbm9uZSB1c2VkLCBkZWZhdWx0cyB0byBzaW1wbGUgc2hvdy9oaWRlLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlICdzbGlkZS1vdXQtcmlnaHQnXG4gICAqL1xuICBhbmltYXRpb25PdXQ6ICcnLFxuICAvKipcbiAgICogVGltZSwgaW4gbXMsIHRvIGRlbGF5IHRoZSBvcGVuaW5nIG9mIGEgbW9kYWwgYWZ0ZXIgYSBjbGljayBpZiBubyBhbmltYXRpb24gdXNlZC5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAxMFxuICAgKi9cbiAgc2hvd0RlbGF5OiAwLFxuICAvKipcbiAgICogVGltZSwgaW4gbXMsIHRvIGRlbGF5IHRoZSBjbG9zaW5nIG9mIGEgbW9kYWwgYWZ0ZXIgYSBjbGljayBpZiBubyBhbmltYXRpb24gdXNlZC5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAxMFxuICAgKi9cbiAgaGlkZURlbGF5OiAwLFxuICAvKipcbiAgICogQWxsb3dzIGEgY2xpY2sgb24gdGhlIGJvZHkvb3ZlcmxheSB0byBjbG9zZSB0aGUgbW9kYWwuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgdHJ1ZVxuICAgKi9cbiAgY2xvc2VPbkNsaWNrOiB0cnVlLFxuICAvKipcbiAgICogQWxsb3dzIHRoZSBtb2RhbCB0byBjbG9zZSBpZiB0aGUgdXNlciBwcmVzc2VzIHRoZSBgRVNDQVBFYCBrZXkuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgdHJ1ZVxuICAgKi9cbiAgY2xvc2VPbkVzYzogdHJ1ZSxcbiAgLyoqXG4gICAqIElmIHRydWUsIGFsbG93cyBtdWx0aXBsZSBtb2RhbHMgdG8gYmUgZGlzcGxheWVkIGF0IG9uY2UuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIG11bHRpcGxlT3BlbmVkOiBmYWxzZSxcbiAgLyoqXG4gICAqIERpc3RhbmNlLCBpbiBwaXhlbHMsIHRoZSBtb2RhbCBzaG91bGQgcHVzaCBkb3duIGZyb20gdGhlIHRvcCBvZiB0aGUgc2NyZWVuLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIGF1dG9cbiAgICovXG4gIHZPZmZzZXQ6ICdhdXRvJyxcbiAgLyoqXG4gICAqIERpc3RhbmNlLCBpbiBwaXhlbHMsIHRoZSBtb2RhbCBzaG91bGQgcHVzaCBpbiBmcm9tIHRoZSBzaWRlIG9mIHRoZSBzY3JlZW4uXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgYXV0b1xuICAgKi9cbiAgaE9mZnNldDogJ2F1dG8nLFxuICAvKipcbiAgICogQWxsb3dzIHRoZSBtb2RhbCB0byBiZSBmdWxsc2NyZWVuLCBjb21wbGV0ZWx5IGJsb2NraW5nIG91dCB0aGUgcmVzdCBvZiB0aGUgdmlldy4gSlMgY2hlY2tzIGZvciB0aGlzIGFzIHdlbGwuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIGZ1bGxTY3JlZW46IGZhbHNlLFxuICAvKipcbiAgICogUGVyY2VudGFnZSBvZiBzY3JlZW4gaGVpZ2h0IHRoZSBtb2RhbCBzaG91bGQgcHVzaCB1cCBmcm9tIHRoZSBib3R0b20gb2YgdGhlIHZpZXcuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgMTBcbiAgICovXG4gIGJ0bU9mZnNldFBjdDogMTAsXG4gIC8qKlxuICAgKiBBbGxvd3MgdGhlIG1vZGFsIHRvIGdlbmVyYXRlIGFuIG92ZXJsYXkgZGl2LCB3aGljaCB3aWxsIGNvdmVyIHRoZSB2aWV3IHdoZW4gbW9kYWwgb3BlbnMuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgdHJ1ZVxuICAgKi9cbiAgb3ZlcmxheTogdHJ1ZSxcbiAgLyoqXG4gICAqIEFsbG93cyB0aGUgbW9kYWwgdG8gcmVtb3ZlIGFuZCByZWluamVjdCBtYXJrdXAgb24gY2xvc2UuIFNob3VsZCBiZSB0cnVlIGlmIHVzaW5nIHZpZGVvIGVsZW1lbnRzIHcvbyB1c2luZyBwcm92aWRlcidzIGFwaSwgb3RoZXJ3aXNlLCB2aWRlb3Mgd2lsbCBjb250aW51ZSB0byBwbGF5IGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIGZhbHNlXG4gICAqL1xuICByZXNldE9uQ2xvc2U6IGZhbHNlLFxuICAvKipcbiAgICogQWxsb3dzIHRoZSBtb2RhbCB0byBhbHRlciB0aGUgdXJsIG9uIG9wZW4vY2xvc2UsIGFuZCBhbGxvd3MgdGhlIHVzZSBvZiB0aGUgYGJhY2tgIGJ1dHRvbiB0byBjbG9zZSBtb2RhbHMuIEFMU08sIGFsbG93cyBhIG1vZGFsIHRvIGF1dG8tbWFuaWFjYWxseSBvcGVuIG9uIHBhZ2UgbG9hZCBJRiB0aGUgaGFzaCA9PT0gdGhlIG1vZGFsJ3MgdXNlci1zZXQgaWQuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIGRlZXBMaW5rOiBmYWxzZSxcbiAgICAvKipcbiAgICogQWxsb3dzIHRoZSBtb2RhbCB0byBhcHBlbmQgdG8gY3VzdG9tIGRpdi5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSBmYWxzZVxuICAgKi9cbiAgYXBwZW5kVG86IFwiYm9keVwiXG5cbn07XG5cbi8vIFdpbmRvdyBleHBvcnRzXG5Gb3VuZGF0aW9uLnBsdWdpbihSZXZlYWwsICdSZXZlYWwnKTtcblxuZnVuY3Rpb24gaVBob25lU25pZmYoKSB7XG4gIHJldHVybiAvaVAoYWR8aG9uZXxvZCkuKk9TLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTtcbn1cblxuZnVuY3Rpb24gYW5kcm9pZFNuaWZmKCkge1xuICByZXR1cm4gL0FuZHJvaWQvLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpO1xufVxuXG5mdW5jdGlvbiBtb2JpbGVTbmlmZigpIHtcbiAgcmV0dXJuIGlQaG9uZVNuaWZmKCkgfHwgYW5kcm9pZFNuaWZmKCk7XG59XG5cbn0oalF1ZXJ5KTtcbiIsIid1c2Ugc3RyaWN0JztcblxuIWZ1bmN0aW9uKCQpIHtcblxuLyoqXG4gKiBTbGlkZXIgbW9kdWxlLlxuICogQG1vZHVsZSBmb3VuZGF0aW9uLnNsaWRlclxuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC5tb3Rpb25cbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwudHJpZ2dlcnNcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwua2V5Ym9hcmRcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwudG91Y2hcbiAqL1xuXG5jbGFzcyBTbGlkZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBhIHNsaWRlciBjb250cm9sLlxuICAgKiBAY2xhc3NcbiAgICogQHBhcmFtIHtqUXVlcnl9IGVsZW1lbnQgLSBqUXVlcnkgb2JqZWN0IHRvIG1ha2UgaW50byBhIHNsaWRlciBjb250cm9sLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIE92ZXJyaWRlcyB0byB0aGUgZGVmYXVsdCBwbHVnaW4gc2V0dGluZ3MuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5vcHRpb25zID0gJC5leHRlbmQoe30sIFNsaWRlci5kZWZhdWx0cywgdGhpcy4kZWxlbWVudC5kYXRhKCksIG9wdGlvbnMpO1xuXG4gICAgdGhpcy5faW5pdCgpO1xuXG4gICAgRm91bmRhdGlvbi5yZWdpc3RlclBsdWdpbih0aGlzLCAnU2xpZGVyJyk7XG4gICAgRm91bmRhdGlvbi5LZXlib2FyZC5yZWdpc3RlcignU2xpZGVyJywge1xuICAgICAgJ2x0cic6IHtcbiAgICAgICAgJ0FSUk9XX1JJR0hUJzogJ2luY3JlYXNlJyxcbiAgICAgICAgJ0FSUk9XX1VQJzogJ2luY3JlYXNlJyxcbiAgICAgICAgJ0FSUk9XX0RPV04nOiAnZGVjcmVhc2UnLFxuICAgICAgICAnQVJST1dfTEVGVCc6ICdkZWNyZWFzZScsXG4gICAgICAgICdTSElGVF9BUlJPV19SSUdIVCc6ICdpbmNyZWFzZV9mYXN0JyxcbiAgICAgICAgJ1NISUZUX0FSUk9XX1VQJzogJ2luY3JlYXNlX2Zhc3QnLFxuICAgICAgICAnU0hJRlRfQVJST1dfRE9XTic6ICdkZWNyZWFzZV9mYXN0JyxcbiAgICAgICAgJ1NISUZUX0FSUk9XX0xFRlQnOiAnZGVjcmVhc2VfZmFzdCdcbiAgICAgIH0sXG4gICAgICAncnRsJzoge1xuICAgICAgICAnQVJST1dfTEVGVCc6ICdpbmNyZWFzZScsXG4gICAgICAgICdBUlJPV19SSUdIVCc6ICdkZWNyZWFzZScsXG4gICAgICAgICdTSElGVF9BUlJPV19MRUZUJzogJ2luY3JlYXNlX2Zhc3QnLFxuICAgICAgICAnU0hJRlRfQVJST1dfUklHSFQnOiAnZGVjcmVhc2VfZmFzdCdcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWxpemVzIHRoZSBwbHVnaW4gYnkgcmVhZGluZy9zZXR0aW5nIGF0dHJpYnV0ZXMsIGNyZWF0aW5nIGNvbGxlY3Rpb25zIGFuZCBzZXR0aW5nIHRoZSBpbml0aWFsIHBvc2l0aW9uIG9mIHRoZSBoYW5kbGUocykuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2luaXQoKSB7XG4gICAgdGhpcy5pbnB1dHMgPSB0aGlzLiRlbGVtZW50LmZpbmQoJ2lucHV0Jyk7XG4gICAgdGhpcy5oYW5kbGVzID0gdGhpcy4kZWxlbWVudC5maW5kKCdbZGF0YS1zbGlkZXItaGFuZGxlXScpO1xuXG4gICAgdGhpcy4kaGFuZGxlID0gdGhpcy5oYW5kbGVzLmVxKDApO1xuICAgIHRoaXMuJGlucHV0ID0gdGhpcy5pbnB1dHMubGVuZ3RoID8gdGhpcy5pbnB1dHMuZXEoMCkgOiAkKGAjJHt0aGlzLiRoYW5kbGUuYXR0cignYXJpYS1jb250cm9scycpfWApO1xuICAgIHRoaXMuJGZpbGwgPSB0aGlzLiRlbGVtZW50LmZpbmQoJ1tkYXRhLXNsaWRlci1maWxsXScpLmNzcyh0aGlzLm9wdGlvbnMudmVydGljYWwgPyAnaGVpZ2h0JyA6ICd3aWR0aCcsIDApO1xuXG4gICAgdmFyIGlzRGJsID0gZmFsc2UsXG4gICAgICAgIF90aGlzID0gdGhpcztcbiAgICBpZiAodGhpcy5vcHRpb25zLmRpc2FibGVkIHx8IHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3ModGhpcy5vcHRpb25zLmRpc2FibGVkQ2xhc3MpKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgdGhpcy4kZWxlbWVudC5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuZGlzYWJsZWRDbGFzcyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pbnB1dHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmlucHV0cyA9ICQoKS5hZGQodGhpcy4kaW5wdXQpO1xuICAgICAgdGhpcy5vcHRpb25zLmJpbmRpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuX3NldEluaXRBdHRyKDApO1xuXG4gICAgaWYgKHRoaXMuaGFuZGxlc1sxXSkge1xuICAgICAgdGhpcy5vcHRpb25zLmRvdWJsZVNpZGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuJGhhbmRsZTIgPSB0aGlzLmhhbmRsZXMuZXEoMSk7XG4gICAgICB0aGlzLiRpbnB1dDIgPSB0aGlzLmlucHV0cy5sZW5ndGggPiAxID8gdGhpcy5pbnB1dHMuZXEoMSkgOiAkKGAjJHt0aGlzLiRoYW5kbGUyLmF0dHIoJ2FyaWEtY29udHJvbHMnKX1gKTtcblxuICAgICAgaWYgKCF0aGlzLmlucHV0c1sxXSkge1xuICAgICAgICB0aGlzLmlucHV0cyA9IHRoaXMuaW5wdXRzLmFkZCh0aGlzLiRpbnB1dDIpO1xuICAgICAgfVxuICAgICAgaXNEYmwgPSB0cnVlO1xuXG4gICAgICAvLyB0aGlzLiRoYW5kbGUudHJpZ2dlckhhbmRsZXIoJ2NsaWNrLnpmLnNsaWRlcicpO1xuICAgICAgdGhpcy5fc2V0SW5pdEF0dHIoMSk7XG4gICAgfVxuXG4gICAgLy8gU2V0IGhhbmRsZSBwb3NpdGlvbnNcbiAgICB0aGlzLnNldEhhbmRsZXMoKTtcblxuICAgIHRoaXMuX2V2ZW50cygpO1xuICB9XG5cbiAgc2V0SGFuZGxlcygpIHtcbiAgICBpZih0aGlzLmhhbmRsZXNbMV0pIHtcbiAgICAgIHRoaXMuX3NldEhhbmRsZVBvcyh0aGlzLiRoYW5kbGUsIHRoaXMuaW5wdXRzLmVxKDApLnZhbCgpLCB0cnVlLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NldEhhbmRsZVBvcyh0aGlzLiRoYW5kbGUyLCB0aGlzLmlucHV0cy5lcSgxKS52YWwoKSwgdHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2V0SGFuZGxlUG9zKHRoaXMuJGhhbmRsZSwgdGhpcy5pbnB1dHMuZXEoMCkudmFsKCksIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIF9yZWZsb3coKSB7XG4gICAgdGhpcy5zZXRIYW5kbGVzKCk7XG4gIH1cbiAgLyoqXG4gICogQGZ1bmN0aW9uXG4gICogQHByaXZhdGVcbiAgKiBAcGFyYW0ge051bWJlcn0gdmFsdWUgLSBmbG9hdGluZyBwb2ludCAodGhlIHZhbHVlKSB0byBiZSB0cmFuc2Zvcm1lZCB1c2luZyB0byBhIHJlbGF0aXZlIHBvc2l0aW9uIG9uIHRoZSBzbGlkZXIgKHRoZSBpbnZlcnNlIG9mIF92YWx1ZSlcbiAgKi9cbiAgX3BjdE9mQmFyKHZhbHVlKSB7XG4gICAgdmFyIHBjdE9mQmFyID0gcGVyY2VudCh2YWx1ZSAtIHRoaXMub3B0aW9ucy5zdGFydCwgdGhpcy5vcHRpb25zLmVuZCAtIHRoaXMub3B0aW9ucy5zdGFydClcblxuICAgIHN3aXRjaCh0aGlzLm9wdGlvbnMucG9zaXRpb25WYWx1ZUZ1bmN0aW9uKSB7XG4gICAgY2FzZSBcInBvd1wiOlxuICAgICAgcGN0T2ZCYXIgPSB0aGlzLl9sb2dUcmFuc2Zvcm0ocGN0T2ZCYXIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImxvZ1wiOlxuICAgICAgcGN0T2ZCYXIgPSB0aGlzLl9wb3dUcmFuc2Zvcm0ocGN0T2ZCYXIpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBjdE9mQmFyLnRvRml4ZWQoMilcbiAgfVxuXG4gIC8qKlxuICAqIEBmdW5jdGlvblxuICAqIEBwcml2YXRlXG4gICogQHBhcmFtIHtOdW1iZXJ9IHBjdE9mQmFyIC0gZmxvYXRpbmcgcG9pbnQsIHRoZSByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUgc2xpZGVyICh0eXBpY2FsbHkgYmV0d2VlbiAwLTEpIHRvIGJlIHRyYW5zZm9ybWVkIHRvIGEgdmFsdWVcbiAgKi9cbiAgX3ZhbHVlKHBjdE9mQmFyKSB7XG4gICAgc3dpdGNoKHRoaXMub3B0aW9ucy5wb3NpdGlvblZhbHVlRnVuY3Rpb24pIHtcbiAgICBjYXNlIFwicG93XCI6XG4gICAgICBwY3RPZkJhciA9IHRoaXMuX3Bvd1RyYW5zZm9ybShwY3RPZkJhcik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwibG9nXCI6XG4gICAgICBwY3RPZkJhciA9IHRoaXMuX2xvZ1RyYW5zZm9ybShwY3RPZkJhcik7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdmFyIHZhbHVlID0gKHRoaXMub3B0aW9ucy5lbmQgLSB0aGlzLm9wdGlvbnMuc3RhcnQpICogcGN0T2ZCYXIgKyB0aGlzLm9wdGlvbnMuc3RhcnQ7XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIC8qKlxuICAqIEBmdW5jdGlvblxuICAqIEBwcml2YXRlXG4gICogQHBhcmFtIHtOdW1iZXJ9IHZhbHVlIC0gZmxvYXRpbmcgcG9pbnQgKHR5cGljYWxseSBiZXR3ZWVuIDAtMSkgdG8gYmUgdHJhbnNmb3JtZWQgdXNpbmcgdGhlIGxvZyBmdW5jdGlvblxuICAqL1xuICBfbG9nVHJhbnNmb3JtKHZhbHVlKSB7XG4gICAgcmV0dXJuIGJhc2VMb2codGhpcy5vcHRpb25zLm5vbkxpbmVhckJhc2UsICgodmFsdWUqKHRoaXMub3B0aW9ucy5ub25MaW5lYXJCYXNlLTEpKSsxKSlcbiAgfVxuXG4gIC8qKlxuICAqIEBmdW5jdGlvblxuICAqIEBwcml2YXRlXG4gICogQHBhcmFtIHtOdW1iZXJ9IHZhbHVlIC0gZmxvYXRpbmcgcG9pbnQgKHR5cGljYWxseSBiZXR3ZWVuIDAtMSkgdG8gYmUgdHJhbnNmb3JtZWQgdXNpbmcgdGhlIHBvd2VyIGZ1bmN0aW9uXG4gICovXG4gIF9wb3dUcmFuc2Zvcm0odmFsdWUpIHtcbiAgICByZXR1cm4gKE1hdGgucG93KHRoaXMub3B0aW9ucy5ub25MaW5lYXJCYXNlLCB2YWx1ZSkgLSAxKSAvICh0aGlzLm9wdGlvbnMubm9uTGluZWFyQmFzZSAtIDEpXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIHNlbGVjdGVkIGhhbmRsZSBhbmQgZmlsbCBiYXIuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJGhuZGwgLSB0aGUgc2VsZWN0ZWQgaGFuZGxlIHRvIG1vdmUuXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBsb2NhdGlvbiAtIGZsb2F0aW5nIHBvaW50IGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmQgdmFsdWVzIG9mIHRoZSBzbGlkZXIgYmFyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYiAtIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGZpcmUgb24gY29tcGxldGlvbi5cbiAgICogQGZpcmVzIFNsaWRlciNtb3ZlZFxuICAgKiBAZmlyZXMgU2xpZGVyI2NoYW5nZWRcbiAgICovXG4gIF9zZXRIYW5kbGVQb3MoJGhuZGwsIGxvY2F0aW9uLCBub0ludmVydCwgY2IpIHtcbiAgICAvLyBkb24ndCBtb3ZlIGlmIHRoZSBzbGlkZXIgaGFzIGJlZW4gZGlzYWJsZWQgc2luY2UgaXRzIGluaXRpYWxpemF0aW9uXG4gICAgaWYgKHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3ModGhpcy5vcHRpb25zLmRpc2FibGVkQ2xhc3MpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vbWlnaHQgbmVlZCB0byBhbHRlciB0aGF0IHNsaWdodGx5IGZvciBiYXJzIHRoYXQgd2lsbCBoYXZlIG9kZCBudW1iZXIgc2VsZWN0aW9ucy5cbiAgICBsb2NhdGlvbiA9IHBhcnNlRmxvYXQobG9jYXRpb24pOy8vb24gaW5wdXQgY2hhbmdlIGV2ZW50cywgY29udmVydCBzdHJpbmcgdG8gbnVtYmVyLi4uZ3J1bWJsZS5cblxuICAgIC8vIHByZXZlbnQgc2xpZGVyIGZyb20gcnVubmluZyBvdXQgb2YgYm91bmRzLCBpZiB2YWx1ZSBleGNlZWRzIHRoZSBsaW1pdHMgc2V0IHRocm91Z2ggb3B0aW9ucywgb3ZlcnJpZGUgdGhlIHZhbHVlIHRvIG1pbi9tYXhcbiAgICBpZiAobG9jYXRpb24gPCB0aGlzLm9wdGlvbnMuc3RhcnQpIHsgbG9jYXRpb24gPSB0aGlzLm9wdGlvbnMuc3RhcnQ7IH1cbiAgICBlbHNlIGlmIChsb2NhdGlvbiA+IHRoaXMub3B0aW9ucy5lbmQpIHsgbG9jYXRpb24gPSB0aGlzLm9wdGlvbnMuZW5kOyB9XG5cbiAgICB2YXIgaXNEYmwgPSB0aGlzLm9wdGlvbnMuZG91YmxlU2lkZWQ7XG5cbiAgICBpZiAoaXNEYmwpIHsgLy90aGlzIGJsb2NrIGlzIHRvIHByZXZlbnQgMiBoYW5kbGVzIGZyb20gY3Jvc3NpbmcgZWFjaG90aGVyLiBDb3VsZC9zaG91bGQgYmUgaW1wcm92ZWQuXG4gICAgICBpZiAodGhpcy5oYW5kbGVzLmluZGV4KCRobmRsKSA9PT0gMCkge1xuICAgICAgICB2YXIgaDJWYWwgPSBwYXJzZUZsb2F0KHRoaXMuJGhhbmRsZTIuYXR0cignYXJpYS12YWx1ZW5vdycpKTtcbiAgICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbiA+PSBoMlZhbCA/IGgyVmFsIC0gdGhpcy5vcHRpb25zLnN0ZXAgOiBsb2NhdGlvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBoMVZhbCA9IHBhcnNlRmxvYXQodGhpcy4kaGFuZGxlLmF0dHIoJ2FyaWEtdmFsdWVub3cnKSk7XG4gICAgICAgIGxvY2F0aW9uID0gbG9jYXRpb24gPD0gaDFWYWwgPyBoMVZhbCArIHRoaXMub3B0aW9ucy5zdGVwIDogbG9jYXRpb247XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy90aGlzIGlzIGZvciBzaW5nbGUtaGFuZGxlZCB2ZXJ0aWNhbCBzbGlkZXJzLCBpdCBhZGp1c3RzIHRoZSB2YWx1ZSB0byBhY2NvdW50IGZvciB0aGUgc2xpZGVyIGJlaW5nIFwidXBzaWRlLWRvd25cIlxuICAgIC8vZm9yIGNsaWNrIGFuZCBkcmFnIGV2ZW50cywgaXQncyB3ZWlyZCBkdWUgdG8gdGhlIHNjYWxlKC0xLCAxKSBjc3MgcHJvcGVydHlcbiAgICBpZiAodGhpcy5vcHRpb25zLnZlcnRpY2FsICYmICFub0ludmVydCkge1xuICAgICAgbG9jYXRpb24gPSB0aGlzLm9wdGlvbnMuZW5kIC0gbG9jYXRpb247XG4gICAgfVxuXG4gICAgdmFyIF90aGlzID0gdGhpcyxcbiAgICAgICAgdmVydCA9IHRoaXMub3B0aW9ucy52ZXJ0aWNhbCxcbiAgICAgICAgaE9yVyA9IHZlcnQgPyAnaGVpZ2h0JyA6ICd3aWR0aCcsXG4gICAgICAgIGxPclQgPSB2ZXJ0ID8gJ3RvcCcgOiAnbGVmdCcsXG4gICAgICAgIGhhbmRsZURpbSA9ICRobmRsWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW2hPclddLFxuICAgICAgICBlbGVtRGltID0gdGhpcy4kZWxlbWVudFswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtoT3JXXSxcbiAgICAgICAgLy9wZXJjZW50YWdlIG9mIGJhciBtaW4vbWF4IHZhbHVlIGJhc2VkIG9uIGNsaWNrIG9yIGRyYWcgcG9pbnRcbiAgICAgICAgcGN0T2ZCYXIgPSB0aGlzLl9wY3RPZkJhcihsb2NhdGlvbiksXG4gICAgICAgIC8vbnVtYmVyIG9mIGFjdHVhbCBwaXhlbHMgdG8gc2hpZnQgdGhlIGhhbmRsZSwgYmFzZWQgb24gdGhlIHBlcmNlbnRhZ2Ugb2J0YWluZWQgYWJvdmVcbiAgICAgICAgcHhUb01vdmUgPSAoZWxlbURpbSAtIGhhbmRsZURpbSkgKiBwY3RPZkJhcixcbiAgICAgICAgLy9wZXJjZW50YWdlIG9mIGJhciB0byBzaGlmdCB0aGUgaGFuZGxlXG4gICAgICAgIG1vdmVtZW50ID0gKHBlcmNlbnQocHhUb01vdmUsIGVsZW1EaW0pICogMTAwKS50b0ZpeGVkKHRoaXMub3B0aW9ucy5kZWNpbWFsKTtcbiAgICAgICAgLy9maXhpbmcgdGhlIGRlY2ltYWwgdmFsdWUgZm9yIHRoZSBsb2NhdGlvbiBudW1iZXIsIGlzIHBhc3NlZCB0byBvdGhlciBtZXRob2RzIGFzIGEgZml4ZWQgZmxvYXRpbmctcG9pbnQgdmFsdWVcbiAgICAgICAgbG9jYXRpb24gPSBwYXJzZUZsb2F0KGxvY2F0aW9uLnRvRml4ZWQodGhpcy5vcHRpb25zLmRlY2ltYWwpKTtcbiAgICAgICAgLy8gZGVjbGFyZSBlbXB0eSBvYmplY3QgZm9yIGNzcyBhZGp1c3RtZW50cywgb25seSB1c2VkIHdpdGggMiBoYW5kbGVkLXNsaWRlcnNcbiAgICB2YXIgY3NzID0ge307XG5cbiAgICB0aGlzLl9zZXRWYWx1ZXMoJGhuZGwsIGxvY2F0aW9uKTtcblxuICAgIC8vIFRPRE8gdXBkYXRlIHRvIGNhbGN1bGF0ZSBiYXNlZCBvbiB2YWx1ZXMgc2V0IHRvIHJlc3BlY3RpdmUgaW5wdXRzPz9cbiAgICBpZiAoaXNEYmwpIHtcbiAgICAgIHZhciBpc0xlZnRIbmRsID0gdGhpcy5oYW5kbGVzLmluZGV4KCRobmRsKSA9PT0gMCxcbiAgICAgICAgICAvL2VtcHR5IHZhcmlhYmxlLCB3aWxsIGJlIHVzZWQgZm9yIG1pbi1oZWlnaHQvd2lkdGggZm9yIGZpbGwgYmFyXG4gICAgICAgICAgZGltLFxuICAgICAgICAgIC8vcGVyY2VudGFnZSB3L2ggb2YgdGhlIGhhbmRsZSBjb21wYXJlZCB0byB0aGUgc2xpZGVyIGJhclxuICAgICAgICAgIGhhbmRsZVBjdCA9ICB+fihwZXJjZW50KGhhbmRsZURpbSwgZWxlbURpbSkgKiAxMDApO1xuICAgICAgLy9pZiBsZWZ0IGhhbmRsZSwgdGhlIG1hdGggaXMgc2xpZ2h0bHkgZGlmZmVyZW50IHRoYW4gaWYgaXQncyB0aGUgcmlnaHQgaGFuZGxlLCBhbmQgdGhlIGxlZnQvdG9wIHByb3BlcnR5IG5lZWRzIHRvIGJlIGNoYW5nZWQgZm9yIHRoZSBmaWxsIGJhclxuICAgICAgaWYgKGlzTGVmdEhuZGwpIHtcbiAgICAgICAgLy9sZWZ0IG9yIHRvcCBwZXJjZW50YWdlIHZhbHVlIHRvIGFwcGx5IHRvIHRoZSBmaWxsIGJhci5cbiAgICAgICAgY3NzW2xPclRdID0gYCR7bW92ZW1lbnR9JWA7XG4gICAgICAgIC8vY2FsY3VsYXRlIHRoZSBuZXcgbWluLWhlaWdodC93aWR0aCBmb3IgdGhlIGZpbGwgYmFyLlxuICAgICAgICBkaW0gPSBwYXJzZUZsb2F0KHRoaXMuJGhhbmRsZTJbMF0uc3R5bGVbbE9yVF0pIC0gbW92ZW1lbnQgKyBoYW5kbGVQY3Q7XG4gICAgICAgIC8vdGhpcyBjYWxsYmFjayBpcyBuZWNlc3NhcnkgdG8gcHJldmVudCBlcnJvcnMgYW5kIGFsbG93IHRoZSBwcm9wZXIgcGxhY2VtZW50IGFuZCBpbml0aWFsaXphdGlvbiBvZiBhIDItaGFuZGxlZCBzbGlkZXJcbiAgICAgICAgLy9wbHVzLCBpdCBtZWFucyB3ZSBkb24ndCBjYXJlIGlmICdkaW0nIGlzTmFOIG9uIGluaXQsIGl0IHdvbid0IGJlIGluIHRoZSBmdXR1cmUuXG4gICAgICAgIGlmIChjYiAmJiB0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpIHsgY2IoKTsgfS8vdGhpcyBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlIGluaXRpYWxpemF0aW9uIG9mIDIgaGFuZGxlZCBzbGlkZXJzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvL2p1c3QgY2FjaGluZyB0aGUgdmFsdWUgb2YgdGhlIGxlZnQvYm90dG9tIGhhbmRsZSdzIGxlZnQvdG9wIHByb3BlcnR5XG4gICAgICAgIHZhciBoYW5kbGVQb3MgPSBwYXJzZUZsb2F0KHRoaXMuJGhhbmRsZVswXS5zdHlsZVtsT3JUXSk7XG4gICAgICAgIC8vY2FsY3VsYXRlIHRoZSBuZXcgbWluLWhlaWdodC93aWR0aCBmb3IgdGhlIGZpbGwgYmFyLiBVc2UgaXNOYU4gdG8gcHJldmVudCBmYWxzZSBwb3NpdGl2ZXMgZm9yIG51bWJlcnMgPD0gMFxuICAgICAgICAvL2Jhc2VkIG9uIHRoZSBwZXJjZW50YWdlIG9mIG1vdmVtZW50IG9mIHRoZSBoYW5kbGUgYmVpbmcgbWFuaXB1bGF0ZWQsIGxlc3MgdGhlIG9wcG9zaW5nIGhhbmRsZSdzIGxlZnQvdG9wIHBvc2l0aW9uLCBwbHVzIHRoZSBwZXJjZW50YWdlIHcvaCBvZiB0aGUgaGFuZGxlIGl0c2VsZlxuICAgICAgICBkaW0gPSBtb3ZlbWVudCAtIChpc05hTihoYW5kbGVQb3MpID8gKHRoaXMub3B0aW9ucy5pbml0aWFsU3RhcnQgLSB0aGlzLm9wdGlvbnMuc3RhcnQpLygodGhpcy5vcHRpb25zLmVuZC10aGlzLm9wdGlvbnMuc3RhcnQpLzEwMCkgOiBoYW5kbGVQb3MpICsgaGFuZGxlUGN0O1xuICAgICAgfVxuICAgICAgLy8gYXNzaWduIHRoZSBtaW4taGVpZ2h0L3dpZHRoIHRvIG91ciBjc3Mgb2JqZWN0XG4gICAgICBjc3NbYG1pbi0ke2hPcld9YF0gPSBgJHtkaW19JWA7XG4gICAgfVxuXG4gICAgdGhpcy4kZWxlbWVudC5vbmUoJ2ZpbmlzaGVkLnpmLmFuaW1hdGUnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIEZpcmVzIHdoZW4gdGhlIGhhbmRsZSBpcyBkb25lIG1vdmluZy5cbiAgICAgICAgICAgICAgICAgICAgICogQGV2ZW50IFNsaWRlciNtb3ZlZFxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuJGVsZW1lbnQudHJpZ2dlcignbW92ZWQuemYuc2xpZGVyJywgWyRobmRsXSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAvL2JlY2F1c2Ugd2UgZG9uJ3Qga25vdyBleGFjdGx5IGhvdyB0aGUgaGFuZGxlIHdpbGwgYmUgbW92ZWQsIGNoZWNrIHRoZSBhbW91bnQgb2YgdGltZSBpdCBzaG91bGQgdGFrZSB0byBtb3ZlLlxuICAgIHZhciBtb3ZlVGltZSA9IHRoaXMuJGVsZW1lbnQuZGF0YSgnZHJhZ2dpbmcnKSA/IDEwMDAvNjAgOiB0aGlzLm9wdGlvbnMubW92ZVRpbWU7XG5cbiAgICBGb3VuZGF0aW9uLk1vdmUobW92ZVRpbWUsICRobmRsLCBmdW5jdGlvbigpIHtcbiAgICAgIC8vIGFkanVzdGluZyB0aGUgbGVmdC90b3AgcHJvcGVydHkgb2YgdGhlIGhhbmRsZSwgYmFzZWQgb24gdGhlIHBlcmNlbnRhZ2UgY2FsY3VsYXRlZCBhYm92ZVxuICAgICAgLy8gaWYgbW92ZW1lbnQgaXNOYU4sIHRoYXQgaXMgYmVjYXVzZSB0aGUgc2xpZGVyIGlzIGhpZGRlbiBhbmQgd2UgY2Fubm90IGRldGVybWluZSBoYW5kbGUgd2lkdGgsXG4gICAgICAvLyBmYWxsIGJhY2sgdG8gbmV4dCBiZXN0IGd1ZXNzLlxuICAgICAgaWYgKGlzTmFOKG1vdmVtZW50KSkge1xuICAgICAgICAkaG5kbC5jc3MobE9yVCwgYCR7cGN0T2ZCYXIgKiAxMDB9JWApO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgICRobmRsLmNzcyhsT3JULCBgJHttb3ZlbWVudH0lYCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghX3RoaXMub3B0aW9ucy5kb3VibGVTaWRlZCkge1xuICAgICAgICAvL2lmIHNpbmdsZS1oYW5kbGVkLCBhIHNpbXBsZSBtZXRob2QgdG8gZXhwYW5kIHRoZSBmaWxsIGJhclxuICAgICAgICBfdGhpcy4kZmlsbC5jc3MoaE9yVywgYCR7cGN0T2ZCYXIgKiAxMDB9JWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy9vdGhlcndpc2UsIHVzZSB0aGUgY3NzIG9iamVjdCB3ZSBjcmVhdGVkIGFib3ZlXG4gICAgICAgIF90aGlzLiRmaWxsLmNzcyhjc3MpO1xuICAgICAgfVxuICAgIH0pO1xuXG5cbiAgICAvKipcbiAgICAgKiBGaXJlcyB3aGVuIHRoZSB2YWx1ZSBoYXMgbm90IGJlZW4gY2hhbmdlIGZvciBhIGdpdmVuIHRpbWUuXG4gICAgICogQGV2ZW50IFNsaWRlciNjaGFuZ2VkXG4gICAgICovXG4gICAgY2xlYXJUaW1lb3V0KF90aGlzLnRpbWVvdXQpO1xuICAgIF90aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICBfdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdjaGFuZ2VkLnpmLnNsaWRlcicsIFskaG5kbF0pO1xuICAgIH0sIF90aGlzLm9wdGlvbnMuY2hhbmdlZERlbGF5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbml0aWFsIGF0dHJpYnV0ZSBmb3IgdGhlIHNsaWRlciBlbGVtZW50LlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGlkeCAtIGluZGV4IG9mIHRoZSBjdXJyZW50IGhhbmRsZS9pbnB1dCB0byB1c2UuXG4gICAqL1xuICBfc2V0SW5pdEF0dHIoaWR4KSB7XG4gICAgdmFyIGluaXRWYWwgPSAoaWR4ID09PSAwID8gdGhpcy5vcHRpb25zLmluaXRpYWxTdGFydCA6IHRoaXMub3B0aW9ucy5pbml0aWFsRW5kKVxuICAgIHZhciBpZCA9IHRoaXMuaW5wdXRzLmVxKGlkeCkuYXR0cignaWQnKSB8fCBGb3VuZGF0aW9uLkdldFlvRGlnaXRzKDYsICdzbGlkZXInKTtcbiAgICB0aGlzLmlucHV0cy5lcShpZHgpLmF0dHIoe1xuICAgICAgJ2lkJzogaWQsXG4gICAgICAnbWF4JzogdGhpcy5vcHRpb25zLmVuZCxcbiAgICAgICdtaW4nOiB0aGlzLm9wdGlvbnMuc3RhcnQsXG4gICAgICAnc3RlcCc6IHRoaXMub3B0aW9ucy5zdGVwXG4gICAgfSk7XG4gICAgdGhpcy5pbnB1dHMuZXEoaWR4KS52YWwoaW5pdFZhbCk7XG4gICAgdGhpcy5oYW5kbGVzLmVxKGlkeCkuYXR0cih7XG4gICAgICAncm9sZSc6ICdzbGlkZXInLFxuICAgICAgJ2FyaWEtY29udHJvbHMnOiBpZCxcbiAgICAgICdhcmlhLXZhbHVlbWF4JzogdGhpcy5vcHRpb25zLmVuZCxcbiAgICAgICdhcmlhLXZhbHVlbWluJzogdGhpcy5vcHRpb25zLnN0YXJ0LFxuICAgICAgJ2FyaWEtdmFsdWVub3cnOiBpbml0VmFsLFxuICAgICAgJ2FyaWEtb3JpZW50YXRpb24nOiB0aGlzLm9wdGlvbnMudmVydGljYWwgPyAndmVydGljYWwnIDogJ2hvcml6b250YWwnLFxuICAgICAgJ3RhYmluZGV4JzogMFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGlucHV0IGFuZCBgYXJpYS12YWx1ZW5vd2AgdmFsdWVzIGZvciB0aGUgc2xpZGVyIGVsZW1lbnQuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJGhhbmRsZSAtIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaGFuZGxlLlxuICAgKiBAcGFyYW0ge051bWJlcn0gdmFsIC0gZmxvYXRpbmcgcG9pbnQgb2YgdGhlIG5ldyB2YWx1ZS5cbiAgICovXG4gIF9zZXRWYWx1ZXMoJGhhbmRsZSwgdmFsKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMub3B0aW9ucy5kb3VibGVTaWRlZCA/IHRoaXMuaGFuZGxlcy5pbmRleCgkaGFuZGxlKSA6IDA7XG4gICAgdGhpcy5pbnB1dHMuZXEoaWR4KS52YWwodmFsKTtcbiAgICAkaGFuZGxlLmF0dHIoJ2FyaWEtdmFsdWVub3cnLCB2YWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgZXZlbnRzIG9uIHRoZSBzbGlkZXIgZWxlbWVudC5cbiAgICogQ2FsY3VsYXRlcyB0aGUgbmV3IGxvY2F0aW9uIG9mIHRoZSBjdXJyZW50IGhhbmRsZS5cbiAgICogSWYgdGhlcmUgYXJlIHR3byBoYW5kbGVzIGFuZCB0aGUgYmFyIHdhcyBjbGlja2VkLCBpdCBkZXRlcm1pbmVzIHdoaWNoIGhhbmRsZSB0byBtb3ZlLlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGUgLSB0aGUgYGV2ZW50YCBvYmplY3QgcGFzc2VkIGZyb20gdGhlIGxpc3RlbmVyLlxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJGhhbmRsZSAtIHRoZSBjdXJyZW50IGhhbmRsZSB0byBjYWxjdWxhdGUgZm9yLCBpZiBzZWxlY3RlZC5cbiAgICogQHBhcmFtIHtOdW1iZXJ9IHZhbCAtIGZsb2F0aW5nIHBvaW50IG51bWJlciBmb3IgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgc2xpZGVyLlxuICAgKiBUT0RPIGNsZWFuIHRoaXMgdXAsIHRoZXJlJ3MgYSBsb3Qgb2YgcmVwZWF0ZWQgY29kZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBfc2V0SGFuZGxlUG9zIGZuLlxuICAgKi9cbiAgX2hhbmRsZUV2ZW50KGUsICRoYW5kbGUsIHZhbCkge1xuICAgIHZhciB2YWx1ZSwgaGFzVmFsO1xuICAgIGlmICghdmFsKSB7Ly9jbGljayBvciBkcmFnIGV2ZW50c1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdmFyIF90aGlzID0gdGhpcyxcbiAgICAgICAgICB2ZXJ0aWNhbCA9IHRoaXMub3B0aW9ucy52ZXJ0aWNhbCxcbiAgICAgICAgICBwYXJhbSA9IHZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnLFxuICAgICAgICAgIGRpcmVjdGlvbiA9IHZlcnRpY2FsID8gJ3RvcCcgOiAnbGVmdCcsXG4gICAgICAgICAgZXZlbnRPZmZzZXQgPSB2ZXJ0aWNhbCA/IGUucGFnZVkgOiBlLnBhZ2VYLFxuICAgICAgICAgIGhhbGZPZkhhbmRsZSA9IHRoaXMuJGhhbmRsZVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtwYXJhbV0gLyAyLFxuICAgICAgICAgIGJhckRpbSA9IHRoaXMuJGVsZW1lbnRbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbcGFyYW1dLFxuICAgICAgICAgIHdpbmRvd1Njcm9sbCA9IHZlcnRpY2FsID8gJCh3aW5kb3cpLnNjcm9sbFRvcCgpIDogJCh3aW5kb3cpLnNjcm9sbExlZnQoKTtcblxuXG4gICAgICB2YXIgZWxlbU9mZnNldCA9IHRoaXMuJGVsZW1lbnQub2Zmc2V0KClbZGlyZWN0aW9uXTtcblxuICAgICAgLy8gdG91Y2ggZXZlbnRzIGVtdWxhdGVkIGJ5IHRoZSB0b3VjaCB1dGlsIGdpdmUgcG9zaXRpb24gcmVsYXRpdmUgdG8gc2NyZWVuLCBhZGQgd2luZG93LnNjcm9sbCB0byBldmVudCBjb29yZGluYXRlcy4uLlxuICAgICAgLy8gYmVzdCB3YXkgdG8gZ3Vlc3MgdGhpcyBpcyBzaW11bGF0ZWQgaXMgaWYgY2xpZW50WSA9PSBwYWdlWVxuICAgICAgaWYgKGUuY2xpZW50WSA9PT0gZS5wYWdlWSkgeyBldmVudE9mZnNldCA9IGV2ZW50T2Zmc2V0ICsgd2luZG93U2Nyb2xsOyB9XG4gICAgICB2YXIgZXZlbnRGcm9tQmFyID0gZXZlbnRPZmZzZXQgLSBlbGVtT2Zmc2V0O1xuICAgICAgdmFyIGJhclhZO1xuICAgICAgaWYgKGV2ZW50RnJvbUJhciA8IDApIHtcbiAgICAgICAgYmFyWFkgPSAwO1xuICAgICAgfSBlbHNlIGlmIChldmVudEZyb21CYXIgPiBiYXJEaW0pIHtcbiAgICAgICAgYmFyWFkgPSBiYXJEaW07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXJYWSA9IGV2ZW50RnJvbUJhcjtcbiAgICAgIH1cbiAgICAgIHZhciBvZmZzZXRQY3QgPSBwZXJjZW50KGJhclhZLCBiYXJEaW0pO1xuXG4gICAgICB2YWx1ZSA9IHRoaXMuX3ZhbHVlKG9mZnNldFBjdCk7XG5cbiAgICAgIC8vIHR1cm4gZXZlcnl0aGluZyBhcm91bmQgZm9yIFJUTCwgeWF5IG1hdGghXG4gICAgICBpZiAoRm91bmRhdGlvbi5ydGwoKSAmJiAhdGhpcy5vcHRpb25zLnZlcnRpY2FsKSB7dmFsdWUgPSB0aGlzLm9wdGlvbnMuZW5kIC0gdmFsdWU7fVxuXG4gICAgICB2YWx1ZSA9IF90aGlzLl9hZGp1c3RWYWx1ZShudWxsLCB2YWx1ZSk7XG4gICAgICAvL2Jvb2xlYW4gZmxhZyBmb3IgdGhlIHNldEhhbmRsZVBvcyBmbiwgc3BlY2lmaWNhbGx5IGZvciB2ZXJ0aWNhbCBzbGlkZXJzXG4gICAgICBoYXNWYWwgPSBmYWxzZTtcblxuICAgICAgaWYgKCEkaGFuZGxlKSB7Ly9maWd1cmUgb3V0IHdoaWNoIGhhbmRsZSBpdCBpcywgcGFzcyBpdCB0byB0aGUgbmV4dCBmdW5jdGlvbi5cbiAgICAgICAgdmFyIGZpcnN0SG5kbFBvcyA9IGFic1Bvc2l0aW9uKHRoaXMuJGhhbmRsZSwgZGlyZWN0aW9uLCBiYXJYWSwgcGFyYW0pLFxuICAgICAgICAgICAgc2VjbmRIbmRsUG9zID0gYWJzUG9zaXRpb24odGhpcy4kaGFuZGxlMiwgZGlyZWN0aW9uLCBiYXJYWSwgcGFyYW0pO1xuICAgICAgICAgICAgJGhhbmRsZSA9IGZpcnN0SG5kbFBvcyA8PSBzZWNuZEhuZGxQb3MgPyB0aGlzLiRoYW5kbGUgOiB0aGlzLiRoYW5kbGUyO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHsvL2NoYW5nZSBldmVudCBvbiBpbnB1dFxuICAgICAgdmFsdWUgPSB0aGlzLl9hZGp1c3RWYWx1ZShudWxsLCB2YWwpO1xuICAgICAgaGFzVmFsID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRIYW5kbGVQb3MoJGhhbmRsZSwgdmFsdWUsIGhhc1ZhbCk7XG4gIH1cblxuICAvKipcbiAgICogQWRqdXN0ZXMgdmFsdWUgZm9yIGhhbmRsZSBpbiByZWdhcmQgdG8gc3RlcCB2YWx1ZS4gcmV0dXJucyBhZGp1c3RlZCB2YWx1ZVxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtqUXVlcnl9ICRoYW5kbGUgLSB0aGUgc2VsZWN0ZWQgaGFuZGxlLlxuICAgKiBAcGFyYW0ge051bWJlcn0gdmFsdWUgLSB2YWx1ZSB0byBhZGp1c3QuIHVzZWQgaWYgJGhhbmRsZSBpcyBmYWxzeVxuICAgKi9cbiAgX2FkanVzdFZhbHVlKCRoYW5kbGUsIHZhbHVlKSB7XG4gICAgdmFyIHZhbCxcbiAgICAgIHN0ZXAgPSB0aGlzLm9wdGlvbnMuc3RlcCxcbiAgICAgIGRpdiA9IHBhcnNlRmxvYXQoc3RlcC8yKSxcbiAgICAgIGxlZnQsIHByZXZfdmFsLCBuZXh0X3ZhbDtcbiAgICBpZiAoISEkaGFuZGxlKSB7XG4gICAgICB2YWwgPSBwYXJzZUZsb2F0KCRoYW5kbGUuYXR0cignYXJpYS12YWx1ZW5vdycpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YWwgPSB2YWx1ZTtcbiAgICB9XG4gICAgbGVmdCA9IHZhbCAlIHN0ZXA7XG4gICAgcHJldl92YWwgPSB2YWwgLSBsZWZ0O1xuICAgIG5leHRfdmFsID0gcHJldl92YWwgKyBzdGVwO1xuICAgIGlmIChsZWZ0ID09PSAwKSB7XG4gICAgICByZXR1cm4gdmFsO1xuICAgIH1cbiAgICB2YWwgPSB2YWwgPj0gcHJldl92YWwgKyBkaXYgPyBuZXh0X3ZhbCA6IHByZXZfdmFsO1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBldmVudCBsaXN0ZW5lcnMgdG8gdGhlIHNsaWRlciBlbGVtZW50cy5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfZXZlbnRzKCkge1xuICAgIHRoaXMuX2V2ZW50c0ZvckhhbmRsZSh0aGlzLiRoYW5kbGUpO1xuICAgIGlmKHRoaXMuaGFuZGxlc1sxXSkge1xuICAgICAgdGhpcy5fZXZlbnRzRm9ySGFuZGxlKHRoaXMuJGhhbmRsZTIpO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIEFkZHMgZXZlbnQgbGlzdGVuZXJzIGEgcGFydGljdWxhciBoYW5kbGVcbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkaGFuZGxlIC0gdGhlIGN1cnJlbnQgaGFuZGxlIHRvIGFwcGx5IGxpc3RlbmVycyB0by5cbiAgICovXG4gIF9ldmVudHNGb3JIYW5kbGUoJGhhbmRsZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXMsXG4gICAgICAgIGN1ckhhbmRsZSxcbiAgICAgICAgdGltZXI7XG5cbiAgICAgIHRoaXMuaW5wdXRzLm9mZignY2hhbmdlLnpmLnNsaWRlcicpLm9uKCdjaGFuZ2UuemYuc2xpZGVyJywgZnVuY3Rpb24oZSkge1xuICAgICAgICB2YXIgaWR4ID0gX3RoaXMuaW5wdXRzLmluZGV4KCQodGhpcykpO1xuICAgICAgICBfdGhpcy5faGFuZGxlRXZlbnQoZSwgX3RoaXMuaGFuZGxlcy5lcShpZHgpLCAkKHRoaXMpLnZhbCgpKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNsaWNrU2VsZWN0KSB7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQub2ZmKCdjbGljay56Zi5zbGlkZXInKS5vbignY2xpY2suemYuc2xpZGVyJywgZnVuY3Rpb24oZSkge1xuICAgICAgICAgIGlmIChfdGhpcy4kZWxlbWVudC5kYXRhKCdkcmFnZ2luZycpKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgICAgICAgaWYgKCEkKGUudGFyZ2V0KS5pcygnW2RhdGEtc2xpZGVyLWhhbmRsZV0nKSkge1xuICAgICAgICAgICAgaWYgKF90aGlzLm9wdGlvbnMuZG91YmxlU2lkZWQpIHtcbiAgICAgICAgICAgICAgX3RoaXMuX2hhbmRsZUV2ZW50KGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgX3RoaXMuX2hhbmRsZUV2ZW50KGUsIF90aGlzLiRoYW5kbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmRyYWdnYWJsZSkge1xuICAgICAgdGhpcy5oYW5kbGVzLmFkZFRvdWNoKCk7XG5cbiAgICAgIHZhciAkYm9keSA9ICQoJ2JvZHknKTtcbiAgICAgICRoYW5kbGVcbiAgICAgICAgLm9mZignbW91c2Vkb3duLnpmLnNsaWRlcicpXG4gICAgICAgIC5vbignbW91c2Vkb3duLnpmLnNsaWRlcicsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAkaGFuZGxlLmFkZENsYXNzKCdpcy1kcmFnZ2luZycpO1xuICAgICAgICAgIF90aGlzLiRmaWxsLmFkZENsYXNzKCdpcy1kcmFnZ2luZycpOy8vXG4gICAgICAgICAgX3RoaXMuJGVsZW1lbnQuZGF0YSgnZHJhZ2dpbmcnLCB0cnVlKTtcblxuICAgICAgICAgIGN1ckhhbmRsZSA9ICQoZS5jdXJyZW50VGFyZ2V0KTtcblxuICAgICAgICAgICRib2R5Lm9uKCdtb3VzZW1vdmUuemYuc2xpZGVyJywgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgX3RoaXMuX2hhbmRsZUV2ZW50KGUsIGN1ckhhbmRsZSk7XG5cbiAgICAgICAgICB9KS5vbignbW91c2V1cC56Zi5zbGlkZXInLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBfdGhpcy5faGFuZGxlRXZlbnQoZSwgY3VySGFuZGxlKTtcblxuICAgICAgICAgICAgJGhhbmRsZS5yZW1vdmVDbGFzcygnaXMtZHJhZ2dpbmcnKTtcbiAgICAgICAgICAgIF90aGlzLiRmaWxsLnJlbW92ZUNsYXNzKCdpcy1kcmFnZ2luZycpO1xuICAgICAgICAgICAgX3RoaXMuJGVsZW1lbnQuZGF0YSgnZHJhZ2dpbmcnLCBmYWxzZSk7XG5cbiAgICAgICAgICAgICRib2R5Lm9mZignbW91c2Vtb3ZlLnpmLnNsaWRlciBtb3VzZXVwLnpmLnNsaWRlcicpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC8vIHByZXZlbnQgZXZlbnRzIHRyaWdnZXJlZCBieSB0b3VjaFxuICAgICAgLm9uKCdzZWxlY3RzdGFydC56Zi5zbGlkZXIgdG91Y2htb3ZlLnpmLnNsaWRlcicsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgJGhhbmRsZS5vZmYoJ2tleWRvd24uemYuc2xpZGVyJykub24oJ2tleWRvd24uemYuc2xpZGVyJywgZnVuY3Rpb24oZSkge1xuICAgICAgdmFyIF8kaGFuZGxlID0gJCh0aGlzKSxcbiAgICAgICAgICBpZHggPSBfdGhpcy5vcHRpb25zLmRvdWJsZVNpZGVkID8gX3RoaXMuaGFuZGxlcy5pbmRleChfJGhhbmRsZSkgOiAwLFxuICAgICAgICAgIG9sZFZhbHVlID0gcGFyc2VGbG9hdChfdGhpcy5pbnB1dHMuZXEoaWR4KS52YWwoKSksXG4gICAgICAgICAgbmV3VmFsdWU7XG5cbiAgICAgIC8vIGhhbmRsZSBrZXlib2FyZCBldmVudCB3aXRoIGtleWJvYXJkIHV0aWxcbiAgICAgIEZvdW5kYXRpb24uS2V5Ym9hcmQuaGFuZGxlS2V5KGUsICdTbGlkZXInLCB7XG4gICAgICAgIGRlY3JlYXNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVlIC0gX3RoaXMub3B0aW9ucy5zdGVwO1xuICAgICAgICB9LFxuICAgICAgICBpbmNyZWFzZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSArIF90aGlzLm9wdGlvbnMuc3RlcDtcbiAgICAgICAgfSxcbiAgICAgICAgZGVjcmVhc2VfZmFzdDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSAtIF90aGlzLm9wdGlvbnMuc3RlcCAqIDEwO1xuICAgICAgICB9LFxuICAgICAgICBpbmNyZWFzZV9mYXN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVlICsgX3RoaXMub3B0aW9ucy5zdGVwICogMTA7XG4gICAgICAgIH0sXG4gICAgICAgIGhhbmRsZWQ6IGZ1bmN0aW9uKCkgeyAvLyBvbmx5IHNldCBoYW5kbGUgcG9zIHdoZW4gZXZlbnQgd2FzIGhhbmRsZWQgc3BlY2lhbGx5XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIF90aGlzLl9zZXRIYW5kbGVQb3MoXyRoYW5kbGUsIG5ld1ZhbHVlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvKmlmIChuZXdWYWx1ZSkgeyAvLyBpZiBwcmVzc2VkIGtleSBoYXMgc3BlY2lhbCBmdW5jdGlvbiwgdXBkYXRlIHZhbHVlXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgX3RoaXMuX3NldEhhbmRsZVBvcyhfJGhhbmRsZSwgbmV3VmFsdWUpO1xuICAgICAgfSovXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgdGhlIHNsaWRlciBwbHVnaW4uXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuaGFuZGxlcy5vZmYoJy56Zi5zbGlkZXInKTtcbiAgICB0aGlzLmlucHV0cy5vZmYoJy56Zi5zbGlkZXInKTtcbiAgICB0aGlzLiRlbGVtZW50Lm9mZignLnpmLnNsaWRlcicpO1xuXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG5cbiAgICBGb3VuZGF0aW9uLnVucmVnaXN0ZXJQbHVnaW4odGhpcyk7XG4gIH1cbn1cblxuU2xpZGVyLmRlZmF1bHRzID0ge1xuICAvKipcbiAgICogTWluaW11bSB2YWx1ZSBmb3IgdGhlIHNsaWRlciBzY2FsZS5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAwXG4gICAqL1xuICBzdGFydDogMCxcbiAgLyoqXG4gICAqIE1heGltdW0gdmFsdWUgZm9yIHRoZSBzbGlkZXIgc2NhbGUuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgMTAwXG4gICAqL1xuICBlbmQ6IDEwMCxcbiAgLyoqXG4gICAqIE1pbmltdW0gdmFsdWUgY2hhbmdlIHBlciBjaGFuZ2UgZXZlbnQuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgMVxuICAgKi9cbiAgc3RlcDogMSxcbiAgLyoqXG4gICAqIFZhbHVlIGF0IHdoaWNoIHRoZSBoYW5kbGUvaW5wdXQgKihsZWZ0IGhhbmRsZS9maXJzdCBpbnB1dCkqIHNob3VsZCBiZSBzZXQgdG8gb24gaW5pdGlhbGl6YXRpb24uXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgMFxuICAgKi9cbiAgaW5pdGlhbFN0YXJ0OiAwLFxuICAvKipcbiAgICogVmFsdWUgYXQgd2hpY2ggdGhlIHJpZ2h0IGhhbmRsZS9zZWNvbmQgaW5wdXQgc2hvdWxkIGJlIHNldCB0byBvbiBpbml0aWFsaXphdGlvbi5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAxMDBcbiAgICovXG4gIGluaXRpYWxFbmQ6IDEwMCxcbiAgLyoqXG4gICAqIEFsbG93cyB0aGUgaW5wdXQgdG8gYmUgbG9jYXRlZCBvdXRzaWRlIHRoZSBjb250YWluZXIgYW5kIHZpc2libGUuIFNldCB0byBieSB0aGUgSlNcbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSBmYWxzZVxuICAgKi9cbiAgYmluZGluZzogZmFsc2UsXG4gIC8qKlxuICAgKiBBbGxvd3MgdGhlIHVzZXIgdG8gY2xpY2svdGFwIG9uIHRoZSBzbGlkZXIgYmFyIHRvIHNlbGVjdCBhIHZhbHVlLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIHRydWVcbiAgICovXG4gIGNsaWNrU2VsZWN0OiB0cnVlLFxuICAvKipcbiAgICogU2V0IHRvIHRydWUgYW5kIHVzZSB0aGUgYHZlcnRpY2FsYCBjbGFzcyB0byBjaGFuZ2UgYWxpZ25tZW50IHRvIHZlcnRpY2FsLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIGZhbHNlXG4gICAqL1xuICB2ZXJ0aWNhbDogZmFsc2UsXG4gIC8qKlxuICAgKiBBbGxvd3MgdGhlIHVzZXIgdG8gZHJhZyB0aGUgc2xpZGVyIGhhbmRsZShzKSB0byBzZWxlY3QgYSB2YWx1ZS5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSB0cnVlXG4gICAqL1xuICBkcmFnZ2FibGU6IHRydWUsXG4gIC8qKlxuICAgKiBEaXNhYmxlcyB0aGUgc2xpZGVyIGFuZCBwcmV2ZW50cyBldmVudCBsaXN0ZW5lcnMgZnJvbSBiZWluZyBhcHBsaWVkLiBEb3VibGUgY2hlY2tlZCBieSBKUyB3aXRoIGBkaXNhYmxlZENsYXNzYC5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICAvKipcbiAgICogQWxsb3dzIHRoZSB1c2Ugb2YgdHdvIGhhbmRsZXMuIERvdWJsZSBjaGVja2VkIGJ5IHRoZSBKUy4gQ2hhbmdlcyBzb21lIGxvZ2ljIGhhbmRsaW5nLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIGZhbHNlXG4gICAqL1xuICBkb3VibGVTaWRlZDogZmFsc2UsXG4gIC8qKlxuICAgKiBQb3RlbnRpYWwgZnV0dXJlIGZlYXR1cmUuXG4gICAqL1xuICAvLyBzdGVwczogMTAwLFxuICAvKipcbiAgICogTnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIHRoZSBwbHVnaW4gc2hvdWxkIGdvIHRvIGZvciBmbG9hdGluZyBwb2ludCBwcmVjaXNpb24uXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgMlxuICAgKi9cbiAgZGVjaW1hbDogMixcbiAgLyoqXG4gICAqIFRpbWUgZGVsYXkgZm9yIGRyYWdnZWQgZWxlbWVudHMuXG4gICAqL1xuICAvLyBkcmFnRGVsYXk6IDAsXG4gIC8qKlxuICAgKiBUaW1lLCBpbiBtcywgdG8gYW5pbWF0ZSB0aGUgbW92ZW1lbnQgb2YgYSBzbGlkZXIgaGFuZGxlIGlmIHVzZXIgY2xpY2tzL3RhcHMgb24gdGhlIGJhci4gTmVlZHMgdG8gYmUgbWFudWFsbHkgc2V0IGlmIHVwZGF0aW5nIHRoZSB0cmFuc2l0aW9uIHRpbWUgaW4gdGhlIFNhc3Mgc2V0dGluZ3MuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgMjAwXG4gICAqL1xuICBtb3ZlVGltZTogMjAwLC8vdXBkYXRlIHRoaXMgaWYgY2hhbmdpbmcgdGhlIHRyYW5zaXRpb24gdGltZSBpbiB0aGUgc2Fzc1xuICAvKipcbiAgICogQ2xhc3MgYXBwbGllZCB0byBkaXNhYmxlZCBzbGlkZXJzLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlICdkaXNhYmxlZCdcbiAgICovXG4gIGRpc2FibGVkQ2xhc3M6ICdkaXNhYmxlZCcsXG4gIC8qKlxuICAgKiBXaWxsIGludmVydCB0aGUgZGVmYXVsdCBsYXlvdXQgZm9yIGEgdmVydGljYWw8c3BhbiBkYXRhLXRvb2x0aXAgdGl0bGU9XCJ3aG8gd291bGQgZG8gdGhpcz8/P1wiPiA8L3NwYW4+c2xpZGVyLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIGZhbHNlXG4gICAqL1xuICBpbnZlcnRWZXJ0aWNhbDogZmFsc2UsXG4gIC8qKlxuICAgKiBNaWxsaXNlY29uZHMgYmVmb3JlIHRoZSBgY2hhbmdlZC56Zi1zbGlkZXJgIGV2ZW50IGlzIHRyaWdnZXJlZCBhZnRlciB2YWx1ZSBjaGFuZ2UuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgNTAwXG4gICAqL1xuICBjaGFuZ2VkRGVsYXk6IDUwMCxcbiAgLyoqXG4gICogQmFzZXZhbHVlIGZvciBub24tbGluZWFyIHNsaWRlcnNcbiAgKiBAb3B0aW9uXG4gICogQGV4YW1wbGUgNVxuICAqL1xuICBub25MaW5lYXJCYXNlOiA1LFxuICAvKipcbiAgKiBCYXNldmFsdWUgZm9yIG5vbi1saW5lYXIgc2xpZGVycywgcG9zc2libGUgdmFsdWVzIGFyZTogJ2xpbmVhcicsICdwb3cnICYgJ2xvZycuIFBvdyBhbmQgTG9nIHVzZSB0aGUgbm9uTGluZWFyQmFzZSBzZXR0aW5nLlxuICAqIEBvcHRpb25cbiAgKiBAZXhhbXBsZSAnbGluZWFyJ1xuICAqL1xuICBwb3NpdGlvblZhbHVlRnVuY3Rpb246ICdsaW5lYXInLFxufTtcblxuZnVuY3Rpb24gcGVyY2VudChmcmFjLCBudW0pIHtcbiAgcmV0dXJuIChmcmFjIC8gbnVtKTtcbn1cbmZ1bmN0aW9uIGFic1Bvc2l0aW9uKCRoYW5kbGUsIGRpciwgY2xpY2tQb3MsIHBhcmFtKSB7XG4gIHJldHVybiBNYXRoLmFicygoJGhhbmRsZS5wb3NpdGlvbigpW2Rpcl0gKyAoJGhhbmRsZVtwYXJhbV0oKSAvIDIpKSAtIGNsaWNrUG9zKTtcbn1cbmZ1bmN0aW9uIGJhc2VMb2coYmFzZSwgdmFsdWUpIHtcbiAgcmV0dXJuIE1hdGgubG9nKHZhbHVlKS9NYXRoLmxvZyhiYXNlKVxufVxuXG4vLyBXaW5kb3cgZXhwb3J0c1xuRm91bmRhdGlvbi5wbHVnaW4oU2xpZGVyLCAnU2xpZGVyJyk7XG5cbn0oalF1ZXJ5KTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4hZnVuY3Rpb24oJCkge1xuXG4vKipcbiAqIFN0aWNreSBtb2R1bGUuXG4gKiBAbW9kdWxlIGZvdW5kYXRpb24uc3RpY2t5XG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLnRyaWdnZXJzXG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLm1lZGlhUXVlcnlcbiAqL1xuXG5jbGFzcyBTdGlja3kge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBhIHN0aWNreSB0aGluZy5cbiAgICogQGNsYXNzXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSBlbGVtZW50IC0galF1ZXJ5IG9iamVjdCB0byBtYWtlIHN0aWNreS5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIG9iamVjdCBwYXNzZWQgd2hlbiBjcmVhdGluZyB0aGUgZWxlbWVudCBwcm9ncmFtbWF0aWNhbGx5LlxuICAgKi9cbiAgY29uc3RydWN0b3IoZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuJGVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBTdGlja3kuZGVmYXVsdHMsIHRoaXMuJGVsZW1lbnQuZGF0YSgpLCBvcHRpb25zKTtcblxuICAgIHRoaXMuX2luaXQoKTtcblxuICAgIEZvdW5kYXRpb24ucmVnaXN0ZXJQbHVnaW4odGhpcywgJ1N0aWNreScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBzdGlja3kgZWxlbWVudCBieSBhZGRpbmcgY2xhc3NlcywgZ2V0dGluZy9zZXR0aW5nIGRpbWVuc2lvbnMsIGJyZWFrcG9pbnRzIGFuZCBhdHRyaWJ1dGVzXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2luaXQoKSB7XG4gICAgdmFyICRwYXJlbnQgPSB0aGlzLiRlbGVtZW50LnBhcmVudCgnW2RhdGEtc3RpY2t5LWNvbnRhaW5lcl0nKSxcbiAgICAgICAgaWQgPSB0aGlzLiRlbGVtZW50WzBdLmlkIHx8IEZvdW5kYXRpb24uR2V0WW9EaWdpdHMoNiwgJ3N0aWNreScpLFxuICAgICAgICBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoISRwYXJlbnQubGVuZ3RoKSB7XG4gICAgICB0aGlzLndhc1dyYXBwZWQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLiRjb250YWluZXIgPSAkcGFyZW50Lmxlbmd0aCA/ICRwYXJlbnQgOiAkKHRoaXMub3B0aW9ucy5jb250YWluZXIpLndyYXBJbm5lcih0aGlzLiRlbGVtZW50KTtcbiAgICB0aGlzLiRjb250YWluZXIuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmNvbnRhaW5lckNsYXNzKTtcblxuICAgIHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3ModGhpcy5vcHRpb25zLnN0aWNreUNsYXNzKVxuICAgICAgICAgICAgICAgICAuYXR0cih7J2RhdGEtcmVzaXplJzogaWR9KTtcblxuICAgIHRoaXMuc2Nyb2xsQ291bnQgPSB0aGlzLm9wdGlvbnMuY2hlY2tFdmVyeTtcbiAgICB0aGlzLmlzU3R1Y2sgPSBmYWxzZTtcbiAgICAkKHdpbmRvdykub25lKCdsb2FkLnpmLnN0aWNreScsIGZ1bmN0aW9uKCl7XG4gICAgICAvL1dlIGNhbGN1bGF0ZSB0aGUgY29udGFpbmVyIGhlaWdodCB0byBoYXZlIGNvcnJlY3QgdmFsdWVzIGZvciBhbmNob3IgcG9pbnRzIG9mZnNldCBjYWxjdWxhdGlvbi5cbiAgICAgIF90aGlzLmNvbnRhaW5lckhlaWdodCA9IF90aGlzLiRlbGVtZW50LmNzcyhcImRpc3BsYXlcIikgPT0gXCJub25lXCIgPyAwIDogX3RoaXMuJGVsZW1lbnRbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgX3RoaXMuJGNvbnRhaW5lci5jc3MoJ2hlaWdodCcsIF90aGlzLmNvbnRhaW5lckhlaWdodCk7XG4gICAgICBfdGhpcy5lbGVtSGVpZ2h0ID0gX3RoaXMuY29udGFpbmVySGVpZ2h0O1xuICAgICAgaWYoX3RoaXMub3B0aW9ucy5hbmNob3IgIT09ICcnKXtcbiAgICAgICAgX3RoaXMuJGFuY2hvciA9ICQoJyMnICsgX3RoaXMub3B0aW9ucy5hbmNob3IpO1xuICAgICAgfWVsc2V7XG4gICAgICAgIF90aGlzLl9wYXJzZVBvaW50cygpO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5fc2V0U2l6ZXMoZnVuY3Rpb24oKXtcbiAgICAgICAgdmFyIHNjcm9sbCA9IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICAgICAgX3RoaXMuX2NhbGMoZmFsc2UsIHNjcm9sbCk7XG4gICAgICAgIC8vVW5zdGljayB0aGUgZWxlbWVudCB3aWxsIGVuc3VyZSB0aGF0IHByb3BlciBjbGFzc2VzIGFyZSBzZXQuXG4gICAgICAgIGlmICghX3RoaXMuaXNTdHVjaykge1xuICAgICAgICAgIF90aGlzLl9yZW1vdmVTdGlja3koKHNjcm9sbCA+PSBfdGhpcy50b3BQb2ludCkgPyBmYWxzZSA6IHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF90aGlzLl9ldmVudHMoaWQuc3BsaXQoJy0nKS5yZXZlcnNlKCkuam9pbignLScpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB1c2luZyBtdWx0aXBsZSBlbGVtZW50cyBhcyBhbmNob3JzLCBjYWxjdWxhdGVzIHRoZSB0b3AgYW5kIGJvdHRvbSBwaXhlbCB2YWx1ZXMgdGhlIHN0aWNreSB0aGluZyBzaG91bGQgc3RpY2sgYW5kIHVuc3RpY2sgb24uXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3BhcnNlUG9pbnRzKCkge1xuICAgIHZhciB0b3AgPSB0aGlzLm9wdGlvbnMudG9wQW5jaG9yID09IFwiXCIgPyAxIDogdGhpcy5vcHRpb25zLnRvcEFuY2hvcixcbiAgICAgICAgYnRtID0gdGhpcy5vcHRpb25zLmJ0bUFuY2hvcj09IFwiXCIgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0IDogdGhpcy5vcHRpb25zLmJ0bUFuY2hvcixcbiAgICAgICAgcHRzID0gW3RvcCwgYnRtXSxcbiAgICAgICAgYnJlYWtzID0ge307XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHB0cy5sZW5ndGg7IGkgPCBsZW4gJiYgcHRzW2ldOyBpKyspIHtcbiAgICAgIHZhciBwdDtcbiAgICAgIGlmICh0eXBlb2YgcHRzW2ldID09PSAnbnVtYmVyJykge1xuICAgICAgICBwdCA9IHB0c1tpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwbGFjZSA9IHB0c1tpXS5zcGxpdCgnOicpLFxuICAgICAgICAgICAgYW5jaG9yID0gJChgIyR7cGxhY2VbMF19YCk7XG5cbiAgICAgICAgcHQgPSBhbmNob3Iub2Zmc2V0KCkudG9wO1xuICAgICAgICBpZiAocGxhY2VbMV0gJiYgcGxhY2VbMV0udG9Mb3dlckNhc2UoKSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICBwdCArPSBhbmNob3JbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVha3NbaV0gPSBwdDtcbiAgICB9XG5cblxuICAgIHRoaXMucG9pbnRzID0gYnJlYWtzO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgc2Nyb2xsaW5nIGVsZW1lbnQuXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBpZCAtIHBzdWVkby1yYW5kb20gaWQgZm9yIHVuaXF1ZSBzY3JvbGwgZXZlbnQgbGlzdGVuZXIuXG4gICAqL1xuICBfZXZlbnRzKGlkKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcyxcbiAgICAgICAgc2Nyb2xsTGlzdGVuZXIgPSB0aGlzLnNjcm9sbExpc3RlbmVyID0gYHNjcm9sbC56Zi4ke2lkfWA7XG4gICAgaWYgKHRoaXMuaXNPbikgeyByZXR1cm47IH1cbiAgICBpZiAodGhpcy5jYW5TdGljaykge1xuICAgICAgdGhpcy5pc09uID0gdHJ1ZTtcbiAgICAgICQod2luZG93KS5vZmYoc2Nyb2xsTGlzdGVuZXIpXG4gICAgICAgICAgICAgICAub24oc2Nyb2xsTGlzdGVuZXIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgaWYgKF90aGlzLnNjcm9sbENvdW50ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgX3RoaXMuc2Nyb2xsQ291bnQgPSBfdGhpcy5vcHRpb25zLmNoZWNrRXZlcnk7XG4gICAgICAgICAgICAgICAgICAgX3RoaXMuX3NldFNpemVzKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX2NhbGMoZmFsc2UsIHdpbmRvdy5wYWdlWU9mZnNldCk7XG4gICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgX3RoaXMuc2Nyb2xsQ291bnQtLTtcbiAgICAgICAgICAgICAgICAgICBfdGhpcy5fY2FsYyhmYWxzZSwgd2luZG93LnBhZ2VZT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLiRlbGVtZW50Lm9mZigncmVzaXplbWUuemYudHJpZ2dlcicpXG4gICAgICAgICAgICAgICAgIC5vbigncmVzaXplbWUuemYudHJpZ2dlcicsIGZ1bmN0aW9uKGUsIGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICBfdGhpcy5fc2V0U2l6ZXMoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl9jYWxjKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgaWYgKF90aGlzLmNhblN0aWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfdGhpcy5pc09uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fZXZlbnRzKGlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoX3RoaXMuaXNPbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl9wYXVzZUxpc3RlbmVycyhzY3JvbGxMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgZXZlbnQgaGFuZGxlcnMgZm9yIHNjcm9sbCBhbmQgY2hhbmdlIGV2ZW50cyBvbiBhbmNob3IuXG4gICAqIEBmaXJlcyBTdGlja3kjcGF1c2VcbiAgICogQHBhcmFtIHtTdHJpbmd9IHNjcm9sbExpc3RlbmVyIC0gdW5pcXVlLCBuYW1lc3BhY2VkIHNjcm9sbCBsaXN0ZW5lciBhdHRhY2hlZCB0byBgd2luZG93YFxuICAgKi9cbiAgX3BhdXNlTGlzdGVuZXJzKHNjcm9sbExpc3RlbmVyKSB7XG4gICAgdGhpcy5pc09uID0gZmFsc2U7XG4gICAgJCh3aW5kb3cpLm9mZihzY3JvbGxMaXN0ZW5lcik7XG5cbiAgICAvKipcbiAgICAgKiBGaXJlcyB3aGVuIHRoZSBwbHVnaW4gaXMgcGF1c2VkIGR1ZSB0byByZXNpemUgZXZlbnQgc2hyaW5raW5nIHRoZSB2aWV3LlxuICAgICAqIEBldmVudCBTdGlja3kjcGF1c2VcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ3BhdXNlLnpmLnN0aWNreScpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbiBldmVyeSBgc2Nyb2xsYCBldmVudCBhbmQgb24gYF9pbml0YFxuICAgKiBmaXJlcyBmdW5jdGlvbnMgYmFzZWQgb24gYm9vbGVhbnMgYW5kIGNhY2hlZCB2YWx1ZXNcbiAgICogQHBhcmFtIHtCb29sZWFufSBjaGVja1NpemVzIC0gdHJ1ZSBpZiBwbHVnaW4gc2hvdWxkIHJlY2FsY3VsYXRlIHNpemVzIGFuZCBicmVha3BvaW50cy5cbiAgICogQHBhcmFtIHtOdW1iZXJ9IHNjcm9sbCAtIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHBhc3NlZCBmcm9tIHNjcm9sbCBldmVudCBjYiBmdW5jdGlvbi4gSWYgbm90IHBhc3NlZCwgZGVmYXVsdHMgdG8gYHdpbmRvdy5wYWdlWU9mZnNldGAuXG4gICAqL1xuICBfY2FsYyhjaGVja1NpemVzLCBzY3JvbGwpIHtcbiAgICBpZiAoY2hlY2tTaXplcykgeyB0aGlzLl9zZXRTaXplcygpOyB9XG5cbiAgICBpZiAoIXRoaXMuY2FuU3RpY2spIHtcbiAgICAgIGlmICh0aGlzLmlzU3R1Y2spIHtcbiAgICAgICAgdGhpcy5fcmVtb3ZlU3RpY2t5KHRydWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghc2Nyb2xsKSB7IHNjcm9sbCA9IHdpbmRvdy5wYWdlWU9mZnNldDsgfVxuXG4gICAgaWYgKHNjcm9sbCA+PSB0aGlzLnRvcFBvaW50KSB7XG4gICAgICBpZiAoc2Nyb2xsIDw9IHRoaXMuYm90dG9tUG9pbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzU3R1Y2spIHtcbiAgICAgICAgICB0aGlzLl9zZXRTdGlja3koKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdHVjaykge1xuICAgICAgICAgIHRoaXMuX3JlbW92ZVN0aWNreShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaXNTdHVjaykge1xuICAgICAgICB0aGlzLl9yZW1vdmVTdGlja3kodHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhdXNlcyB0aGUgJGVsZW1lbnQgdG8gYmVjb21lIHN0dWNrLlxuICAgKiBBZGRzIGBwb3NpdGlvbjogZml4ZWQ7YCwgYW5kIGhlbHBlciBjbGFzc2VzLlxuICAgKiBAZmlyZXMgU3RpY2t5I3N0dWNrdG9cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfc2V0U3RpY2t5KCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXMsXG4gICAgICAgIHN0aWNrVG8gPSB0aGlzLm9wdGlvbnMuc3RpY2tUbyxcbiAgICAgICAgbXJnbiA9IHN0aWNrVG8gPT09ICd0b3AnID8gJ21hcmdpblRvcCcgOiAnbWFyZ2luQm90dG9tJyxcbiAgICAgICAgbm90U3R1Y2tUbyA9IHN0aWNrVG8gPT09ICd0b3AnID8gJ2JvdHRvbScgOiAndG9wJyxcbiAgICAgICAgY3NzID0ge307XG5cbiAgICBjc3NbbXJnbl0gPSBgJHt0aGlzLm9wdGlvbnNbbXJnbl19ZW1gO1xuICAgIGNzc1tzdGlja1RvXSA9IDA7XG4gICAgY3NzW25vdFN0dWNrVG9dID0gJ2F1dG8nO1xuICAgIHRoaXMuaXNTdHVjayA9IHRydWU7XG4gICAgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhgaXMtYW5jaG9yZWQgaXMtYXQtJHtub3RTdHVja1RvfWApXG4gICAgICAgICAgICAgICAgIC5hZGRDbGFzcyhgaXMtc3R1Y2sgaXMtYXQtJHtzdGlja1RvfWApXG4gICAgICAgICAgICAgICAgIC5jc3MoY3NzKVxuICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICogRmlyZXMgd2hlbiB0aGUgJGVsZW1lbnQgaGFzIGJlY29tZSBgcG9zaXRpb246IGZpeGVkO2BcbiAgICAgICAgICAgICAgICAgICogTmFtZXNwYWNlZCB0byBgdG9wYCBvciBgYm90dG9tYCwgZS5nLiBgc3RpY2t5LnpmLnN0dWNrdG86dG9wYFxuICAgICAgICAgICAgICAgICAgKiBAZXZlbnQgU3RpY2t5I3N0dWNrdG9cbiAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgIC50cmlnZ2VyKGBzdGlja3kuemYuc3R1Y2t0bzoke3N0aWNrVG99YCk7XG4gICAgdGhpcy4kZWxlbWVudC5vbihcInRyYW5zaXRpb25lbmQgd2Via2l0VHJhbnNpdGlvbkVuZCBvVHJhbnNpdGlvbkVuZCBvdHJhbnNpdGlvbmVuZCBNU1RyYW5zaXRpb25FbmRcIiwgZnVuY3Rpb24oKSB7XG4gICAgICBfdGhpcy5fc2V0U2l6ZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYXVzZXMgdGhlICRlbGVtZW50IHRvIGJlY29tZSB1bnN0dWNrLlxuICAgKiBSZW1vdmVzIGBwb3NpdGlvbjogZml4ZWQ7YCwgYW5kIGhlbHBlciBjbGFzc2VzLlxuICAgKiBBZGRzIG90aGVyIGhlbHBlciBjbGFzc2VzLlxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IGlzVG9wIC0gdGVsbHMgdGhlIGZ1bmN0aW9uIGlmIHRoZSAkZWxlbWVudCBzaG91bGQgYW5jaG9yIHRvIHRoZSB0b3Agb3IgYm90dG9tIG9mIGl0cyAkYW5jaG9yIGVsZW1lbnQuXG4gICAqIEBmaXJlcyBTdGlja3kjdW5zdHVja2Zyb21cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9yZW1vdmVTdGlja3koaXNUb3ApIHtcbiAgICB2YXIgc3RpY2tUbyA9IHRoaXMub3B0aW9ucy5zdGlja1RvLFxuICAgICAgICBzdGlja1RvVG9wID0gc3RpY2tUbyA9PT0gJ3RvcCcsXG4gICAgICAgIGNzcyA9IHt9LFxuICAgICAgICBhbmNob3JQdCA9ICh0aGlzLnBvaW50cyA/IHRoaXMucG9pbnRzWzFdIC0gdGhpcy5wb2ludHNbMF0gOiB0aGlzLmFuY2hvckhlaWdodCkgLSB0aGlzLmVsZW1IZWlnaHQsXG4gICAgICAgIG1yZ24gPSBzdGlja1RvVG9wID8gJ21hcmdpblRvcCcgOiAnbWFyZ2luQm90dG9tJyxcbiAgICAgICAgbm90U3R1Y2tUbyA9IHN0aWNrVG9Ub3AgPyAnYm90dG9tJyA6ICd0b3AnLFxuICAgICAgICB0b3BPckJvdHRvbSA9IGlzVG9wID8gJ3RvcCcgOiAnYm90dG9tJztcblxuICAgIGNzc1ttcmduXSA9IDA7XG5cbiAgICBjc3NbJ2JvdHRvbSddID0gJ2F1dG8nO1xuICAgIGlmKGlzVG9wKSB7XG4gICAgICBjc3NbJ3RvcCddID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY3NzWyd0b3AnXSA9IGFuY2hvclB0O1xuICAgIH1cblxuICAgIHRoaXMuaXNTdHVjayA9IGZhbHNlO1xuICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoYGlzLXN0dWNrIGlzLWF0LSR7c3RpY2tUb31gKVxuICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoYGlzLWFuY2hvcmVkIGlzLWF0LSR7dG9wT3JCb3R0b219YClcbiAgICAgICAgICAgICAgICAgLmNzcyhjc3MpXG4gICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgKiBGaXJlcyB3aGVuIHRoZSAkZWxlbWVudCBoYXMgYmVjb21lIGFuY2hvcmVkLlxuICAgICAgICAgICAgICAgICAgKiBOYW1lc3BhY2VkIHRvIGB0b3BgIG9yIGBib3R0b21gLCBlLmcuIGBzdGlja3kuemYudW5zdHVja2Zyb206Ym90dG9tYFxuICAgICAgICAgICAgICAgICAgKiBAZXZlbnQgU3RpY2t5I3Vuc3R1Y2tmcm9tXG4gICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAudHJpZ2dlcihgc3RpY2t5LnpmLnVuc3R1Y2tmcm9tOiR7dG9wT3JCb3R0b219YCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgJGVsZW1lbnQgYW5kICRjb250YWluZXIgc2l6ZXMgZm9yIHBsdWdpbi5cbiAgICogQ2FsbHMgYF9zZXRCcmVha1BvaW50c2AuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNiIC0gb3B0aW9uYWwgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZmlyZSBvbiBjb21wbGV0aW9uIG9mIGBfc2V0QnJlYWtQb2ludHNgLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3NldFNpemVzKGNiKSB7XG4gICAgdGhpcy5jYW5TdGljayA9IEZvdW5kYXRpb24uTWVkaWFRdWVyeS5pcyh0aGlzLm9wdGlvbnMuc3RpY2t5T24pO1xuICAgIGlmICghdGhpcy5jYW5TdGljaykge1xuICAgICAgaWYgKGNiICYmIHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykgeyBjYigpOyB9XG4gICAgfVxuICAgIHZhciBfdGhpcyA9IHRoaXMsXG4gICAgICAgIG5ld0VsZW1XaWR0aCA9IHRoaXMuJGNvbnRhaW5lclswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCxcbiAgICAgICAgY29tcCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuJGNvbnRhaW5lclswXSksXG4gICAgICAgIHBkbmdsID0gcGFyc2VJbnQoY29tcFsncGFkZGluZy1sZWZ0J10sIDEwKSxcbiAgICAgICAgcGRuZ3IgPSBwYXJzZUludChjb21wWydwYWRkaW5nLXJpZ2h0J10sIDEwKTtcblxuICAgIGlmICh0aGlzLiRhbmNob3IgJiYgdGhpcy4kYW5jaG9yLmxlbmd0aCkge1xuICAgICAgdGhpcy5hbmNob3JIZWlnaHQgPSB0aGlzLiRhbmNob3JbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9wYXJzZVBvaW50cygpO1xuICAgIH1cblxuICAgIHRoaXMuJGVsZW1lbnQuY3NzKHtcbiAgICAgICdtYXgtd2lkdGgnOiBgJHtuZXdFbGVtV2lkdGggLSBwZG5nbCAtIHBkbmdyfXB4YFxuICAgIH0pO1xuXG4gICAgdmFyIG5ld0NvbnRhaW5lckhlaWdodCA9IHRoaXMuJGVsZW1lbnRbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0IHx8IHRoaXMuY29udGFpbmVySGVpZ2h0O1xuICAgIGlmICh0aGlzLiRlbGVtZW50LmNzcyhcImRpc3BsYXlcIikgPT0gXCJub25lXCIpIHtcbiAgICAgIG5ld0NvbnRhaW5lckhlaWdodCA9IDA7XG4gICAgfVxuICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gbmV3Q29udGFpbmVySGVpZ2h0O1xuICAgIHRoaXMuJGNvbnRhaW5lci5jc3Moe1xuICAgICAgaGVpZ2h0OiBuZXdDb250YWluZXJIZWlnaHRcbiAgICB9KTtcbiAgICB0aGlzLmVsZW1IZWlnaHQgPSBuZXdDb250YWluZXJIZWlnaHQ7XG5cbiAgICBpZiAoIXRoaXMuaXNTdHVjaykge1xuICAgICAgaWYgKHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoJ2lzLWF0LWJvdHRvbScpKSB7XG4gICAgICAgIHZhciBhbmNob3JQdCA9ICh0aGlzLnBvaW50cyA/IHRoaXMucG9pbnRzWzFdIC0gdGhpcy4kY29udGFpbmVyLm9mZnNldCgpLnRvcCA6IHRoaXMuYW5jaG9ySGVpZ2h0KSAtIHRoaXMuZWxlbUhlaWdodDtcbiAgICAgICAgdGhpcy4kZWxlbWVudC5jc3MoJ3RvcCcsIGFuY2hvclB0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9zZXRCcmVha1BvaW50cyhuZXdDb250YWluZXJIZWlnaHQsIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKGNiICYmIHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykgeyBjYigpOyB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdXBwZXIgYW5kIGxvd2VyIGJyZWFrcG9pbnRzIGZvciB0aGUgZWxlbWVudCB0byBiZWNvbWUgc3RpY2t5L3Vuc3RpY2t5LlxuICAgKiBAcGFyYW0ge051bWJlcn0gZWxlbUhlaWdodCAtIHB4IHZhbHVlIGZvciBzdGlja3kuJGVsZW1lbnQgaGVpZ2h0LCBjYWxjdWxhdGVkIGJ5IGBfc2V0U2l6ZXNgLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYiAtIG9wdGlvbmFsIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBvbiBjb21wbGV0aW9uLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3NldEJyZWFrUG9pbnRzKGVsZW1IZWlnaHQsIGNiKSB7XG4gICAgaWYgKCF0aGlzLmNhblN0aWNrKSB7XG4gICAgICBpZiAoY2IgJiYgdHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7IGNiKCk7IH1cbiAgICAgIGVsc2UgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG4gICAgdmFyIG1Ub3AgPSBlbUNhbGModGhpcy5vcHRpb25zLm1hcmdpblRvcCksXG4gICAgICAgIG1CdG0gPSBlbUNhbGModGhpcy5vcHRpb25zLm1hcmdpbkJvdHRvbSksXG4gICAgICAgIHRvcFBvaW50ID0gdGhpcy5wb2ludHMgPyB0aGlzLnBvaW50c1swXSA6IHRoaXMuJGFuY2hvci5vZmZzZXQoKS50b3AsXG4gICAgICAgIGJvdHRvbVBvaW50ID0gdGhpcy5wb2ludHMgPyB0aGlzLnBvaW50c1sxXSA6IHRvcFBvaW50ICsgdGhpcy5hbmNob3JIZWlnaHQsXG4gICAgICAgIC8vIHRvcFBvaW50ID0gdGhpcy4kYW5jaG9yLm9mZnNldCgpLnRvcCB8fCB0aGlzLnBvaW50c1swXSxcbiAgICAgICAgLy8gYm90dG9tUG9pbnQgPSB0b3BQb2ludCArIHRoaXMuYW5jaG9ySGVpZ2h0IHx8IHRoaXMucG9pbnRzWzFdLFxuICAgICAgICB3aW5IZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnN0aWNrVG8gPT09ICd0b3AnKSB7XG4gICAgICB0b3BQb2ludCAtPSBtVG9wO1xuICAgICAgYm90dG9tUG9pbnQgLT0gKGVsZW1IZWlnaHQgKyBtVG9wKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGlja1RvID09PSAnYm90dG9tJykge1xuICAgICAgdG9wUG9pbnQgLT0gKHdpbkhlaWdodCAtIChlbGVtSGVpZ2h0ICsgbUJ0bSkpO1xuICAgICAgYm90dG9tUG9pbnQgLT0gKHdpbkhlaWdodCAtIG1CdG0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvL3RoaXMgd291bGQgYmUgdGhlIHN0aWNrVG86IGJvdGggb3B0aW9uLi4uIHRyaWNreVxuICAgIH1cblxuICAgIHRoaXMudG9wUG9pbnQgPSB0b3BQb2ludDtcbiAgICB0aGlzLmJvdHRvbVBvaW50ID0gYm90dG9tUG9pbnQ7XG5cbiAgICBpZiAoY2IgJiYgdHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7IGNiKCk7IH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgY3VycmVudCBzdGlja3kgZWxlbWVudC5cbiAgICogUmVzZXRzIHRoZSBlbGVtZW50IHRvIHRoZSB0b3AgcG9zaXRpb24gZmlyc3QuXG4gICAqIFJlbW92ZXMgZXZlbnQgbGlzdGVuZXJzLCBKUy1hZGRlZCBjc3MgcHJvcGVydGllcyBhbmQgY2xhc3NlcywgYW5kIHVud3JhcHMgdGhlICRlbGVtZW50IGlmIHRoZSBKUyBhZGRlZCB0aGUgJGNvbnRhaW5lci5cbiAgICogQGZ1bmN0aW9uXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuX3JlbW92ZVN0aWNreSh0cnVlKTtcblxuICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoYCR7dGhpcy5vcHRpb25zLnN0aWNreUNsYXNzfSBpcy1hbmNob3JlZCBpcy1hdC10b3BgKVxuICAgICAgICAgICAgICAgICAuY3NzKHtcbiAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgIHRvcDogJycsXG4gICAgICAgICAgICAgICAgICAgYm90dG9tOiAnJyxcbiAgICAgICAgICAgICAgICAgICAnbWF4LXdpZHRoJzogJydcbiAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgLm9mZigncmVzaXplbWUuemYudHJpZ2dlcicpO1xuICAgIGlmICh0aGlzLiRhbmNob3IgJiYgdGhpcy4kYW5jaG9yLmxlbmd0aCkge1xuICAgICAgdGhpcy4kYW5jaG9yLm9mZignY2hhbmdlLnpmLnN0aWNreScpO1xuICAgIH1cbiAgICAkKHdpbmRvdykub2ZmKHRoaXMuc2Nyb2xsTGlzdGVuZXIpO1xuXG4gICAgaWYgKHRoaXMud2FzV3JhcHBlZCkge1xuICAgICAgdGhpcy4kZWxlbWVudC51bndyYXAoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4kY29udGFpbmVyLnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5jb250YWluZXJDbGFzcylcbiAgICAgICAgICAgICAgICAgICAgIC5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcnXG4gICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICB9XG4gICAgRm91bmRhdGlvbi51bnJlZ2lzdGVyUGx1Z2luKHRoaXMpO1xuICB9XG59XG5cblN0aWNreS5kZWZhdWx0cyA9IHtcbiAgLyoqXG4gICAqIEN1c3RvbWl6YWJsZSBjb250YWluZXIgdGVtcGxhdGUuIEFkZCB5b3VyIG93biBjbGFzc2VzIGZvciBzdHlsaW5nIGFuZCBzaXppbmcuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgJyZsdDtkaXYgZGF0YS1zdGlja3ktY29udGFpbmVyIGNsYXNzPVwic21hbGwtNiBjb2x1bW5zXCImZ3Q7Jmx0Oy9kaXYmZ3Q7J1xuICAgKi9cbiAgY29udGFpbmVyOiAnPGRpdiBkYXRhLXN0aWNreS1jb250YWluZXI+PC9kaXY+JyxcbiAgLyoqXG4gICAqIExvY2F0aW9uIGluIHRoZSB2aWV3IHRoZSBlbGVtZW50IHN0aWNrcyB0by5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAndG9wJ1xuICAgKi9cbiAgc3RpY2tUbzogJ3RvcCcsXG4gIC8qKlxuICAgKiBJZiBhbmNob3JlZCB0byBhIHNpbmdsZSBlbGVtZW50LCB0aGUgaWQgb2YgdGhhdCBlbGVtZW50LlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlICdleGFtcGxlSWQnXG4gICAqL1xuICBhbmNob3I6ICcnLFxuICAvKipcbiAgICogSWYgdXNpbmcgbW9yZSB0aGFuIG9uZSBlbGVtZW50IGFzIGFuY2hvciBwb2ludHMsIHRoZSBpZCBvZiB0aGUgdG9wIGFuY2hvci5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAnZXhhbXBsZUlkOnRvcCdcbiAgICovXG4gIHRvcEFuY2hvcjogJycsXG4gIC8qKlxuICAgKiBJZiB1c2luZyBtb3JlIHRoYW4gb25lIGVsZW1lbnQgYXMgYW5jaG9yIHBvaW50cywgdGhlIGlkIG9mIHRoZSBib3R0b20gYW5jaG9yLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlICdleGFtcGxlSWQ6Ym90dG9tJ1xuICAgKi9cbiAgYnRtQW5jaG9yOiAnJyxcbiAgLyoqXG4gICAqIE1hcmdpbiwgaW4gYGVtYCdzIHRvIGFwcGx5IHRvIHRoZSB0b3Agb2YgdGhlIGVsZW1lbnQgd2hlbiBpdCBiZWNvbWVzIHN0aWNreS5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAxXG4gICAqL1xuICBtYXJnaW5Ub3A6IDEsXG4gIC8qKlxuICAgKiBNYXJnaW4sIGluIGBlbWAncyB0byBhcHBseSB0byB0aGUgYm90dG9tIG9mIHRoZSBlbGVtZW50IHdoZW4gaXQgYmVjb21lcyBzdGlja3kuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgMVxuICAgKi9cbiAgbWFyZ2luQm90dG9tOiAxLFxuICAvKipcbiAgICogQnJlYWtwb2ludCBzdHJpbmcgdGhhdCBpcyB0aGUgbWluaW11bSBzY3JlZW4gc2l6ZSBhbiBlbGVtZW50IHNob3VsZCBiZWNvbWUgc3RpY2t5LlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlICdtZWRpdW0nXG4gICAqL1xuICBzdGlja3lPbjogJ21lZGl1bScsXG4gIC8qKlxuICAgKiBDbGFzcyBhcHBsaWVkIHRvIHN0aWNreSBlbGVtZW50LCBhbmQgcmVtb3ZlZCBvbiBkZXN0cnVjdGlvbi4gRm91bmRhdGlvbiBkZWZhdWx0cyB0byBgc3RpY2t5YC5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAnc3RpY2t5J1xuICAgKi9cbiAgc3RpY2t5Q2xhc3M6ICdzdGlja3knLFxuICAvKipcbiAgICogQ2xhc3MgYXBwbGllZCB0byBzdGlja3kgY29udGFpbmVyLiBGb3VuZGF0aW9uIGRlZmF1bHRzIHRvIGBzdGlja3ktY29udGFpbmVyYC5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAnc3RpY2t5LWNvbnRhaW5lcidcbiAgICovXG4gIGNvbnRhaW5lckNsYXNzOiAnc3RpY2t5LWNvbnRhaW5lcicsXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygc2Nyb2xsIGV2ZW50cyBiZXR3ZWVuIHRoZSBwbHVnaW4ncyByZWNhbGN1bGF0aW5nIHN0aWNreSBwb2ludHMuIFNldHRpbmcgaXQgdG8gYDBgIHdpbGwgY2F1c2UgaXQgdG8gcmVjYWxjIGV2ZXJ5IHNjcm9sbCBldmVudCwgc2V0dGluZyBpdCB0byBgLTFgIHdpbGwgcHJldmVudCByZWNhbGMgb24gc2Nyb2xsLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIDUwXG4gICAqL1xuICBjaGVja0V2ZXJ5OiAtMVxufTtcblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gY2FsY3VsYXRlIGVtIHZhbHVlc1xuICogQHBhcmFtIE51bWJlciB7ZW19IC0gbnVtYmVyIG9mIGVtJ3MgdG8gY2FsY3VsYXRlIGludG8gcGl4ZWxzXG4gKi9cbmZ1bmN0aW9uIGVtQ2FsYyhlbSkge1xuICByZXR1cm4gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSwgbnVsbCkuZm9udFNpemUsIDEwKSAqIGVtO1xufVxuXG4vLyBXaW5kb3cgZXhwb3J0c1xuRm91bmRhdGlvbi5wbHVnaW4oU3RpY2t5LCAnU3RpY2t5Jyk7XG5cbn0oalF1ZXJ5KTtcbiIsIid1c2Ugc3RyaWN0JztcblxuIWZ1bmN0aW9uKCQpIHtcblxuLyoqXG4gKiBUYWJzIG1vZHVsZS5cbiAqIEBtb2R1bGUgZm91bmRhdGlvbi50YWJzXG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLmtleWJvYXJkXG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLnRpbWVyQW5kSW1hZ2VMb2FkZXIgaWYgdGFicyBjb250YWluIGltYWdlc1xuICovXG5cbmNsYXNzIFRhYnMge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0YWJzLlxuICAgKiBAY2xhc3NcbiAgICogQGZpcmVzIFRhYnMjaW5pdFxuICAgKiBAcGFyYW0ge2pRdWVyeX0gZWxlbWVudCAtIGpRdWVyeSBvYmplY3QgdG8gbWFrZSBpbnRvIHRhYnMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gT3ZlcnJpZGVzIHRvIHRoZSBkZWZhdWx0IHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRlbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgVGFicy5kZWZhdWx0cywgdGhpcy4kZWxlbWVudC5kYXRhKCksIG9wdGlvbnMpO1xuXG4gICAgdGhpcy5faW5pdCgpO1xuICAgIEZvdW5kYXRpb24ucmVnaXN0ZXJQbHVnaW4odGhpcywgJ1RhYnMnKTtcbiAgICBGb3VuZGF0aW9uLktleWJvYXJkLnJlZ2lzdGVyKCdUYWJzJywge1xuICAgICAgJ0VOVEVSJzogJ29wZW4nLFxuICAgICAgJ1NQQUNFJzogJ29wZW4nLFxuICAgICAgJ0FSUk9XX1JJR0hUJzogJ25leHQnLFxuICAgICAgJ0FSUk9XX1VQJzogJ3ByZXZpb3VzJyxcbiAgICAgICdBUlJPV19ET1dOJzogJ25leHQnLFxuICAgICAgJ0FSUk9XX0xFRlQnOiAncHJldmlvdXMnXG4gICAgICAvLyAnVEFCJzogJ25leHQnLFxuICAgICAgLy8gJ1NISUZUX1RBQic6ICdwcmV2aW91cydcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgdGFicyBieSBzaG93aW5nIGFuZCBmb2N1c2luZyAoaWYgYXV0b0ZvY3VzPXRydWUpIHRoZSBwcmVzZXQgYWN0aXZlIHRhYi5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9pbml0KCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLiRlbGVtZW50LmF0dHIoeydyb2xlJzogJ3RhYmxpc3QnfSk7XG4gICAgdGhpcy4kdGFiVGl0bGVzID0gdGhpcy4kZWxlbWVudC5maW5kKGAuJHt0aGlzLm9wdGlvbnMubGlua0NsYXNzfWApO1xuICAgIHRoaXMuJHRhYkNvbnRlbnQgPSAkKGBbZGF0YS10YWJzLWNvbnRlbnQ9XCIke3RoaXMuJGVsZW1lbnRbMF0uaWR9XCJdYCk7XG5cbiAgICB0aGlzLiR0YWJUaXRsZXMuZWFjaChmdW5jdGlvbigpe1xuICAgICAgdmFyICRlbGVtID0gJCh0aGlzKSxcbiAgICAgICAgICAkbGluayA9ICRlbGVtLmZpbmQoJ2EnKSxcbiAgICAgICAgICBpc0FjdGl2ZSA9ICRlbGVtLmhhc0NsYXNzKGAke190aGlzLm9wdGlvbnMubGlua0FjdGl2ZUNsYXNzfWApLFxuICAgICAgICAgIGhhc2ggPSAkbGlua1swXS5oYXNoLnNsaWNlKDEpLFxuICAgICAgICAgIGxpbmtJZCA9ICRsaW5rWzBdLmlkID8gJGxpbmtbMF0uaWQgOiBgJHtoYXNofS1sYWJlbGAsXG4gICAgICAgICAgJHRhYkNvbnRlbnQgPSAkKGAjJHtoYXNofWApO1xuXG4gICAgICAkZWxlbS5hdHRyKHsncm9sZSc6ICdwcmVzZW50YXRpb24nfSk7XG5cbiAgICAgICRsaW5rLmF0dHIoe1xuICAgICAgICAncm9sZSc6ICd0YWInLFxuICAgICAgICAnYXJpYS1jb250cm9scyc6IGhhc2gsXG4gICAgICAgICdhcmlhLXNlbGVjdGVkJzogaXNBY3RpdmUsXG4gICAgICAgICdpZCc6IGxpbmtJZFxuICAgICAgfSk7XG5cbiAgICAgICR0YWJDb250ZW50LmF0dHIoe1xuICAgICAgICAncm9sZSc6ICd0YWJwYW5lbCcsXG4gICAgICAgICdhcmlhLWhpZGRlbic6ICFpc0FjdGl2ZSxcbiAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGxpbmtJZFxuICAgICAgfSk7XG5cbiAgICAgIGlmKGlzQWN0aXZlICYmIF90aGlzLm9wdGlvbnMuYXV0b0ZvY3VzKXtcbiAgICAgICAgJCh3aW5kb3cpLmxvYWQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgJCgnaHRtbCwgYm9keScpLmFuaW1hdGUoeyBzY3JvbGxUb3A6ICRlbGVtLm9mZnNldCgpLnRvcCB9LCBfdGhpcy5vcHRpb25zLmRlZXBMaW5rU211ZGdlRGVsYXksICgpID0+IHtcbiAgICAgICAgICAgICRsaW5rLmZvY3VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvL3VzZSBicm93c2VyIHRvIG9wZW4gYSB0YWIsIGlmIGl0IGV4aXN0cyBpbiB0aGlzIHRhYnNldFxuICAgICAgaWYgKF90aGlzLm9wdGlvbnMuZGVlcExpbmspIHtcbiAgICAgICAgdmFyIGFuY2hvciA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuICAgICAgICAvL25lZWQgYSBoYXNoIGFuZCBhIHJlbGV2YW50IGFuY2hvciBpbiB0aGlzIHRhYnNldFxuICAgICAgICBpZihhbmNob3IubGVuZ3RoKSB7XG4gICAgICAgICAgdmFyICRsaW5rID0gJGVsZW0uZmluZCgnW2hyZWY9XCInK2FuY2hvcisnXCJdJyk7XG4gICAgICAgICAgaWYgKCRsaW5rLmxlbmd0aCkge1xuICAgICAgICAgICAgX3RoaXMuc2VsZWN0VGFiKCQoYW5jaG9yKSk7XG5cbiAgICAgICAgICAgIC8vcm9sbCB1cCBhIGxpdHRsZSB0byBzaG93IHRoZSB0aXRsZXNcbiAgICAgICAgICAgIGlmIChfdGhpcy5vcHRpb25zLmRlZXBMaW5rU211ZGdlKSB7XG4gICAgICAgICAgICAgICQod2luZG93KS5sb2FkKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBvZmZzZXQgPSAkZWxlbS5vZmZzZXQoKTtcbiAgICAgICAgICAgICAgICAkKCdodG1sLCBib2R5JykuYW5pbWF0ZSh7IHNjcm9sbFRvcDogb2Zmc2V0LnRvcCB9LCBfdGhpcy5vcHRpb25zLmRlZXBMaW5rU211ZGdlRGVsYXkpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICogRmlyZXMgd2hlbiB0aGUgenBsdWdpbiBoYXMgZGVlcGxpbmtlZCBhdCBwYWdlbG9hZFxuICAgICAgICAgICAgICAqIEBldmVudCBUYWJzI2RlZXBsaW5rXG4gICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgJGVsZW0udHJpZ2dlcignZGVlcGxpbmsuemYudGFicycsIFskbGluaywgJChhbmNob3IpXSk7XG4gICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYodGhpcy5vcHRpb25zLm1hdGNoSGVpZ2h0KSB7XG4gICAgICB2YXIgJGltYWdlcyA9IHRoaXMuJHRhYkNvbnRlbnQuZmluZCgnaW1nJyk7XG5cbiAgICAgIGlmICgkaW1hZ2VzLmxlbmd0aCkge1xuICAgICAgICBGb3VuZGF0aW9uLm9uSW1hZ2VzTG9hZGVkKCRpbWFnZXMsIHRoaXMuX3NldEhlaWdodC5iaW5kKHRoaXMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3NldEhlaWdodCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2V2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgZXZlbnQgaGFuZGxlcnMgZm9yIGl0ZW1zIHdpdGhpbiB0aGUgdGFicy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9ldmVudHMoKSB7XG4gICAgdGhpcy5fYWRkS2V5SGFuZGxlcigpO1xuICAgIHRoaXMuX2FkZENsaWNrSGFuZGxlcigpO1xuICAgIHRoaXMuX3NldEhlaWdodE1xSGFuZGxlciA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm1hdGNoSGVpZ2h0KSB7XG4gICAgICB0aGlzLl9zZXRIZWlnaHRNcUhhbmRsZXIgPSB0aGlzLl9zZXRIZWlnaHQuYmluZCh0aGlzKTtcblxuICAgICAgJCh3aW5kb3cpLm9uKCdjaGFuZ2VkLnpmLm1lZGlhcXVlcnknLCB0aGlzLl9zZXRIZWlnaHRNcUhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGNsaWNrIGhhbmRsZXJzIGZvciBpdGVtcyB3aXRoaW4gdGhlIHRhYnMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfYWRkQ2xpY2tIYW5kbGVyKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLiRlbGVtZW50XG4gICAgICAub2ZmKCdjbGljay56Zi50YWJzJylcbiAgICAgIC5vbignY2xpY2suemYudGFicycsIGAuJHt0aGlzLm9wdGlvbnMubGlua0NsYXNzfWAsIGZ1bmN0aW9uKGUpe1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIF90aGlzLl9oYW5kbGVUYWJDaGFuZ2UoJCh0aGlzKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGtleWJvYXJkIGV2ZW50IGhhbmRsZXJzIGZvciBpdGVtcyB3aXRoaW4gdGhlIHRhYnMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfYWRkS2V5SGFuZGxlcigpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy4kdGFiVGl0bGVzLm9mZigna2V5ZG93bi56Zi50YWJzJykub24oJ2tleWRvd24uemYudGFicycsIGZ1bmN0aW9uKGUpe1xuICAgICAgaWYgKGUud2hpY2ggPT09IDkpIHJldHVybjtcblxuXG4gICAgICB2YXIgJGVsZW1lbnQgPSAkKHRoaXMpLFxuICAgICAgICAkZWxlbWVudHMgPSAkZWxlbWVudC5wYXJlbnQoJ3VsJykuY2hpbGRyZW4oJ2xpJyksXG4gICAgICAgICRwcmV2RWxlbWVudCxcbiAgICAgICAgJG5leHRFbGVtZW50O1xuXG4gICAgICAkZWxlbWVudHMuZWFjaChmdW5jdGlvbihpKSB7XG4gICAgICAgIGlmICgkKHRoaXMpLmlzKCRlbGVtZW50KSkge1xuICAgICAgICAgIGlmIChfdGhpcy5vcHRpb25zLndyYXBPbktleXMpIHtcbiAgICAgICAgICAgICRwcmV2RWxlbWVudCA9IGkgPT09IDAgPyAkZWxlbWVudHMubGFzdCgpIDogJGVsZW1lbnRzLmVxKGktMSk7XG4gICAgICAgICAgICAkbmV4dEVsZW1lbnQgPSBpID09PSAkZWxlbWVudHMubGVuZ3RoIC0xID8gJGVsZW1lbnRzLmZpcnN0KCkgOiAkZWxlbWVudHMuZXEoaSsxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJHByZXZFbGVtZW50ID0gJGVsZW1lbnRzLmVxKE1hdGgubWF4KDAsIGktMSkpO1xuICAgICAgICAgICAgJG5leHRFbGVtZW50ID0gJGVsZW1lbnRzLmVxKE1hdGgubWluKGkrMSwgJGVsZW1lbnRzLmxlbmd0aC0xKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIGhhbmRsZSBrZXlib2FyZCBldmVudCB3aXRoIGtleWJvYXJkIHV0aWxcbiAgICAgIEZvdW5kYXRpb24uS2V5Ym9hcmQuaGFuZGxlS2V5KGUsICdUYWJzJywge1xuICAgICAgICBvcGVuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAkZWxlbWVudC5maW5kKCdbcm9sZT1cInRhYlwiXScpLmZvY3VzKCk7XG4gICAgICAgICAgX3RoaXMuX2hhbmRsZVRhYkNoYW5nZSgkZWxlbWVudCk7XG4gICAgICAgIH0sXG4gICAgICAgIHByZXZpb3VzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAkcHJldkVsZW1lbnQuZmluZCgnW3JvbGU9XCJ0YWJcIl0nKS5mb2N1cygpO1xuICAgICAgICAgIF90aGlzLl9oYW5kbGVUYWJDaGFuZ2UoJHByZXZFbGVtZW50KTtcbiAgICAgICAgfSxcbiAgICAgICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgJG5leHRFbGVtZW50LmZpbmQoJ1tyb2xlPVwidGFiXCJdJykuZm9jdXMoKTtcbiAgICAgICAgICBfdGhpcy5faGFuZGxlVGFiQ2hhbmdlKCRuZXh0RWxlbWVudCk7XG4gICAgICAgIH0sXG4gICAgICAgIGhhbmRsZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgdGFiIGAkdGFyZ2V0Q29udGVudGAgZGVmaW5lZCBieSBgJHRhcmdldGAuIENvbGxhcHNlcyBhY3RpdmUgdGFiLlxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJHRhcmdldCAtIFRhYiB0byBvcGVuLlxuICAgKiBAZmlyZXMgVGFicyNjaGFuZ2VcbiAgICogQGZ1bmN0aW9uXG4gICAqL1xuICBfaGFuZGxlVGFiQ2hhbmdlKCR0YXJnZXQpIHtcblxuICAgIC8qKlxuICAgICAqIENoZWNrIGZvciBhY3RpdmUgY2xhc3Mgb24gdGFyZ2V0LiBDb2xsYXBzZSBpZiBleGlzdHMuXG4gICAgICovXG4gICAgaWYgKCR0YXJnZXQuaGFzQ2xhc3MoYCR7dGhpcy5vcHRpb25zLmxpbmtBY3RpdmVDbGFzc31gKSkge1xuICAgICAgICBpZih0aGlzLm9wdGlvbnMuYWN0aXZlQ29sbGFwc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbGxhcHNlVGFiKCR0YXJnZXQpO1xuXG4gICAgICAgICAgIC8qKlxuICAgICAgICAgICAgKiBGaXJlcyB3aGVuIHRoZSB6cGx1Z2luIGhhcyBzdWNjZXNzZnVsbHkgY29sbGFwc2VkIHRhYnMuXG4gICAgICAgICAgICAqIEBldmVudCBUYWJzI2NvbGxhcHNlXG4gICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdjb2xsYXBzZS56Zi50YWJzJywgWyR0YXJnZXRdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyICRvbGRUYWIgPSB0aGlzLiRlbGVtZW50LlxuICAgICAgICAgIGZpbmQoYC4ke3RoaXMub3B0aW9ucy5saW5rQ2xhc3N9LiR7dGhpcy5vcHRpb25zLmxpbmtBY3RpdmVDbGFzc31gKSxcbiAgICAgICAgICAkdGFiTGluayA9ICR0YXJnZXQuZmluZCgnW3JvbGU9XCJ0YWJcIl0nKSxcbiAgICAgICAgICBoYXNoID0gJHRhYkxpbmtbMF0uaGFzaCxcbiAgICAgICAgICAkdGFyZ2V0Q29udGVudCA9IHRoaXMuJHRhYkNvbnRlbnQuZmluZChoYXNoKTtcblxuICAgIC8vY2xvc2Ugb2xkIHRhYlxuICAgIHRoaXMuX2NvbGxhcHNlVGFiKCRvbGRUYWIpO1xuXG4gICAgLy9vcGVuIG5ldyB0YWJcbiAgICB0aGlzLl9vcGVuVGFiKCR0YXJnZXQpO1xuXG4gICAgLy9laXRoZXIgcmVwbGFjZSBvciB1cGRhdGUgYnJvd3NlciBoaXN0b3J5XG4gICAgaWYgKHRoaXMub3B0aW9ucy5kZWVwTGluaykge1xuICAgICAgdmFyIGFuY2hvciA9ICR0YXJnZXQuZmluZCgnYScpLmF0dHIoJ2hyZWYnKTtcblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy51cGRhdGVIaXN0b3J5KSB7XG4gICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKHt9LCAnJywgYW5jaG9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCAnJywgYW5jaG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaXJlcyB3aGVuIHRoZSBwbHVnaW4gaGFzIHN1Y2Nlc3NmdWxseSBjaGFuZ2VkIHRhYnMuXG4gICAgICogQGV2ZW50IFRhYnMjY2hhbmdlXG4gICAgICovXG4gICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdjaGFuZ2UuemYudGFicycsIFskdGFyZ2V0LCAkdGFyZ2V0Q29udGVudF0pO1xuXG4gICAgLy9maXJlIHRvIGNoaWxkcmVuIGEgbXV0YXRpb24gZXZlbnRcbiAgICAkdGFyZ2V0Q29udGVudC5maW5kKFwiW2RhdGEtbXV0YXRlXVwiKS50cmlnZ2VyKFwibXV0YXRlbWUuemYudHJpZ2dlclwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgdGFiIGAkdGFyZ2V0Q29udGVudGAgZGVmaW5lZCBieSBgJHRhcmdldGAuXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkdGFyZ2V0IC0gVGFiIHRvIE9wZW4uXG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgX29wZW5UYWIoJHRhcmdldCkge1xuICAgICAgdmFyICR0YWJMaW5rID0gJHRhcmdldC5maW5kKCdbcm9sZT1cInRhYlwiXScpLFxuICAgICAgICAgIGhhc2ggPSAkdGFiTGlua1swXS5oYXNoLFxuICAgICAgICAgICR0YXJnZXRDb250ZW50ID0gdGhpcy4kdGFiQ29udGVudC5maW5kKGhhc2gpO1xuXG4gICAgICAkdGFyZ2V0LmFkZENsYXNzKGAke3RoaXMub3B0aW9ucy5saW5rQWN0aXZlQ2xhc3N9YCk7XG5cbiAgICAgICR0YWJMaW5rLmF0dHIoeydhcmlhLXNlbGVjdGVkJzogJ3RydWUnfSk7XG5cbiAgICAgICR0YXJnZXRDb250ZW50XG4gICAgICAgIC5hZGRDbGFzcyhgJHt0aGlzLm9wdGlvbnMucGFuZWxBY3RpdmVDbGFzc31gKVxuICAgICAgICAuYXR0cih7J2FyaWEtaGlkZGVuJzogJ2ZhbHNlJ30pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbGxhcHNlcyBgJHRhcmdldENvbnRlbnRgIGRlZmluZWQgYnkgYCR0YXJnZXRgLlxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJHRhcmdldCAtIFRhYiB0byBPcGVuLlxuICAgKiBAZnVuY3Rpb25cbiAgICovXG4gIF9jb2xsYXBzZVRhYigkdGFyZ2V0KSB7XG4gICAgdmFyICR0YXJnZXRfYW5jaG9yID0gJHRhcmdldFxuICAgICAgLnJlbW92ZUNsYXNzKGAke3RoaXMub3B0aW9ucy5saW5rQWN0aXZlQ2xhc3N9YClcbiAgICAgIC5maW5kKCdbcm9sZT1cInRhYlwiXScpXG4gICAgICAuYXR0cih7ICdhcmlhLXNlbGVjdGVkJzogJ2ZhbHNlJyB9KTtcblxuICAgICQoYCMkeyR0YXJnZXRfYW5jaG9yLmF0dHIoJ2FyaWEtY29udHJvbHMnKX1gKVxuICAgICAgLnJlbW92ZUNsYXNzKGAke3RoaXMub3B0aW9ucy5wYW5lbEFjdGl2ZUNsYXNzfWApXG4gICAgICAuYXR0cih7ICdhcmlhLWhpZGRlbic6ICd0cnVlJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaWMgbWV0aG9kIGZvciBzZWxlY3RpbmcgYSBjb250ZW50IHBhbmUgdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIHtqUXVlcnkgfCBTdHJpbmd9IGVsZW0gLSBqUXVlcnkgb2JqZWN0IG9yIHN0cmluZyBvZiB0aGUgaWQgb2YgdGhlIHBhbmUgdG8gZGlzcGxheS5cbiAgICogQGZ1bmN0aW9uXG4gICAqL1xuICBzZWxlY3RUYWIoZWxlbSkge1xuICAgIHZhciBpZFN0cjtcblxuICAgIGlmICh0eXBlb2YgZWxlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlkU3RyID0gZWxlbVswXS5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWRTdHIgPSBlbGVtO1xuICAgIH1cblxuICAgIGlmIChpZFN0ci5pbmRleE9mKCcjJykgPCAwKSB7XG4gICAgICBpZFN0ciA9IGAjJHtpZFN0cn1gO1xuICAgIH1cblxuICAgIHZhciAkdGFyZ2V0ID0gdGhpcy4kdGFiVGl0bGVzLmZpbmQoYFtocmVmPVwiJHtpZFN0cn1cIl1gKS5wYXJlbnQoYC4ke3RoaXMub3B0aW9ucy5saW5rQ2xhc3N9YCk7XG5cbiAgICB0aGlzLl9oYW5kbGVUYWJDaGFuZ2UoJHRhcmdldCk7XG4gIH07XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBoZWlnaHQgb2YgZWFjaCBwYW5lbCB0byB0aGUgaGVpZ2h0IG9mIHRoZSB0YWxsZXN0IHBhbmVsLlxuICAgKiBJZiBlbmFibGVkIGluIG9wdGlvbnMsIGdldHMgY2FsbGVkIG9uIG1lZGlhIHF1ZXJ5IGNoYW5nZS5cbiAgICogSWYgbG9hZGluZyBjb250ZW50IHZpYSBleHRlcm5hbCBzb3VyY2UsIGNhbiBiZSBjYWxsZWQgZGlyZWN0bHkgb3Igd2l0aCBfcmVmbG93LlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9zZXRIZWlnaHQoKSB7XG4gICAgdmFyIG1heCA9IDA7XG4gICAgdGhpcy4kdGFiQ29udGVudFxuICAgICAgLmZpbmQoYC4ke3RoaXMub3B0aW9ucy5wYW5lbENsYXNzfWApXG4gICAgICAuY3NzKCdoZWlnaHQnLCAnJylcbiAgICAgIC5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcGFuZWwgPSAkKHRoaXMpLFxuICAgICAgICAgICAgaXNBY3RpdmUgPSBwYW5lbC5oYXNDbGFzcyhgJHt0aGlzLm9wdGlvbnMucGFuZWxBY3RpdmVDbGFzc31gKTtcblxuICAgICAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICAgICAgcGFuZWwuY3NzKHsndmlzaWJpbGl0eSc6ICdoaWRkZW4nLCAnZGlzcGxheSc6ICdibG9jayd9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0ZW1wID0gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG5cbiAgICAgICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgICAgIHBhbmVsLmNzcyh7XG4gICAgICAgICAgICAndmlzaWJpbGl0eSc6ICcnLFxuICAgICAgICAgICAgJ2Rpc3BsYXknOiAnJ1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbWF4ID0gdGVtcCA+IG1heCA/IHRlbXAgOiBtYXg7XG4gICAgICB9KVxuICAgICAgLmNzcygnaGVpZ2h0JywgYCR7bWF4fXB4YCk7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgYW4gaW5zdGFuY2Ugb2YgYW4gdGFicy5cbiAgICogQGZpcmVzIFRhYnMjZGVzdHJveWVkXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuJGVsZW1lbnRcbiAgICAgIC5maW5kKGAuJHt0aGlzLm9wdGlvbnMubGlua0NsYXNzfWApXG4gICAgICAub2ZmKCcuemYudGFicycpLmhpZGUoKS5lbmQoKVxuICAgICAgLmZpbmQoYC4ke3RoaXMub3B0aW9ucy5wYW5lbENsYXNzfWApXG4gICAgICAuaGlkZSgpO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYXRjaEhlaWdodCkge1xuICAgICAgaWYgKHRoaXMuX3NldEhlaWdodE1xSGFuZGxlciAhPSBudWxsKSB7XG4gICAgICAgICAkKHdpbmRvdykub2ZmKCdjaGFuZ2VkLnpmLm1lZGlhcXVlcnknLCB0aGlzLl9zZXRIZWlnaHRNcUhhbmRsZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEZvdW5kYXRpb24udW5yZWdpc3RlclBsdWdpbih0aGlzKTtcbiAgfVxufVxuXG5UYWJzLmRlZmF1bHRzID0ge1xuICAvKipcbiAgICogQWxsb3dzIHRoZSB3aW5kb3cgdG8gc2Nyb2xsIHRvIGNvbnRlbnQgb2YgcGFuZSBzcGVjaWZpZWQgYnkgaGFzaCBhbmNob3JcbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSBmYWxzZVxuICAgKi9cbiAgZGVlcExpbms6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBBZGp1c3QgdGhlIGRlZXAgbGluayBzY3JvbGwgdG8gbWFrZSBzdXJlIHRoZSB0b3Agb2YgdGhlIHRhYiBwYW5lbCBpcyB2aXNpYmxlXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIGRlZXBMaW5rU211ZGdlOiBmYWxzZSxcblxuICAvKipcbiAgICogQW5pbWF0aW9uIHRpbWUgKG1zKSBmb3IgdGhlIGRlZXAgbGluayBhZGp1c3RtZW50XG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgMzAwXG4gICAqL1xuICBkZWVwTGlua1NtdWRnZURlbGF5OiAzMDAsXG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgYnJvd3NlciBoaXN0b3J5IHdpdGggdGhlIG9wZW4gdGFiXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIHVwZGF0ZUhpc3Rvcnk6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdGhlIHdpbmRvdyB0byBzY3JvbGwgdG8gY29udGVudCBvZiBhY3RpdmUgcGFuZSBvbiBsb2FkIGlmIHNldCB0byB0cnVlLlxuICAgKiBOb3QgcmVjb21tZW5kZWQgaWYgbW9yZSB0aGFuIG9uZSB0YWIgcGFuZWwgcGVyIHBhZ2UuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIGF1dG9Gb2N1czogZmFsc2UsXG5cbiAgLyoqXG4gICAqIEFsbG93cyBrZXlib2FyZCBpbnB1dCB0byAnd3JhcCcgYXJvdW5kIHRoZSB0YWIgbGlua3MuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgdHJ1ZVxuICAgKi9cbiAgd3JhcE9uS2V5czogdHJ1ZSxcblxuICAvKipcbiAgICogQWxsb3dzIHRoZSB0YWIgY29udGVudCBwYW5lcyB0byBtYXRjaCBoZWlnaHRzIGlmIHNldCB0byB0cnVlLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIGZhbHNlXG4gICAqL1xuICBtYXRjaEhlaWdodDogZmFsc2UsXG5cbiAgLyoqXG4gICAqIEFsbG93cyBhY3RpdmUgdGFicyB0byBjb2xsYXBzZSB3aGVuIGNsaWNrZWQuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIGFjdGl2ZUNvbGxhcHNlOiBmYWxzZSxcblxuICAvKipcbiAgICogQ2xhc3MgYXBwbGllZCB0byBgbGlgJ3MgaW4gdGFiIGxpbmsgbGlzdC5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAndGFicy10aXRsZSdcbiAgICovXG4gIGxpbmtDbGFzczogJ3RhYnMtdGl0bGUnLFxuXG4gIC8qKlxuICAgKiBDbGFzcyBhcHBsaWVkIHRvIHRoZSBhY3RpdmUgYGxpYCBpbiB0YWIgbGluayBsaXN0LlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlICdpcy1hY3RpdmUnXG4gICAqL1xuICBsaW5rQWN0aXZlQ2xhc3M6ICdpcy1hY3RpdmUnLFxuXG4gIC8qKlxuICAgKiBDbGFzcyBhcHBsaWVkIHRvIHRoZSBjb250ZW50IGNvbnRhaW5lcnMuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgJ3RhYnMtcGFuZWwnXG4gICAqL1xuICBwYW5lbENsYXNzOiAndGFicy1wYW5lbCcsXG5cbiAgLyoqXG4gICAqIENsYXNzIGFwcGxpZWQgdG8gdGhlIGFjdGl2ZSBjb250ZW50IGNvbnRhaW5lci5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAnaXMtYWN0aXZlJ1xuICAgKi9cbiAgcGFuZWxBY3RpdmVDbGFzczogJ2lzLWFjdGl2ZSdcbn07XG5cbi8vIFdpbmRvdyBleHBvcnRzXG5Gb3VuZGF0aW9uLnBsdWdpbihUYWJzLCAnVGFicycpO1xuXG59KGpRdWVyeSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbiFmdW5jdGlvbigkKSB7XG5cbi8qKlxuICogVG9nZ2xlciBtb2R1bGUuXG4gKiBAbW9kdWxlIGZvdW5kYXRpb24udG9nZ2xlclxuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC5tb3Rpb25cbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwudHJpZ2dlcnNcbiAqL1xuXG5jbGFzcyBUb2dnbGVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgVG9nZ2xlci5cbiAgICogQGNsYXNzXG4gICAqIEBmaXJlcyBUb2dnbGVyI2luaXRcbiAgICogQHBhcmFtIHtPYmplY3R9IGVsZW1lbnQgLSBqUXVlcnkgb2JqZWN0IHRvIGFkZCB0aGUgdHJpZ2dlciB0by5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBPdmVycmlkZXMgdG8gdGhlIGRlZmF1bHQgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuJGVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBUb2dnbGVyLmRlZmF1bHRzLCBlbGVtZW50LmRhdGEoKSwgb3B0aW9ucyk7XG4gICAgdGhpcy5jbGFzc05hbWUgPSAnJztcblxuICAgIHRoaXMuX2luaXQoKTtcbiAgICB0aGlzLl9ldmVudHMoKTtcblxuICAgIEZvdW5kYXRpb24ucmVnaXN0ZXJQbHVnaW4odGhpcywgJ1RvZ2dsZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgVG9nZ2xlciBwbHVnaW4gYnkgcGFyc2luZyB0aGUgdG9nZ2xlIGNsYXNzIGZyb20gZGF0YS10b2dnbGVyLCBvciBhbmltYXRpb24gY2xhc3NlcyBmcm9tIGRhdGEtYW5pbWF0ZS5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfaW5pdCgpIHtcbiAgICB2YXIgaW5wdXQ7XG4gICAgLy8gUGFyc2UgYW5pbWF0aW9uIGNsYXNzZXMgaWYgdGhleSB3ZXJlIHNldFxuICAgIGlmICh0aGlzLm9wdGlvbnMuYW5pbWF0ZSkge1xuICAgICAgaW5wdXQgPSB0aGlzLm9wdGlvbnMuYW5pbWF0ZS5zcGxpdCgnICcpO1xuXG4gICAgICB0aGlzLmFuaW1hdGlvbkluID0gaW5wdXRbMF07XG4gICAgICB0aGlzLmFuaW1hdGlvbk91dCA9IGlucHV0WzFdIHx8IG51bGw7XG4gICAgfVxuICAgIC8vIE90aGVyd2lzZSwgcGFyc2UgdG9nZ2xlIGNsYXNzXG4gICAgZWxzZSB7XG4gICAgICBpbnB1dCA9IHRoaXMuJGVsZW1lbnQuZGF0YSgndG9nZ2xlcicpO1xuICAgICAgLy8gQWxsb3cgZm9yIGEgLiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmdcbiAgICAgIHRoaXMuY2xhc3NOYW1lID0gaW5wdXRbMF0gPT09ICcuJyA/IGlucHV0LnNsaWNlKDEpIDogaW5wdXQ7XG4gICAgfVxuXG4gICAgLy8gQWRkIEFSSUEgYXR0cmlidXRlcyB0byB0cmlnZ2Vyc1xuICAgIHZhciBpZCA9IHRoaXMuJGVsZW1lbnRbMF0uaWQ7XG4gICAgJChgW2RhdGEtb3Blbj1cIiR7aWR9XCJdLCBbZGF0YS1jbG9zZT1cIiR7aWR9XCJdLCBbZGF0YS10b2dnbGU9XCIke2lkfVwiXWApXG4gICAgICAuYXR0cignYXJpYS1jb250cm9scycsIGlkKTtcbiAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIGhpZGRlbiwgYWRkIGFyaWEtaGlkZGVuXG4gICAgdGhpcy4kZWxlbWVudC5hdHRyKCdhcmlhLWV4cGFuZGVkJywgdGhpcy4kZWxlbWVudC5pcygnOmhpZGRlbicpID8gZmFsc2UgOiB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyBldmVudHMgZm9yIHRoZSB0b2dnbGUgdHJpZ2dlci5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfZXZlbnRzKCkge1xuICAgIHRoaXMuJGVsZW1lbnQub2ZmKCd0b2dnbGUuemYudHJpZ2dlcicpLm9uKCd0b2dnbGUuemYudHJpZ2dlcicsIHRoaXMudG9nZ2xlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHRhcmdldCBjbGFzcyBvbiB0aGUgdGFyZ2V0IGVsZW1lbnQuIEFuIGV2ZW50IGlzIGZpcmVkIGZyb20gdGhlIG9yaWdpbmFsIHRyaWdnZXIgZGVwZW5kaW5nIG9uIGlmIHRoZSByZXN1bHRhbnQgc3RhdGUgd2FzIFwib25cIiBvciBcIm9mZlwiLlxuICAgKiBAZnVuY3Rpb25cbiAgICogQGZpcmVzIFRvZ2dsZXIjb25cbiAgICogQGZpcmVzIFRvZ2dsZXIjb2ZmXG4gICAqL1xuICB0b2dnbGUoKSB7XG4gICAgdGhpc1sgdGhpcy5vcHRpb25zLmFuaW1hdGUgPyAnX3RvZ2dsZUFuaW1hdGUnIDogJ190b2dnbGVDbGFzcyddKCk7XG4gIH1cblxuICBfdG9nZ2xlQ2xhc3MoKSB7XG4gICAgdGhpcy4kZWxlbWVudC50b2dnbGVDbGFzcyh0aGlzLmNsYXNzTmFtZSk7XG5cbiAgICB2YXIgaXNPbiA9IHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3ModGhpcy5jbGFzc05hbWUpO1xuICAgIGlmIChpc09uKSB7XG4gICAgICAvKipcbiAgICAgICAqIEZpcmVzIGlmIHRoZSB0YXJnZXQgZWxlbWVudCBoYXMgdGhlIGNsYXNzIGFmdGVyIGEgdG9nZ2xlLlxuICAgICAgICogQGV2ZW50IFRvZ2dsZXIjb25cbiAgICAgICAqL1xuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdvbi56Zi50b2dnbGVyJyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLyoqXG4gICAgICAgKiBGaXJlcyBpZiB0aGUgdGFyZ2V0IGVsZW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgY2xhc3MgYWZ0ZXIgYSB0b2dnbGUuXG4gICAgICAgKiBAZXZlbnQgVG9nZ2xlciNvZmZcbiAgICAgICAqL1xuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdvZmYuemYudG9nZ2xlcicpO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZUFSSUEoaXNPbik7XG4gICAgdGhpcy4kZWxlbWVudC5maW5kKCdbZGF0YS1tdXRhdGVdJykudHJpZ2dlcignbXV0YXRlbWUuemYudHJpZ2dlcicpO1xuICB9XG5cbiAgX3RvZ2dsZUFuaW1hdGUoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICh0aGlzLiRlbGVtZW50LmlzKCc6aGlkZGVuJykpIHtcbiAgICAgIEZvdW5kYXRpb24uTW90aW9uLmFuaW1hdGVJbih0aGlzLiRlbGVtZW50LCB0aGlzLmFuaW1hdGlvbkluLCBmdW5jdGlvbigpIHtcbiAgICAgICAgX3RoaXMuX3VwZGF0ZUFSSUEodHJ1ZSk7XG4gICAgICAgIHRoaXMudHJpZ2dlcignb24uemYudG9nZ2xlcicpO1xuICAgICAgICB0aGlzLmZpbmQoJ1tkYXRhLW11dGF0ZV0nKS50cmlnZ2VyKCdtdXRhdGVtZS56Zi50cmlnZ2VyJyk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBGb3VuZGF0aW9uLk1vdGlvbi5hbmltYXRlT3V0KHRoaXMuJGVsZW1lbnQsIHRoaXMuYW5pbWF0aW9uT3V0LCBmdW5jdGlvbigpIHtcbiAgICAgICAgX3RoaXMuX3VwZGF0ZUFSSUEoZmFsc2UpO1xuICAgICAgICB0aGlzLnRyaWdnZXIoJ29mZi56Zi50b2dnbGVyJyk7XG4gICAgICAgIHRoaXMuZmluZCgnW2RhdGEtbXV0YXRlXScpLnRyaWdnZXIoJ211dGF0ZW1lLnpmLnRyaWdnZXInKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIF91cGRhdGVBUklBKGlzT24pIHtcbiAgICB0aGlzLiRlbGVtZW50LmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCBpc09uID8gdHJ1ZSA6IGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgaW5zdGFuY2Ugb2YgVG9nZ2xlciBvbiB0aGUgZWxlbWVudC5cbiAgICogQGZ1bmN0aW9uXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuJGVsZW1lbnQub2ZmKCcuemYudG9nZ2xlcicpO1xuICAgIEZvdW5kYXRpb24udW5yZWdpc3RlclBsdWdpbih0aGlzKTtcbiAgfVxufVxuXG5Ub2dnbGVyLmRlZmF1bHRzID0ge1xuICAvKipcbiAgICogVGVsbHMgdGhlIHBsdWdpbiBpZiB0aGUgZWxlbWVudCBzaG91bGQgYW5pbWF0ZWQgd2hlbiB0b2dnbGVkLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIGZhbHNlXG4gICAqL1xuICBhbmltYXRlOiBmYWxzZVxufTtcblxuLy8gV2luZG93IGV4cG9ydHNcbkZvdW5kYXRpb24ucGx1Z2luKFRvZ2dsZXIsICdUb2dnbGVyJyk7XG5cbn0oalF1ZXJ5KTtcbiIsIid1c2Ugc3RyaWN0JztcblxuIWZ1bmN0aW9uKCQpIHtcblxuLyoqXG4gKiBUb29sdGlwIG1vZHVsZS5cbiAqIEBtb2R1bGUgZm91bmRhdGlvbi50b29sdGlwXG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLmJveFxuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC5tZWRpYVF1ZXJ5XG4gKiBAcmVxdWlyZXMgZm91bmRhdGlvbi51dGlsLnRyaWdnZXJzXG4gKi9cblxuY2xhc3MgVG9vbHRpcCB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIGEgVG9vbHRpcC5cbiAgICogQGNsYXNzXG4gICAqIEBmaXJlcyBUb29sdGlwI2luaXRcbiAgICogQHBhcmFtIHtqUXVlcnl9IGVsZW1lbnQgLSBqUXVlcnkgb2JqZWN0IHRvIGF0dGFjaCBhIHRvb2x0aXAgdG8uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb2JqZWN0IHRvIGV4dGVuZCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuJGVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBUb29sdGlwLmRlZmF1bHRzLCB0aGlzLiRlbGVtZW50LmRhdGEoKSwgb3B0aW9ucyk7XG5cbiAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5pc0NsaWNrID0gZmFsc2U7XG4gICAgdGhpcy5faW5pdCgpO1xuXG4gICAgRm91bmRhdGlvbi5yZWdpc3RlclBsdWdpbih0aGlzLCAnVG9vbHRpcCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSB0b29sdGlwIGJ5IHNldHRpbmcgdGhlIGNyZWF0aW5nIHRoZSB0aXAgZWxlbWVudCwgYWRkaW5nIGl0J3MgdGV4dCwgc2V0dGluZyBwcml2YXRlIHZhcmlhYmxlcyBhbmQgc2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoZSBhbmNob3IuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfaW5pdCgpIHtcbiAgICB2YXIgZWxlbUlkID0gdGhpcy4kZWxlbWVudC5hdHRyKCdhcmlhLWRlc2NyaWJlZGJ5JykgfHwgRm91bmRhdGlvbi5HZXRZb0RpZ2l0cyg2LCAndG9vbHRpcCcpO1xuXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uQ2xhc3MgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25DbGFzcyB8fCB0aGlzLl9nZXRQb3NpdGlvbkNsYXNzKHRoaXMuJGVsZW1lbnQpO1xuICAgIHRoaXMub3B0aW9ucy50aXBUZXh0ID0gdGhpcy5vcHRpb25zLnRpcFRleHQgfHwgdGhpcy4kZWxlbWVudC5hdHRyKCd0aXRsZScpO1xuICAgIHRoaXMudGVtcGxhdGUgPSB0aGlzLm9wdGlvbnMudGVtcGxhdGUgPyAkKHRoaXMub3B0aW9ucy50ZW1wbGF0ZSkgOiB0aGlzLl9idWlsZFRlbXBsYXRlKGVsZW1JZCk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmFsbG93SHRtbCkge1xuICAgICAgdGhpcy50ZW1wbGF0ZS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KVxuICAgICAgICAuaHRtbCh0aGlzLm9wdGlvbnMudGlwVGV4dClcbiAgICAgICAgLmhpZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZW1wbGF0ZS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KVxuICAgICAgICAudGV4dCh0aGlzLm9wdGlvbnMudGlwVGV4dClcbiAgICAgICAgLmhpZGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLiRlbGVtZW50LmF0dHIoe1xuICAgICAgJ3RpdGxlJzogJycsXG4gICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGVsZW1JZCxcbiAgICAgICdkYXRhLXlldGktYm94JzogZWxlbUlkLFxuICAgICAgJ2RhdGEtdG9nZ2xlJzogZWxlbUlkLFxuICAgICAgJ2RhdGEtcmVzaXplJzogZWxlbUlkXG4gICAgfSkuYWRkQ2xhc3ModGhpcy5vcHRpb25zLnRyaWdnZXJDbGFzcyk7XG5cbiAgICAvL2hlbHBlciB2YXJpYWJsZXMgdG8gdHJhY2sgbW92ZW1lbnQgb24gY29sbGlzaW9uc1xuICAgIHRoaXMudXNlZFBvc2l0aW9ucyA9IFtdO1xuICAgIHRoaXMuY291bnRlciA9IDQ7XG4gICAgdGhpcy5jbGFzc0NoYW5nZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuX2V2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYWJzIHRoZSBjdXJyZW50IHBvc2l0aW9uaW5nIGNsYXNzLCBpZiBwcmVzZW50LCBhbmQgcmV0dXJucyB0aGUgdmFsdWUgb3IgYW4gZW1wdHkgc3RyaW5nLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2dldFBvc2l0aW9uQ2xhc3MoZWxlbWVudCkge1xuICAgIGlmICghZWxlbWVudCkgeyByZXR1cm4gJyc7IH1cbiAgICAvLyB2YXIgcG9zaXRpb24gPSBlbGVtZW50LmF0dHIoJ2NsYXNzJykubWF0Y2goL3RvcHxsZWZ0fHJpZ2h0L2cpO1xuICAgIHZhciBwb3NpdGlvbiA9IGVsZW1lbnRbMF0uY2xhc3NOYW1lLm1hdGNoKC9cXGIodG9wfGxlZnR8cmlnaHQpXFxiL2cpO1xuICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uID8gcG9zaXRpb25bMF0gOiAnJztcbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH07XG4gIC8qKlxuICAgKiBidWlsZHMgdGhlIHRvb2x0aXAgZWxlbWVudCwgYWRkcyBhdHRyaWJ1dGVzLCBhbmQgcmV0dXJucyB0aGUgdGVtcGxhdGUuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfYnVpbGRUZW1wbGF0ZShpZCkge1xuICAgIHZhciB0ZW1wbGF0ZUNsYXNzZXMgPSAoYCR7dGhpcy5vcHRpb25zLnRvb2x0aXBDbGFzc30gJHt0aGlzLm9wdGlvbnMucG9zaXRpb25DbGFzc30gJHt0aGlzLm9wdGlvbnMudGVtcGxhdGVDbGFzc2VzfWApLnRyaW0oKTtcbiAgICB2YXIgJHRlbXBsYXRlID0gICQoJzxkaXY+PC9kaXY+JykuYWRkQ2xhc3ModGVtcGxhdGVDbGFzc2VzKS5hdHRyKHtcbiAgICAgICdyb2xlJzogJ3Rvb2x0aXAnLFxuICAgICAgJ2FyaWEtaGlkZGVuJzogdHJ1ZSxcbiAgICAgICdkYXRhLWlzLWFjdGl2ZSc6IGZhbHNlLFxuICAgICAgJ2RhdGEtaXMtZm9jdXMnOiBmYWxzZSxcbiAgICAgICdpZCc6IGlkXG4gICAgfSk7XG4gICAgcmV0dXJuICR0ZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGlmIGEgY29sbGlzaW9uIGV2ZW50IGlzIGRldGVjdGVkLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gcG9zaXRpb24gLSBwb3NpdGlvbmluZyBjbGFzcyB0byB0cnlcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9yZXBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy51c2VkUG9zaXRpb25zLnB1c2gocG9zaXRpb24gPyBwb3NpdGlvbiA6ICdib3R0b20nKTtcblxuICAgIC8vZGVmYXVsdCwgdHJ5IHN3aXRjaGluZyB0byBvcHBvc2l0ZSBzaWRlXG4gICAgaWYgKCFwb3NpdGlvbiAmJiAodGhpcy51c2VkUG9zaXRpb25zLmluZGV4T2YoJ3RvcCcpIDwgMCkpIHtcbiAgICAgIHRoaXMudGVtcGxhdGUuYWRkQ2xhc3MoJ3RvcCcpO1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT09ICd0b3AnICYmICh0aGlzLnVzZWRQb3NpdGlvbnMuaW5kZXhPZignYm90dG9tJykgPCAwKSkge1xuICAgICAgdGhpcy50ZW1wbGF0ZS5yZW1vdmVDbGFzcyhwb3NpdGlvbik7XG4gICAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PT0gJ2xlZnQnICYmICh0aGlzLnVzZWRQb3NpdGlvbnMuaW5kZXhPZigncmlnaHQnKSA8IDApKSB7XG4gICAgICB0aGlzLnRlbXBsYXRlLnJlbW92ZUNsYXNzKHBvc2l0aW9uKVxuICAgICAgICAgIC5hZGRDbGFzcygncmlnaHQnKTtcbiAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSAncmlnaHQnICYmICh0aGlzLnVzZWRQb3NpdGlvbnMuaW5kZXhPZignbGVmdCcpIDwgMCkpIHtcbiAgICAgIHRoaXMudGVtcGxhdGUucmVtb3ZlQ2xhc3MocG9zaXRpb24pXG4gICAgICAgICAgLmFkZENsYXNzKCdsZWZ0Jyk7XG4gICAgfVxuXG4gICAgLy9pZiBkZWZhdWx0IGNoYW5nZSBkaWRuJ3Qgd29yaywgdHJ5IGJvdHRvbSBvciBsZWZ0IGZpcnN0XG4gICAgZWxzZSBpZiAoIXBvc2l0aW9uICYmICh0aGlzLnVzZWRQb3NpdGlvbnMuaW5kZXhPZigndG9wJykgPiAtMSkgJiYgKHRoaXMudXNlZFBvc2l0aW9ucy5pbmRleE9mKCdsZWZ0JykgPCAwKSkge1xuICAgICAgdGhpcy50ZW1wbGF0ZS5hZGRDbGFzcygnbGVmdCcpO1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT09ICd0b3AnICYmICh0aGlzLnVzZWRQb3NpdGlvbnMuaW5kZXhPZignYm90dG9tJykgPiAtMSkgJiYgKHRoaXMudXNlZFBvc2l0aW9ucy5pbmRleE9mKCdsZWZ0JykgPCAwKSkge1xuICAgICAgdGhpcy50ZW1wbGF0ZS5yZW1vdmVDbGFzcyhwb3NpdGlvbilcbiAgICAgICAgICAuYWRkQ2xhc3MoJ2xlZnQnKTtcbiAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSAnbGVmdCcgJiYgKHRoaXMudXNlZFBvc2l0aW9ucy5pbmRleE9mKCdyaWdodCcpID4gLTEpICYmICh0aGlzLnVzZWRQb3NpdGlvbnMuaW5kZXhPZignYm90dG9tJykgPCAwKSkge1xuICAgICAgdGhpcy50ZW1wbGF0ZS5yZW1vdmVDbGFzcyhwb3NpdGlvbik7XG4gICAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PT0gJ3JpZ2h0JyAmJiAodGhpcy51c2VkUG9zaXRpb25zLmluZGV4T2YoJ2xlZnQnKSA+IC0xKSAmJiAodGhpcy51c2VkUG9zaXRpb25zLmluZGV4T2YoJ2JvdHRvbScpIDwgMCkpIHtcbiAgICAgIHRoaXMudGVtcGxhdGUucmVtb3ZlQ2xhc3MocG9zaXRpb24pO1xuICAgIH1cbiAgICAvL2lmIG5vdGhpbmcgY2xlYXJlZCwgc2V0IHRvIGJvdHRvbVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy50ZW1wbGF0ZS5yZW1vdmVDbGFzcyhwb3NpdGlvbik7XG4gICAgfVxuICAgIHRoaXMuY2xhc3NDaGFuZ2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNvdW50ZXItLTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzZXRzIHRoZSBwb3NpdGlvbiBjbGFzcyBvZiBhbiBlbGVtZW50IGFuZCByZWN1cnNpdmVseSBjYWxscyBpdHNlbGYgdW50aWwgdGhlcmUgYXJlIG5vIG1vcmUgcG9zc2libGUgcG9zaXRpb25zIHRvIGF0dGVtcHQsIG9yIHRoZSB0b29sdGlwIGVsZW1lbnQgaXMgbm8gbG9uZ2VyIGNvbGxpZGluZy5cbiAgICogaWYgdGhlIHRvb2x0aXAgaXMgbGFyZ2VyIHRoYW4gdGhlIHNjcmVlbiB3aWR0aCwgZGVmYXVsdCB0byBmdWxsIHdpZHRoIC0gYW55IHVzZXIgc2VsZWN0ZWQgbWFyZ2luXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfc2V0UG9zaXRpb24oKSB7XG4gICAgdmFyIHBvc2l0aW9uID0gdGhpcy5fZ2V0UG9zaXRpb25DbGFzcyh0aGlzLnRlbXBsYXRlKSxcbiAgICAgICAgJHRpcERpbXMgPSBGb3VuZGF0aW9uLkJveC5HZXREaW1lbnNpb25zKHRoaXMudGVtcGxhdGUpLFxuICAgICAgICAkYW5jaG9yRGltcyA9IEZvdW5kYXRpb24uQm94LkdldERpbWVuc2lvbnModGhpcy4kZWxlbWVudCksXG4gICAgICAgIGRpcmVjdGlvbiA9IChwb3NpdGlvbiA9PT0gJ2xlZnQnID8gJ2xlZnQnIDogKChwb3NpdGlvbiA9PT0gJ3JpZ2h0JykgPyAnbGVmdCcgOiAndG9wJykpLFxuICAgICAgICBwYXJhbSA9IChkaXJlY3Rpb24gPT09ICd0b3AnKSA/ICdoZWlnaHQnIDogJ3dpZHRoJyxcbiAgICAgICAgb2Zmc2V0ID0gKHBhcmFtID09PSAnaGVpZ2h0JykgPyB0aGlzLm9wdGlvbnMudk9mZnNldCA6IHRoaXMub3B0aW9ucy5oT2Zmc2V0LFxuICAgICAgICBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoKCR0aXBEaW1zLndpZHRoID49ICR0aXBEaW1zLndpbmRvd0RpbXMud2lkdGgpIHx8ICghdGhpcy5jb3VudGVyICYmICFGb3VuZGF0aW9uLkJveC5JbU5vdFRvdWNoaW5nWW91KHRoaXMudGVtcGxhdGUpKSkge1xuICAgICAgdGhpcy50ZW1wbGF0ZS5vZmZzZXQoRm91bmRhdGlvbi5Cb3guR2V0T2Zmc2V0cyh0aGlzLnRlbXBsYXRlLCB0aGlzLiRlbGVtZW50LCAnY2VudGVyIGJvdHRvbScsIHRoaXMub3B0aW9ucy52T2Zmc2V0LCB0aGlzLm9wdGlvbnMuaE9mZnNldCwgdHJ1ZSkpLmNzcyh7XG4gICAgICAvLyB0aGlzLiRlbGVtZW50Lm9mZnNldChGb3VuZGF0aW9uLkdldE9mZnNldHModGhpcy50ZW1wbGF0ZSwgdGhpcy4kZWxlbWVudCwgJ2NlbnRlciBib3R0b20nLCB0aGlzLm9wdGlvbnMudk9mZnNldCwgdGhpcy5vcHRpb25zLmhPZmZzZXQsIHRydWUpKS5jc3Moe1xuICAgICAgICAnd2lkdGgnOiAkYW5jaG9yRGltcy53aW5kb3dEaW1zLndpZHRoIC0gKHRoaXMub3B0aW9ucy5oT2Zmc2V0ICogMiksXG4gICAgICAgICdoZWlnaHQnOiAnYXV0bydcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMudGVtcGxhdGUub2Zmc2V0KEZvdW5kYXRpb24uQm94LkdldE9mZnNldHModGhpcy50ZW1wbGF0ZSwgdGhpcy4kZWxlbWVudCwnY2VudGVyICcgKyAocG9zaXRpb24gfHwgJ2JvdHRvbScpLCB0aGlzLm9wdGlvbnMudk9mZnNldCwgdGhpcy5vcHRpb25zLmhPZmZzZXQpKTtcblxuICAgIHdoaWxlKCFGb3VuZGF0aW9uLkJveC5JbU5vdFRvdWNoaW5nWW91KHRoaXMudGVtcGxhdGUpICYmIHRoaXMuY291bnRlcikge1xuICAgICAgdGhpcy5fcmVwb3NpdGlvbihwb3NpdGlvbik7XG4gICAgICB0aGlzLl9zZXRQb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiByZXZlYWxzIHRoZSB0b29sdGlwLCBhbmQgZmlyZXMgYW4gZXZlbnQgdG8gY2xvc2UgYW55IG90aGVyIG9wZW4gdG9vbHRpcHMgb24gdGhlIHBhZ2VcbiAgICogQGZpcmVzIFRvb2x0aXAjY2xvc2VtZVxuICAgKiBAZmlyZXMgVG9vbHRpcCNzaG93XG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgc2hvdygpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLnNob3dPbiAhPT0gJ2FsbCcgJiYgIUZvdW5kYXRpb24uTWVkaWFRdWVyeS5pcyh0aGlzLm9wdGlvbnMuc2hvd09uKSkge1xuICAgICAgLy8gY29uc29sZS5lcnJvcignVGhlIHNjcmVlbiBpcyB0b28gc21hbGwgdG8gZGlzcGxheSB0aGlzIHRvb2x0aXAnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIHRoaXMudGVtcGxhdGUuY3NzKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpLnNob3coKTtcbiAgICB0aGlzLl9zZXRQb3NpdGlvbigpO1xuXG4gICAgLyoqXG4gICAgICogRmlyZXMgdG8gY2xvc2UgYWxsIG90aGVyIG9wZW4gdG9vbHRpcHMgb24gdGhlIHBhZ2VcbiAgICAgKiBAZXZlbnQgQ2xvc2VtZSN0b29sdGlwXG4gICAgICovXG4gICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdjbG9zZW1lLnpmLnRvb2x0aXAnLCB0aGlzLnRlbXBsYXRlLmF0dHIoJ2lkJykpO1xuXG5cbiAgICB0aGlzLnRlbXBsYXRlLmF0dHIoe1xuICAgICAgJ2RhdGEtaXMtYWN0aXZlJzogdHJ1ZSxcbiAgICAgICdhcmlhLWhpZGRlbic6IGZhbHNlXG4gICAgfSk7XG4gICAgX3RoaXMuaXNBY3RpdmUgPSB0cnVlO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMudGVtcGxhdGUpO1xuICAgIHRoaXMudGVtcGxhdGUuc3RvcCgpLmhpZGUoKS5jc3MoJ3Zpc2liaWxpdHknLCAnJykuZmFkZUluKHRoaXMub3B0aW9ucy5mYWRlSW5EdXJhdGlvbiwgZnVuY3Rpb24oKSB7XG4gICAgICAvL21heWJlIGRvIHN0dWZmP1xuICAgIH0pO1xuICAgIC8qKlxuICAgICAqIEZpcmVzIHdoZW4gdGhlIHRvb2x0aXAgaXMgc2hvd25cbiAgICAgKiBAZXZlbnQgVG9vbHRpcCNzaG93XG4gICAgICovXG4gICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdzaG93LnpmLnRvb2x0aXAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlcyB0aGUgY3VycmVudCB0b29sdGlwLCBhbmQgcmVzZXRzIHRoZSBwb3NpdGlvbmluZyBjbGFzcyBpZiBpdCB3YXMgY2hhbmdlZCBkdWUgdG8gY29sbGlzaW9uXG4gICAqIEBmaXJlcyBUb29sdGlwI2hpZGVcbiAgICogQGZ1bmN0aW9uXG4gICAqL1xuICBoaWRlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdoaWRpbmcnLCB0aGlzLiRlbGVtZW50LmRhdGEoJ3lldGktYm94JykpO1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgdGhpcy50ZW1wbGF0ZS5zdG9wKCkuYXR0cih7XG4gICAgICAnYXJpYS1oaWRkZW4nOiB0cnVlLFxuICAgICAgJ2RhdGEtaXMtYWN0aXZlJzogZmFsc2VcbiAgICB9KS5mYWRlT3V0KHRoaXMub3B0aW9ucy5mYWRlT3V0RHVyYXRpb24sIGZ1bmN0aW9uKCkge1xuICAgICAgX3RoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgIF90aGlzLmlzQ2xpY2sgPSBmYWxzZTtcbiAgICAgIGlmIChfdGhpcy5jbGFzc0NoYW5nZWQpIHtcbiAgICAgICAgX3RoaXMudGVtcGxhdGVcbiAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoX3RoaXMuX2dldFBvc2l0aW9uQ2xhc3MoX3RoaXMudGVtcGxhdGUpKVxuICAgICAgICAgICAgIC5hZGRDbGFzcyhfdGhpcy5vcHRpb25zLnBvc2l0aW9uQ2xhc3MpO1xuXG4gICAgICAgX3RoaXMudXNlZFBvc2l0aW9ucyA9IFtdO1xuICAgICAgIF90aGlzLmNvdW50ZXIgPSA0O1xuICAgICAgIF90aGlzLmNsYXNzQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8qKlxuICAgICAqIGZpcmVzIHdoZW4gdGhlIHRvb2x0aXAgaXMgaGlkZGVuXG4gICAgICogQGV2ZW50IFRvb2x0aXAjaGlkZVxuICAgICAqL1xuICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignaGlkZS56Zi50b29sdGlwJyk7XG4gIH1cblxuICAvKipcbiAgICogYWRkcyBldmVudCBsaXN0ZW5lcnMgZm9yIHRoZSB0b29sdGlwIGFuZCBpdHMgYW5jaG9yXG4gICAqIFRPRE8gY29tYmluZSBzb21lIG9mIHRoZSBsaXN0ZW5lcnMgbGlrZSBmb2N1cyBhbmQgbW91c2VlbnRlciwgZXRjLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2V2ZW50cygpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIHZhciAkdGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlO1xuICAgIHZhciBpc0ZvY3VzID0gZmFsc2U7XG5cbiAgICBpZiAoIXRoaXMub3B0aW9ucy5kaXNhYmxlSG92ZXIpIHtcblxuICAgICAgdGhpcy4kZWxlbWVudFxuICAgICAgLm9uKCdtb3VzZWVudGVyLnpmLnRvb2x0aXAnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIGlmICghX3RoaXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICBfdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIF90aGlzLnNob3coKTtcbiAgICAgICAgICB9LCBfdGhpcy5vcHRpb25zLmhvdmVyRGVsYXkpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLm9uKCdtb3VzZWxlYXZlLnpmLnRvb2x0aXAnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChfdGhpcy50aW1lb3V0KTtcbiAgICAgICAgaWYgKCFpc0ZvY3VzIHx8IChfdGhpcy5pc0NsaWNrICYmICFfdGhpcy5vcHRpb25zLmNsaWNrT3BlbikpIHtcbiAgICAgICAgICBfdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuY2xpY2tPcGVuKSB7XG4gICAgICB0aGlzLiRlbGVtZW50Lm9uKCdtb3VzZWRvd24uemYudG9vbHRpcCcsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKF90aGlzLmlzQ2xpY2spIHtcbiAgICAgICAgICAvL190aGlzLmhpZGUoKTtcbiAgICAgICAgICAvLyBfdGhpcy5pc0NsaWNrID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMuaXNDbGljayA9IHRydWU7XG4gICAgICAgICAgaWYgKChfdGhpcy5vcHRpb25zLmRpc2FibGVIb3ZlciB8fCAhX3RoaXMuJGVsZW1lbnQuYXR0cigndGFiaW5kZXgnKSkgJiYgIV90aGlzLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICBfdGhpcy5zaG93KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4kZWxlbWVudC5vbignbW91c2Vkb3duLnpmLnRvb2x0aXAnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIF90aGlzLmlzQ2xpY2sgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuZGlzYWJsZUZvclRvdWNoKSB7XG4gICAgICB0aGlzLiRlbGVtZW50XG4gICAgICAub24oJ3RhcC56Zi50b29sdGlwIHRvdWNoZW5kLnpmLnRvb2x0aXAnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIF90aGlzLmlzQWN0aXZlID8gX3RoaXMuaGlkZSgpIDogX3RoaXMuc2hvdygpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy4kZWxlbWVudC5vbih7XG4gICAgICAvLyAndG9nZ2xlLnpmLnRyaWdnZXInOiB0aGlzLnRvZ2dsZS5iaW5kKHRoaXMpLFxuICAgICAgLy8gJ2Nsb3NlLnpmLnRyaWdnZXInOiB0aGlzLmhpZGUuYmluZCh0aGlzKVxuICAgICAgJ2Nsb3NlLnpmLnRyaWdnZXInOiB0aGlzLmhpZGUuYmluZCh0aGlzKVxuICAgIH0pO1xuXG4gICAgdGhpcy4kZWxlbWVudFxuICAgICAgLm9uKCdmb2N1cy56Zi50b29sdGlwJywgZnVuY3Rpb24oZSkge1xuICAgICAgICBpc0ZvY3VzID0gdHJ1ZTtcbiAgICAgICAgaWYgKF90aGlzLmlzQ2xpY2spIHtcbiAgICAgICAgICAvLyBJZiB3ZSdyZSBub3Qgc2hvd2luZyBvcGVuIG9uIGNsaWNrcywgd2UgbmVlZCB0byBwcmV0ZW5kIGEgY2xpY2stbGF1bmNoZWQgZm9jdXMgaXNuJ3RcbiAgICAgICAgICAvLyBhIHJlYWwgZm9jdXMsIG90aGVyd2lzZSBvbiBob3ZlciBhbmQgY29tZSBiYWNrIHdlIGdldCBiYWQgYmVoYXZpb3JcbiAgICAgICAgICBpZighX3RoaXMub3B0aW9ucy5jbGlja09wZW4pIHsgaXNGb2N1cyA9IGZhbHNlOyB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzLnNob3coKTtcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLm9uKCdmb2N1c291dC56Zi50b29sdGlwJywgZnVuY3Rpb24oZSkge1xuICAgICAgICBpc0ZvY3VzID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmlzQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgX3RoaXMuaGlkZSgpO1xuICAgICAgfSlcblxuICAgICAgLm9uKCdyZXNpemVtZS56Zi50cmlnZ2VyJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmIChfdGhpcy5pc0FjdGl2ZSkge1xuICAgICAgICAgIF90aGlzLl9zZXRQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGRzIGEgdG9nZ2xlIG1ldGhvZCwgaW4gYWRkaXRpb24gdG8gdGhlIHN0YXRpYyBzaG93KCkgJiBoaWRlKCkgZnVuY3Rpb25zXG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgdG9nZ2xlKCkge1xuICAgIGlmICh0aGlzLmlzQWN0aXZlKSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGFuIGluc3RhbmNlIG9mIHRvb2x0aXAsIHJlbW92ZXMgdGVtcGxhdGUgZWxlbWVudCBmcm9tIHRoZSB2aWV3LlxuICAgKiBAZnVuY3Rpb25cbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy4kZWxlbWVudC5hdHRyKCd0aXRsZScsIHRoaXMudGVtcGxhdGUudGV4dCgpKVxuICAgICAgICAgICAgICAgICAub2ZmKCcuemYudHJpZ2dlciAuemYudG9vbHRpcCcpXG4gICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnaGFzLXRpcCB0b3AgcmlnaHQgbGVmdCcpXG4gICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdhcmlhLWRlc2NyaWJlZGJ5IGFyaWEtaGFzcG9wdXAgZGF0YS1kaXNhYmxlLWhvdmVyIGRhdGEtcmVzaXplIGRhdGEtdG9nZ2xlIGRhdGEtdG9vbHRpcCBkYXRhLXlldGktYm94Jyk7XG5cbiAgICB0aGlzLnRlbXBsYXRlLnJlbW92ZSgpO1xuXG4gICAgRm91bmRhdGlvbi51bnJlZ2lzdGVyUGx1Z2luKHRoaXMpO1xuICB9XG59XG5cblRvb2x0aXAuZGVmYXVsdHMgPSB7XG4gIGRpc2FibGVGb3JUb3VjaDogZmFsc2UsXG4gIC8qKlxuICAgKiBUaW1lLCBpbiBtcywgYmVmb3JlIGEgdG9vbHRpcCBzaG91bGQgb3BlbiBvbiBob3Zlci5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAyMDBcbiAgICovXG4gIGhvdmVyRGVsYXk6IDIwMCxcbiAgLyoqXG4gICAqIFRpbWUsIGluIG1zLCBhIHRvb2x0aXAgc2hvdWxkIHRha2UgdG8gZmFkZSBpbnRvIHZpZXcuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgMTUwXG4gICAqL1xuICBmYWRlSW5EdXJhdGlvbjogMTUwLFxuICAvKipcbiAgICogVGltZSwgaW4gbXMsIGEgdG9vbHRpcCBzaG91bGQgdGFrZSB0byBmYWRlIG91dCBvZiB2aWV3LlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlIDE1MFxuICAgKi9cbiAgZmFkZU91dER1cmF0aW9uOiAxNTAsXG4gIC8qKlxuICAgKiBEaXNhYmxlcyBob3ZlciBldmVudHMgZnJvbSBvcGVuaW5nIHRoZSB0b29sdGlwIGlmIHNldCB0byB0cnVlXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIGRpc2FibGVIb3ZlcjogZmFsc2UsXG4gIC8qKlxuICAgKiBPcHRpb25hbCBhZGR0aW9uYWwgY2xhc3NlcyB0byBhcHBseSB0byB0aGUgdG9vbHRpcCB0ZW1wbGF0ZSBvbiBpbml0LlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlICdteS1jb29sLXRpcC1jbGFzcydcbiAgICovXG4gIHRlbXBsYXRlQ2xhc3NlczogJycsXG4gIC8qKlxuICAgKiBOb24tb3B0aW9uYWwgY2xhc3MgYWRkZWQgdG8gdG9vbHRpcCB0ZW1wbGF0ZXMuIEZvdW5kYXRpb24gZGVmYXVsdCBpcyAndG9vbHRpcCcuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgJ3Rvb2x0aXAnXG4gICAqL1xuICB0b29sdGlwQ2xhc3M6ICd0b29sdGlwJyxcbiAgLyoqXG4gICAqIENsYXNzIGFwcGxpZWQgdG8gdGhlIHRvb2x0aXAgYW5jaG9yIGVsZW1lbnQuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgJ2hhcy10aXAnXG4gICAqL1xuICB0cmlnZ2VyQ2xhc3M6ICdoYXMtdGlwJyxcbiAgLyoqXG4gICAqIE1pbmltdW0gYnJlYWtwb2ludCBzaXplIGF0IHdoaWNoIHRvIG9wZW4gdGhlIHRvb2x0aXAuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgJ3NtYWxsJ1xuICAgKi9cbiAgc2hvd09uOiAnc21hbGwnLFxuICAvKipcbiAgICogQ3VzdG9tIHRlbXBsYXRlIHRvIGJlIHVzZWQgdG8gZ2VuZXJhdGUgbWFya3VwIGZvciB0b29sdGlwLlxuICAgKiBAb3B0aW9uXG4gICAqIEBleGFtcGxlICcmbHQ7ZGl2IGNsYXNzPVwidG9vbHRpcFwiJmd0OyZsdDsvZGl2Jmd0OydcbiAgICovXG4gIHRlbXBsYXRlOiAnJyxcbiAgLyoqXG4gICAqIFRleHQgZGlzcGxheWVkIGluIHRoZSB0b29sdGlwIHRlbXBsYXRlIG9uIG9wZW4uXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgJ1NvbWUgY29vbCBzcGFjZSBmYWN0IGhlcmUuJ1xuICAgKi9cbiAgdGlwVGV4dDogJycsXG4gIHRvdWNoQ2xvc2VUZXh0OiAnVGFwIHRvIGNsb3NlLicsXG4gIC8qKlxuICAgKiBBbGxvd3MgdGhlIHRvb2x0aXAgdG8gcmVtYWluIG9wZW4gaWYgdHJpZ2dlcmVkIHdpdGggYSBjbGljayBvciB0b3VjaCBldmVudC5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSB0cnVlXG4gICAqL1xuICBjbGlja09wZW46IHRydWUsXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHBvc2l0aW9uaW5nIGNsYXNzZXMsIHNldCBieSB0aGUgSlNcbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAndG9wJ1xuICAgKi9cbiAgcG9zaXRpb25DbGFzczogJycsXG4gIC8qKlxuICAgKiBEaXN0YW5jZSwgaW4gcGl4ZWxzLCB0aGUgdGVtcGxhdGUgc2hvdWxkIHB1c2ggYXdheSBmcm9tIHRoZSBhbmNob3Igb24gdGhlIFkgYXhpcy5cbiAgICogQG9wdGlvblxuICAgKiBAZXhhbXBsZSAxMFxuICAgKi9cbiAgdk9mZnNldDogMTAsXG4gIC8qKlxuICAgKiBEaXN0YW5jZSwgaW4gcGl4ZWxzLCB0aGUgdGVtcGxhdGUgc2hvdWxkIHB1c2ggYXdheSBmcm9tIHRoZSBhbmNob3Igb24gdGhlIFggYXhpcywgaWYgYWxpZ25lZCB0byBhIHNpZGUuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgMTJcbiAgICovXG4gIGhPZmZzZXQ6IDEyLFxuICAgIC8qKlxuICAgKiBBbGxvdyBIVE1MIGluIHRvb2x0aXAuIFdhcm5pbmc6IElmIHlvdSBhcmUgbG9hZGluZyB1c2VyLWdlbmVyYXRlZCBjb250ZW50IGludG8gdG9vbHRpcHMsXG4gICAqIGFsbG93aW5nIEhUTUwgbWF5IG9wZW4geW91cnNlbGYgdXAgdG8gWFNTIGF0dGFja3MuXG4gICAqIEBvcHRpb25cbiAgICogQGV4YW1wbGUgZmFsc2VcbiAgICovXG4gIGFsbG93SHRtbDogZmFsc2Vcbn07XG5cbi8qKlxuICogVE9ETyB1dGlsaXplIHJlc2l6ZSBldmVudCB0cmlnZ2VyXG4gKi9cblxuLy8gV2luZG93IGV4cG9ydHNcbkZvdW5kYXRpb24ucGx1Z2luKFRvb2x0aXAsICdUb29sdGlwJyk7XG5cbn0oalF1ZXJ5KTtcbiIsIid1c2Ugc3RyaWN0JztcblxuIWZ1bmN0aW9uKCQpIHtcblxuLyoqXG4gKiBSZXNwb25zaXZlQWNjb3JkaW9uVGFicyBtb2R1bGUuXG4gKiBAbW9kdWxlIGZvdW5kYXRpb24ucmVzcG9uc2l2ZUFjY29yZGlvblRhYnNcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwua2V5Ym9hcmRcbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLnV0aWwudGltZXJBbmRJbWFnZUxvYWRlclxuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udXRpbC5tb3Rpb25cbiAqIEByZXF1aXJlcyBmb3VuZGF0aW9uLmFjY29yZGlvblxuICogQHJlcXVpcmVzIGZvdW5kYXRpb24udGFic1xuICovXG5cbmNsYXNzIFJlc3BvbnNpdmVBY2NvcmRpb25UYWJzIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgYSByZXNwb25zaXZlIGFjY29yZGlvbiB0YWJzLlxuICAgKiBAY2xhc3NcbiAgICogQGZpcmVzIFJlc3BvbnNpdmVBY2NvcmRpb25UYWJzI2luaXRcbiAgICogQHBhcmFtIHtqUXVlcnl9IGVsZW1lbnQgLSBqUXVlcnkgb2JqZWN0IHRvIG1ha2UgaW50byBhIGRyb3Bkb3duIG1lbnUuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gT3ZlcnJpZGVzIHRvIHRoZSBkZWZhdWx0IHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRlbGVtZW50ID0gJChlbGVtZW50KTtcbiAgICB0aGlzLm9wdGlvbnMgID0gJC5leHRlbmQoe30sIHRoaXMuJGVsZW1lbnQuZGF0YSgpLCBvcHRpb25zKTtcbiAgICB0aGlzLnJ1bGVzID0gdGhpcy4kZWxlbWVudC5kYXRhKCdyZXNwb25zaXZlLWFjY29yZGlvbi10YWJzJyk7XG4gICAgdGhpcy5jdXJyZW50TXEgPSBudWxsO1xuICAgIHRoaXMuY3VycmVudFBsdWdpbiA9IG51bGw7XG4gICAgaWYgKCF0aGlzLiRlbGVtZW50LmF0dHIoJ2lkJykpIHtcbiAgICAgIHRoaXMuJGVsZW1lbnQuYXR0cignaWQnLEZvdW5kYXRpb24uR2V0WW9EaWdpdHMoNiwgJ3Jlc3BvbnNpdmVhY2NvcmRpb250YWJzJykpO1xuICAgIH07XG5cbiAgICB0aGlzLl9pbml0KCk7XG4gICAgdGhpcy5fZXZlbnRzKCk7XG5cbiAgICBGb3VuZGF0aW9uLnJlZ2lzdGVyUGx1Z2luKHRoaXMsICdSZXNwb25zaXZlQWNjb3JkaW9uVGFicycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBNZW51IGJ5IHBhcnNpbmcgdGhlIGNsYXNzZXMgZnJvbSB0aGUgJ2RhdGEtcmVzcG9uc2l2ZS1hY2NvcmRpb24tdGFicycgYXR0cmlidXRlIG9uIHRoZSBlbGVtZW50LlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9pbml0KCkge1xuICAgIC8vIFRoZSBmaXJzdCB0aW1lIGFuIEludGVyY2hhbmdlIHBsdWdpbiBpcyBpbml0aWFsaXplZCwgdGhpcy5ydWxlcyBpcyBjb252ZXJ0ZWQgZnJvbSBhIHN0cmluZyBvZiBcImNsYXNzZXNcIiB0byBhbiBvYmplY3Qgb2YgcnVsZXNcbiAgICBpZiAodHlwZW9mIHRoaXMucnVsZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgcnVsZXNUcmVlID0ge307XG5cbiAgICAgIC8vIFBhcnNlIHJ1bGVzIGZyb20gXCJjbGFzc2VzXCIgcHVsbGVkIGZyb20gZGF0YSBhdHRyaWJ1dGVcbiAgICAgIGxldCBydWxlcyA9IHRoaXMucnVsZXMuc3BsaXQoJyAnKTtcblxuICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGV2ZXJ5IHJ1bGUgZm91bmRcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IHJ1bGUgPSBydWxlc1tpXS5zcGxpdCgnLScpO1xuICAgICAgICBsZXQgcnVsZVNpemUgPSBydWxlLmxlbmd0aCA+IDEgPyBydWxlWzBdIDogJ3NtYWxsJztcbiAgICAgICAgbGV0IHJ1bGVQbHVnaW4gPSBydWxlLmxlbmd0aCA+IDEgPyBydWxlWzFdIDogcnVsZVswXTtcblxuICAgICAgICBpZiAoTWVudVBsdWdpbnNbcnVsZVBsdWdpbl0gIT09IG51bGwpIHtcbiAgICAgICAgICBydWxlc1RyZWVbcnVsZVNpemVdID0gTWVudVBsdWdpbnNbcnVsZVBsdWdpbl07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5ydWxlcyA9IHJ1bGVzVHJlZTtcbiAgICB9XG5cbiAgICB0aGlzLl9nZXRBbGxPcHRpb25zKCk7XG5cbiAgICBpZiAoISQuaXNFbXB0eU9iamVjdCh0aGlzLnJ1bGVzKSkge1xuICAgICAgdGhpcy5fY2hlY2tNZWRpYVF1ZXJpZXMoKTtcbiAgICB9XG4gIH1cblxuICBfZ2V0QWxsT3B0aW9ucygpIHtcbiAgICAvL2dldCBhbGwgZGVmYXVsdHMgYW5kIG9wdGlvbnNcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIF90aGlzLmFsbE9wdGlvbnMgPSB7fTtcbiAgICBmb3IgKHZhciBrZXkgaW4gTWVudVBsdWdpbnMpIHtcbiAgICAgIGlmIChNZW51UGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHZhciBvYmogPSBNZW51UGx1Z2luc1trZXldO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhciBkdW1teVBsdWdpbiA9ICQoJzx1bD48L3VsPicpO1xuICAgICAgICAgIHZhciB0bXBQbHVnaW4gPSBuZXcgb2JqLnBsdWdpbihkdW1teVBsdWdpbixfdGhpcy5vcHRpb25zKTtcbiAgICAgICAgICBmb3IgKHZhciBrZXlLZXkgaW4gdG1wUGx1Z2luLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0bXBQbHVnaW4ub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShrZXlLZXkpICYmIGtleUtleSAhPT0gJ3pmUGx1Z2luJykge1xuICAgICAgICAgICAgICB2YXIgb2JqT2JqID0gdG1wUGx1Z2luLm9wdGlvbnNba2V5S2V5XTtcbiAgICAgICAgICAgICAgX3RoaXMuYWxsT3B0aW9uc1trZXlLZXldID0gb2JqT2JqO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0bXBQbHVnaW4uZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoKGUpIHtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyBldmVudHMgZm9yIHRoZSBNZW51LlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9ldmVudHMoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICQod2luZG93KS5vbignY2hhbmdlZC56Zi5tZWRpYXF1ZXJ5JywgZnVuY3Rpb24oKSB7XG4gICAgICBfdGhpcy5fY2hlY2tNZWRpYVF1ZXJpZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgdGhlIGN1cnJlbnQgc2NyZWVuIHdpZHRoIGFnYWluc3QgYXZhaWxhYmxlIG1lZGlhIHF1ZXJpZXMuIElmIHRoZSBtZWRpYSBxdWVyeSBoYXMgY2hhbmdlZCwgYW5kIHRoZSBwbHVnaW4gbmVlZGVkIGhhcyBjaGFuZ2VkLCB0aGUgcGx1Z2lucyB3aWxsIHN3YXAgb3V0LlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9jaGVja01lZGlhUXVlcmllcygpIHtcbiAgICB2YXIgbWF0Y2hlZE1xLCBfdGhpcyA9IHRoaXM7XG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGVhY2ggcnVsZSBhbmQgZmluZCB0aGUgbGFzdCBtYXRjaGluZyBydWxlXG4gICAgJC5lYWNoKHRoaXMucnVsZXMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgaWYgKEZvdW5kYXRpb24uTWVkaWFRdWVyeS5hdExlYXN0KGtleSkpIHtcbiAgICAgICAgbWF0Y2hlZE1xID0ga2V5O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTm8gbWF0Y2g/IE5vIGRpY2VcbiAgICBpZiAoIW1hdGNoZWRNcSkgcmV0dXJuO1xuXG4gICAgLy8gUGx1Z2luIGFscmVhZHkgaW5pdGlhbGl6ZWQ/IFdlIGdvb2RcbiAgICBpZiAodGhpcy5jdXJyZW50UGx1Z2luIGluc3RhbmNlb2YgdGhpcy5ydWxlc1ttYXRjaGVkTXFdLnBsdWdpbikgcmV0dXJuO1xuXG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIHBsdWdpbi1zcGVjaWZpYyBDU1MgY2xhc3Nlc1xuICAgICQuZWFjaChNZW51UGx1Z2lucywgZnVuY3Rpb24oa2V5LCB2YWx1ZSkge1xuICAgICAgX3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3ModmFsdWUuY3NzQ2xhc3MpO1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIHRoZSBDU1MgY2xhc3MgZm9yIHRoZSBuZXcgcGx1Z2luXG4gICAgdGhpcy4kZWxlbWVudC5hZGRDbGFzcyh0aGlzLnJ1bGVzW21hdGNoZWRNcV0uY3NzQ2xhc3MpO1xuXG4gICAgLy8gQ3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBuZXcgcGx1Z2luXG4gICAgaWYgKHRoaXMuY3VycmVudFBsdWdpbikge1xuICAgICAgLy9kb24ndCBrbm93IHdoeSBidXQgb24gbmVzdGVkIGVsZW1lbnRzIGRhdGEgemZQbHVnaW4gZ2V0J3MgbG9zdFxuICAgICAgaWYgKCF0aGlzLmN1cnJlbnRQbHVnaW4uJGVsZW1lbnQuZGF0YSgnemZQbHVnaW4nKSAmJiB0aGlzLnN0b3JlemZEYXRhKSB0aGlzLmN1cnJlbnRQbHVnaW4uJGVsZW1lbnQuZGF0YSgnemZQbHVnaW4nLHRoaXMuc3RvcmV6ZkRhdGEpO1xuICAgICAgdGhpcy5jdXJyZW50UGx1Z2luLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5faGFuZGxlTWFya3VwKHRoaXMucnVsZXNbbWF0Y2hlZE1xXS5jc3NDbGFzcyk7XG4gICAgdGhpcy5jdXJyZW50UGx1Z2luID0gbmV3IHRoaXMucnVsZXNbbWF0Y2hlZE1xXS5wbHVnaW4odGhpcy4kZWxlbWVudCwge30pO1xuICAgIHRoaXMuc3RvcmV6ZkRhdGEgPSB0aGlzLmN1cnJlbnRQbHVnaW4uJGVsZW1lbnQuZGF0YSgnemZQbHVnaW4nKTtcblxuICB9XG5cbiAgX2hhbmRsZU1hcmt1cCh0b1NldCl7XG4gICAgdmFyIF90aGlzID0gdGhpcywgZnJvbVN0cmluZyA9ICdhY2NvcmRpb24nO1xuICAgIHZhciAkcGFuZWxzID0gJCgnW2RhdGEtdGFicy1jb250ZW50PScrdGhpcy4kZWxlbWVudC5hdHRyKCdpZCcpKyddJyk7XG4gICAgaWYgKCRwYW5lbHMubGVuZ3RoKSBmcm9tU3RyaW5nID0gJ3RhYnMnO1xuICAgIGlmIChmcm9tU3RyaW5nID09PSB0b1NldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH07XG5cbiAgICB2YXIgdGFic1RpdGxlID0gX3RoaXMuYWxsT3B0aW9ucy5saW5rQ2xhc3M/X3RoaXMuYWxsT3B0aW9ucy5saW5rQ2xhc3M6J3RhYnMtdGl0bGUnO1xuICAgIHZhciB0YWJzUGFuZWwgPSBfdGhpcy5hbGxPcHRpb25zLnBhbmVsQ2xhc3M/X3RoaXMuYWxsT3B0aW9ucy5wYW5lbENsYXNzOid0YWJzLXBhbmVsJztcblxuICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlQXR0cigncm9sZScpO1xuICAgIHZhciAkbGlIZWFkcyA9IHRoaXMuJGVsZW1lbnQuY2hpbGRyZW4oJy4nK3RhYnNUaXRsZSsnLFtkYXRhLWFjY29yZGlvbi1pdGVtXScpLnJlbW92ZUNsYXNzKHRhYnNUaXRsZSkucmVtb3ZlQ2xhc3MoJ2FjY29yZGlvbi1pdGVtJykucmVtb3ZlQXR0cignZGF0YS1hY2NvcmRpb24taXRlbScpO1xuICAgIHZhciAkbGlIZWFkc0EgPSAkbGlIZWFkcy5jaGlsZHJlbignYScpLnJlbW92ZUNsYXNzKCdhY2NvcmRpb24tdGl0bGUnKTtcblxuICAgIGlmIChmcm9tU3RyaW5nID09PSAndGFicycpIHtcbiAgICAgICRwYW5lbHMgPSAkcGFuZWxzLmNoaWxkcmVuKCcuJyt0YWJzUGFuZWwpLnJlbW92ZUNsYXNzKHRhYnNQYW5lbCkucmVtb3ZlQXR0cigncm9sZScpLnJlbW92ZUF0dHIoJ2FyaWEtaGlkZGVuJykucmVtb3ZlQXR0cignYXJpYS1sYWJlbGxlZGJ5Jyk7XG4gICAgICAkcGFuZWxzLmNoaWxkcmVuKCdhJykucmVtb3ZlQXR0cigncm9sZScpLnJlbW92ZUF0dHIoJ2FyaWEtY29udHJvbHMnKS5yZW1vdmVBdHRyKCdhcmlhLXNlbGVjdGVkJyk7XG4gICAgfWVsc2V7XG4gICAgICAkcGFuZWxzID0gJGxpSGVhZHMuY2hpbGRyZW4oJ1tkYXRhLXRhYi1jb250ZW50XScpLnJlbW92ZUNsYXNzKCdhY2NvcmRpb24tY29udGVudCcpO1xuICAgIH07XG5cbiAgICAkcGFuZWxzLmNzcyh7ZGlzcGxheTonJyx2aXNpYmlsaXR5OicnfSk7XG4gICAgJGxpSGVhZHMuY3NzKHtkaXNwbGF5OicnLHZpc2liaWxpdHk6Jyd9KTtcbiAgICBpZiAodG9TZXQgPT09ICdhY2NvcmRpb24nKSB7XG4gICAgICAkcGFuZWxzLmVhY2goZnVuY3Rpb24oa2V5LHZhbHVlKXtcbiAgICAgICAgJCh2YWx1ZSkuYXBwZW5kVG8oJGxpSGVhZHMuZ2V0KGtleSkpLmFkZENsYXNzKCdhY2NvcmRpb24tY29udGVudCcpLmF0dHIoJ2RhdGEtdGFiLWNvbnRlbnQnLCcnKS5yZW1vdmVDbGFzcygnaXMtYWN0aXZlJykuY3NzKHtoZWlnaHQ6Jyd9KTtcbiAgICAgICAgJCgnW2RhdGEtdGFicy1jb250ZW50PScrX3RoaXMuJGVsZW1lbnQuYXR0cignaWQnKSsnXScpLmFmdGVyKCc8ZGl2IGlkPVwidGFicy1wbGFjZWhvbGRlci0nK190aGlzLiRlbGVtZW50LmF0dHIoJ2lkJykrJ1wiPjwvZGl2PicpLnJlbW92ZSgpO1xuICAgICAgICAkbGlIZWFkcy5hZGRDbGFzcygnYWNjb3JkaW9uLWl0ZW0nKS5hdHRyKCdkYXRhLWFjY29yZGlvbi1pdGVtJywnJyk7XG4gICAgICAgICRsaUhlYWRzQS5hZGRDbGFzcygnYWNjb3JkaW9uLXRpdGxlJyk7XG4gICAgICB9KTtcbiAgICB9ZWxzZSBpZiAodG9TZXQgPT09ICd0YWJzJyl7XG4gICAgICB2YXIgJHRhYnNDb250ZW50ID0gJCgnW2RhdGEtdGFicy1jb250ZW50PScrX3RoaXMuJGVsZW1lbnQuYXR0cignaWQnKSsnXScpO1xuICAgICAgdmFyICRwbGFjZWhvbGRlciA9ICQoJyN0YWJzLXBsYWNlaG9sZGVyLScrX3RoaXMuJGVsZW1lbnQuYXR0cignaWQnKSk7XG4gICAgICBpZiAoJHBsYWNlaG9sZGVyLmxlbmd0aCkge1xuICAgICAgICAkdGFic0NvbnRlbnQgPSAkKCc8ZGl2IGNsYXNzPVwidGFicy1jb250ZW50XCI+PC9kaXY+JykuaW5zZXJ0QWZ0ZXIoJHBsYWNlaG9sZGVyKS5hdHRyKCdkYXRhLXRhYnMtY29udGVudCcsX3RoaXMuJGVsZW1lbnQuYXR0cignaWQnKSk7XG4gICAgICAgICRwbGFjZWhvbGRlci5yZW1vdmUoKTtcbiAgICAgIH1lbHNle1xuICAgICAgICAkdGFic0NvbnRlbnQgPSAkKCc8ZGl2IGNsYXNzPVwidGFicy1jb250ZW50XCI+PC9kaXY+JykuaW5zZXJ0QWZ0ZXIoX3RoaXMuJGVsZW1lbnQpLmF0dHIoJ2RhdGEtdGFicy1jb250ZW50JyxfdGhpcy4kZWxlbWVudC5hdHRyKCdpZCcpKTtcbiAgICAgIH07XG4gICAgICAkcGFuZWxzLmVhY2goZnVuY3Rpb24oa2V5LHZhbHVlKXtcbiAgICAgICAgdmFyIHRlbXBWYWx1ZSA9ICQodmFsdWUpLmFwcGVuZFRvKCR0YWJzQ29udGVudCkuYWRkQ2xhc3ModGFic1BhbmVsKTtcbiAgICAgICAgdmFyIGhhc2ggPSAkbGlIZWFkc0EuZ2V0KGtleSkuaGFzaC5zbGljZSgxKTtcbiAgICAgICAgdmFyIGlkID0gJCh2YWx1ZSkuYXR0cignaWQnKSB8fCBGb3VuZGF0aW9uLkdldFlvRGlnaXRzKDYsICdhY2NvcmRpb24nKTtcbiAgICAgICAgaWYgKGhhc2ggIT09IGlkKSB7XG4gICAgICAgICAgaWYgKGhhc2ggIT09ICcnKSB7XG4gICAgICAgICAgICAkKHZhbHVlKS5hdHRyKCdpZCcsaGFzaCk7XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBoYXNoID0gaWQ7XG4gICAgICAgICAgICAkKHZhbHVlKS5hdHRyKCdpZCcsaGFzaCk7XG4gICAgICAgICAgICAkKCRsaUhlYWRzQS5nZXQoa2V5KSkuYXR0cignaHJlZicsJCgkbGlIZWFkc0EuZ2V0KGtleSkpLmF0dHIoJ2hyZWYnKS5yZXBsYWNlKCcjJywnJykrJyMnK2hhc2gpO1xuICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIHZhciBpc0FjdGl2ZSA9ICQoJGxpSGVhZHMuZ2V0KGtleSkpLmhhc0NsYXNzKCdpcy1hY3RpdmUnKTtcbiAgICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgICAgdGVtcFZhbHVlLmFkZENsYXNzKCdpcy1hY3RpdmUnKTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgJGxpSGVhZHMuYWRkQ2xhc3ModGFic1RpdGxlKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSBpbnN0YW5jZSBvZiB0aGUgY3VycmVudCBwbHVnaW4gb24gdGhpcyBlbGVtZW50LCBhcyB3ZWxsIGFzIHRoZSB3aW5kb3cgcmVzaXplIGhhbmRsZXIgdGhhdCBzd2l0Y2hlcyB0aGUgcGx1Z2lucyBvdXQuXG4gICAqIEBmdW5jdGlvblxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50UGx1Z2luKSB0aGlzLmN1cnJlbnRQbHVnaW4uZGVzdHJveSgpO1xuICAgICQod2luZG93KS5vZmYoJy56Zi5SZXNwb25zaXZlQWNjb3JkaW9uVGFicycpO1xuICAgIEZvdW5kYXRpb24udW5yZWdpc3RlclBsdWdpbih0aGlzKTtcbiAgfVxufVxuXG5SZXNwb25zaXZlQWNjb3JkaW9uVGFicy5kZWZhdWx0cyA9IHt9O1xuXG4vLyBUaGUgcGx1Z2luIG1hdGNoZXMgdGhlIHBsdWdpbiBjbGFzc2VzIHdpdGggdGhlc2UgcGx1Z2luIGluc3RhbmNlcy5cbnZhciBNZW51UGx1Z2lucyA9IHtcbiAgdGFiczoge1xuICAgIGNzc0NsYXNzOiAndGFicycsXG4gICAgcGx1Z2luOiBGb3VuZGF0aW9uLl9wbHVnaW5zLnRhYnMgfHwgbnVsbFxuICB9LFxuICBhY2NvcmRpb246IHtcbiAgICBjc3NDbGFzczogJ2FjY29yZGlvbicsXG4gICAgcGx1Z2luOiBGb3VuZGF0aW9uLl9wbHVnaW5zLmFjY29yZGlvbiB8fCBudWxsXG4gIH1cbn07XG5cbi8vIFdpbmRvdyBleHBvcnRzXG5Gb3VuZGF0aW9uLnBsdWdpbihSZXNwb25zaXZlQWNjb3JkaW9uVGFicywgJ1Jlc3BvbnNpdmVBY2NvcmRpb25UYWJzJyk7XG5cbn0oalF1ZXJ5KTtcbiIsIlxuLyoqXG4gKiBDcmVhdGVkIGJ5IGpvbiBvbiAxMi8xMi8xNi5cbiAqL1xuXG4hZnVuY3Rpb24oZSxkZWZpbmUpe2RlZmluZShcImtlbmRvLmNvcmUubWluXCIsW1wianF1ZXJ5XCJdLGUpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBvKGUsdCl7aWYodClyZXR1cm5cIidcIitlLnNwbGl0KFwiJ1wiKS5qb2luKFwiXFxcXCdcIikuc3BsaXQoJ1xcXFxcIicpLmpvaW4oJ1xcXFxcXFxcXFxcXFwiJykucmVwbGFjZSgvXFxuL2csXCJcXFxcblwiKS5yZXBsYWNlKC9cXHIvZyxcIlxcXFxyXCIpLnJlcGxhY2UoL1xcdC9nLFwiXFxcXHRcIikrXCInXCI7dmFyIG49ZS5jaGFyQXQoMCkscj1lLnN1YnN0cmluZygxKTtyZXR1cm5cIj1cIj09PW4/XCIrKFwiK3IrXCIpK1wiOlwiOlwiPT09bj9cIiska2VuZG9IdG1sRW5jb2RlKFwiK3IrXCIpK1wiOlwiO1wiK2UrXCI7JGtlbmRvT3V0cHV0Kz1cIn1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZSs9XCJcIix0PXR8fDIsbj10LWUubGVuZ3RoLG4/V1t0XS5zdWJzdHJpbmcoMCxuKStlOmV9ZnVuY3Rpb24gYShlKXt2YXIgdD1lLmNzcyh5ZS5zdXBwb3J0LnRyYW5zaXRpb25zLmNzcytcImJveC1zaGFkb3dcIil8fGUuY3NzKFwiYm94LXNoYWRvd1wiKSxuPXQ/dC5tYXRjaChEZSl8fFswLDAsMCwwLDBdOlswLDAsMCwwLDBdLHI9VGUubWF4KCtuWzNdLCsobls0XXx8MCkpO3JldHVybntsZWZ0Oi1uWzFdK3IscmlnaHQ6K25bMV0rcixib3R0b206K25bMl0rcn19ZnVuY3Rpb24gcyh0LG4pe3ZhciByLG8saSxhLHMsdSxsLGM9a2UuYnJvd3NlcixkPXllLl9vdXRlcldpZHRoLGY9eWUuX291dGVySGVpZ2h0O3JldHVybiB0LnBhcmVudCgpLmhhc0NsYXNzKFwiay1hbmltYXRpb24tY29udGFpbmVyXCIpPyh1PXQucGFyZW50KFwiLmstYW5pbWF0aW9uLWNvbnRhaW5lclwiKSxsPXVbMF0uc3R5bGUsdS5pcyhcIjpoaWRkZW5cIikmJnUuc2hvdygpLHI9T2UudGVzdChsLndpZHRoKXx8T2UudGVzdChsLmhlaWdodCkscnx8dS5jc3Moe3dpZHRoOmQodCksaGVpZ2h0OmYodCksYm94U2l6aW5nOlwiY29udGVudC1ib3hcIixtb3pCb3hTaXppbmc6XCJjb250ZW50LWJveFwiLHdlYmtpdEJveFNpemluZzpcImNvbnRlbnQtYm94XCJ9KSk6KG89dFswXS5zdHlsZS53aWR0aCxpPXRbMF0uc3R5bGUuaGVpZ2h0LGE9T2UudGVzdChvKSxzPU9lLnRlc3QoaSkscj1hfHxzLCFhJiYoIW58fG4mJm8pJiYobz1kKHQpKSwhcyYmKCFufHxuJiZpKSYmKGk9Zih0KSksdC53cmFwKGUoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJrLWFuaW1hdGlvbi1jb250YWluZXJcIikuY3NzKHt3aWR0aDpvLGhlaWdodDppfSkpLHImJnQuY3NzKHt3aWR0aDpcIjEwMCVcIixoZWlnaHQ6XCIxMDAlXCIsYm94U2l6aW5nOlwiYm9yZGVyLWJveFwiLG1vekJveFNpemluZzpcImJvcmRlci1ib3hcIix3ZWJraXRCb3hTaXppbmc6XCJib3JkZXItYm94XCJ9KSksYy5tc2llJiZUZS5mbG9vcihjLnZlcnNpb24pPD03JiYodC5jc3Moe3pvb206MX0pLHQuY2hpbGRyZW4oXCIuay1tZW51XCIpLndpZHRoKHQud2lkdGgoKSkpLHQucGFyZW50KCl9ZnVuY3Rpb24gdShlKXt2YXIgdD0xLG49YXJndW1lbnRzLmxlbmd0aDtmb3IodD0xO3Q8bjt0KyspbChlLGFyZ3VtZW50c1t0XSk7cmV0dXJuIGV9ZnVuY3Rpb24gbChlLHQpe3ZhciBuLHIsbyxpLGEscz15ZS5kYXRhLk9ic2VydmFibGVBcnJheSx1PXllLmRhdGEuTGF6eU9ic2VydmFibGVBcnJheSxjPXllLmRhdGEuRGF0YVNvdXJjZSxkPXllLmRhdGEuSGllcmFyY2hpY2FsRGF0YVNvdXJjZTtmb3IobiBpbiB0KXI9dFtuXSxvPXR5cGVvZiByLGk9bz09PUFlJiZudWxsIT09cj9yLmNvbnN0cnVjdG9yOm51bGwsaSYmaSE9PUFycmF5JiZpIT09cyYmaSE9PXUmJmkhPT1jJiZpIT09ZD9yIGluc3RhbmNlb2YgRGF0ZT9lW25dPW5ldyBEYXRlKHIuZ2V0VGltZSgpKTpfKHIuY2xvbmUpP2Vbbl09ci5jbG9uZSgpOihhPWVbbl0sZVtuXT10eXBlb2YgYT09PUFlP2F8fHt9Ont9LGwoZVtuXSxyKSk6byE9PUZlJiYoZVtuXT1yKTtyZXR1cm4gZX1mdW5jdGlvbiBjKGUsdCxyKXtmb3IodmFyIG8gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG8pJiZ0W29dLnRlc3QoZSkpcmV0dXJuIG87cmV0dXJuIHIhPT1uP3I6ZX1mdW5jdGlvbiBkKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbYS16XVtBLVpdKS9nLGZ1bmN0aW9uKGUpe3JldHVybiBlLmNoYXJBdCgwKStcIi1cIitlLmNoYXJBdCgxKS50b0xvd2VyQ2FzZSgpfSl9ZnVuY3Rpb24gZihlKXtyZXR1cm4gZS5yZXBsYWNlKC9cXC0oXFx3KS9nLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX0pfWZ1bmN0aW9uIG0odCxuKXt2YXIgcixvPXt9O3JldHVybiBkb2N1bWVudC5kZWZhdWx0VmlldyYmZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZT8ocj1kb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQsXCJcIiksbiYmZS5lYWNoKG4sZnVuY3Rpb24oZSx0KXtvW3RdPXIuZ2V0UHJvcGVydHlWYWx1ZSh0KX0pKToocj10LmN1cnJlbnRTdHlsZSxuJiZlLmVhY2gobixmdW5jdGlvbihlLHQpe29bdF09cltmKHQpXX0pKSx5ZS5zaXplKG8pfHwobz1yKSxvfWZ1bmN0aW9uIHAoZSl7aWYoZSYmZS5jbGFzc05hbWUmJlwic3RyaW5nXCI9PXR5cGVvZiBlLmNsYXNzTmFtZSYmZS5jbGFzc05hbWUuaW5kZXhPZihcImstYXV0by1zY3JvbGxhYmxlXCIpPi0xKXJldHVybiEwO3ZhciB0PW0oZSxbXCJvdmVyZmxvd1wiXSkub3ZlcmZsb3c7cmV0dXJuXCJhdXRvXCI9PXR8fFwic2Nyb2xsXCI9PXR9ZnVuY3Rpb24gaCh0LHIpe3ZhciBvLGk9a2UuYnJvd3Nlci53ZWJraXQsYT1rZS5icm93c2VyLm1vemlsbGEscz10IGluc3RhbmNlb2YgZT90WzBdOnQ7aWYodClyZXR1cm4gbz1rZS5pc1J0bCh0KSxyPT09bj9vJiZpP3Muc2Nyb2xsV2lkdGgtcy5jbGllbnRXaWR0aC1zLnNjcm9sbExlZnQ6TWF0aC5hYnMocy5zY3JvbGxMZWZ0KToocy5zY3JvbGxMZWZ0PW8mJmk/cy5zY3JvbGxXaWR0aC1zLmNsaWVudFdpZHRoLXI6byYmYT8tcjpyLG4pfWZ1bmN0aW9uIGcoZSl7dmFyIHQsbj0wO2Zvcih0IGluIGUpZS5oYXNPd25Qcm9wZXJ0eSh0KSYmXCJ0b0pTT05cIiE9dCYmbisrO3JldHVybiBufWZ1bmN0aW9uIHkoZSxuLHIpe3ZhciBvLGksYTtyZXR1cm4gbnx8KG49XCJvZmZzZXRcIiksbz1lW25dKCksaT17dG9wOm8udG9wLHJpZ2h0Om8ucmlnaHQsYm90dG9tOm8uYm90dG9tLGxlZnQ6by5sZWZ0fSxrZS5icm93c2VyLm1zaWUmJihrZS5wb2ludGVyc3x8a2UubXNQb2ludGVycykmJiFyJiYoYT1rZS5pc1J0bChlKT8xOi0xLGkudG9wLT10LnBhZ2VZT2Zmc2V0K2EqZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCxpLmxlZnQtPXQucGFnZVhPZmZzZXQrYSpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCksaX1mdW5jdGlvbiB2KGUpe3ZhciB0PXt9O3JldHVybiBiZShcInN0cmluZ1wiPT10eXBlb2YgZT9lLnNwbGl0KFwiIFwiKTplLGZ1bmN0aW9uKGUpe3RbZV09dGhpc30pLHR9ZnVuY3Rpb24gYihlKXtyZXR1cm4gbmV3IHllLmVmZmVjdHMuRWxlbWVudChlKX1mdW5jdGlvbiB3KGUsdCxuLHIpe3JldHVybiB0eXBlb2YgZT09PUhlJiYoXyh0KSYmKHI9dCx0PTQwMCxuPSExKSxfKG4pJiYocj1uLG49ITEpLHR5cGVvZiB0PT09UGUmJihuPXQsdD00MDApLGU9e2VmZmVjdHM6ZSxkdXJhdGlvbjp0LHJldmVyc2U6bixjb21wbGV0ZTpyfSksdmUoe2VmZmVjdHM6e30sZHVyYXRpb246NDAwLHJldmVyc2U6ITEsaW5pdDpTZSx0ZWFyZG93bjpTZSxoaWRlOiExfSxlLHtjb21wbGV0ZUNhbGxiYWNrOmUuY29tcGxldGUsY29tcGxldGU6U2V9KX1mdW5jdGlvbiBNKHQsbixyLG8saSl7Zm9yKHZhciBhLHM9MCx1PXQubGVuZ3RoO3M8dTtzKyspYT1lKHRbc10pLGEucXVldWUoZnVuY3Rpb24oKXtCLnByb21pc2UoYSx3KG4scixvLGkpKX0pO3JldHVybiB0fWZ1bmN0aW9uIFMoZSx0LG4scil7cmV0dXJuIHQmJih0PXQuc3BsaXQoXCIgXCIpLGJlKHQsZnVuY3Rpb24odCxuKXtlLnRvZ2dsZUNsYXNzKG4scil9KSksZX1mdW5jdGlvbiBUKGUpe3JldHVybihcIlwiK2UpLnJlcGxhY2UoSixcIiZhbXA7XCIpLnJlcGxhY2UoWSxcIiZsdDtcIikucmVwbGFjZShHLFwiJmd0O1wiKS5yZXBsYWNlKHEsXCImcXVvdDtcIikucmVwbGFjZShWLFwiJiMzOTtcIil9ZnVuY3Rpb24geChlLHQpe3ZhciByO3JldHVybiAwPT09dC5pbmRleE9mKFwiZGF0YVwiKSYmKHQ9dC5zdWJzdHJpbmcoNCksdD10LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpK3Quc3Vic3RyaW5nKDEpKSx0PXQucmVwbGFjZShvZSxcIi0kMVwiKSxyPWUuZ2V0QXR0cmlidXRlKFwiZGF0YS1cIit5ZS5ucyt0KSxudWxsPT09cj9yPW46XCJudWxsXCI9PT1yP3I9bnVsbDpcInRydWVcIj09PXI/cj0hMDpcImZhbHNlXCI9PT1yP3I9ITE6Q2UudGVzdChyKT9yPXBhcnNlRmxvYXQocik6bmUudGVzdChyKSYmIXJlLnRlc3QocikmJihyPUZ1bmN0aW9uKFwicmV0dXJuIChcIityK1wiKVwiKSgpKSxyfWZ1bmN0aW9uIGsodCxyKXt2YXIgbyxpLGE9e307Zm9yKG8gaW4gcilpPXgodCxvKSxpIT09biYmKHRlLnRlc3QobykmJihpPXllLnRlbXBsYXRlKGUoXCIjXCIraSkuaHRtbCgpKSksYVtvXT1pKTtyZXR1cm4gYX1mdW5jdGlvbiBPKHQsbil7cmV0dXJuIGUuY29udGFpbnModCxuKT8tMToxfWZ1bmN0aW9uIHooKXt2YXIgdD1lKHRoaXMpO3JldHVybiBlLmluQXJyYXkodC5hdHRyKFwiZGF0YS1cIit5ZS5ucytcInJvbGVcIiksW1wic2xpZGVyXCIsXCJyYW5nZXNsaWRlclwiXSk+LTF8fHQuaXMoXCI6dmlzaWJsZVwiKX1mdW5jdGlvbiBEKGUsdCl7dmFyIG49ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybigvaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxvYmplY3QvLnRlc3Qobik/IWUuZGlzYWJsZWQ6XCJhXCI9PT1uP2UuaHJlZnx8dDp0KSYmQyhlKX1mdW5jdGlvbiBDKHQpe3JldHVybiBlLmV4cHIuZmlsdGVycy52aXNpYmxlKHQpJiYhZSh0KS5wYXJlbnRzKCkuYWRkQmFjaygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVyblwiaGlkZGVuXCI9PT1lLmNzcyh0aGlzLFwidmlzaWJpbGl0eVwiKX0pLmxlbmd0aH1mdW5jdGlvbiBFKGUsdCl7cmV0dXJuIG5ldyBFLmZuLmluaXQoZSx0KX12YXIgSCxfLEEsTixQLEYsUixVLEksJCxMLFcsaixCLEosWSxxLFYsRyxLLFEsWixYLGVlLHRlLG5lLHJlLG9lLGllLGFlLHNlLHVlLGxlLGNlLGRlLGZlLG1lLHBlLGhlLGdlLHllPXQua2VuZG89dC5rZW5kb3x8e2N1bHR1cmVzOnt9fSx2ZT1lLmV4dGVuZCxiZT1lLmVhY2gsd2U9ZS5pc0FycmF5LE1lPWUucHJveHksU2U9ZS5ub29wLFRlPU1hdGgseGU9dC5KU09OfHx7fSxrZT17fSxPZT0vJS8semU9L1xceyhcXGQrKSg6W15cXH1dKyk/XFx9L2csRGU9LyhcXGQrKD86XFwuPylcXGQqKXB4XFxzKihcXGQrKD86XFwuPylcXGQqKXB4XFxzKihcXGQrKD86XFwuPylcXGQqKXB4XFxzKihcXGQrKT8vaSxDZT0vXihcXCt8LT8pXFxkKyhcXC4/KVxcZCokLyxFZT1cImZ1bmN0aW9uXCIsSGU9XCJzdHJpbmdcIixfZT1cIm51bWJlclwiLEFlPVwib2JqZWN0XCIsTmU9XCJudWxsXCIsUGU9XCJib29sZWFuXCIsRmU9XCJ1bmRlZmluZWRcIixSZT17fSxVZT17fSxJZT1bXS5zbGljZTt5ZS52ZXJzaW9uPVwiMjAxNi4zLjExMThcIi5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLFwiXCIpLHIuZXh0ZW5kPWZ1bmN0aW9uKGUpe3ZhciB0LG4scj1mdW5jdGlvbigpe30sbz10aGlzLGk9ZSYmZS5pbml0P2UuaW5pdDpmdW5jdGlvbigpe28uYXBwbHkodGhpcyxhcmd1bWVudHMpfTtyLnByb3RvdHlwZT1vLnByb3RvdHlwZSxuPWkuZm49aS5wcm90b3R5cGU9bmV3IHI7Zm9yKHQgaW4gZSluW3RdPW51bGwhPWVbdF0mJmVbdF0uY29uc3RydWN0b3I9PT1PYmplY3Q/dmUoITAse30sci5wcm90b3R5cGVbdF0sZVt0XSk6ZVt0XTtyZXR1cm4gbi5jb25zdHJ1Y3Rvcj1pLGkuZXh0ZW5kPW8uZXh0ZW5kLGl9LHIucHJvdG90eXBlLl9pbml0T3B0aW9ucz1mdW5jdGlvbihlKXt0aGlzLm9wdGlvbnM9dSh7fSx0aGlzLm9wdGlvbnMsZSl9LF89eWUuaXNGdW5jdGlvbj1mdW5jdGlvbihlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlfSxBPWZ1bmN0aW9uKCl7dGhpcy5fZGVmYXVsdFByZXZlbnRlZD0hMH0sTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZhdWx0UHJldmVudGVkPT09ITB9LFA9ci5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oKXt0aGlzLl9ldmVudHM9e319LGJpbmQ6ZnVuY3Rpb24oZSx0LHIpe3ZhciBvLGksYSxzLHUsbD10aGlzLGM9dHlwZW9mIGU9PT1IZT9bZV06ZSxkPXR5cGVvZiB0PT09RWU7aWYodD09PW4pe2ZvcihvIGluIGUpbC5iaW5kKG8sZVtvXSk7cmV0dXJuIGx9Zm9yKG89MCxpPWMubGVuZ3RoO288aTtvKyspZT1jW29dLHM9ZD90OnRbZV0scyYmKHImJihhPXMscz1mdW5jdGlvbigpe2wudW5iaW5kKGUscyksYS5hcHBseShsLGFyZ3VtZW50cyl9LHMub3JpZ2luYWw9YSksdT1sLl9ldmVudHNbZV09bC5fZXZlbnRzW2VdfHxbXSx1LnB1c2gocykpO3JldHVybiBsfSxvbmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5iaW5kKGUsdCwhMCl9LGZpcnN0OmZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGksYT10aGlzLHM9dHlwZW9mIGU9PT1IZT9bZV06ZSx1PXR5cGVvZiB0PT09RWU7Zm9yKG49MCxyPXMubGVuZ3RoO248cjtuKyspZT1zW25dLG89dT90OnRbZV0sbyYmKGk9YS5fZXZlbnRzW2VdPWEuX2V2ZW50c1tlXXx8W10saS51bnNoaWZ0KG8pKTtyZXR1cm4gYX0sdHJpZ2dlcjpmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz10aGlzLGk9by5fZXZlbnRzW2VdO2lmKGkpe2Zvcih0PXR8fHt9LHQuc2VuZGVyPW8sdC5fZGVmYXVsdFByZXZlbnRlZD0hMSx0LnByZXZlbnREZWZhdWx0PUEsdC5pc0RlZmF1bHRQcmV2ZW50ZWQ9TixpPWkuc2xpY2UoKSxuPTAscj1pLmxlbmd0aDtuPHI7bisrKWlbbl0uY2FsbChvLHQpO3JldHVybiB0Ll9kZWZhdWx0UHJldmVudGVkPT09ITB9cmV0dXJuITF9LHVuYmluZDpmdW5jdGlvbihlLHQpe3ZhciByLG89dGhpcyxpPW8uX2V2ZW50c1tlXTtpZihlPT09bilvLl9ldmVudHM9e307ZWxzZSBpZihpKWlmKHQpZm9yKHI9aS5sZW5ndGgtMTtyPj0wO3ItLSlpW3JdIT09dCYmaVtyXS5vcmlnaW5hbCE9PXR8fGkuc3BsaWNlKHIsMSk7ZWxzZSBvLl9ldmVudHNbZV09W107cmV0dXJuIG99fSksRj0vXlxcdysvLFI9L1xcJFxceyhbXn1dKilcXH0vZyxVPS9cXFxcXFx9L2csST0vX19DVVJMWV9fL2csJD0vXFxcXCMvZyxMPS9fX1NIQVJQX18vZyxXPVtcIlwiLFwiMFwiLFwiMDBcIixcIjAwMFwiLFwiMDAwMFwiXSxIPXtwYXJhbU5hbWU6XCJkYXRhXCIsdXNlV2l0aEJsb2NrOiEwLHJlbmRlcjpmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1cIlwiO2ZvcihuPTAscj10Lmxlbmd0aDtuPHI7bisrKW8rPWUodFtuXSk7cmV0dXJuIG99LGNvbXBpbGU6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksYT12ZSh7fSx0aGlzLHQpLHM9YS5wYXJhbU5hbWUsdT1zLm1hdGNoKEYpWzBdLGw9YS51c2VXaXRoQmxvY2ssYz1cInZhciAka2VuZG9PdXRwdXQsICRrZW5kb0h0bWxFbmNvZGUgPSBrZW5kby5odG1sRW5jb2RlO1wiO2lmKF8oZSkpcmV0dXJuIGU7Zm9yKGMrPWw/XCJ3aXRoKFwiK3MrXCIpe1wiOlwiXCIsYys9XCIka2VuZG9PdXRwdXQ9XCIscj1lLnJlcGxhY2UoVSxcIl9fQ1VSTFlfX1wiKS5yZXBsYWNlKFIsXCIjPSRrZW5kb0h0bWxFbmNvZGUoJDEpI1wiKS5yZXBsYWNlKEksXCJ9XCIpLnJlcGxhY2UoJCxcIl9fU0hBUlBfX1wiKS5zcGxpdChcIiNcIiksaT0wO2k8ci5sZW5ndGg7aSsrKWMrPW8ocltpXSxpJTI9PT0wKTtjKz1sP1wiO31cIjpcIjtcIixjKz1cInJldHVybiAka2VuZG9PdXRwdXQ7XCIsYz1jLnJlcGxhY2UoTCxcIiNcIik7dHJ5e3JldHVybiBuPUZ1bmN0aW9uKHUsYyksbi5fc2xvdENvdW50PU1hdGguZmxvb3Ioci5sZW5ndGgvMiksbn1jYXRjaChkKXt0aHJvdyBFcnJvcih5ZS5mb3JtYXQoXCJJbnZhbGlkIHRlbXBsYXRlOid7MH0nIEdlbmVyYXRlZCBjb2RlOid7MX0nXCIsZSxjKSl9fX0sZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3JldHVybiBhLmxhc3RJbmRleD0wLGEudGVzdChlKT8nXCInK2UucmVwbGFjZShhLGZ1bmN0aW9uKGUpe3ZhciB0PXNbZV07cmV0dXJuIHR5cGVvZiB0PT09SGU/dDpcIlxcXFx1XCIrKFwiMDAwMFwiK2UuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KX0pKydcIic6J1wiJytlKydcIid9ZnVuY3Rpb24gdChpLGEpe3ZhciBzLGwsYyxkLGYsbSxwPW4saD1hW2ldO2lmKGgmJnR5cGVvZiBoPT09QWUmJnR5cGVvZiBoLnRvSlNPTj09PUVlJiYoaD1oLnRvSlNPTihpKSksdHlwZW9mIG89PT1FZSYmKGg9by5jYWxsKGEsaSxoKSksbT10eXBlb2YgaCxtPT09SGUpcmV0dXJuIGUoaCk7aWYobT09PV9lKXJldHVybiBpc0Zpbml0ZShoKT9oK1wiXCI6TmU7aWYobT09PVBlfHxtPT09TmUpcmV0dXJuIGgrXCJcIjtpZihtPT09QWUpe2lmKCFoKXJldHVybiBOZTtpZihuKz1yLGY9W10sXCJbb2JqZWN0IEFycmF5XVwiPT09dS5hcHBseShoKSl7Zm9yKGQ9aC5sZW5ndGgscz0wO3M8ZDtzKyspZltzXT10KHMsaCl8fE5lO3JldHVybiBjPTA9PT1mLmxlbmd0aD9cIltdXCI6bj9cIltcXG5cIituK2Yuam9pbihcIixcXG5cIituKStcIlxcblwiK3ArXCJdXCI6XCJbXCIrZi5qb2luKFwiLFwiKStcIl1cIixuPXAsY31pZihvJiZ0eXBlb2Ygbz09PUFlKWZvcihkPW8ubGVuZ3RoLHM9MDtzPGQ7cysrKXR5cGVvZiBvW3NdPT09SGUmJihsPW9bc10sYz10KGwsaCksYyYmZi5wdXNoKGUobCkrKG4/XCI6IFwiOlwiOlwiKStjKSk7ZWxzZSBmb3IobCBpbiBoKU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKGgsbCkmJihjPXQobCxoKSxjJiZmLnB1c2goZShsKSsobj9cIjogXCI6XCI6XCIpK2MpKTtyZXR1cm4gYz0wPT09Zi5sZW5ndGg/XCJ7fVwiOm4/XCJ7XFxuXCIrbitmLmpvaW4oXCIsXFxuXCIrbikrXCJcXG5cIitwK1wifVwiOlwie1wiK2Yuam9pbihcIixcIikrXCJ9XCIsbj1wLGN9fXZhciBuLHIsbyxhPS9bXFxcXFxcXCJcXHgwMC1cXHgxZlxceDdmLVxceDlmXFx1MDBhZFxcdTA2MDAtXFx1MDYwNFxcdTA3MGZcXHUxN2I0XFx1MTdiNVxcdTIwMGMtXFx1MjAwZlxcdTIwMjgtXFx1MjAyZlxcdTIwNjAtXFx1MjA2ZlxcdWZlZmZcXHVmZmYwLVxcdWZmZmZdL2cscz17XCJcXGJcIjpcIlxcXFxiXCIsXCJcXHRcIjpcIlxcXFx0XCIsXCJcXG5cIjpcIlxcXFxuXCIsXCJcXGZcIjpcIlxcXFxmXCIsXCJcXHJcIjpcIlxcXFxyXCIsJ1wiJzonXFxcXFwiJyxcIlxcXFxcIjpcIlxcXFxcXFxcXCJ9LHU9e30udG9TdHJpbmc7dHlwZW9mIERhdGUucHJvdG90eXBlLnRvSlNPTiE9PUVlJiYoRGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gaXNGaW5pdGUoZS52YWx1ZU9mKCkpP2koZS5nZXRVVENGdWxsWWVhcigpLDQpK1wiLVwiK2koZS5nZXRVVENNb250aCgpKzEpK1wiLVwiK2koZS5nZXRVVENEYXRlKCkpK1wiVFwiK2koZS5nZXRVVENIb3VycygpKStcIjpcIitpKGUuZ2V0VVRDTWludXRlcygpKStcIjpcIitpKGUuZ2V0VVRDU2Vjb25kcygpKStcIlpcIjpudWxsfSxTdHJpbmcucHJvdG90eXBlLnRvSlNPTj1OdW1iZXIucHJvdG90eXBlLnRvSlNPTj1Cb29sZWFuLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZU9mKCl9KSx0eXBlb2YgeGUuc3RyaW5naWZ5IT09RWUmJih4ZS5zdHJpbmdpZnk9ZnVuY3Rpb24oZSxpLGEpe3ZhciBzO2lmKG49XCJcIixyPVwiXCIsdHlwZW9mIGE9PT1fZSlmb3Iocz0wO3M8YTtzKz0xKXIrPVwiIFwiO2Vsc2UgdHlwZW9mIGE9PT1IZSYmKHI9YSk7aWYobz1pLGkmJnR5cGVvZiBpIT09RWUmJih0eXBlb2YgaSE9PUFlfHx0eXBlb2YgaS5sZW5ndGghPT1fZSkpdGhyb3cgRXJyb3IoXCJKU09OLnN0cmluZ2lmeVwiKTtyZXR1cm4gdChcIlwiLHtcIlwiOmV9KX0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtpZihlKXtpZihlLm51bWJlckZvcm1hdClyZXR1cm4gZTtpZih0eXBlb2YgZT09PUhlKXt2YXIgdD15ZS5jdWx0dXJlcztyZXR1cm4gdFtlXXx8dFtlLnNwbGl0KFwiLVwiKVswXV18fG51bGx9cmV0dXJuIG51bGx9cmV0dXJuIG51bGx9ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmKGU9dChlKSksZXx8eWUuY3VsdHVyZXMuY3VycmVudH1mdW5jdGlvbiBvKGUsdCxvKXtvPXIobyk7dmFyIGE9by5jYWxlbmRhcnMuc3RhbmRhcmQscz1hLmRheXMsdT1hLm1vbnRocztyZXR1cm4gdD1hLnBhdHRlcm5zW3RdfHx0LHQucmVwbGFjZShjLGZ1bmN0aW9uKHQpe3ZhciByLG8sbDtyZXR1cm5cImRcIj09PXQ/bz1lLmdldERhdGUoKTpcImRkXCI9PT10P289aShlLmdldERhdGUoKSk6XCJkZGRcIj09PXQ/bz1zLm5hbWVzQWJicltlLmdldERheSgpXTpcImRkZGRcIj09PXQ/bz1zLm5hbWVzW2UuZ2V0RGF5KCldOlwiTVwiPT09dD9vPWUuZ2V0TW9udGgoKSsxOlwiTU1cIj09PXQ/bz1pKGUuZ2V0TW9udGgoKSsxKTpcIk1NTVwiPT09dD9vPXUubmFtZXNBYmJyW2UuZ2V0TW9udGgoKV06XCJNTU1NXCI9PT10P289dS5uYW1lc1tlLmdldE1vbnRoKCldOlwieXlcIj09PXQ/bz1pKGUuZ2V0RnVsbFllYXIoKSUxMDApOlwieXl5eVwiPT09dD9vPWkoZS5nZXRGdWxsWWVhcigpLDQpOlwiaFwiPT09dD9vPWUuZ2V0SG91cnMoKSUxMnx8MTI6XCJoaFwiPT09dD9vPWkoZS5nZXRIb3VycygpJTEyfHwxMik6XCJIXCI9PT10P289ZS5nZXRIb3VycygpOlwiSEhcIj09PXQ/bz1pKGUuZ2V0SG91cnMoKSk6XCJtXCI9PT10P289ZS5nZXRNaW51dGVzKCk6XCJtbVwiPT09dD9vPWkoZS5nZXRNaW51dGVzKCkpOlwic1wiPT09dD9vPWUuZ2V0U2Vjb25kcygpOlwic3NcIj09PXQ/bz1pKGUuZ2V0U2Vjb25kcygpKTpcImZcIj09PXQ/bz1UZS5mbG9vcihlLmdldE1pbGxpc2Vjb25kcygpLzEwMCk6XCJmZlwiPT09dD8obz1lLmdldE1pbGxpc2Vjb25kcygpLG8+OTkmJihvPVRlLmZsb29yKG8vMTApKSxvPWkobykpOlwiZmZmXCI9PT10P289aShlLmdldE1pbGxpc2Vjb25kcygpLDMpOlwidHRcIj09PXQ/bz1lLmdldEhvdXJzKCk8MTI/YS5BTVswXTphLlBNWzBdOlwienp6XCI9PT10PyhyPWUuZ2V0VGltZXpvbmVPZmZzZXQoKSxsPXI8MCxvPShcIlwiK1RlLmFicyhyLzYwKSkuc3BsaXQoXCIuXCIpWzBdLHI9VGUuYWJzKHIpLTYwKm8sbz0obD9cIitcIjpcIi1cIikraShvKSxvKz1cIjpcIitpKHIpKTpcInp6XCIhPT10JiZcInpcIiE9PXR8fChvPWUuZ2V0VGltZXpvbmVPZmZzZXQoKS82MCxsPW88MCxvPShcIlwiK1RlLmFicyhvKSkuc3BsaXQoXCIuXCIpWzBdLG89KGw/XCIrXCI6XCItXCIpKyhcInp6XCI9PT10P2kobyk6bykpLG8hPT1uP286dC5zbGljZSgxLHQubGVuZ3RoLTEpfSl9ZnVuY3Rpb24gYShlLHQsbyl7bz1yKG8pO3ZhciBpLGEsbCxjLHcsTSxTLFQseCxrLE8seixELEMsRSxILF8sQSxOLFAsRixSLFUsST1vLm51bWJlckZvcm1hdCwkPUlbaF0sTD1JLmRlY2ltYWxzLFc9SS5wYXR0ZXJuWzBdLGo9W10sQj1lPDAsSj1wLFk9cCxxPS0xO2lmKGU9PT1uKXJldHVybiBwO2lmKCFpc0Zpbml0ZShlKSlyZXR1cm4gZTtpZighdClyZXR1cm4gby5uYW1lLmxlbmd0aD9lLnRvTG9jYWxlU3RyaW5nKCk6XCJcIitlO2lmKHc9ZC5leGVjKHQpKXtpZih0PXdbMV0udG9Mb3dlckNhc2UoKSxhPVwiY1wiPT09dCxsPVwicFwiPT09dCwoYXx8bCkmJihJPWE/SS5jdXJyZW5jeTpJLnBlcmNlbnQsJD1JW2hdLEw9SS5kZWNpbWFscyxpPUkuc3ltYm9sLFc9SS5wYXR0ZXJuW0I/MDoxXSksYz13WzJdLGMmJihMPStjKSxcImVcIj09PXQpcmV0dXJuIGM/ZS50b0V4cG9uZW50aWFsKEwpOmUudG9FeHBvbmVudGlhbCgpO2lmKGwmJihlKj0xMDApLGU9dShlLEwpLEI9ZTwwLGU9ZS5zcGxpdChoKSxNPWVbMF0sUz1lWzFdLEImJihNPU0uc3Vic3RyaW5nKDEpKSxZPXMoTSwwLE0ubGVuZ3RoLEkpLFMmJihZKz0kK1MpLFwiblwiPT09dCYmIUIpcmV0dXJuIFk7Zm9yKGU9cCxrPTAsTz1XLmxlbmd0aDtrPE87aysrKXo9Vy5jaGFyQXQoayksZSs9XCJuXCI9PT16P1k6XCIkXCI9PT16fHxcIiVcIj09PXo/aTp6O3JldHVybiBlfWlmKEImJihlPS1lKSwodC5pbmRleE9mKFwiJ1wiKT4tMXx8dC5pbmRleE9mKCdcIicpPi0xfHx0LmluZGV4T2YoXCJcXFxcXCIpPi0xKSYmKHQ9dC5yZXBsYWNlKGYsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGFyQXQoMCkucmVwbGFjZShcIlxcXFxcIixcIlwiKSxuPWUuc2xpY2UoMSkucmVwbGFjZSh0LFwiXCIpO3JldHVybiBqLnB1c2gobiksYn0pKSx0PXQuc3BsaXQoXCI7XCIpLEImJnRbMV0pdD10WzFdLEM9ITA7ZWxzZSBpZigwPT09ZSl7aWYodD10WzJdfHx0WzBdLHQuaW5kZXhPZih5KT09LTEmJnQuaW5kZXhPZih2KT09LTEpcmV0dXJuIHR9ZWxzZSB0PXRbMF07aWYoUD10LmluZGV4T2YoXCIlXCIpLEY9dC5pbmRleE9mKFwiJFwiKSxsPVAhPS0xLGE9RiE9LTEsbCYmKGUqPTEwMCksYSYmXCJcXFxcXCI9PT10W0YtMV0mJih0PXQuc3BsaXQoXCJcXFxcXCIpLmpvaW4oXCJcIiksYT0hMSksKGF8fGwpJiYoST1hP0kuY3VycmVuY3k6SS5wZXJjZW50LCQ9SVtoXSxMPUkuZGVjaW1hbHMsaT1JLnN5bWJvbCksRD10LmluZGV4T2YoZyk+LTEsRCYmKHQ9dC5yZXBsYWNlKG0scCkpLEU9dC5pbmRleE9mKGgpLE89dC5sZW5ndGgsRSE9LTE/KFM9KFwiXCIrZSkuc3BsaXQoXCJlXCIpLFM9U1sxXT91KGUsTWF0aC5hYnMoU1sxXSkpOlNbMF0sUz1TLnNwbGl0KGgpWzFdfHxwLF89dC5sYXN0SW5kZXhPZih2KS1FLEg9dC5sYXN0SW5kZXhPZih5KS1FLEE9Xz4tMSxOPUg+LTEsaz1TLmxlbmd0aCxBfHxOfHwodD10LnN1YnN0cmluZygwLEUpK3Quc3Vic3RyaW5nKEUrMSksTz10Lmxlbmd0aCxFPS0xLGs9MCksQSYmXz5IP2s9XzpIPl8mJihOJiZrPkg/az1IOkEmJms8XyYmKGs9XykpLGs+LTEmJihlPXUoZSxrKSkpOmU9dShlKSxIPXQuaW5kZXhPZih5KSxSPV89dC5pbmRleE9mKHYpLHE9SD09LTEmJl8hPS0xP186SCE9LTEmJl89PS0xP0g6SD5fP186SCxIPXQubGFzdEluZGV4T2YoeSksXz10Lmxhc3RJbmRleE9mKHYpLFU9SD09LTEmJl8hPS0xP186SCE9LTEmJl89PS0xP0g6SD5fP0g6XyxxPT1PJiYoVT1xKSxxIT0tMSl7Zm9yKFk9KFwiXCIrZSkuc3BsaXQoaCksTT1ZWzBdLFM9WVsxXXx8cCxUPU0ubGVuZ3RoLHg9Uy5sZW5ndGgsQiYmZSotMT49MCYmKEI9ITEpLGU9dC5zdWJzdHJpbmcoMCxxKSxCJiYhQyYmKGUrPVwiLVwiKSxrPXE7azxPO2srKyl7aWYoej10LmNoYXJBdChrKSxFPT0tMSl7aWYoVS1rPFQpe2UrPU07YnJlYWt9fWVsc2UgaWYoXyE9LTEmJl88ayYmKEo9cCksRS1rPD1UJiZFLWs+LTEmJihlKz1NLGs9RSksRT09PWspe2UrPShTPyQ6cCkrUyxrKz1VLUUrMTtjb250aW51ZX16PT09dj8oZSs9eixKPXopOno9PT15JiYoZSs9Sil9aWYoRCYmKGU9cyhlLHErKEI/MTowKSxNYXRoLm1heChVLFQrcSksSSkpLFU+PXEmJihlKz10LnN1YnN0cmluZyhVKzEpKSxhfHxsKXtmb3IoWT1wLGs9MCxPPWUubGVuZ3RoO2s8TztrKyspej1lLmNoYXJBdChrKSxZKz1cIiRcIj09PXp8fFwiJVwiPT09ej9pOno7ZT1ZfWlmKE89ai5sZW5ndGgpZm9yKGs9MDtrPE87aysrKWU9ZS5yZXBsYWNlKGIsaltrXSl9cmV0dXJuIGV9dmFyIHMsdSxsLGM9L2RkZGR8ZGRkfGRkfGR8TU1NTXxNTU18TU18TXx5eXl5fHl5fEhIfEh8aGh8aHxtbXxtfGZmZnxmZnxmfHR0fHNzfHN8enp6fHp6fHp8XCJbXlwiXSpcInwnW14nXSonL2csZD0vXihufGN8cHxlKShcXGQqKSQvaSxmPS8oXFxcXC4pfChbJ11bXiddKlsnXT8pfChbXCJdW15cIl0qW1wiXT8pL2csbT0vXFwsL2cscD1cIlwiLGg9XCIuXCIsZz1cIixcIix5PVwiI1wiLHY9XCIwXCIsYj1cIj8/XCIsdz1cImVuLVVTXCIsTT17fS50b1N0cmluZzt5ZS5jdWx0dXJlc1tcImVuLVVTXCJdPXtuYW1lOncsbnVtYmVyRm9ybWF0OntwYXR0ZXJuOltcIi1uXCJdLGRlY2ltYWxzOjIsXCIsXCI6XCIsXCIsXCIuXCI6XCIuXCIsZ3JvdXBTaXplOlszXSxwZXJjZW50OntwYXR0ZXJuOltcIi1uICVcIixcIm4gJVwiXSxkZWNpbWFsczoyLFwiLFwiOlwiLFwiLFwiLlwiOlwiLlwiLGdyb3VwU2l6ZTpbM10sc3ltYm9sOlwiJVwifSxjdXJyZW5jeTp7bmFtZTpcIlVTIERvbGxhclwiLGFiYnI6XCJVU0RcIixwYXR0ZXJuOltcIigkbilcIixcIiRuXCJdLGRlY2ltYWxzOjIsXCIsXCI6XCIsXCIsXCIuXCI6XCIuXCIsZ3JvdXBTaXplOlszXSxzeW1ib2w6XCIkXCJ9fSxjYWxlbmRhcnM6e3N0YW5kYXJkOntkYXlzOntuYW1lczpbXCJTdW5kYXlcIixcIk1vbmRheVwiLFwiVHVlc2RheVwiLFwiV2VkbmVzZGF5XCIsXCJUaHVyc2RheVwiLFwiRnJpZGF5XCIsXCJTYXR1cmRheVwiXSxuYW1lc0FiYnI6W1wiU3VuXCIsXCJNb25cIixcIlR1ZVwiLFwiV2VkXCIsXCJUaHVcIixcIkZyaVwiLFwiU2F0XCJdLG5hbWVzU2hvcnQ6W1wiU3VcIixcIk1vXCIsXCJUdVwiLFwiV2VcIixcIlRoXCIsXCJGclwiLFwiU2FcIl19LG1vbnRoczp7bmFtZXM6W1wiSmFudWFyeVwiLFwiRmVicnVhcnlcIixcIk1hcmNoXCIsXCJBcHJpbFwiLFwiTWF5XCIsXCJKdW5lXCIsXCJKdWx5XCIsXCJBdWd1c3RcIixcIlNlcHRlbWJlclwiLFwiT2N0b2JlclwiLFwiTm92ZW1iZXJcIixcIkRlY2VtYmVyXCJdLG5hbWVzQWJicjpbXCJKYW5cIixcIkZlYlwiLFwiTWFyXCIsXCJBcHJcIixcIk1heVwiLFwiSnVuXCIsXCJKdWxcIixcIkF1Z1wiLFwiU2VwXCIsXCJPY3RcIixcIk5vdlwiLFwiRGVjXCJdfSxBTTpbXCJBTVwiLFwiYW1cIixcIkFNXCJdLFBNOltcIlBNXCIsXCJwbVwiLFwiUE1cIl0scGF0dGVybnM6e2Q6XCJNL2QveXl5eVwiLEQ6XCJkZGRkLCBNTU1NIGRkLCB5eXl5XCIsRjpcImRkZGQsIE1NTU0gZGQsIHl5eXkgaDptbTpzcyB0dFwiLGc6XCJNL2QveXl5eSBoOm1tIHR0XCIsRzpcIk0vZC95eXl5IGg6bW06c3MgdHRcIixtOlwiTU1NTSBkZFwiLE06XCJNTU1NIGRkXCIsczpcInl5eXknLSdNTSctJ2RkVEhIJzonbW0nOidzc1wiLHQ6XCJoOm1tIHR0XCIsVDpcImg6bW06c3MgdHRcIix1OlwieXl5eSctJ01NJy0nZGQgSEgnOidtbSc6J3NzJ1onXCIseTpcIk1NTU0sIHl5eXlcIixZOlwiTU1NTSwgeXl5eVwifSxcIi9cIjpcIi9cIixcIjpcIjpcIjpcIixmaXJzdERheTowLHR3b0RpZ2l0WWVhck1heDoyMDI5fX19LHllLmN1bHR1cmU9ZnVuY3Rpb24oZSl7dmFyIHIsbz15ZS5jdWx0dXJlcztyZXR1cm4gZT09PW4/by5jdXJyZW50OihyPXQoZSl8fG9bd10sci5jYWxlbmRhcj1yLmNhbGVuZGFycy5zdGFuZGFyZCxvLmN1cnJlbnQ9cixuKX0seWUuZmluZEN1bHR1cmU9dCx5ZS5nZXRDdWx0dXJlPXIseWUuY3VsdHVyZSh3KSxzPWZ1bmN0aW9uKGUsdCxyLG8pe3ZhciBpLGEscyx1LGwsYyxkPWUuaW5kZXhPZihvW2hdKSxmPW8uZ3JvdXBTaXplLnNsaWNlKCksbT1mLnNoaWZ0KCk7aWYocj1kIT09LTE/ZDpyKzEsaT1lLnN1YnN0cmluZyh0LHIpLGE9aS5sZW5ndGgsYT49bSl7Zm9yKHM9YSx1PVtdO3M+LTE7KWlmKGw9aS5zdWJzdHJpbmcocy1tLHMpLGwmJnUucHVzaChsKSxzLT1tLGM9Zi5zaGlmdCgpLG09YyE9PW4/YzptLDA9PT1tKXt1LnB1c2goaS5zdWJzdHJpbmcoMCxzKSk7YnJlYWt9aT11LnJldmVyc2UoKS5qb2luKG9bZ10pLGU9ZS5zdWJzdHJpbmcoMCx0KStpK2Uuc3Vic3RyaW5nKHIpfXJldHVybiBlfSx1PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9dHx8MCxlPShcIlwiK2UpLnNwbGl0KFwiZVwiKSxlPU1hdGgucm91bmQoKyhlWzBdK1wiZVwiKyhlWzFdPytlWzFdK3Q6dCkpKSxlPShcIlwiK2UpLnNwbGl0KFwiZVwiKSxlPSsoZVswXStcImVcIisoZVsxXT8rZVsxXS10Oi10KSksZS50b0ZpeGVkKE1hdGgubWluKHQsMjApKX0sbD1mdW5jdGlvbihlLHQscil7aWYodCl7aWYoXCJbb2JqZWN0IERhdGVdXCI9PT1NLmNhbGwoZSkpcmV0dXJuIG8oZSx0LHIpO2lmKHR5cGVvZiBlPT09X2UpcmV0dXJuIGEoZSx0LHIpfXJldHVybiBlIT09bj9lOlwiXCJ9LHllLmZvcm1hdD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHM7cmV0dXJuIGUucmVwbGFjZSh6ZSxmdW5jdGlvbihlLG4scil7dmFyIG89dFtwYXJzZUludChuLDEwKSsxXTtyZXR1cm4gbChvLHI/ci5zdWJzdHJpbmcoMSk6XCJcIil9KX0seWUuX2V4dHJhY3RGb3JtYXQ9ZnVuY3Rpb24oZSl7cmV0dXJuXCJ7MDpcIj09PWUuc2xpY2UoMCwzKSYmKGU9ZS5zbGljZSgzLGUubGVuZ3RoLTEpKSxlfSx5ZS5fYWN0aXZlRWxlbWVudD1mdW5jdGlvbigpe3RyeXtyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudH1jYXRjaChlKXtyZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFjdGl2ZUVsZW1lbnR9fSx5ZS5fcm91bmQ9dSx5ZS5fb3V0ZXJXaWR0aD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQpLm91dGVyV2lkdGgobnx8ITEpfHwwfSx5ZS5fb3V0ZXJIZWlnaHQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0KS5vdXRlckhlaWdodChufHwhMSl8fDB9LHllLnRvU3RyaW5nPWx9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsdCxuKXtyZXR1cm4hKGU+PXQmJmU8PW4pfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIGUuY2hhckF0KDApfWZ1bmN0aW9uIG8odCl7cmV0dXJuIGUubWFwKHQscil9ZnVuY3Rpb24gaShlLHQpe3R8fDIzIT09ZS5nZXRIb3VycygpfHxlLnNldEhvdXJzKGUuZ2V0SG91cnMoKSsyKX1mdW5jdGlvbiBhKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGgscj1bXTt0PG47dCsrKXJbdF09KGVbdF0rXCJcIikudG9Mb3dlckNhc2UoKTtyZXR1cm4gcn1mdW5jdGlvbiBzKGUpe3ZhciB0LG49e307Zm9yKHQgaW4gZSluW3RdPWEoZVt0XSk7cmV0dXJuIG59ZnVuY3Rpb24gdShlLHIsYSl7aWYoIWUpcmV0dXJuIG51bGw7dmFyIHUsbCxjLGQsZixoLGcseSx2LHcsTSxTLFQseD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDtyW0ZdPT09ZTspdCsrLEYrKztyZXR1cm4gdD4wJiYoRi09MSksdH0saz1mdW5jdGlvbih0KXt2YXIgbj1iW3RdfHxSZWdFeHAoXCJeXFxcXGR7MSxcIit0K1wifVwiKSxyPWUuc3Vic3RyKFIsdCkubWF0Y2gobik7cmV0dXJuIHI/KHI9clswXSxSKz1yLmxlbmd0aCxwYXJzZUludChyLDEwKSk6bnVsbH0sTz1mdW5jdGlvbih0LG4pe2Zvcih2YXIgcixvLGksYT0wLHM9dC5sZW5ndGgsdT0wLGw9MDthPHM7YSsrKXI9dFthXSxvPXIubGVuZ3RoLGk9ZS5zdWJzdHIoUixvKSxuJiYoaT1pLnRvTG93ZXJDYXNlKCkpLGk9PXImJm8+dSYmKHU9byxsPWEpO3JldHVybiB1PyhSKz11LGwrMSk6bnVsbH0sej1mdW5jdGlvbigpe3ZhciB0PSExO3JldHVybiBlLmNoYXJBdChSKT09PXJbRl0mJihSKyssdD0hMCksdH0sRD1hLmNhbGVuZGFycy5zdGFuZGFyZCxDPW51bGwsRT1udWxsLEg9bnVsbCxfPW51bGwsQT1udWxsLE49bnVsbCxQPW51bGwsRj0wLFI9MCxVPSExLEk9bmV3IERhdGUsJD1ELnR3b0RpZ2l0WWVhck1heHx8MjAyOSxMPUkuZ2V0RnVsbFllYXIoKTtmb3Iocnx8KHI9XCJkXCIpLGQ9RC5wYXR0ZXJuc1tyXSxkJiYocj1kKSxyPXIuc3BsaXQoXCJcIiksYz1yLmxlbmd0aDtGPGM7RisrKWlmKHU9cltGXSxVKVwiJ1wiPT09dT9VPSExOnooKTtlbHNlIGlmKFwiZFwiPT09dSl7aWYobD14KFwiZFwiKSxELl9sb3dlckRheXN8fChELl9sb3dlckRheXM9cyhELmRheXMpKSxudWxsIT09SCYmbD4yKWNvbnRpbnVlO2lmKEg9bDwzP2soMik6TyhELl9sb3dlckRheXNbMz09bD9cIm5hbWVzQWJiclwiOlwibmFtZXNcIl0sITApLG51bGw9PT1IfHx0KEgsMSwzMSkpcmV0dXJuIG51bGx9ZWxzZSBpZihcIk1cIj09PXUpe2lmKGw9eChcIk1cIiksRC5fbG93ZXJNb250aHN8fChELl9sb3dlck1vbnRocz1zKEQubW9udGhzKSksRT1sPDM/aygyKTpPKEQuX2xvd2VyTW9udGhzWzM9PWw/XCJuYW1lc0FiYnJcIjpcIm5hbWVzXCJdLCEwKSxudWxsPT09RXx8dChFLDEsMTIpKXJldHVybiBudWxsO0UtPTF9ZWxzZSBpZihcInlcIj09PXUpe2lmKGw9eChcInlcIiksQz1rKGwpLG51bGw9PT1DKXJldHVybiBudWxsOzI9PWwmJihcInN0cmluZ1wiPT10eXBlb2YgJCYmKCQ9TCtwYXJzZUludCgkLDEwKSksQz1MLUwlMTAwK0MsQz4kJiYoQy09MTAwKSl9ZWxzZSBpZihcImhcIj09PXUpe2lmKHgoXCJoXCIpLF89aygyKSwxMj09XyYmKF89MCksbnVsbD09PV98fHQoXywwLDExKSlyZXR1cm4gbnVsbH1lbHNlIGlmKFwiSFwiPT09dSl7aWYoeChcIkhcIiksXz1rKDIpLG51bGw9PT1ffHx0KF8sMCwyMykpcmV0dXJuIG51bGx9ZWxzZSBpZihcIm1cIj09PXUpe2lmKHgoXCJtXCIpLEE9aygyKSxudWxsPT09QXx8dChBLDAsNTkpKXJldHVybiBudWxsfWVsc2UgaWYoXCJzXCI9PT11KXtpZih4KFwic1wiKSxOPWsoMiksbnVsbD09PU58fHQoTiwwLDU5KSlyZXR1cm4gbnVsbH1lbHNlIGlmKFwiZlwiPT09dSl7aWYobD14KFwiZlwiKSxUPWUuc3Vic3RyKFIsbCkubWF0Y2goYlszXSksUD1rKGwpLG51bGwhPT1QJiYoUD1wYXJzZUZsb2F0KFwiMC5cIitUWzBdLDEwKSxQPXllLl9yb3VuZChQLDMpLFAqPTFlMyksbnVsbD09PVB8fHQoUCwwLDk5OSkpcmV0dXJuIG51bGx9ZWxzZSBpZihcInRcIj09PXUpe2lmKGw9eChcInRcIikseT1ELkFNLHY9RC5QTSwxPT09bCYmKHk9byh5KSx2PW8odikpLGY9Tyh2KSwhZiYmIU8oeSkpcmV0dXJuIG51bGx9ZWxzZSBpZihcInpcIj09PXUpe2lmKGg9ITAsbD14KFwielwiKSxcIlpcIj09PWUuc3Vic3RyKFIsMSkpe3ooKTtjb250aW51ZX1pZihnPWUuc3Vic3RyKFIsNikubWF0Y2gobD4yP3A6bSksIWcpcmV0dXJuIG51bGw7aWYoZz1nWzBdLnNwbGl0KFwiOlwiKSx3PWdbMF0sTT1nWzFdLCFNJiZ3Lmxlbmd0aD4zJiYoUj13Lmxlbmd0aC0yLE09dy5zdWJzdHJpbmcoUiksdz13LnN1YnN0cmluZygwLFIpKSx3PXBhcnNlSW50KHcsMTApLHQodywtMTIsMTMpKXJldHVybiBudWxsO2lmKGw+MiYmKE09cGFyc2VJbnQoTSwxMCksaXNOYU4oTSl8fHQoTSwwLDU5KSkpcmV0dXJuIG51bGx9ZWxzZSBpZihcIidcIj09PXUpVT0hMCx6KCk7ZWxzZSBpZigheigpKXJldHVybiBudWxsO3JldHVybiBTPW51bGwhPT1ffHxudWxsIT09QXx8Tnx8bnVsbCxudWxsPT09QyYmbnVsbD09PUUmJm51bGw9PT1IJiZTPyhDPUwsRT1JLmdldE1vbnRoKCksSD1JLmdldERhdGUoKSk6KG51bGw9PT1DJiYoQz1MKSxudWxsPT09SCYmKEg9MSkpLGYmJl88MTImJihfKz0xMiksaD8odyYmKF8rPS13KSxNJiYoQSs9LU0pLGU9bmV3IERhdGUoRGF0ZS5VVEMoQyxFLEgsXyxBLE4sUCkpKTooZT1uZXcgRGF0ZShDLEUsSCxfLEEsTixQKSxpKGUsXykpLEM8MTAwJiZlLnNldEZ1bGxZZWFyKEMpLGUuZ2V0RGF0ZSgpIT09SCYmaD09PW4/bnVsbDplfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9XCItXCI9PT1lLnN1YnN0cigwLDEpPy0xOjE7cmV0dXJuIGU9ZS5zdWJzdHJpbmcoMSksZT02MCpwYXJzZUludChlLnN1YnN0cigwLDIpLDEwKStwYXJzZUludChlLnN1YnN0cmluZygyKSwxMCksdCplfWZ1bmN0aW9uIGMoZSl7dmFyIHQsbixyLG89VGUubWF4KHkubGVuZ3RoLHYubGVuZ3RoKSxpPWUuY2FsZW5kYXIucGF0dGVybnMsYT1bXTtmb3Iocj0wO3I8bztyKyspe2Zvcih0PXlbcl0sbj0wO248dC5sZW5ndGg7bisrKWEucHVzaChpW3Rbbl1dKTthPWEuY29uY2F0KHZbcl0pfXJldHVybiBhfXZhciBkPS9cXHUwMEEwL2csZj0vW2VFXVtcXC0rXT9bMC05XSsvLG09L1srfFxcLV1cXGR7MSwyfS8scD0vWyt8XFwtXVxcZHsxLDJ9Oj9cXGR7Mn0vLGg9L15cXC9EYXRlXFwoKC4qPylcXClcXC8kLyxnPS9bKy1dXFxkKi8seT1bW10sW1wiR1wiLFwiZ1wiLFwiRlwiXSxbXCJEXCIsXCJkXCIsXCJ5XCIsXCJtXCIsXCJUXCIsXCJ0XCJdXSx2PVtbXCJ5eXl5LU1NLWRkVEhIOm1tOnNzLmZmZmZmZmZ6enpcIixcInl5eXktTU0tZGRUSEg6bW06c3MuZmZmZmZmZlwiLFwieXl5eS1NTS1kZFRISDptbTpzcy5mZmZ6enpcIixcInl5eXktTU0tZGRUSEg6bW06c3MuZmZmXCIsXCJkZGQgTU1NIGRkIHl5eXkgSEg6bW06c3NcIixcInl5eXktTU0tZGRUSEg6bW06c3N6enpcIixcInl5eXktTU0tZGRUSEg6bW16enpcIixcInl5eXktTU0tZGRUSEg6bW16elwiLFwieXl5eS1NTS1kZFRISDptbTpzc1wiLFwieXl5eS1NTS1kZCBISDptbTpzc1wiLFwieXl5eS9NTS9kZCBISDptbTpzc1wiXSxbXCJ5eXl5LU1NLWRkVEhIOm1tXCIsXCJ5eXl5LU1NLWRkIEhIOm1tXCIsXCJ5eXl5L01NL2RkIEhIOm1tXCJdLFtcInl5eXkvTU0vZGRcIixcInl5eXktTU0tZGRcIixcIkhIOm1tOnNzXCIsXCJISDptbVwiXV0sYj17MjovXlxcZHsxLDJ9LywzOi9eXFxkezEsM30vLDQ6L15cXGR7NH0vfSx3PXt9LnRvU3RyaW5nO3llLnBhcnNlRGF0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpLGE7aWYoXCJbb2JqZWN0IERhdGVdXCI9PT13LmNhbGwoZSkpcmV0dXJuIGU7aWYocj0wLG89bnVsbCxlJiYwPT09ZS5pbmRleE9mKFwiL0RcIikmJihvPWguZXhlYyhlKSkpcmV0dXJuIG89b1sxXSxhPWcuZXhlYyhvLnN1YnN0cmluZygxKSksbz1uZXcgRGF0ZShwYXJzZUludChvLDEwKSksYSYmKGE9bChhWzBdKSxvPXllLnRpbWV6b25lLmFwcGx5KG8sMCksbz15ZS50aW1lem9uZS5jb252ZXJ0KG8sMCwtMSphKSksbztmb3Iobj15ZS5nZXRDdWx0dXJlKG4pLHR8fCh0PWMobikpLHQ9d2UodCk/dDpbdF0saT10Lmxlbmd0aDtyPGk7cisrKWlmKG89dShlLHRbcl0sbikpcmV0dXJuIG87cmV0dXJuIG99LHllLnBhcnNlSW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49eWUucGFyc2VGbG9hdChlLHQpO3JldHVybiBuJiYobj0wfG4pLG59LHllLnBhcnNlRmxvYXQ9ZnVuY3Rpb24oZSx0LG4pe2lmKCFlJiYwIT09ZSlyZXR1cm4gbnVsbDtpZih0eXBlb2YgZT09PV9lKXJldHVybiBlO2U9XCJcIitlLHQ9eWUuZ2V0Q3VsdHVyZSh0KTt2YXIgcixvLGk9dC5udW1iZXJGb3JtYXQsYT1pLnBlcmNlbnQscz1pLmN1cnJlbmN5LHU9cy5zeW1ib2wsbD1hLnN5bWJvbCxjPWUuaW5kZXhPZihcIi1cIik7cmV0dXJuIGYudGVzdChlKT8oZT1wYXJzZUZsb2F0KGUucmVwbGFjZShpW1wiLlwiXSxcIi5cIikpLGlzTmFOKGUpJiYoZT1udWxsKSxlKTpjPjA/bnVsbDooYz1jPi0xLGUuaW5kZXhPZih1KT4tMXx8biYmbi50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJjXCIpPi0xPyhpPXMscj1pLnBhdHRlcm5bMF0ucmVwbGFjZShcIiRcIix1KS5zcGxpdChcIm5cIiksZS5pbmRleE9mKHJbMF0pPi0xJiZlLmluZGV4T2YoclsxXSk+LTEmJihlPWUucmVwbGFjZShyWzBdLFwiXCIpLnJlcGxhY2UoclsxXSxcIlwiKSxjPSEwKSk6ZS5pbmRleE9mKGwpPi0xJiYobz0hMCxpPWEsdT1sKSxlPWUucmVwbGFjZShcIi1cIixcIlwiKS5yZXBsYWNlKHUsXCJcIikucmVwbGFjZShkLFwiIFwiKS5zcGxpdChpW1wiLFwiXS5yZXBsYWNlKGQsXCIgXCIpKS5qb2luKFwiXCIpLnJlcGxhY2UoaVtcIi5cIl0sXCIuXCIpLGU9cGFyc2VGbG9hdChlKSxpc05hTihlKT9lPW51bGw6YyYmKGUqPS0xKSxlJiZvJiYoZS89MTAwKSxlKX19KCksZnVuY3Rpb24oKXt2YXIgcixvLGksYSxzLHUsbDtrZS5fc2Nyb2xsYmFyPW4sa2Uuc2Nyb2xsYmFyPWZ1bmN0aW9uKGUpe2lmKGlzTmFOKGtlLl9zY3JvbGxiYXIpfHxlKXt2YXIgdCxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7cmV0dXJuIG4uc3R5bGUuY3NzVGV4dD1cIm92ZXJmbG93OnNjcm9sbDtvdmVyZmxvdy14OmhpZGRlbjt6b29tOjE7Y2xlYXI6Ym90aDtkaXNwbGF5OmJsb2NrXCIsbi5pbm5lckhUTUw9XCImbmJzcDtcIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG4pLGtlLl9zY3JvbGxiYXI9dD1uLm9mZnNldFdpZHRoLW4uc2Nyb2xsV2lkdGgsZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChuKSx0fXJldHVybiBrZS5fc2Nyb2xsYmFyfSxrZS5pc1J0bD1mdW5jdGlvbih0KXtyZXR1cm4gZSh0KS5jbG9zZXN0KFwiLmstcnRsXCIpLmxlbmd0aD4wfSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0YWJsZVwiKTt0cnl7ci5pbm5lckhUTUw9XCI8dHI+PHRkPjwvdGQ+PC90cj5cIixrZS50Ym9keUlubmVySHRtbD0hMH1jYXRjaChkKXtrZS50Ym9keUlubmVySHRtbD0hMX1rZS50b3VjaD1cIm9udG91Y2hzdGFydFwiaW4gdCxrZS5tc1BvaW50ZXJzPXQuTVNQb2ludGVyRXZlbnQsa2UucG9pbnRlcnM9dC5Qb2ludGVyRXZlbnQsbz1rZS50cmFuc2l0aW9ucz0hMSxpPWtlLnRyYW5zZm9ybXM9ITEsYT1cIkhUTUxFbGVtZW50XCJpbiB0P0hUTUxFbGVtZW50LnByb3RvdHlwZTpbXSxrZS5oYXNIVzNEPVwiV2ViS2l0Q1NTTWF0cml4XCJpbiB0JiZcIm0xMVwiaW4gbmV3IHQuV2ViS2l0Q1NTTWF0cml4fHxcIk1velBlcnNwZWN0aXZlXCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGV8fFwibXNQZXJzcGVjdGl2ZVwiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLGJlKFtcIk1velwiLFwid2Via2l0XCIsXCJPXCIsXCJtc1wiXSxmdW5jdGlvbigpe3ZhciBlLHQ9XCJcIit0aGlzLG49dHlwZW9mIHIuc3R5bGVbdCtcIlRyYW5zaXRpb25cIl09PT1IZTtpZihufHx0eXBlb2Ygci5zdHlsZVt0K1wiVHJhbnNmb3JtXCJdPT09SGUpcmV0dXJuIGU9dC50b0xvd2VyQ2FzZSgpLGk9e2NzczpcIm1zXCIhPWU/XCItXCIrZStcIi1cIjpcIlwiLHByZWZpeDp0LGV2ZW50Olwib1wiPT09ZXx8XCJ3ZWJraXRcIj09PWU/ZTpcIlwifSxuJiYobz1pLG8uZXZlbnQ9by5ldmVudD9vLmV2ZW50K1wiVHJhbnNpdGlvbkVuZFwiOlwidHJhbnNpdGlvbmVuZFwiKSwhMX0pLHI9bnVsbCxrZS50cmFuc2Zvcm1zPWksa2UudHJhbnNpdGlvbnM9byxrZS5kZXZpY2VQaXhlbFJhdGlvPXQuZGV2aWNlUGl4ZWxSYXRpbz09PW4/MTp0LmRldmljZVBpeGVsUmF0aW87dHJ5e2tlLnNjcmVlbldpZHRoPXQub3V0ZXJXaWR0aHx8dC5zY3JlZW4/dC5zY3JlZW4uYXZhaWxXaWR0aDp0LmlubmVyV2lkdGgsa2Uuc2NyZWVuSGVpZ2h0PXQub3V0ZXJIZWlnaHR8fHQuc2NyZWVuP3Quc2NyZWVuLmF2YWlsSGVpZ2h0OnQuaW5uZXJIZWlnaHR9Y2F0Y2goZCl7a2Uuc2NyZWVuV2lkdGg9dC5zY3JlZW4uYXZhaWxXaWR0aCxrZS5zY3JlZW5IZWlnaHQ9dC5zY3JlZW4uYXZhaWxIZWlnaHR9a2UuZGV0ZWN0T1M9ZnVuY3Rpb24oZSl7dmFyIG4scixvPSExLGk9W10sYT0hL21vYmlsZSBzYWZhcmkvaS50ZXN0KGUpLHM9e3dwOi8oV2luZG93cyBQaG9uZSg/OiBPUyk/KVxccyhcXGQrKVxcLihcXGQrKFxcLlxcZCspPykvLGZpcmU6LyhTaWxrKVxcLyhcXGQrKVxcLihcXGQrKFxcLlxcZCspPykvLGFuZHJvaWQ6LyhBbmRyb2lkfEFuZHJvaWQuKig/Ok9wZXJhfEZpcmVmb3gpLio/XFwvKVxccyooXFxkKylcXC4oXFxkKyhcXC5cXGQrKT8pLyxpcGhvbmU6LyhpUGhvbmV8aVBvZCkuKk9TXFxzKyhcXGQrKVtcXC5fXShbXFxkXFwuX10rKS8saXBhZDovKGlQYWQpLipPU1xccysoXFxkKylbXFwuX10oW1xcZF9dKykvLG1lZWdvOi8oTWVlR28pLitOb2tpYUJyb3dzZXJcXC8oXFxkKylcXC4oW1xcZFxcLl9dKykvLHdlYm9zOi8od2ViT1MpXFwvKFxcZCspXFwuKFxcZCsoXFwuXFxkKyk/KS8sYmxhY2tiZXJyeTovKEJsYWNrQmVycnl8QkIxMCkuKj9WZXJzaW9uXFwvKFxcZCspXFwuKFxcZCsoXFwuXFxkKyk/KS8scGxheWJvb2s6LyhQbGF5Qm9vaykuKj9UYWJsZXRcXHMqT1NcXHMqKFxcZCspXFwuKFxcZCsoXFwuXFxkKyk/KS8sd2luZG93czovKE1TSUUpXFxzKyhcXGQrKVxcLihcXGQrKFxcLlxcZCspPykvLHRpemVuOi8odGl6ZW4pLio/VmVyc2lvblxcLyhcXGQrKVxcLihcXGQrKFxcLlxcZCspPykvaSxzYWlsZmlzaDovKHNhaWxmaXNoKS4qcnY6KFxcZCspXFwuKFxcZCsoXFwuXFxkKyk/KS4qZmlyZWZveC9pLGZmb3M6LyhNb2JpbGUpLipydjooXFxkKylcXC4oXFxkKyhcXC5cXGQrKT8pLipGaXJlZm94L30sdT17aW9zOi9eaShwaG9uZXxwYWR8cG9kKSQvaSxhbmRyb2lkOi9eYW5kcm9pZHxmaXJlJC9pLGJsYWNrYmVycnk6L15ibGFja2JlcnJ5fHBsYXlib29rL2ksd2luZG93czovd2luZG93cy8sd3A6L3dwLyxmbGF0Oi9zYWlsZmlzaHxmZm9zfHRpemVuL2ksbWVlZ286L21lZWdvL30sbD17dGFibGV0Oi9wbGF5Ym9va3xpcGFkfGZpcmUvaX0sZD17b21pbmk6L09wZXJhXFxzTWluaS9pLG9tb2JpbGU6L09wZXJhXFxzTW9iaS9pLGZpcmVmb3g6L0ZpcmVmb3h8RmVubmVjL2ksbW9iaWxlc2FmYXJpOi92ZXJzaW9uXFwvLipzYWZhcmkvaSxpZTovTVNJRXxXaW5kb3dzXFxzUGhvbmUvaSxjaHJvbWU6L2Nocm9tZXxjcmlvcy9pLHdlYmtpdDovd2Via2l0L2l9O2ZvcihyIGluIHMpaWYocy5oYXNPd25Qcm9wZXJ0eShyKSYmKGk9ZS5tYXRjaChzW3JdKSkpe2lmKFwid2luZG93c1wiPT1yJiZcInBsdWdpbnNcImluIG5hdmlnYXRvcilyZXR1cm4hMTtvPXt9LG8uZGV2aWNlPXIsby50YWJsZXQ9YyhyLGwsITEpLG8uYnJvd3Nlcj1jKGUsZCxcImRlZmF1bHRcIiksby5uYW1lPWMocix1KSxvW28ubmFtZV09ITAsby5tYWpvclZlcnNpb249aVsyXSxvLm1pbm9yVmVyc2lvbj1pWzNdLnJlcGxhY2UoXCJfXCIsXCIuXCIpLG49by5taW5vclZlcnNpb24ucmVwbGFjZShcIi5cIixcIlwiKS5zdWJzdHIoMCwyKSxvLmZsYXRWZXJzaW9uPW8ubWFqb3JWZXJzaW9uK24rQXJyYXkoMy0obi5sZW5ndGg8Mz9uLmxlbmd0aDoyKSkuam9pbihcIjBcIiksby5jb3Jkb3ZhPXR5cGVvZiB0LlBob25lR2FwIT09RmV8fHR5cGVvZiB0LmNvcmRvdmEhPT1GZSxvLmFwcE1vZGU9dC5uYXZpZ2F0b3Iuc3RhbmRhbG9uZXx8L2ZpbGV8bG9jYWx8d21hcHAvLnRlc3QodC5sb2NhdGlvbi5wcm90b2NvbCl8fG8uY29yZG92YSxvLmFuZHJvaWQmJihrZS5kZXZpY2VQaXhlbFJhdGlvPDEuNSYmby5mbGF0VmVyc2lvbjw0MDB8fGEpJiYoa2Uuc2NyZWVuV2lkdGg+ODAwfHxrZS5zY3JlZW5IZWlnaHQ+ODAwKSYmKG8udGFibGV0PXIpO2JyZWFrfXJldHVybiBvfSxzPWtlLm1vYmlsZU9TPWtlLmRldGVjdE9TKG5hdmlnYXRvci51c2VyQWdlbnQpLGtlLndwRGV2aWNlUGl4ZWxSYXRpbz1zLndwP3NjcmVlbi53aWR0aC8zMjA6MCxrZS5raW5ldGljU2Nyb2xsTmVlZGVkPXMmJihrZS50b3VjaHx8a2UubXNQb2ludGVyc3x8a2UucG9pbnRlcnMpLGtlLmhhc05hdGl2ZVNjcm9sbGluZz0hMSwocy5pb3N8fHMuYW5kcm9pZCYmcy5tYWpvclZlcnNpb24+Mnx8cy53cCkmJihrZS5oYXNOYXRpdmVTY3JvbGxpbmc9cyksa2UuZGVsYXllZENsaWNrPWZ1bmN0aW9uKCl7aWYoa2UudG91Y2gpe2lmKHMuaW9zKXJldHVybiEwO2lmKHMuYW5kcm9pZClyZXR1cm4ha2UuYnJvd3Nlci5jaHJvbWV8fCEoa2UuYnJvd3Nlci52ZXJzaW9uPDMyKSYmIShlKFwibWV0YVtuYW1lPXZpZXdwb3J0XVwiKS5hdHRyKFwiY29udGVudFwiKXx8XCJcIikubWF0Y2goL3VzZXItc2NhbGFibGU9bm8vaSl9cmV0dXJuITF9LGtlLm1vdXNlQW5kVG91Y2hQcmVzZW50PWtlLnRvdWNoJiYhKGtlLm1vYmlsZU9TLmlvc3x8a2UubW9iaWxlT1MuYW5kcm9pZCksa2UuZGV0ZWN0QnJvd3Nlcj1mdW5jdGlvbihlKXt2YXIgdCxuPSExLHI9W10sbz17ZWRnZTovKGVkZ2UpWyBcXC9dKFtcXHcuXSspL2ksd2Via2l0Oi8oY2hyb21lKVsgXFwvXShbXFx3Ll0rKS9pLHNhZmFyaTovKHdlYmtpdClbIFxcL10oW1xcdy5dKykvaSxvcGVyYTovKG9wZXJhKSg/Oi4qdmVyc2lvbnwpWyBcXC9dKFtcXHcuXSspL2ksbXNpZTovKG1zaWVcXHN8dHJpZGVudC4qPyBydjopKFtcXHcuXSspL2ksbW96aWxsYTovKG1vemlsbGEpKD86Lio/IHJ2OihbXFx3Ll0rKXwpL2l9O2Zvcih0IGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eSh0KSYmKHI9ZS5tYXRjaChvW3RdKSkpe249e30sblt0XT0hMCxuW3JbMV0udG9Mb3dlckNhc2UoKS5zcGxpdChcIiBcIilbMF0uc3BsaXQoXCIvXCIpWzBdXT0hMCxuLnZlcnNpb249cGFyc2VJbnQoZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHxyWzJdLDEwKTticmVha31yZXR1cm4gbn0sa2UuYnJvd3Nlcj1rZS5kZXRlY3RCcm93c2VyKG5hdmlnYXRvci51c2VyQWdlbnQpLGtlLmRldGVjdENsaXBib2FyZEFjY2Vzcz1mdW5jdGlvbigpe3ZhciBlPXtjb3B5OiEhZG9jdW1lbnQucXVlcnlDb21tYW5kU3VwcG9ydGVkJiZkb2N1bWVudC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoXCJjb3B5XCIpLGN1dDohIWRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCYmZG9jdW1lbnQucXVlcnlDb21tYW5kU3VwcG9ydGVkKFwiY3V0XCIpLHBhc3RlOiEhZG9jdW1lbnQucXVlcnlDb21tYW5kU3VwcG9ydGVkJiZkb2N1bWVudC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoXCJwYXN0ZVwiKX07cmV0dXJuIGtlLmJyb3dzZXIuY2hyb21lJiYoZS5wYXN0ZT0hMSxrZS5icm93c2VyLnZlcnNpb24+PTQzJiYoZS5jb3B5PSEwLGUuY3V0PSEwKSksZX0sa2UuY2xpcGJvYXJkPWtlLmRldGVjdENsaXBib2FyZEFjY2VzcygpLGtlLnpvb21MZXZlbD1mdW5jdGlvbigpe3ZhciBlLG4scjt0cnl7cmV0dXJuIGU9a2UuYnJvd3NlcixuPTAscj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZS5tc2llJiYxMT09ZS52ZXJzaW9uJiZyLnNjcm9sbEhlaWdodD5yLmNsaWVudEhlaWdodCYmIWtlLnRvdWNoJiYobj1rZS5zY3JvbGxiYXIoKSksa2UudG91Y2g/ci5jbGllbnRXaWR0aC90LmlubmVyV2lkdGg6ZS5tc2llJiZlLnZlcnNpb24+PTEwPygodG9wfHx0KS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGgrbikvKHRvcHx8dCkuaW5uZXJXaWR0aDoxfWNhdGNoKG8pe3JldHVybiAxfX0sa2UuY3NzQm9yZGVyU3BhY2luZz1uIT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmJvcmRlclNwYWNpbmcmJiEoa2UuYnJvd3Nlci5tc2llJiZrZS5icm93c2VyLnZlcnNpb248OCksZnVuY3Rpb24odCl7dmFyIG49XCJcIixyPWUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSxvPXBhcnNlSW50KHQudmVyc2lvbiwxMCk7dC5tc2llP249XCJpZVwiOnQubW96aWxsYT9uPVwiZmZcIjp0LnNhZmFyaT9uPVwic2FmYXJpXCI6dC53ZWJraXQ/bj1cIndlYmtpdFwiOnQub3BlcmE/bj1cIm9wZXJhXCI6dC5lZGdlJiYobj1cImVkZ2VcIiksbiYmKG49XCJrLVwiK24rXCIgay1cIituK28pLGtlLm1vYmlsZU9TJiYobis9XCIgay1tb2JpbGVcIiksci5hZGRDbGFzcyhuKX0oa2UuYnJvd3Nlciksa2UuZXZlbnRDYXB0dXJlPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyLHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpLGtlLnBsYWNlaG9sZGVyPVwicGxhY2Vob2xkZXJcImluIHUsa2UucHJvcGVydHlDaGFuZ2VFdmVudD1cIm9ucHJvcGVydHljaGFuZ2VcImluIHUsa2UuaW5wdXQ9ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD1bXCJudW1iZXJcIixcImRhdGVcIixcInRpbWVcIixcIm1vbnRoXCIsXCJ3ZWVrXCIsXCJkYXRldGltZVwiLFwiZGF0ZXRpbWUtbG9jYWxcIl0sbj10Lmxlbmd0aCxyPVwidGVzdFwiLG89e30saT0wO2k8bjtpKyspZT10W2ldLHUuc2V0QXR0cmlidXRlKFwidHlwZVwiLGUpLHUudmFsdWU9cixvW2UucmVwbGFjZShcIi1cIixcIlwiKV09XCJ0ZXh0XCIhPT11LnR5cGUmJnUudmFsdWUhPT1yO3JldHVybiBvfSgpLHUuc3R5bGUuY3NzVGV4dD1cImZsb2F0OmxlZnQ7XCIsa2UuY3NzRmxvYXQ9ISF1LnN0eWxlLmNzc0Zsb2F0LHU9bnVsbCxrZS5zdGFibGVTb3J0PWZ1bmN0aW9uKCl7dmFyIGUsdD01MTMsbj1be2luZGV4OjAsZmllbGQ6XCJiXCJ9XTtmb3IoZT0xO2U8dDtlKyspbi5wdXNoKHtpbmRleDplLGZpZWxkOlwiYVwifSk7cmV0dXJuIG4uc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLmZpZWxkPnQuZmllbGQ/MTplLmZpZWxkPHQuZmllbGQ/LTE6MH0pLDE9PT1uWzBdLmluZGV4fSgpLGtlLm1hdGNoZXNTZWxlY3Rvcj1hLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tb3pNYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0b3J8fGEub01hdGNoZXNTZWxlY3Rvcnx8YS5tYXRjaGVzU2VsZWN0b3J8fGEubWF0Y2hlc3x8ZnVuY3Rpb24odCl7Zm9yKHZhciBuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw/KHRoaXMucGFyZW50Tm9kZXx8ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwodCl8fFtdOmUodCkscj1uLmxlbmd0aDtyLS07KWlmKG5bcl09PXRoaXMpcmV0dXJuITA7cmV0dXJuITF9LGtlLnB1c2hTdGF0ZT10Lmhpc3RvcnkmJnQuaGlzdG9yeS5wdXNoU3RhdGUsbD1kb2N1bWVudC5kb2N1bWVudE1vZGUsa2UuaGFzaENoYW5nZT1cIm9uaGFzaGNoYW5nZVwiaW4gdCYmIShrZS5icm93c2VyLm1zaWUmJighbHx8bDw9OCkpLGtlLmN1c3RvbUVsZW1lbnRzPVwicmVnaXN0ZXJFbGVtZW50XCJpbiB0LmRvY3VtZW50fSgpLGo9e2xlZnQ6e3JldmVyc2U6XCJyaWdodFwifSxyaWdodDp7cmV2ZXJzZTpcImxlZnRcIn0sZG93bjp7cmV2ZXJzZTpcInVwXCJ9LHVwOntyZXZlcnNlOlwiZG93blwifSx0b3A6e3JldmVyc2U6XCJib3R0b21cIn0sYm90dG9tOntyZXZlcnNlOlwidG9wXCJ9LFwiaW5cIjp7cmV2ZXJzZTpcIm91dFwifSxvdXQ6e3JldmVyc2U6XCJpblwifX0sQj17fSxlLmV4dGVuZChCLHtlbmFibGVkOiEwLEVsZW1lbnQ6ZnVuY3Rpb24odCl7dGhpcy5lbGVtZW50PWUodCl9LHByb21pc2U6ZnVuY3Rpb24oZSx0KXtlLmlzKFwiOnZpc2libGVcIil8fGUuY3NzKHtkaXNwbGF5OmUuZGF0YShcIm9sZGRpc3BsYXlcIil8fFwiYmxvY2tcIn0pLmNzcyhcImRpc3BsYXlcIiksdC5oaWRlJiZlLmRhdGEoXCJvbGRkaXNwbGF5XCIsZS5jc3MoXCJkaXNwbGF5XCIpKS5oaWRlKCksdC5pbml0JiZ0LmluaXQoKSx0LmNvbXBsZXRlQ2FsbGJhY2smJnQuY29tcGxldGVDYWxsYmFjayhlKSxlLmRlcXVldWUoKX0sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuZW5hYmxlZD0hMSx0aGlzLnByb21pc2U9dGhpcy5wcm9taXNlU2hpbX0sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSEwLHRoaXMucHJvbWlzZT10aGlzLmFuaW1hdGVkUHJvbWlzZX19KSxCLnByb21pc2VTaGltPUIucHJvbWlzZSxcImtlbmRvQW5pbWF0ZVwiaW4gZS5mbnx8dmUoZS5mbix7a2VuZG9TdG9wOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuc3RvcChlLHQpfSxrZW5kb0FuaW1hdGU6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIE0odGhpcyxlLHQsbixyKX0sa2VuZG9BZGRDbGFzczpmdW5jdGlvbihlLHQpe3JldHVybiB5ZS50b2dnbGVDbGFzcyh0aGlzLGUsdCwhMCl9LGtlbmRvUmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geWUudG9nZ2xlQ2xhc3ModGhpcyxlLHQsITEpfSxrZW5kb1RvZ2dsZUNsYXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4geWUudG9nZ2xlQ2xhc3ModGhpcyxlLHQsbil9fSksSj0vJi9nLFk9LzwvZyxxPS9cIi9nLFY9LycvZyxHPS8+L2csSz1mdW5jdGlvbihlKXtyZXR1cm4gZS50YXJnZXR9LGtlLnRvdWNoJiYoSz1mdW5jdGlvbihlKXt2YXIgdD1cIm9yaWdpbmFsRXZlbnRcImluIGU/ZS5vcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzOlwiY2hhbmdlZFRvdWNoZXNcImluIGU/ZS5jaGFuZ2VkVG91Y2hlczpudWxsO3JldHVybiB0P2RvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQodFswXS5jbGllbnRYLHRbMF0uY2xpZW50WSk6ZS50YXJnZXR9LGJlKFtcInN3aXBlXCIsXCJzd2lwZUxlZnRcIixcInN3aXBlUmlnaHRcIixcInN3aXBlVXBcIixcInN3aXBlRG93blwiLFwiZG91YmxlVGFwXCIsXCJ0YXBcIl0sZnVuY3Rpb24odCxuKXtlLmZuW25dPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmJpbmQobixlKX19KSksa2UudG91Y2g/a2UubW9iaWxlT1M/KGtlLm1vdXNlZG93bj1cInRvdWNoc3RhcnRcIixrZS5tb3VzZXVwPVwidG91Y2hlbmRcIixrZS5tb3VzZW1vdmU9XCJ0b3VjaG1vdmVcIixrZS5tb3VzZWNhbmNlbD1cInRvdWNoY2FuY2VsXCIsa2UuY2xpY2s9XCJ0b3VjaGVuZFwiLGtlLnJlc2l6ZT1cIm9yaWVudGF0aW9uY2hhbmdlXCIpOihrZS5tb3VzZWRvd249XCJtb3VzZWRvd24gdG91Y2hzdGFydFwiLGtlLm1vdXNldXA9XCJtb3VzZXVwIHRvdWNoZW5kXCIsa2UubW91c2Vtb3ZlPVwibW91c2Vtb3ZlIHRvdWNobW92ZVwiLGtlLm1vdXNlY2FuY2VsPVwibW91c2VsZWF2ZSB0b3VjaGNhbmNlbFwiLGtlLmNsaWNrPVwiY2xpY2tcIixrZS5yZXNpemU9XCJyZXNpemVcIik6a2UucG9pbnRlcnM/KGtlLm1vdXNlbW92ZT1cInBvaW50ZXJtb3ZlXCIsa2UubW91c2Vkb3duPVwicG9pbnRlcmRvd25cIixrZS5tb3VzZXVwPVwicG9pbnRlcnVwXCIsa2UubW91c2VjYW5jZWw9XCJwb2ludGVyY2FuY2VsXCIsa2UuY2xpY2s9XCJwb2ludGVydXBcIixrZS5yZXNpemU9XCJvcmllbnRhdGlvbmNoYW5nZSByZXNpemVcIik6a2UubXNQb2ludGVycz8oa2UubW91c2Vtb3ZlPVwiTVNQb2ludGVyTW92ZVwiLGtlLm1vdXNlZG93bj1cIk1TUG9pbnRlckRvd25cIixrZS5tb3VzZXVwPVwiTVNQb2ludGVyVXBcIixrZS5tb3VzZWNhbmNlbD1cIk1TUG9pbnRlckNhbmNlbFwiLGtlLmNsaWNrPVwiTVNQb2ludGVyVXBcIixrZS5yZXNpemU9XCJvcmllbnRhdGlvbmNoYW5nZSByZXNpemVcIik6KGtlLm1vdXNlbW92ZT1cIm1vdXNlbW92ZVwiLGtlLm1vdXNlZG93bj1cIm1vdXNlZG93blwiLGtlLm1vdXNldXA9XCJtb3VzZXVwXCIsa2UubW91c2VjYW5jZWw9XCJtb3VzZWxlYXZlXCIsa2UuY2xpY2s9XCJjbGlja1wiLGtlLnJlc2l6ZT1cInJlc2l6ZVwiKSxRPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGksYT10fHxcImRcIixzPTE7Zm9yKHI9MCxvPWUubGVuZ3RoO3I8bztyKyspaT1lW3JdLFwiXCIhPT1pJiYobj1pLmluZGV4T2YoXCJbXCIpLDAhPT1uJiYobj09LTE/aT1cIi5cIitpOihzKyssaT1cIi5cIitpLnN1YnN0cmluZygwLG4pK1wiIHx8IHt9KVwiK2kuc3Vic3RyaW5nKG4pKSkscysrLGErPWkrKHI8by0xP1wiIHx8IHt9KVwiOlwiKVwiKSk7cmV0dXJuIEFycmF5KHMpLmpvaW4oXCIoXCIpK2F9LFo9L14oW2Etel0rOik/XFwvXFwvL2ksdmUoeWUse3dpZGdldHM6W10sX3dpZGdldFJlZ2lzdGVyZWRDYWxsYmFja3M6W10sdWk6eWUudWl8fHt9LGZ4OnllLmZ4fHxiLGVmZmVjdHM6eWUuZWZmZWN0c3x8Qixtb2JpbGU6eWUubW9iaWxlfHx7fSxkYXRhOnllLmRhdGF8fHt9LGRhdGF2aXo6eWUuZGF0YXZpenx8e30sZHJhd2luZzp5ZS5kcmF3aW5nfHx7fSxzcHJlYWRzaGVldDp7bWVzc2FnZXM6e319LGtleXM6e0lOU0VSVDo0NSxERUxFVEU6NDYsQkFDS1NQQUNFOjgsVEFCOjksRU5URVI6MTMsRVNDOjI3LExFRlQ6MzcsVVA6MzgsUklHSFQ6MzksRE9XTjo0MCxFTkQ6MzUsSE9NRTozNixTUEFDRUJBUjozMixQQUdFVVA6MzMsUEFHRURPV046MzQsRjI6MTEzLEYxMDoxMjEsRjEyOjEyMyxOVU1QQURfUExVUzoxMDcsTlVNUEFEX01JTlVTOjEwOSxOVU1QQURfRE9UOjExMH0sc3VwcG9ydDp5ZS5zdXBwb3J0fHxrZSxhbmltYXRlOnllLmFuaW1hdGV8fE0sbnM6XCJcIixhdHRyOmZ1bmN0aW9uKGUpe3JldHVyblwiZGF0YS1cIit5ZS5ucytlfSxnZXRTaGFkb3dzOmEsd3JhcDpzLGRlZXBFeHRlbmQ6dSxnZXRDb21wdXRlZFN0eWxlczptLHdlYkNvbXBvbmVudHM6eWUud2ViQ29tcG9uZW50c3x8W10saXNTY3JvbGxhYmxlOnAsc2Nyb2xsTGVmdDpoLHNpemU6Zyx0b0NhbWVsQ2FzZTpmLHRvSHlwaGVuczpkLGdldE9mZnNldDp5ZS5nZXRPZmZzZXR8fHkscGFyc2VFZmZlY3RzOnllLnBhcnNlRWZmZWN0c3x8dix0b2dnbGVDbGFzczp5ZS50b2dnbGVDbGFzc3x8UyxkaXJlY3Rpb25zOnllLmRpcmVjdGlvbnN8fGosT2JzZXJ2YWJsZTpQLENsYXNzOnIsVGVtcGxhdGU6SCx0ZW1wbGF0ZTpNZShILmNvbXBpbGUsSCkscmVuZGVyOk1lKEgucmVuZGVyLEgpLHN0cmluZ2lmeTpNZSh4ZS5zdHJpbmdpZnkseGUpLGV2ZW50VGFyZ2V0OkssaHRtbEVuY29kZTpULGlzTG9jYWxVcmw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiFaLnRlc3QoZSl9LGV4cHI6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPWV8fFwiXCIsdHlwZW9mIHQ9PUhlJiYobj10LHQ9ITEpLG49bnx8XCJkXCIsZSYmXCJbXCIhPT1lLmNoYXJBdCgwKSYmKGU9XCIuXCIrZSksdD8oZT1lLnJlcGxhY2UoL1wiKFteLl0qKVxcLihbXlwiXSopXCIvZywnXCIkMV8kRE9UJF8kMlwiJyksZT1lLnJlcGxhY2UoLycoW14uXSopXFwuKFteJ10qKScvZyxcIickMV8kRE9UJF8kMidcIiksZT1RKGUuc3BsaXQoXCIuXCIpLG4pLGU9ZS5yZXBsYWNlKC9fXFwkRE9UXFwkXy9nLFwiLlwiKSk6ZT1uK2UsZX0sZ2V0dGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZSt0O3JldHVybiBSZVtuXT1SZVtuXXx8RnVuY3Rpb24oXCJkXCIsXCJyZXR1cm4gXCIreWUuZXhwcihlLHQpKX0sc2V0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBVZVtlXT1VZVtlXXx8RnVuY3Rpb24oXCJkLHZhbHVlXCIseWUuZXhwcihlKStcIj12YWx1ZVwiKX0sYWNjZXNzb3I6ZnVuY3Rpb24oZSl7cmV0dXJue2dldDp5ZS5nZXR0ZXIoZSksc2V0OnllLnNldHRlcihlKX19LGd1aWQ6ZnVuY3Rpb24oKXt2YXIgZSx0LG49XCJcIjtmb3IoZT0wO2U8MzI7ZSsrKXQ9MTYqVGUucmFuZG9tKCl8MCw4IT1lJiYxMiE9ZSYmMTYhPWUmJjIwIT1lfHwobis9XCItXCIpLG4rPSgxMj09ZT80OjE2PT1lPzMmdHw4OnQpLnRvU3RyaW5nKDE2KTtyZXR1cm4gbn0scm9sZVNlbGVjdG9yOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhcXFMrKS9nLFwiW1wiK3llLmF0dHIoXCJyb2xlXCIpK1wiPSQxXSxcIikuc2xpY2UoMCwtMSl9LGRpcmVjdGl2ZVNlbGVjdG9yOmZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5zcGxpdChcIiBcIik7aWYobilmb3IodD0wO3Q8bi5sZW5ndGg7dCsrKVwidmlld1wiIT1uW3RdJiYoblt0XT1uW3RdLnJlcGxhY2UoLyhcXHcqKSh2aWV3fGJhcnxzdHJpcHxvdmVyKSQvLFwiJDEtJDJcIikpO3JldHVybiBuLmpvaW4oXCIgXCIpLnJlcGxhY2UoLyhcXFMrKS9nLFwia2VuZG8tbW9iaWxlLSQxLFwiKS5zbGljZSgwLC0xKX0sdHJpZ2dlcmVkQnlJbnB1dDpmdW5jdGlvbihlKXtyZXR1cm4vXihsYWJlbHxpbnB1dHx0ZXh0YXJlYXxzZWxlY3QpJC9pLnRlc3QoZS50YXJnZXQudGFnTmFtZSl9LG9uV2lkZ2V0UmVnaXN0ZXJlZDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPXllLndpZGdldHMubGVuZ3RoO3Q8bjt0KyspZSh5ZS53aWRnZXRzW3RdKTt5ZS5fd2lkZ2V0UmVnaXN0ZXJlZENhbGxiYWNrcy5wdXNoKGUpfSxsb2dUb0NvbnNvbGU6ZnVuY3Rpb24oZSxyKXt2YXIgbz10LmNvbnNvbGU7IXllLnN1cHByZXNzTG9nJiZuIT09byYmby5sb2cmJm9bcnx8XCJsb2dcIl0oZSl9fSksWD1QLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9dGhpcztyLmVsZW1lbnQ9eWUualF1ZXJ5KGUpLmhhbmRsZXIociksci5hbmd1bGFyKFwiaW5pdFwiLHQpLFAuZm4uaW5pdC5jYWxsKHIpLG49dD90LmRhdGFTb3VyY2U6bnVsbCxuJiYodD12ZSh7fSx0LHtkYXRhU291cmNlOnt9fSkpLHQ9ci5vcHRpb25zPXZlKCEwLHt9LHIub3B0aW9ucyx0KSxuJiYodC5kYXRhU291cmNlPW4pLFxuci5lbGVtZW50LmF0dHIoeWUuYXR0cihcInJvbGVcIikpfHxyLmVsZW1lbnQuYXR0cih5ZS5hdHRyKFwicm9sZVwiKSwodC5uYW1lfHxcIlwiKS50b0xvd2VyQ2FzZSgpKSxyLmVsZW1lbnQuZGF0YShcImtlbmRvXCIrdC5wcmVmaXgrdC5uYW1lLHIpLHIuYmluZChyLmV2ZW50cyx0KX0sZXZlbnRzOltdLG9wdGlvbnM6e3ByZWZpeDpcIlwifSxfaGFzQmluZGluZ1RhcmdldDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5lbGVtZW50WzBdLmtlbmRvQmluZGluZ1RhcmdldH0sX3RhYmluZGV4OmZ1bmN0aW9uKGUpe2U9ZXx8dGhpcy53cmFwcGVyO3ZhciB0PXRoaXMuZWxlbWVudCxuPVwidGFiaW5kZXhcIixyPWUuYXR0cihuKXx8dC5hdHRyKG4pO3QucmVtb3ZlQXR0cihuKSxlLmF0dHIobixpc05hTihyKT8wOnIpfSxzZXRPcHRpb25zOmZ1bmN0aW9uKHQpe3RoaXMuX3NldEV2ZW50cyh0KSxlLmV4dGVuZCh0aGlzLm9wdGlvbnMsdCl9LF9zZXRFdmVudHM6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49dGhpcyxyPTAsbz1uLmV2ZW50cy5sZW5ndGg7cjxvO3IrKyl0PW4uZXZlbnRzW3JdLG4ub3B0aW9uc1t0XSYmZVt0XSYmbi51bmJpbmQodCxuLm9wdGlvbnNbdF0pO24uYmluZChuLmV2ZW50cyxlKX0scmVzaXplOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0U2l6ZSgpLG49dGhpcy5fc2l6ZTsoZXx8KHQud2lkdGg+MHx8dC5oZWlnaHQ+MCkmJighbnx8dC53aWR0aCE9PW4ud2lkdGh8fHQuaGVpZ2h0IT09bi5oZWlnaHQpKSYmKHRoaXMuX3NpemU9dCx0aGlzLl9yZXNpemUodCxlKSx0aGlzLnRyaWdnZXIoXCJyZXNpemVcIix0KSl9LGdldFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4geWUuZGltZW5zaW9ucyh0aGlzLmVsZW1lbnQpfSxzaXplOmZ1bmN0aW9uKGUpe3JldHVybiBlPyh0aGlzLnNldFNpemUoZSksbik6dGhpcy5nZXRTaXplKCl9LHNldFNpemU6ZS5ub29wLF9yZXNpemU6ZS5ub29wLGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuZWxlbWVudC5yZW1vdmVEYXRhKFwia2VuZG9cIitlLm9wdGlvbnMucHJlZml4K2Uub3B0aW9ucy5uYW1lKSxlLmVsZW1lbnQucmVtb3ZlRGF0YShcImhhbmRsZXJcIiksZS51bmJpbmQoKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmRlc3Ryb3koKX0sYW5ndWxhcjpmdW5jdGlvbigpe30sX211dGVBbmd1bGFyUmViaW5kOmZ1bmN0aW9uKGUpe3RoaXMuX211dGVSZWJpbmQ9ITAsZS5jYWxsKHRoaXMpLHRoaXMuX211dGVSZWJpbmQ9ITF9fSksZWU9WC5leHRlbmQoe2RhdGFJdGVtczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmxhdFZpZXcoKX0sX2FuZ3VsYXJJdGVtczpmdW5jdGlvbih0KXt2YXIgbj10aGlzO24uYW5ndWxhcih0LGZ1bmN0aW9uKCl7cmV0dXJue2VsZW1lbnRzOm4uaXRlbXMoKSxkYXRhOmUubWFwKG4uZGF0YUl0ZW1zKCksZnVuY3Rpb24oZSl7cmV0dXJue2RhdGFJdGVtOmV9fSl9fSl9fSkseWUuZGltZW5zaW9ucz1mdW5jdGlvbihlLHQpe3ZhciBuPWVbMF07cmV0dXJuIHQmJmUuY3NzKHQpLHt3aWR0aDpuLm9mZnNldFdpZHRoLGhlaWdodDpuLm9mZnNldEhlaWdodH19LHllLm5vdGlmeT1TZSx0ZT0vdGVtcGxhdGUkL2ksbmU9L15cXHMqKD86XFx7KD86LnxcXHJcXG58XFxuKSpcXH18XFxbKD86LnxcXHJcXG58XFxuKSpcXF0pXFxzKiQvLHJlPS9eXFx7KFxcZCspKDpbXlxcfV0rKT9cXH18XlxcW1tBLVphLXpfXSpcXF0kLyxvZT0vKFtBLVpdKS9nLHllLmluaXRXaWRnZXQ9ZnVuY3Rpb24ocixvLGkpe3ZhciBhLHMsdSxsLGMsZCxmLG0scCxoLGcseSx2O2lmKGk/aS5yb2xlcyYmKGk9aS5yb2xlcyk6aT15ZS51aS5yb2xlcyxyPXIubm9kZVR5cGU/cjpyWzBdLGQ9ci5nZXRBdHRyaWJ1dGUoXCJkYXRhLVwiK3llLm5zK1wicm9sZVwiKSl7cD1kLmluZGV4T2YoXCIuXCIpPT09LTEsdT1wP2lbZF06eWUuZ2V0dGVyKGQpKHQpLGc9ZShyKS5kYXRhKCkseT11P1wia2VuZG9cIit1LmZuLm9wdGlvbnMucHJlZml4K3UuZm4ub3B0aW9ucy5uYW1lOlwiXCIsaD1wP1JlZ0V4cChcIl5rZW5kby4qXCIrZCtcIiRcIixcImlcIik6UmVnRXhwKFwiXlwiK3krXCIkXCIsXCJpXCIpO2Zvcih2IGluIGcpaWYodi5tYXRjaChoKSl7aWYodiE9PXkpcmV0dXJuIGdbdl07YT1nW3ZdfWlmKHUpe2ZvcihtPXgocixcImRhdGFTb3VyY2VcIiksbz1lLmV4dGVuZCh7fSxrKHIsdS5mbi5vcHRpb25zKSxvKSxtJiYoby5kYXRhU291cmNlPXR5cGVvZiBtPT09SGU/eWUuZ2V0dGVyKG0pKHQpOm0pLGw9MCxjPXUuZm4uZXZlbnRzLmxlbmd0aDtsPGM7bCsrKXM9dS5mbi5ldmVudHNbbF0sZj14KHIscyksZiE9PW4mJihvW3NdPXllLmdldHRlcihmKSh0KSk7cmV0dXJuIGE/ZS5pc0VtcHR5T2JqZWN0KG8pfHxhLnNldE9wdGlvbnMobyk6YT1uZXcgdShyLG8pLGF9fX0seWUucm9sZXNGcm9tTmFtZXNwYWNlcz1mdW5jdGlvbihlKXt2YXIgdCxuLHI9W107Zm9yKGVbMF18fChlPVt5ZS51aSx5ZS5kYXRhdml6LnVpXSksdD0wLG49ZS5sZW5ndGg7dDxuO3QrKylyW3RdPWVbdF0ucm9sZXM7cmV0dXJuIHZlLmFwcGx5KG51bGwsW3t9XS5jb25jYXQoci5yZXZlcnNlKCkpKX0seWUuaW5pdD1mdW5jdGlvbih0KXt2YXIgbj15ZS5yb2xlc0Zyb21OYW1lc3BhY2VzKEllLmNhbGwoYXJndW1lbnRzLDEpKTtlKHQpLmZpbmQoXCJbZGF0YS1cIit5ZS5ucytcInJvbGVdXCIpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7eWUuaW5pdFdpZGdldCh0aGlzLHt9LG4pfSl9LHllLmRlc3Ryb3k9ZnVuY3Rpb24odCl7ZSh0KS5maW5kKFwiW2RhdGEtXCIreWUubnMrXCJyb2xlXVwiKS5hZGRCYWNrKCkuZWFjaChmdW5jdGlvbigpe3ZhciB0LG49ZSh0aGlzKS5kYXRhKCk7Zm9yKHQgaW4gbikwPT09dC5pbmRleE9mKFwia2VuZG9cIikmJnR5cGVvZiBuW3RdLmRlc3Ryb3k9PT1FZSYmblt0XS5kZXN0cm95KCl9KX0seWUucmVzaXplPWZ1bmN0aW9uKHQsbil7dmFyIHIsbz1lKHQpLmZpbmQoXCJbZGF0YS1cIit5ZS5ucytcInJvbGVdXCIpLmFkZEJhY2soKS5maWx0ZXIoeik7by5sZW5ndGgmJihyPWUubWFrZUFycmF5KG8pLHIuc29ydChPKSxlLmVhY2gocixmdW5jdGlvbigpe3ZhciB0PXllLndpZGdldEluc3RhbmNlKGUodGhpcykpO3QmJnQucmVzaXplKG4pfSkpfSx5ZS5wYXJzZU9wdGlvbnM9ayx2ZSh5ZS51aSx7V2lkZ2V0OlgsRGF0YUJvdW5kV2lkZ2V0OmVlLHJvbGVzOnt9LHByb2dyZXNzOmZ1bmN0aW9uKHQsbil7dmFyIHIsbyxpLGEscz10LmZpbmQoXCIuay1sb2FkaW5nLW1hc2tcIiksdT15ZS5zdXBwb3J0LGw9dS5icm93c2VyO24/cy5sZW5ndGh8fChyPXUuaXNSdGwodCksbz1yP1wicmlnaHRcIjpcImxlZnRcIixhPXQuc2Nyb2xsTGVmdCgpLGk9bC53ZWJraXQmJnI/dFswXS5zY3JvbGxXaWR0aC10LndpZHRoKCktMiphOjAscz1lKFwiPGRpdiBjbGFzcz0nay1sb2FkaW5nLW1hc2snPjxzcGFuIGNsYXNzPSdrLWxvYWRpbmctdGV4dCc+XCIreWUudWkucHJvZ3Jlc3MubWVzc2FnZXMubG9hZGluZytcIjwvc3Bhbj48ZGl2IGNsYXNzPSdrLWxvYWRpbmctaW1hZ2UnLz48ZGl2IGNsYXNzPSdrLWxvYWRpbmctY29sb3InLz48L2Rpdj5cIikud2lkdGgoXCIxMDAlXCIpLmhlaWdodChcIjEwMCVcIikuY3NzKFwidG9wXCIsdC5zY3JvbGxUb3AoKSkuY3NzKG8sTWF0aC5hYnMoYSkraSkucHJlcGVuZFRvKHQpKTpzJiZzLnJlbW92ZSgpfSxwbHVnaW46ZnVuY3Rpb24odCxyLG8pe3ZhciBpLGEscyx1LGw9dC5mbi5vcHRpb25zLm5hbWU7Zm9yKHI9cnx8eWUudWksbz1vfHxcIlwiLHJbbF09dCxyLnJvbGVzW2wudG9Mb3dlckNhc2UoKV09dCxpPVwiZ2V0S2VuZG9cIitvK2wsbD1cImtlbmRvXCIrbytsLGE9e25hbWU6bCx3aWRnZXQ6dCxwcmVmaXg6b3x8XCJcIn0seWUud2lkZ2V0cy5wdXNoKGEpLHM9MCx1PXllLl93aWRnZXRSZWdpc3RlcmVkQ2FsbGJhY2tzLmxlbmd0aDtzPHU7cysrKXllLl93aWRnZXRSZWdpc3RlcmVkQ2FsbGJhY2tzW3NdKGEpO2UuZm5bbF09ZnVuY3Rpb24ocil7dmFyIG8saT10aGlzO3JldHVybiB0eXBlb2Ygcj09PUhlPyhvPUllLmNhbGwoYXJndW1lbnRzLDEpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0LGEscz1lLmRhdGEodGhpcyxsKTtpZighcyl0aHJvdyBFcnJvcih5ZS5mb3JtYXQoXCJDYW5ub3QgY2FsbCBtZXRob2QgJ3swfScgb2YgezF9IGJlZm9yZSBpdCBpcyBpbml0aWFsaXplZFwiLHIsbCkpO2lmKHQ9c1tyXSx0eXBlb2YgdCE9PUVlKXRocm93IEVycm9yKHllLmZvcm1hdChcIkNhbm5vdCBmaW5kIG1ldGhvZCAnezB9JyBvZiB7MX1cIixyLGwpKTtpZihhPXQuYXBwbHkocyxvKSxhIT09bilyZXR1cm4gaT1hLCExfSkpOnRoaXMuZWFjaChmdW5jdGlvbigpe3JldHVybiBuZXcgdCh0aGlzLHIpfSksaX0sZS5mbltsXS53aWRnZXQ9dCxlLmZuW2ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YShsKX19fSkseWUudWkucHJvZ3Jlc3MubWVzc2FnZXM9e2xvYWRpbmc6XCJMb2FkaW5nLi4uXCJ9LGllPXtiaW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG51bGxPYmplY3Q6ITAsb3B0aW9uczp7fX0sYWU9WC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXtYLmZuLmluaXQuY2FsbCh0aGlzLGUsdCksdGhpcy5lbGVtZW50LmF1dG9BcHBseU5TKCksdGhpcy53cmFwcGVyPXRoaXMuZWxlbWVudCx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoXCJrbS13aWRnZXRcIil9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtYLmZuLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLmVsZW1lbnQua2VuZG9EZXN0cm95KCl9LG9wdGlvbnM6e3ByZWZpeDpcIk1vYmlsZVwifSxldmVudHM6W10sdmlldzpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZWxlbWVudC5jbG9zZXN0KHllLnJvbGVTZWxlY3RvcihcInZpZXcgc3BsaXR2aWV3IG1vZGFsdmlldyBkcmF3ZXJcIikpO3JldHVybiB5ZS53aWRnZXRJbnN0YW5jZShlLHllLm1vYmlsZS51aSl8fGllfSx2aWV3SGFzTmF0aXZlU2Nyb2xsaW5nOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy52aWV3KCk7cmV0dXJuIGUmJmUub3B0aW9ucy51c2VOYXRpdmVTY3JvbGxpbmd9LGNvbnRhaW5lcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZWxlbWVudC5jbG9zZXN0KHllLnJvbGVTZWxlY3RvcihcInZpZXcgbGF5b3V0IG1vZGFsdmlldyBkcmF3ZXIgc3BsaXR2aWV3XCIpKTtyZXR1cm4geWUud2lkZ2V0SW5zdGFuY2UoZS5lcSgwKSx5ZS5tb2JpbGUudWkpfHxpZX19KSx2ZSh5ZS5tb2JpbGUse2luaXQ6ZnVuY3Rpb24oZSl7eWUuaW5pdChlLHllLm1vYmlsZS51aSx5ZS51aSx5ZS5kYXRhdml6LnVpKX0sYXBwTGV2ZWxOYXRpdmVTY3JvbGxpbmc6ZnVuY3Rpb24oKXtyZXR1cm4geWUubW9iaWxlLmFwcGxpY2F0aW9uJiZ5ZS5tb2JpbGUuYXBwbGljYXRpb24ub3B0aW9ucyYmeWUubW9iaWxlLmFwcGxpY2F0aW9uLm9wdGlvbnMudXNlTmF0aXZlU2Nyb2xsaW5nfSxyb2xlczp7fSx1aTp7V2lkZ2V0OmFlLERhdGFCb3VuZFdpZGdldDplZS5leHRlbmQoYWUucHJvdG90eXBlKSxyb2xlczp7fSxwbHVnaW46ZnVuY3Rpb24oZSl7eWUudWkucGx1Z2luKGUseWUubW9iaWxlLnVpLFwiTW9iaWxlXCIpfX19KSx1KHllLmRhdGF2aXose2luaXQ6ZnVuY3Rpb24oZSl7eWUuaW5pdChlLHllLmRhdGF2aXoudWkpfSx1aTp7cm9sZXM6e30sdGhlbWVzOnt9LHZpZXdzOltdLHBsdWdpbjpmdW5jdGlvbihlKXt5ZS51aS5wbHVnaW4oZSx5ZS5kYXRhdml6LnVpKX19LHJvbGVzOnt9fSkseWUudG91Y2hTY3JvbGxlcj1mdW5jdGlvbih0LG4pe3JldHVybiBufHwobj17fSksbi51c2VOYXRpdmU9ITAsZSh0KS5tYXAoZnVuY3Rpb24odCxyKXtyZXR1cm4gcj1lKHIpLCEoIWtlLmtpbmV0aWNTY3JvbGxOZWVkZWR8fCF5ZS5tb2JpbGUudWkuU2Nyb2xsZXJ8fHIuZGF0YShcImtlbmRvTW9iaWxlU2Nyb2xsZXJcIikpJiYoci5rZW5kb01vYmlsZVNjcm9sbGVyKG4pLHIuZGF0YShcImtlbmRvTW9iaWxlU2Nyb2xsZXJcIikpfSlbMF19LHllLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKX0seWUud2lkZ2V0SW5zdGFuY2U9ZnVuY3Rpb24oZSxuKXt2YXIgcixvLGksYSxzPWUuZGF0YSh5ZS5ucytcInJvbGVcIiksdT1bXTtpZihzKXtpZihcImNvbnRlbnRcIj09PXMmJihzPVwic2Nyb2xsZXJcIiksbilpZihuWzBdKWZvcihyPTAsbz1uLmxlbmd0aDtyPG87cisrKXUucHVzaChuW3JdLnJvbGVzW3NdKTtlbHNlIHUucHVzaChuLnJvbGVzW3NdKTtlbHNlIHU9W3llLnVpLnJvbGVzW3NdLHllLmRhdGF2aXoudWkucm9sZXNbc10seWUubW9iaWxlLnVpLnJvbGVzW3NdXTtmb3Iocy5pbmRleE9mKFwiLlwiKT49MCYmKHU9W3llLmdldHRlcihzKSh0KV0pLHI9MCxvPXUubGVuZ3RoO3I8bztyKyspaWYoaT11W3JdLGkmJihhPWUuZGF0YShcImtlbmRvXCIraS5mbi5vcHRpb25zLnByZWZpeCtpLmZuLm9wdGlvbnMubmFtZSkpKXJldHVybiBhfX0seWUub25SZXNpemU9ZnVuY3Rpb24obil7dmFyIHI9bjtyZXR1cm4ga2UubW9iaWxlT1MuYW5kcm9pZCYmKHI9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KG4sNjAwKX0pLGUodCkub24oa2UucmVzaXplLHIpLHJ9LHllLnVuYmluZFJlc2l6ZT1mdW5jdGlvbihuKXtlKHQpLm9mZihrZS5yZXNpemUsbil9LHllLmF0dHJWYWx1ZT1mdW5jdGlvbihlLHQpe3JldHVybiBlLmRhdGEoeWUubnMrdCl9LHllLmRheXM9e1N1bmRheTowLE1vbmRheToxLFR1ZXNkYXk6MixXZWRuZXNkYXk6MyxUaHVyc2RheTo0LEZyaWRheTo1LFNhdHVyZGF5OjZ9LGUuZXh0ZW5kKGUuZXhwcltcIjpcIl0se2tlbmRvRm9jdXNhYmxlOmZ1bmN0aW9uKHQpe3ZhciBuPWUuYXR0cih0LFwidGFiaW5kZXhcIik7cmV0dXJuIEQodCwhaXNOYU4obikmJm4+LTEpfX0pLHNlPVtcIm1vdXNlZG93blwiLFwibW91c2Vtb3ZlXCIsXCJtb3VzZWVudGVyXCIsXCJtb3VzZWxlYXZlXCIsXCJtb3VzZW92ZXJcIixcIm1vdXNlb3V0XCIsXCJtb3VzZXVwXCIsXCJjbGlja1wiXSx1ZT1cImxhYmVsLCBpbnB1dCwgW2RhdGEtcmVsPWV4dGVybmFsXVwiLGxlPXtzZXR1cE1vdXNlTXV0ZTpmdW5jdGlvbigpe3ZhciB0LG49MCxyPXNlLmxlbmd0aCxvPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtpZighbGUubW91c2VUcmFwJiZrZS5ldmVudENhcHR1cmUpZm9yKGxlLm1vdXNlVHJhcD0hMCxsZS5idXN0Q2xpY2s9ITEsbGUuY2FwdHVyZU1vdXNlPSExLHQ9ZnVuY3Rpb24odCl7bGUuY2FwdHVyZU1vdXNlJiYoXCJjbGlja1wiPT09dC50eXBlP2xlLmJ1c3RDbGljayYmIWUodC50YXJnZXQpLmlzKHVlKSYmKHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpKTp0LnN0b3BQcm9wYWdhdGlvbigpKX07bjxyO24rKylvLmFkZEV2ZW50TGlzdGVuZXIoc2Vbbl0sdCwhMCl9LG11dGVNb3VzZTpmdW5jdGlvbihlKXtsZS5jYXB0dXJlTW91c2U9ITAsZS5kYXRhLmJ1c3RDbGljayYmKGxlLmJ1c3RDbGljaz0hMCksY2xlYXJUaW1lb3V0KGxlLm1vdXNlVHJhcFRpbWVvdXRJRCl9LHVuTXV0ZU1vdXNlOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGxlLm1vdXNlVHJhcFRpbWVvdXRJRCksbGUubW91c2VUcmFwVGltZW91dElEPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtsZS5jYXB0dXJlTW91c2U9ITEsbGUuYnVzdENsaWNrPSExfSw0MDApfX0sY2U9e2Rvd246XCJ0b3VjaHN0YXJ0IG1vdXNlZG93blwiLG1vdmU6XCJtb3VzZW1vdmUgdG91Y2htb3ZlXCIsdXA6XCJtb3VzZXVwIHRvdWNoZW5kIHRvdWNoY2FuY2VsXCIsY2FuY2VsOlwibW91c2VsZWF2ZSB0b3VjaGNhbmNlbFwifSxrZS50b3VjaCYmKGtlLm1vYmlsZU9TLmlvc3x8a2UubW9iaWxlT1MuYW5kcm9pZCk/Y2U9e2Rvd246XCJ0b3VjaHN0YXJ0XCIsbW92ZTpcInRvdWNobW92ZVwiLHVwOlwidG91Y2hlbmQgdG91Y2hjYW5jZWxcIixjYW5jZWw6XCJ0b3VjaGNhbmNlbFwifTprZS5wb2ludGVycz9jZT17ZG93bjpcInBvaW50ZXJkb3duXCIsbW92ZTpcInBvaW50ZXJtb3ZlXCIsdXA6XCJwb2ludGVydXBcIixjYW5jZWw6XCJwb2ludGVyY2FuY2VsIHBvaW50ZXJsZWF2ZVwifTprZS5tc1BvaW50ZXJzJiYoY2U9e2Rvd246XCJNU1BvaW50ZXJEb3duXCIsbW92ZTpcIk1TUG9pbnRlck1vdmVcIix1cDpcIk1TUG9pbnRlclVwXCIsY2FuY2VsOlwiTVNQb2ludGVyQ2FuY2VsIE1TUG9pbnRlckxlYXZlXCJ9KSwha2UubXNQb2ludGVyc3x8XCJvbm1zcG9pbnRlcmVudGVyXCJpbiB0fHxlLmVhY2goe01TUG9pbnRlckVudGVyOlwiTVNQb2ludGVyT3ZlclwiLE1TUG9pbnRlckxlYXZlOlwiTVNQb2ludGVyT3V0XCJ9LGZ1bmN0aW9uKHQsbil7ZS5ldmVudC5zcGVjaWFsW3RdPXtkZWxlZ2F0ZVR5cGU6bixiaW5kVHlwZTpuLGhhbmRsZTpmdW5jdGlvbih0KXt2YXIgcixvPXRoaXMsaT10LnJlbGF0ZWRUYXJnZXQsYT10LmhhbmRsZU9iajtyZXR1cm4gaSYmKGk9PT1vfHxlLmNvbnRhaW5zKG8saSkpfHwodC50eXBlPWEub3JpZ1R5cGUscj1hLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLHQudHlwZT1uKSxyfX19KSxkZT1mdW5jdGlvbihlKXtyZXR1cm4gY2VbZV18fGV9LGZlPS8oW14gXSspL2cseWUuYXBwbHlFdmVudE1hcD1mdW5jdGlvbihlLHQpe3JldHVybiBlPWUucmVwbGFjZShmZSxkZSksdCYmKGU9ZS5yZXBsYWNlKGZlLFwiJDEuXCIrdCkpLGV9LG1lPWUuZm4ub24sdmUoITAsRSxlKSxFLmZuPUUucHJvdG90eXBlPW5ldyBlLEUuZm4uY29uc3RydWN0b3I9RSxFLmZuLmluaXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbiYmbiBpbnN0YW5jZW9mIGUmJiEobiBpbnN0YW5jZW9mIEUpJiYobj1FKG4pKSxlLmZuLmluaXQuY2FsbCh0aGlzLHQsbixwZSl9LEUuZm4uaW5pdC5wcm90b3R5cGU9RS5mbixwZT1FKGRvY3VtZW50KSx2ZShFLmZuLHtoYW5kbGVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRhdGEoXCJoYW5kbGVyXCIsZSksdGhpc30sYXV0b0FwcGx5TlM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZGF0YShcImtlbmRvTlNcIixlfHx5ZS5ndWlkKCkpLHRoaXN9LG9uOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsbyxpLGE9dGhpcyxzPWEuZGF0YShcImtlbmRvTlNcIik7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP21lLmNhbGwoYSxhcmd1bWVudHNbMF0pOihlPWEsdD1JZS5jYWxsKGFyZ3VtZW50cyksdHlwZW9mIHRbdC5sZW5ndGgtMV09PT1GZSYmdC5wb3AoKSxuPXRbdC5sZW5ndGgtMV0scj15ZS5hcHBseUV2ZW50TWFwKHRbMF0scyksa2UubW91c2VBbmRUb3VjaFByZXNlbnQmJnIuc2VhcmNoKC9tb3VzZXxjbGljay8pPi0xJiZ0aGlzWzBdIT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiYobGUuc2V0dXBNb3VzZU11dGUoKSxvPTI9PT10Lmxlbmd0aD9udWxsOnRbMV0saT1yLmluZGV4T2YoXCJjbGlja1wiKT4tMSYmci5pbmRleE9mKFwidG91Y2hlbmRcIik+LTEsbWUuY2FsbCh0aGlzLHt0b3VjaHN0YXJ0OmxlLm11dGVNb3VzZSx0b3VjaGVuZDpsZS51bk11dGVNb3VzZX0sbyx7YnVzdENsaWNrOml9KSksdHlwZW9mIG49PT1IZSYmKGU9YS5kYXRhKFwiaGFuZGxlclwiKSxuPWVbbl0sdFt0Lmxlbmd0aC0xXT1mdW5jdGlvbih0KXtuLmNhbGwoZSx0KX0pLHRbMF09cixtZS5hcHBseShhLHQpLGEpfSxrZW5kb0Rlc3Ryb3k6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZXx8dGhpcy5kYXRhKFwia2VuZG9OU1wiKSxlJiZ0aGlzLm9mZihcIi5cIitlKSx0aGlzfX0pLHllLmpRdWVyeT1FLHllLmV2ZW50TWFwPWNlLHllLnRpbWV6b25lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3ZhciBuLHIsbyxpPXRbM10sYT10WzRdLHM9dFs1XSx1PXRbOF07cmV0dXJuIHV8fCh0WzhdPXU9e30pLHVbZV0/dVtlXTooaXNOYU4oYSk/MD09PWEuaW5kZXhPZihcImxhc3RcIik/KG49bmV3IERhdGUoRGF0ZS5VVEMoZSxjW2ldKzEsMSxzWzBdLTI0LHNbMV0sc1syXSwwKSkscj1kW2Euc3Vic3RyKDQsMyldLG89bi5nZXRVVENEYXkoKSxuLnNldFVUQ0RhdGUobi5nZXRVVENEYXRlKCkrci1vLShyPm8/NzowKSkpOmEuaW5kZXhPZihcIj49XCIpPj0wJiYobj1uZXcgRGF0ZShEYXRlLlVUQyhlLGNbaV0sYS5zdWJzdHIoNSksc1swXSxzWzFdLHNbMl0sMCkpLHI9ZFthLnN1YnN0cigwLDMpXSxvPW4uZ2V0VVRDRGF5KCksbi5zZXRVVENEYXRlKG4uZ2V0VVRDRGF0ZSgpK3ItbysocjxvPzc6MCkpKTpuPW5ldyBEYXRlKERhdGUuVVRDKGUsY1tpXSxhLHNbMF0sc1sxXSxzWzJdLDApKSx1W2VdPW4pfWZ1bmN0aW9uIHQodCxuLHIpe3ZhciBvLGksYSxzO3JldHVybihuPW5bcl0pPyhhPW5ldyBEYXRlKHQpLmdldFVUQ0Z1bGxZZWFyKCksbj1qUXVlcnkuZ3JlcChuLGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0sbj1lWzFdO3JldHVybiB0PD1hJiYobj49YXx8dD09YSYmXCJvbmx5XCI9PW58fFwibWF4XCI9PW4pfSksbi5wdXNoKHQpLG4uc29ydChmdW5jdGlvbih0LG4pe3JldHVyblwibnVtYmVyXCIhPXR5cGVvZiB0JiYodD0rZShhLHQpKSxcIm51bWJlclwiIT10eXBlb2YgbiYmKG49K2UoYSxuKSksdC1ufSkscz1uW2pRdWVyeS5pbkFycmF5KHQsbiktMV18fG5bbi5sZW5ndGgtMV0saXNOYU4ocyk/czpudWxsKToobz1yLnNwbGl0KFwiOlwiKSxpPTAsby5sZW5ndGg+MSYmKGk9NjAqb1swXSsgK29bMV0pLFstMWU2LFwibWF4XCIsXCItXCIsXCJKYW5cIiwxLFswLDAsMF0saSxcIi1cIl0pfWZ1bmN0aW9uIG4oZSx0LG4pe3ZhciByLG8saSxhPXRbbl07aWYoXCJzdHJpbmdcIj09dHlwZW9mIGEmJihhPXRbYV0pLCFhKXRocm93IEVycm9yKCdUaW1lem9uZSBcIicrbisnXCIgaXMgZWl0aGVyIGluY29ycmVjdCwgb3Iga2VuZG8udGltZXpvbmVzLm1pbi5qcyBpcyBub3QgaW5jbHVkZWQuJyk7Zm9yKHI9YS5sZW5ndGgtMTtyPj0wJiYobz1hW3JdWzNdLCEobyYmZT5vKSk7ci0tKTtpZihpPWFbcisxXSwhaSl0aHJvdyBFcnJvcignVGltZXpvbmUgXCInK24rJ1wiIG5vdCBmb3VuZCBvbiAnK2UrXCIuXCIpO3JldHVybiBpfWZ1bmN0aW9uIHIoZSxyLG8saSl7dHlwZW9mIGUhPV9lJiYoZT1EYXRlLlVUQyhlLmdldEZ1bGxZZWFyKCksZS5nZXRNb250aCgpLGUuZ2V0RGF0ZSgpLGUuZ2V0SG91cnMoKSxlLmdldE1pbnV0ZXMoKSxlLmdldFNlY29uZHMoKSxlLmdldE1pbGxpc2Vjb25kcygpKSk7dmFyIGE9bihlLHIsaSk7cmV0dXJue3pvbmU6YSxydWxlOnQoZSxvLGFbMV0pfX1mdW5jdGlvbiBvKGUsdCl7dmFyIG4sbyxpO3JldHVyblwiRXRjL1VUQ1wiPT10fHxcIkV0Yy9HTVRcIj09dD8wOihuPXIoZSx0aGlzLnpvbmVzLHRoaXMucnVsZXMsdCksbz1uLnpvbmUsaT1uLnJ1bGUseWUucGFyc2VGbG9hdChpP29bMF0taVs2XTpvWzBdKSl9ZnVuY3Rpb24gaShlLHQpe3ZhciBuPXIoZSx0aGlzLnpvbmVzLHRoaXMucnVsZXMsdCksbz1uLnpvbmUsaT1uLnJ1bGUsYT1vWzJdO3JldHVybiBhLmluZGV4T2YoXCIvXCIpPj0wP2Euc3BsaXQoXCIvXCIpW2kmJitpWzZdPzE6MF06YS5pbmRleE9mKFwiJXNcIik+PTA/YS5yZXBsYWNlKFwiJXNcIixpJiZcIi1cIiE9aVs3XT9pWzddOlwiXCIpOmF9ZnVuY3Rpb24gYShlLHQsbil7dmFyIHIsbztyZXR1cm4gdHlwZW9mIHQ9PUhlJiYodD10aGlzLm9mZnNldChlLHQpKSx0eXBlb2Ygbj09SGUmJihuPXRoaXMub2Zmc2V0KGUsbikpLHI9ZS5nZXRUaW1lem9uZU9mZnNldCgpLGU9bmV3IERhdGUoZS5nZXRUaW1lKCkrNmU0Kih0LW4pKSxvPWUuZ2V0VGltZXpvbmVPZmZzZXQoKSxuZXcgRGF0ZShlLmdldFRpbWUoKSs2ZTQqKG8tcikpfWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gdGhpcy5jb252ZXJ0KGUsZS5nZXRUaW1lem9uZU9mZnNldCgpLHQpfWZ1bmN0aW9uIHUoZSx0KXtyZXR1cm4gdGhpcy5jb252ZXJ0KGUsdCxlLmdldFRpbWV6b25lT2Zmc2V0KCkpfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIHRoaXMuYXBwbHkobmV3IERhdGUoZSksXCJFdGMvVVRDXCIpfXZhciBjPXtKYW46MCxGZWI6MSxNYXI6MixBcHI6MyxNYXk6NCxKdW46NSxKdWw6NixBdWc6NyxTZXA6OCxPY3Q6OSxOb3Y6MTAsRGVjOjExfSxkPXtTdW46MCxNb246MSxUdWU6MixXZWQ6MyxUaHU6NCxGcmk6NSxTYXQ6Nn07cmV0dXJue3pvbmVzOnt9LHJ1bGVzOnt9LG9mZnNldDpvLGNvbnZlcnQ6YSxhcHBseTpzLHJlbW92ZTp1LGFiYnI6aSx0b0xvY2FsRGF0ZTpsfX0oKSx5ZS5kYXRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3JldHVybiAwPT09dCYmMjM9PT1lLmdldEhvdXJzKCkmJihlLnNldEhvdXJzKGUuZ2V0SG91cnMoKSsyKSwhMCl9ZnVuY3Rpb24gdCh0LG4scil7dmFyIG89dC5nZXRIb3VycygpO3I9cnx8MSxuPShuLXQuZ2V0RGF5KCkrNypyKSU3LHQuc2V0RGF0ZSh0LmdldERhdGUoKStuKSxlKHQsbyl9ZnVuY3Rpb24gbihlLG4scil7cmV0dXJuIGU9bmV3IERhdGUoZSksdChlLG4sciksZX1mdW5jdGlvbiByKGUpe3JldHVybiBuZXcgRGF0ZShlLmdldEZ1bGxZZWFyKCksZS5nZXRNb250aCgpLDEpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9bmV3IERhdGUoZS5nZXRGdWxsWWVhcigpLGUuZ2V0TW9udGgoKSsxLDApLG49cihlKSxvPU1hdGguYWJzKHQuZ2V0VGltZXpvbmVPZmZzZXQoKS1uLmdldFRpbWV6b25lT2Zmc2V0KCkpO3JldHVybiBvJiZ0LnNldEhvdXJzKG4uZ2V0SG91cnMoKStvLzYwKSx0fWZ1bmN0aW9uIGkodCl7cmV0dXJuIHQ9bmV3IERhdGUodC5nZXRGdWxsWWVhcigpLHQuZ2V0TW9udGgoKSx0LmdldERhdGUoKSwwLDAsMCksZSh0LDApLHR9ZnVuY3Rpb24gYShlKXtyZXR1cm4gRGF0ZS5VVEMoZS5nZXRGdWxsWWVhcigpLGUuZ2V0TW9udGgoKSxlLmdldERhdGUoKSxlLmdldEhvdXJzKCksZS5nZXRNaW51dGVzKCksZS5nZXRTZWNvbmRzKCksZS5nZXRNaWxsaXNlY29uZHMoKSl9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZS5nZXRUaW1lKCktaShlKX1mdW5jdGlvbiB1KGUsdCxuKXt2YXIgcixvPXModCksaT1zKG4pO3JldHVybiFlfHxvPT1pfHwodD49biYmKG4rPXkpLHI9cyhlKSxvPnImJihyKz15KSxpPG8mJihpKz15KSxyPj1vJiZyPD1pKX1mdW5jdGlvbiBsKGUsdCxuKXt2YXIgcixvPXQuZ2V0VGltZSgpLGk9bi5nZXRUaW1lKCk7cmV0dXJuIG8+PWkmJihpKz15KSxyPWUuZ2V0VGltZSgpLHI+PW8mJnI8PWl9ZnVuY3Rpb24gYyh0LG4pe3ZhciByPXQuZ2V0SG91cnMoKTtyZXR1cm4gdD1uZXcgRGF0ZSh0KSxkKHQsbip5KSxlKHQsciksdH1mdW5jdGlvbiBkKGUsdCxuKXt2YXIgcixvPWUuZ2V0VGltZXpvbmVPZmZzZXQoKTtlLnNldFRpbWUoZS5nZXRUaW1lKCkrdCksbnx8KHI9ZS5nZXRUaW1lem9uZU9mZnNldCgpLW8sZS5zZXRUaW1lKGUuZ2V0VGltZSgpK3IqZykpfWZ1bmN0aW9uIGYodCxuKXtyZXR1cm4gdD1uZXcgRGF0ZSh5ZS5kYXRlLmdldERhdGUodCkuZ2V0VGltZSgpK3llLmRhdGUuZ2V0TWlsbGlzZWNvbmRzKG4pKSxlKHQsbi5nZXRIb3VycygpKSx0fWZ1bmN0aW9uIG0oKXtyZXR1cm4gaShuZXcgRGF0ZSl9ZnVuY3Rpb24gcChlKXtyZXR1cm4gaShlKS5nZXRUaW1lKCk9PW0oKS5nZXRUaW1lKCl9ZnVuY3Rpb24gaChlKXt2YXIgdD1uZXcgRGF0ZSgxOTgwLDEsMSwwLDAsMCk7cmV0dXJuIGUmJnQuc2V0SG91cnMoZS5nZXRIb3VycygpLGUuZ2V0TWludXRlcygpLGUuZ2V0U2Vjb25kcygpLGUuZ2V0TWlsbGlzZWNvbmRzKCkpLHR9dmFyIGc9NmU0LHk9ODY0ZTU7cmV0dXJue2FkanVzdERTVDplLGRheU9mV2VlazpuLHNldERheU9mV2Vlazp0LGdldERhdGU6aSxpc0luRGF0ZVJhbmdlOmwsaXNJblRpbWVSYW5nZTp1LGlzVG9kYXk6cCxuZXh0RGF5OmZ1bmN0aW9uKGUpe3JldHVybiBjKGUsMSl9LHByZXZpb3VzRGF5OmZ1bmN0aW9uKGUpe3JldHVybiBjKGUsLTEpfSx0b1V0Y1RpbWU6YSxNU19QRVJfREFZOnksTVNfUEVSX0hPVVI6NjAqZyxNU19QRVJfTUlOVVRFOmcsc2V0VGltZTpkLHNldEhvdXJzOmYsYWRkRGF5czpjLHRvZGF5Om0sdG9JbnZhcmlhbnRUaW1lOmgsZmlyc3REYXlPZk1vbnRoOnIsbGFzdERheU9mTW9udGg6byxnZXRNaWxsaXNlY29uZHM6c319KCkseWUuc3RyaXBXaGl0ZXNwYWNlPWZ1bmN0aW9uKGUpe3ZhciB0LG4scjtpZihkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IpZm9yKHQ9ZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGUsTm9kZUZpbHRlci5TSE9XX1RFWFQsZnVuY3Rpb24odCl7cmV0dXJuIHQucGFyZW50Tm9kZT09ZT9Ob2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ6Tm9kZUZpbHRlci5GSUxURVJfUkVKRUNUfSwhMSk7dC5uZXh0Tm9kZSgpOyl0LnJlZmVyZW5jZU5vZGUmJiF0LnJlZmVyZW5jZU5vZGUudGV4dENvbnRlbnQudHJpbSgpJiZ0LnJlZmVyZW5jZU5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0LnJlZmVyZW5jZU5vZGUpO2Vsc2UgZm9yKG49MDtuPGUuY2hpbGROb2Rlcy5sZW5ndGg7bisrKXI9ZS5jaGlsZE5vZGVzW25dLDMhPXIubm9kZVR5cGV8fC9cXFMvLnRlc3Qoci5ub2RlVmFsdWUpfHwoZS5yZW1vdmVDaGlsZChyKSxuLS0pLDE9PXIubm9kZVR5cGUmJnllLnN0cmlwV2hpdGVzcGFjZShyKX0saGU9dC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHQud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx0Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZXx8dC5vUmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx0Lm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxmdW5jdGlvbihlKXtzZXRUaW1lb3V0KGUsMWUzLzYwKX0seWUuYW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oZSl7aGUuY2FsbCh0LGUpfSxnZT1bXSx5ZS5xdWV1ZUFuaW1hdGlvbj1mdW5jdGlvbihlKXtnZVtnZS5sZW5ndGhdPWUsMT09PWdlLmxlbmd0aCYmeWUucnVuTmV4dEFuaW1hdGlvbigpfSx5ZS5ydW5OZXh0QW5pbWF0aW9uPWZ1bmN0aW9uKCl7eWUuYW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtnZVswXSYmKGdlLnNoaWZ0KCkoKSxnZVswXSYmeWUucnVuTmV4dEFuaW1hdGlvbigpKX0pfSx5ZS5wYXJzZVF1ZXJ5U3RyaW5nUGFyYW1zPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnNwbGl0KFwiP1wiKVsxXXx8XCJcIixuPXt9LHI9dC5zcGxpdCgvJnw9Lyksbz1yLmxlbmd0aCxpPTA7aTxvO2krPTIpXCJcIiE9PXJbaV0mJihuW2RlY29kZVVSSUNvbXBvbmVudChyW2ldKV09ZGVjb2RlVVJJQ29tcG9uZW50KHJbaSsxXSkpO3JldHVybiBufSx5ZS5lbGVtZW50VW5kZXJDdXJzb3I9ZnVuY3Rpb24oZSl7aWYobiE9PWUueC5jbGllbnQpcmV0dXJuIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZS54LmNsaWVudCxlLnkuY2xpZW50KX0seWUud2hlZWxEZWx0YVk9ZnVuY3Rpb24oZSl7dmFyIHQscj1lLm9yaWdpbmFsRXZlbnQsbz1yLndoZWVsRGVsdGFZO3JldHVybiByLndoZWVsRGVsdGE/KG89PT1ufHxvKSYmKHQ9ci53aGVlbERlbHRhKTpyLmRldGFpbCYmci5heGlzPT09ci5WRVJUSUNBTF9BWElTJiYodD0xMCotci5kZXRhaWwpLHR9LHllLnRocm90dGxlPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbyxpPTA7cmV0dXJuIXR8fHQ8PTA/ZToobz1mdW5jdGlvbigpe2Z1bmN0aW9uIG8oKXtlLmFwcGx5KGEsdSksaT0rbmV3IERhdGV9dmFyIGE9dGhpcyxzPStuZXcgRGF0ZS1pLHU9YXJndW1lbnRzO3JldHVybiBpPyhyJiZjbGVhclRpbWVvdXQocikscz50P28oKTpyPXNldFRpbWVvdXQobyx0LXMpLG4pOm8oKX0sby5jYW5jZWw9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQocil9LG8pfSx5ZS5jYXJldD1mdW5jdGlvbih0LHIsbyl7dmFyIGksYSxzLHUsbD1yIT09bjtpZihvPT09biYmKG89ciksdFswXSYmKHQ9dFswXSksIWx8fCF0LmRpc2FibGVkKXt0cnl7dC5zZWxlY3Rpb25TdGFydCE9PW4/bD8odC5mb2N1cygpLHQuc2V0U2VsZWN0aW9uUmFuZ2UocixvKSk6cj1bdC5zZWxlY3Rpb25TdGFydCx0LnNlbGVjdGlvbkVuZF06ZG9jdW1lbnQuc2VsZWN0aW9uJiYoZSh0KS5pcyhcIjp2aXNpYmxlXCIpJiZ0LmZvY3VzKCksaT10LmNyZWF0ZVRleHRSYW5nZSgpLGw/KGkuY29sbGFwc2UoITApLGkubW92ZVN0YXJ0KFwiY2hhcmFjdGVyXCIsciksaS5tb3ZlRW5kKFwiY2hhcmFjdGVyXCIsby1yKSxpLnNlbGVjdCgpKTooYT1pLmR1cGxpY2F0ZSgpLGkubW92ZVRvQm9va21hcmsoZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZ2V0Qm9va21hcmsoKSksYS5zZXRFbmRQb2ludChcIkVuZFRvU3RhcnRcIixpKSxzPWEudGV4dC5sZW5ndGgsdT1zK2kudGV4dC5sZW5ndGgscj1bcyx1XSkpfWNhdGNoKGMpe3I9W119cmV0dXJuIHJ9fSx5ZS5jb21waWxlTW9iaWxlRGlyZWN0aXZlPWZ1bmN0aW9uKGUsbil7dmFyIHI9dC5hbmd1bGFyO3JldHVybiBlLmF0dHIoXCJkYXRhLVwiK3llLm5zK1wicm9sZVwiLGVbMF0udGFnTmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoXCJrZW5kby1tb2JpbGUtXCIsXCJcIikucmVwbGFjZShcIi1cIixcIlwiKSksci5lbGVtZW50KGUpLmluamVjdG9yKCkuaW52b2tlKFtcIiRjb21waWxlXCIsZnVuY3Rpb24odCl7dChlKShuKSwvXlxcJChkaWdlc3R8YXBwbHkpJC8udGVzdChuLiQkcGhhc2UpfHxuLiRkaWdlc3QoKX1dKSx5ZS53aWRnZXRJbnN0YW5jZShlLHllLm1vYmlsZS51aSl9LHllLmFudGlGb3JnZXJ5VG9rZW5zPWZ1bmN0aW9uKCl7dmFyIHQ9e30scj1lKFwibWV0YVtuYW1lPWNzcmYtdG9rZW5dLG1ldGFbbmFtZT1fY3NyZl1cIikuYXR0cihcImNvbnRlbnRcIiksbz1lKFwibWV0YVtuYW1lPWNzcmYtcGFyYW1dLG1ldGFbbmFtZT1fY3NyZl9oZWFkZXJdXCIpLmF0dHIoXCJjb250ZW50XCIpO3JldHVybiBlKFwiaW5wdXRbbmFtZV49J19fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuJ11cIikuZWFjaChmdW5jdGlvbigpe3RbdGhpcy5uYW1lXT10aGlzLnZhbHVlfSksbyE9PW4mJnIhPT1uJiYodFtvXT1yKSx0fSx5ZS5jeWNsZUZvcm09ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt2YXIgdD15ZS53aWRnZXRJbnN0YW5jZShlKTt0JiZ0LmZvY3VzP3QuZm9jdXMoKTplLmZvY3VzKCl9dmFyIG49ZS5maW5kKFwiaW5wdXQsIC5rLXdpZGdldFwiKS5maXJzdCgpLHI9ZS5maW5kKFwiYnV0dG9uLCAuay1idXR0b25cIikubGFzdCgpO3Iub24oXCJrZXlkb3duXCIsZnVuY3Rpb24oZSl7ZS5rZXlDb2RlIT15ZS5rZXlzLlRBQnx8ZS5zaGlmdEtleXx8KGUucHJldmVudERlZmF1bHQoKSx0KG4pKX0pLG4ub24oXCJrZXlkb3duXCIsZnVuY3Rpb24oZSl7ZS5rZXlDb2RlPT15ZS5rZXlzLlRBQiYmZS5zaGlmdEtleSYmKGUucHJldmVudERlZmF1bHQoKSx0KHIpKX0pfSxmdW5jdGlvbigpe2Z1bmN0aW9uIG4odCxuLHIsbyl7dmFyIGksYSxzPWUoXCI8Zm9ybT5cIikuYXR0cih7YWN0aW9uOnIsbWV0aG9kOlwiUE9TVFwiLHRhcmdldDpvfSksdT15ZS5hbnRpRm9yZ2VyeVRva2VucygpO3UuZmlsZU5hbWU9bixpPXQuc3BsaXQoXCI7YmFzZTY0LFwiKSx1LmNvbnRlbnRUeXBlPWlbMF0ucmVwbGFjZShcImRhdGE6XCIsXCJcIiksdS5iYXNlNjQ9aVsxXTtmb3IoYSBpbiB1KXUuaGFzT3duUHJvcGVydHkoYSkmJmUoXCI8aW5wdXQ+XCIpLmF0dHIoe3ZhbHVlOnVbYV0sbmFtZTphLHR5cGU6XCJoaWRkZW5cIn0pLmFwcGVuZFRvKHMpO3MuYXBwZW5kVG8oXCJib2R5XCIpLnN1Ym1pdCgpLnJlbW92ZSgpfWZ1bmN0aW9uIHIoZSx0KXt2YXIgbixyLG8saSxhLHM9ZTtpZihcInN0cmluZ1wiPT10eXBlb2YgZSl7Zm9yKG49ZS5zcGxpdChcIjtiYXNlNjQsXCIpLHI9blswXSxvPWF0b2IoblsxXSksaT1uZXcgVWludDhBcnJheShvLmxlbmd0aCksYT0wO2E8by5sZW5ndGg7YSsrKWlbYV09by5jaGFyQ29kZUF0KGEpO3M9bmV3IEJsb2IoW2kuYnVmZmVyXSx7dHlwZTpyfSl9bmF2aWdhdG9yLm1zU2F2ZUJsb2Iocyx0KX1mdW5jdGlvbiBvKGUsbil7dC5CbG9iJiZlIGluc3RhbmNlb2YgQmxvYiYmKGU9VVJMLmNyZWF0ZU9iamVjdFVSTChlKSksaS5kb3dubG9hZD1uLGkuaHJlZj1lO3ZhciByPWRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiTW91c2VFdmVudHNcIik7ci5pbml0TW91c2VFdmVudChcImNsaWNrXCIsITAsITEsdCwwLDAsMCwwLDAsITEsITEsITEsITEsMCxudWxsKSxpLmRpc3BhdGNoRXZlbnQociksc2V0VGltZW91dChmdW5jdGlvbigpe1VSTC5yZXZva2VPYmplY3RVUkwoZSl9KX12YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKSxhPVwiZG93bmxvYWRcImluIGkmJiF5ZS5zdXBwb3J0LmJyb3dzZXIuZWRnZTt5ZS5zYXZlQXM9ZnVuY3Rpb24oZSl7dmFyIHQ9bjtlLmZvcmNlUHJveHl8fChhP3Q9bzpuYXZpZ2F0b3IubXNTYXZlQmxvYiYmKHQ9cikpLHQoZS5kYXRhVVJJLGUuZmlsZU5hbWUsZS5wcm94eVVSTCxlLnByb3h5VGFyZ2V0KX19KCkseWUucHJveHlNb2RlbFNldHRlcnM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIE9iamVjdC5rZXlzKGV8fHt9KS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2dldDpmdW5jdGlvbigpe3JldHVybiBlW25dfSxzZXQ6ZnVuY3Rpb24odCl7ZVtuXT10LGUuZGlydHk9ITB9fSl9KSx0fX0oalF1ZXJ5LHdpbmRvdyksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsdCxuKXsobnx8dCkoKX0pOzshZnVuY3Rpb24oZSxkZWZpbmUpe2RlZmluZShcImtlbmRvLmRhdGEubWluXCIsW1wia2VuZG8uY29yZS5taW5cIixcImtlbmRvLmRhdGEub2RhdGEubWluXCIsXCJrZW5kby5kYXRhLnhtbC5taW5cIl0sZSl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcihlLHQscixuKXtyZXR1cm4gZnVuY3Rpb24oaSl7dmFyIGEscz17fTtmb3IoYSBpbiBpKXNbYV09aVthXTtzLmZpZWxkPW4/citcIi5cIitpLmZpZWxkOnIsdD09T2UmJmUuX25vdGlmeUNoYW5nZSYmZS5fbm90aWZ5Q2hhbmdlKHMpLGUudHJpZ2dlcih0LHMpfX1mdW5jdGlvbiBuKHQscil7aWYodD09PXIpcmV0dXJuITA7dmFyIGksYT1lLnR5cGUodCkscz1lLnR5cGUocik7aWYoYSE9PXMpcmV0dXJuITE7aWYoXCJkYXRlXCI9PT1hKXJldHVybiB0LmdldFRpbWUoKT09PXIuZ2V0VGltZSgpO2lmKFwib2JqZWN0XCIhPT1hJiZcImFycmF5XCIhPT1hKXJldHVybiExO2ZvcihpIGluIHQpaWYoIW4odFtpXSxyW2ldKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBpKGUsdCl7dmFyIHIsbjtmb3IobiBpbiBlKXtpZihyPWVbbl0saGUocikmJnIuZmllbGQmJnIuZmllbGQ9PT10KXJldHVybiByO2lmKHI9PT10KXJldHVybiByfXJldHVybiBudWxsfWZ1bmN0aW9uIGEoZSl7dGhpcy5kYXRhPWV8fFtdfWZ1bmN0aW9uIHMoZSxyKXtpZihlKXt2YXIgbj10eXBlb2YgZT09PXdlP3tmaWVsZDplLGRpcjpyfTplLGk9Y2Uobik/bjpuIT09dD9bbl06W107cmV0dXJuIGdlKGksZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpcn0pfX1mdW5jdGlvbiBvKGUpe3ZhciB0LHIsbixpLGE9ZS5maWx0ZXJzO2lmKGEpZm9yKHQ9MCxyPWEubGVuZ3RoO3Q8cjt0Kyspbj1hW3RdLGk9bi5vcGVyYXRvcixpJiZ0eXBlb2YgaT09PXdlJiYobi5vcGVyYXRvcj1YW2kudG9Mb3dlckNhc2UoKV18fGkpLG8obil9ZnVuY3Rpb24gdShlKXtpZihlJiYhZmUoZSkpcmV0dXJuIWNlKGUpJiZlLmZpbHRlcnN8fChlPXtsb2dpYzpcImFuZFwiLGZpbHRlcnM6Y2UoZSk/ZTpbZV19KSxvKGUpLGV9ZnVuY3Rpb24gbChlLHQpe3JldHVybiFlLmxvZ2ljJiYhdC5sb2dpYyYmKGUuZmllbGQ9PT10LmZpZWxkJiZlLnZhbHVlPT09dC52YWx1ZSYmZS5vcGVyYXRvcj09PXQub3BlcmF0b3IpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGU9ZXx8e30sZmUoZSk/e2xvZ2ljOlwiYW5kXCIsZmlsdGVyczpbXX06dShlKX1mdW5jdGlvbiBoKGUsdCl7cmV0dXJuIHQubG9naWN8fGUuZmllbGQ+dC5maWVsZD8xOmUuZmllbGQ8dC5maWVsZD8tMTowfWZ1bmN0aW9uIGYoZSx0KXt2YXIgcixuLGksYSxzO2lmKGU9ZChlKSx0PWQodCksZS5sb2dpYyE9PXQubG9naWMpcmV0dXJuITE7aWYoaT0oZS5maWx0ZXJzfHxbXSkuc2xpY2UoKSxhPSh0LmZpbHRlcnN8fFtdKS5zbGljZSgpLGkubGVuZ3RoIT09YS5sZW5ndGgpcmV0dXJuITE7Zm9yKGk9aS5zb3J0KGgpLGE9YS5zb3J0KGgpLHM9MDtzPGkubGVuZ3RoO3MrKylpZihyPWlbc10sbj1hW3NdLHIubG9naWMmJm4ubG9naWMpe2lmKCFmKHIsbikpcmV0dXJuITF9ZWxzZSBpZighbChyLG4pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIGNlKGUpP2U6W2VdfWZ1bmN0aW9uIGcoZSxyKXt2YXIgbj10eXBlb2YgZT09PXdlP3tmaWVsZDplLGRpcjpyfTplLGk9Y2Uobik/bjpuIT09dD9bbl06W107cmV0dXJuIEIoaSxmdW5jdGlvbihlKXtyZXR1cm57ZmllbGQ6ZS5maWVsZCxkaXI6ZS5kaXJ8fFwiYXNjXCIsYWdncmVnYXRlczplLmFnZ3JlZ2F0ZXN9fSl9ZnVuY3Rpb24gcChlLHQpe3JldHVybiBlJiZlLmdldFRpbWUmJnQmJnQuZ2V0VGltZT9lLmdldFRpbWUoKT09PXQuZ2V0VGltZSgpOmU9PT10fWZ1bmN0aW9uIF8oZSx0LHIsbixpLGEpe3ZhciBzLG8sdSxsLGQ7Zm9yKHQ9dHx8W10sbD10Lmxlbmd0aCxzPTA7czxsO3MrKylvPXRbc10sdT1vLmFnZ3JlZ2F0ZSxkPW8uZmllbGQsZVtkXT1lW2RdfHx7fSxhW2RdPWFbZF18fHt9LGFbZF1bdV09YVtkXVt1XXx8e30sZVtkXVt1XT1ZW3UudG9Mb3dlckNhc2UoKV0oZVtkXVt1XSxyLG1lLmFjY2Vzc29yKGQpLG4saSxhW2RdW3VdKX1mdW5jdGlvbiB2KGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlJiYhaXNOYU4oZSl9ZnVuY3Rpb24gbShlKXtyZXR1cm4gZSYmZS5nZXRUaW1lfWZ1bmN0aW9uIHkoZSl7dmFyIHQscj1lLmxlbmd0aCxuPUFycmF5KHIpO2Zvcih0PTA7dDxyO3QrKyluW3RdPWVbdF0udG9KU09OKCk7cmV0dXJuIG59ZnVuY3Rpb24gUyhlLHQscixuLGkpe3ZhciBhLHMsbyx1LGwsZD17fTtmb3IodT0wLGw9ZS5sZW5ndGg7dTxsO3UrKyl7YT1lW3VdO2ZvcihzIGluIHQpbz1pW3NdLG8mJm8hPT1zJiYoZFtvXXx8KGRbb109bWUuc2V0dGVyKG8pKSxkW29dKGEsdFtzXShhKSksZGVsZXRlIGFbc10pfX1mdW5jdGlvbiBiKGUsdCxyLG4saSl7dmFyIGEscyxvLHUsbDtmb3IodT0wLGw9ZS5sZW5ndGg7dTxsO3UrKyl7YT1lW3VdO2ZvcihzIGluIHQpYVtzXT1yLl9wYXJzZShzLHRbc10oYSkpLG89aVtzXSxvJiZvIT09cyYmZGVsZXRlIGFbb119fWZ1bmN0aW9uIHcoZSx0LHIsbixpKXt2YXIgYSxzLG8sdTtmb3Iocz0wLHU9ZS5sZW5ndGg7czx1O3MrKylhPWVbc10sbz1uW2EuZmllbGRdLG8mJm8hPWEuZmllbGQmJihhLmZpZWxkPW8pLGEudmFsdWU9ci5fcGFyc2UoYS5maWVsZCxhLnZhbHVlKSxhLmhhc1N1Ymdyb3Vwcz93KGEuaXRlbXMsdCxyLG4saSk6YihhLml0ZW1zLHQscixuLGkpfWZ1bmN0aW9uIGsoZSx0LHIsbixpLGEpe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gcz1lKHMpLHMmJiFmZShuKSYmKFwiW29iamVjdCBBcnJheV1cIj09PVdlLmNhbGwocyl8fHMgaW5zdGFuY2VvZiBZZXx8KHM9W3NdKSxyKHMsbixuZXcgdCxpLGEpKSxzfHxbXX19ZnVuY3Rpb24geChlLHQscixuKXtmb3IodmFyIGksYSxzLG89MDt0Lmxlbmd0aCYmbiYmKGk9dFtvXSxhPWkuaXRlbXMscz1hLmxlbmd0aCxlJiZlLmZpZWxkPT09aS5maWVsZCYmZS52YWx1ZT09PWkudmFsdWU/KGUuaGFzU3ViZ3JvdXBzJiZlLml0ZW1zLmxlbmd0aD94KGUuaXRlbXNbZS5pdGVtcy5sZW5ndGgtMV0saS5pdGVtcyxyLG4pOihhPWEuc2xpY2UocixyK24pLGUuaXRlbXM9ZS5pdGVtcy5jb25jYXQoYSkpLHQuc3BsaWNlKG8tLSwxKSk6aS5oYXNTdWJncm91cHMmJmEubGVuZ3RoPyh4KGksYSxyLG4pLGkuaXRlbXMubGVuZ3RofHx0LnNwbGljZShvLS0sMSkpOihhPWEuc2xpY2UocixyK24pLGkuaXRlbXM9YSxpLml0ZW1zLmxlbmd0aHx8dC5zcGxpY2Uoby0tLDEpKSwwPT09YS5sZW5ndGg/ci09czoocj0wLG4tPWEubGVuZ3RoKSwhKCsrbz49dC5sZW5ndGgpKTspO288dC5sZW5ndGgmJnQuc3BsaWNlKG8sdC5sZW5ndGgtbyl9ZnVuY3Rpb24gcShlKXt2YXIgdCxyLG4saSxhLHM9W107Zm9yKHQ9MCxyPWUubGVuZ3RoO3Q8cjt0KyspaWYoYT1lLmF0KHQpLGEuaGFzU3ViZ3JvdXBzKXM9cy5jb25jYXQocShhLml0ZW1zKSk7ZWxzZSBmb3Iobj1hLml0ZW1zLGk9MDtpPG4ubGVuZ3RoO2krKylzLnB1c2gobi5hdChpKSk7cmV0dXJuIHN9ZnVuY3Rpb24gRChlLHQpe3ZhciByLG4saTtpZih0KWZvcihyPTAsbj1lLmxlbmd0aDtyPG47cisrKWk9ZS5hdChyKSxpLmhhc1N1Ymdyb3Vwcz9EKGkuaXRlbXMsdCk6aS5pdGVtcz1uZXcgVShpLml0ZW1zLHQpfWZ1bmN0aW9uIEMoZSx0KXtmb3IodmFyIHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspaWYoZVtyXS5oYXNTdWJncm91cHMpe2lmKEMoZVtyXS5pdGVtcyx0KSlyZXR1cm4hMH1lbHNlIGlmKHQoZVtyXS5pdGVtcyxlW3JdKSlyZXR1cm4hMH1mdW5jdGlvbiBPKGUsdCxyLG4pe2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGgmJmVbaV0uZGF0YSE9PXQmJiF6KGVbaV0uZGF0YSxyLG4pO2krKyk7fWZ1bmN0aW9uIHooZSx0LHIpe2Zvcih2YXIgbj0wLGk9ZS5sZW5ndGg7bjxpO24rKyl7aWYoZVtuXSYmZVtuXS5oYXNTdWJncm91cHMpcmV0dXJuIHooZVtuXS5pdGVtcyx0LHIpO2lmKGVbbl09PT10fHxlW25dPT09cilyZXR1cm4gZVtuXT1yLCEwfX1mdW5jdGlvbiBSKGUscixuLGksYSl7dmFyIHMsbyx1LGw7Zm9yKHM9MCxvPWUubGVuZ3RoO3M8bztzKyspaWYodT1lW3NdLHUmJiEodSBpbnN0YW5jZW9mIGkpKWlmKHUuaGFzU3ViZ3JvdXBzPT09dHx8YSl7Zm9yKGw9MDtsPHIubGVuZ3RoO2wrKylpZihyW2xdPT09dSl7ZVtzXT1yLmF0KGwpLE8obixyLHUsZVtzXSk7YnJlYWt9fWVsc2UgUih1Lml0ZW1zLHIsbixpLGEpfWZ1bmN0aW9uIFAoZSx0KXt2YXIgcixuLGk7Zm9yKHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspaWYoaT1lLmF0KHIpLGkudWlkPT10LnVpZClyZXR1cm4gZS5zcGxpY2UociwxKSxpfWZ1bmN0aW9uIFQoZSx0KXtyZXR1cm4gdD9BKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGUudWlkJiZlLnVpZD09dC51aWR8fGVbdC5pZEZpZWxkXT09PXQuaWQmJnQuaWQhPT10Ll9kZWZhdWx0SWR9KTotMX1mdW5jdGlvbiBGKGUsdCl7cmV0dXJuIHQ/QShlLGZ1bmN0aW9uKGUpe3JldHVybiBlLnVpZD09dC51aWR9KTotMX1mdW5jdGlvbiBBKGUsdCl7dmFyIHIsbjtmb3Iocj0wLG49ZS5sZW5ndGg7cjxuO3IrKylpZih0KGVbcl0pKXJldHVybiByO3JldHVybi0xfWZ1bmN0aW9uIEkoZSx0KXt2YXIgcixuO3JldHVybiBlJiYhZmUoZSk/KHI9ZVt0XSxuPWhlKHIpP3IuZnJvbXx8ci5maWVsZHx8dDplW3RdfHx0LHllKG4pP3Q6bik6dH1mdW5jdGlvbiBOKGUsdCl7dmFyIHIsbixpLGE9e307Zm9yKGkgaW4gZSlcImZpbHRlcnNcIiE9PWkmJihhW2ldPWVbaV0pO2lmKGUuZmlsdGVycylmb3IoYS5maWx0ZXJzPVtdLHI9MCxuPWUuZmlsdGVycy5sZW5ndGg7cjxuO3IrKylhLmZpbHRlcnNbcl09TihlLmZpbHRlcnNbcl0sdCk7ZWxzZSBhLmZpZWxkPUkodC5maWVsZHMsYS5maWVsZCk7cmV0dXJuIGF9ZnVuY3Rpb24gTShlLHQpe3ZhciByLG4saSxhLHMsbz1bXTtmb3Iocj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7aT17fSxhPWVbcl07Zm9yKHMgaW4gYSlpW3NdPWFbc107aS5maWVsZD1JKHQuZmllbGRzLGkuZmllbGQpLGkuYWdncmVnYXRlcyYmY2UoaS5hZ2dyZWdhdGVzKSYmKGkuYWdncmVnYXRlcz1NKGkuYWdncmVnYXRlcyx0KSksby5wdXNoKGkpfXJldHVybiBvfWZ1bmN0aW9uIGoodCxyKXt2YXIgbixpLGEscyxvLHUsbCxkLGgsZjtmb3IodD1lKHQpWzBdLG49dC5vcHRpb25zLGk9clswXSxhPXJbMV0scz1bXSxvPTAsdT1uLmxlbmd0aDtvPHU7bysrKWg9e30sZD1uW29dLGw9ZC5wYXJlbnROb2RlLGw9PT10JiYobD1udWxsKSxkLmRpc2FibGVkfHxsJiZsLmRpc2FibGVkfHwobCYmKGgub3B0Z3JvdXA9bC5sYWJlbCksaFtpLmZpZWxkXT1kLnRleHQsZj1kLmF0dHJpYnV0ZXMudmFsdWUsZj1mJiZmLnNwZWNpZmllZD9kLnZhbHVlOmQudGV4dCxoW2EuZmllbGRdPWYscy5wdXNoKGgpKTtyZXR1cm4gc31mdW5jdGlvbiBMKHQscil7dmFyIG4saSxhLHMsbyx1LGwsZD1lKHQpWzBdLnRCb2RpZXNbMF0saD1kP2Qucm93czpbXSxmPXIubGVuZ3RoLGM9W107Zm9yKG49MCxpPWgubGVuZ3RoO248aTtuKyspe2ZvcihvPXt9LGw9ITAscz1oW25dLmNlbGxzLGE9MDthPGY7YSsrKXU9c1thXSxcInRoXCIhPT11Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJihsPSExLG9bclthXS5maWVsZF09dS5pbm5lckhUTUwpO2x8fGMucHVzaChvKX1yZXR1cm4gY31mdW5jdGlvbiBHKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEscj1uZS5mbltlXS5hcHBseSh0aGlzLEplLmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMuX2RhdGEhPXQmJnRoaXMuX2F0dGFjaEJ1YmJsZUhhbmRsZXJzKCkscn19ZnVuY3Rpb24gRSh0LHIpe2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gZS5maWx0ZXIodCkuYWRkKGUuZmluZCh0KSl9dmFyIGksYSxzLG8sdSxsLGQsaCxmPWUodCkuY2hpbGRyZW4oKSxjPVtdLGc9clswXS5maWVsZCxwPXJbMV0mJnJbMV0uZmllbGQsXz1yWzJdJiZyWzJdLmZpZWxkLHY9clszXSYmclszXS5maWVsZDtmb3IoaT0wLGE9Zi5sZW5ndGg7aTxhO2krKylzPXtfbG9hZGVkOiEwfSxvPWYuZXEoaSksbD1vWzBdLmZpcnN0Q2hpbGQsaD1vLmNoaWxkcmVuKCksdD1oLmZpbHRlcihcInVsXCIpLGg9aC5maWx0ZXIoXCI6bm90KHVsKVwiKSx1PW8uYXR0cihcImRhdGEtaWRcIiksdSYmKHMuaWQ9dSksbCYmKHNbZ109Mz09bC5ub2RlVHlwZT9sLm5vZGVWYWx1ZTpoLnRleHQoKSkscCYmKHNbcF09bihoLFwiYVwiKS5hdHRyKFwiaHJlZlwiKSksdiYmKHNbdl09bihoLFwiaW1nXCIpLmF0dHIoXCJzcmNcIikpLF8mJihkPW4oaCxcIi5rLXNwcml0ZVwiKS5wcm9wKFwiY2xhc3NOYW1lXCIpLHNbX109ZCYmZS50cmltKGQucmVwbGFjZShcImstc3ByaXRlXCIsXCJcIikpKSx0Lmxlbmd0aCYmKHMuaXRlbXM9RSh0LmVxKDApLHIpKSxcInRydWVcIj09by5hdHRyKFwiZGF0YS1oYXNDaGlsZHJlblwiKSYmKHMuaGFzQ2hpbGRyZW49ITApLGMucHVzaChzKTtyZXR1cm4gY312YXIgQixVLEgsSixWLFcsUSxLLCQsWCxZLFosZWUsdGUscmUsbmUsaWUsYWUsc2Usb2UsdWUsbGU9ZS5leHRlbmQsZGU9ZS5wcm94eSxoZT1lLmlzUGxhaW5PYmplY3QsZmU9ZS5pc0VtcHR5T2JqZWN0LGNlPWUuaXNBcnJheSxnZT1lLmdyZXAscGU9ZS5hamF4LF9lPWUuZWFjaCx2ZT1lLm5vb3AsbWU9d2luZG93LmtlbmRvLHllPW1lLmlzRnVuY3Rpb24sU2U9bWUuT2JzZXJ2YWJsZSxiZT1tZS5DbGFzcyx3ZT1cInN0cmluZ1wiLGtlPVwiZnVuY3Rpb25cIix4ZT1cImNyZWF0ZVwiLHFlPVwicmVhZFwiLERlPVwidXBkYXRlXCIsQ2U9XCJkZXN0cm95XCIsT2U9XCJjaGFuZ2VcIix6ZT1cInN5bmNcIixSZT1cImdldFwiLFBlPVwiZXJyb3JcIixUZT1cInJlcXVlc3RTdGFydFwiLEZlPVwicHJvZ3Jlc3NcIixBZT1cInJlcXVlc3RFbmRcIixJZT1beGUscWUsRGUsQ2VdLE5lPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxNZT1tZS5nZXR0ZXIsamU9bWUuc3RyaW5naWZ5LExlPU1hdGgsR2U9W10ucHVzaCxFZT1bXS5qb2luLEJlPVtdLnBvcCxVZT1bXS5zcGxpY2UsSGU9W10uc2hpZnQsSmU9W10uc2xpY2UsVmU9W10udW5zaGlmdCxXZT17fS50b1N0cmluZyxRZT1tZS5zdXBwb3J0LnN0YWJsZVNvcnQsS2U9L15cXC9EYXRlXFwoKC4qPylcXClcXC8kLywkZT0vKFxccit8XFxuKykvZyxYZT0vKD89WydcXFxcXSkvZyxZZT1TZS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzO3IudHlwZT10fHxILFNlLmZuLmluaXQuY2FsbChyKSxyLmxlbmd0aD1lLmxlbmd0aCxyLndyYXBBbGwoZSxyKX0sYXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXNbZV19LHRvSlNPTjpmdW5jdGlvbigpe3ZhciBlLHQscj10aGlzLmxlbmd0aCxuPUFycmF5KHIpO2ZvcihlPTA7ZTxyO2UrKyl0PXRoaXNbZV0sdCBpbnN0YW5jZW9mIEgmJih0PXQudG9KU09OKCkpLG5bZV09dDtyZXR1cm4gbn0scGFyZW50OnZlLHdyYXBBbGw6ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGk9dGhpcyxhPWZ1bmN0aW9uKCl7cmV0dXJuIGl9O2Zvcih0PXR8fFtdLHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspdFtyXT1pLndyYXAoZVtyXSxhKTtyZXR1cm4gdH0sd3JhcDpmdW5jdGlvbihlLHQpe3ZhciByLG49dGhpcztyZXR1cm4gbnVsbCE9PWUmJlwiW29iamVjdCBPYmplY3RdXCI9PT1XZS5jYWxsKGUpJiYocj1lIGluc3RhbmNlb2Ygbi50eXBlfHxlIGluc3RhbmNlb2YgVyxyfHwoZT1lIGluc3RhbmNlb2YgSD9lLnRvSlNPTigpOmUsZT1uZXcgbi50eXBlKGUpKSxlLnBhcmVudD10LGUuYmluZChPZSxmdW5jdGlvbihlKXtuLnRyaWdnZXIoT2Use2ZpZWxkOmUuZmllbGQsbm9kZTplLm5vZGUsaW5kZXg6ZS5pbmRleCxpdGVtczplLml0ZW1zfHxbdGhpc10sYWN0aW9uOmUubm9kZT9lLmFjdGlvbnx8XCJpdGVtbG9hZGVkXCI6XCJpdGVtY2hhbmdlXCJ9KX0pKSxlfSxwdXNoOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLmxlbmd0aCxyPXRoaXMud3JhcEFsbChhcmd1bWVudHMpO3JldHVybiBlPUdlLmFwcGx5KHRoaXMsciksdGhpcy50cmlnZ2VyKE9lLHthY3Rpb246XCJhZGRcIixpbmRleDp0LGl0ZW1zOnJ9KSxlfSxzbGljZTpKZSxzb3J0OltdLnNvcnQsam9pbjpFZSxwb3A6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aCx0PUJlLmFwcGx5KHRoaXMpO3JldHVybiBlJiZ0aGlzLnRyaWdnZXIoT2Use2FjdGlvbjpcInJlbW92ZVwiLGluZGV4OmUtMSxpdGVtczpbdF19KSx0fSxzcGxpY2U6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGksYSxzPXRoaXMud3JhcEFsbChKZS5jYWxsKGFyZ3VtZW50cywyKSk7aWYobj1VZS5hcHBseSh0aGlzLFtlLHRdLmNvbmNhdChzKSksbi5sZW5ndGgpZm9yKHRoaXMudHJpZ2dlcihPZSx7YWN0aW9uOlwicmVtb3ZlXCIsaW5kZXg6ZSxpdGVtczpufSksaT0wLGE9bi5sZW5ndGg7aTxhO2krKyluW2ldJiZuW2ldLmNoaWxkcmVuJiZuW2ldLnVuYmluZChPZSk7cmV0dXJuIHImJnRoaXMudHJpZ2dlcihPZSx7YWN0aW9uOlwiYWRkXCIsaW5kZXg6ZSxpdGVtczpzfSksbn0sc2hpZnQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aCx0PUhlLmFwcGx5KHRoaXMpO3JldHVybiBlJiZ0aGlzLnRyaWdnZXIoT2Use2FjdGlvbjpcInJlbW92ZVwiLGluZGV4OjAsaXRlbXM6W3RdfSksdH0sdW5zaGlmdDpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy53cmFwQWxsKGFyZ3VtZW50cyk7cmV0dXJuIGU9VmUuYXBwbHkodGhpcyx0KSx0aGlzLnRyaWdnZXIoT2Use2FjdGlvbjpcImFkZFwiLGluZGV4OjAsaXRlbXM6dH0pLGV9LGluZGV4T2Y6ZnVuY3Rpb24oZSl7dmFyIHQscixuPXRoaXM7Zm9yKHQ9MCxyPW4ubGVuZ3RoO3Q8cjt0KyspaWYoblt0XT09PWUpcmV0dXJuIHQ7cmV0dXJuLTF9LGZvckVhY2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAscj10aGlzLmxlbmd0aDt0PHI7dCsrKWUodGhpc1t0XSx0LHRoaXMpfSxtYXA6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAscj1bXSxuPXRoaXMubGVuZ3RoO3Q8bjt0Kyspclt0XT1lKHRoaXNbdF0sdCx0aGlzKTtyZXR1cm4gcn0scmVkdWNlOmZ1bmN0aW9uKGUpe3ZhciB0LHI9MCxuPXRoaXMubGVuZ3RoO2ZvcigyPT1hcmd1bWVudHMubGVuZ3RoP3Q9YXJndW1lbnRzWzFdOnI8biYmKHQ9dGhpc1tyKytdKTtyPG47cisrKXQ9ZSh0LHRoaXNbcl0scix0aGlzKTtyZXR1cm4gdH0scmVkdWNlUmlnaHQ6ZnVuY3Rpb24oZSl7dmFyIHQscj10aGlzLmxlbmd0aC0xO2ZvcigyPT1hcmd1bWVudHMubGVuZ3RoP3Q9YXJndW1lbnRzWzFdOnI+MCYmKHQ9dGhpc1tyLS1dKTtyPj0wO3ItLSl0PWUodCx0aGlzW3JdLHIsdGhpcyk7cmV0dXJuIHR9LGZpbHRlcjpmdW5jdGlvbihlKXtmb3IodmFyIHQscj0wLG49W10saT10aGlzLmxlbmd0aDtyPGk7cisrKXQ9dGhpc1tyXSxlKHQscix0aGlzKSYmKG5bbi5sZW5ndGhdPXQpO3JldHVybiBufSxmaW5kOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTAsbj10aGlzLmxlbmd0aDtyPG47cisrKWlmKHQ9dGhpc1tyXSxlKHQscix0aGlzKSlyZXR1cm4gdH0sZXZlcnk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MCxuPXRoaXMubGVuZ3RoO3I8bjtyKyspaWYodD10aGlzW3JdLCFlKHQscix0aGlzKSlyZXR1cm4hMTtyZXR1cm4hMH0sc29tZTpmdW5jdGlvbihlKXtmb3IodmFyIHQscj0wLG49dGhpcy5sZW5ndGg7cjxuO3IrKylpZih0PXRoaXNbcl0sZSh0LHIsdGhpcykpcmV0dXJuITA7cmV0dXJuITF9LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmluZGV4T2YoZSk7dCE9PS0xJiZ0aGlzLnNwbGljZSh0LDEpfSxlbXB0eTpmdW5jdGlvbigpe3RoaXMuc3BsaWNlKDAsdGhpcy5sZW5ndGgpfX0pO1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmIVllLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdJiYoWWUucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09W11bU3ltYm9sLml0ZXJhdG9yXSksVT1ZZS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXtTZS5mbi5pbml0LmNhbGwodGhpcyksdGhpcy50eXBlPXR8fEg7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdGhpc1tyXT1lW3JdO3RoaXMubGVuZ3RoPXIsdGhpcy5fcGFyZW50PWRlKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHRoaXMpfSxhdDpmdW5jdGlvbihlKXt2YXIgdD10aGlzW2VdO3JldHVybiB0IGluc3RhbmNlb2YgdGhpcy50eXBlP3QucGFyZW50PXRoaXMuX3BhcmVudDp0PXRoaXNbZV09dGhpcy53cmFwKHQsdGhpcy5fcGFyZW50KSx0fX0pLEg9U2UuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUpe3ZhciB0LHIsbj10aGlzLGk9ZnVuY3Rpb24oKXtyZXR1cm4gbn07U2UuZm4uaW5pdC5jYWxsKHRoaXMpLHRoaXMuX2hhbmRsZXJzPXt9O2ZvcihyIGluIGUpdD1lW3JdLFwib2JqZWN0XCI9PXR5cGVvZiB0JiZ0JiYhdC5nZXRUaW1lJiZcIl9cIiE9ci5jaGFyQXQoMCkmJih0PW4ud3JhcCh0LHIsaSkpLG5bcl09dDtuLnVpZD1tZS5ndWlkKCl9LHNob3VsZFNlcmlhbGl6ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eShlKSYmXCJfaGFuZGxlcnNcIiE9PWUmJlwiX2V2ZW50c1wiIT09ZSYmdHlwZW9mIHRoaXNbZV0hPT1rZSYmXCJ1aWRcIiE9PWV9LGZvckVhY2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHRoaXMpdGhpcy5zaG91bGRTZXJpYWxpemUodCkmJmUodGhpc1t0XSx0KX0sdG9KU09OOmZ1bmN0aW9uKCl7dmFyIGUsdCxyPXt9O2Zvcih0IGluIHRoaXMpdGhpcy5zaG91bGRTZXJpYWxpemUodCkmJihlPXRoaXNbdF0sKGUgaW5zdGFuY2VvZiBIfHxlIGluc3RhbmNlb2YgWWUpJiYoZT1lLnRvSlNPTigpKSxyW3RdPWUpO3JldHVybiByfSxnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQscj10aGlzO3JldHVybiByLnRyaWdnZXIoUmUse2ZpZWxkOmV9KSx0PVwidGhpc1wiPT09ZT9yOm1lLmdldHRlcihlLCEwKShyKX0sX3NldDpmdW5jdGlvbihlLHQpe3ZhciByLG4saSxhPXRoaXMscz1lLmluZGV4T2YoXCIuXCIpPj0wO2lmKHMpZm9yKHI9ZS5zcGxpdChcIi5cIiksbj1cIlwiO3IubGVuZ3RoPjE7KXtpZihuKz1yLnNoaWZ0KCksaT1tZS5nZXR0ZXIobiwhMCkoYSksaSBpbnN0YW5jZW9mIEgpcmV0dXJuIGkuc2V0KHIuam9pbihcIi5cIiksdCkscztuKz1cIi5cIn1yZXR1cm4gbWUuc2V0dGVyKGUpKGEsdCksc30sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcyxuPSExLGk9ZS5pbmRleE9mKFwiLlwiKT49MCxhPW1lLmdldHRlcihlLCEwKShyKTtyZXR1cm4gYSE9PXQmJihhIGluc3RhbmNlb2YgU2UmJnRoaXMuX2hhbmRsZXJzW2VdJiYodGhpcy5faGFuZGxlcnNbZV0uZ2V0JiZhLnVuYmluZChSZSx0aGlzLl9oYW5kbGVyc1tlXS5nZXQpLGEudW5iaW5kKE9lLHRoaXMuX2hhbmRsZXJzW2VdLmNoYW5nZSkpLG49ci50cmlnZ2VyKFwic2V0XCIse2ZpZWxkOmUsdmFsdWU6dH0pLG58fChpfHwodD1yLndyYXAodCxlLGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSksKCFyLl9zZXQoZSx0KXx8ZS5pbmRleE9mKFwiKFwiKT49MHx8ZS5pbmRleE9mKFwiW1wiKT49MCkmJnIudHJpZ2dlcihPZSx7ZmllbGQ6ZX0pKSksbn0scGFyZW50OnZlLHdyYXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLGEscyxvLHU9dGhpcyxsPVdlLmNhbGwoZSk7cmV0dXJuIG51bGw9PWV8fFwiW29iamVjdCBPYmplY3RdXCIhPT1sJiZcIltvYmplY3QgQXJyYXldXCIhPT1sfHwocz1lIGluc3RhbmNlb2YgWWUsbz1lIGluc3RhbmNlb2YgbmUsXCJbb2JqZWN0IE9iamVjdF1cIiE9PWx8fG98fHM/KFwiW29iamVjdCBBcnJheV1cIj09PWx8fHN8fG8pJiYoc3x8b3x8KGU9bmV3IFllKGUpKSxhPXIodSxPZSx0LCExKSxlLmJpbmQoT2UsYSksdS5faGFuZGxlcnNbdF09e2NoYW5nZTphfSk6KGUgaW5zdGFuY2VvZiBIfHwoZT1uZXcgSChlKSksaT1yKHUsUmUsdCwhMCksZS5iaW5kKFJlLGkpLGE9cih1LE9lLHQsITApLGUuYmluZChPZSxhKSx1Ll9oYW5kbGVyc1t0XT17Z2V0OmksY2hhbmdlOmF9KSxlLnBhcmVudD1uKSxlfX0pLEo9e251bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4gbWUucGFyc2VGbG9hdChlKX0sZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gbWUucGFyc2VEYXRlKGUpfSxcImJvb2xlYW5cIjpmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PT13ZT9cInRydWVcIj09PWUudG9Mb3dlckNhc2UoKTpudWxsIT1lPyEhZTplfSxzdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWU/ZStcIlwiOmV9LFwiZGVmYXVsdFwiOmZ1bmN0aW9uKGUpe3JldHVybiBlfX0sVj17c3RyaW5nOlwiXCIsbnVtYmVyOjAsZGF0ZTpuZXcgRGF0ZSxcImJvb2xlYW5cIjohMSxcImRlZmF1bHRcIjpcIlwifSxXPUguZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHIpe3ZhciBuLGksYT10aGlzO2lmKCghcnx8ZS5pc0VtcHR5T2JqZWN0KHIpKSYmKHI9ZS5leHRlbmQoe30sYS5kZWZhdWx0cyxyKSxhLl9pbml0aWFsaXplcnMpKWZvcihuPTA7bjxhLl9pbml0aWFsaXplcnMubGVuZ3RoO24rKylpPWEuX2luaXRpYWxpemVyc1tuXSxyW2ldPWEuZGVmYXVsdHNbaV0oKTtILmZuLmluaXQuY2FsbChhLHIpLGEuZGlydHk9ITEsYS5pZEZpZWxkJiYoYS5pZD1hLmdldChhLmlkRmllbGQpLGEuaWQ9PT10JiYoYS5pZD1hLl9kZWZhdWx0SWQpKX0sc2hvdWxkU2VyaWFsaXplOmZ1bmN0aW9uKGUpe3JldHVybiBILmZuLnNob3VsZFNlcmlhbGl6ZS5jYWxsKHRoaXMsZSkmJlwidWlkXCIhPT1lJiYhKFwiaWRcIiE9PXRoaXMuaWRGaWVsZCYmXCJpZFwiPT09ZSkmJlwiZGlydHlcIiE9PWUmJlwiX2FjY2Vzc29yc1wiIT09ZX0sX3BhcnNlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbj10aGlzLGE9ZSxzPW4uZmllbGRzfHx7fTtyZXR1cm4gZT1zW2VdLGV8fChlPWkocyxhKSksZSYmKHI9ZS5wYXJzZSwhciYmZS50eXBlJiYocj1KW2UudHlwZS50b0xvd2VyQ2FzZSgpXSkpLHI/cih0KTp0fSxfbm90aWZ5Q2hhbmdlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuYWN0aW9uO1wiYWRkXCIhPXQmJlwicmVtb3ZlXCIhPXR8fCh0aGlzLmRpcnR5PSEwKX0sZWRpdGFibGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9KHRoaXMuZmllbGRzfHx7fSlbZV0sIWV8fGUuZWRpdGFibGUhPT0hMX0sc2V0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10aGlzLGE9aS5kaXJ0eTtpLmVkaXRhYmxlKGUpJiYodD1pLl9wYXJzZShlLHQpLG4odCxpLmdldChlKSl8fChpLmRpcnR5PSEwLEguZm4uc2V0LmNhbGwoaSxlLHQscikmJiFhJiYoaS5kaXJ0eT1hKSkpfSxhY2NlcHQ6ZnVuY3Rpb24oZSl7dmFyIHQscixuPXRoaXMsaT1mdW5jdGlvbigpe3JldHVybiBufTtmb3IodCBpbiBlKXI9ZVt0XSxcIl9cIiE9dC5jaGFyQXQoMCkmJihyPW4ud3JhcChlW3RdLHQsaSkpLG4uX3NldCh0LHIpO24uaWRGaWVsZCYmKG4uaWQ9bi5nZXQobi5pZEZpZWxkKSksbi5kaXJ0eT0hMX0saXNOZXc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZD09PXRoaXMuX2RlZmF1bHRJZH19KSxXLmRlZmluZT1mdW5jdGlvbihlLHIpe3I9PT10JiYocj1lLGU9Vyk7dmFyIG4saSxhLHMsbyx1LGwsZCxoPWxlKHtkZWZhdWx0czp7fX0sciksZj17fSxjPWguaWQsZz1bXTtpZihjJiYoaC5pZEZpZWxkPWMpLGguaWQmJmRlbGV0ZSBoLmlkLGMmJihoLmRlZmF1bHRzW2NdPWguX2RlZmF1bHRJZD1cIlwiKSxcIltvYmplY3QgQXJyYXldXCI9PT1XZS5jYWxsKGguZmllbGRzKSl7Zm9yKHU9MCxsPWguZmllbGRzLmxlbmd0aDt1PGw7dSsrKWE9aC5maWVsZHNbdV0sdHlwZW9mIGE9PT13ZT9mW2FdPXt9OmEuZmllbGQmJihmW2EuZmllbGRdPWEpO2guZmllbGRzPWZ9Zm9yKGkgaW4gaC5maWVsZHMpYT1oLmZpZWxkc1tpXSxzPWEudHlwZXx8XCJkZWZhdWx0XCIsbz1udWxsLGQ9aSxpPXR5cGVvZiBhLmZpZWxkPT09d2U/YS5maWVsZDppLGEubnVsbGFibGV8fChvPWguZGVmYXVsdHNbZCE9PWk/ZDppXT1hLmRlZmF1bHRWYWx1ZSE9PXQ/YS5kZWZhdWx0VmFsdWU6VltzLnRvTG93ZXJDYXNlKCldLFwiZnVuY3Rpb25cIj09dHlwZW9mIG8mJmcucHVzaChpKSksci5pZD09PWkmJihoLl9kZWZhdWx0SWQ9byksaC5kZWZhdWx0c1tkIT09aT9kOmldPW8sYS5wYXJzZT1hLnBhcnNlfHxKW3NdO3JldHVybiBnLmxlbmd0aD4wJiYoaC5faW5pdGlhbGl6ZXJzPWcpLG49ZS5leHRlbmQoaCksbi5kZWZpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuIFcuZGVmaW5lKG4sZSl9LGguZmllbGRzJiYobi5maWVsZHM9aC5maWVsZHMsbi5pZEZpZWxkPWguaWRGaWVsZCksbn0sUT17c2VsZWN0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuIHllKGUpP2U6TWUoZSl9LGNvbXBhcmU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zZWxlY3RvcihlKTtyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gZT10KGUpLHI9dChyKSxudWxsPT1lJiZudWxsPT1yPzA6bnVsbD09ZT8tMTpudWxsPT1yPzE6ZS5sb2NhbGVDb21wYXJlP2UubG9jYWxlQ29tcGFyZShyKTplPnI/MTplPHI/LTE6MH19LGNyZWF0ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmNvbXBhcmV8fHRoaXMuY29tcGFyZShlLmZpZWxkKTtyZXR1cm5cImRlc2NcIj09ZS5kaXI/ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdChyLGUsITApfTp0fSxjb21iaW5lOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3ZhciBuLGksYT1lWzBdKHQscik7Zm9yKG49MSxpPWUubGVuZ3RoO248aTtuKyspYT1hfHxlW25dKHQscik7cmV0dXJuIGF9fX0sSz1sZSh7fSxRLHthc2M6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zZWxlY3RvcihlKTtyZXR1cm4gZnVuY3Rpb24oZSxyKXt2YXIgbj10KGUpLGk9dChyKTtyZXR1cm4gbiYmbi5nZXRUaW1lJiZpJiZpLmdldFRpbWUmJihuPW4uZ2V0VGltZSgpLGk9aS5nZXRUaW1lKCkpLG49PT1pP2UuX19wb3NpdGlvbi1yLl9fcG9zaXRpb246bnVsbD09bj8tMTpudWxsPT1pPzE6bi5sb2NhbGVDb21wYXJlP24ubG9jYWxlQ29tcGFyZShpKTpuPmk/MTotMX19LGRlc2M6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zZWxlY3RvcihlKTtyZXR1cm4gZnVuY3Rpb24oZSxyKXt2YXIgbj10KGUpLGk9dChyKTtyZXR1cm4gbiYmbi5nZXRUaW1lJiZpJiZpLmdldFRpbWUmJihuPW4uZ2V0VGltZSgpLGk9aS5nZXRUaW1lKCkpLG49PT1pP2UuX19wb3NpdGlvbi1yLl9fcG9zaXRpb246bnVsbD09bj8xOm51bGw9PWk/LTE6aS5sb2NhbGVDb21wYXJlP2kubG9jYWxlQ29tcGFyZShuKTpuPGk/MTotMX19LGNyZWF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpc1tlLmRpcl0oZS5maWVsZCl9fSksQj1mdW5jdGlvbihlLHQpe3ZhciByLG49ZS5sZW5ndGgsaT1BcnJheShuKTtmb3Iocj0wO3I8bjtyKyspaVtyXT10KGVbcl0scixlKTtyZXR1cm4gaX0sJD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGUucmVwbGFjZShYZSxcIlxcXFxcIikucmVwbGFjZSgkZSxcIlwiKX1mdW5jdGlvbiB0KHQscixuLGkpe3ZhciBhO3JldHVybiBudWxsIT1uJiYodHlwZW9mIG49PT13ZSYmKG49ZShuKSxhPUtlLmV4ZWMobiksYT9uPW5ldyBEYXRlKCgrYVsxXSkpOmk/KG49XCInXCIrbi50b0xvd2VyQ2FzZSgpK1wiJ1wiLHI9XCIoKFwiK3IrXCIgfHwgJycpKycnKS50b0xvd2VyQ2FzZSgpXCIpOm49XCInXCIrbitcIidcIiksbi5nZXRUaW1lJiYocj1cIihcIityK1wiJiZcIityK1wiLmdldFRpbWU/XCIrcitcIi5nZXRUaW1lKCk6XCIrcitcIilcIixuPW4uZ2V0VGltZSgpKSkscitcIiBcIit0K1wiIFwiK259cmV0dXJue3F1b3RlOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0LmdldFRpbWU/XCJuZXcgRGF0ZShcIit0LmdldFRpbWUoKStcIilcIjpcInN0cmluZ1wiPT10eXBlb2YgdD9cIidcIitlKHQpK1wiJ1wiOlwiXCIrdH0sZXE6ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0KFwiPT1cIixlLHIsbil9LG5lcTpmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQoXCIhPVwiLGUscixuKX0sZ3Q6ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0KFwiPlwiLGUscixuKX0sZ3RlOmZ1bmN0aW9uKGUscixuKXtyZXR1cm4gdChcIj49XCIsZSxyLG4pfSxsdDpmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQoXCI8XCIsZSxyLG4pfSxsdGU6ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0KFwiPD1cIixlLHIsbil9LHN0YXJ0c3dpdGg6ZnVuY3Rpb24odCxyLG4pe3JldHVybiBuJiYodD1cIihcIit0K1wiIHx8ICcnKS50b0xvd2VyQ2FzZSgpXCIsciYmKHI9ci50b0xvd2VyQ2FzZSgpKSksciYmKHI9ZShyKSksdCtcIi5sYXN0SW5kZXhPZignXCIrcitcIicsIDApID09IDBcIn0sZG9lc25vdHN0YXJ0d2l0aDpmdW5jdGlvbih0LHIsbil7cmV0dXJuIG4mJih0PVwiKFwiK3QrXCIgfHwgJycpLnRvTG93ZXJDYXNlKClcIixyJiYocj1yLnRvTG93ZXJDYXNlKCkpKSxyJiYocj1lKHIpKSx0K1wiLmxhc3RJbmRleE9mKCdcIityK1wiJywgMCkgPT0gLTFcIn0sZW5kc3dpdGg6ZnVuY3Rpb24odCxyLG4pe3JldHVybiBuJiYodD1cIihcIit0K1wiIHx8ICcnKS50b0xvd2VyQ2FzZSgpXCIsciYmKHI9ci50b0xvd2VyQ2FzZSgpKSksciYmKHI9ZShyKSksdCtcIi5pbmRleE9mKCdcIityK1wiJywgXCIrdCtcIi5sZW5ndGggLSBcIisocnx8XCJcIikubGVuZ3RoK1wiKSA+PSAwXCJ9LGRvZXNub3RlbmR3aXRoOmZ1bmN0aW9uKHQscixuKXtyZXR1cm4gbiYmKHQ9XCIoXCIrdCtcIiB8fCAnJykudG9Mb3dlckNhc2UoKVwiLHImJihyPXIudG9Mb3dlckNhc2UoKSkpLHImJihyPWUocikpLHQrXCIuaW5kZXhPZignXCIrcitcIicsIFwiK3QrXCIubGVuZ3RoIC0gXCIrKHJ8fFwiXCIpLmxlbmd0aCtcIikgPCAwXCJ9LGNvbnRhaW5zOmZ1bmN0aW9uKHQscixuKXtyZXR1cm4gbiYmKHQ9XCIoXCIrdCtcIiB8fCAnJykudG9Mb3dlckNhc2UoKVwiLHImJihyPXIudG9Mb3dlckNhc2UoKSkpLHImJihyPWUocikpLHQrXCIuaW5kZXhPZignXCIrcitcIicpID49IDBcIn0sZG9lc25vdGNvbnRhaW46ZnVuY3Rpb24odCxyLG4pe3JldHVybiBuJiYodD1cIihcIit0K1wiIHx8ICcnKS50b0xvd2VyQ2FzZSgpXCIsciYmKHI9ci50b0xvd2VyQ2FzZSgpKSksciYmKHI9ZShyKSksdCtcIi5pbmRleE9mKCdcIityK1wiJykgPT0gLTFcIn0saXNlbXB0eTpmdW5jdGlvbihlKXtyZXR1cm4gZStcIiA9PT0gJydcIn0saXNub3RlbXB0eTpmdW5jdGlvbihlKXtyZXR1cm4gZStcIiAhPT0gJydcIn0saXNudWxsOmZ1bmN0aW9uKGUpe3JldHVyblwiKFwiK2UrXCIgPT09IG51bGwgfHwgXCIrZStcIiA9PT0gdW5kZWZpbmVkKVwifSxpc25vdG51bGw6ZnVuY3Rpb24oZSl7cmV0dXJuXCIoXCIrZStcIiAhPT0gbnVsbCAmJiBcIitlK1wiICE9PSB1bmRlZmluZWQpXCJ9fX0oKSxhLmZpbHRlckV4cHI9ZnVuY3Rpb24oZSl7dmFyIHIsbixpLHMsbyx1LGw9W10sZD17YW5kOlwiICYmIFwiLG9yOlwiIHx8IFwifSxoPVtdLGY9W10sYz1lLmZpbHRlcnM7Zm9yKHI9MCxuPWMubGVuZ3RoO3I8bjtyKyspaT1jW3JdLG89aS5maWVsZCx1PWkub3BlcmF0b3IsaS5maWx0ZXJzPyhzPWEuZmlsdGVyRXhwcihpKSxpPXMuZXhwcmVzc2lvbi5yZXBsYWNlKC9fX29cXFsoXFxkKylcXF0vZyxmdW5jdGlvbihlLHQpe3JldHVybiB0PSt0LFwiX19vW1wiKyhmLmxlbmd0aCt0KStcIl1cIn0pLnJlcGxhY2UoL19fZlxcWyhcXGQrKVxcXS9nLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9K3QsXCJfX2ZbXCIrKGgubGVuZ3RoK3QpK1wiXVwifSksZi5wdXNoLmFwcGx5KGYscy5vcGVyYXRvcnMpLGgucHVzaC5hcHBseShoLHMuZmllbGRzKSk6KHR5cGVvZiBvPT09a2U/KHM9XCJfX2ZbXCIraC5sZW5ndGgrXCJdKGQpXCIsaC5wdXNoKG8pKTpzPW1lLmV4cHIobyksdHlwZW9mIHU9PT1rZT8oaT1cIl9fb1tcIitmLmxlbmd0aCtcIl0oXCIrcytcIiwgXCIrJC5xdW90ZShpLnZhbHVlKStcIilcIixmLnB1c2godSkpOmk9JFsodXx8XCJlcVwiKS50b0xvd2VyQ2FzZSgpXShzLGkudmFsdWUsaS5pZ25vcmVDYXNlPT09dHx8aS5pZ25vcmVDYXNlKSksbC5wdXNoKGkpO3JldHVybntleHByZXNzaW9uOlwiKFwiK2wuam9pbihkW2UubG9naWNdKStcIilcIixmaWVsZHM6aCxvcGVyYXRvcnM6Zn19LFg9e1wiPT1cIjpcImVxXCIsZXF1YWxzOlwiZXFcIixpc2VxdWFsdG86XCJlcVwiLGVxdWFsdG86XCJlcVwiLGVxdWFsOlwiZXFcIixcIiE9XCI6XCJuZXFcIixuZTpcIm5lcVwiLG5vdGVxdWFsczpcIm5lcVwiLGlzbm90ZXF1YWx0bzpcIm5lcVwiLG5vdGVxdWFsdG86XCJuZXFcIixub3RlcXVhbDpcIm5lcVwiLFwiPFwiOlwibHRcIixpc2xlc3N0aGFuOlwibHRcIixsZXNzdGhhbjpcImx0XCIsbGVzczpcImx0XCIsXCI8PVwiOlwibHRlXCIsbGU6XCJsdGVcIixpc2xlc3N0aGFub3JlcXVhbHRvOlwibHRlXCIsbGVzc3RoYW5lcXVhbDpcImx0ZVwiLFwiPlwiOlwiZ3RcIixpc2dyZWF0ZXJ0aGFuOlwiZ3RcIixncmVhdGVydGhhbjpcImd0XCIsZ3JlYXRlcjpcImd0XCIsXCI+PVwiOlwiZ3RlXCIsaXNncmVhdGVydGhhbm9yZXF1YWx0bzpcImd0ZVwiLGdyZWF0ZXJ0aGFuZXF1YWw6XCJndGVcIixnZTpcImd0ZVwiLG5vdHN1YnN0cmluZ29mOlwiZG9lc25vdGNvbnRhaW5cIixpc251bGw6XCJpc251bGxcIixpc2VtcHR5OlwiaXNlbXB0eVwiLGlzbm90ZW1wdHk6XCJpc25vdGVtcHR5XCJ9LGEubm9ybWFsaXplRmlsdGVyPXUsYS5jb21wYXJlRmlsdGVycz1mLGEucHJvdG90eXBlPXt0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YX0scmFuZ2U6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IGEodGhpcy5kYXRhLnNsaWNlKGUsZSt0KSl9LHNraXA6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBhKHRoaXMuZGF0YS5zbGljZShlKSl9LHRha2U6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBhKHRoaXMuZGF0YS5zbGljZSgwLGUpKX0sc2VsZWN0OmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgYShCKHRoaXMuZGF0YSxlKSl9LG9yZGVyOmZ1bmN0aW9uKGUsdCl7dmFyIHI9e2Rpcjp0fTtyZXR1cm4gZSYmKGUuY29tcGFyZT9yLmNvbXBhcmU9ZS5jb21wYXJlOnIuZmllbGQ9ZSksbmV3IGEodGhpcy5kYXRhLnNsaWNlKDApLnNvcnQoUS5jcmVhdGUocikpKX0sb3JkZXJCeTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vcmRlcihlLFwiYXNjXCIpfSxvcmRlckJ5RGVzY2VuZGluZzpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vcmRlcihlLFwiZGVzY1wiKX0sc29ydDpmdW5jdGlvbihlLHQscil7dmFyIG4saSxhPXMoZSx0KSxvPVtdO2lmKHI9cnx8USxhLmxlbmd0aCl7Zm9yKG49MCxpPWEubGVuZ3RoO248aTtuKyspby5wdXNoKHIuY3JlYXRlKGFbbl0pKTtyZXR1cm4gdGhpcy5vcmRlckJ5KHtjb21wYXJlOnIuY29tYmluZShvKX0pfXJldHVybiB0aGlzfSxmaWx0ZXI6ZnVuY3Rpb24oZSl7dmFyIHQscixuLGkscyxvLGwsZCxoPXRoaXMuZGF0YSxmPVtdO2lmKGU9dShlKSwhZXx8MD09PWUuZmlsdGVycy5sZW5ndGgpcmV0dXJuIHRoaXM7Zm9yKGk9YS5maWx0ZXJFeHByKGUpLG89aS5maWVsZHMsbD1pLm9wZXJhdG9ycyxzPWQ9RnVuY3Rpb24oXCJkLCBfX2YsIF9fb1wiLFwicmV0dXJuIFwiK2kuZXhwcmVzc2lvbiksKG8ubGVuZ3RofHxsLmxlbmd0aCkmJihkPWZ1bmN0aW9uKGUpe3JldHVybiBzKGUsbyxsKX0pLHQ9MCxuPWgubGVuZ3RoO3Q8bjt0Kyspcj1oW3RdLGQocikmJmYucHVzaChyKTtyZXR1cm4gbmV3IGEoZil9LGdyb3VwOmZ1bmN0aW9uKGUsdCl7ZT1nKGV8fFtdKSx0PXR8fHRoaXMuZGF0YTt2YXIgcixuPXRoaXMsaT1uZXcgYShuLmRhdGEpO3JldHVybiBlLmxlbmd0aD4wJiYocj1lWzBdLGk9aS5ncm91cEJ5KHIpLnNlbGVjdChmdW5jdGlvbihuKXt2YXIgaT1uZXcgYSh0KS5maWx0ZXIoW3tmaWVsZDpuLmZpZWxkLG9wZXJhdG9yOlwiZXFcIix2YWx1ZTpuLnZhbHVlLGlnbm9yZUNhc2U6ITF9XSk7cmV0dXJue2ZpZWxkOm4uZmllbGQsdmFsdWU6bi52YWx1ZSxpdGVtczplLmxlbmd0aD4xP25ldyBhKG4uaXRlbXMpLmdyb3VwKGUuc2xpY2UoMSksaS50b0FycmF5KCkpLnRvQXJyYXkoKTpuLml0ZW1zLGhhc1N1Ymdyb3VwczplLmxlbmd0aD4xLGFnZ3JlZ2F0ZXM6aS5hZ2dyZWdhdGUoci5hZ2dyZWdhdGVzKX19KSksaX0sZ3JvdXBCeTpmdW5jdGlvbihlKXtpZihmZShlKXx8IXRoaXMuZGF0YS5sZW5ndGgpcmV0dXJuIG5ldyBhKFtdKTt2YXIgdCxyLG4saSxzPWUuZmllbGQsbz10aGlzLl9zb3J0Rm9yR3JvdXBpbmcocyxlLmRpcnx8XCJhc2NcIiksdT1tZS5hY2Nlc3NvcihzKSxsPXUuZ2V0KG9bMF0scyksZD17ZmllbGQ6cyx2YWx1ZTpsLGl0ZW1zOltdfSxoPVtkXTtmb3Iobj0wLGk9by5sZW5ndGg7bjxpO24rKyl0PW9bbl0scj11LmdldCh0LHMpLHAobCxyKXx8KGw9cixkPXtmaWVsZDpzLHZhbHVlOmwsaXRlbXM6W119LGgucHVzaChkKSksZC5pdGVtcy5wdXNoKHQpO3JldHVybiBuZXcgYShoKX0sX3NvcnRGb3JHcm91cGluZzpmdW5jdGlvbihlLHQpe3ZhciByLG4saT10aGlzLmRhdGE7aWYoIVFlKXtmb3Iocj0wLG49aS5sZW5ndGg7cjxuO3IrKylpW3JdLl9fcG9zaXRpb249cjtmb3IoaT1uZXcgYShpKS5zb3J0KGUsdCxLKS50b0FycmF5KCkscj0wLG49aS5sZW5ndGg7cjxuO3IrKylkZWxldGUgaVtyXS5fX3Bvc2l0aW9uO3JldHVybiBpfXJldHVybiB0aGlzLnNvcnQoZSx0KS50b0FycmF5KCl9LGFnZ3JlZ2F0ZTpmdW5jdGlvbihlKXt2YXIgdCxyLG49e30saT17fTtpZihlJiZlLmxlbmd0aClmb3IodD0wLHI9dGhpcy5kYXRhLmxlbmd0aDt0PHI7dCsrKV8obixlLHRoaXMuZGF0YVt0XSx0LHIsaSk7cmV0dXJuIG59fSxZPXtzdW06ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIuZ2V0KHQpO3JldHVybiB2KGUpP3YobikmJihlKz1uKTplPW4sZX0sY291bnQ6ZnVuY3Rpb24oZSl7cmV0dXJuKGV8fDApKzF9LGF2ZXJhZ2U6ZnVuY3Rpb24oZSxyLG4saSxhLHMpe3ZhciBvPW4uZ2V0KHIpO3JldHVybiBzLmNvdW50PT09dCYmKHMuY291bnQ9MCksdihlKT92KG8pJiYoZSs9byk6ZT1vLHYobykmJnMuY291bnQrKyxpPT1hLTEmJnYoZSkmJihlLz1zLmNvdW50KSxlfSxtYXg6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIuZ2V0KHQpO3JldHVybiB2KGUpfHxtKGUpfHwoZT1uKSxlPG4mJih2KG4pfHxtKG4pKSYmKGU9biksZX0sbWluOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yLmdldCh0KTtyZXR1cm4gdihlKXx8bShlKXx8KGU9biksZT5uJiYodihuKXx8bShuKSkmJihlPW4pLGV9fSxhLnByb2Nlc3M9ZnVuY3Rpb24oZSxyKXtyPXJ8fHt9O3ZhciBuLGk9bmV3IGEoZSksbz1yLmdyb3VwLHU9ZyhvfHxbXSkuY29uY2F0KHMoci5zb3J0fHxbXSkpLGw9ci5maWx0ZXJDYWxsYmFjayxkPXIuZmlsdGVyLGg9ci5za2lwLGY9ci50YWtlO3JldHVybiBkJiYoaT1pLmZpbHRlcihkKSxsJiYoaT1sKGkpKSxuPWkudG9BcnJheSgpLmxlbmd0aCksdSYmKGk9aS5zb3J0KHUpLG8mJihlPWkudG9BcnJheSgpKSksaCE9PXQmJmYhPT10JiYoaT1pLnJhbmdlKGgsZikpLG8mJihpPWkuZ3JvdXAobyxlKSkse3RvdGFsOm4sZGF0YTppLnRvQXJyYXkoKX19LFo9YmUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUpe3RoaXMuZGF0YT1lLmRhdGF9LHJlYWQ6ZnVuY3Rpb24oZSl7ZS5zdWNjZXNzKHRoaXMuZGF0YSl9LHVwZGF0ZTpmdW5jdGlvbihlKXtlLnN1Y2Nlc3MoZS5kYXRhKX0sY3JlYXRlOmZ1bmN0aW9uKGUpe2Uuc3VjY2VzcyhlLmRhdGEpfSxkZXN0cm95OmZ1bmN0aW9uKGUpe2Uuc3VjY2VzcyhlLmRhdGEpfX0pLGVlPWJlLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlKXt2YXIgdCxyPXRoaXM7ZT1yLm9wdGlvbnM9bGUoe30sci5vcHRpb25zLGUpLF9lKEllLGZ1bmN0aW9uKHQscil7dHlwZW9mIGVbcl09PT13ZSYmKGVbcl09e3VybDplW3JdfSl9KSxyLmNhY2hlPWUuY2FjaGU/dGUuY3JlYXRlKGUuY2FjaGUpOntmaW5kOnZlLGFkZDp2ZX0sdD1lLnBhcmFtZXRlck1hcCx5ZShlLnB1c2gpJiYoci5wdXNoPWUucHVzaCksci5wdXNofHwoci5wdXNoPU5lKSxyLnBhcmFtZXRlck1hcD15ZSh0KT90OmZ1bmN0aW9uKGUpe3ZhciByPXt9O3JldHVybiBfZShlLGZ1bmN0aW9uKGUsbil7ZSBpbiB0JiYoZT10W2VdLGhlKGUpJiYobj1lLnZhbHVlKG4pLGU9ZS5rZXkpKSxyW2VdPW59KSxyfX0sb3B0aW9uczp7cGFyYW1ldGVyTWFwOk5lfSxjcmVhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHBlKHRoaXMuc2V0dXAoZSx4ZSkpfSxyZWFkOmZ1bmN0aW9uKHIpe3ZhciBuLGksYSxzPXRoaXMsbz1zLmNhY2hlO3I9cy5zZXR1cChyLHFlKSxuPXIuc3VjY2Vzc3x8dmUsaT1yLmVycm9yfHx2ZSxhPW8uZmluZChyLmRhdGEpLGEhPT10P24oYSk6KHIuc3VjY2Vzcz1mdW5jdGlvbihlKXtvLmFkZChyLmRhdGEsZSksbihlKX0sZS5hamF4KHIpKX0sdXBkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBwZSh0aGlzLnNldHVwKGUsRGUpKX0sZGVzdHJveTpmdW5jdGlvbihlKXtyZXR1cm4gcGUodGhpcy5zZXR1cChlLENlKSl9LHNldHVwOmZ1bmN0aW9uKGUsdCl7ZT1lfHx7fTt2YXIgcixuPXRoaXMsaT1uLm9wdGlvbnNbdF0sYT15ZShpLmRhdGEpP2kuZGF0YShlLmRhdGEpOmkuZGF0YTtyZXR1cm4gZT1sZSghMCx7fSxpLGUpLHI9bGUoITAse30sYSxlLmRhdGEpLGUuZGF0YT1uLnBhcmFtZXRlck1hcChyLHQpLHllKGUudXJsKSYmKGUudXJsPWUudXJsKHIpKSxlfX0pLHRlPWJlLmV4dGVuZCh7aW5pdDpmdW5jdGlvbigpe3RoaXMuX3N0b3JlPXt9fSxhZGQ6ZnVuY3Rpb24oZSxyKXtlIT09dCYmKHRoaXMuX3N0b3JlW2plKGUpXT1yKX0sZmluZDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fc3RvcmVbamUoZSldfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuX3N0b3JlPXt9fSxyZW1vdmU6ZnVuY3Rpb24oZSl7ZGVsZXRlIHRoaXMuX3N0b3JlW2plKGUpXX19KSx0ZS5jcmVhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9e2lubWVtb3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0ZX19O3JldHVybiBoZShlKSYmeWUoZS5maW5kKT9lOmU9PT0hMD9uZXcgdGU6dFtlXSgpfSxyZT1iZS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSl7dmFyIHQscixuLGksYSxzLG8sdSxsLGQsaCxmLGMsZz10aGlzO2U9ZXx8e307Zm9yKHQgaW4gZSlyPWVbdF0sZ1t0XT10eXBlb2Ygcj09PXdlP01lKHIpOnI7aT1lLm1vZGVsQmFzZXx8VyxoZShnLm1vZGVsKSYmKGcubW9kZWw9bj1pLmRlZmluZShnLm1vZGVsKSksYT1kZShnLmRhdGEsZyksZy5fZGF0YUFjY2Vzc0Z1bmN0aW9uPWEsZy5tb2RlbCYmKHM9ZGUoZy5ncm91cHMsZyksbz1kZShnLnNlcmlhbGl6ZSxnKSx1PXt9LGw9e30sZD17fSxoPXt9LGY9ITEsbj1nLm1vZGVsLG4uZmllbGRzJiYoX2Uobi5maWVsZHMsZnVuY3Rpb24oZSx0KXt2YXIgcjtjPWUsaGUodCkmJnQuZmllbGQ/Yz10LmZpZWxkOnR5cGVvZiB0PT09d2UmJihjPXQpLGhlKHQpJiZ0LmZyb20mJihyPXQuZnJvbSksZj1mfHxyJiZyIT09ZXx8YyE9PWUsbFtlXT1NZShyfHxjKSxkW2VdPU1lKGUpLHVbcnx8Y109ZSxoW2VdPXJ8fGN9KSwhZS5zZXJpYWxpemUmJmYmJihnLnNlcmlhbGl6ZT1rKG8sbixTLGQsdSxoKSkpLGcuX2RhdGFBY2Nlc3NGdW5jdGlvbj1hLGcuZGF0YT1rKGEsbixiLGwsdSxoKSxnLmdyb3Vwcz1rKHMsbix3LGwsdSxoKSl9LGVycm9yczpmdW5jdGlvbihlKXtyZXR1cm4gZT9lLmVycm9yczpudWxsfSxwYXJzZTpOZSxkYXRhOk5lLHRvdGFsOmZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aH0sZ3JvdXBzOk5lLGFnZ3JlZ2F0ZXM6ZnVuY3Rpb24oKXtyZXR1cm57fX0sc2VyaWFsaXplOmZ1bmN0aW9uKGUpe3JldHVybiBlfX0pLG5lPVNlLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlKXt2YXIgcixuLGksYT10aGlzO2UmJihuPWUuZGF0YSksZT1hLm9wdGlvbnM9bGUoe30sYS5vcHRpb25zLGUpLGEuX21hcD17fSxhLl9wcmVmZXRjaD17fSxhLl9kYXRhPVtdLGEuX3ByaXN0aW5lRGF0YT1bXSxhLl9yYW5nZXM9W10sYS5fdmlldz1bXSxhLl9wcmlzdGluZVRvdGFsPTAsYS5fZGVzdHJveWVkPVtdLGEuX3BhZ2VTaXplPWUucGFnZVNpemUsYS5fcGFnZT1lLnBhZ2V8fChlLnBhZ2VTaXplPzE6dCksYS5fc29ydD1zKGUuc29ydCksYS5fZmlsdGVyPXUoZS5maWx0ZXIpLGEuX2dyb3VwPWcoZS5ncm91cCksYS5fYWdncmVnYXRlPWUuYWdncmVnYXRlLGEuX3RvdGFsPWUudG90YWwsYS5fc2hvdWxkRGV0YWNoT2JzZXJ2YWJsZVBhcmVudHM9ITAsU2UuZm4uaW5pdC5jYWxsKGEpLGEudHJhbnNwb3J0PWllLmNyZWF0ZShlLG4sYSkseWUoYS50cmFuc3BvcnQucHVzaCkmJmEudHJhbnNwb3J0LnB1c2goe3B1c2hDcmVhdGU6ZGUoYS5fcHVzaENyZWF0ZSxhKSxwdXNoVXBkYXRlOmRlKGEuX3B1c2hVcGRhdGUsYSkscHVzaERlc3Ryb3k6ZGUoYS5fcHVzaERlc3Ryb3ksYSl9KSxudWxsIT1lLm9mZmxpbmVTdG9yYWdlJiYoXCJzdHJpbmdcIj09dHlwZW9mIGUub2ZmbGluZVN0b3JhZ2U/KGk9ZS5vZmZsaW5lU3RvcmFnZSxhLl9zdG9yYWdlPXtnZXRJdGVtOmZ1bmN0aW9uKCl7cmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oaSkpfSxzZXRJdGVtOmZ1bmN0aW9uKGUpe2xvY2FsU3RvcmFnZS5zZXRJdGVtKGksamUoYS5yZWFkZXIuc2VyaWFsaXplKGUpKSl9fSk6YS5fc3RvcmFnZT1lLm9mZmxpbmVTdG9yYWdlKSxhLnJlYWRlcj1uZXcgbWUuZGF0YS5yZWFkZXJzW2Uuc2NoZW1hLnR5cGV8fFwianNvblwiXShlLnNjaGVtYSkscj1hLnJlYWRlci5tb2RlbHx8e30sYS5fZGV0YWNoT2JzZXJ2YWJsZVBhcmVudHMoKSxhLl9kYXRhPWEuX29ic2VydmUoYS5fZGF0YSksYS5fb25saW5lPSEwLGEuYmluZChbXCJwdXNoXCIsUGUsT2UsVGUsemUsQWUsRmVdLGUpfSxvcHRpb25zOntkYXRhOm51bGwsc2NoZW1hOnttb2RlbEJhc2U6V30sb2ZmbGluZVN0b3JhZ2U6bnVsbCxzZXJ2ZXJTb3J0aW5nOiExLHNlcnZlclBhZ2luZzohMSxzZXJ2ZXJGaWx0ZXJpbmc6ITEsc2VydmVyR3JvdXBpbmc6ITEsc2VydmVyQWdncmVnYXRlczohMSxiYXRjaDohMX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sb25saW5lOmZ1bmN0aW9uKHIpe3JldHVybiByIT09dD90aGlzLl9vbmxpbmUhPXImJih0aGlzLl9vbmxpbmU9cixyKT90aGlzLnN5bmMoKTplLkRlZmVycmVkKCkucmVzb2x2ZSgpLnByb21pc2UoKTp0aGlzLl9vbmxpbmV9LG9mZmxpbmVEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT10aGlzLm9wdGlvbnMub2ZmbGluZVN0b3JhZ2U/bnVsbDplIT09dD90aGlzLl9zdG9yYWdlLnNldEl0ZW0oZSk6dGhpcy5fc3RvcmFnZS5nZXRJdGVtKCl8fFtdfSxfaXNTZXJ2ZXJHcm91cGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5ncm91cCgpfHxbXTtyZXR1cm4gdGhpcy5vcHRpb25zLnNlcnZlckdyb3VwaW5nJiZlLmxlbmd0aH0sX3B1c2hDcmVhdGU6ZnVuY3Rpb24oZSl7dGhpcy5fcHVzaChlLFwicHVzaENyZWF0ZVwiKX0sX3B1c2hVcGRhdGU6ZnVuY3Rpb24oZSl7dGhpcy5fcHVzaChlLFwicHVzaFVwZGF0ZVwiKX0sX3B1c2hEZXN0cm95OmZ1bmN0aW9uKGUpe3RoaXMuX3B1c2goZSxcInB1c2hEZXN0cm95XCIpfSxfcHVzaDpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX3JlYWREYXRhKGUpO3J8fChyPWUpLHRoaXNbdF0ocil9LF9mbGF0RGF0YTpmdW5jdGlvbihlLHQpe2lmKGUpe2lmKHRoaXMuX2lzU2VydmVyR3JvdXBlZCgpKXJldHVybiBxKGUpO2lmKCF0KWZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWUuYXQocil9cmV0dXJuIGV9LHBhcmVudDp2ZSxnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQscixuPXRoaXMuX2ZsYXREYXRhKHRoaXMuX2RhdGEpO2Zvcih0PTAscj1uLmxlbmd0aDt0PHI7dCsrKWlmKG5bdF0uaWQ9PWUpcmV0dXJuIG5bdF19LGdldEJ5VWlkOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbj10aGlzLl9mbGF0RGF0YSh0aGlzLl9kYXRhKTtpZihuKWZvcih0PTAscj1uLmxlbmd0aDt0PHI7dCsrKWlmKG5bdF0udWlkPT1lKXJldHVybiBuW3RdfSxpbmRleE9mOmZ1bmN0aW9uKGUpe3JldHVybiBGKHRoaXMuX2RhdGEsZSl9LGF0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9kYXRhLmF0KGUpfSxkYXRhOmZ1bmN0aW9uKGUpe3ZhciByLG49dGhpcztpZihlPT09dCl7aWYobi5fZGF0YSlmb3Iocj0wO3I8bi5fZGF0YS5sZW5ndGg7cisrKW4uX2RhdGEuYXQocik7cmV0dXJuIG4uX2RhdGF9bi5fZGV0YWNoT2JzZXJ2YWJsZVBhcmVudHMoKSxuLl9kYXRhPXRoaXMuX29ic2VydmUoZSksbi5fcHJpc3RpbmVEYXRhPWUuc2xpY2UoMCksbi5fc3RvcmVEYXRhKCksbi5fcmFuZ2VzPVtdLG4udHJpZ2dlcihcInJlc2V0XCIpLG4uX2FkZFJhbmdlKG4uX2RhdGEpLG4uX3RvdGFsPW4uX2RhdGEubGVuZ3RoLG4uX3ByaXN0aW5lVG90YWw9bi5fdG90YWwsbi5fcHJvY2VzcyhuLl9kYXRhKX0sdmlldzpmdW5jdGlvbihlKXtyZXR1cm4gZT09PXQ/dGhpcy5fdmlldzoodGhpcy5fdmlldz10aGlzLl9vYnNlcnZlVmlldyhlKSx0KX0sX29ic2VydmVWaWV3OmZ1bmN0aW9uKGUpe3ZhciB0LHI9dGhpcztyZXR1cm4gUihlLHIuX2RhdGEsci5fcmFuZ2VzLHIucmVhZGVyLm1vZGVsfHxILHIuX2lzU2VydmVyR3JvdXBlZCgpKSx0PW5ldyBVKGUsci5yZWFkZXIubW9kZWwpLHQucGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyZW50KCl9LHR9LGZsYXRWaWV3OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5ncm91cCgpfHxbXTtyZXR1cm4gZS5sZW5ndGg/cSh0aGlzLl92aWV3KTp0aGlzLl92aWV3fSxhZGQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW5zZXJ0KHRoaXMuX2RhdGEubGVuZ3RoLGUpfSxfY3JlYXRlTmV3TW9kZWw6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVhZGVyLm1vZGVsP25ldyB0aGlzLnJlYWRlci5tb2RlbChlKTplIGluc3RhbmNlb2YgSD9lOm5ldyBIKGUpfSxpbnNlcnQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8KHQ9ZSxlPTApLHQgaW5zdGFuY2VvZiBXfHwodD10aGlzLl9jcmVhdGVOZXdNb2RlbCh0KSksdGhpcy5faXNTZXJ2ZXJHcm91cGVkKCk/dGhpcy5fZGF0YS5zcGxpY2UoZSwwLHRoaXMuX3dyYXBJbkVtcHR5R3JvdXAodCkpOnRoaXMuX2RhdGEuc3BsaWNlKGUsMCx0KSx0fSxwdXNoQ3JlYXRlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpLGEscztjZShlKXx8KGU9W2VdKSx0PVtdLHI9dGhpcy5vcHRpb25zLmF1dG9TeW5jLHRoaXMub3B0aW9ucy5hdXRvU3luYz0hMTt0cnl7Zm9yKG49MDtuPGUubGVuZ3RoO24rKylpPWVbbl0sYT10aGlzLmFkZChpKSx0LnB1c2goYSkscz1hLnRvSlNPTigpLHRoaXMuX2lzU2VydmVyR3JvdXBlZCgpJiYocz10aGlzLl93cmFwSW5FbXB0eUdyb3VwKHMpKSx0aGlzLl9wcmlzdGluZURhdGEucHVzaChzKX1maW5hbGx5e3RoaXMub3B0aW9ucy5hdXRvU3luYz1yfXQubGVuZ3RoJiZ0aGlzLnRyaWdnZXIoXCJwdXNoXCIse3R5cGU6XCJjcmVhdGVcIixpdGVtczp0fSl9LHB1c2hVcGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQscixuLGksYTtmb3IoY2UoZSl8fChlPVtlXSksdD1bXSxyPTA7cjxlLmxlbmd0aDtyKyspbj1lW3JdLGk9dGhpcy5fY3JlYXRlTmV3TW9kZWwobiksYT10aGlzLmdldChpLmlkKSxhPyh0LnB1c2goYSksYS5hY2NlcHQobiksYS50cmlnZ2VyKE9lKSx0aGlzLl91cGRhdGVQcmlzdGluZUZvck1vZGVsKGEsbikpOnRoaXMucHVzaENyZWF0ZShuKTt0Lmxlbmd0aCYmdGhpcy50cmlnZ2VyKFwicHVzaFwiLHt0eXBlOlwidXBkYXRlXCIsaXRlbXM6dH0pfSxwdXNoRGVzdHJveTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW1vdmVJdGVtcyhlKTt0Lmxlbmd0aCYmdGhpcy50cmlnZ2VyKFwicHVzaFwiLHt0eXBlOlwiZGVzdHJveVwiLGl0ZW1zOnR9KX0sX3JlbW92ZUl0ZW1zOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpLGEscztjZShlKXx8KGU9W2VdKSx0PVtdLHI9dGhpcy5vcHRpb25zLmF1dG9TeW5jLHRoaXMub3B0aW9ucy5hdXRvU3luYz0hMTt0cnl7Zm9yKG49MDtuPGUubGVuZ3RoO24rKylpPWVbbl0sYT10aGlzLl9jcmVhdGVOZXdNb2RlbChpKSxzPSExLHRoaXMuX2VhY2hJdGVtKHRoaXMuX2RhdGEsZnVuY3Rpb24oZSl7dmFyIHIsbjtmb3Iocj0wO3I8ZS5sZW5ndGg7cisrKWlmKG49ZS5hdChyKSxuLmlkPT09YS5pZCl7dC5wdXNoKG4pLGUuc3BsaWNlKHIsMSkscz0hMDticmVha319KSxzJiYodGhpcy5fcmVtb3ZlUHJpc3RpbmVGb3JNb2RlbChhKSx0aGlzLl9kZXN0cm95ZWQucG9wKCkpfWZpbmFsbHl7dGhpcy5vcHRpb25zLmF1dG9TeW5jPXJ9cmV0dXJuIHR9LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdCxyPXRoaXMsbj1yLl9pc1NlcnZlckdyb3VwZWQoKTtyZXR1cm4gdGhpcy5fZWFjaEl0ZW0oci5fZGF0YSxmdW5jdGlvbihpKXtpZih0PVAoaSxlKSx0JiZuKXJldHVybiB0LmlzTmV3JiZ0LmlzTmV3KCl8fHIuX2Rlc3Ryb3llZC5wdXNoKHQpLCEwfSksdGhpcy5fcmVtb3ZlTW9kZWxGcm9tUmFuZ2VzKGUpLHRoaXMuX3VwZGF0ZVJhbmdlc0xlbmd0aCgpLGV9LGRlc3Ryb3llZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXN0cm95ZWR9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt2YXIgZSx0LHI9W10sbj10aGlzLl9mbGF0RGF0YSh0aGlzLl9kYXRhKTtmb3IoZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyluW2VdLmlzTmV3JiZuW2VdLmlzTmV3KCkmJnIucHVzaChuW2VdKTtyZXR1cm4gcn0sdXBkYXRlZDpmdW5jdGlvbigpe3ZhciBlLHQscj1bXSxuPXRoaXMuX2ZsYXREYXRhKHRoaXMuX2RhdGEpO2ZvcihlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKW5bZV0uaXNOZXcmJiFuW2VdLmlzTmV3KCkmJm5bZV0uZGlydHkmJnIucHVzaChuW2VdKTtyZXR1cm4gcn0sc3luYzpmdW5jdGlvbigpe3ZhciB0LHI9dGhpcyxuPVtdLGk9W10sYT1yLl9kZXN0cm95ZWQscz1lLkRlZmVycmVkKCkucmVzb2x2ZSgpLnByb21pc2UoKTtpZihyLm9ubGluZSgpKXtpZighci5yZWFkZXIubW9kZWwpcmV0dXJuIHM7bj1yLmNyZWF0ZWQoKSxpPXIudXBkYXRlZCgpLHQ9W10sci5vcHRpb25zLmJhdGNoJiZyLnRyYW5zcG9ydC5zdWJtaXQ/dD1yLl9zZW5kU3VibWl0KG4saSxhKToodC5wdXNoLmFwcGx5KHQsci5fc2VuZChcImNyZWF0ZVwiLG4pKSx0LnB1c2guYXBwbHkodCxyLl9zZW5kKFwidXBkYXRlXCIsaSkpLHQucHVzaC5hcHBseSh0LHIuX3NlbmQoXCJkZXN0cm95XCIsYSkpKSxzPWUud2hlbi5hcHBseShudWxsLHQpLnRoZW4oZnVuY3Rpb24oKXt2YXIgZSx0O2ZvcihlPTAsdD1hcmd1bWVudHMubGVuZ3RoO2U8dDtlKyspYXJndW1lbnRzW2VdJiZyLl9hY2NlcHQoYXJndW1lbnRzW2VdKTtyLl9zdG9yZURhdGEoITApLHIuX2NoYW5nZSh7YWN0aW9uOlwic3luY1wifSksci50cmlnZ2VyKHplKX0pfWVsc2Ugci5fc3RvcmVEYXRhKCEwKSxyLl9jaGFuZ2Uoe2FjdGlvbjpcInN5bmNcIn0pO3JldHVybiBzfSxjYW5jZWxDaGFuZ2VzOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7ZSBpbnN0YW5jZW9mIG1lLmRhdGEuTW9kZWw/dC5fY2FuY2VsTW9kZWwoZSk6KHQuX2Rlc3Ryb3llZD1bXSx0Ll9kZXRhY2hPYnNlcnZhYmxlUGFyZW50cygpLHQuX2RhdGE9dC5fb2JzZXJ2ZSh0Ll9wcmlzdGluZURhdGEpLHQub3B0aW9ucy5zZXJ2ZXJQYWdpbmcmJih0Ll90b3RhbD10Ll9wcmlzdGluZVRvdGFsKSx0Ll9yYW5nZXM9W10sdC5fYWRkUmFuZ2UodC5fZGF0YSksdC5fY2hhbmdlKCksdC5fbWFya09mZmxpbmVVcGRhdGVzQXNEaXJ0eSgpKX0sX21hcmtPZmZsaW5lVXBkYXRlc0FzRGlydHk6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO251bGwhPWUub3B0aW9ucy5vZmZsaW5lU3RvcmFnZSYmZS5fZWFjaEl0ZW0oZS5fZGF0YSxmdW5jdGlvbihlKXt2YXIgdCxyO2Zvcih0PTA7dDxlLmxlbmd0aDt0Kyspcj1lLmF0KHQpLFwidXBkYXRlXCIhPXIuX19zdGF0ZV9fJiZcImNyZWF0ZVwiIT1yLl9fc3RhdGVfX3x8KHIuZGlydHk9ITApfSl9LGhhc0NoYW5nZXM6ZnVuY3Rpb24oKXt2YXIgZSx0LHI9dGhpcy5fZmxhdERhdGEodGhpcy5fZGF0YSk7aWYodGhpcy5fZGVzdHJveWVkLmxlbmd0aClyZXR1cm4hMDtmb3IoZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKylpZihyW2VdLmlzTmV3JiZyW2VdLmlzTmV3KCl8fHJbZV0uZGlydHkpcmV0dXJuITA7cmV0dXJuITF9LF9hY2NlcHQ6ZnVuY3Rpb24odCl7dmFyIHIsbj10aGlzLGk9dC5tb2RlbHMsYT10LnJlc3BvbnNlLHM9MCxvPW4uX2lzU2VydmVyR3JvdXBlZCgpLHU9bi5fcHJpc3RpbmVEYXRhLGw9dC50eXBlO2lmKG4udHJpZ2dlcihBZSx7cmVzcG9uc2U6YSx0eXBlOmx9KSxhJiYhZmUoYSkpe2lmKGE9bi5yZWFkZXIucGFyc2UoYSksbi5faGFuZGxlQ3VzdG9tRXJyb3JzKGEpKXJldHVybjthPW4ucmVhZGVyLmRhdGEoYSksY2UoYSl8fChhPVthXSl9ZWxzZSBhPWUubWFwKGksZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9KU09OKCl9KTtmb3IoXCJkZXN0cm95XCI9PT1sJiYobi5fZGVzdHJveWVkPVtdKSxzPTAscj1pLmxlbmd0aDtzPHI7cysrKVwiZGVzdHJveVwiIT09bD8oaVtzXS5hY2NlcHQoYVtzXSksXCJjcmVhdGVcIj09PWw/dS5wdXNoKG8/bi5fd3JhcEluRW1wdHlHcm91cChpW3NdKTphW3NdKTpcInVwZGF0ZVwiPT09bCYmbi5fdXBkYXRlUHJpc3RpbmVGb3JNb2RlbChpW3NdLGFbc10pKTpuLl9yZW1vdmVQcmlzdGluZUZvck1vZGVsKGlbc10pfSxfdXBkYXRlUHJpc3RpbmVGb3JNb2RlbDpmdW5jdGlvbihlLHQpe3RoaXMuX2V4ZWN1dGVPblByaXN0aW5lRm9yTW9kZWwoZSxmdW5jdGlvbihlLHIpe21lLmRlZXBFeHRlbmQocltlXSx0KX0pfSxfZXhlY3V0ZU9uUHJpc3RpbmVGb3JNb2RlbDpmdW5jdGlvbihlLHQpe3RoaXMuX2VhY2hQcmlzdGluZUl0ZW0oZnVuY3Rpb24ocil7dmFyIG49VChyLGUpO2lmKG4+LTEpcmV0dXJuIHQobixyKSwhMH0pfSxfcmVtb3ZlUHJpc3RpbmVGb3JNb2RlbDpmdW5jdGlvbihlKXt0aGlzLl9leGVjdXRlT25QcmlzdGluZUZvck1vZGVsKGUsZnVuY3Rpb24oZSx0KXt0LnNwbGljZShlLDEpfSl9LF9yZWFkRGF0YTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9pc1NlcnZlckdyb3VwZWQoKT90aGlzLnJlYWRlci5ncm91cHM6dGhpcy5yZWFkZXIuZGF0YTtyZXR1cm4gdC5jYWxsKHRoaXMucmVhZGVyLGUpfSxfZWFjaFByaXN0aW5lSXRlbTpmdW5jdGlvbihlKXt0aGlzLl9lYWNoSXRlbSh0aGlzLl9wcmlzdGluZURhdGEsZSl9LF9lYWNoSXRlbTpmdW5jdGlvbihlLHQpe2UmJmUubGVuZ3RoJiYodGhpcy5faXNTZXJ2ZXJHcm91cGVkKCk/QyhlLHQpOnQoZSkpfSxfcHJpc3RpbmVGb3JNb2RlbDpmdW5jdGlvbihlKXt2YXIgdCxyLG49ZnVuY3Rpb24obil7aWYocj1UKG4sZSkscj4tMSlyZXR1cm4gdD1uW3JdLCEwfTtyZXR1cm4gdGhpcy5fZWFjaFByaXN0aW5lSXRlbShuKSx0fSxfY2FuY2VsTW9kZWw6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcHJpc3RpbmVGb3JNb2RlbChlKTt0aGlzLl9lYWNoSXRlbSh0aGlzLl9kYXRhLGZ1bmN0aW9uKHIpe3ZhciBuPUYocixlKTtuPj0wJiYoIXR8fGUuaXNOZXcoKSYmIXQuX19zdGF0ZV9fP3Iuc3BsaWNlKG4sMSk6KHJbbl0uYWNjZXB0KHQpLFwidXBkYXRlXCI9PXQuX19zdGF0ZV9fJiYocltuXS5kaXJ0eT0hMCkpKX0pfSxfc3VibWl0OmZ1bmN0aW9uKHQscil7dmFyIG49dGhpcztuLnRyaWdnZXIoVGUse3R5cGU6XCJzdWJtaXRcIn0pLG4udHJhbnNwb3J0LnN1Ym1pdChsZSh7c3VjY2VzczpmdW5jdGlvbihyLG4pe3ZhciBpPWUuZ3JlcCh0LGZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PW59KVswXTtpJiZpLnJlc29sdmUoe3Jlc3BvbnNlOnIsbW9kZWxzOmkubW9kZWxzLHR5cGU6bn0pfSxlcnJvcjpmdW5jdGlvbihlLHIsaSl7Zm9yKHZhciBhPTA7YTx0Lmxlbmd0aDthKyspdFthXS5yZWplY3QoZSk7bi5lcnJvcihlLHIsaSl9fSxyKSl9LF9zZW5kU3VibWl0OmZ1bmN0aW9uKHQscixuKXt2YXIgaT10aGlzLGE9W107cmV0dXJuIGkub3B0aW9ucy5iYXRjaCYmKHQubGVuZ3RoJiZhLnB1c2goZS5EZWZlcnJlZChmdW5jdGlvbihlKXtlLnR5cGU9XCJjcmVhdGVcIixlLm1vZGVscz10fSkpLHIubGVuZ3RoJiZhLnB1c2goZS5EZWZlcnJlZChmdW5jdGlvbihlKXtlLnR5cGU9XCJ1cGRhdGVcIixlLm1vZGVscz1yfSkpLG4ubGVuZ3RoJiZhLnB1c2goZS5EZWZlcnJlZChmdW5jdGlvbihlKXtlLnR5cGU9XCJkZXN0cm95XCIsZS5tb2RlbHM9bn0pKSxpLl9zdWJtaXQoYSx7ZGF0YTp7Y3JlYXRlZDppLnJlYWRlci5zZXJpYWxpemUoeSh0KSksdXBkYXRlZDppLnJlYWRlci5zZXJpYWxpemUoeShyKSksZGVzdHJveWVkOmkucmVhZGVyLnNlcmlhbGl6ZSh5KG4pKX19KSksYX0sX3Byb21pc2U6ZnVuY3Rpb24odCxyLG4pe3ZhciBpPXRoaXM7cmV0dXJuIGUuRGVmZXJyZWQoZnVuY3Rpb24oZSl7aS50cmlnZ2VyKFRlLHt0eXBlOm59KSxpLnRyYW5zcG9ydFtuXS5jYWxsKGkudHJhbnNwb3J0LGxlKHtzdWNjZXNzOmZ1bmN0aW9uKHQpe2UucmVzb2x2ZSh7cmVzcG9uc2U6dCxtb2RlbHM6cix0eXBlOm59KX0sZXJyb3I6ZnVuY3Rpb24odCxyLG4pe2UucmVqZWN0KHQpLGkuZXJyb3IodCxyLG4pfX0sdCkpfSkucHJvbWlzZSgpfSxfc2VuZDpmdW5jdGlvbihlLHQpe3ZhciByLG4saT10aGlzLGE9W10scz1pLnJlYWRlci5zZXJpYWxpemUoeSh0KSk7aWYoaS5vcHRpb25zLmJhdGNoKXQubGVuZ3RoJiZhLnB1c2goaS5fcHJvbWlzZSh7ZGF0YTp7bW9kZWxzOnN9fSx0LGUpKTtlbHNlIGZvcihyPTAsbj10Lmxlbmd0aDtyPG47cisrKWEucHVzaChpLl9wcm9taXNlKHtkYXRhOnNbcl19LFt0W3JdXSxlKSk7cmV0dXJuIGF9LHJlYWQ6ZnVuY3Rpb24odCl7XG4gICAgdmFyIHI9dGhpcyxuPXIuX3BhcmFtcyh0KSxpPWUuRGVmZXJyZWQoKTtyZXR1cm4gci5fcXVldWVSZXF1ZXN0KG4sZnVuY3Rpb24oKXt2YXIgZT1yLnRyaWdnZXIoVGUse3R5cGU6XCJyZWFkXCJ9KTtlPyhyLl9kZXF1ZXVlUmVxdWVzdCgpLGkucmVzb2x2ZShlKSk6KHIudHJpZ2dlcihGZSksci5fcmFuZ2VzPVtdLHIudHJpZ2dlcihcInJlc2V0XCIpLHIub25saW5lKCk/ci50cmFuc3BvcnQucmVhZCh7ZGF0YTpuLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7ci5fcmFuZ2VzPVtdLHIuc3VjY2VzcyhlLG4pLGkucmVzb2x2ZSgpfSxlcnJvcjpmdW5jdGlvbigpe3ZhciBlPUplLmNhbGwoYXJndW1lbnRzKTtyLmVycm9yLmFwcGx5KHIsZSksaS5yZWplY3QuYXBwbHkoaSxlKX19KTpudWxsIT1yLm9wdGlvbnMub2ZmbGluZVN0b3JhZ2UmJihyLnN1Y2Nlc3Moci5vZmZsaW5lRGF0YSgpLG4pLGkucmVzb2x2ZSgpKSl9KSxpLnByb21pc2UoKX0sX3JlYWRBZ2dyZWdhdGVzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlYWRlci5hZ2dyZWdhdGVzKGUpfSxzdWNjZXNzOmZ1bmN0aW9uKGUpe3ZhciByLG4saSxhLHMsbyx1LGwsZD10aGlzLGg9ZC5vcHRpb25zO2lmKGQudHJpZ2dlcihBZSx7cmVzcG9uc2U6ZSx0eXBlOlwicmVhZFwifSksZC5vbmxpbmUoKSl7aWYoZT1kLnJlYWRlci5wYXJzZShlKSxkLl9oYW5kbGVDdXN0b21FcnJvcnMoZSkpcmV0dXJuIGQuX2RlcXVldWVSZXF1ZXN0KCksdDtkLl90b3RhbD1kLnJlYWRlci50b3RhbChlKSxkLl9hZ2dyZWdhdGUmJmguc2VydmVyQWdncmVnYXRlcyYmKGQuX2FnZ3JlZ2F0ZVJlc3VsdD1kLl9yZWFkQWdncmVnYXRlcyhlKSksZT1kLl9yZWFkRGF0YShlKSxkLl9kZXN0cm95ZWQ9W119ZWxzZXtmb3IoZT1kLl9yZWFkRGF0YShlKSxyPVtdLG49e30saT1kLnJlYWRlci5tb2RlbCxhPWk/aS5pZEZpZWxkOlwiaWRcIixzPTA7czx0aGlzLl9kZXN0cm95ZWQubGVuZ3RoO3MrKylvPXRoaXMuX2Rlc3Ryb3llZFtzXVthXSxuW29dPW87Zm9yKHM9MDtzPGUubGVuZ3RoO3MrKyl1PWVbc10sbD11Ll9fc3RhdGVfXyxcImRlc3Ryb3lcIj09bD9uW3VbYV1dfHx0aGlzLl9kZXN0cm95ZWQucHVzaCh0aGlzLl9jcmVhdGVOZXdNb2RlbCh1KSk6ci5wdXNoKHUpO2U9cixkLl90b3RhbD1lLmxlbmd0aH1kLl9wcmlzdGluZVRvdGFsPWQuX3RvdGFsLGQuX3ByaXN0aW5lRGF0YT1lLnNsaWNlKDApLGQuX2RldGFjaE9ic2VydmFibGVQYXJlbnRzKCksZC5fZGF0YT1kLl9vYnNlcnZlKGUpLGQuX21hcmtPZmZsaW5lVXBkYXRlc0FzRGlydHkoKSxkLl9zdG9yZURhdGEoKSxkLl9hZGRSYW5nZShkLl9kYXRhKSxkLl9wcm9jZXNzKGQuX2RhdGEpLGQuX2RlcXVldWVSZXF1ZXN0KCl9LF9kZXRhY2hPYnNlcnZhYmxlUGFyZW50czpmdW5jdGlvbigpe2lmKHRoaXMuX2RhdGEmJnRoaXMuX3Nob3VsZERldGFjaE9ic2VydmFibGVQYXJlbnRzKWZvcih2YXIgZT0wO2U8dGhpcy5fZGF0YS5sZW5ndGg7ZSsrKXRoaXMuX2RhdGFbZV0ucGFyZW50JiYodGhpcy5fZGF0YVtlXS5wYXJlbnQ9dmUpfSxfc3RvcmVEYXRhOmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIHIsbixpLGE9W107Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKyluPWUuYXQociksaT1uLnRvSlNPTigpLHMmJm4uaXRlbXM/aS5pdGVtcz10KG4uaXRlbXMpOihpLnVpZD1uLnVpZCxvJiYobi5pc05ldygpP2kuX19zdGF0ZV9fPVwiY3JlYXRlXCI6bi5kaXJ0eSYmKGkuX19zdGF0ZV9fPVwidXBkYXRlXCIpKSksYS5wdXNoKGkpO3JldHVybiBhfXZhciByLG4saSxhLHM9dGhpcy5faXNTZXJ2ZXJHcm91cGVkKCksbz10aGlzLnJlYWRlci5tb2RlbDtpZihudWxsIT10aGlzLm9wdGlvbnMub2ZmbGluZVN0b3JhZ2Upe2ZvcihyPXQodGhpcy5fZGF0YSksbj1bXSxpPTA7aTx0aGlzLl9kZXN0cm95ZWQubGVuZ3RoO2krKylhPXRoaXMuX2Rlc3Ryb3llZFtpXS50b0pTT04oKSxhLl9fc3RhdGVfXz1cImRlc3Ryb3lcIixuLnB1c2goYSk7dGhpcy5vZmZsaW5lRGF0YShyLmNvbmNhdChuKSksZSYmKHRoaXMuX3ByaXN0aW5lRGF0YT10aGlzLl9yZWFkRGF0YShyKSl9fSxfYWRkUmFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPXQuX3NraXB8fDAsbj1yK3QuX2ZsYXREYXRhKGUsITApLmxlbmd0aDt0Ll9yYW5nZXMucHVzaCh7c3RhcnQ6cixlbmQ6bixkYXRhOmUsdGltZXN0YW1wOihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksdC5fcmFuZ2VzLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdGFydC10LnN0YXJ0fSl9LGVycm9yOmZ1bmN0aW9uKGUsdCxyKXt0aGlzLl9kZXF1ZXVlUmVxdWVzdCgpLHRoaXMudHJpZ2dlcihBZSx7fSksdGhpcy50cmlnZ2VyKFBlLHt4aHI6ZSxzdGF0dXM6dCxlcnJvclRocm93bjpyfSl9LF9wYXJhbXM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPWxlKHt0YWtlOnQudGFrZSgpLHNraXA6dC5za2lwKCkscGFnZTp0LnBhZ2UoKSxwYWdlU2l6ZTp0LnBhZ2VTaXplKCksc29ydDp0Ll9zb3J0LGZpbHRlcjp0Ll9maWx0ZXIsZ3JvdXA6dC5fZ3JvdXAsYWdncmVnYXRlOnQuX2FnZ3JlZ2F0ZX0sZSk7cmV0dXJuIHQub3B0aW9ucy5zZXJ2ZXJQYWdpbmd8fChkZWxldGUgci50YWtlLGRlbGV0ZSByLnNraXAsZGVsZXRlIHIucGFnZSxkZWxldGUgci5wYWdlU2l6ZSksdC5vcHRpb25zLnNlcnZlckdyb3VwaW5nP3QucmVhZGVyLm1vZGVsJiZyLmdyb3VwJiYoci5ncm91cD1NKHIuZ3JvdXAsdC5yZWFkZXIubW9kZWwpKTpkZWxldGUgci5ncm91cCx0Lm9wdGlvbnMuc2VydmVyRmlsdGVyaW5nP3QucmVhZGVyLm1vZGVsJiZyLmZpbHRlciYmKHIuZmlsdGVyPU4oci5maWx0ZXIsdC5yZWFkZXIubW9kZWwpKTpkZWxldGUgci5maWx0ZXIsdC5vcHRpb25zLnNlcnZlclNvcnRpbmc/dC5yZWFkZXIubW9kZWwmJnIuc29ydCYmKHIuc29ydD1NKHIuc29ydCx0LnJlYWRlci5tb2RlbCkpOmRlbGV0ZSByLnNvcnQsdC5vcHRpb25zLnNlcnZlckFnZ3JlZ2F0ZXM/dC5yZWFkZXIubW9kZWwmJnIuYWdncmVnYXRlJiYoci5hZ2dyZWdhdGU9TShyLmFnZ3JlZ2F0ZSx0LnJlYWRlci5tb2RlbCkpOmRlbGV0ZSByLmFnZ3JlZ2F0ZSxyfSxfcXVldWVSZXF1ZXN0OmZ1bmN0aW9uKGUscil7dmFyIG49dGhpcztuLl9yZXF1ZXN0SW5Qcm9ncmVzcz9uLl9wZW5kaW5nPXtjYWxsYmFjazpkZShyLG4pLG9wdGlvbnM6ZX06KG4uX3JlcXVlc3RJblByb2dyZXNzPSEwLG4uX3BlbmRpbmc9dCxyKCkpfSxfZGVxdWV1ZVJlcXVlc3Q6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuX3JlcXVlc3RJblByb2dyZXNzPSExLGUuX3BlbmRpbmcmJmUuX3F1ZXVlUmVxdWVzdChlLl9wZW5kaW5nLm9wdGlvbnMsZS5fcGVuZGluZy5jYWxsYmFjayl9LF9oYW5kbGVDdXN0b21FcnJvcnM6ZnVuY3Rpb24oZSl7aWYodGhpcy5yZWFkZXIuZXJyb3JzKXt2YXIgdD10aGlzLnJlYWRlci5lcnJvcnMoZSk7aWYodClyZXR1cm4gdGhpcy50cmlnZ2VyKFBlLHt4aHI6bnVsbCxzdGF0dXM6XCJjdXN0b21lcnJvclwiLGVycm9yVGhyb3duOlwiY3VzdG9tIGVycm9yXCIsZXJyb3JzOnR9KSwhMH1yZXR1cm4hMX0sX3Nob3VsZFdyYXA6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5yZWFkZXIubW9kZWw7cmV0dXJuISghdHx8IWUubGVuZ3RoKSYmIShlWzBdaW5zdGFuY2VvZiB0KX0sX29ic2VydmU6ZnVuY3Rpb24oZSl7dmFyIHQscj10aGlzLG49ci5yZWFkZXIubW9kZWw7cmV0dXJuIHIuX3Nob3VsZERldGFjaE9ic2VydmFibGVQYXJlbnRzPSEwLGUgaW5zdGFuY2VvZiBZZT8oci5fc2hvdWxkRGV0YWNoT2JzZXJ2YWJsZVBhcmVudHM9ITEsci5fc2hvdWxkV3JhcChlKSYmKGUudHlwZT1yLnJlYWRlci5tb2RlbCxlLndyYXBBbGwoZSxlKSkpOih0PXIucGFnZVNpemUoKSYmIXIub3B0aW9ucy5zZXJ2ZXJQYWdpbmc/VTpZZSxlPW5ldyB0KGUsci5yZWFkZXIubW9kZWwpLGUucGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHIucGFyZW50KCl9KSxyLl9pc1NlcnZlckdyb3VwZWQoKSYmRChlLG4pLHIuX2NoYW5nZUhhbmRsZXImJnIuX2RhdGEmJnIuX2RhdGEgaW5zdGFuY2VvZiBZZT9yLl9kYXRhLnVuYmluZChPZSxyLl9jaGFuZ2VIYW5kbGVyKTpyLl9jaGFuZ2VIYW5kbGVyPWRlKHIuX2NoYW5nZSxyKSxlLmJpbmQoT2Usci5fY2hhbmdlSGFuZGxlcil9LF91cGRhdGVUb3RhbEZvckFjdGlvbjpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMsbj1wYXJzZUludChyLl90b3RhbCwxMCk7dihyLl90b3RhbCl8fChuPXBhcnNlSW50KHIuX3ByaXN0aW5lVG90YWwsMTApKSxcImFkZFwiPT09ZT9uKz10Lmxlbmd0aDpcInJlbW92ZVwiPT09ZT9uLT10Lmxlbmd0aDpcIml0ZW1jaGFuZ2VcIj09PWV8fFwic3luY1wiPT09ZXx8ci5vcHRpb25zLnNlcnZlclBhZ2luZz9cInN5bmNcIj09PWUmJihuPXIuX3ByaXN0aW5lVG90YWw9cGFyc2VJbnQoci5fdG90YWwsMTApKTpuPXIuX3ByaXN0aW5lVG90YWwsci5fdG90YWw9bn0sX2NoYW5nZTpmdW5jdGlvbihlKXt2YXIgdCxyLG4saT10aGlzLGE9ZT9lLmFjdGlvbjpcIlwiO2lmKFwicmVtb3ZlXCI9PT1hKWZvcih0PTAscj1lLml0ZW1zLmxlbmd0aDt0PHI7dCsrKWUuaXRlbXNbdF0uaXNOZXcmJmUuaXRlbXNbdF0uaXNOZXcoKXx8aS5fZGVzdHJveWVkLnB1c2goZS5pdGVtc1t0XSk7IWkub3B0aW9ucy5hdXRvU3luY3x8XCJhZGRcIiE9PWEmJlwicmVtb3ZlXCIhPT1hJiZcIml0ZW1jaGFuZ2VcIiE9PWE/KGkuX3VwZGF0ZVRvdGFsRm9yQWN0aW9uKGEsZT9lLml0ZW1zOltdKSxpLl9wcm9jZXNzKGkuX2RhdGEsZSkpOihuPWZ1bmN0aW9uKHQpe1wic3luY1wiPT09dC5hY3Rpb24mJihpLnVuYmluZChcImNoYW5nZVwiLG4pLGkuX3VwZGF0ZVRvdGFsRm9yQWN0aW9uKGEsZS5pdGVtcykpfSxpLmZpcnN0KFwiY2hhbmdlXCIsbiksaS5zeW5jKCkpfSxfY2FsY3VsYXRlQWdncmVnYXRlczpmdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIHI9bmV3IGEoZSksbj10LmFnZ3JlZ2F0ZSxpPXQuZmlsdGVyO3JldHVybiBpJiYocj1yLmZpbHRlcihpKSksci5hZ2dyZWdhdGUobil9LF9wcm9jZXNzOmZ1bmN0aW9uKGUscil7dmFyIG4saT10aGlzLGE9e307aS5vcHRpb25zLnNlcnZlclBhZ2luZyE9PSEwJiYoYS5za2lwPWkuX3NraXAsYS50YWtlPWkuX3Rha2V8fGkuX3BhZ2VTaXplLGEuc2tpcD09PXQmJmkuX3BhZ2UhPT10JiZpLl9wYWdlU2l6ZSE9PXQmJihhLnNraXA9KGkuX3BhZ2UtMSkqaS5fcGFnZVNpemUpKSxpLm9wdGlvbnMuc2VydmVyU29ydGluZyE9PSEwJiYoYS5zb3J0PWkuX3NvcnQpLGkub3B0aW9ucy5zZXJ2ZXJGaWx0ZXJpbmchPT0hMCYmKGEuZmlsdGVyPWkuX2ZpbHRlciksaS5vcHRpb25zLnNlcnZlckdyb3VwaW5nIT09ITAmJihhLmdyb3VwPWkuX2dyb3VwKSxpLm9wdGlvbnMuc2VydmVyQWdncmVnYXRlcyE9PSEwJiYoYS5hZ2dyZWdhdGU9aS5fYWdncmVnYXRlLGkuX2FnZ3JlZ2F0ZVJlc3VsdD1pLl9jYWxjdWxhdGVBZ2dyZWdhdGVzKGUsYSkpLG49aS5fcXVlcnlQcm9jZXNzKGUsYSksaS52aWV3KG4uZGF0YSksbi50b3RhbD09PXR8fGkub3B0aW9ucy5zZXJ2ZXJGaWx0ZXJpbmd8fChpLl90b3RhbD1uLnRvdGFsKSxyPXJ8fHt9LHIuaXRlbXM9ci5pdGVtc3x8aS5fdmlldyxpLnRyaWdnZXIoT2Uscil9LF9xdWVyeVByb2Nlc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYS5wcm9jZXNzKGUsdCl9LF9tZXJnZVN0YXRlOmZ1bmN0aW9uKGUpe3ZhciByPXRoaXM7cmV0dXJuIGUhPT10JiYoci5fcGFnZVNpemU9ZS5wYWdlU2l6ZSxyLl9wYWdlPWUucGFnZSxyLl9zb3J0PWUuc29ydCxyLl9maWx0ZXI9ZS5maWx0ZXIsci5fZ3JvdXA9ZS5ncm91cCxyLl9hZ2dyZWdhdGU9ZS5hZ2dyZWdhdGUsci5fc2tpcD1yLl9jdXJyZW50UmFuZ2VTdGFydD1lLnNraXAsci5fdGFrZT1lLnRha2Usci5fc2tpcD09PXQmJihyLl9za2lwPXIuX2N1cnJlbnRSYW5nZVN0YXJ0PXIuc2tpcCgpLGUuc2tpcD1yLnNraXAoKSksci5fdGFrZT09PXQmJnIuX3BhZ2VTaXplIT09dCYmKHIuX3Rha2U9ci5fcGFnZVNpemUsZS50YWtlPXIuX3Rha2UpLGUuc29ydCYmKHIuX3NvcnQ9ZS5zb3J0PXMoZS5zb3J0KSksZS5maWx0ZXImJihyLl9maWx0ZXI9ZS5maWx0ZXI9dShlLmZpbHRlcikpLGUuZ3JvdXAmJihyLl9ncm91cD1lLmdyb3VwPWcoZS5ncm91cCkpLGUuYWdncmVnYXRlJiYoci5fYWdncmVnYXRlPWUuYWdncmVnYXRlPWMoZS5hZ2dyZWdhdGUpKSksZX0scXVlcnk6ZnVuY3Rpb24ocil7dmFyIG4saSxhPXRoaXMub3B0aW9ucy5zZXJ2ZXJTb3J0aW5nfHx0aGlzLm9wdGlvbnMuc2VydmVyUGFnaW5nfHx0aGlzLm9wdGlvbnMuc2VydmVyRmlsdGVyaW5nfHx0aGlzLm9wdGlvbnMuc2VydmVyR3JvdXBpbmd8fHRoaXMub3B0aW9ucy5zZXJ2ZXJBZ2dyZWdhdGVzO3JldHVybiBhfHwodGhpcy5fZGF0YT09PXR8fDA9PT10aGlzLl9kYXRhLmxlbmd0aCkmJiF0aGlzLl9kZXN0cm95ZWQubGVuZ3RoP3RoaXMucmVhZCh0aGlzLl9tZXJnZVN0YXRlKHIpKTooaT10aGlzLnRyaWdnZXIoVGUse3R5cGU6XCJyZWFkXCJ9KSxpfHwodGhpcy50cmlnZ2VyKEZlKSxuPXRoaXMuX3F1ZXJ5UHJvY2Vzcyh0aGlzLl9kYXRhLHRoaXMuX21lcmdlU3RhdGUocikpLHRoaXMub3B0aW9ucy5zZXJ2ZXJGaWx0ZXJpbmd8fCh0aGlzLl90b3RhbD1uLnRvdGFsIT09dD9uLnRvdGFsOnRoaXMuX2RhdGEubGVuZ3RoKSx0aGlzLl9hZ2dyZWdhdGVSZXN1bHQ9dGhpcy5fY2FsY3VsYXRlQWdncmVnYXRlcyh0aGlzLl9kYXRhLHIpLHRoaXMudmlldyhuLmRhdGEpLHRoaXMudHJpZ2dlcihBZSx7dHlwZTpcInJlYWRcIn0pLHRoaXMudHJpZ2dlcihPZSx7aXRlbXM6bi5kYXRhfSkpLGUuRGVmZXJyZWQoKS5yZXNvbHZlKGkpLnByb21pc2UoKSl9LGZldGNoOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj1mdW5jdGlvbihyKXtyIT09ITAmJnllKGUpJiZlLmNhbGwodCl9O3JldHVybiB0aGlzLl9xdWVyeSgpLnRoZW4ocil9LF9xdWVyeTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiB0LnF1ZXJ5KGxlKHt9LHtwYWdlOnQucGFnZSgpLHBhZ2VTaXplOnQucGFnZVNpemUoKSxzb3J0OnQuc29ydCgpLGZpbHRlcjp0LmZpbHRlcigpLGdyb3VwOnQuZ3JvdXAoKSxhZ2dyZWdhdGU6dC5hZ2dyZWdhdGUoKX0sZSkpfSxuZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj10LnBhZ2UoKSxuPXQudG90YWwoKTtpZihlPWV8fHt9LHImJiEobiYmcisxPnQudG90YWxQYWdlcygpKSlyZXR1cm4gdC5fc2tpcD10Ll9jdXJyZW50UmFuZ2VTdGFydD1yKnQudGFrZSgpLHIrPTEsZS5wYWdlPXIsdC5fcXVlcnkoZSkscn0scHJldjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9dC5wYWdlKCk7aWYoZT1lfHx7fSxyJiYxIT09cilyZXR1cm4gdC5fc2tpcD10Ll9jdXJyZW50UmFuZ2VTdGFydD10Ll9za2lwLXQudGFrZSgpLHItPTEsZS5wYWdlPXIsdC5fcXVlcnkoZSkscn0scGFnZTpmdW5jdGlvbihlKXt2YXIgcixuPXRoaXM7cmV0dXJuIGUhPT10PyhlPUxlLm1heChMZS5taW4oTGUubWF4KGUsMSksbi50b3RhbFBhZ2VzKCkpLDEpLG4uX3F1ZXJ5KHtwYWdlOmV9KSx0KToocj1uLnNraXAoKSxyIT09dD9MZS5yb3VuZCgocnx8MCkvKG4udGFrZSgpfHwxKSkrMTp0KX0scGFnZVNpemU6ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcztyZXR1cm4gZSE9PXQ/KHIuX3F1ZXJ5KHtwYWdlU2l6ZTplLHBhZ2U6MX0pLHQpOnIudGFrZSgpfSxzb3J0OmZ1bmN0aW9uKGUpe3ZhciByPXRoaXM7cmV0dXJuIGUhPT10PyhyLl9xdWVyeSh7c29ydDplfSksdCk6ci5fc29ydH0sZmlsdGVyOmZ1bmN0aW9uKGUpe3ZhciByPXRoaXM7cmV0dXJuIGU9PT10P3IuX2ZpbHRlcjooci50cmlnZ2VyKFwicmVzZXRcIiksci5fcXVlcnkoe2ZpbHRlcjplLHBhZ2U6MX0pLHQpfSxncm91cDpmdW5jdGlvbihlKXt2YXIgcj10aGlzO3JldHVybiBlIT09dD8oci5fcXVlcnkoe2dyb3VwOmV9KSx0KTpyLl9ncm91cH0sdG90YWw6ZnVuY3Rpb24oKXtyZXR1cm4gcGFyc2VJbnQodGhpcy5fdG90YWx8fDAsMTApfSxhZ2dyZWdhdGU6ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcztyZXR1cm4gZSE9PXQ/KHIuX3F1ZXJ5KHthZ2dyZWdhdGU6ZX0pLHQpOnIuX2FnZ3JlZ2F0ZX0sYWdncmVnYXRlczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2FnZ3JlZ2F0ZVJlc3VsdDtyZXR1cm4gZmUoZSkmJihlPXRoaXMuX2VtcHR5QWdncmVnYXRlcyh0aGlzLmFnZ3JlZ2F0ZSgpKSksZX0sX2VtcHR5QWdncmVnYXRlczpmdW5jdGlvbihlKXt2YXIgdCxyLG49e307aWYoIWZlKGUpKWZvcih0PXt9LGNlKGUpfHwoZT1bZV0pLHI9MDtyPGUubGVuZ3RoO3IrKyl0W2Vbcl0uYWdncmVnYXRlXT0wLG5bZVtyXS5maWVsZF09dDtyZXR1cm4gbn0sX3dyYXBJbkVtcHR5R3JvdXA6ZnVuY3Rpb24oZSl7dmFyIHQscixuLGksYT10aGlzLmdyb3VwKCk7Zm9yKG49YS5sZW5ndGgtMSxpPTA7bj49aTtuLS0pcj1hW25dLHQ9e3ZhbHVlOmUuZ2V0KHIuZmllbGQpLGZpZWxkOnIuZmllbGQsaXRlbXM6dD9bdF06W2VdLGhhc1N1Ymdyb3VwczohIXQsYWdncmVnYXRlczp0aGlzLl9lbXB0eUFnZ3JlZ2F0ZXMoci5hZ2dyZWdhdGVzKX07cmV0dXJuIHR9LHRvdGFsUGFnZXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5wYWdlU2l6ZSgpfHxlLnRvdGFsKCk7cmV0dXJuIExlLmNlaWwoKGUudG90YWwoKXx8MCkvdCl9LGluUmFuZ2U6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLG49TGUubWluKGUrdCxyLnRvdGFsKCkpO3JldHVybiFyLm9wdGlvbnMuc2VydmVyUGFnaW5nJiZyLl9kYXRhLmxlbmd0aD4wfHxyLl9maW5kUmFuZ2UoZSxuKS5sZW5ndGg+MH0sbGFzdFJhbmdlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fcmFuZ2VzO3JldHVybiBlW2UubGVuZ3RoLTFdfHx7c3RhcnQ6MCxlbmQ6MCxkYXRhOltdfX0sZmlyc3RJdGVtVWlkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fcmFuZ2VzO3JldHVybiBlLmxlbmd0aCYmZVswXS5kYXRhLmxlbmd0aCYmZVswXS5kYXRhWzBdLnVpZH0sZW5hYmxlUmVxdWVzdHNJblByb2dyZXNzOmZ1bmN0aW9uKCl7dGhpcy5fc2tpcFJlcXVlc3RzSW5Qcm9ncmVzcz0hMX0sX3RpbWVTdGFtcDpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSxyYW5nZTpmdW5jdGlvbihlLHIpe3ZhciBuLGksYSxzLG8sdSxsLGQ7aWYodGhpcy5fY3VycmVudFJlcXVlc3RUaW1lU3RhbXA9dGhpcy5fdGltZVN0YW1wKCksdGhpcy5fc2tpcFJlcXVlc3RzSW5Qcm9ncmVzcz0hMCxlPUxlLm1pbihlfHwwLHRoaXMudG90YWwoKSksbj10aGlzLGk9TGUubWF4KExlLmZsb29yKGUvciksMCkqcixhPUxlLm1pbihpK3Isbi50b3RhbCgpKSxzPW4uX2ZpbmRSYW5nZShlLExlLm1pbihlK3Isbi50b3RhbCgpKSkscy5sZW5ndGgpe24uX3BlbmRpbmc9dCxuLl9za2lwPWU+bi5za2lwKCk/TGUubWluKGEsKG4udG90YWxQYWdlcygpLTEpKm4udGFrZSgpKTppLG4uX2N1cnJlbnRSYW5nZVN0YXJ0PWUsbi5fdGFrZT1yLG89bi5vcHRpb25zLnNlcnZlclBhZ2luZyx1PW4ub3B0aW9ucy5zZXJ2ZXJTb3J0aW5nLGw9bi5vcHRpb25zLnNlcnZlckZpbHRlcmluZyxkPW4ub3B0aW9ucy5zZXJ2ZXJBZ2dyZWdhdGVzO3RyeXtuLm9wdGlvbnMuc2VydmVyUGFnaW5nPSEwLG4uX2lzU2VydmVyR3JvdXBlZCgpfHxuLmdyb3VwKCkmJm4uZ3JvdXAoKS5sZW5ndGh8fChuLm9wdGlvbnMuc2VydmVyU29ydGluZz0hMCksbi5vcHRpb25zLnNlcnZlckZpbHRlcmluZz0hMCxuLm9wdGlvbnMuc2VydmVyUGFnaW5nPSEwLG4ub3B0aW9ucy5zZXJ2ZXJBZ2dyZWdhdGVzPSEwLG8mJihuLl9kZXRhY2hPYnNlcnZhYmxlUGFyZW50cygpLG4uX2RhdGE9cz1uLl9vYnNlcnZlKHMpKSxuLl9wcm9jZXNzKHMpfWZpbmFsbHl7bi5vcHRpb25zLnNlcnZlclBhZ2luZz1vLG4ub3B0aW9ucy5zZXJ2ZXJTb3J0aW5nPXUsbi5vcHRpb25zLnNlcnZlckZpbHRlcmluZz1sLG4ub3B0aW9ucy5zZXJ2ZXJBZ2dyZWdhdGVzPWR9fWVsc2UgciE9PXQmJihuLl9yYW5nZUV4aXN0cyhpLGEpP2k8ZSYmbi5wcmVmZXRjaChhLHIsZnVuY3Rpb24oKXtuLnJhbmdlKGUscil9KTpuLnByZWZldGNoKGkscixmdW5jdGlvbigpe2U+aSYmYTxuLnRvdGFsKCkmJiFuLl9yYW5nZUV4aXN0cyhhLExlLm1pbihhK3Isbi50b3RhbCgpKSk/bi5wcmVmZXRjaChhLHIsZnVuY3Rpb24oKXtuLnJhbmdlKGUscil9KTpuLnJhbmdlKGUscil9KSl9LF9maW5kUmFuZ2U6ZnVuY3Rpb24oZSxyKXt2YXIgbixpLGEsbyx1LGwsZCxoLGYsYyxwLF8sdj10aGlzLG09di5fcmFuZ2VzLHk9W10sUz12Lm9wdGlvbnMsYj1TLnNlcnZlclNvcnRpbmd8fFMuc2VydmVyUGFnaW5nfHxTLnNlcnZlckZpbHRlcmluZ3x8Uy5zZXJ2ZXJHcm91cGluZ3x8Uy5zZXJ2ZXJBZ2dyZWdhdGVzO2ZvcihpPTAscD1tLmxlbmd0aDtpPHA7aSsrKWlmKG49bVtpXSxlPj1uLnN0YXJ0JiZlPD1uLmVuZCl7Zm9yKGM9MCxhPWk7YTxwO2ErKylpZihuPW1bYV0sZj12Ll9mbGF0RGF0YShuLmRhdGEsITApLGYubGVuZ3RoJiZlK2M+PW4uc3RhcnQmJihsPW4uZGF0YSxkPW4uZW5kLGJ8fChfPWcodi5ncm91cCgpfHxbXSkuY29uY2F0KHModi5zb3J0KCl8fFtdKSksaD12Ll9xdWVyeVByb2Nlc3Mobi5kYXRhLHtzb3J0Ol8sZmlsdGVyOnYuZmlsdGVyKCl9KSxmPWw9aC5kYXRhLGgudG90YWwhPT10JiYoZD1oLnRvdGFsKSksbz0wLGUrYz5uLnN0YXJ0JiYobz1lK2Mtbi5zdGFydCksdT1mLmxlbmd0aCxkPnImJih1LT1kLXIpLGMrPXUtbyx5PXYuX21lcmdlR3JvdXBzKHksbCxvLHUpLHI8PW4uZW5kJiZjPT1yLWUpKXJldHVybiB5O2JyZWFrfXJldHVybltdfSxfbWVyZ2VHcm91cHM6ZnVuY3Rpb24oZSx0LHIsbil7aWYodGhpcy5faXNTZXJ2ZXJHcm91cGVkKCkpe3ZhciBpLGE9dC50b0pTT04oKTtyZXR1cm4gZS5sZW5ndGgmJihpPWVbZS5sZW5ndGgtMV0pLHgoaSxhLHIsbiksZS5jb25jYXQoYSl9cmV0dXJuIGUuY29uY2F0KHQuc2xpY2UocixuKSl9LHNraXA6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9za2lwPT09dD9lLl9wYWdlIT09dD8oZS5fcGFnZS0xKSooZS50YWtlKCl8fDEpOnQ6ZS5fc2tpcH0sY3VycmVudFJhbmdlU3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3VycmVudFJhbmdlU3RhcnR8fDB9LHRha2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdGFrZXx8dGhpcy5fcGFnZVNpemV9LF9wcmVmZXRjaFN1Y2Nlc3NIYW5kbGVyOmZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpPXRoaXMsYT1pLl90aW1lU3RhbXAoKTtyZXR1cm4gZnVuY3Rpb24ocyl7dmFyIG8sdSxsLGQ9ITEsaD17c3RhcnQ6ZSxlbmQ6dCxkYXRhOltdLHRpbWVzdGFtcDppLl90aW1lU3RhbXAoKX07aWYoaS5fZGVxdWV1ZVJlcXVlc3QoKSxpLnRyaWdnZXIoQWUse3Jlc3BvbnNlOnMsdHlwZTpcInJlYWRcIn0pLHM9aS5yZWFkZXIucGFyc2UocyksbD1pLl9yZWFkRGF0YShzKSxsLmxlbmd0aCl7Zm9yKG89MCx1PWkuX3Jhbmdlcy5sZW5ndGg7bzx1O28rKylpZihpLl9yYW5nZXNbb10uc3RhcnQ9PT1lKXtkPSEwLGg9aS5fcmFuZ2VzW29dO2JyZWFrfWR8fGkuX3Jhbmdlcy5wdXNoKGgpfWguZGF0YT1pLl9vYnNlcnZlKGwpLGguZW5kPWguc3RhcnQraS5fZmxhdERhdGEoaC5kYXRhLCEwKS5sZW5ndGgsaS5fcmFuZ2VzLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdGFydC10LnN0YXJ0fSksaS5fdG90YWw9aS5yZWFkZXIudG90YWwocyksKG58fGE+PWkuX2N1cnJlbnRSZXF1ZXN0VGltZVN0YW1wfHwhaS5fc2tpcFJlcXVlc3RzSW5Qcm9ncmVzcykmJihyJiZsLmxlbmd0aD9yKCk6aS50cmlnZ2VyKE9lLHt9KSl9fSxwcmVmZXRjaDpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyxpPUxlLm1pbihlK3Qsbi50b3RhbCgpKSxhPXt0YWtlOnQsc2tpcDplLHBhZ2U6ZS90KzEscGFnZVNpemU6dCxzb3J0Om4uX3NvcnQsZmlsdGVyOm4uX2ZpbHRlcixncm91cDpuLl9ncm91cCxhZ2dyZWdhdGU6bi5fYWdncmVnYXRlfTtuLl9yYW5nZUV4aXN0cyhlLGkpP3ImJnIoKTooY2xlYXJUaW1lb3V0KG4uX3RpbWVvdXQpLG4uX3RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe24uX3F1ZXVlUmVxdWVzdChhLGZ1bmN0aW9uKCl7bi50cmlnZ2VyKFRlLHt0eXBlOlwicmVhZFwifSk/bi5fZGVxdWV1ZVJlcXVlc3QoKTpuLnRyYW5zcG9ydC5yZWFkKHtkYXRhOm4uX3BhcmFtcyhhKSxzdWNjZXNzOm4uX3ByZWZldGNoU3VjY2Vzc0hhbmRsZXIoZSxpLHIpLGVycm9yOmZ1bmN0aW9uKCl7dmFyIGU9SmUuY2FsbChhcmd1bWVudHMpO24uZXJyb3IuYXBwbHkobixlKX19KX0pfSwxMDApKX0sX211bHRpcGxlUHJlZmV0Y2g6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMsaT1MZS5taW4oZSt0LG4udG90YWwoKSksYT17dGFrZTp0LHNraXA6ZSxwYWdlOmUvdCsxLHBhZ2VTaXplOnQsc29ydDpuLl9zb3J0LGZpbHRlcjpuLl9maWx0ZXIsZ3JvdXA6bi5fZ3JvdXAsYWdncmVnYXRlOm4uX2FnZ3JlZ2F0ZX07bi5fcmFuZ2VFeGlzdHMoZSxpKT9yJiZyKCk6bi50cmlnZ2VyKFRlLHt0eXBlOlwicmVhZFwifSl8fG4udHJhbnNwb3J0LnJlYWQoe2RhdGE6bi5fcGFyYW1zKGEpLHN1Y2Nlc3M6bi5fcHJlZmV0Y2hTdWNjZXNzSGFuZGxlcihlLGksciwhMCl9KX0sX3JhbmdlRXhpc3RzOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpPXRoaXMsYT1pLl9yYW5nZXM7Zm9yKHI9MCxuPWEubGVuZ3RoO3I8bjtyKyspaWYoYVtyXS5zdGFydDw9ZSYmYVtyXS5lbmQ+PXQpcmV0dXJuITA7cmV0dXJuITF9LF9yZW1vdmVNb2RlbEZyb21SYW5nZXM6ZnVuY3Rpb24oZSl7dmFyIHQscixuLGksYTtmb3IoaT0wLGE9dGhpcy5fcmFuZ2VzLmxlbmd0aDtpPGEmJihuPXRoaXMuX3Jhbmdlc1tpXSx0aGlzLl9lYWNoSXRlbShuLmRhdGEsZnVuY3Rpb24obil7dD1QKG4sZSksdCYmKHI9ITApfSksIXIpO2krKyk7fSxfdXBkYXRlUmFuZ2VzTGVuZ3RoOmZ1bmN0aW9uKCl7dmFyIGUsdCxyLG4saT0wO2ZvcihyPTAsbj10aGlzLl9yYW5nZXMubGVuZ3RoO3I8bjtyKyspZT10aGlzLl9yYW5nZXNbcl0sZS5zdGFydD1lLnN0YXJ0LWksdD10aGlzLl9mbGF0RGF0YShlLmRhdGEsITApLmxlbmd0aCxpPWUuZW5kLXQsZS5lbmQ9ZS5zdGFydCt0fX0pLGllPXt9LGllLmNyZWF0ZT1mdW5jdGlvbih0LHIsbil7dmFyIGksYT10LnRyYW5zcG9ydD9lLmV4dGVuZCh7fSx0LnRyYW5zcG9ydCk6bnVsbDtyZXR1cm4gYT8oYS5yZWFkPXR5cGVvZiBhLnJlYWQ9PT13ZT97dXJsOmEucmVhZH06YS5yZWFkLFwianNkb1wiPT09dC50eXBlJiYoYS5kYXRhU291cmNlPW4pLHQudHlwZSYmKG1lLmRhdGEudHJhbnNwb3J0cz1tZS5kYXRhLnRyYW5zcG9ydHN8fHt9LG1lLmRhdGEuc2NoZW1hcz1tZS5kYXRhLnNjaGVtYXN8fHt9LG1lLmRhdGEudHJhbnNwb3J0c1t0LnR5cGVdP2hlKG1lLmRhdGEudHJhbnNwb3J0c1t0LnR5cGVdKT9hPWxlKCEwLHt9LG1lLmRhdGEudHJhbnNwb3J0c1t0LnR5cGVdLGEpOmk9bmV3IG1lLmRhdGEudHJhbnNwb3J0c1t0LnR5cGVdKGxlKGEse2RhdGE6cn0pKTptZS5sb2dUb0NvbnNvbGUoXCJVbmtub3duIERhdGFTb3VyY2UgdHJhbnNwb3J0IHR5cGUgJ1wiK3QudHlwZStcIicuXFxuVmVyaWZ5IHRoYXQgcmVnaXN0cmF0aW9uIHNjcmlwdHMgZm9yIHRoaXMgdHlwZSBhcmUgaW5jbHVkZWQgYWZ0ZXIgS2VuZG8gVUkgb24gdGhlIHBhZ2UuXCIsXCJ3YXJuXCIpLHQuc2NoZW1hPWxlKCEwLHt9LG1lLmRhdGEuc2NoZW1hc1t0LnR5cGVdLHQuc2NoZW1hKSksaXx8KGk9eWUoYS5yZWFkKT9hOm5ldyBlZShhKSkpOmk9bmV3IFooe2RhdGE6dC5kYXRhfHxbXX0pLGl9LG5lLmNyZWF0ZT1mdW5jdGlvbihlKXsoY2UoZSl8fGUgaW5zdGFuY2VvZiBZZSkmJihlPXtkYXRhOmV9KTt2YXIgcixuLGksYT1lfHx7fSxzPWEuZGF0YSxvPWEuZmllbGRzLHU9YS50YWJsZSxsPWEuc2VsZWN0LGQ9e307aWYoc3x8IW98fGEudHJhbnNwb3J0fHwodT9zPUwodSxvKTpsJiYocz1qKGwsbyksYS5ncm91cD09PXQmJnNbMF0mJnNbMF0ub3B0Z3JvdXAhPT10JiYoYS5ncm91cD1cIm9wdGdyb3VwXCIpKSksbWUuZGF0YS5Nb2RlbCYmbyYmKCFhLnNjaGVtYXx8IWEuc2NoZW1hLm1vZGVsKSl7Zm9yKHI9MCxuPW8ubGVuZ3RoO3I8bjtyKyspaT1vW3JdLGkudHlwZSYmKGRbaS5maWVsZF09aSk7ZmUoZCl8fChhLnNjaGVtYT1sZSghMCxhLnNjaGVtYSx7bW9kZWw6e2ZpZWxkczpkfX0pKX1yZXR1cm4gYS5kYXRhPXMsbD1udWxsLGEuc2VsZWN0PW51bGwsdT1udWxsLGEudGFibGU9bnVsbCxhIGluc3RhbmNlb2YgbmU/YTpuZXcgbmUoYSl9LGFlPVcuZGVmaW5lKHtpZEZpZWxkOlwiaWRcIixpbml0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj10Lmhhc0NoaWxkcmVufHxlJiZlLmhhc0NoaWxkcmVuLG49XCJpdGVtc1wiLGk9e307bWUuZGF0YS5Nb2RlbC5mbi5pbml0LmNhbGwodCxlKSx0eXBlb2YgdC5jaGlsZHJlbj09PXdlJiYobj10LmNoaWxkcmVuKSxpPXtzY2hlbWE6e2RhdGE6bixtb2RlbDp7aGFzQ2hpbGRyZW46cixpZDp0LmlkRmllbGQsZmllbGRzOnQuZmllbGRzfX19LHR5cGVvZiB0LmNoaWxkcmVuIT09d2UmJmxlKGksdC5jaGlsZHJlbiksaS5kYXRhPWUscnx8KHI9aS5zY2hlbWEuZGF0YSksdHlwZW9mIHI9PT13ZSYmKHI9bWUuZ2V0dGVyKHIpKSx5ZShyKSYmKHQuaGFzQ2hpbGRyZW49ISFyLmNhbGwodCx0KSksdC5fY2hpbGRyZW5PcHRpb25zPWksdC5oYXNDaGlsZHJlbiYmdC5faW5pdENoaWxkcmVuKCksdC5fbG9hZGVkPSEoIWV8fCFlLl9sb2FkZWQpfSxfaW5pdENoaWxkcmVuOmZ1bmN0aW9uKCl7dmFyIGUsdCxyLG49dGhpcztuLmNoaWxkcmVuIGluc3RhbmNlb2Ygc2V8fChlPW4uY2hpbGRyZW49bmV3IHNlKG4uX2NoaWxkcmVuT3B0aW9ucyksdD1lLnRyYW5zcG9ydCxyPXQucGFyYW1ldGVyTWFwLHQucGFyYW1ldGVyTWFwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbbi5pZEZpZWxkfHxcImlkXCJdPW4uaWQsciYmKGU9cihlLHQpKSxlfSxlLnBhcmVudD1mdW5jdGlvbigpe3JldHVybiBufSxlLmJpbmQoT2UsZnVuY3Rpb24oZSl7ZS5ub2RlPWUubm9kZXx8bixuLnRyaWdnZXIoT2UsZSl9KSxlLmJpbmQoUGUsZnVuY3Rpb24oZSl7dmFyIHQ9bi5wYXJlbnQoKTt0JiYoZS5ub2RlPWUubm9kZXx8bix0LnRyaWdnZXIoUGUsZSkpfSksbi5fdXBkYXRlQ2hpbGRyZW5GaWVsZCgpKX0sYXBwZW5kOmZ1bmN0aW9uKGUpe3RoaXMuX2luaXRDaGlsZHJlbigpLHRoaXMubG9hZGVkKCEwKSx0aGlzLmNoaWxkcmVuLmFkZChlKX0saGFzQ2hpbGRyZW46ITEsbGV2ZWw6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5wYXJlbnROb2RlKCksdD0wO2UmJmUucGFyZW50Tm9kZTspdCsrLGU9ZS5wYXJlbnROb2RlP2UucGFyZW50Tm9kZSgpOm51bGw7cmV0dXJuIHR9LF91cGRhdGVDaGlsZHJlbkZpZWxkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2hpbGRyZW5PcHRpb25zLnNjaGVtYS5kYXRhO3RoaXNbZXx8XCJpdGVtc1wiXT10aGlzLmNoaWxkcmVuLmRhdGEoKX0sX2NoaWxkcmVuTG9hZGVkOmZ1bmN0aW9uKCl7dGhpcy5fbG9hZGVkPSEwLHRoaXMuX3VwZGF0ZUNoaWxkcmVuRmllbGQoKX0sbG9hZDpmdW5jdGlvbigpe3ZhciByLG4saT17fSxhPVwiX3F1ZXJ5XCI7cmV0dXJuIHRoaXMuaGFzQ2hpbGRyZW4/KHRoaXMuX2luaXRDaGlsZHJlbigpLHI9dGhpcy5jaGlsZHJlbixpW3RoaXMuaWRGaWVsZHx8XCJpZFwiXT10aGlzLmlkLHRoaXMuX2xvYWRlZHx8KHIuX2RhdGE9dCxhPVwicmVhZFwiKSxyLm9uZShPZSxkZSh0aGlzLl9jaGlsZHJlbkxvYWRlZCx0aGlzKSksbj1yW2FdKGkpKTp0aGlzLmxvYWRlZCghMCksbnx8ZS5EZWZlcnJlZCgpLnJlc29sdmUoKS5wcm9taXNlKCl9LHBhcmVudE5vZGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBhcmVudCgpO3JldHVybiBlLnBhcmVudCgpfSxsb2FkZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10P3RoaXMuX2xvYWRlZDoodGhpcy5fbG9hZGVkPWUsdCl9LHNob3VsZFNlcmlhbGl6ZTpmdW5jdGlvbihlKXtyZXR1cm4gVy5mbi5zaG91bGRTZXJpYWxpemUuY2FsbCh0aGlzLGUpJiZcImNoaWxkcmVuXCIhPT1lJiZcIl9sb2FkZWRcIiE9PWUmJlwiaGFzQ2hpbGRyZW5cIiE9PWUmJlwiX2NoaWxkcmVuT3B0aW9uc1wiIT09ZX19KSxzZT1uZS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9YWUuZGVmaW5lKHtjaGlsZHJlbjplfSk7bmUuZm4uaW5pdC5jYWxsKHRoaXMsbGUoITAse30se3NjaGVtYTp7bW9kZWxCYXNlOnQsbW9kZWw6dH19LGUpKSx0aGlzLl9hdHRhY2hCdWJibGVIYW5kbGVycygpfSxfYXR0YWNoQnViYmxlSGFuZGxlcnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuX2RhdGEuYmluZChQZSxmdW5jdGlvbih0KXtlLnRyaWdnZXIoUGUsdCl9KX0scmVtb3ZlOmZ1bmN0aW9uKGUpe3ZhciB0LHI9ZS5wYXJlbnROb2RlKCksbj10aGlzO3JldHVybiByJiZyLl9pbml0Q2hpbGRyZW4mJihuPXIuY2hpbGRyZW4pLHQ9bmUuZm4ucmVtb3ZlLmNhbGwobixlKSxyJiYhbi5kYXRhKCkubGVuZ3RoJiYoci5oYXNDaGlsZHJlbj0hMSksdH0sc3VjY2VzczpHKFwic3VjY2Vzc1wiKSxkYXRhOkcoXCJkYXRhXCIpLGluc2VydDpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMucGFyZW50KCk7cmV0dXJuIHImJnIuX2luaXRDaGlsZHJlbiYmKHIuaGFzQ2hpbGRyZW49ITAsci5faW5pdENoaWxkcmVuKCkpLG5lLmZuLmluc2VydC5jYWxsKHRoaXMsZSx0KX0sX2ZpbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGksYSxzPXRoaXMuX2RhdGE7aWYocyl7aWYoaT1uZS5mbltlXS5jYWxsKHRoaXMsdCkpcmV0dXJuIGk7Zm9yKHM9dGhpcy5fZmxhdERhdGEodGhpcy5fZGF0YSkscj0wLG49cy5sZW5ndGg7cjxuO3IrKylpZihhPXNbcl0uY2hpbGRyZW4sYSBpbnN0YW5jZW9mIHNlJiYoaT1hW2VdKHQpKSlyZXR1cm4gaX19LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fZmluZChcImdldFwiLGUpfSxnZXRCeVVpZDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fZmluZChcImdldEJ5VWlkXCIsZSl9fSksc2UuY3JlYXRlPWZ1bmN0aW9uKGUpe2U9ZSYmZS5wdXNoP3tkYXRhOmV9OmU7dmFyIHQ9ZXx8e30scj10LmRhdGEsbj10LmZpZWxkcyxpPXQubGlzdDtyZXR1cm4gciYmci5fZGF0YVNvdXJjZT9yLl9kYXRhU291cmNlOihyfHwhbnx8dC50cmFuc3BvcnR8fGkmJihyPUUoaSxuKSksdC5kYXRhPXIsdCBpbnN0YW5jZW9mIHNlP3Q6bmV3IHNlKHQpKX0sb2U9bWUuT2JzZXJ2YWJsZS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0LHIpe21lLk9ic2VydmFibGUuZm4uaW5pdC5jYWxsKHRoaXMpLHRoaXMuX3ByZWZldGNoaW5nPSExLHRoaXMuZGF0YVNvdXJjZT1lLHRoaXMucHJlZmV0Y2g9IXI7dmFyIG49dGhpcztlLmJpbmQoXCJjaGFuZ2VcIixmdW5jdGlvbigpe24uX2NoYW5nZSgpfSksZS5iaW5kKFwicmVzZXRcIixmdW5jdGlvbigpe24uX3Jlc2V0KCl9KSx0aGlzLl9zeW5jV2l0aERhdGFTb3VyY2UoKSx0aGlzLnNldFZpZXdTaXplKHQpfSxzZXRWaWV3U2l6ZTpmdW5jdGlvbihlKXt0aGlzLnZpZXdTaXplPWUsdGhpcy5fcmVjYWxjdWxhdGUoKX0sYXQ6ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5wYWdlU2l6ZSxuPSEwO3JldHVybiBlPj10aGlzLnRvdGFsKCk/KHRoaXMudHJpZ2dlcihcImVuZHJlYWNoZWRcIix7aW5kZXg6ZX0pLG51bGwpOnRoaXMudXNlUmFuZ2VzP3RoaXMudXNlUmFuZ2VzPygoZTx0aGlzLmRhdGFPZmZzZXR8fGU+PXRoaXMuc2tpcCtyKSYmKG49dGhpcy5yYW5nZShNYXRoLmZsb29yKGUvcikqcikpLGU9PT10aGlzLnByZWZldGNoVGhyZXNob2xkJiZ0aGlzLl9wcmVmZXRjaCgpLGU9PT10aGlzLm1pZFBhZ2VUaHJlc2hvbGQ/dGhpcy5yYW5nZSh0aGlzLm5leHRNaWRSYW5nZSwhMCk6ZT09PXRoaXMubmV4dFBhZ2VUaHJlc2hvbGQ/dGhpcy5yYW5nZSh0aGlzLm5leHRGdWxsUmFuZ2UpOmU9PT10aGlzLnB1bGxCYWNrVGhyZXNob2xkJiZ0aGlzLnJhbmdlKHRoaXMub2Zmc2V0PT09dGhpcy5za2lwP3RoaXMucHJldmlvdXNNaWRSYW5nZTp0aGlzLnByZXZpb3VzRnVsbFJhbmdlKSxuP3RoaXMuZGF0YVNvdXJjZS5hdChlLXRoaXMuZGF0YU9mZnNldCk6KHRoaXMudHJpZ2dlcihcImVuZHJlYWNoZWRcIix7aW5kZXg6ZX0pLG51bGwpKTp0OnRoaXMuZGF0YVNvdXJjZS52aWV3KClbZV19LGluZGV4T2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5kYXRhKCkuaW5kZXhPZihlKSt0aGlzLmRhdGFPZmZzZXR9LHRvdGFsOmZ1bmN0aW9uKCl7cmV0dXJuIHBhcnNlSW50KHRoaXMuZGF0YVNvdXJjZS50b3RhbCgpLDEwKX0sbmV4dDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLnBhZ2VTaXplLHI9ZS5za2lwLWUudmlld1NpemUrdCxuPUxlLm1heChMZS5mbG9vcihyL3QpLDApKnQ7dGhpcy5vZmZzZXQ9cix0aGlzLmRhdGFTb3VyY2UucHJlZmV0Y2gobix0LGZ1bmN0aW9uKCl7ZS5fZ29Ub1JhbmdlKHIsITApfSl9LHJhbmdlOmZ1bmN0aW9uKGUsdCl7aWYodGhpcy5vZmZzZXQ9PT1lKXJldHVybiEwO3ZhciByPXRoaXMsbj10aGlzLnBhZ2VTaXplLGk9TGUubWF4KExlLmZsb29yKGUvbiksMCkqbixhPXRoaXMuZGF0YVNvdXJjZTtyZXR1cm4gdCYmKGkrPW4pLGEuaW5SYW5nZShlLG4pPyh0aGlzLm9mZnNldD1lLHRoaXMuX3JlY2FsY3VsYXRlKCksdGhpcy5fZ29Ub1JhbmdlKGUpLCEwKTohdGhpcy5wcmVmZXRjaHx8KGEucHJlZmV0Y2goaSxuLGZ1bmN0aW9uKCl7ci5vZmZzZXQ9ZSxyLl9yZWNhbGN1bGF0ZSgpLHIuX2dvVG9SYW5nZShlLCEwKX0pLCExKX0sc3luY0RhdGFTb3VyY2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9mZnNldDt0aGlzLm9mZnNldD1udWxsLHRoaXMucmFuZ2UoZSl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLnVuYmluZCgpfSxfcHJlZmV0Y2g6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wYWdlU2l6ZSxyPXRoaXMuc2tpcCt0LG49dGhpcy5kYXRhU291cmNlO24uaW5SYW5nZShyLHQpfHx0aGlzLl9wcmVmZXRjaGluZ3x8IXRoaXMucHJlZmV0Y2h8fCh0aGlzLl9wcmVmZXRjaGluZz0hMCx0aGlzLnRyaWdnZXIoXCJwcmVmZXRjaGluZ1wiLHtza2lwOnIsdGFrZTp0fSksbi5wcmVmZXRjaChyLHQsZnVuY3Rpb24oKXtlLl9wcmVmZXRjaGluZz0hMSxlLnRyaWdnZXIoXCJwcmVmZXRjaGVkXCIse3NraXA6cix0YWtlOnR9KX0pKX0sX2dvVG9SYW5nZTpmdW5jdGlvbihlLHQpe3RoaXMub2Zmc2V0PT09ZSYmKHRoaXMuZGF0YU9mZnNldD1lLHRoaXMuX2V4cGFuZGluZz10LHRoaXMuZGF0YVNvdXJjZS5yYW5nZShlLHRoaXMucGFnZVNpemUpLHRoaXMuZGF0YVNvdXJjZS5lbmFibGVSZXF1ZXN0c0luUHJvZ3Jlc3MoKSl9LF9yZXNldDpmdW5jdGlvbigpe3RoaXMuX3N5bmNQZW5kaW5nPSEwfSxfY2hhbmdlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5kYXRhU291cmNlO3RoaXMubGVuZ3RoPXRoaXMudXNlUmFuZ2VzP2UubGFzdFJhbmdlKCkuZW5kOmUudmlldygpLmxlbmd0aCx0aGlzLl9zeW5jUGVuZGluZyYmKHRoaXMuX3N5bmNXaXRoRGF0YVNvdXJjZSgpLHRoaXMuX3JlY2FsY3VsYXRlKCksdGhpcy5fc3luY1BlbmRpbmc9ITEsdGhpcy50cmlnZ2VyKFwicmVzZXRcIix7b2Zmc2V0OnRoaXMub2Zmc2V0fSkpLHRoaXMudHJpZ2dlcihcInJlc2l6ZVwiKSx0aGlzLl9leHBhbmRpbmcmJnRoaXMudHJpZ2dlcihcImV4cGFuZFwiKSxkZWxldGUgdGhpcy5fZXhwYW5kaW5nfSxfc3luY1dpdGhEYXRhU291cmNlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5kYXRhU291cmNlO3RoaXMuX2ZpcnN0SXRlbVVpZD1lLmZpcnN0SXRlbVVpZCgpLHRoaXMuZGF0YU9mZnNldD10aGlzLm9mZnNldD1lLnNraXAoKXx8MCx0aGlzLnBhZ2VTaXplPWUucGFnZVNpemUoKSx0aGlzLnVzZVJhbmdlcz1lLm9wdGlvbnMuc2VydmVyUGFnaW5nfSxfcmVjYWxjdWxhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBhZ2VTaXplLHQ9dGhpcy5vZmZzZXQscj10aGlzLnZpZXdTaXplLG49TWF0aC5jZWlsKHQvZSkqZTt0aGlzLnNraXA9bix0aGlzLm1pZFBhZ2VUaHJlc2hvbGQ9bitlLTEsdGhpcy5uZXh0UGFnZVRocmVzaG9sZD1uK3ItMSx0aGlzLnByZWZldGNoVGhyZXNob2xkPW4rTWF0aC5mbG9vcihlLzMqMiksdGhpcy5wdWxsQmFja1RocmVzaG9sZD10aGlzLm9mZnNldC0xLHRoaXMubmV4dE1pZFJhbmdlPW4rZS1yLHRoaXMubmV4dEZ1bGxSYW5nZT1uLHRoaXMucHJldmlvdXNNaWRSYW5nZT10LXIsdGhpcy5wcmV2aW91c0Z1bGxSYW5nZT1uLWV9fSksdWU9bWUuT2JzZXJ2YWJsZS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzO21lLk9ic2VydmFibGUuZm4uaW5pdC5jYWxsKHIpLHRoaXMuZGF0YVNvdXJjZT1lLHRoaXMuYmF0Y2hTaXplPXQsdGhpcy5fdG90YWw9MCx0aGlzLmJ1ZmZlcj1uZXcgb2UoZSwzKnQpLHRoaXMuYnVmZmVyLmJpbmQoe2VuZHJlYWNoZWQ6ZnVuY3Rpb24oZSl7ci50cmlnZ2VyKFwiZW5kcmVhY2hlZFwiLHtpbmRleDplLmluZGV4fSl9LHByZWZldGNoaW5nOmZ1bmN0aW9uKGUpe3IudHJpZ2dlcihcInByZWZldGNoaW5nXCIse3NraXA6ZS5za2lwLHRha2U6ZS50YWtlfSl9LHByZWZldGNoZWQ6ZnVuY3Rpb24oZSl7ci50cmlnZ2VyKFwicHJlZmV0Y2hlZFwiLHtza2lwOmUuc2tpcCx0YWtlOmUudGFrZX0pfSxyZXNldDpmdW5jdGlvbigpe3IuX3RvdGFsPTAsci50cmlnZ2VyKFwicmVzZXRcIil9LHJlc2l6ZTpmdW5jdGlvbigpe3IuX3RvdGFsPU1hdGguY2VpbCh0aGlzLmxlbmd0aC9yLmJhdGNoU2l6ZSksci50cmlnZ2VyKFwicmVzaXplXCIse3RvdGFsOnIudG90YWwoKSxvZmZzZXQ6dGhpcy5vZmZzZXR9KX19KX0sc3luY0RhdGFTb3VyY2U6ZnVuY3Rpb24oKXt0aGlzLmJ1ZmZlci5zeW5jRGF0YVNvdXJjZSgpfSxhdDpmdW5jdGlvbihlKXt2YXIgdCxyLG49dGhpcy5idWZmZXIsaT1lKnRoaXMuYmF0Y2hTaXplLGE9dGhpcy5iYXRjaFNpemUscz1bXTtmb3Iobi5vZmZzZXQ+aSYmbi5hdChuLm9mZnNldC0xKSxyPTA7cjxhJiYodD1uLmF0KGkrciksbnVsbCE9PXQpO3IrKylzLnB1c2godCk7cmV0dXJuIHN9LHRvdGFsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RvdGFsfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5idWZmZXIuZGVzdHJveSgpLHRoaXMudW5iaW5kKCl9fSksbGUoITAsbWUuZGF0YSx7cmVhZGVyczp7anNvbjpyZX0sUXVlcnk6YSxEYXRhU291cmNlOm5lLEhpZXJhcmNoaWNhbERhdGFTb3VyY2U6c2UsTm9kZTphZSxPYnNlcnZhYmxlT2JqZWN0OkgsT2JzZXJ2YWJsZUFycmF5OlllLExhenlPYnNlcnZhYmxlQXJyYXk6VSxMb2NhbFRyYW5zcG9ydDpaLFJlbW90ZVRyYW5zcG9ydDplZSxDYWNoZTp0ZSxEYXRhUmVhZGVyOnJlLE1vZGVsOlcsQnVmZmVyOm9lLEJhdGNoQnVmZmVyOnVlfSl9KHdpbmRvdy5rZW5kby5qUXVlcnkpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbihlLHQscil7KHJ8fHQpKCl9KTs7IWZ1bmN0aW9uKGUsZGVmaW5lKXtkZWZpbmUoXCJrZW5kby51c2VyZXZlbnRzLm1pblwiLFtcImtlbmRvLmNvcmUubWluXCJdLGUpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSx0KXt2YXIgbj1lLngubG9jYXRpb24saT1lLnkubG9jYXRpb24sbz10LngubG9jYXRpb24scj10LnkubG9jYXRpb24scz1uLW8sYT1pLXI7cmV0dXJue2NlbnRlcjp7eDoobitvKS8yLHk6KGkrcikvMn0sZGlzdGFuY2U6TWF0aC5zcXJ0KHMqcythKmEpfX1mdW5jdGlvbiBpKGUpe3ZhciB0LG4saSxvPVtdLHI9ZS5vcmlnaW5hbEV2ZW50LGE9ZS5jdXJyZW50VGFyZ2V0LGM9MDtpZihlLmFwaSlvLnB1c2goe2lkOjIsZXZlbnQ6ZSx0YXJnZXQ6ZS50YXJnZXQsY3VycmVudFRhcmdldDplLnRhcmdldCxsb2NhdGlvbjplLHR5cGU6XCJhcGlcIn0pO2Vsc2UgaWYoZS50eXBlLm1hdGNoKC90b3VjaC8pKWZvcihuPXI/ci5jaGFuZ2VkVG91Y2hlczpbXSx0PW4ubGVuZ3RoO2M8dDtjKyspaT1uW2NdLG8ucHVzaCh7bG9jYXRpb246aSxldmVudDplLHRhcmdldDppLnRhcmdldCxjdXJyZW50VGFyZ2V0OmEsaWQ6aS5pZGVudGlmaWVyLHR5cGU6XCJ0b3VjaFwifSk7ZWxzZSBvLnB1c2gocy5wb2ludGVyc3x8cy5tc1BvaW50ZXJzP3tsb2NhdGlvbjpyLGV2ZW50OmUsdGFyZ2V0OmUudGFyZ2V0LGN1cnJlbnRUYXJnZXQ6YSxpZDpyLnBvaW50ZXJJZCx0eXBlOlwicG9pbnRlclwifTp7aWQ6MSxldmVudDplLHRhcmdldDplLnRhcmdldCxjdXJyZW50VGFyZ2V0OmEsbG9jYXRpb246ZSx0eXBlOlwibW91c2VcIn0pO3JldHVybiBvfWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciB0PXIuZXZlbnRNYXAudXAuc3BsaXQoXCIgXCIpLG49MCxpPXQubGVuZ3RoO248aTtuKyspZSh0W25dKX12YXIgcj13aW5kb3cua2VuZG8scz1yLnN1cHBvcnQsYT1yLkNsYXNzLGM9ci5PYnNlcnZhYmxlLHU9ZS5ub3csaD1lLmV4dGVuZCxsPXMubW9iaWxlT1MscD1sJiZsLmFuZHJvaWQsZD04MDAsZj1zLmJyb3dzZXIubXNpZT81OjAsdj1cInByZXNzXCIsZz1cImhvbGRcIixtPVwic2VsZWN0XCIsXz1cInN0YXJ0XCIsVD1cIm1vdmVcIix5PVwiZW5kXCIseD1cImNhbmNlbFwiLE09XCJ0YXBcIix3PVwicmVsZWFzZVwiLEU9XCJnZXN0dXJlc3RhcnRcIixrPVwiZ2VzdHVyZWNoYW5nZVwiLEQ9XCJnZXN0dXJlZW5kXCIsQz1cImdlc3R1cmV0YXBcIixiPXthcGk6MCx0b3VjaDowLG1vdXNlOjkscG9pbnRlcjo5fSxBPSFzLnRvdWNofHxzLm1vdXNlQW5kVG91Y2hQcmVzZW50LEk9YS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO24uYXhpcz1lLG4uX3VwZGF0ZUxvY2F0aW9uRGF0YSh0KSxuLnN0YXJ0TG9jYXRpb249bi5sb2NhdGlvbixuLnZlbG9jaXR5PW4uZGVsdGE9MCxuLnRpbWVTdGFtcD11KCl9LG1vdmU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPWVbXCJwYWdlXCIrdC5heGlzXSxpPXUoKSxvPWktdC50aW1lU3RhbXB8fDE7IW4mJnB8fCh0LmRlbHRhPW4tdC5sb2NhdGlvbix0Ll91cGRhdGVMb2NhdGlvbkRhdGEoZSksdC5pbml0aWFsRGVsdGE9bi10LnN0YXJ0TG9jYXRpb24sdC52ZWxvY2l0eT10LmRlbHRhL28sdC50aW1lU3RhbXA9aSl9LF91cGRhdGVMb2NhdGlvbkRhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXQuYXhpczt0LmxvY2F0aW9uPWVbXCJwYWdlXCIrbl0sdC5jbGllbnQ9ZVtcImNsaWVudFwiK25dLHQuc2NyZWVuPWVbXCJzY3JlZW5cIituXX19KSxTPWEuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCxuKXtoKHRoaXMse3g6bmV3IEkoXCJYXCIsbi5sb2NhdGlvbikseTpuZXcgSShcIllcIixuLmxvY2F0aW9uKSx0eXBlOm4udHlwZSx1c2VDbGlja0FzVGFwOmUudXNlQ2xpY2tBc1RhcCx0aHJlc2hvbGQ6ZS50aHJlc2hvbGR8fGJbbi50eXBlXSx1c2VyRXZlbnRzOmUsdGFyZ2V0OnQsY3VycmVudFRhcmdldDpuLmN1cnJlbnRUYXJnZXQsaW5pdGlhbFRvdWNoOm4udGFyZ2V0LGlkOm4uaWQscHJlc3NFdmVudDpuLF9tb3ZlZDohMSxfZmluaXNoZWQ6ITF9KX0scHJlc3M6ZnVuY3Rpb24oKXt0aGlzLl9ob2xkVGltZW91dD1zZXRUaW1lb3V0KGUucHJveHkodGhpcyxcIl9ob2xkXCIpLHRoaXMudXNlckV2ZW50cy5taW5Ib2xkKSx0aGlzLl90cmlnZ2VyKHYsdGhpcy5wcmVzc0V2ZW50KX0sX2hvbGQ6ZnVuY3Rpb24oKXt0aGlzLl90cmlnZ2VyKGcsdGhpcy5wcmVzc0V2ZW50KX0sbW92ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKCF0Ll9maW5pc2hlZCl7aWYodC54Lm1vdmUoZS5sb2NhdGlvbiksdC55Lm1vdmUoZS5sb2NhdGlvbiksIXQuX21vdmVkKXtpZih0Ll93aXRoaW5JZ25vcmVUaHJlc2hvbGQoKSlyZXR1cm47aWYoUC5jdXJyZW50JiZQLmN1cnJlbnQhPT10LnVzZXJFdmVudHMpcmV0dXJuIHQuZGlzcG9zZSgpO3QuX3N0YXJ0KGUpfXQuX2ZpbmlzaGVkfHx0Ll90cmlnZ2VyKFQsZSl9fSxlbmQ6ZnVuY3Rpb24oZSl7dGhpcy5lbmRUaW1lPXUoKSx0aGlzLl9maW5pc2hlZHx8KHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXMuX3RyaWdnZXIodyxlKSx0aGlzLl9tb3ZlZD90aGlzLl90cmlnZ2VyKHksZSk6dGhpcy51c2VDbGlja0FzVGFwfHx0aGlzLl90cmlnZ2VyKE0sZSksY2xlYXJUaW1lb3V0KHRoaXMuX2hvbGRUaW1lb3V0KSx0aGlzLmRpc3Bvc2UoKSl9LGRpc3Bvc2U6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnVzZXJFdmVudHMsbj10LnRvdWNoZXM7dGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5wcmVzc0V2ZW50PW51bGwsY2xlYXJUaW1lb3V0KHRoaXMuX2hvbGRUaW1lb3V0KSxuLnNwbGljZShlLmluQXJyYXkodGhpcyxuKSwxKX0sc2tpcDpmdW5jdGlvbigpe3RoaXMuZGlzcG9zZSgpfSxjYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLmRpc3Bvc2UoKX0saXNNb3ZlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3ZlZH0sX3N0YXJ0OmZ1bmN0aW9uKGUpe2NsZWFyVGltZW91dCh0aGlzLl9ob2xkVGltZW91dCksdGhpcy5zdGFydFRpbWU9dSgpLHRoaXMuX21vdmVkPSEwLHRoaXMuX3RyaWdnZXIoXyxlKX0sX3RyaWdnZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLGk9dC5ldmVudCxvPXt0b3VjaDpuLHg6bi54LHk6bi55LHRhcmdldDpuLnRhcmdldCxldmVudDppfTtuLnVzZXJFdmVudHMubm90aWZ5KGUsbykmJmkucHJldmVudERlZmF1bHQoKX0sX3dpdGhpbklnbm9yZVRocmVzaG9sZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMueC5pbml0aWFsRGVsdGEsdD10aGlzLnkuaW5pdGlhbERlbHRhO3JldHVybiBNYXRoLnNxcnQoZSplK3QqdCk8PXRoaXMudGhyZXNob2xkfX0pLFA9Yy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxuKXt2YXIgaSxhLHUsbD10aGlzLHA9ci5ndWlkKCk7bj1ufHx7fSxpPWwuZmlsdGVyPW4uZmlsdGVyLGwudGhyZXNob2xkPW4udGhyZXNob2xkfHxmLGwubWluSG9sZD1uLm1pbkhvbGR8fGQsbC50b3VjaGVzPVtdLGwuX21heFRvdWNoZXM9bi5tdWx0aVRvdWNoPzI6MSxsLmFsbG93U2VsZWN0aW9uPW4uYWxsb3dTZWxlY3Rpb24sbC5jYXB0dXJlVXBJZk1vdmVkPW4uY2FwdHVyZVVwSWZNb3ZlZCxsLnVzZUNsaWNrQXNUYXA9IW4uZmFzdFRhcCYmIXMuZGVsYXllZENsaWNrKCksbC5ldmVudE5TPXAsdD1lKHQpLmhhbmRsZXIobCksYy5mbi5pbml0LmNhbGwobCksaChsLHtlbGVtZW50OnQsc3VyZmFjZTplKG4uZ2xvYmFsJiZBP3RbMF0ub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ6bi5zdXJmYWNlfHx0KSxzdG9wUHJvcGFnYXRpb246bi5zdG9wUHJvcGFnYXRpb24scHJlc3NlZDohMX0pLGwuc3VyZmFjZS5oYW5kbGVyKGwpLm9uKHIuYXBwbHlFdmVudE1hcChcIm1vdmVcIixwKSxcIl9tb3ZlXCIpLm9uKHIuYXBwbHlFdmVudE1hcChcInVwIGNhbmNlbFwiLHApLFwiX2VuZFwiKSx0Lm9uKHIuYXBwbHlFdmVudE1hcChcImRvd25cIixwKSxpLFwiX3N0YXJ0XCIpLGwudXNlQ2xpY2tBc1RhcCYmdC5vbihyLmFwcGx5RXZlbnRNYXAoXCJjbGlja1wiLHApLGksXCJfY2xpY2tcIiksKHMucG9pbnRlcnN8fHMubXNQb2ludGVycykmJihzLmJyb3dzZXIudmVyc2lvbjwxMT90LmNzcyhcIi1tcy10b3VjaC1hY3Rpb25cIixcInBpbmNoLXpvb20gZG91YmxlLXRhcC16b29tXCIpOnQuY3NzKFwidG91Y2gtYWN0aW9uXCIsbi50b3VjaEFjdGlvbnx8XCJub25lXCIpKSxuLnByZXZlbnREcmFnRXZlbnQmJnQub24oci5hcHBseUV2ZW50TWFwKFwiZHJhZ3N0YXJ0XCIscCksci5wcmV2ZW50RGVmYXVsdCksdC5vbihyLmFwcGx5RXZlbnRNYXAoXCJtb3VzZWRvd25cIixwKSxpLHtyb290OnR9LFwiX3NlbGVjdFwiKSxsLmNhcHR1cmVVcElmTW92ZWQmJnMuZXZlbnRDYXB0dXJlJiYoYT1sLnN1cmZhY2VbMF0sdT1lLnByb3h5KGwucHJldmVudElmTW92aW5nLGwpLG8oZnVuY3Rpb24oZSl7YS5hZGRFdmVudExpc3RlbmVyKGUsdSwhMCl9KSksbC5iaW5kKFt2LGcsTSxfLFQseSx3LHgsRSxrLEQsQyxtXSxuKX0scHJldmVudElmTW92aW5nOmZ1bmN0aW9uKGUpe3RoaXMuX2lzTW92ZWQoKSYmZS5wcmV2ZW50RGVmYXVsdCgpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzO3QuX2Rlc3Ryb3llZHx8KHQuX2Rlc3Ryb3llZD0hMCx0LmNhcHR1cmVVcElmTW92ZWQmJnMuZXZlbnRDYXB0dXJlJiYoZT10LnN1cmZhY2VbMF0sbyhmdW5jdGlvbihuKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIobix0LnByZXZlbnRJZk1vdmluZyl9KSksdC5lbGVtZW50LmtlbmRvRGVzdHJveSh0LmV2ZW50TlMpLHQuc3VyZmFjZS5rZW5kb0Rlc3Ryb3kodC5ldmVudE5TKSx0LmVsZW1lbnQucmVtb3ZlRGF0YShcImhhbmRsZXJcIiksdC5zdXJmYWNlLnJlbW92ZURhdGEoXCJoYW5kbGVyXCIpLHQuX2Rpc3Bvc2VBbGwoKSx0LnVuYmluZCgpLGRlbGV0ZSB0LnN1cmZhY2UsZGVsZXRlIHQuZWxlbWVudCxkZWxldGUgdC5jdXJyZW50VGFyZ2V0KX0sY2FwdHVyZTpmdW5jdGlvbigpe1AuY3VycmVudD10aGlzfSxjYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLl9kaXNwb3NlQWxsKCksdGhpcy50cmlnZ2VyKHgpfSxub3RpZnk6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLG89aS50b3VjaGVzO2lmKHRoaXMuX2lzTXVsdGlUb3VjaCgpKXtzd2l0Y2goZSl7Y2FzZSBUOmU9azticmVhaztjYXNlIHk6ZT1EO2JyZWFrO2Nhc2UgTTplPUN9aCh0LHt0b3VjaGVzOm99LG4ob1swXSxvWzFdKSl9cmV0dXJuIHRoaXMudHJpZ2dlcihlLGgodCx7dHlwZTplfSkpfSxwcmVzczpmdW5jdGlvbihlLHQsbil7dGhpcy5fYXBpQ2FsbChcIl9zdGFydFwiLGUsdCxuKX0sbW92ZTpmdW5jdGlvbihlLHQpe3RoaXMuX2FwaUNhbGwoXCJfbW92ZVwiLGUsdCl9LGVuZDpmdW5jdGlvbihlLHQpe3RoaXMuX2FwaUNhbGwoXCJfZW5kXCIsZSx0KX0sX2lzTXVsdGlUb3VjaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvdWNoZXMubGVuZ3RoPjF9LF9tYXhUb3VjaGVzUmVhY2hlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvdWNoZXMubGVuZ3RoPj10aGlzLl9tYXhUb3VjaGVzfSxfZGlzcG9zZUFsbDpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnRvdWNoZXM7ZS5sZW5ndGg+MDspZS5wb3AoKS5kaXNwb3NlKCl9LF9pc01vdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZ3JlcCh0aGlzLnRvdWNoZXMsZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNNb3ZlZCgpfSkubGVuZ3RofSxfc2VsZWN0OmZ1bmN0aW9uKGUpe3RoaXMuYWxsb3dTZWxlY3Rpb24mJiF0aGlzLnRyaWdnZXIobSx7ZXZlbnQ6ZX0pfHxlLnByZXZlbnREZWZhdWx0KCl9LF9zdGFydDpmdW5jdGlvbih0KXt2YXIgbixvLHI9dGhpcyxzPTAsYT1yLmZpbHRlcixjPWkodCksdT1jLmxlbmd0aCxoPXQud2hpY2g7aWYoIShoJiZoPjF8fHIuX21heFRvdWNoZXNSZWFjaGVkKCkpKWZvcihQLmN1cnJlbnQ9bnVsbCxyLmN1cnJlbnRUYXJnZXQ9dC5jdXJyZW50VGFyZ2V0LHIuc3RvcFByb3BhZ2F0aW9uJiZ0LnN0b3BQcm9wYWdhdGlvbigpO3M8dSYmIXIuX21heFRvdWNoZXNSZWFjaGVkKCk7cysrKW89Y1tzXSxuPWE/ZShvLmN1cnJlbnRUYXJnZXQpOnIuZWxlbWVudCxuLmxlbmd0aCYmKG89bmV3IFMocixuLG8pLHIudG91Y2hlcy5wdXNoKG8pLG8ucHJlc3MoKSxyLl9pc011bHRpVG91Y2goKSYmci5ub3RpZnkoXCJnZXN0dXJlc3RhcnRcIix7fSkpfSxfbW92ZTpmdW5jdGlvbihlKXt0aGlzLl9lYWNoVG91Y2goXCJtb3ZlXCIsZSl9LF9lbmQ6ZnVuY3Rpb24oZSl7dGhpcy5fZWFjaFRvdWNoKFwiZW5kXCIsZSl9LF9jbGljazpmdW5jdGlvbih0KXt2YXIgbj17dG91Y2g6e2luaXRpYWxUb3VjaDp0LnRhcmdldCx0YXJnZXQ6ZSh0LmN1cnJlbnRUYXJnZXQpLGVuZFRpbWU6dSgpLHg6e2xvY2F0aW9uOnQucGFnZVgsY2xpZW50OnQuY2xpZW50WH0seTp7bG9jYXRpb246dC5wYWdlWSxjbGllbnQ6dC5jbGllbnRZfX0seDp0LnBhZ2VYLHk6dC5wYWdlWSx0YXJnZXQ6ZSh0LmN1cnJlbnRUYXJnZXQpLGV2ZW50OnQsdHlwZTpcInRhcFwifTt0aGlzLnRyaWdnZXIoXCJ0YXBcIixuKSYmdC5wcmV2ZW50RGVmYXVsdCgpfSxfZWFjaFRvdWNoOmZ1bmN0aW9uKGUsdCl7dmFyIG4sbyxyLHMsYT10aGlzLGM9e30sdT1pKHQpLGg9YS50b3VjaGVzO2ZvcihuPTA7bjxoLmxlbmd0aDtuKyspbz1oW25dLGNbby5pZF09bztmb3Iobj0wO248dS5sZW5ndGg7bisrKXI9dVtuXSxzPWNbci5pZF0scyYmc1tlXShyKX0sX2FwaUNhbGw6ZnVuY3Rpb24odCxuLGksbyl7dGhpc1t0XSh7YXBpOiEwLHBhZ2VYOm4scGFnZVk6aSxjbGllbnRYOm4sY2xpZW50WTppLHRhcmdldDplKG98fHRoaXMuZWxlbWVudClbMF0sc3RvcFByb3BhZ2F0aW9uOmUubm9vcCxwcmV2ZW50RGVmYXVsdDplLm5vb3B9KX19KTtQLmRlZmF1bHRUaHJlc2hvbGQ9ZnVuY3Rpb24oZSl7Zj1lfSxQLm1pbkhvbGQ9ZnVuY3Rpb24oZSl7ZD1lfSxyLmdldFRvdWNoZXM9aSxyLnRvdWNoRGVsdGE9bixyLlVzZXJFdmVudHM9UH0od2luZG93LmtlbmRvLmpRdWVyeSksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsdCxuKXsobnx8dCkoKX0pOzshZnVuY3Rpb24oZSxkZWZpbmUpe2RlZmluZShcImtlbmRvLmNvbG9yLm1pblwiLFtcImtlbmRvLmNvcmUubWluXCJdLGUpfShmdW5jdGlvbigpeyFmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbihlLGYpe3ZhciBhLGk7aWYobnVsbD09ZXx8XCJub25lXCI9PWUpcmV0dXJuIG51bGw7aWYoZSBpbnN0YW5jZW9mIHMpcmV0dXJuIGU7aWYoZT1lLnRvTG93ZXJDYXNlKCksYT1vLmV4ZWMoZSkpcmV0dXJuIGU9XCJ0cmFuc3BhcmVudFwiPT1hWzFdP25ldyB1KDEsMSwxLDApOm4oaC5uYW1lZENvbG9yc1thWzFdXSxmKSxlLm1hdGNoPVthWzFdXSxlO2lmKChhPS9eIz8oWzAtOWEtZl17Mn0pKFswLTlhLWZdezJ9KShbMC05YS1mXXsyfSlcXGIvaS5leGVjKGUpKT9pPW5ldyBsKHIoYVsxXSwxNikscihhWzJdLDE2KSxyKGFbM10sMTYpLDEpOihhPS9eIz8oWzAtOWEtZl0pKFswLTlhLWZdKShbMC05YS1mXSlcXGIvaS5leGVjKGUpKT9pPW5ldyBsKHIoYVsxXSthWzFdLDE2KSxyKGFbMl0rYVsyXSwxNikscihhWzNdK2FbM10sMTYpLDEpOihhPS9ecmdiXFwoXFxzKihbMC05XSspXFxzKixcXHMqKFswLTldKylcXHMqLFxccyooWzAtOV0rKVxccypcXCkvLmV4ZWMoZSkpP2k9bmV3IGwocihhWzFdLDEwKSxyKGFbMl0sMTApLHIoYVszXSwxMCksMSk6KGE9L15yZ2JhXFwoXFxzKihbMC05XSspXFxzKixcXHMqKFswLTldKylcXHMqLFxccyooWzAtOV0rKVxccyosXFxzKihbMC05Ll0rKVxccypcXCkvLmV4ZWMoZSkpP2k9bmV3IGwocihhWzFdLDEwKSxyKGFbMl0sMTApLHIoYVszXSwxMCksdChhWzRdKSk6KGE9L15yZ2JcXChcXHMqKFswLTldKlxcLj9bMC05XSspJVxccyosXFxzKihbMC05XSpcXC4/WzAtOV0rKSVcXHMqLFxccyooWzAtOV0qXFwuP1swLTldKyklXFxzKlxcKS8uZXhlYyhlKSk/aT1uZXcgdSh0KGFbMV0pLzEwMCx0KGFbMl0pLzEwMCx0KGFbM10pLzEwMCwxKTooYT0vXnJnYmFcXChcXHMqKFswLTldKlxcLj9bMC05XSspJVxccyosXFxzKihbMC05XSpcXC4/WzAtOV0rKSVcXHMqLFxccyooWzAtOV0qXFwuP1swLTldKyklXFxzKixcXHMqKFswLTkuXSspXFxzKlxcKS8uZXhlYyhlKSkmJihpPW5ldyB1KHQoYVsxXSkvMTAwLHQoYVsyXSkvMTAwLHQoYVszXSkvMTAwLHQoYVs0XSkpKSxpKWkubWF0Y2g9YTtlbHNlIGlmKCFmKXRocm93IEVycm9yKFwiQ2Fubm90IHBhcnNlIGNvbG9yOiBcIitlKTtyZXR1cm4gaX1mdW5jdGlvbiBmKGUsdCxyKXtmb3Iocnx8KHI9XCIwXCIpLGU9ZS50b1N0cmluZygxNik7dD5lLmxlbmd0aDspZT1cIjBcIitlO3JldHVybiBlfWZ1bmN0aW9uIGEoZSx0LHIpe3JldHVybiByPDAmJihyKz0xKSxyPjEmJihyLT0xKSxyPDEvNj9lKzYqKHQtZSkqcjpyPC41P3Q6cjwyLzM/ZSsodC1lKSooMi8zLXIpKjY6ZX12YXIgbyxpLHMsdSxsLGQsYyxoPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbixmLGEsbz10aGlzLGk9aC5mb3JtYXRzO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZvcihlPW8ucmVzb2x2ZUNvbG9yKGUpLGY9MDtmPGkubGVuZ3RoO2YrKyl0PWlbZl0ucmUscj1pW2ZdLnByb2Nlc3Msbj10LmV4ZWMoZSksbiYmKGE9cihuKSxvLnI9YVswXSxvLmc9YVsxXSxvLmI9YVsyXSk7ZWxzZSBvLnI9YXJndW1lbnRzWzBdLG8uZz1hcmd1bWVudHNbMV0sby5iPWFyZ3VtZW50c1syXTtvLnI9by5ub3JtYWxpemVCeXRlKG8uciksby5nPW8ubm9ybWFsaXplQnl0ZShvLmcpLG8uYj1vLm5vcm1hbGl6ZUJ5dGUoby5iKX07aC5wcm90b3R5cGU9e3RvSGV4OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUucGFkRGlnaXQscj1lLnIudG9TdHJpbmcoMTYpLG49ZS5nLnRvU3RyaW5nKDE2KSxmPWUuYi50b1N0cmluZygxNik7cmV0dXJuXCIjXCIrdChyKSt0KG4pK3QoZil9LHJlc29sdmVDb2xvcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lfHxcImJsYWNrXCIsXCIjXCI9PWUuY2hhckF0KDApJiYoZT1lLnN1YnN0cigxLDYpKSxlPWUucmVwbGFjZSgvIC9nLFwiXCIpLGU9ZS50b0xvd2VyQ2FzZSgpLGU9aC5uYW1lZENvbG9yc1tlXXx8ZX0sbm9ybWFsaXplQnl0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZTwwfHxpc05hTihlKT8wOmU+MjU1PzI1NTplfSxwYWREaWdpdDpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWUubGVuZ3RoP1wiMFwiK2U6ZX0sYnJpZ2h0bmVzczpmdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9TWF0aC5yb3VuZDtyZXR1cm4gdC5yPXIodC5ub3JtYWxpemVCeXRlKHQuciplKSksdC5nPXIodC5ub3JtYWxpemVCeXRlKHQuZyplKSksdC5iPXIodC5ub3JtYWxpemVCeXRlKHQuYiplKSksdH0scGVyY0JyaWdodG5lc3M6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBNYXRoLnNxcnQoLjI0MSplLnIqZS5yKy42OTEqZS5nKmUuZysuMDY4KmUuYiplLmIpfX0saC5mb3JtYXRzPVt7cmU6L15yZ2JcXCgoXFxkezEsM30pLFxccyooXFxkezEsM30pLFxccyooXFxkezEsM30pXFwpJC8scHJvY2VzczpmdW5jdGlvbihlKXtyZXR1cm5bcihlWzFdLDEwKSxyKGVbMl0sMTApLHIoZVszXSwxMCldfX0se3JlOi9eKFxcd3syfSkoXFx3ezJ9KShcXHd7Mn0pJC8scHJvY2VzczpmdW5jdGlvbihlKXtyZXR1cm5bcihlWzFdLDE2KSxyKGVbMl0sMTYpLHIoZVszXSwxNildfX0se3JlOi9eKFxcd3sxfSkoXFx3ezF9KShcXHd7MX0pJC8scHJvY2VzczpmdW5jdGlvbihlKXtyZXR1cm5bcihlWzFdK2VbMV0sMTYpLHIoZVsyXStlWzJdLDE2KSxyKGVbM10rZVszXSwxNildfX1dLGgubmFtZWRDb2xvcnM9e2FsaWNlYmx1ZTpcImYwZjhmZlwiLGFudGlxdWV3aGl0ZTpcImZhZWJkN1wiLGFxdWE6XCIwMGZmZmZcIixhcXVhbWFyaW5lOlwiN2ZmZmQ0XCIsYXp1cmU6XCJmMGZmZmZcIixiZWlnZTpcImY1ZjVkY1wiLGJpc3F1ZTpcImZmZTRjNFwiLGJsYWNrOlwiMDAwMDAwXCIsYmxhbmNoZWRhbG1vbmQ6XCJmZmViY2RcIixibHVlOlwiMDAwMGZmXCIsYmx1ZXZpb2xldDpcIjhhMmJlMlwiLGJyb3duOlwiYTUyYTJhXCIsYnVybHl3b29kOlwiZGViODg3XCIsY2FkZXRibHVlOlwiNWY5ZWEwXCIsY2hhcnRyZXVzZTpcIjdmZmYwMFwiLGNob2NvbGF0ZTpcImQyNjkxZVwiLGNvcmFsOlwiZmY3ZjUwXCIsY29ybmZsb3dlcmJsdWU6XCI2NDk1ZWRcIixjb3Juc2lsazpcImZmZjhkY1wiLGNyaW1zb246XCJkYzE0M2NcIixjeWFuOlwiMDBmZmZmXCIsZGFya2JsdWU6XCIwMDAwOGJcIixkYXJrY3lhbjpcIjAwOGI4YlwiLGRhcmtnb2xkZW5yb2Q6XCJiODg2MGJcIixkYXJrZ3JheTpcImE5YTlhOVwiLGRhcmtncmV5OlwiYTlhOWE5XCIsZGFya2dyZWVuOlwiMDA2NDAwXCIsZGFya2toYWtpOlwiYmRiNzZiXCIsZGFya21hZ2VudGE6XCI4YjAwOGJcIixkYXJrb2xpdmVncmVlbjpcIjU1NmIyZlwiLGRhcmtvcmFuZ2U6XCJmZjhjMDBcIixkYXJrb3JjaGlkOlwiOTkzMmNjXCIsZGFya3JlZDpcIjhiMDAwMFwiLGRhcmtzYWxtb246XCJlOTk2N2FcIixkYXJrc2VhZ3JlZW46XCI4ZmJjOGZcIixkYXJrc2xhdGVibHVlOlwiNDgzZDhiXCIsZGFya3NsYXRlZ3JheTpcIjJmNGY0ZlwiLGRhcmtzbGF0ZWdyZXk6XCIyZjRmNGZcIixkYXJrdHVycXVvaXNlOlwiMDBjZWQxXCIsZGFya3Zpb2xldDpcIjk0MDBkM1wiLGRlZXBwaW5rOlwiZmYxNDkzXCIsZGVlcHNreWJsdWU6XCIwMGJmZmZcIixkaW1ncmF5OlwiNjk2OTY5XCIsZGltZ3JleTpcIjY5Njk2OVwiLGRvZGdlcmJsdWU6XCIxZTkwZmZcIixmaXJlYnJpY2s6XCJiMjIyMjJcIixmbG9yYWx3aGl0ZTpcImZmZmFmMFwiLGZvcmVzdGdyZWVuOlwiMjI4YjIyXCIsZnVjaHNpYTpcImZmMDBmZlwiLGdhaW5zYm9ybzpcImRjZGNkY1wiLGdob3N0d2hpdGU6XCJmOGY4ZmZcIixnb2xkOlwiZmZkNzAwXCIsZ29sZGVucm9kOlwiZGFhNTIwXCIsZ3JheTpcIjgwODA4MFwiLGdyZXk6XCI4MDgwODBcIixncmVlbjpcIjAwODAwMFwiLGdyZWVueWVsbG93OlwiYWRmZjJmXCIsaG9uZXlkZXc6XCJmMGZmZjBcIixob3RwaW5rOlwiZmY2OWI0XCIsaW5kaWFucmVkOlwiY2Q1YzVjXCIsaW5kaWdvOlwiNGIwMDgyXCIsaXZvcnk6XCJmZmZmZjBcIixraGFraTpcImYwZTY4Y1wiLGxhdmVuZGVyOlwiZTZlNmZhXCIsbGF2ZW5kZXJibHVzaDpcImZmZjBmNVwiLGxhd25ncmVlbjpcIjdjZmMwMFwiLGxlbW9uY2hpZmZvbjpcImZmZmFjZFwiLGxpZ2h0Ymx1ZTpcImFkZDhlNlwiLGxpZ2h0Y29yYWw6XCJmMDgwODBcIixsaWdodGN5YW46XCJlMGZmZmZcIixsaWdodGdvbGRlbnJvZHllbGxvdzpcImZhZmFkMlwiLGxpZ2h0Z3JheTpcImQzZDNkM1wiLGxpZ2h0Z3JleTpcImQzZDNkM1wiLGxpZ2h0Z3JlZW46XCI5MGVlOTBcIixsaWdodHBpbms6XCJmZmI2YzFcIixsaWdodHNhbG1vbjpcImZmYTA3YVwiLGxpZ2h0c2VhZ3JlZW46XCIyMGIyYWFcIixsaWdodHNreWJsdWU6XCI4N2NlZmFcIixsaWdodHNsYXRlZ3JheTpcIjc3ODg5OVwiLGxpZ2h0c2xhdGVncmV5OlwiNzc4ODk5XCIsbGlnaHRzdGVlbGJsdWU6XCJiMGM0ZGVcIixsaWdodHllbGxvdzpcImZmZmZlMFwiLGxpbWU6XCIwMGZmMDBcIixsaW1lZ3JlZW46XCIzMmNkMzJcIixsaW5lbjpcImZhZjBlNlwiLG1hZ2VudGE6XCJmZjAwZmZcIixtYXJvb246XCI4MDAwMDBcIixtZWRpdW1hcXVhbWFyaW5lOlwiNjZjZGFhXCIsbWVkaXVtYmx1ZTpcIjAwMDBjZFwiLG1lZGl1bW9yY2hpZDpcImJhNTVkM1wiLG1lZGl1bXB1cnBsZTpcIjkzNzBkOFwiLG1lZGl1bXNlYWdyZWVuOlwiM2NiMzcxXCIsbWVkaXVtc2xhdGVibHVlOlwiN2I2OGVlXCIsbWVkaXVtc3ByaW5nZ3JlZW46XCIwMGZhOWFcIixtZWRpdW10dXJxdW9pc2U6XCI0OGQxY2NcIixtZWRpdW12aW9sZXRyZWQ6XCJjNzE1ODVcIixtaWRuaWdodGJsdWU6XCIxOTE5NzBcIixtaW50Y3JlYW06XCJmNWZmZmFcIixtaXN0eXJvc2U6XCJmZmU0ZTFcIixtb2NjYXNpbjpcImZmZTRiNVwiLG5hdmFqb3doaXRlOlwiZmZkZWFkXCIsbmF2eTpcIjAwMDA4MFwiLG9sZGxhY2U6XCJmZGY1ZTZcIixvbGl2ZTpcIjgwODAwMFwiLG9saXZlZHJhYjpcIjZiOGUyM1wiLG9yYW5nZTpcImZmYTUwMFwiLG9yYW5nZXJlZDpcImZmNDUwMFwiLG9yY2hpZDpcImRhNzBkNlwiLHBhbGVnb2xkZW5yb2Q6XCJlZWU4YWFcIixwYWxlZ3JlZW46XCI5OGZiOThcIixwYWxldHVycXVvaXNlOlwiYWZlZWVlXCIscGFsZXZpb2xldHJlZDpcImQ4NzA5M1wiLHBhcGF5YXdoaXA6XCJmZmVmZDVcIixwZWFjaHB1ZmY6XCJmZmRhYjlcIixwZXJ1OlwiY2Q4NTNmXCIscGluazpcImZmYzBjYlwiLHBsdW06XCJkZGEwZGRcIixwb3dkZXJibHVlOlwiYjBlMGU2XCIscHVycGxlOlwiODAwMDgwXCIscmVkOlwiZmYwMDAwXCIscm9zeWJyb3duOlwiYmM4ZjhmXCIscm95YWxibHVlOlwiNDE2OWUxXCIsc2FkZGxlYnJvd246XCI4YjQ1MTNcIixzYWxtb246XCJmYTgwNzJcIixzYW5keWJyb3duOlwiZjRhNDYwXCIsc2VhZ3JlZW46XCIyZThiNTdcIixzZWFzaGVsbDpcImZmZjVlZVwiLHNpZW5uYTpcImEwNTIyZFwiLHNpbHZlcjpcImMwYzBjMFwiLHNreWJsdWU6XCI4N2NlZWJcIixzbGF0ZWJsdWU6XCI2YTVhY2RcIixzbGF0ZWdyYXk6XCI3MDgwOTBcIixzbGF0ZWdyZXk6XCI3MDgwOTBcIixzbm93OlwiZmZmYWZhXCIsc3ByaW5nZ3JlZW46XCIwMGZmN2ZcIixzdGVlbGJsdWU6XCI0NjgyYjRcIix0YW46XCJkMmI0OGNcIix0ZWFsOlwiMDA4MDgwXCIsdGhpc3RsZTpcImQ4YmZkOFwiLHRvbWF0bzpcImZmNjM0N1wiLHR1cnF1b2lzZTpcIjQwZTBkMFwiLHZpb2xldDpcImVlODJlZVwiLHdoZWF0OlwiZjVkZWIzXCIsd2hpdGU6XCJmZmZmZmZcIix3aGl0ZXNtb2tlOlwiZjVmNWY1XCIseWVsbG93OlwiZmZmZjAwXCIseWVsbG93Z3JlZW46XCI5YWNkMzJcIn0sbz1bXCJ0cmFuc3BhcmVudFwiXTtmb3IoaSBpbiBoLm5hbWVkQ29sb3JzKWgubmFtZWRDb2xvcnMuaGFzT3duUHJvcGVydHkoaSkmJm8ucHVzaChpKTtvPVJlZ0V4cChcIl4oXCIrby5qb2luKFwifFwiKStcIikoXFxcXFd8JClcIixcImlcIikscz1rZW5kby5DbGFzcy5leHRlbmQoe3RvSFNWOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHRvUkdCOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHRvSGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9CeXRlcygpLnRvSGV4KCl9LHRvQnl0ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdG9Dc3M6ZnVuY3Rpb24oKXtyZXR1cm5cIiNcIit0aGlzLnRvSGV4KCl9LHRvQ3NzUmdiYTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudG9CeXRlcygpO3JldHVyblwicmdiYShcIitlLnIrXCIsIFwiK2UuZytcIiwgXCIrZS5iK1wiLCBcIit0KCgrdGhpcy5hKS50b0ZpeGVkKDMpKStcIilcIn0sdG9EaXNwbGF5OmZ1bmN0aW9uKCl7cmV0dXJuIGtlbmRvLnN1cHBvcnQuYnJvd3Nlci5tc2llJiZrZW5kby5zdXBwb3J0LmJyb3dzZXIudmVyc2lvbjw5P3RoaXMudG9Dc3MoKTp0aGlzLnRvQ3NzUmdiYSgpfSxlcXVhbHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10aGlzfHxudWxsIT09ZSYmdGhpcy50b0Nzc1JnYmEoKT09bihlKS50b0Nzc1JnYmEoKX0sZGlmZjpmdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiBOYU47dmFyIHQ9dGhpcy50b0J5dGVzKCk7cmV0dXJuIGU9ZS50b0J5dGVzKCksTWF0aC5zcXJ0KE1hdGgucG93KC4zKih0LnItZS5yKSwyKStNYXRoLnBvdyguNTkqKHQuZy1lLmcpLDIpK01hdGgucG93KC4xMSoodC5iLWUuYiksMikpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudG9CeXRlcygpO3JldHVybiBlPT09dGhpcyYmKGU9bmV3IGwoZS5yLGUuZyxlLmIsZS5hKSksZX19KSx1PXMuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCxyLG4pe3RoaXMucj1lLHRoaXMuZz10LHRoaXMuYj1yLHRoaXMuYT1ufSx0b0hTVjpmdW5jdGlvbigpe3ZhciBlLHQscj10aGlzLnIsbj10aGlzLmcsZj10aGlzLmIsYT1NYXRoLm1pbihyLG4sZiksbz1NYXRoLm1heChyLG4sZiksaT1vLHM9by1hO3JldHVybiAwPT09cz9uZXcgZCgwLDAsaSx0aGlzLmEpOigwIT09bz8odD1zL28sZT1yPT1vPyhuLWYpL3M6bj09bz8yKyhmLXIpL3M6NCsoci1uKS9zLGUqPTYwLGU8MCYmKGUrPTM2MCkpOih0PTAsZT0tMSksbmV3IGQoZSx0LGksdGhpcy5hKSl9LHRvSFNMOmZ1bmN0aW9uKCl7dmFyIGUsdCxyLG49dGhpcy5yLGY9dGhpcy5nLGE9dGhpcy5iLG89TWF0aC5tYXgobixmLGEpLGk9TWF0aC5taW4obixmLGEpLHM9KG8raSkvMjtpZihvPT1pKWU9dD0wO2Vsc2V7c3dpdGNoKHI9by1pLHQ9cz4uNT9yLygyLW8taSk6ci8obytpKSxvKXtjYXNlIG46ZT0oZi1hKS9yKyhmPGE/NjowKTticmVhaztjYXNlIGY6ZT0oYS1uKS9yKzI7YnJlYWs7Y2FzZSBhOmU9KG4tZikvcis0fWUqPTYwLHQqPTEwMCxzKj0xMDB9cmV0dXJuIG5ldyBjKGUsdCxzLHRoaXMuYSl9LHRvQnl0ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGwoMjU1KnRoaXMuciwyNTUqdGhpcy5nLDI1NSp0aGlzLmIsdGhpcy5hKX19KSxsPXUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCxyLG4pe3RoaXMucj1NYXRoLnJvdW5kKGUpLHRoaXMuZz1NYXRoLnJvdW5kKHQpLHRoaXMuYj1NYXRoLnJvdW5kKHIpLHRoaXMuYT1ufSx0b1JHQjpmdW5jdGlvbigpe3JldHVybiBuZXcgdSh0aGlzLnIvMjU1LHRoaXMuZy8yNTUsdGhpcy5iLzI1NSx0aGlzLmEpfSx0b0hTVjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvUkdCKCkudG9IU1YoKX0sdG9IU0w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1JHQigpLnRvSFNMKCl9LHRvSGV4OmZ1bmN0aW9uKCl7cmV0dXJuIGYodGhpcy5yLDIpK2YodGhpcy5nLDIpK2YodGhpcy5iLDIpfSx0b0J5dGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSksZD1zLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLHQscixuKXt0aGlzLmg9ZSx0aGlzLnM9dCx0aGlzLnY9cix0aGlzLmE9bn0sdG9SR0I6ZnVuY3Rpb24oKXt2YXIgZSx0LHIsbixmLGEsbyxpLHM9dGhpcy5oLGw9dGhpcy5zLGQ9dGhpcy52O2lmKDA9PT1sKXQ9cj1uPWQ7ZWxzZSBzd2l0Y2gocy89NjAsZT1NYXRoLmZsb29yKHMpLGY9cy1lLGE9ZCooMS1sKSxvPWQqKDEtbCpmKSxpPWQqKDEtbCooMS1mKSksZSl7Y2FzZSAwOnQ9ZCxyPWksbj1hO2JyZWFrO2Nhc2UgMTp0PW8scj1kLG49YTticmVhaztjYXNlIDI6dD1hLHI9ZCxuPWk7YnJlYWs7Y2FzZSAzOnQ9YSxyPW8sbj1kO2JyZWFrO2Nhc2UgNDp0PWkscj1hLG49ZDticmVhaztkZWZhdWx0OnQ9ZCxyPWEsbj1vfXJldHVybiBuZXcgdSh0LHIsbix0aGlzLmEpfSx0b0hTTDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvUkdCKCkudG9IU0woKX0sdG9CeXRlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvUkdCKCkudG9CeXRlcygpfX0pLGM9cy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0LHIsbil7dGhpcy5oPWUsdGhpcy5zPXQsdGhpcy5sPXIsdGhpcy5hPW59LHRvUkdCOmZ1bmN0aW9uKCl7dmFyIGUsdCxyLG4sZixvPXRoaXMuaCxpPXRoaXMucyxzPXRoaXMubDtyZXR1cm4gMD09PWk/ZT10PXI9czooby89MzYwLGkvPTEwMCxzLz0xMDAsbj1zPC41P3MqKDEraSk6cytpLXMqaSxmPTIqcy1uLGU9YShmLG4sbysxLzMpLHQ9YShmLG4sbykscj1hKGYsbixvLTEvMykpLG5ldyB1KGUsdCxyLHRoaXMuYSl9LHRvSFNWOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9SR0IoKS50b0hTVigpfSx0b0J5dGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9SR0IoKS50b0J5dGVzKCl9fSksaC5mcm9tQnl0ZXM9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIG5ldyBsKGUsdCxyLG51bGwhPW4/bjoxKX0saC5mcm9tUkdCPWZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBuZXcgdShlLHQscixudWxsIT1uP246MSl9LGguZnJvbUhTVj1mdW5jdGlvbihlLHQscixuKXtyZXR1cm4gbmV3IGQoZSx0LHIsbnVsbCE9bj9uOjEpfSxoLmZyb21IU0w9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIG5ldyBjKGUsdCxyLG51bGwhPW4/bjoxKX0sa2VuZG8uQ29sb3I9aCxrZW5kby5wYXJzZUNvbG9yPW59KHdpbmRvdy5rZW5kby5qUXVlcnkscGFyc2VGbG9hdCxwYXJzZUludCl9LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0LHIpeyhyfHx0KSgpfSk7OyFmdW5jdGlvbihlLGRlZmluZSl7ZGVmaW5lKFwia2VuZG8ucG9wdXAubWluXCIsW1wia2VuZG8uY29yZS5taW5cIl0sZSl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbyh0LG8pe3JldHVybiEoIXR8fCFvKSYmKHQ9PT1vfHxlLmNvbnRhaW5zKHQsbykpfXZhciBuPXdpbmRvdy5rZW5kbyxpPW4udWkscz1pLldpZGdldCxyPW4uc3VwcG9ydCxhPW4uZ2V0T2Zmc2V0LGw9bi5fb3V0ZXJXaWR0aCxwPW4uX291dGVySGVpZ2h0LGQ9XCJvcGVuXCIsYz1cImNsb3NlXCIsZj1cImRlYWN0aXZhdGVcIix1PVwiYWN0aXZhdGVcIixtPVwiY2VudGVyXCIsaD1cImxlZnRcIixnPVwicmlnaHRcIix3PVwidG9wXCIsdj1cImJvdHRvbVwiLF89XCJhYnNvbHV0ZVwiLGs9XCJoaWRkZW5cIix5PVwiYm9keVwiLHo9XCJsb2NhdGlvblwiLGI9XCJwb3NpdGlvblwiLEM9XCJ2aXNpYmxlXCIseD1cImVmZmVjdHNcIixUPVwiay1zdGF0ZS1hY3RpdmVcIixQPVwiay1zdGF0ZS1ib3JkZXJcIixFPS9rLXN0YXRlLWJvcmRlci0oXFx3KykvLFM9XCIuay1waWNrZXItd3JhcCwgLmstZHJvcGRvd24td3JhcCwgLmstbGlua1wiLE89XCJkb3duXCIsUj1lKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCksST1lKHdpbmRvdyksQT1cInNjcm9sbFwiLEQ9ci50cmFuc2l0aW9ucy5jc3MsSD1EK1widHJhbnNmb3JtXCIsTD1lLmV4dGVuZCxXPVwiLmtlbmRvUG9wdXBcIixqPVtcImZvbnQtc2l6ZVwiLFwiZm9udC1mYW1pbHlcIixcImZvbnQtc3RyZXRjaFwiLFwiZm9udC1zdHlsZVwiLFwiZm9udC13ZWlnaHRcIixcImxpbmUtaGVpZ2h0XCJdLE09cy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxvKXt2YXIgaSxhPXRoaXM7bz1vfHx7fSxvLmlzUnRsJiYoby5vcmlnaW49by5vcmlnaW58fHYrXCIgXCIrZyxvLnBvc2l0aW9uPW8ucG9zaXRpb258fHcrXCIgXCIrZykscy5mbi5pbml0LmNhbGwoYSx0LG8pLHQ9YS5lbGVtZW50LG89YS5vcHRpb25zLGEuY29sbGlzaW9ucz1vLmNvbGxpc2lvbj9vLmNvbGxpc2lvbi5zcGxpdChcIiBcIik6W10sYS5kb3duRXZlbnQ9bi5hcHBseUV2ZW50TWFwKE8sbi5ndWlkKCkpLDE9PT1hLmNvbGxpc2lvbnMubGVuZ3RoJiZhLmNvbGxpc2lvbnMucHVzaChhLmNvbGxpc2lvbnNbMF0pLGk9ZShhLm9wdGlvbnMuYW5jaG9yKS5jbG9zZXN0KFwiLmstcG9wdXAsLmstZ3JvdXBcIikuZmlsdGVyKFwiOm5vdChbY2xhc3NePWttLV0pXCIpLG8uYXBwZW5kVG89ZShlKG8uYXBwZW5kVG8pWzBdfHxpWzBdfHx5KSxhLmVsZW1lbnQuaGlkZSgpLmFkZENsYXNzKFwiay1wb3B1cCBrLWdyb3VwIGstcmVzZXRcIikudG9nZ2xlQ2xhc3MoXCJrLXJ0bFwiLCEhby5pc1J0bCkuY3NzKHtwb3NpdGlvbjpffSkuYXBwZW5kVG8oby5hcHBlbmRUbykub24oXCJtb3VzZWVudGVyXCIrVyxmdW5jdGlvbigpe2EuX2hvdmVyZWQ9ITB9KS5vbihcIm1vdXNlbGVhdmVcIitXLGZ1bmN0aW9uKCl7YS5faG92ZXJlZD0hMX0pLGEud3JhcHBlcj1lKCksby5hbmltYXRpb249PT0hMSYmKG8uYW5pbWF0aW9uPXtvcGVuOntlZmZlY3RzOnt9fSxjbG9zZTp7aGlkZTohMCxlZmZlY3RzOnt9fX0pLEwoby5hbmltYXRpb24ub3Blbix7Y29tcGxldGU6ZnVuY3Rpb24oKXthLndyYXBwZXIuY3NzKHtvdmVyZmxvdzpDfSksYS5fYWN0aXZhdGVkPSEwLGEuX3RyaWdnZXIodSl9fSksTChvLmFuaW1hdGlvbi5jbG9zZSx7Y29tcGxldGU6ZnVuY3Rpb24oKXthLl9hbmltYXRpb25DbG9zZSgpfX0pLGEuX21vdXNlZG93blByb3h5PWZ1bmN0aW9uKGUpe2EuX21vdXNlZG93bihlKX0sYS5fcmVzaXplUHJveHk9ci5tb2JpbGVPUy5hbmRyb2lkP2Z1bmN0aW9uKGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLl9yZXNpemUoZSl9LDYwMCl9OmZ1bmN0aW9uKGUpe2EuX3Jlc2l6ZShlKX0sby50b2dnbGVUYXJnZXQmJmUoby50b2dnbGVUYXJnZXQpLm9uKG8udG9nZ2xlRXZlbnQrVyxlLnByb3h5KGEudG9nZ2xlLGEpKX0sZXZlbnRzOltkLHUsYyxmXSxvcHRpb25zOntuYW1lOlwiUG9wdXBcIix0b2dnbGVFdmVudDpcImNsaWNrXCIsb3JpZ2luOnYrXCIgXCIraCxwb3NpdGlvbjp3K1wiIFwiK2gsYW5jaG9yOnksYXBwZW5kVG86bnVsbCxjb2xsaXNpb246XCJmbGlwIGZpdFwiLHZpZXdwb3J0OndpbmRvdyxjb3B5QW5jaG9yU3R5bGVzOiEwLGF1dG9zaXplOiExLG1vZGFsOiExLGFkanVzdFNpemU6e3dpZHRoOjAsaGVpZ2h0OjB9LGFuaW1hdGlvbjp7b3Blbjp7ZWZmZWN0czpcInNsaWRlSW46ZG93blwiLHRyYW5zaXRpb246ITAsZHVyYXRpb246MjAwfSxjbG9zZTp7ZHVyYXRpb246MTAwLGhpZGU6ITB9fX0sX2FuaW1hdGlvbkNsb3NlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUud3JhcHBlci5kYXRhKHopO2Uud3JhcHBlci5oaWRlKCksdCYmZS53cmFwcGVyLmNzcyh0KSxlLm9wdGlvbnMuYW5jaG9yIT15JiZlLl9oaWRlRGlyQ2xhc3MoKSxlLl9jbG9zaW5nPSExLGUuX3RyaWdnZXIoZil9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgdCxvPXRoaXMsaT1vLm9wdGlvbnMscj1vLmVsZW1lbnQub2ZmKFcpO3MuZm4uZGVzdHJveS5jYWxsKG8pLGkudG9nZ2xlVGFyZ2V0JiZlKGkudG9nZ2xlVGFyZ2V0KS5vZmYoVyksaS5tb2RhbHx8KFIudW5iaW5kKG8uZG93bkV2ZW50LG8uX21vdXNlZG93blByb3h5KSxvLl90b2dnbGVSZXNpemUoITEpKSxuLmRlc3Ryb3koby5lbGVtZW50LmNoaWxkcmVuKCkpLHIucmVtb3ZlRGF0YSgpLGkuYXBwZW5kVG9bMF09PT1kb2N1bWVudC5ib2R5JiYodD1yLnBhcmVudChcIi5rLWFuaW1hdGlvbi1jb250YWluZXJcIiksdFswXT90LnJlbW92ZSgpOnIucmVtb3ZlKCkpfSxvcGVuOmZ1bmN0aW9uKHQsbyl7dmFyIGkscyxhPXRoaXMsbD17aXNGaXhlZDohaXNOYU4ocGFyc2VJbnQobywxMCkpLHg6dCx5Om99LHA9YS5lbGVtZW50LGM9YS5vcHRpb25zLGY9ZShjLmFuY2hvciksdT1wWzBdJiZwLmhhc0NsYXNzKFwia20td2lkZ2V0XCIpO2lmKCFhLnZpc2libGUoKSl7aWYoYy5jb3B5QW5jaG9yU3R5bGVzJiYodSYmXCJmb250LXNpemVcIj09alswXSYmai5zaGlmdCgpLHAuY3NzKG4uZ2V0Q29tcHV0ZWRTdHlsZXMoZlswXSxqKSkpLHAuZGF0YShcImFuaW1hdGluZ1wiKXx8YS5fdHJpZ2dlcihkKSlyZXR1cm47YS5fYWN0aXZhdGVkPSExLGMubW9kYWx8fChSLnVuYmluZChhLmRvd25FdmVudCxhLl9tb3VzZWRvd25Qcm94eSkuYmluZChhLmRvd25FdmVudCxhLl9tb3VzZWRvd25Qcm94eSksYS5fdG9nZ2xlUmVzaXplKCExKSxhLl90b2dnbGVSZXNpemUoITApKSxhLndyYXBwZXI9cz1uLndyYXAocCxjLmF1dG9zaXplKS5jc3Moe292ZXJmbG93OmssZGlzcGxheTpcImJsb2NrXCIscG9zaXRpb246X30pLHIubW9iaWxlT1MuYW5kcm9pZCYmcy5jc3MoSCxcInRyYW5zbGF0ZXooMClcIikscy5jc3MoYiksZShjLmFwcGVuZFRvKVswXT09ZG9jdW1lbnQuYm9keSYmcy5jc3ModyxcIi0xMDAwMHB4XCIpLGEuZmxpcHBlZD1hLl9wb3NpdGlvbihsKSxpPWEuX29wZW5BbmltYXRpb24oKSxjLmFuY2hvciE9eSYmYS5fc2hvd0RpckNsYXNzKGkpLHAuZGF0YSh4LGkuZWZmZWN0cykua2VuZG9TdG9wKCEwKS5rZW5kb0FuaW1hdGUoaSl9fSxfb3BlbkFuaW1hdGlvbjpmdW5jdGlvbigpe3ZhciBlPUwoITAse30sdGhpcy5vcHRpb25zLmFuaW1hdGlvbi5vcGVuKTtyZXR1cm4gZS5lZmZlY3RzPW4ucGFyc2VFZmZlY3RzKGUuZWZmZWN0cyx0aGlzLmZsaXBwZWQpLGV9LF9oaWRlRGlyQ2xhc3M6ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMub3B0aW9ucy5hbmNob3IpLG89KCh0LmF0dHIoXCJjbGFzc1wiKXx8XCJcIikubWF0Y2goRSl8fFtcIlwiLFwiZG93blwiXSlbMV0saT1QK1wiLVwiK287dC5yZW1vdmVDbGFzcyhpKS5jaGlsZHJlbihTKS5yZW1vdmVDbGFzcyhUKS5yZW1vdmVDbGFzcyhpKSx0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoUCtcIi1cIituLmRpcmVjdGlvbnNbb10ucmV2ZXJzZSl9LF9zaG93RGlyQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIG89dC5lZmZlY3RzLnNsaWRlSW4/dC5lZmZlY3RzLnNsaWRlSW4uZGlyZWN0aW9uOlwiZG93blwiLGk9UCtcIi1cIitvO2UodGhpcy5vcHRpb25zLmFuY2hvcikuYWRkQ2xhc3MoaSkuY2hpbGRyZW4oUykuYWRkQ2xhc3MoVCkuYWRkQ2xhc3MoaSksdGhpcy5lbGVtZW50LmFkZENsYXNzKFArXCItXCIrbi5kaXJlY3Rpb25zW29dLnJldmVyc2UpfSxwb3NpdGlvbjpmdW5jdGlvbigpe3RoaXMudmlzaWJsZSgpJiYodGhpcy5mbGlwcGVkPXRoaXMuX3Bvc2l0aW9uKCkpfSx0b2dnbGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2VbZS52aXNpYmxlKCk/YzpkXSgpfSx2aXNpYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5pcyhcIjpcIitDKX0sY2xvc2U6ZnVuY3Rpb24obyl7dmFyIGkscyxyLGEsbD10aGlzLHA9bC5vcHRpb25zO2lmKGwudmlzaWJsZSgpKXtpZihpPWwud3JhcHBlclswXT9sLndyYXBwZXI6bi53cmFwKGwuZWxlbWVudCkuaGlkZSgpLGwuX3RvZ2dsZVJlc2l6ZSghMSksbC5fY2xvc2luZ3x8bC5fdHJpZ2dlcihjKSlyZXR1cm4gbC5fdG9nZ2xlUmVzaXplKCEwKSx0O2wuZWxlbWVudC5maW5kKFwiLmstcG9wdXBcIikuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyksbj10LmRhdGEoXCJrZW5kb1BvcHVwXCIpO24mJm4uY2xvc2Uobyl9KSxSLnVuYmluZChsLmRvd25FdmVudCxsLl9tb3VzZWRvd25Qcm94eSksbz9zPXtoaWRlOiEwLGVmZmVjdHM6e319OihzPUwoITAse30scC5hbmltYXRpb24uY2xvc2UpLHI9bC5lbGVtZW50LmRhdGEoeCksYT1zLmVmZmVjdHMsIWEmJiFuLnNpemUoYSkmJnImJm4uc2l6ZShyKSYmKHMuZWZmZWN0cz1yLHMucmV2ZXJzZT0hMCksbC5fY2xvc2luZz0hMCksbC5lbGVtZW50LmtlbmRvU3RvcCghMCksaS5jc3Moe292ZXJmbG93Omt9KSxsLmVsZW1lbnQua2VuZG9BbmltYXRlKHMpLG8mJmwuX2FuaW1hdGlvbkNsb3NlKCl9fSxfdHJpZ2dlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50cmlnZ2VyKGUse3R5cGU6ZX0pfSxfcmVzaXplOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7ci5yZXNpemUuaW5kZXhPZihlLnR5cGUpIT09LTE/KGNsZWFyVGltZW91dCh0Ll9yZXNpemVUaW1lb3V0KSx0Ll9yZXNpemVUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0Ll9wb3NpdGlvbigpLHQuX3Jlc2l6ZVRpbWVvdXQ9bnVsbH0sNTApKTooIXQuX2hvdmVyZWR8fHQuX2FjdGl2YXRlZCYmdC5lbGVtZW50Lmhhc0NsYXNzKFwiay1saXN0LWNvbnRhaW5lclwiKSkmJnQuY2xvc2UoKX0sX3RvZ2dsZVJlc2l6ZTpmdW5jdGlvbihlKXt2YXIgdD1lP1wib25cIjpcIm9mZlwiLG89ci5yZXNpemU7ci5tb2JpbGVPUy5pb3N8fHIubW9iaWxlT1MuYW5kcm9pZHx8KG8rPVwiIFwiK0EpLHRoaXMuX3Njcm9sbGFibGVQYXJlbnRzKClbdF0oQSx0aGlzLl9yZXNpemVQcm94eSksSVt0XShvLHRoaXMuX3Jlc2l6ZVByb3h5KX0sX21vdXNlZG93bjpmdW5jdGlvbih0KXt2YXIgaT10aGlzLHM9aS5lbGVtZW50WzBdLHI9aS5vcHRpb25zLGE9ZShyLmFuY2hvcilbMF0sbD1yLnRvZ2dsZVRhcmdldCxwPW4uZXZlbnRUYXJnZXQodCksZD1lKHApLmNsb3Nlc3QoXCIuay1wb3B1cFwiKSxjPWQucGFyZW50KCkucGFyZW50KFwiLmttLXNoaW1cIikubGVuZ3RoO2Q9ZFswXSwhYyYmZCYmZCE9PWkuZWxlbWVudFswXXx8XCJwb3BvdmVyXCIhPT1lKHQudGFyZ2V0KS5jbG9zZXN0KFwiYVwiKS5kYXRhKFwicmVsXCIpJiYobyhzLHApfHxvKGEscCl8fGwmJm8oZShsKVswXSxwKXx8aS5jbG9zZSgpKX0sX2ZpdDpmdW5jdGlvbihlLHQsbyl7dmFyIG49MDtyZXR1cm4gZSt0Pm8mJihuPW8tKGUrdCkpLGU8MCYmKG49LWUpLG59LF9mbGlwOmZ1bmN0aW9uKGUsdCxvLG4saSxzLHIpe3ZhciBhPTA7cmV0dXJuIHI9cnx8dCxzIT09aSYmcyE9PW0mJmkhPT1tJiYoZStyPm4mJihhKz0tKG8rdCkpLGUrYTwwJiYoYSs9byt0KSksYX0sX3Njcm9sbGFibGVQYXJlbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcy5vcHRpb25zLmFuY2hvcikucGFyZW50c1VudGlsKFwiYm9keVwiKS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5pc1Njcm9sbGFibGUodCl9KX0sX3Bvc2l0aW9uOmZ1bmN0aW9uKHQpe3ZhciBvLGkscyxkLGMsZix1LG0saCxnLHcsdixrLHksQyx4LFQ9dGhpcyxQPVQuZWxlbWVudCxFPVQud3JhcHBlcixTPVQub3B0aW9ucyxPPWUoUy52aWV3cG9ydCksUj1yLnpvb21MZXZlbCgpLEk9ISEoT1swXT09d2luZG93JiZ3aW5kb3cuaW5uZXJXaWR0aCYmUjw9MS4wMiksQT1lKFMuYW5jaG9yKSxEPVMub3JpZ2luLnRvTG93ZXJDYXNlKCkuc3BsaXQoXCIgXCIpLEg9Uy5wb3NpdGlvbi50b0xvd2VyQ2FzZSgpLnNwbGl0KFwiIFwiKSxXPVQuY29sbGlzaW9ucyxqPTEwMDAyLE09MCxGPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtpZihjPVMudmlld3BvcnQ9PT13aW5kb3c/e3RvcDp3aW5kb3cucGFnZVlPZmZzZXR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fDAsbGVmdDp3aW5kb3cucGFnZVhPZmZzZXR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0fHwwfTpPLm9mZnNldCgpLEk/KGY9d2luZG93LmlubmVyV2lkdGgsdT13aW5kb3cuaW5uZXJIZWlnaHQpOihmPU8ud2lkdGgoKSx1PU8uaGVpZ2h0KCkpLEkmJkYuc2Nyb2xsSGVpZ2h0LUYuY2xpZW50SGVpZ2h0PjAmJihmLT1uLnN1cHBvcnQuc2Nyb2xsYmFyKCkpLG89QS5wYXJlbnRzKCkuZmlsdGVyKEUuc2libGluZ3MoKSksb1swXSlpZihzPU1hdGgubWF4KCtvLmNzcyhcInpJbmRleFwiKSwwKSlqPXMrMTA7ZWxzZSBmb3IoaT1BLnBhcmVudHNVbnRpbChvKSxkPWkubGVuZ3RoO008ZDtNKyspcz0rZShpW01dKS5jc3MoXCJ6SW5kZXhcIikscyYmajxzJiYoaj1zKzEwKTtyZXR1cm4gRS5jc3MoXCJ6SW5kZXhcIixqKSxFLmNzcyh0JiZ0LmlzRml4ZWQ/e2xlZnQ6dC54LHRvcDp0Lnl9OlQuX2FsaWduKEQsSCkpLG09YShFLGIsQVswXT09PUUub2Zmc2V0UGFyZW50KClbMF0pLGg9YShFKSxnPUEub2Zmc2V0UGFyZW50KCkucGFyZW50KFwiLmstYW5pbWF0aW9uLWNvbnRhaW5lciwuay1wb3B1cCwuay1ncm91cFwiKSxnLmxlbmd0aCYmKG09YShFLGIsITApLGg9YShFKSksaC50b3AtPWMudG9wLGgubGVmdC09Yy5sZWZ0LFQud3JhcHBlci5kYXRhKHopfHxFLmRhdGEoeixMKHt9LG0pKSx3PUwoe30saCksdj1MKHt9LG0pLGs9Uy5hZGp1c3RTaXplLFwiZml0XCI9PT1XWzBdJiYodi50b3ArPVQuX2ZpdCh3LnRvcCxwKEUpK2suaGVpZ2h0LHUvUikpLFwiZml0XCI9PT1XWzFdJiYodi5sZWZ0Kz1ULl9maXQody5sZWZ0LGwoRSkray53aWR0aCxmL1IpKSx5PUwoe30sdiksQz1wKFApLHg9cChFKSwhRS5oZWlnaHQoKSYmQyYmKHgrPUMpLFwiZmxpcFwiPT09V1swXSYmKHYudG9wKz1ULl9mbGlwKHcudG9wLEMscChBKSx1L1IsRFswXSxIWzBdLHgpKSxcImZsaXBcIj09PVdbMV0mJih2LmxlZnQrPVQuX2ZsaXAody5sZWZ0LGwoUCksbChBKSxmL1IsRFsxXSxIWzFdLGwoRSkpKSxQLmNzcyhiLF8pLEUuY3NzKHYpLHYubGVmdCE9eS5sZWZ0fHx2LnRvcCE9eS50b3B9LF9hbGlnbjpmdW5jdGlvbih0LG8pe3ZhciBuLGk9dGhpcyxzPWkud3JhcHBlcixyPWUoaS5vcHRpb25zLmFuY2hvciksZD10WzBdLGM9dFsxXSxmPW9bMF0sdT1vWzFdLGg9YShyKSx3PWUoaS5vcHRpb25zLmFwcGVuZFRvKSxfPWwocyksaz1wKHMpLHk9bChyKSx6PXAociksYj1oLnRvcCxDPWgubGVmdCx4PU1hdGgucm91bmQ7cmV0dXJuIHdbMF0hPWRvY3VtZW50LmJvZHkmJihuPWEodyksYi09bi50b3AsQy09bi5sZWZ0KSxkPT09diYmKGIrPXopLGQ9PT1tJiYoYis9eCh6LzIpKSxmPT09diYmKGItPWspLGY9PT1tJiYoYi09eChrLzIpKSxjPT09ZyYmKEMrPXkpLGM9PT1tJiYoQys9eCh5LzIpKSx1PT09ZyYmKEMtPV8pLHU9PT1tJiYoQy09eChfLzIpKSx7dG9wOmIsbGVmdDpDfX19KTtpLnBsdWdpbihNKX0od2luZG93LmtlbmRvLmpRdWVyeSksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsdCxvKXsob3x8dCkoKX0pOzshZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcInV0aWwvbWFpbi5taW5cIixbXCJrZW5kby5jb3JlLm1pblwiXSx0KX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3JldHVybiB0eXBlb2YgdCE9PUZ9ZnVuY3Rpb24gZSh0LGUpe3ZhciBpPW4oZSk7cmV0dXJuIHoucm91bmQodCppKS9pfWZ1bmN0aW9uIG4odCl7cmV0dXJuIHQ/ei5wb3coMTAsdCk6MX1mdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gei5tYXgoei5taW4odCxuKSxlKX1mdW5jdGlvbiByKHQpe3JldHVybiB0KkR9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdC9EfWZ1bmN0aW9uIHModCl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHQmJiFpc05hTih0KX1mdW5jdGlvbiBhKGUsbil7cmV0dXJuIHQoZSk/ZTpufWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQqdH1mdW5jdGlvbiBsKHQpe3ZhciBlLG49W107Zm9yKGUgaW4gdCluLnB1c2goZSt0W2VdKTtyZXR1cm4gbi5zb3J0KCkuam9pbihcIlwiKX1mdW5jdGlvbiBjKHQpe3ZhciBlLG49MjE2NjEzNjI2MTtmb3IoZT0wO2U8dC5sZW5ndGg7KytlKW4rPShuPDwxKSsobjw8NCkrKG48PDcpKyhuPDw4KSsobjw8MjQpLG5ePXQuY2hhckNvZGVBdChlKTtyZXR1cm4gbj4+PjB9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gYyhsKHQpKX1mdW5jdGlvbiBmKHQpe3ZhciBlLG49dC5sZW5ndGgsaT1MLHI9STtmb3IoZT0wO2U8bjtlKyspcj16Lm1heChyLHRbZV0pLGk9ei5taW4oaSx0W2VdKTtyZXR1cm57bWluOmksbWF4OnJ9fWZ1bmN0aW9uIGQodCl7cmV0dXJuIGYodCkubWlufWZ1bmN0aW9uIHAodCl7cmV0dXJuIGYodCkubWF4fWZ1bmN0aW9uIG0odCl7cmV0dXJuIHYodCkubWlufWZ1bmN0aW9uIGcodCl7cmV0dXJuIHYodCkubWF4fWZ1bmN0aW9uIHYodCl7dmFyIGUsbixpLHI9TCxvPUk7Zm9yKGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspaT10W2VdLG51bGwhPT1pJiZpc0Zpbml0ZShpKSYmKHI9ei5taW4ocixpKSxvPXoubWF4KG8saSkpO3JldHVybnttaW46cj09PUw/dm9pZCAwOnIsbWF4Om89PT1JP3ZvaWQgMDpvfX1mdW5jdGlvbiB4KHQpe2lmKHQpcmV0dXJuIHRbdC5sZW5ndGgtMV19ZnVuY3Rpb24geSh0LGUpe3JldHVybiB0LnB1c2guYXBwbHkodCxlKSx0fWZ1bmN0aW9uIHcodCl7cmV0dXJuIE0udGVtcGxhdGUodCx7dXNlV2l0aEJsb2NrOiExLHBhcmFtTmFtZTpcImRcIn0pfWZ1bmN0aW9uIGIoZSxuKXtyZXR1cm4gdChuKSYmbnVsbCE9PW4/XCIgXCIrZStcIj0nXCIrbitcIicgXCI6XCJcIn1mdW5jdGlvbiBfKHQpe3ZhciBlLG49XCJcIjtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKW4rPWIodFtlXVswXSx0W2VdWzFdKTtyZXR1cm4gbn1mdW5jdGlvbiBDKGUpe3ZhciBuLGkscj1cIlwiO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspaT1lW25dWzFdLHQoaSkmJihyKz1lW25dWzBdK1wiOlwiK2krXCI7XCIpO2lmKFwiXCIhPT1yKXJldHVybiByfWZ1bmN0aW9uIFQodCl7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIHQmJih0Kz1cInB4XCIpLHR9ZnVuY3Rpb24gayh0KXt2YXIgZSxuLGk9W107aWYodClmb3IoZT1NLnRvSHlwaGVucyh0KS5zcGxpdChcIi1cIiksbj0wO248ZS5sZW5ndGg7bisrKWkucHVzaChcImstcG9zLVwiK2Vbbl0pO3JldHVybiBpLmpvaW4oXCIgXCIpfWZ1bmN0aW9uIFMoZSl7cmV0dXJuXCJcIj09PWV8fG51bGw9PT1lfHxcIm5vbmVcIj09PWV8fFwidHJhbnNwYXJlbnRcIj09PWV8fCF0KGUpfWZ1bmN0aW9uIEUodCl7Zm9yKHZhciBlPXsxOlwiaVwiLDEwOlwieFwiLDEwMDpcImNcIiwyOlwiaWlcIiwyMDpcInh4XCIsMjAwOlwiY2NcIiwzOlwiaWlpXCIsMzA6XCJ4eHhcIiwzMDA6XCJjY2NcIiw0OlwiaXZcIiw0MDpcInhsXCIsNDAwOlwiY2RcIiw1OlwidlwiLDUwOlwibFwiLDUwMDpcImRcIiw2OlwidmlcIiw2MDpcImx4XCIsNjAwOlwiZGNcIiw3OlwidmlpXCIsNzA6XCJseHhcIiw3MDA6XCJkY2NcIiw4OlwidmlpaVwiLDgwOlwibHh4eFwiLDgwMDpcImRjY2NcIiw5OlwiaXhcIiw5MDpcInhjXCIsOTAwOlwiY21cIiwxZTM6XCJtXCJ9LG49WzFlMyw5MDAsODAwLDcwMCw2MDAsNTAwLDQwMCwzMDAsMjAwLDEwMCw5MCw4MCw3MCw2MCw1MCw0MCwzMCwyMCwxMCw5LDgsNyw2LDUsNCwzLDIsMV0saT1cIlwiO3Q+MDspdDxuWzBdP24uc2hpZnQoKTooaSs9ZVtuWzBdXSx0LT1uWzBdKTtyZXR1cm4gaX1mdW5jdGlvbiBQKHQpe3ZhciBlLG4saSxyLG87Zm9yKHQ9dC50b0xvd2VyQ2FzZSgpLGU9e2k6MSx2OjUseDoxMCxsOjUwLGM6MTAwLGQ6NTAwLG06MWUzfSxuPTAsaT0wLHI9MDtyPHQubGVuZ3RoOysrcil7aWYobz1lW3QuY2hhckF0KHIpXSwhbylyZXR1cm4gbnVsbDtuKz1vLG8+aSYmKG4tPTIqaSksaT1vfXJldHVybiBufWZ1bmN0aW9uIEEodCl7dmFyIGU9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbixpPVwiXCI7Zm9yKG49YXJndW1lbnRzLmxlbmd0aDstLW4+PTA7KWkrPVwiOlwiK2FyZ3VtZW50c1tuXTtyZXR1cm4gaSBpbiBlP2VbaV06ZVtpXT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gTyh0KXtmb3IodmFyIGUsbixpPVtdLHI9MCxvPXQubGVuZ3RoO3I8bzspZT10LmNoYXJDb2RlQXQocisrKSxlPj01NTI5NiYmZTw9NTYzMTkmJnI8bz8obj10LmNoYXJDb2RlQXQocisrKSw1NjMyMD09KDY0NTEyJm4pP2kucHVzaCgoKDEwMjMmZSk8PDEwKSsoMTAyMyZuKSs2NTUzNik6KGkucHVzaChlKSxyLS0pKTppLnB1c2goZSk7cmV0dXJuIGl9ZnVuY3Rpb24gTih0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7dmFyIGU9XCJcIjtyZXR1cm4gdD42NTUzNSYmKHQtPTY1NTM2LGUrPVN0cmluZy5mcm9tQ2hhckNvZGUodD4+PjEwJjEwMjN8NTUyOTYpLHQ9NTYzMjB8MTAyMyZ0KSxlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpfSkuam9pbihcIlwiKX1mdW5jdGlvbiBSKHQsZSl7ZnVuY3Rpb24gbih0LG4pe2Zvcih2YXIgaT1bXSxyPTAsbz0wLHM9MDtyPHQubGVuZ3RoJiZvPG4ubGVuZ3RoOyllKHRbcl0sbltvXSk8PTA/aVtzKytdPXRbcisrXTppW3MrK109bltvKytdO3JldHVybiByPHQubGVuZ3RoJiZpLnB1c2guYXBwbHkoaSx0LnNsaWNlKHIpKSxvPG4ubGVuZ3RoJiZpLnB1c2guYXBwbHkoaSxuLnNsaWNlKG8pKSxpfXJldHVybiB0Lmxlbmd0aDwyP3Quc2xpY2UoKTpmdW5jdGlvbiBpKHQpe3ZhciBlLHIsbztyZXR1cm4gdC5sZW5ndGg8PTE/dDooZT1NYXRoLmZsb29yKHQubGVuZ3RoLzIpLHI9dC5zbGljZSgwLGUpLG89dC5zbGljZShlKSxyPWkociksbz1pKG8pLG4ocixvKSl9KHQpfXZhciB6PU1hdGgsTT13aW5kb3cua2VuZG8sQj1NLmRlZXBFeHRlbmQsRD16LlBJLzE4MCxMPU51bWJlci5NQVhfVkFMVUUsST0tTnVtYmVyLk1BWF9WQUxVRSxGPVwidW5kZWZpbmVkXCIsRz1EYXRlLm5vdztHfHwoRz1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksQihNLHt1dGlsOntNQVhfTlVNOkwsTUlOX05VTTpJLGFwcGVuZDp5LGFycmF5TGltaXRzOmYsYXJyYXlNaW46ZCxhcnJheU1heDpwLGRlZmluZWQ6dCxkZWc6byxoYXNoS2V5OmMsaGFzaE9iamVjdDp1LGlzTnVtYmVyOnMsaXNUcmFuc3BhcmVudDpTLGxhc3Q6eCxsaW1pdFZhbHVlOmksbm93Okcsb2JqZWN0S2V5Omwscm91bmQ6ZSxyYWQ6cixyZW5kZXJBdHRyOmIscmVuZGVyQWxsQXR0cjpfLHJlbmRlclBvczprLHJlbmRlclNpemU6VCxyZW5kZXJTdHlsZTpDLHJlbmRlclRlbXBsYXRlOncsc3BhcnNlQXJyYXlMaW1pdHM6dixzcGFyc2VBcnJheU1pbjptLHNwYXJzZUFycmF5TWF4Omcsc3FyOmgsdmFsdWVPckRlZmF1bHQ6YSxyb21hblRvQXJhYmljOlAsYXJhYmljVG9Sb21hbjpFLG1lbW9pemU6QSx1Y3MyZW5jb2RlOk4sdWNzMmRlY29kZTpPLG1lcmdlU29ydDpSfX0pLE0uZHJhd2luZy51dGlsPU0udXRpbCxNLmRhdGF2aXoudXRpbD1NLnV0aWx9KCksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKHQsZSxuKXsobnx8ZSkoKX0pLGZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJ1dGlsL3RleHQtbWV0cmljcy5taW5cIixbXCJrZW5kby5jb3JlLm1pblwiLFwidXRpbC9tYWluLm1pblwiXSx0KX0oZnVuY3Rpb24oKXshZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybnt3aWR0aDowLGhlaWdodDowLGJhc2VsaW5lOjB9fWZ1bmN0aW9uIG4odCxlLG4pe3JldHVybiB1LmN1cnJlbnQubWVhc3VyZSh0LGUsbil9ZnVuY3Rpb24gaSh0LGUpe3ZhciBuPVtdO2lmKHQubGVuZ3RoPjAmJmRvY3VtZW50LmZvbnRzKXt0cnl7bj10Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuZm9udHMubG9hZCh0KX0pfWNhdGNoKGkpe28ubG9nVG9Db25zb2xlKGkpfVByb21pc2UuYWxsKG4pLnRoZW4oZSxlKX1lbHNlIGUoKX12YXIgcj1kb2N1bWVudCxvPXdpbmRvdy5rZW5kbyxzPW8uQ2xhc3MsYT1vLnV0aWwsaD1hLmRlZmluZWQsbD1zLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt0aGlzLl9zaXplPXQsdGhpcy5fbGVuZ3RoPTAsdGhpcy5fbWFwPXt9fSxwdXQ6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLGk9bi5fbWFwLHI9e2tleTp0LHZhbHVlOmV9O2lbdF09cixuLl9oZWFkPyhuLl90YWlsLm5ld2VyPXIsci5vbGRlcj1uLl90YWlsLG4uX3RhaWw9cik6bi5faGVhZD1uLl90YWlsPXIsbi5fbGVuZ3RoPj1uLl9zaXplPyhpW24uX2hlYWQua2V5XT1udWxsLG4uX2hlYWQ9bi5faGVhZC5uZXdlcixuLl9oZWFkLm9sZGVyPW51bGwpOm4uX2xlbmd0aCsrfSxnZXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWUuX21hcFt0XTtpZihuKXJldHVybiBuPT09ZS5faGVhZCYmbiE9PWUuX3RhaWwmJihlLl9oZWFkPW4ubmV3ZXIsZS5faGVhZC5vbGRlcj1udWxsKSxuIT09ZS5fdGFpbCYmKG4ub2xkZXImJihuLm9sZGVyLm5ld2VyPW4ubmV3ZXIsbi5uZXdlci5vbGRlcj1uLm9sZGVyKSxuLm9sZGVyPWUuX3RhaWwsbi5uZXdlcj1udWxsLGUuX3RhaWwubmV3ZXI9bixlLl90YWlsPW4pLG4udmFsdWV9fSksYz10KFwiPGRpdiBzdHlsZT0ncG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7IHRvcDogLTQwMDBweCAhaW1wb3J0YW50OyB3aWR0aDogYXV0byAhaW1wb3J0YW50OyBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1wb3J0YW50OyBib3JkZXI6IDAgIWltcG9ydGFudDtsaW5lLWhlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OyB3aGl0ZS1zcGFjZTogbm93cmFwIWltcG9ydGFudDsnIC8+XCIpWzBdLHU9cy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dGhpcy5fY2FjaGU9bmV3IGwoMWUzKSx0aGlzLl9pbml0T3B0aW9ucyh0KX0sb3B0aW9uczp7YmFzZWxpbmVNYXJrZXJTaXplOjF9LG1lYXN1cmU6ZnVuY3Rpb24obixpLG8pe3ZhciBzLGwsdSxmLGQscCxtLGc7aWYoIW4pcmV0dXJuIGUoKTtpZihzPWEub2JqZWN0S2V5KGkpLGw9YS5oYXNoS2V5KG4rcyksdT10aGlzLl9jYWNoZS5nZXQobCksdSlyZXR1cm4gdTtmPWUoKSxkPW8/bzpjLHA9dGhpcy5fYmFzZWxpbmVNYXJrZXIoKS5jbG9uZU5vZGUoITEpO2ZvcihtIGluIGkpZz1pW21dLGgoZykmJihkLnN0eWxlW21dPWcpO3JldHVybiB0KGQpLnRleHQobiksZC5hcHBlbmRDaGlsZChwKSxyLmJvZHkuYXBwZW5kQ2hpbGQoZCksKG4rXCJcIikubGVuZ3RoJiYoZi53aWR0aD1kLm9mZnNldFdpZHRoLXRoaXMub3B0aW9ucy5iYXNlbGluZU1hcmtlclNpemUsZi5oZWlnaHQ9ZC5vZmZzZXRIZWlnaHQsZi5iYXNlbGluZT1wLm9mZnNldFRvcCt0aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplKSxmLndpZHRoPjAmJmYuaGVpZ2h0PjAmJnRoaXMuX2NhY2hlLnB1dChsLGYpLGQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkKSxmfSxfYmFzZWxpbmVNYXJrZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdChcIjxkaXYgY2xhc3M9J2stYmFzZWxpbmUtbWFya2VyJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7d2lkdGg6IFwiK3RoaXMub3B0aW9ucy5iYXNlbGluZU1hcmtlclNpemUrXCJweDsgaGVpZ2h0OiBcIit0aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplK1wicHg7b3ZlcmZsb3c6IGhpZGRlbjsnIC8+XCIpWzBdfX0pO3UuY3VycmVudD1uZXcgdSxvLnV0aWwuVGV4dE1ldHJpY3M9dSxvLnV0aWwuTFJVQ2FjaGU9bCxvLnV0aWwubG9hZEZvbnRzPWksby51dGlsLm1lYXN1cmVUZXh0PW59KHdpbmRvdy5rZW5kby5qUXVlcnkpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKHQsZSxuKXsobnx8ZSkoKX0pLGZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJ1dGlsL2Jhc2U2NC5taW5cIixbXCJ1dGlsL21haW4ubWluXCJdLHQpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIG4saSxyLHMsYSxoLGwsYz1cIlwiLHU9MDtmb3IodD1lKHQpO3U8dC5sZW5ndGg7KW49dC5jaGFyQ29kZUF0KHUrKyksaT10LmNoYXJDb2RlQXQodSsrKSxyPXQuY2hhckNvZGVBdCh1KyspLHM9bj4+MixhPSgzJm4pPDw0fGk+PjQsaD0oMTUmaSk8PDJ8cj4+NixsPTYzJnIsaXNOYU4oaSk/aD1sPTY0OmlzTmFOKHIpJiYobD02NCksYz1jK28uY2hhckF0KHMpK28uY2hhckF0KGEpK28uY2hhckF0KGgpK28uY2hhckF0KGwpO3JldHVybiBjfWZ1bmN0aW9uIGUodCl7dmFyIGUsbixpPVwiXCI7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyluPXQuY2hhckNvZGVBdChlKSxuPDEyOD9pKz1yKG4pOm48MjA0OD8oaSs9cigxOTJ8bj4+PjYpLGkrPXIoMTI4fDYzJm4pKTpuPDY1NTM2JiYoaSs9cigyMjR8bj4+PjEyKSxpKz1yKDEyOHxuPj4+NiY2MyksaSs9cigxMjh8NjMmbikpO3JldHVybiBpfXZhciBuPXdpbmRvdy5rZW5kbyxpPW4uZGVlcEV4dGVuZCxyPVN0cmluZy5mcm9tQ2hhckNvZGUsbz1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCI7aShuLnV0aWwse2VuY29kZUJhc2U2NDp0LGVuY29kZVVURjg6ZX0pfSgpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsbil7KG58fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwibWl4aW5zL29ic2VydmVycy5taW5cIixbXCJrZW5kby5jb3JlLm1pblwiXSx0KX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9TWF0aCxuPXdpbmRvdy5rZW5kbyxpPW4uZGVlcEV4dGVuZCxyPXQuaW5BcnJheSxvPXtvYnNlcnZlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2JzZXJ2ZXJzPXRoaXMuX29ic2VydmVyc3x8W119LGFkZE9ic2VydmVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9vYnNlcnZlcnM/dGhpcy5fb2JzZXJ2ZXJzLnB1c2godCk6dGhpcy5fb2JzZXJ2ZXJzPVt0XSx0aGlzfSxyZW1vdmVPYnNlcnZlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm9ic2VydmVycygpLG49cih0LGUpO3JldHVybiBuIT0tMSYmZS5zcGxpY2UobiwxKSx0aGlzfSx0cmlnZ2VyOmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyPXRoaXMuX29ic2VydmVycztpZihyJiYhdGhpcy5fc3VzcGVuZGVkKWZvcihpPTA7aTxyLmxlbmd0aDtpKyspbj1yW2ldLG5bdF0mJm5bdF0oZSk7cmV0dXJuIHRoaXN9LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24odCl7dD10fHx7fSx0LmVsZW1lbnQ9dGhpcyx0aGlzLnRyaWdnZXIoXCJvcHRpb25zQ2hhbmdlXCIsdCl9LGdlb21ldHJ5Q2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyKFwiZ2VvbWV0cnlDaGFuZ2VcIix7ZWxlbWVudDp0aGlzfSl9LHN1c3BlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3VzcGVuZGVkPSh0aGlzLl9zdXNwZW5kZWR8fDApKzEsdGhpc30scmVzdW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N1c3BlbmRlZD1lLm1heCgodGhpcy5fc3VzcGVuZGVkfHwwKS0xLDApLHRoaXN9LF9vYnNlcnZlckZpZWxkOmZ1bmN0aW9uKHQsZSl7dGhpc1t0XSYmdGhpc1t0XS5yZW1vdmVPYnNlcnZlcih0aGlzKSx0aGlzW3RdPWUsZS5hZGRPYnNlcnZlcih0aGlzKX19O2kobix7bWl4aW5zOntPYnNlcnZlcnNNaXhpbjpvfX0pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KSx3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlLG4peyhufHxlKSgpfSksZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcImRyYXdpbmcvZ2VvbWV0cnkubWluXCIsW1widXRpbC9tYWluLm1pblwiLFwibWl4aW5zL29ic2VydmVycy5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtyZXR1cm4gbnVsbD09PXQ/bnVsbDp0IGluc3RhbmNlb2YgRT90Om5ldyBFKHQpfWZ1bmN0aW9uIGUodCl7cmV0dXJuIHQmJk4uaXNGdW5jdGlvbih0Lm1hdHJpeCk/dC5tYXRyaXgoKTp0fWZ1bmN0aW9uIG4odCxlLG4saSl7dmFyIHI9MCxvPTA7cmV0dXJuIGkmJihyPUEuYXRhbjIoaS5jKm4saS5hKmUpLDAhPT1pLmImJihvPUEuYXRhbjIoaS5kKm4saS5iKmUpKSkse3g6cix5Om99fWZ1bmN0aW9uIGkodCxlKXtmb3IoO3Q8ZTspdCs9OTA7cmV0dXJuIHR9ZnVuY3Rpb24gcih0LGUpe3ZhciBuLGkscjtmb3Iobj0wO248ZS5sZW5ndGg7bisrKWk9ZVtuXSxyPWkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkraS5zdWJzdHJpbmcoMSxpLmxlbmd0aCksdFtcInNldFwiK3JdPW8oaSksdFtcImdldFwiK3JdPXMoaSl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXNbdF0hPT1lJiYodGhpc1t0XT1lLHRoaXMuZ2VvbWV0cnlDaGFuZ2UoKSksdGhpc319ZnVuY3Rpb24gcyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t0XX19ZnVuY3Rpb24gYSh0LGUsbil7dD5lJiYoZSs9MzYwKTt2YXIgaT1BLmFicyhlLXQpO3JldHVybiBufHwoaT0zNjAtaSksaX1mdW5jdGlvbiBoKHQsZSxuLGkscixvKXt2YXIgcz1GKChyLXQpL24sMyksYT1GKChvLWUpL2ksMyk7cmV0dXJuIEYoSShBLmF0YW4yKGEscykpKX1mdW5jdGlvbiBsKHQsZSxuLGkscixvLHMsbCl7dmFyIGMsdSxmLGQscCxtLGcsdix4LHksdyxiLF8sQyxULGssUyxFO2lmKGUhPT1pKXg9bi10LHk9aS1lLHc9TyhyLDIpLGI9TyhvLDIpLF89KGIqeCoodCtuKSt3KnkqKGUraSkpLygyKncqeSksQz1fLWksVD0tKHgqYikvKHcqeSkscD0xL3crTyhULDIpL2IsbT0yKihUKkMvYi1uL3cpLGc9TyhuLDIpL3crTyhDLDIpL2ItMSx2PUEuc3FydChPKG0sMiktNCpwKmcpLGM9KC1tLXYpLygyKnApLHU9XytUKmMsZj0oLW0rdikvKDIqcCksZD1fK1QqZjtlbHNle2lmKHQ9PT1uKXJldHVybiExO209LTIqaSxnPU8oKG4tdCkqby8oMipyKSwyKStPKGksMiktTyhvLDIpLHY9QS5zcXJ0KE8obSwyKS00KmcpLGM9Zj0odCtuKS8yLHU9KC1tLXYpLzIsZD0oLW0rdikvMn1yZXR1cm4gaz1oKGMsdSxyLG8sdCxlKSxTPWgoYyx1LHIsbyxuLGkpLEU9YShrLFMsbCksKHMmJkU8PTE4MHx8IXMmJkU+MTgwKSYmKGM9Zix1PWQsaz1oKGMsdSxyLG8sdCxlKSxTPWgoYyx1LHIsbyxuLGkpKSx7Y2VudGVyOm5ldyAkKGMsdSksc3RhcnRBbmdsZTprLGVuZEFuZ2xlOlN9fWZ1bmN0aW9uIGModCxlLG4saSl7aWYoMD09PXQpcmV0dXJuIGIoZSxuLGkpO3ZhciByLG8scyxhLGgsbCxjLHU9KDMqdCpuLUEucG93KGUsMikpLygzKkEucG93KHQsMikpLGY9KDIqQS5wb3coZSwzKS05KnQqZSpuKzI3KkEucG93KHQsMikqaSkvKDI3KkEucG93KHQsMykpLGQ9QS5wb3codS8zLDMpK0EucG93KGYvMiwyKSxwPW5ldyBQKDAsMSksbT0tZS8oMyp0KSxnPVtdO3JldHVybiBkPDA/KHI9bmV3IFAoLWYvMixBLnNxcnQoLWQpKS5udGhSb290KDMpLG89bmV3IFAoLWYvMiwoLUEuc3FydCgtZCkpKS5udGhSb290KDMpKToocj0tZi8yK0Euc3FydChkKSxyPW5ldyBQKHgocikqQS5wb3coQS5hYnMociksMS8zKSksbz0tZi8yLUEuc3FydChkKSxvPW5ldyBQKHgobykqQS5wb3coQS5hYnMobyksMS8zKSkpLHM9ci5hZGQobyksbD1yLmFkZChvKS5tdWx0aXBseUNvbnN0YW50KC0uNSksYz1yLmFkZChvLm5lZ2F0ZSgpKS5tdWx0aXBseUNvbnN0YW50KEEuc3FydCgzKS8yKSxhPWwuYWRkKHAubXVsdGlwbHkoYykpLGg9bC5hZGQocC5uZWdhdGUoKS5tdWx0aXBseShjKSkscy5pc1JlYWwoKSYmZy5wdXNoKEYocy5yZWFsK20scSkpLGEuaXNSZWFsKCkmJmcucHVzaChGKGEucmVhbCttLHEpKSxoLmlzUmVhbCgpJiZnLnB1c2goRihoLnJlYWwrbSxxKSksZ31mdW5jdGlvbiB1KHQsZSl7cmV0dXJuWy10WzBdW2VdKzMqdFsxXVtlXS0zKnRbMl1bZV0rdFszXVtlXSwzKih0WzBdW2VdLTIqdFsxXVtlXSt0WzJdW2VdKSwzKigtdFswXVtlXSt0WzFdW2VdKSx0WzBdW2VdXX1mdW5jdGlvbiBmKHQsZSxuKXt2YXIgaT0xLXQ7cmV0dXJuIEEucG93KGksMykqblswXVtlXSszKkEucG93KGksMikqdCpuWzFdW2VdKzMqQS5wb3codCwyKSppKm5bMl1bZV0rQS5wb3codCwzKSpuWzNdW2VdfWZ1bmN0aW9uIGQodCxlLG4pe3ZhciBpLHIsbyxzPXUodCxcInhcIiksYT1jKHNbMF0sc1sxXSxzWzJdLHNbM10tZS54KSxoPTA7Zm9yKG89MDtvPGEubGVuZ3RoO28rKylpPWYoYVtvXSxcInlcIix0KSxyPWcoaSxlLnkpfHxpPmUueSxyJiYoKDA9PT1hW29dfHwxPT09YVtvXSkmJm4uYm90dG9tUmlnaHQoKS54PmUueHx8MDxhW29dJiZhW29dPDEpJiZoKys7cmV0dXJuIGh9ZnVuY3Rpb24gcCh0LGUsbil7dmFyIGkscixvLHMsYSxoO3JldHVybiB0LnghPWUueCYmKHI9QS5taW4odC54LGUueCksbz1BLm1heCh0LngsZS54KSxzPUEubWluKHQueSxlLnkpLGE9QS5tYXgodC55LGUueSksaD1yPD1uLngmJm4ueDxvLGk9cz09YT9uLnk8PXMmJmg6aCYmKGEtcykqKCh0LngtZS54KSoodC55LWUueSk+MD9uLngtcjpvLW4ueCkvKG8tcikrcy1uLnk+PTApLGk/MTowfWZ1bmN0aW9uIG0odCxlLG4saSl7dmFyIHI9ZS54LXQueCxvPWkueC1uLngscz1lLnktdC55LGE9aS55LW4ueSxoPXQueC1uLngsbD10Lnktbi55LGM9ciphLW8qcyx1PShyKmwtcypoKS9jLGY9KG8qbC1hKmgpL2M7aWYodT49MCYmdTw9MSYmZj49MCYmZjw9MSlyZXR1cm4gbmV3ICQodC54K2Yqcix0LnkrZipzKX1mdW5jdGlvbiBnKHQsZSxuKXtyZXR1cm4gMD09PUYoQS5hYnModC1lKSxufHxxKX1mdW5jdGlvbiB2KHQsZSxuKXtyZXR1cm4gdDxlfHxnKHQsZSxuKX1mdW5jdGlvbiB4KHQpe3JldHVybiB0PDA/LTE6MX1mdW5jdGlvbiB5KGUsbixpKXt2YXIgcj1CLmRlZyhBLmF0YW4yKG4ueS1lLnksbi54LWUueCkpLG89aS50cmFuc2Zvcm1Db3B5KHQoKS5yb3RhdGUoLXIsZSkpO3JldHVybiBvLng8ZS54fWZ1bmN0aW9uIHcodCxlLG4saSxyKXt2YXIgbyxzLGE9dSh0LGkpLGg9YyhhWzBdLGFbMV0sYVsyXSxhWzNdLWVbaV0pO2ZvcihzPTA7czxoLmxlbmd0aDtzKyspaWYoMDw9aFtzXSYmaFtzXTw9MSYmKG89ZihoW3NdLG4sdCksQS5hYnMoby1lW25dKTw9cikpcmV0dXJuITB9ZnVuY3Rpb24gYih0LGUsbil7dmFyIGk9QS5zcXJ0KEEucG93KGUsMiktNCp0Km4pO3JldHVyblsoLWUraSkvKDIqdCksKC1lLWkpLygyKnQpXX12YXIgXyxDLFQsayxTLEUsUCxBPU1hdGgsTz1BLnBvdyxOPXdpbmRvdy5rZW5kbyxSPU4uQ2xhc3Msej1OLmRlZXBFeHRlbmQsTT1OLm1peGlucy5PYnNlcnZlcnNNaXhpbixCPU4udXRpbCxEPUIuZGVmaW5lZCxMPUIucmFkLEk9Qi5kZWcsRj1CLnJvdW5kLEc9QS5QSS8yLGo9Qi5NSU5fTlVNLEg9Qi5NQVhfTlVNLHE9MTAsJD1SLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3RoaXMueD10fHwwLHRoaXMueT1lfHwwfSxlcXVhbHM6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQueD09PXRoaXMueCYmdC55PT09dGhpcy55fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgJCh0aGlzLngsdGhpcy55KX0scm90YXRlOmZ1bmN0aW9uKGUsbil7cmV0dXJuIHRoaXMudHJhbnNmb3JtKHQoKS5yb3RhdGUoZSxuKSl9LHRyYW5zbGF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz1lLHRoaXMuZ2VvbWV0cnlDaGFuZ2UoKSx0aGlzfSx0cmFuc2xhdGVXaXRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZSh0LngsdC55KX0sbW92ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLng9dGhpcy55PTAsdGhpcy50cmFuc2xhdGUodCxlKX0sc2NhbGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gRChlKXx8KGU9dCksdGhpcy54Kj10LHRoaXMueSo9ZSx0aGlzLmdlb21ldHJ5Q2hhbmdlKCksdGhpc30sc2NhbGVDb3B5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5zY2FsZSh0LGUpfSx0cmFuc2Zvcm06ZnVuY3Rpb24odCl7dmFyIG49ZSh0KSxpPXRoaXMueCxyPXRoaXMueTtyZXR1cm4gdGhpcy54PW4uYSppK24uYypyK24uZSx0aGlzLnk9bi5iKmkrbi5kKnIrbi5mLHRoaXMuZ2VvbWV0cnlDaGFuZ2UoKSx0aGlzfSx0cmFuc2Zvcm1Db3B5OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2xvbmUoKTtyZXR1cm4gdCYmZS50cmFuc2Zvcm0odCksZX0sZGlzdGFuY2VUbzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLngtdC54LG49dGhpcy55LXQueTtyZXR1cm4gQS5zcXJ0KGUqZStuKm4pfSxyb3VuZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54PUYodGhpcy54LHQpLHRoaXMueT1GKHRoaXMueSx0KSx0aGlzLmdlb21ldHJ5Q2hhbmdlKCksdGhpc30sdG9BcnJheTpmdW5jdGlvbih0KXt2YXIgZT1EKHQpLG49ZT9GKHRoaXMueCx0KTp0aGlzLngsaT1lP0YodGhpcy55LHQpOnRoaXMueTtyZXR1cm5bbixpXX19KTtyKCQuZm4sW1wieFwiLFwieVwiXSkseigkLmZuLE0pLCQuZm4udG9TdHJpbmc9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLngsaT10aGlzLnk7cmV0dXJuIEQodCkmJihuPUYobix0KSxpPUYoaSx0KSksZT1lfHxcIiBcIixuK2UraX0sJC5jcmVhdGU9ZnVuY3Rpb24odCxlKXtpZihEKHQpKXJldHVybiB0IGluc3RhbmNlb2YgJD90OjE9PT1hcmd1bWVudHMubGVuZ3RoJiYyPT09dC5sZW5ndGg/bmV3ICQodFswXSx0WzFdKTpuZXcgJCh0LGUpfSwkLm1pbj1mdW5jdGlvbigpe3ZhciB0LGUsbj1CLk1BWF9OVU0saT1CLk1BWF9OVU07Zm9yKHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWU9YXJndW1lbnRzW3RdLG49QS5taW4oZS54LG4pLGk9QS5taW4oZS55LGkpO3JldHVybiBuZXcgJChuLGkpfSwkLm1heD1mdW5jdGlvbigpe3ZhciB0LGUsbj1CLk1JTl9OVU0saT1CLk1JTl9OVU07Zm9yKHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWU9YXJndW1lbnRzW3RdLG49QS5tYXgoZS54LG4pLGk9QS5tYXgoZS55LGkpO3JldHVybiBuZXcgJChuLGkpfSwkLm1pblBvaW50PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyAkKGosail9LCQubWF4UG9pbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3ICQoSCxIKX0sJC5aRVJPPW5ldyAkKDAsMCksXz1SLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3RoaXMud2lkdGg9dHx8MCx0aGlzLmhlaWdodD1lfHwwfSxlcXVhbHM6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQud2lkdGg9PT10aGlzLndpZHRoJiZ0LmhlaWdodD09PXRoaXMuaGVpZ2h0fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgXyh0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KX0sdG9BcnJheTpmdW5jdGlvbih0KXt2YXIgZT1EKHQpLG49ZT9GKHRoaXMud2lkdGgsdCk6dGhpcy53aWR0aCxpPWU/Rih0aGlzLmhlaWdodCx0KTp0aGlzLmhlaWdodDtyZXR1cm5bbixpXX19KSxyKF8uZm4sW1wid2lkdGhcIixcImhlaWdodFwiXSkseihfLmZuLE0pLF8uY3JlYXRlPWZ1bmN0aW9uKHQsZSl7aWYoRCh0KSlyZXR1cm4gdCBpbnN0YW5jZW9mIF8/dDoxPT09YXJndW1lbnRzLmxlbmd0aCYmMj09PXQubGVuZ3RoP25ldyBfKHRbMF0sdFsxXSk6bmV3IF8odCxlKX0sXy5aRVJPPW5ldyBfKDAsMCksQz1SLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3RoaXMuc2V0T3JpZ2luKHR8fG5ldyAkKSx0aGlzLnNldFNpemUoZXx8bmV3IF8pfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgQyh0aGlzLm9yaWdpbi5jbG9uZSgpLHRoaXMuc2l6ZS5jbG9uZSgpKX0sZXF1YWxzOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Lm9yaWdpbi5lcXVhbHModGhpcy5vcmlnaW4pJiZ0LnNpemUuZXF1YWxzKHRoaXMuc2l6ZSl9LHNldE9yaWdpbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb2JzZXJ2ZXJGaWVsZChcIm9yaWdpblwiLCQuY3JlYXRlKHQpKSx0aGlzLmdlb21ldHJ5Q2hhbmdlKCksdGhpc30sZ2V0T3JpZ2luOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3JpZ2lufSxzZXRTaXplOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9vYnNlcnZlckZpZWxkKFwic2l6ZVwiLF8uY3JlYXRlKHQpKSx0aGlzLmdlb21ldHJ5Q2hhbmdlKCksdGhpc30sZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpemV9LHdpZHRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l6ZS53aWR0aH0saGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l6ZS5oZWlnaHR9LHRvcExlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcmlnaW4uY2xvbmUoKX0sYm90dG9tUmlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcmlnaW4uY2xvbmUoKS50cmFuc2xhdGUodGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCkpfSx0b3BSaWdodDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9yaWdpbi5jbG9uZSgpLnRyYW5zbGF0ZSh0aGlzLndpZHRoKCksMCl9LGJvdHRvbUxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcmlnaW4uY2xvbmUoKS50cmFuc2xhdGUoMCx0aGlzLmhlaWdodCgpKX0sY2VudGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3JpZ2luLmNsb25lKCkudHJhbnNsYXRlKHRoaXMud2lkdGgoKS8yLHRoaXMuaGVpZ2h0KCkvMil9LGJib3g6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy50b3BMZWZ0KCkudHJhbnNmb3JtQ29weSh0KSxuPXRoaXMudG9wUmlnaHQoKS50cmFuc2Zvcm1Db3B5KHQpLGk9dGhpcy5ib3R0b21SaWdodCgpLnRyYW5zZm9ybUNvcHkodCkscj10aGlzLmJvdHRvbUxlZnQoKS50cmFuc2Zvcm1Db3B5KHQpO3JldHVybiBDLmZyb21Qb2ludHMoZSxuLGkscil9LHRyYW5zZm9ybUNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIEMuZnJvbVBvaW50cyh0aGlzLnRvcExlZnQoKS50cmFuc2Zvcm0odCksdGhpcy5ib3R0b21SaWdodCgpLnRyYW5zZm9ybSh0KSl9LGV4cGFuZDpmdW5jdGlvbih0LGUpe3JldHVybiBEKGUpfHwoZT10KSx0aGlzLnNpemUud2lkdGgrPTIqdCx0aGlzLnNpemUuaGVpZ2h0Kz0yKmUsdGhpcy5vcmlnaW4udHJhbnNsYXRlKC10LC1lKSx0aGlzfSxleHBhbmRDb3B5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5leHBhbmQodCxlKX0sY29udGFpbnNQb2ludDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm9yaWdpbixuPXRoaXMuYm90dG9tUmlnaHQoKTtyZXR1cm4hKHQueDxlLnh8fHQueTxlLnl8fG4ueDx0Lnh8fG4ueTx0LnkpfSxfaXNPblBhdGg6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmV4cGFuZENvcHkoZSxlKSxpPXRoaXMuZXhwYW5kQ29weSgtZSwtZSk7cmV0dXJuIG4uY29udGFpbnNQb2ludCh0KSYmIWkuY29udGFpbnNQb2ludCh0KX19KSx6KEMuZm4sTSksQy5mcm9tUG9pbnRzPWZ1bmN0aW9uKCl7dmFyIHQ9JC5taW4uYXBwbHkodGhpcyxhcmd1bWVudHMpLGU9JC5tYXguYXBwbHkodGhpcyxhcmd1bWVudHMpLG49bmV3IF8oZS54LXQueCxlLnktdC55KTtyZXR1cm4gbmV3IEModCxuKX0sQy51bmlvbj1mdW5jdGlvbih0LGUpe3JldHVybiBDLmZyb21Qb2ludHMoJC5taW4odC50b3BMZWZ0KCksZS50b3BMZWZ0KCkpLCQubWF4KHQuYm90dG9tUmlnaHQoKSxlLmJvdHRvbVJpZ2h0KCkpKX0sQy5pbnRlcnNlY3Q9ZnVuY3Rpb24odCxlKXtpZih0PXtsZWZ0OnQudG9wTGVmdCgpLngsdG9wOnQudG9wTGVmdCgpLnkscmlnaHQ6dC5ib3R0b21SaWdodCgpLngsYm90dG9tOnQuYm90dG9tUmlnaHQoKS55fSxlPXtsZWZ0OmUudG9wTGVmdCgpLngsdG9wOmUudG9wTGVmdCgpLnkscmlnaHQ6ZS5ib3R0b21SaWdodCgpLngsYm90dG9tOmUuYm90dG9tUmlnaHQoKS55fSx0LmxlZnQ8PWUucmlnaHQmJmUubGVmdDw9dC5yaWdodCYmdC50b3A8PWUuYm90dG9tJiZlLnRvcDw9dC5ib3R0b20pcmV0dXJuIEMuZnJvbVBvaW50cyhuZXcgJChBLm1heCh0LmxlZnQsZS5sZWZ0KSxBLm1heCh0LnRvcCxlLnRvcCkpLG5ldyAkKEEubWluKHQucmlnaHQsZS5yaWdodCksQS5taW4odC5ib3R0b20sZS5ib3R0b20pKSl9LFQ9Ui5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0aGlzLnNldENlbnRlcih0fHxuZXcgJCksdGhpcy5zZXRSYWRpdXMoZXx8MCl9LHNldENlbnRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb2JzZXJ2ZXJGaWVsZChcImNlbnRlclwiLCQuY3JlYXRlKHQpKSx0aGlzLmdlb21ldHJ5Q2hhbmdlKCksdGhpc30sZ2V0Q2VudGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2VudGVyfSxlcXVhbHM6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuY2VudGVyLmVxdWFscyh0aGlzLmNlbnRlcikmJnQucmFkaXVzPT09dGhpcy5yYWRpdXN9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBUKHRoaXMuY2VudGVyLmNsb25lKCksdGhpcy5yYWRpdXMpfSxwb2ludEF0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludEF0KEwodCkpfSxiYm94OmZ1bmN0aW9uKHQpe3ZhciBlLGkscixvLHM9JC5tYXhQb2ludCgpLGE9JC5taW5Qb2ludCgpLGg9bih0aGlzLmNlbnRlcix0aGlzLnJhZGl1cyx0aGlzLnJhZGl1cyx0KTtmb3IoZT0wO2U8NDtlKyspaT10aGlzLl9wb2ludEF0KGgueCtlKkcpLnRyYW5zZm9ybUNvcHkodCkscj10aGlzLl9wb2ludEF0KGgueStlKkcpLnRyYW5zZm9ybUNvcHkodCksbz1uZXcgJChpLngsci55KSxzPSQubWluKHMsbyksYT0kLm1heChhLG8pO3JldHVybiBDLmZyb21Qb2ludHMocyxhKX0sX3BvaW50QXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jZW50ZXIsbj10aGlzLnJhZGl1cztyZXR1cm4gbmV3ICQoZS54LW4qQS5jb3ModCksZS55LW4qQS5zaW4odCkpfSxjb250YWluc1BvaW50OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2VudGVyLG49QS5wb3codC54LWUueCwyKStBLnBvdyh0LnktZS55LDIpPD1BLnBvdyh0aGlzLnJhZGl1cywyKTtyZXR1cm4gbn0sX2lzT25QYXRoOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5jZW50ZXIsaT10aGlzLnJhZGl1cyxyPW4uZGlzdGFuY2VUbyh0KTtyZXR1cm4gaS1lPD1yJiZyPD1pK2V9fSkscihULmZuLFtcInJhZGl1c1wiXSkseihULmZuLE0pLGs9Ui5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0aGlzLnNldENlbnRlcih0fHxuZXcgJCksZT1lfHx7fSx0aGlzLnJhZGl1c1g9ZS5yYWRpdXNYLHRoaXMucmFkaXVzWT1lLnJhZGl1c1l8fGUucmFkaXVzWCx0aGlzLnN0YXJ0QW5nbGU9ZS5zdGFydEFuZ2xlLHRoaXMuZW5kQW5nbGU9ZS5lbmRBbmdsZSx0aGlzLmFudGljbG9ja3dpc2U9ZS5hbnRpY2xvY2t3aXNlfHwhMX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGsodGhpcy5jZW50ZXIse3JhZGl1c1g6dGhpcy5yYWRpdXNYLHJhZGl1c1k6dGhpcy5yYWRpdXNZLHN0YXJ0QW5nbGU6dGhpcy5zdGFydEFuZ2xlLGVuZEFuZ2xlOnRoaXMuZW5kQW5nbGUsYW50aWNsb2Nrd2lzZTp0aGlzLmFudGljbG9ja3dpc2V9KX0sc2V0Q2VudGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9vYnNlcnZlckZpZWxkKFwiY2VudGVyXCIsJC5jcmVhdGUodCkpLHRoaXMuZ2VvbWV0cnlDaGFuZ2UoKSx0aGlzfSxnZXRDZW50ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jZW50ZXJ9LE1BWF9JTlRFUlZBTDo0NSxwb2ludEF0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2VudGVyLG49TCh0KTtyZXR1cm4gbmV3ICQoZS54K3RoaXMucmFkaXVzWCpBLmNvcyhuKSxlLnkrdGhpcy5yYWRpdXNZKkEuc2luKG4pKX0sY3VydmVQb2ludHM6ZnVuY3Rpb24oKXt2YXIgdCxlLG4saT10aGlzLnN0YXJ0QW5nbGUscj10aGlzLmFudGljbG9ja3dpc2U/LTE6MSxvPVt0aGlzLnBvaW50QXQoaSldLHM9aSxhPXRoaXMuX2FyY0ludGVydmFsKCksaD1hLmVuZEFuZ2xlLWEuc3RhcnRBbmdsZSxsPUEuY2VpbChoL3RoaXMuTUFYX0lOVEVSVkFMKSxjPWgvbDtmb3IodD0xO3Q8PWw7dCsrKWU9cytyKmMsbj10aGlzLl9pbnRlcnZhbEN1cnZlUG9pbnRzKHMsZSksby5wdXNoKG4uY3AxLG4uY3AyLG4ucDIpLHM9ZTtyZXR1cm4gb30sYmJveDpmdW5jdGlvbih0KXtmb3IodmFyIGUscixvPXRoaXMscz1vLl9hcmNJbnRlcnZhbCgpLGE9cy5zdGFydEFuZ2xlLGg9cy5lbmRBbmdsZSxsPW4odGhpcy5jZW50ZXIsdGhpcy5yYWRpdXNYLHRoaXMucmFkaXVzWSx0KSxjPUkobC54KSx1PUkobC55KSxmPW8ucG9pbnRBdChhKS50cmFuc2Zvcm1Db3B5KHQpLGQ9by5wb2ludEF0KGgpLnRyYW5zZm9ybUNvcHkodCkscD0kLm1pbihmLGQpLG09JC5tYXgoZixkKSxnPWkoYyxhKSx2PWkodSxhKTtnPGh8fHY8aDspZzxoJiYoZT1vLnBvaW50QXQoZykudHJhbnNmb3JtQ29weSh0KSxnKz05MCksdjxoJiYocj1vLnBvaW50QXQodikudHJhbnNmb3JtQ29weSh0KSx2Kz05MCksZj1uZXcgJChlLngsci55KSxwPSQubWluKHAsZiksbT0kLm1heChtLGYpO3JldHVybiBDLmZyb21Qb2ludHMocCxtKX0sX2FyY0ludGVydmFsOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnN0YXJ0QW5nbGUsbj10aGlzLmVuZEFuZ2xlLGk9dGhpcy5hbnRpY2xvY2t3aXNlO3JldHVybiBpJiYodD1lLGU9bixuPXQpLChlPm58fGkmJmU9PT1uKSYmKG4rPTM2MCkse3N0YXJ0QW5nbGU6ZSxlbmRBbmdsZTpufX0sX2ludGVydmFsQ3VydmVQb2ludHM6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLGk9bi5wb2ludEF0KHQpLHI9bi5wb2ludEF0KGUpLG89bi5fZGVyaXZhdGl2ZUF0KHQpLHM9bi5fZGVyaXZhdGl2ZUF0KGUpLGE9KEwoZSktTCh0KSkvMyxoPW5ldyAkKGkueCthKm8ueCxpLnkrYSpvLnkpLGw9bmV3ICQoci54LWEqcy54LHIueS1hKnMueSk7cmV0dXJue3AxOmksY3AxOmgsY3AyOmwscDI6cn19LF9kZXJpdmF0aXZlQXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPUwodCk7cmV0dXJuIG5ldyAkKC1lLnJhZGl1c1gqQS5zaW4obiksZS5yYWRpdXNZKkEuY29zKG4pKX0sY29udGFpbnNQb2ludDpmdW5jdGlvbih0KXt2YXIgZSxuLGkscj10aGlzLl9hcmNJbnRlcnZhbCgpLG89ci5lbmRBbmdsZS1yLnN0YXJ0QW5nbGUscz10aGlzLmNlbnRlcixhPXMuZGlzdGFuY2VUbyh0KSxsPUEuYXRhbjIodC55LXMueSx0Lngtcy54KSxjPXRoaXMucmFkaXVzWCp0aGlzLnJhZGl1c1kvQS5zcXJ0KEEucG93KHRoaXMucmFkaXVzWCwyKSpBLnBvdyhBLnNpbihsKSwyKStBLnBvdyh0aGlzLnJhZGl1c1ksMikqQS5wb3coQS5jb3MobCksMikpLHU9dGhpcy5wb2ludEF0KHRoaXMuc3RhcnRBbmdsZSkucm91bmQocSksZj10aGlzLnBvaW50QXQodGhpcy5lbmRBbmdsZSkucm91bmQocSksZD1tKHMsdC5yb3VuZChxKSx1LGYpO3JldHVybiBvPDE4MD9lPWQmJnYocy5kaXN0YW5jZVRvKGQpLGEpJiZ2KGEsYyk6KG49aChzLngscy55LHRoaXMucmFkaXVzWCx0aGlzLnJhZGl1c1ksdC54LHQueSksMzYwIT1uJiYobj0oMzYwK24pJTM2MCksaT1yLnN0YXJ0QW5nbGU8PW4mJm48PXIuZW5kQW5nbGUsZT1pJiZ2KGEsYyl8fCFpJiYoIWR8fGQuZXF1YWxzKHQpKSksZX0sX2lzT25QYXRoOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLl9hcmNJbnRlcnZhbCgpLHI9dGhpcy5jZW50ZXIsbz1oKHIueCxyLnksdGhpcy5yYWRpdXNYLHRoaXMucmFkaXVzWSx0LngsdC55KTtyZXR1cm4gMzYwIT1vJiYobz0oMzYwK28pJTM2MCksbj1pLnN0YXJ0QW5nbGU8PW8mJm88PWkuZW5kQW5nbGUsbiYmdGhpcy5wb2ludEF0KG8pLmRpc3RhbmNlVG8odCk8PWV9fSkscihrLmZuLFtcInJhZGl1c1hcIixcInJhZGl1c1lcIixcInN0YXJ0QW5nbGVcIixcImVuZEFuZ2xlXCIsXCJhbnRpY2xvY2t3aXNlXCJdKSx6KGsuZm4sTSksay5mcm9tUG9pbnRzPWZ1bmN0aW9uKHQsZSxuLGkscixvKXt2YXIgcz1sKHQueCx0LnksZS54LGUueSxuLGkscixvKTtyZXR1cm4gbmV3IGsocy5jZW50ZXIse3N0YXJ0QW5nbGU6cy5zdGFydEFuZ2xlLGVuZEFuZ2xlOnMuZW5kQW5nbGUscmFkaXVzWDpuLHJhZGl1c1k6aSxhbnRpY2xvY2t3aXNlOjA9PT1vfSl9LFM9Ui5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlLG4saSxyLG8pe3RoaXMuYT10fHwwLHRoaXMuYj1lfHwwLHRoaXMuYz1ufHwwLHRoaXMuZD1pfHwwLHRoaXMuZT1yfHwwLHRoaXMuZj1vfHwwfSxtdWx0aXBseUNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBTKHRoaXMuYSp0LmErdGhpcy5jKnQuYix0aGlzLmIqdC5hK3RoaXMuZCp0LmIsdGhpcy5hKnQuYyt0aGlzLmMqdC5kLHRoaXMuYip0LmMrdGhpcy5kKnQuZCx0aGlzLmEqdC5lK3RoaXMuYyp0LmYrdGhpcy5lLHRoaXMuYip0LmUrdGhpcy5kKnQuZit0aGlzLmYpfSxpbnZlcnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmEsZT10aGlzLmIsbj10aGlzLmMsaT10aGlzLmQscj10aGlzLmUsbz10aGlzLmYscz10KmktZSpuO3JldHVybiAwPT09cz9udWxsOm5ldyBTKGkvcywtZS9zLC1uL3MsdC9zLChuKm8taSpyKS9zLChlKnItdCpvKS9zKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFModGhpcy5hLHRoaXMuYix0aGlzLmMsdGhpcy5kLHRoaXMuZSx0aGlzLmYpfSxlcXVhbHM6ZnVuY3Rpb24odCl7cmV0dXJuISF0JiYodGhpcy5hPT09dC5hJiZ0aGlzLmI9PT10LmImJnRoaXMuYz09PXQuYyYmdGhpcy5kPT09dC5kJiZ0aGlzLmU9PT10LmUmJnRoaXMuZj09PXQuZil9LHJvdW5kOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmE9Rih0aGlzLmEsdCksdGhpcy5iPUYodGhpcy5iLHQpLHRoaXMuYz1GKHRoaXMuYyx0KSx0aGlzLmQ9Rih0aGlzLmQsdCksdGhpcy5lPUYodGhpcy5lLHQpLHRoaXMuZj1GKHRoaXMuZix0KSx0aGlzfSx0b0FycmF5OmZ1bmN0aW9uKHQpe3ZhciBlLG49W3RoaXMuYSx0aGlzLmIsdGhpcy5jLHRoaXMuZCx0aGlzLmUsdGhpcy5mXTtpZihEKHQpKWZvcihlPTA7ZTxuLmxlbmd0aDtlKyspbltlXT1GKG5bZV0sdCk7cmV0dXJuIG59fSksUy5mbi50b1N0cmluZz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnRvQXJyYXkodCkuam9pbihlfHxcIixcIil9LFMudHJhbnNsYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBTKDEsMCwwLDEsdCxlKX0sUy51bml0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBTKDEsMCwwLDEsMCwwKX0sUy5yb3RhdGU9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPW5ldyBTO3JldHVybiBpLmE9QS5jb3MoTCh0KSksaS5iPUEuc2luKEwodCkpLGkuYz0taS5iLGkuZD1pLmEsaS5lPWUtZSppLmErbippLmJ8fDAsaS5mPW4tbippLmEtZSppLmJ8fDAsaX0sUy5zY2FsZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgUyh0LDAsMCxlLDAsMCl9LFMuSURFTlRJVFk9Uy51bml0KCksRT1SLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt0aGlzLl9tYXRyaXg9dHx8Uy51bml0KCl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBFKHRoaXMuX21hdHJpeC5jbG9uZSgpKX0sZXF1YWxzOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Ll9tYXRyaXguZXF1YWxzKHRoaXMuX21hdHJpeCl9LF9vcHRpb25zQ2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zQ2hhbmdlKHtmaWVsZDpcInRyYW5zZm9ybVwiLHZhbHVlOnRoaXN9KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX21hdHJpeD10aGlzLl9tYXRyaXgubXVsdGlwbHlDb3B5KFMudHJhbnNsYXRlKHQsZSkpLHRoaXMuX29wdGlvbnNDaGFuZ2UoKSx0aGlzfSxzY2FsZTpmdW5jdGlvbih0LGUsbil7cmV0dXJuIEQoZSl8fChlPXQpLG4mJihuPSQuY3JlYXRlKG4pLHRoaXMuX21hdHJpeD10aGlzLl9tYXRyaXgubXVsdGlwbHlDb3B5KFMudHJhbnNsYXRlKG4ueCxuLnkpKSksdGhpcy5fbWF0cml4PXRoaXMuX21hdHJpeC5tdWx0aXBseUNvcHkoUy5zY2FsZSh0LGUpKSxuJiYodGhpcy5fbWF0cml4PXRoaXMuX21hdHJpeC5tdWx0aXBseUNvcHkoUy50cmFuc2xhdGUoLW4ueCwtbi55KSkpLHRoaXMuX29wdGlvbnNDaGFuZ2UoKSx0aGlzfSxyb3RhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT0kLmNyZWF0ZShlKXx8JC5aRVJPLHRoaXMuX21hdHJpeD10aGlzLl9tYXRyaXgubXVsdGlwbHlDb3B5KFMucm90YXRlKHQsZS54LGUueSkpLHRoaXMuX29wdGlvbnNDaGFuZ2UoKSx0aGlzfSxtdWx0aXBseTpmdW5jdGlvbih0KXt2YXIgbj1lKHQpO3JldHVybiB0aGlzLl9tYXRyaXg9dGhpcy5fbWF0cml4Lm11bHRpcGx5Q29weShuKSx0aGlzLl9vcHRpb25zQ2hhbmdlKCksdGhpc30sbWF0cml4OmZ1bmN0aW9uKHQpe3JldHVybiB0Pyh0aGlzLl9tYXRyaXg9dCx0aGlzLl9vcHRpb25zQ2hhbmdlKCksdGhpcyk6dGhpcy5fbWF0cml4fX0pLHooRS5mbixNKSxQPWZ1bmN0aW9uKHQsZSl7dGhpcy5yZWFsPXR8fDAsdGhpcy5pbWc9ZXx8MH0sUC5mbj1QLnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUChGKHRoaXMucmVhbCt0LnJlYWwscSksRih0aGlzLmltZyt0LmltZyxxKSl9LGFkZENvbnN0YW50OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUCh0aGlzLnJlYWwrdCx0aGlzLmltZyl9LG5lZ2F0ZTpmdW5jdGlvbigpe3JldHVybiBuZXcgUCgoLXRoaXMucmVhbCksKC10aGlzLmltZykpfSxtdWx0aXBseTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFAodGhpcy5yZWFsKnQucmVhbC10aGlzLmltZyp0LmltZyx0aGlzLnJlYWwqdC5pbWcrdGhpcy5pbWcqdC5yZWFsKX0sbXVsdGlwbHlDb25zdGFudDpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFAodGhpcy5yZWFsKnQsdGhpcy5pbWcqdCl9LG50aFJvb3Q6ZnVuY3Rpb24odCl7dmFyIGU9QS5hdGFuMih0aGlzLmltZyx0aGlzLnJlYWwpLG49QS5zcXJ0KEEucG93KHRoaXMuaW1nLDIpK0EucG93KHRoaXMucmVhbCwyKSksaT1BLnBvdyhuLDEvdCk7cmV0dXJuIG5ldyBQKGkqQS5jb3MoZS90KSxpKkEuc2luKGUvdCkpfSxlcXVhbHM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVhbD09PXQucmVhbCYmdGhpcy5pbWc9PT10LmltZ30saXNSZWFsOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmltZ319LHooTix7Z2VvbWV0cnk6e0FyYzprLENpcmNsZTpULGN1cnZlSW50ZXJzZWN0aW9uc0NvdW50OmQsbGluZUludGVyc2VjdGlvbnNDb3VudDpwLE1hdHJpeDpTLFBvaW50OiQsUmVjdDpDLFNpemU6XyxUcmFuc2Zvcm1hdGlvbjpFLHRyYW5zZm9ybTp0LHRvTWF0cml4OmUsaXNPdXRPZkVuZFBvaW50OnksaGFzUm9vdHNJblJhbmdlOnd9fSksTi5kYXRhdml6Lmdlb21ldHJ5PU4uZ2VvbWV0cnl9KCksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKHQsZSxuKXsobnx8ZSkoKX0pLGZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJkcmF3aW5nL2NvcmUubWluXCIsW1wiZHJhd2luZy9nZW9tZXRyeS5taW5cIixcImtlbmRvLnBvcHVwLm1pblwiXSx0KX0oZnVuY3Rpb24oKXshZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXt2YXIgZSxuO3JldHVybiB0LnRvdWNoPyhlPXQueC5sb2NhdGlvbixuPXQueS5sb2NhdGlvbik6KGU9dC5wYWdlWHx8dC5jbGllbnRYfHwwLG49dC5wYWdlWXx8dC5jbGllbnRZfHwwKSx7eDplLHk6bn19dmFyIG4saSxyLG8scz10Lm5vb3AsYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGg9d2luZG93LmtlbmRvLGw9aC5fb3V0ZXJXaWR0aCxjPWguX291dGVySGVpZ2h0LHU9aC5DbGFzcyxmPWgudWkuV2lkZ2V0LGQ9aC5kZWVwRXh0ZW5kLHA9aC51dGlsLG09cC5kZWZpbmVkLGc9cC5saW1pdFZhbHVlLHY9aC5nZW9tZXRyeSx4PXQucHJveHkseT1cIi5rZW5kb1wiLHc9JzxkaXYgY2xhc3M9XCJrLXRvb2x0aXBcIj48ZGl2IGNsYXNzPVwiay10b29sdGlwLWNvbnRlbnRcIj48L2Rpdj48L2Rpdj4nLGI9JzxkaXYgY2xhc3M9XCJrLXRvb2x0aXAtYnV0dG9uXCI+PGEgaHJlZj1cIlxcXFwjXCIgY2xhc3M9XCJrLWljb24gay1pLWNsb3NlXCI+Y2xvc2U8L2E+PC9kaXY+JyxfPWYuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dGhpcy5vcHRpb25zPWQoe30sdGhpcy5vcHRpb25zLGUpLGYuZm4uaW5pdC5jYWxsKHRoaXMsdCx0aGlzLm9wdGlvbnMpLHRoaXMuX2NsaWNrPXRoaXMuX2hhbmRsZXIoXCJjbGlja1wiKSx0aGlzLl9tb3VzZWVudGVyPXRoaXMuX2hhbmRsZXIoXCJtb3VzZWVudGVyXCIpLHRoaXMuX21vdXNlbGVhdmU9dGhpcy5faGFuZGxlcihcIm1vdXNlbGVhdmVcIiksdGhpcy5fbW91c2Vtb3ZlPXRoaXMuX2hhbmRsZXIoXCJtb3VzZW1vdmVcIiksdGhpcy5fdmlzdWFsPW5ldyBoLmRyYXdpbmcuR3JvdXAsdGhpcy5vcHRpb25zLndpZHRoJiZ0aGlzLmVsZW1lbnQuY3NzKFwid2lkdGhcIix0aGlzLm9wdGlvbnMud2lkdGgpLHRoaXMub3B0aW9ucy5oZWlnaHQmJnRoaXMuZWxlbWVudC5jc3MoXCJoZWlnaHRcIix0aGlzLm9wdGlvbnMuaGVpZ2h0KSx0aGlzLl9lbmFibGVUcmFja2luZygpfSxvcHRpb25zOntuYW1lOlwiU3VyZmFjZVwiLHRvb2x0aXA6e319LGV2ZW50czpbXCJjbGlja1wiLFwibW91c2VlbnRlclwiLFwibW91c2VsZWF2ZVwiLFwibW91c2Vtb3ZlXCIsXCJyZXNpemVcIixcInRvb2x0aXBPcGVuXCIsXCJ0b29sdGlwQ2xvc2VcIl0sZHJhdzpmdW5jdGlvbih0KXt0aGlzLl92aXN1YWwuY2hpbGRyZW4ucHVzaCh0KX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLl92aXN1YWwuY2hpbGRyZW49W10sdGhpcy5oaWRlVG9vbHRpcCgpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fdmlzdWFsPW51bGwsdGhpcy5fdG9vbHRpcCYmKHRoaXMuX3Rvb2x0aXAuZGVzdHJveSgpLGRlbGV0ZSB0aGlzLl90b29sdGlwKSxmLmZuLmRlc3Ryb3kuY2FsbCh0aGlzKX0sZXhwb3J0VmlzdWFsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Zpc3VhbH0sZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybnt3aWR0aDp0aGlzLmVsZW1lbnQud2lkdGgoKSxoZWlnaHQ6dGhpcy5lbGVtZW50LmhlaWdodCgpfX0sc2V0U2l6ZTpmdW5jdGlvbih0KXt0aGlzLmVsZW1lbnQuY3NzKHt3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH0pLHRoaXMuX3NpemU9dCx0aGlzLl9yZXNpemUoKX0sZXZlbnRUYXJnZXQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciBuLGk9dChlLnRvdWNoP2UudG91Y2guaW5pdGlhbFRvdWNoOmUudGFyZ2V0KTshbiYmaS5sZW5ndGg+MCYmKG49aVswXS5fa2VuZG9Ob2RlLCFpLmlzKHRoaXMuZWxlbWVudCkmJjAhPT1pLmxlbmd0aCk7KWk9aS5wYXJlbnQoKTtpZihuKXJldHVybiBuLnNyY0VsZW1lbnR9LHNob3dUb29sdGlwOmZ1bmN0aW9uKHQsZSl7dGhpcy5fdG9vbHRpcCYmdGhpcy5fdG9vbHRpcC5zaG93KHQsZSl9LGhpZGVUb29sdGlwOmZ1bmN0aW9uKCl7dGhpcy5fdG9vbHRpcCYmdGhpcy5fdG9vbHRpcC5oaWRlKCl9LHN1c3BlbmRUcmFja2luZzpmdW5jdGlvbigpe3RoaXMuX3N1c3BlbmRlZFRyYWNraW5nPSEwLHRoaXMuaGlkZVRvb2x0aXAoKX0scmVzdW1lVHJhY2tpbmc6ZnVuY3Rpb24oKXt0aGlzLl9zdXNwZW5kZWRUcmFja2luZz0hMX0sX3Jlc2l6ZTpzLF9oYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpPWUuZXZlbnRUYXJnZXQobik7aSYmIWUuX3N1c3BlbmRlZFRyYWNraW5nJiZlLnRyaWdnZXIodCx7ZWxlbWVudDppLG9yaWdpbmFsRXZlbnQ6bix0eXBlOnR9KX19LF9lbmFibGVUcmFja2luZzpmdW5jdGlvbigpe2gudWkuUG9wdXAmJih0aGlzLl90b29sdGlwPW5ldyBvKHRoaXMsdGhpcy5vcHRpb25zLnRvb2x0aXB8fHt9KSl9LF9lbGVtZW50T2Zmc2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50LGU9dC5vZmZzZXQoKSxuPXBhcnNlSW50KHQuY3NzKFwicGFkZGluZ0xlZnRcIiksMTApLGk9cGFyc2VJbnQodC5jc3MoXCJwYWRkaW5nVG9wXCIpLDEwKTtyZXR1cm57bGVmdDplLmxlZnQrbix0b3A6ZS50b3AraX19LF9zdXJmYWNlUG9pbnQ6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5fZWxlbWVudE9mZnNldCgpLGk9ZSh0KSxyPWkueC1uLmxlZnQsbz1pLnktbi50b3A7cmV0dXJuIG5ldyB2LlBvaW50KHIsbyl9fSk7aC51aS5wbHVnaW4oXyksXy5jcmVhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gci5jdXJyZW50LmNyZWF0ZSh0LGUpfSxuPXUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMuY2hpbGROb2Rlcz1bXSx0aGlzLnBhcmVudD1udWxsLHQmJih0aGlzLnNyY0VsZW1lbnQ9dCx0aGlzLm9ic2VydmUoKSl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgdCxlO2Zvcih0aGlzLnNyY0VsZW1lbnQmJnRoaXMuc3JjRWxlbWVudC5yZW1vdmVPYnNlcnZlcih0aGlzKSx0PXRoaXMuY2hpbGROb2RlcyxlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5jaGlsZE5vZGVzW2VdLmRlc3Ryb3koKTt0aGlzLnBhcmVudD1udWxsfSxsb2FkOnMsb2JzZXJ2ZTpmdW5jdGlvbigpe3RoaXMuc3JjRWxlbWVudCYmdGhpcy5zcmNFbGVtZW50LmFkZE9ic2VydmVyKHRoaXMpfSxhcHBlbmQ6ZnVuY3Rpb24odCl7dGhpcy5jaGlsZE5vZGVzLnB1c2godCksdC5wYXJlbnQ9dGhpc30saW5zZXJ0QXQ6ZnVuY3Rpb24odCxlKXt0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKGUsMCx0KSx0LnBhcmVudD10aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCxlKXt2YXIgbixpPXQrZTtmb3Iobj10O248aTtuKyspdGhpcy5jaGlsZE5vZGVzW25dLnJlbW92ZVNlbGYoKTt0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKHQsZSl9LHJlbW92ZVNlbGY6ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCksdGhpcy5kZXN0cm95KCl9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5yZW1vdmUoMCx0aGlzLmNoaWxkTm9kZXMubGVuZ3RoKX0saW52YWxpZGF0ZTpmdW5jdGlvbigpe3RoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5pbnZhbGlkYXRlKCl9LGdlb21ldHJ5Q2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5pbnZhbGlkYXRlKCl9LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLmludmFsaWRhdGUoKX0sY2hpbGRyZW5DaGFuZ2U6ZnVuY3Rpb24odCl7XCJhZGRcIj09PXQuYWN0aW9uP3RoaXMubG9hZCh0Lml0ZW1zLHQuaW5kZXgpOlwicmVtb3ZlXCI9PT10LmFjdGlvbiYmdGhpcy5yZW1vdmUodC5pbmRleCx0Lml0ZW1zLmxlbmd0aCksdGhpcy5pbnZhbGlkYXRlKCl9fSksaT11LmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3ZhciBuLGk7dGhpcy5wcmVmaXg9ZXx8XCJcIjtmb3IobiBpbiB0KWk9dFtuXSxpPXRoaXMuX3dyYXAoaSxuKSx0aGlzW25dPWl9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gaC5nZXR0ZXIodCwhMCkodGhpcyl9LHNldDpmdW5jdGlvbih0LGUpe3ZhciBuLGk9aC5nZXR0ZXIodCwhMCkodGhpcyk7aSE9PWUmJihuPXRoaXMuX3NldCh0LHRoaXMuX3dyYXAoZSx0KSksbnx8dGhpcy5vcHRpb25zQ2hhbmdlKHtmaWVsZDp0aGlzLnByZWZpeCt0LHZhbHVlOmV9KSl9LF9zZXQ6ZnVuY3Rpb24odCxlKXt2YXIgbixyLG8scz10LmluZGV4T2YoXCIuXCIpPj0wO2lmKHMpZm9yKG49dC5zcGxpdChcIi5cIikscj1cIlwiO24ubGVuZ3RoPjE7KXtpZihyKz1uLnNoaWZ0KCksbz1oLmdldHRlcihyLCEwKSh0aGlzKSxvfHwobz1uZXcgaSh7fSxyK1wiLlwiKSxvLmFkZE9ic2VydmVyKHRoaXMpLHRoaXNbcl09byksbyBpbnN0YW5jZW9mIGkpcmV0dXJuIG8uc2V0KG4uam9pbihcIi5cIiksZSkscztyKz1cIi5cIn1yZXR1cm4gdGhpcy5fY2xlYXIodCksaC5zZXR0ZXIodCkodGhpcyxlKSxzfSxfY2xlYXI6ZnVuY3Rpb24odCl7dmFyIGU9aC5nZXR0ZXIodCwhMCkodGhpcyk7ZSYmZS5yZW1vdmVPYnNlcnZlciYmZS5yZW1vdmVPYnNlcnZlcih0aGlzKX0sX3dyYXA6ZnVuY3Rpb24odCxlKXt2YXIgbj1hLmNhbGwodCk7cmV0dXJuIG51bGwhPT10JiZtKHQpJiZcIltvYmplY3QgT2JqZWN0XVwiPT09biYmKHQgaW5zdGFuY2VvZiBpfHx0IGluc3RhbmNlb2YgdXx8KHQ9bmV3IGkodCx0aGlzLnByZWZpeCtlK1wiLlwiKSksdC5hZGRPYnNlcnZlcih0aGlzKSksdH19KSxkKGkuZm4saC5taXhpbnMuT2JzZXJ2ZXJzTWl4aW4pLHI9ZnVuY3Rpb24oKXt0aGlzLl9pdGVtcz1bXX0sci5wcm90b3R5cGU9e3JlZ2lzdGVyOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLl9pdGVtcyxyPWlbMF0sbz17bmFtZTp0LHR5cGU6ZSxvcmRlcjpufTshcnx8bjxyLm9yZGVyP2kudW5zaGlmdChvKTppLnB1c2gobyl9LGNyZWF0ZTpmdW5jdGlvbih0LGUpe3ZhciBuLGkscj10aGlzLl9pdGVtcyxvPXJbMF07aWYoZSYmZS50eXBlKWZvcihuPWUudHlwZS50b0xvd2VyQ2FzZSgpLGk9MDtpPHIubGVuZ3RoO2krKylpZihyW2ldLm5hbWU9PT1uKXtvPXJbaV07YnJlYWt9cmV0dXJuIG8/bmV3IG8udHlwZSh0LGUpOnZvaWQgaC5sb2dUb0NvbnNvbGUoXCJXYXJuaW5nOiBVbmFibGUgdG8gY3JlYXRlIEtlbmRvIFVJIERyYXdpbmcgU3VyZmFjZS4gUG9zc2libGUgY2F1c2VzOlxcbi0gVGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBTVkcsIFZNTCBhbmQgQ2FudmFzLiBVc2VyIGFnZW50OiBcIituYXZpZ2F0b3IudXNlckFnZW50K1wiXFxuLSBUaGUgS2VuZG8gVUkgc2NyaXB0cyBhcmUgbm90IGZ1bGx5IGxvYWRlZFwiKX19LHIuY3VycmVudD1uZXcgcixvPXUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsbil7dGhpcy5lbGVtZW50PXQodyksdGhpcy5jb250ZW50PXRoaXMuZWxlbWVudC5jaGlsZHJlbihcIi5rLXRvb2x0aXAtY29udGVudFwiKSxuPW58fHt9LHRoaXMub3B0aW9ucz1kKHt9LHRoaXMub3B0aW9ucyx0aGlzLl90b29sdGlwT3B0aW9ucyhuKSksdGhpcy5wb3B1cD1uZXcgaC51aS5Qb3B1cCh0aGlzLmVsZW1lbnQse2FwcGVuZFRvOm4uYXBwZW5kVG8sYW5pbWF0aW9uOm4uYW5pbWF0aW9uLGNvcHlBbmNob3JTdHlsZXM6ITEsY29sbGlzaW9uOlwiZml0IGZpdFwifSksdGhpcy5fb3BlblBvcHVwSGFuZGxlcj10LnByb3h5KHRoaXMuX29wZW5Qb3B1cCx0aGlzKSx0aGlzLnN1cmZhY2U9ZSx0aGlzLl9iaW5kRXZlbnRzKCl9LG9wdGlvbnM6e3Bvc2l0aW9uOlwidG9wXCIsc2hvd09uOlwibW91c2VlbnRlclwiLG9mZnNldDo3LGF1dG9IaWRlOiEwLGhpZGVEZWxheTowLHNob3dBZnRlcjoxMDB9LF9iaW5kRXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5fc2hvd0hhbmRsZXI9eCh0aGlzLl9zaG93RXZlbnQsdGhpcyksdGhpcy5fc3VyZmFjZUxlYXZlSGFuZGxlcj14KHRoaXMuX3N1cmZhY2VMZWF2ZSx0aGlzKSx0aGlzLl9tb3VzZWxlYXZlSGFuZGxlcj14KHRoaXMuX21vdXNlbGVhdmUsdGhpcyksdGhpcy5fbW91c2Vtb3ZlSGFuZGxlcj14KHRoaXMuX21vdXNlbW92ZSx0aGlzKSx0aGlzLnN1cmZhY2UuYmluZChcImNsaWNrXCIsdGhpcy5fc2hvd0hhbmRsZXIpLHRoaXMuc3VyZmFjZS5iaW5kKFwibW91c2VlbnRlclwiLHRoaXMuX3Nob3dIYW5kbGVyKSx0aGlzLnN1cmZhY2UuYmluZChcIm1vdXNlbGVhdmVcIix0aGlzLl9tb3VzZWxlYXZlSGFuZGxlciksdGhpcy5zdXJmYWNlLmJpbmQoXCJtb3VzZW1vdmVcIix0aGlzLl9tb3VzZW1vdmVIYW5kbGVyKSx0aGlzLnN1cmZhY2UuZWxlbWVudC5vbihcIm1vdXNlbGVhdmVcIit5LHRoaXMuX3N1cmZhY2VMZWF2ZUhhbmRsZXIpLHRoaXMuZWxlbWVudC5vbihcImNsaWNrXCIreSxcIi5rLXRvb2x0aXAtYnV0dG9uXCIseCh0aGlzLl9oaWRlQ2xpY2ssdGhpcykpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wb3B1cDt0aGlzLnN1cmZhY2UudW5iaW5kKFwiY2xpY2tcIix0aGlzLl9zaG93SGFuZGxlciksdGhpcy5zdXJmYWNlLnVuYmluZChcIm1vdXNlZW50ZXJcIix0aGlzLl9zaG93SGFuZGxlciksdGhpcy5zdXJmYWNlLnVuYmluZChcIm1vdXNlbGVhdmVcIix0aGlzLl9tb3VzZWxlYXZlSGFuZGxlciksdGhpcy5zdXJmYWNlLnVuYmluZChcIm1vdXNlbW92ZVwiLHRoaXMuX21vdXNlbW92ZUhhbmRsZXIpLHRoaXMuc3VyZmFjZS5lbGVtZW50Lm9mZihcIm1vdXNlbGVhdmVcIit5LHRoaXMuX3N1cmZhY2VMZWF2ZUhhbmRsZXIpLHRoaXMuZWxlbWVudC5vZmYoXCJjbGlja1wiK3kpLHQmJih0LmRlc3Ryb3koKSxkZWxldGUgdGhpcy5wb3B1cCksY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpLGRlbGV0ZSB0aGlzLnBvcHVwLGRlbGV0ZSB0aGlzLmVsZW1lbnQsZGVsZXRlIHRoaXMuY29udGVudCxkZWxldGUgdGhpcy5zdXJmYWNlfSxfdG9vbHRpcE9wdGlvbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dHx8e30se3Bvc2l0aW9uOnQucG9zaXRpb24sc2hvd09uOnQuc2hvd09uLG9mZnNldDp0Lm9mZnNldCxhdXRvSGlkZTp0LmF1dG9IaWRlLHdpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LGNvbnRlbnQ6dC5jb250ZW50LHNoYXJlZDp0LnNoYXJlZCxoaWRlRGVsYXk6dC5oaWRlRGVsYXksc2hvd0FmdGVyOnQuc2hvd0FmdGVyfX0sX3Rvb2x0aXBTaGFwZTpmdW5jdGlvbih0KXtmb3IoO3QmJiF0Lm9wdGlvbnMudG9vbHRpcDspdD10LnBhcmVudDtyZXR1cm4gdH0sX3VwZGF0ZUNvbnRlbnQ6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4uY29udGVudDtpZihoLmlzRnVuY3Rpb24oaSkmJihpPWkoe2VsZW1lbnQ6ZSx0YXJnZXQ6dH0pKSxpKXJldHVybiB0aGlzLmNvbnRlbnQuaHRtbChpKSwhMH0sX3Bvc2l0aW9uOmZ1bmN0aW9uKHQsbixpLHIpe3ZhciBvLHM9bi5wb3NpdGlvbixhPW4ub2Zmc2V0fHwwLGg9dGhpcy5zdXJmYWNlLGw9aC5fZWxlbWVudE9mZnNldCgpLGM9aC5nZXRTaXplKCksdT1oLl9vZmZzZXQsZj10LmJib3goKSxkPWkud2lkdGgscD1pLmhlaWdodCxtPTAsdj0wO3JldHVybiBmLm9yaWdpbi50cmFuc2xhdGUobC5sZWZ0LGwudG9wKSx1JiZmLm9yaWdpbi50cmFuc2xhdGUoLXUueCwtdS55KSxcImN1cnNvclwiPT1zJiZyPyhvPWUociksbT1vLngtZC8yLHY9by55LXAtYSk6XCJsZWZ0XCI9PXM/KG09Zi5vcmlnaW4ueC1kLWEsdj1mLmNlbnRlcigpLnktcC8yKTpcInJpZ2h0XCI9PXM/KG09Zi5ib3R0b21SaWdodCgpLngrYSx2PWYuY2VudGVyKCkueS1wLzIpOlwiYm90dG9tXCI9PXM/KG09Zi5jZW50ZXIoKS54LWQvMix2PWYuYm90dG9tUmlnaHQoKS55K2EpOihtPWYuY2VudGVyKCkueC1kLzIsdj1mLm9yaWdpbi55LXAtYSkse2xlZnQ6ZyhtLGwubGVmdCxsLmxlZnQrYy53aWR0aCksdG9wOmcodixsLnRvcCxsLnRvcCtjLmhlaWdodCl9fSxzaG93OmZ1bmN0aW9uKHQsZSl7dGhpcy5fc2hvdyh0LHQsZCh7fSx0aGlzLm9wdGlvbnMsdGhpcy5fdG9vbHRpcE9wdGlvbnModC5vcHRpb25zLnRvb2x0aXApLGUpKX0saGlkZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2N1cnJlbnQ7ZGVsZXRlIHRoaXMuX2N1cnJlbnQsY2xlYXJUaW1lb3V0KHRoaXMuX3Nob3dUaW1lb3V0KSx0aGlzLnBvcHVwLnZpc2libGUoKSYmdCYmIXRoaXMuc3VyZmFjZS50cmlnZ2VyKFwidG9vbHRpcENsb3NlXCIse2VsZW1lbnQ6dC5zaGFwZSx0YXJnZXQ6dC50YXJnZXQscG9wdXA6dGhpcy5wb3B1cH0pJiZ0aGlzLnBvcHVwLmNsb3NlKCl9LF9oaWRlQ2xpY2s6ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaGlkZSgpfSxfc2hvdzpmdW5jdGlvbih0LGUsbixpLHIpe3ZhciBvLHMsYT10aGlzLl9jdXJyZW50O2NsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KSxhJiYoYS5zaGFwZT09PWUmJm4uc2hhcmVkfHxhLnRhcmdldD09PXQpfHwoY2xlYXJUaW1lb3V0KHRoaXMuX3Nob3dUaW1lb3V0KSwhdGhpcy5zdXJmYWNlLnRyaWdnZXIoXCJ0b29sdGlwT3BlblwiLHtlbGVtZW50OmUsdGFyZ2V0OnQscG9wdXA6dGhpcy5wb3B1cH0pJiZ0aGlzLl91cGRhdGVDb250ZW50KHQsZSxuKSYmKHRoaXMuX2F1dG9IaWRlKG4pLG89dGhpcy5fbWVhc3VyZShuKSxzPXRoaXMucG9wdXAscy52aXNpYmxlKCkmJnMuY2xvc2UoITApLHRoaXMuX2N1cnJlbnQ9e29wdGlvbnM6bixlbGVtZW50U2l6ZTpvLHNoYXBlOmUsdGFyZ2V0OnQscG9zaXRpb246dGhpcy5fcG9zaXRpb24obi5zaGFyZWQ/ZTp0LG4sbyxpKX0scj90aGlzLl9zaG93VGltZW91dD1zZXRUaW1lb3V0KHRoaXMuX29wZW5Qb3B1cEhhbmRsZXIsbi5zaG93QWZ0ZXJ8fDApOnRoaXMuX29wZW5Qb3B1cCgpKSl9LF9vcGVuUG9wdXA6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jdXJyZW50LGU9dC5wb3NpdGlvbjt0aGlzLnBvcHVwLm9wZW4oZS5sZWZ0LGUudG9wKX0sX2F1dG9IaWRlOmZ1bmN0aW9uKGUpe2UuYXV0b0hpZGUmJnRoaXMuX2Nsb3NlQnV0dG9uJiYodGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKFwiay10b29sdGlwLWNsb3NhYmxlXCIpLHRoaXMuX2Nsb3NlQnV0dG9uLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLl9jbG9zZUJ1dHRvbiksXG5lLmF1dG9IaWRlfHx0aGlzLl9jbG9zZUJ1dHRvbnx8KHRoaXMuZWxlbWVudC5hZGRDbGFzcyhcImstdG9vbHRpcC1jbG9zYWJsZVwiKSx0aGlzLl9jbG9zZUJ1dHRvbj10KGIpLnByZXBlbmRUbyh0aGlzLmVsZW1lbnQpKX0sX3Nob3dFdmVudDpmdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMuX3Rvb2x0aXBTaGFwZSh0LmVsZW1lbnQpO24mJihlPWQoe30sdGhpcy5vcHRpb25zLHRoaXMuX3Rvb2x0aXBPcHRpb25zKG4ub3B0aW9ucy50b29sdGlwKSksZSYmZS5zaG93T249PXQudHlwZSYmdGhpcy5fc2hvdyh0LmVsZW1lbnQsbixlLHQub3JpZ2luYWxFdmVudCwhMCkpfSxfbWVhc3VyZTpmdW5jdGlvbih0KXt2YXIgZSxuLGk7cmV0dXJuIHRoaXMuZWxlbWVudC5jc3Moe3dpZHRoOlwiYXV0b1wiLGhlaWdodDpcImF1dG9cIn0pLGk9dGhpcy5wb3B1cC52aXNpYmxlKCksaXx8dGhpcy5wb3B1cC53cmFwcGVyLnNob3coKSx0aGlzLmVsZW1lbnQuY3NzKHt3aWR0aDptKHQud2lkdGgpP3Qud2lkdGg6XCJhdXRvXCIsaGVpZ2h0Om0odC5oZWlnaHQpP3QuaGVpZ2h0OlwiYXV0b1wifSksZT1sKHRoaXMuZWxlbWVudCksbj1jKHRoaXMuZWxlbWVudCksaXx8dGhpcy5wb3B1cC53cmFwcGVyLmhpZGUoKSx7d2lkdGg6ZSxoZWlnaHQ6bn19LF9tb3VzZWxlYXZlOmZ1bmN0aW9uKHQpe3ZhciBlLG47dGhpcy5fcG9wdXBSZWxhdGVkVGFyZ2V0KHQub3JpZ2luYWxFdmVudCl8fChlPXRoaXMsbj1lLl9jdXJyZW50LG4mJm4ub3B0aW9ucy5hdXRvSGlkZSYmKGUuX3RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2NsZWFyVGltZW91dChlLl9zaG93VGltZW91dCksZS5oaWRlKCl9LG4ub3B0aW9ucy5oaWRlRGVsYXl8fDApKSl9LF9tb3VzZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGUsbixpPXRoaXMuX2N1cnJlbnQ7aSYmdC5lbGVtZW50JiYoZT1pLm9wdGlvbnMsXCJjdXJzb3JcIj09ZS5wb3NpdGlvbiYmKG49dGhpcy5fcG9zaXRpb24odC5lbGVtZW50LGUsaS5lbGVtZW50U2l6ZSx0Lm9yaWdpbmFsRXZlbnQpLGkucG9zaXRpb249bix0aGlzLnBvcHVwLndyYXBwZXIuY3NzKHtsZWZ0Om4ubGVmdCx0b3A6bi50b3B9KSkpfSxfc3VyZmFjZUxlYXZlOmZ1bmN0aW9uKHQpe3RoaXMuX3BvcHVwUmVsYXRlZFRhcmdldCh0KXx8KGNsZWFyVGltZW91dCh0aGlzLl9zaG93VGltZW91dCksdGhpcy5oaWRlKCkpfSxfcG9wdXBSZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlbGF0ZWRUYXJnZXQmJnQoZS5yZWxhdGVkVGFyZ2V0KS5jbG9zZXN0KHRoaXMucG9wdXAud3JhcHBlcikubGVuZ3RofX0pLGQoaCx7ZHJhd2luZzp7REFTSF9BUlJBWVM6e2RvdDpbMS41LDMuNV0sZGFzaDpbNCwzLjVdLGxvbmdkYXNoOls4LDMuNV0sZGFzaGRvdDpbMy41LDMuNSwxLjUsMy41XSxsb25nZGFzaGRvdDpbOCwzLjUsMS41LDMuNV0sbG9uZ2Rhc2hkb3Rkb3Q6WzgsMy41LDEuNSwzLjUsMS41LDMuNV19LENvbG9yOmguQ29sb3IsQmFzZU5vZGU6bixPcHRpb25zU3RvcmU6aSxTdXJmYWNlOl8sU3VyZmFjZUZhY3Rvcnk6cixTdXJmYWNlVG9vbHRpcDpvfX0pLGguZGF0YXZpei5kcmF3aW5nPWguZHJhd2luZ30od2luZG93LmtlbmRvLmpRdWVyeSl9LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlLG4peyhufHxlKSgpfSksZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcImRyYXdpbmcvbWl4aW5zLm1pblwiLFtcImRyYXdpbmcvY29yZS5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIHQ9d2luZG93LmtlbmRvLGU9dC5kZWVwRXh0ZW5kLG49dC51dGlsLmRlZmluZWQsaT10Lmdlb21ldHJ5LHI9XCJncmFkaWVudFwiLG89XCJcIitpLk1hdHJpeC5JREVOVElUWSxzPXtleHRlbmQ6ZnVuY3Rpb24odCl7dC5maWxsPXRoaXMuZmlsbCx0LnN0cm9rZT10aGlzLnN0cm9rZX0sZmlsbDpmdW5jdGlvbih0LGUpe3ZhciBpLG89dGhpcy5vcHRpb25zO3JldHVybiBuKHQpPyh0JiZ0Lm5vZGVUeXBlIT1yPyhpPXtjb2xvcjp0fSxuKGUpJiYoaS5vcGFjaXR5PWUpLG8uc2V0KFwiZmlsbFwiLGkpKTpvLnNldChcImZpbGxcIix0KSx0aGlzKTpvLmdldChcImZpbGxcIil9LHN0cm9rZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIG4odCk/KHRoaXMub3B0aW9ucy5zZXQoXCJzdHJva2UuY29sb3JcIix0KSxuKGUpJiZ0aGlzLm9wdGlvbnMuc2V0KFwic3Ryb2tlLndpZHRoXCIsZSksbihpKSYmdGhpcy5vcHRpb25zLnNldChcInN0cm9rZS5vcGFjaXR5XCIsaSksdGhpcyk6dGhpcy5vcHRpb25zLmdldChcInN0cm9rZVwiKX19LGE9e2V4dGVuZDpmdW5jdGlvbih0LGUpe3QudHJhdmVyc2U9ZnVuY3Rpb24odCl7dmFyIG4saSxyPXRoaXNbZV07Zm9yKG49MDtuPHIubGVuZ3RoO24rKylpPXJbbl0saS50cmF2ZXJzZT9pLnRyYXZlcnNlKHQpOnQoaSk7cmV0dXJuIHRoaXN9fX0saD17ZXh0ZW5kOmZ1bmN0aW9uKHQpe3QuYmJveD10aGlzLmJib3gsdC5nZW9tZXRyeUNoYW5nZT10aGlzLmdlb21ldHJ5Q2hhbmdlfSxiYm94OmZ1bmN0aW9uKHQpe3ZhciBlLG4scj1pLnRvTWF0cml4KHRoaXMuY3VycmVudFRyYW5zZm9ybSh0KSkscz1yP1wiXCIrcjpvO3JldHVybiB0aGlzLl9iYm94Q2FjaGUmJnRoaXMuX21hdHJpeEhhc2g9PXM/ZT10aGlzLl9iYm94Q2FjaGUuY2xvbmUoKTooZT10aGlzLl9iYm94KHIpLHRoaXMuX2Jib3hDYWNoZT1lP2UuY2xvbmUoKTpudWxsLHRoaXMuX21hdHJpeEhhc2g9cyksbj10aGlzLm9wdGlvbnMuZ2V0KFwic3Ryb2tlLndpZHRoXCIpLG4mJmUmJmUuZXhwYW5kKG4vMiksZX0sZ2VvbWV0cnlDaGFuZ2U6ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5fYmJveENhY2hlLHRoaXMudHJpZ2dlcihcImdlb21ldHJ5Q2hhbmdlXCIse2VsZW1lbnQ6dGhpc30pfX07ZSh0LmRyYXdpbmcse21peGluczp7UGFpbnRhYmxlOnMsVHJhdmVyc2FibGU6YSxNZWFzdXJhYmxlOmh9fSl9KCl9LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlLG4peyhufHxlKSgpfSksZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcImRyYXdpbmcvc2hhcGVzLm1pblwiLFtcImRyYXdpbmcvY29yZS5taW5cIixcImRyYXdpbmcvbWl4aW5zLm1pblwiLFwidXRpbC90ZXh0LW1ldHJpY3MubWluXCIsXCJtaXhpbnMvb2JzZXJ2ZXJzLm1pblwiXSx0KX0oZnVuY3Rpb24oKXshZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGUsbil7dmFyIGkscixvLHM7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKylvPXRbcl0sby52aXNpYmxlKCkmJihzPWU/by5iYm94KG4pOm8ucmF3QkJveCgpLHMmJihpPWk/WC5SZWN0LnVuaW9uKGkscyk6cykpO3JldHVybiBpfWZ1bmN0aW9uIG4odCxlKXt2YXIgbixpLHIsbztmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKXI9dFtpXSxyLnZpc2libGUoKSYmKG89ci5jbGlwcGVkQkJveChlKSxvJiYobj1uP1guUmVjdC51bmlvbihuLG8pOm8pKTtyZXR1cm4gbn1mdW5jdGlvbiBpKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspdFtlW25dXT1yKGVbbl0pfWZ1bmN0aW9uIHIodCl7dmFyIGU9XCJfXCIrdDtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGl0KHQpPyh0aGlzLl9vYnNlcnZlckZpZWxkKGUsdCksdGhpcy5nZW9tZXRyeUNoYW5nZSgpLHRoaXMpOnRoaXNbZV19fWZ1bmN0aW9uIG8odCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0W2Vbbl1dPXMoZVtuXSl9ZnVuY3Rpb24gcyh0KXt2YXIgZT1cIl9cIit0O3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaXQodCk/KHRoaXMuX29ic2VydmVyRmllbGQoZSxVLmNyZWF0ZSh0KSksdGhpcy5nZW9tZXRyeUNoYW5nZSgpLHRoaXMpOnRoaXNbZV19fWZ1bmN0aW9uIGEodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0W2Vbbl1dPWgoZVtuXSl9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGl0KGUpPyh0aGlzLm9wdGlvbnMuc2V0KHQsZSksdGhpcyk6dGhpcy5vcHRpb25zLmdldCh0KX19ZnVuY3Rpb24gbCgpe3JldHVyblwia2RlZlwiK3B0Kyt9ZnVuY3Rpb24gYyh0LGUsbil7Yih0LGUsbixcInhcIixcIndpZHRoXCIpfWZ1bmN0aW9uIHUodCxlLG4pe2IodCxlLG4sXCJ5XCIsXCJoZWlnaHRcIil9ZnVuY3Rpb24gZih0KXt3KHkodCksXCJ4XCIsXCJ5XCIsXCJ3aWR0aFwiKX1mdW5jdGlvbiBkKHQpe3coeSh0KSxcInlcIixcInhcIixcImhlaWdodFwiKX1mdW5jdGlvbiBwKHQsZSl7cmV0dXJuIGcodCxlLFwieFwiLFwieVwiLFwid2lkdGhcIil9ZnVuY3Rpb24gbSh0LGUpe3JldHVybiBnKHQsZSxcInlcIixcInhcIixcImhlaWdodFwiKX1mdW5jdGlvbiBnKHQsZSxuLGkscil7dmFyIG8scyxhLGgsbD1bXSxjPXgodCxlLHIpLHU9ZS5vcmlnaW4uY2xvbmUoKTtmb3IoaD0wO2g8Yy5sZW5ndGg7aCsrKWZvcihhPWNbaF0sbz1hWzBdLHVbaV09by5iYm94Lm9yaWdpbltpXSxUKHUsby5iYm94LG8uZWxlbWVudCksby5iYm94Lm9yaWdpbltuXT11W25dLHcoYSxuLGksciksbC5wdXNoKFtdKSxzPTA7czxhLmxlbmd0aDtzKyspbFtoXS5wdXNoKGFbc10uZWxlbWVudCk7cmV0dXJuIGx9ZnVuY3Rpb24gdih0LGUpe3ZhciBuLGkscj10LmNsaXBwZWRCQm94KCksbz1yLnNpemUscz1lLnNpemU7KHMud2lkdGg8by53aWR0aHx8cy5oZWlnaHQ8by5oZWlnaHQpJiYobj1KLm1pbihzLndpZHRoL28ud2lkdGgscy5oZWlnaHQvby5oZWlnaHQpLGk9dC50cmFuc2Zvcm0oKXx8WC50cmFuc2Zvcm0oKSxpLnNjYWxlKG4sbiksdC50cmFuc2Zvcm0oaSkpfWZ1bmN0aW9uIHgodCxlLG4pe3ZhciBpLHIsbyxzLGE9ZS5zaXplW25dLGg9MCxsPVtdLGM9W10sdT1mdW5jdGlvbigpe2MucHVzaCh7ZWxlbWVudDppLGJib3g6b30pfTtmb3Iocz0wO3M8dC5sZW5ndGg7cysrKWk9dFtzXSxvPWkuY2xpcHBlZEJCb3goKSxvJiYocj1vLnNpemVbbl0saCtyPmE/Yy5sZW5ndGg/KGwucHVzaChjKSxjPVtdLHUoKSxoPXIpOih1KCksbC5wdXNoKGMpLGM9W10saD0wKToodSgpLGgrPXIpKTtyZXR1cm4gYy5sZW5ndGgmJmwucHVzaChjKSxsfWZ1bmN0aW9uIHkodCl7dmFyIGUsbixpLHI9W107Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyllPXRbaV0sbj1lLmNsaXBwZWRCQm94KCksbiYmci5wdXNoKHtlbGVtZW50OmUsYmJveDpufSk7cmV0dXJuIHJ9ZnVuY3Rpb24gdyh0LGUsbixpKXt2YXIgcixvLHMsYSxoO2lmKHQubGVuZ3RoPjEpZm9yKHI9dFswXS5iYm94LG89bmV3IFUsaD0xO2g8dC5sZW5ndGg7aCsrKXM9dFtoXS5lbGVtZW50LGE9dFtoXS5iYm94LG9bZV09ci5vcmlnaW5bZV0rci5zaXplW2ldLG9bbl09YS5vcmlnaW5bbl0sVChvLGEscyksYS5vcmlnaW5bZV09b1tlXSxyPWF9ZnVuY3Rpb24gYih0LGUsbixpLHIpe3ZhciBvLHMsYTtmb3Iobj1ufHxcInN0YXJ0XCIsYT0wO2E8dC5sZW5ndGg7YSsrKW89dFthXS5jbGlwcGVkQkJveCgpLG8mJihzPW8ub3JpZ2luLmNsb25lKCksc1tpXT1fKG8uc2l6ZVtyXSxlLG4saSxyKSxUKHMsbyx0W2FdKSl9ZnVuY3Rpb24gXyh0LGUsbixpLHIpe3ZhciBvO3JldHVybiBvPW49PW10P2Uub3JpZ2luW2ldOm49PWd0P2Uub3JpZ2luW2ldK2Uuc2l6ZVtyXS10OmUub3JpZ2luW2ldKyhlLnNpemVbcl0tdCkvMn1mdW5jdGlvbiBDKHQsZSxuKXt2YXIgaT1uLnRyYW5zZm9ybSgpfHxYLnRyYW5zZm9ybSgpLHI9aS5tYXRyaXgoKTtyLmUrPXQsci5mKz1lLGkubWF0cml4KHIpLG4udHJhbnNmb3JtKGkpfWZ1bmN0aW9uIFQodCxlLG4pe0ModC54LWUub3JpZ2luLngsdC55LWUub3JpZ2luLnksbil9dmFyIGssUyxFLFAsQSxPLE4sUix6LE0sQixELEwsSSxGLEcsaixIPXdpbmRvdy5rZW5kbyxxPUguQ2xhc3MsJD1ILmRlZXBFeHRlbmQsWD1ILmdlb21ldHJ5LFU9WC5Qb2ludCxZPVguU2l6ZSxWPVguTWF0cml4LFc9WC50b01hdHJpeCxRPUguZHJhd2luZyxaPVEuT3B0aW9uc1N0b3JlLEo9TWF0aCxLPUoucG93LHR0PUgudXRpbCxldD10dC5hcHBlbmQsbnQ9dHQuYXJyYXlMaW1pdHMsaXQ9dHQuZGVmaW5lZCxydD10dC5sYXN0LG90PXR0LnZhbHVlT3JEZWZhdWx0LHN0PUgubWl4aW5zLk9ic2VydmVyc01peGluLGF0PXQuaW5BcnJheSxodD1bXS5wdXNoLGx0PVtdLnBvcCxjdD1bXS5zcGxpY2UsdXQ9W10uc2hpZnQsZnQ9W10uc2xpY2UsZHQ9W10udW5zaGlmdCxwdD0xLG10PVwic3RhcnRcIixndD1cImVuZFwiLHZ0PVwiaG9yaXpvbnRhbFwiLHh0PXEuZXh0ZW5kKHtub2RlVHlwZTpcIkVsZW1lbnRcIixpbml0OmZ1bmN0aW9uKHQpe3RoaXMuX2luaXRPcHRpb25zKHQpfSxfaW5pdE9wdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGUsbjt0PXR8fHt9LGU9dC50cmFuc2Zvcm0sbj10LmNsaXAsZSYmKHQudHJhbnNmb3JtPVgudHJhbnNmb3JtKGUpKSxuJiYhbi5pZCYmKG4uaWQ9bCgpKSx0aGlzLm9wdGlvbnM9bmV3IFoodCksdGhpcy5vcHRpb25zLmFkZE9ic2VydmVyKHRoaXMpfSx0cmFuc2Zvcm06ZnVuY3Rpb24odCl7cmV0dXJuIGl0KHQpP3ZvaWQgdGhpcy5vcHRpb25zLnNldChcInRyYW5zZm9ybVwiLFgudHJhbnNmb3JtKHQpKTp0aGlzLm9wdGlvbnMuZ2V0KFwidHJhbnNmb3JtXCIpfSxwYXJlbnRUcmFuc2Zvcm06ZnVuY3Rpb24oKXtmb3IodmFyIHQsZSxuPXRoaXM7bi5wYXJlbnQ7KW49bi5wYXJlbnQsdD1uLnRyYW5zZm9ybSgpLHQmJihlPXQubWF0cml4KCkubXVsdGlwbHlDb3B5KGV8fFYudW5pdCgpKSk7aWYoZSlyZXR1cm4gWC50cmFuc2Zvcm0oZSl9LGN1cnJlbnRUcmFuc2Zvcm06ZnVuY3Rpb24odCl7dmFyIGUsbixpPXRoaXMudHJhbnNmb3JtKCkscj1XKGkpO2lmKGl0KHQpfHwodD10aGlzLnBhcmVudFRyYW5zZm9ybSgpKSxlPVcodCksbj1yJiZlP2UubXVsdGlwbHlDb3B5KHIpOnJ8fGUpcmV0dXJuIFgudHJhbnNmb3JtKG4pfSx2aXNpYmxlOmZ1bmN0aW9uKHQpe3JldHVybiBpdCh0KT8odGhpcy5vcHRpb25zLnNldChcInZpc2libGVcIix0KSx0aGlzKTp0aGlzLm9wdGlvbnMuZ2V0KFwidmlzaWJsZVwiKSE9PSExfSxjbGlwOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMub3B0aW9ucztyZXR1cm4gaXQodCk/KHQmJiF0LmlkJiYodC5pZD1sKCkpLGUuc2V0KFwiY2xpcFwiLHQpLHRoaXMpOmUuZ2V0KFwiY2xpcFwiKX0sb3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gaXQodCk/KHRoaXMub3B0aW9ucy5zZXQoXCJvcGFjaXR5XCIsdCksdGhpcyk6b3QodGhpcy5vcHRpb25zLmdldChcIm9wYWNpdHlcIiksMSl9LGNsaXBwZWRCQm94OmZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5fY2xpcHBlZEJCb3godCk7aWYobilyZXR1cm4gZT10aGlzLmNsaXAoKSxlP1guUmVjdC5pbnRlcnNlY3QobixlLmJib3godCkpOm59LGNvbnRhaW5zUG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0aGlzLnZpc2libGUoKSl7dmFyIG49dGhpcy5jdXJyZW50VHJhbnNmb3JtKGUpO3JldHVybiBuJiYodD10LnRyYW5zZm9ybUNvcHkobi5tYXRyaXgoKS5pbnZlcnQoKSkpLHRoaXMuX2hhc0ZpbGwoKSYmdGhpcy5fY29udGFpbnNQb2ludCh0KXx8dGhpcy5faXNPblBhdGgmJnRoaXMuX2hhc1N0cm9rZSgpJiZ0aGlzLl9pc09uUGF0aCh0KX1yZXR1cm4hMX0sX2hhc0ZpbGw6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuZmlsbDtyZXR1cm4gdCYmIXR0LmlzVHJhbnNwYXJlbnQodC5jb2xvcil9LF9oYXNTdHJva2U6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuc3Ryb2tlO3JldHVybiB0JiZ0LndpZHRoPjAmJiF0dC5pc1RyYW5zcGFyZW50KHQuY29sb3IpfSxfY2xpcHBlZEJCb3g6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYmJveCh0KX19KTskKHh0LmZuLHN0KSxrPXEuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3Q9dHx8W10sdGhpcy5sZW5ndGg9MCx0aGlzLl9zcGxpY2UoMCx0Lmxlbmd0aCx0KX0sZWxlbWVudHM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ/KHRoaXMuX3NwbGljZSgwLHRoaXMubGVuZ3RoLHQpLHRoaXMuX2NoYW5nZSgpLHRoaXMpOnRoaXMuc2xpY2UoMCl9LHB1c2g6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMsZT1odC5hcHBseSh0aGlzLHQpO3JldHVybiB0aGlzLl9hZGQodCksZX0sc2xpY2U6ZnQscG9wOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5sZW5ndGgsZT1sdC5hcHBseSh0aGlzKTtyZXR1cm4gdCYmdGhpcy5fcmVtb3ZlKFtlXSksZX0sc3BsaWNlOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZnQuY2FsbChhcmd1bWVudHMsMiksaT10aGlzLl9zcGxpY2UodCxlLG4pO3JldHVybiB0aGlzLl9jaGFuZ2UoKSxpfSxzaGlmdDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubGVuZ3RoLGU9dXQuYXBwbHkodGhpcyk7cmV0dXJuIHQmJnRoaXMuX3JlbW92ZShbZV0pLGV9LHVuc2hpZnQ6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMsZT1kdC5hcHBseSh0aGlzLHQpO3JldHVybiB0aGlzLl9hZGQodCksZX0saW5kZXhPZjpmdW5jdGlvbih0KXt2YXIgZSxuLGk9dGhpcztmb3IoZT0wLG49aS5sZW5ndGg7ZTxuO2UrKylpZihpW2VdPT09dClyZXR1cm4gZTtyZXR1cm4tMX0sX3NwbGljZTpmdW5jdGlvbih0LGUsbil7dmFyIGk9Y3QuYXBwbHkodGhpcyxbdCxlXS5jb25jYXQobikpO3JldHVybiB0aGlzLl9jbGVhck9ic2VydmVyKGkpLHRoaXMuX3NldE9ic2VydmVyKG4pLGl9LF9hZGQ6ZnVuY3Rpb24odCl7dGhpcy5fc2V0T2JzZXJ2ZXIodCksdGhpcy5fY2hhbmdlKCl9LF9yZW1vdmU6ZnVuY3Rpb24odCl7dGhpcy5fY2xlYXJPYnNlcnZlcih0KSx0aGlzLl9jaGFuZ2UoKX0sX3NldE9ic2VydmVyOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uYWRkT2JzZXJ2ZXIodGhpcyl9LF9jbGVhck9ic2VydmVyOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0ucmVtb3ZlT2JzZXJ2ZXIodGhpcyl9LF9jaGFuZ2U6ZnVuY3Rpb24oKXt9fSksJChrLmZuLHN0KSxTPXh0LmV4dGVuZCh7bm9kZVR5cGU6XCJHcm91cFwiLGluaXQ6ZnVuY3Rpb24odCl7eHQuZm4uaW5pdC5jYWxsKHRoaXMsdCksdGhpcy5jaGlsZHJlbj1bXX0sY2hpbGRyZW5DaGFuZ2U6ZnVuY3Rpb24odCxlLG4pe3RoaXMudHJpZ2dlcihcImNoaWxkcmVuQ2hhbmdlXCIse2FjdGlvbjp0LGl0ZW1zOmUsaW5kZXg6bn0pfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXQodGhpcy5jaGlsZHJlbixhcmd1bWVudHMpLHRoaXMuX3JlcGFyZW50KGFyZ3VtZW50cyx0aGlzKSx0aGlzLmNoaWxkcmVuQ2hhbmdlKFwiYWRkXCIsYXJndW1lbnRzKSx0aGlzfSxpbnNlcnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jaGlsZHJlbi5zcGxpY2UodCwwLGUpLGUucGFyZW50PXRoaXMsdGhpcy5jaGlsZHJlbkNoYW5nZShcImFkZFwiLFtlXSx0KSx0aGlzfSxpbnNlcnRBdDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmluc2VydChlLHQpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9YXQodCx0aGlzLmNoaWxkcmVuKTtyZXR1cm4gZT49MCYmKHRoaXMuY2hpbGRyZW4uc3BsaWNlKGUsMSksdC5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuQ2hhbmdlKFwicmVtb3ZlXCIsW3RdLGUpKSx0aGlzfSxyZW1vdmVBdDpmdW5jdGlvbih0KXtpZigwPD10JiZ0PHRoaXMuY2hpbGRyZW4ubGVuZ3RoKXt2YXIgZT10aGlzLmNoaWxkcmVuW3RdO3RoaXMuY2hpbGRyZW4uc3BsaWNlKHQsMSksZS5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuQ2hhbmdlKFwicmVtb3ZlXCIsW2VdLHQpfXJldHVybiB0aGlzfSxjbGVhcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY2hpbGRyZW47cmV0dXJuIHRoaXMuY2hpbGRyZW49W10sdGhpcy5fcmVwYXJlbnQodCxudWxsKSx0aGlzLmNoaWxkcmVuQ2hhbmdlKFwicmVtb3ZlXCIsdCwwKSx0aGlzfSxiYm94OmZ1bmN0aW9uKHQpe3JldHVybiBlKHRoaXMuY2hpbGRyZW4sITAsdGhpcy5jdXJyZW50VHJhbnNmb3JtKHQpKX0scmF3QkJveDpmdW5jdGlvbigpe3JldHVybiBlKHRoaXMuY2hpbGRyZW4sITEpfSxfY2xpcHBlZEJCb3g6ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5jaGlsZHJlbix0aGlzLmN1cnJlbnRUcmFuc2Zvcm0odCkpfSxjdXJyZW50VHJhbnNmb3JtOmZ1bmN0aW9uKHQpe3JldHVybiB4dC5mbi5jdXJyZW50VHJhbnNmb3JtLmNhbGwodGhpcyx0KXx8bnVsbH0sY29udGFpbnNQb2ludDpmdW5jdGlvbih0LGUpe3ZhciBuLGkscjtpZih0aGlzLnZpc2libGUoKSlmb3Iobj10aGlzLmNoaWxkcmVuLGk9dGhpcy5jdXJyZW50VHJhbnNmb3JtKGUpLHI9MDtyPG4ubGVuZ3RoO3IrKylpZihuW3JdLmNvbnRhaW5zUG9pbnQodCxpKSlyZXR1cm4hMDtyZXR1cm4hMX0sX3JlcGFyZW50OmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyO2ZvcihuPTA7bjx0Lmxlbmd0aDtuKyspaT10W25dLHI9aS5wYXJlbnQsciYmciE9dGhpcyYmci5yZW1vdmUmJnIucmVtb3ZlKGkpLGkucGFyZW50PWV9fSksUS5taXhpbnMuVHJhdmVyc2FibGUuZXh0ZW5kKFMuZm4sXCJjaGlsZHJlblwiKSxFPXh0LmV4dGVuZCh7bm9kZVR5cGU6XCJUZXh0XCIsaW5pdDpmdW5jdGlvbih0LGUsbil7eHQuZm4uaW5pdC5jYWxsKHRoaXMsbiksdGhpcy5jb250ZW50KHQpLHRoaXMucG9zaXRpb24oZXx8bmV3IFguUG9pbnQpLHRoaXMub3B0aW9ucy5mb250fHwodGhpcy5vcHRpb25zLmZvbnQ9XCIxMnB4IHNhbnMtc2VyaWZcIiksaXQodGhpcy5vcHRpb25zLmZpbGwpfHx0aGlzLmZpbGwoXCIjMDAwXCIpfSxjb250ZW50OmZ1bmN0aW9uKHQpe3JldHVybiBpdCh0KT8odGhpcy5vcHRpb25zLnNldChcImNvbnRlbnRcIix0KSx0aGlzKTp0aGlzLm9wdGlvbnMuZ2V0KFwiY29udGVudFwiKX0sbWVhc3VyZTpmdW5jdGlvbigpe3ZhciB0PXR0Lm1lYXN1cmVUZXh0KHRoaXMuY29udGVudCgpLHtmb250OnRoaXMub3B0aW9ucy5nZXQoXCJmb250XCIpfSk7cmV0dXJuIHR9LHJlY3Q6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1lYXN1cmUoKSxlPXRoaXMucG9zaXRpb24oKS5jbG9uZSgpO3JldHVybiBuZXcgWC5SZWN0KGUsW3Qud2lkdGgsdC5oZWlnaHRdKX0sYmJveDpmdW5jdGlvbih0KXt2YXIgZT1XKHRoaXMuY3VycmVudFRyYW5zZm9ybSh0KSk7cmV0dXJuIHRoaXMucmVjdCgpLmJib3goZSl9LHJhd0JCb3g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWN0KCkuYmJveCgpfSxfY29udGFpbnNQb2ludDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWN0KCkuY29udGFpbnNQb2ludCh0KX19KSxRLm1peGlucy5QYWludGFibGUuZXh0ZW5kKEUuZm4pLG8oRS5mbixbXCJwb3NpdGlvblwiXSksUD14dC5leHRlbmQoe25vZGVUeXBlOlwiQ2lyY2xlXCIsaW5pdDpmdW5jdGlvbih0LGUpe3h0LmZuLmluaXQuY2FsbCh0aGlzLGUpLHRoaXMuZ2VvbWV0cnkodHx8bmV3IFguQ2lyY2xlKSxpdCh0aGlzLm9wdGlvbnMuc3Ryb2tlKXx8dGhpcy5zdHJva2UoXCIjMDAwXCIpfSxfYmJveDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZ2VvbWV0cnkuYmJveCh0KX0scmF3QkJveDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZW9tZXRyeS5iYm94KCl9LF9jb250YWluc1BvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdlb21ldHJ5KCkuY29udGFpbnNQb2ludCh0KX0sX2lzT25QYXRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdlb21ldHJ5KCkuX2lzT25QYXRoKHQsdGhpcy5vcHRpb25zLnN0cm9rZS53aWR0aC8yKX19KSxRLm1peGlucy5QYWludGFibGUuZXh0ZW5kKFAuZm4pLFEubWl4aW5zLk1lYXN1cmFibGUuZXh0ZW5kKFAuZm4pLGkoUC5mbixbXCJnZW9tZXRyeVwiXSksQT14dC5leHRlbmQoe25vZGVUeXBlOlwiQXJjXCIsaW5pdDpmdW5jdGlvbih0LGUpe3h0LmZuLmluaXQuY2FsbCh0aGlzLGUpLHRoaXMuZ2VvbWV0cnkodHx8bmV3IFguQXJjKSxpdCh0aGlzLm9wdGlvbnMuc3Ryb2tlKXx8dGhpcy5zdHJva2UoXCIjMDAwXCIpfSxfYmJveDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZ2VvbWV0cnkuYmJveCh0KX0scmF3QkJveDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdlb21ldHJ5KCkuYmJveCgpfSx0b1BhdGg6ZnVuY3Rpb24oKXt2YXIgdCxlPW5ldyBSLG49dGhpcy5nZW9tZXRyeSgpLmN1cnZlUG9pbnRzKCk7aWYobi5sZW5ndGg+MClmb3IoZS5tb3ZlVG8oblswXS54LG5bMF0ueSksdD0xO3Q8bi5sZW5ndGg7dCs9MyllLmN1cnZlVG8oblt0XSxuW3QrMV0sblt0KzJdKTtyZXR1cm4gZX0sX2NvbnRhaW5zUG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2VvbWV0cnkoKS5jb250YWluc1BvaW50KHQpfSxfaXNPblBhdGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2VvbWV0cnkoKS5faXNPblBhdGgodCx0aGlzLm9wdGlvbnMuc3Ryb2tlLndpZHRoLzIpfX0pLFEubWl4aW5zLlBhaW50YWJsZS5leHRlbmQoQS5mbiksUS5taXhpbnMuTWVhc3VyYWJsZS5leHRlbmQoQS5mbiksaShBLmZuLFtcImdlb21ldHJ5XCJdKSxPPWsuZXh0ZW5kKHtfY2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5nZW9tZXRyeUNoYW5nZSgpfX0pLE49cS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlLG4pe3RoaXMuYW5jaG9yKHR8fG5ldyBVKSx0aGlzLmNvbnRyb2xJbihlKSx0aGlzLmNvbnRyb2xPdXQobil9LGJib3hUbzpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5hbmNob3IoKS50cmFuc2Zvcm1Db3B5KGUpLHI9dC5hbmNob3IoKS50cmFuc2Zvcm1Db3B5KGUpO3JldHVybiBuPXRoaXMuY29udHJvbE91dCgpJiZ0LmNvbnRyb2xJbigpP3RoaXMuX2N1cnZlQm91bmRpbmdCb3goaSx0aGlzLmNvbnRyb2xPdXQoKS50cmFuc2Zvcm1Db3B5KGUpLHQuY29udHJvbEluKCkudHJhbnNmb3JtQ29weShlKSxyKTp0aGlzLl9saW5lQm91bmRpbmdCb3goaSxyKX0sX2xpbmVCb3VuZGluZ0JveDpmdW5jdGlvbih0LGUpe3JldHVybiBYLlJlY3QuZnJvbVBvaW50cyh0LGUpfSxfY3VydmVCb3VuZGluZ0JveDpmdW5jdGlvbih0LGUsbixpKXt2YXIgcj1bdCxlLG4saV0sbz10aGlzLl9jdXJ2ZUV4dHJlbWVzRm9yKHIsXCJ4XCIpLHM9dGhpcy5fY3VydmVFeHRyZW1lc0ZvcihyLFwieVwiKSxhPW50KFtvLm1pbixvLm1heCx0LngsaS54XSksaD1udChbcy5taW4scy5tYXgsdC55LGkueV0pO3JldHVybiBYLlJlY3QuZnJvbVBvaW50cyhuZXcgVShhLm1pbixoLm1pbiksbmV3IFUoYS5tYXgsaC5tYXgpKX0sX2N1cnZlRXh0cmVtZXNGb3I6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9jdXJ2ZUV4dHJlbWVzKHRbMF1bZV0sdFsxXVtlXSx0WzJdW2VdLHRbM11bZV0pO3JldHVybnttaW46dGhpcy5fY2FsY3VsYXRlQ3VydmVBdChuLm1pbixlLHQpLG1heDp0aGlzLl9jYWxjdWxhdGVDdXJ2ZUF0KG4ubWF4LGUsdCl9fSxfY2FsY3VsYXRlQ3VydmVBdDpmdW5jdGlvbih0LGUsbil7dmFyIGk9MS10O3JldHVybiBLKGksMykqblswXVtlXSszKksoaSwyKSp0Km5bMV1bZV0rMypLKHQsMikqaSpuWzJdW2VdK0sodCwzKSpuWzNdW2VdfSxfY3VydmVFeHRyZW1lczpmdW5jdGlvbih0LGUsbixpKXt2YXIgcixvLHM9dC0zKmUrMypuLWksYT0tMioodC0yKmUrbiksaD10LWUsbD1KLnNxcnQoYSphLTQqcypoKSxjPTAsdT0xO3JldHVybiAwPT09cz8wIT09YSYmKGM9dT0taC9hKTppc05hTihsKXx8KGM9KC1hK2wpLygyKnMpLHU9KC1hLWwpLygyKnMpKSxyPUoubWF4KEoubWluKGMsdSksMCksKHI8MHx8cj4xKSYmKHI9MCksbz1KLm1pbihKLm1heChjLHUpLDEpLChvPjF8fG88MCkmJihvPTEpLHttaW46cixtYXg6b319LF9pbnRlcnNlY3Rpb25zVG86ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gbj10aGlzLmNvbnRyb2xPdXQoKSYmdC5jb250cm9sSW4oKT9YLmN1cnZlSW50ZXJzZWN0aW9uc0NvdW50KFt0aGlzLmFuY2hvcigpLHRoaXMuY29udHJvbE91dCgpLHQuY29udHJvbEluKCksdC5hbmNob3IoKV0sZSx0aGlzLmJib3hUbyh0KSk6WC5saW5lSW50ZXJzZWN0aW9uc0NvdW50KHRoaXMuYW5jaG9yKCksdC5hbmNob3IoKSxlKX0sX2lzT25DdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByLG8scyxhLGgsbCxjLHUsZj10aGlzLmJib3hUbyh0KS5leHBhbmQobixuKTtpZihmLmNvbnRhaW5zUG9pbnQoZSkpcmV0dXJuIHI9dGhpcy5hbmNob3IoKSxvPXRoaXMuY29udHJvbE91dCgpLHM9dC5jb250cm9sSW4oKSxhPXQuYW5jaG9yKCksXCJzdGFydFwiPT1pJiZyLmRpc3RhbmNlVG8oZSk8PW4/IVguaXNPdXRPZkVuZFBvaW50KHIsbyxlKTpcImVuZFwiPT1pJiZhLmRpc3RhbmNlVG8oZSk8PW4/IVguaXNPdXRPZkVuZFBvaW50KGEscyxlKTooaD1YLmhhc1Jvb3RzSW5SYW5nZSxsPVtyLG8scyxhXSwhKCFoKGwsZSxcInhcIixcInlcIixuKSYmIWgobCxlLFwieVwiLFwieFwiLG4pKXx8KGM9WC50cmFuc2Zvcm0oKS5yb3RhdGUoNDUsZSksdT1bci50cmFuc2Zvcm1Db3B5KGMpLG8udHJhbnNmb3JtQ29weShjKSxzLnRyYW5zZm9ybUNvcHkoYyksYS50cmFuc2Zvcm1Db3B5KGMpXSxoKHUsZSxcInhcIixcInlcIixuKXx8aCh1LGUsXCJ5XCIsXCJ4XCIsbikpKX0sX2lzT25MaW5lVG86ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMuYW5jaG9yKCkscj10LmFuY2hvcigpLG89dHQuZGVnKEouYXRhbjIoci55LWkueSxyLngtaS54KSkscz1uZXcgWC5SZWN0KFtpLngsaS55LW4vMl0sW2kuZGlzdGFuY2VUbyhyKSxuXSk7cmV0dXJuIHMuY29udGFpbnNQb2ludChlLnRyYW5zZm9ybUNvcHkoWC50cmFuc2Zvcm0oKS5yb3RhdGUoLW8saSkpKX0sX2lzT25QYXRoVG86ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI7cmV0dXJuIHI9dGhpcy5jb250cm9sT3V0KCkmJnQuY29udHJvbEluKCk/dGhpcy5faXNPbkN1cnZlVG8odCxlLG4vMixpKTp0aGlzLl9pc09uTGluZVRvKHQsZSxuKX19KSxvKE4uZm4sW1wiYW5jaG9yXCIsXCJjb250cm9sSW5cIixcImNvbnRyb2xPdXRcIl0pLCQoTi5mbixzdCksUj14dC5leHRlbmQoe25vZGVUeXBlOlwiUGF0aFwiLGluaXQ6ZnVuY3Rpb24odCl7eHQuZm4uaW5pdC5jYWxsKHRoaXMsdCksdGhpcy5zZWdtZW50cz1uZXcgTyx0aGlzLnNlZ21lbnRzLmFkZE9ic2VydmVyKHRoaXMpLGl0KHRoaXMub3B0aW9ucy5zdHJva2UpfHwodGhpcy5zdHJva2UoXCIjMDAwXCIpLGl0KHRoaXMub3B0aW9ucy5zdHJva2UubGluZUpvaW4pfHx0aGlzLm9wdGlvbnMuc2V0KFwic3Ryb2tlLmxpbmVKb2luXCIsXCJtaXRlclwiKSl9LG1vdmVUbzpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnN1c3BlbmQoKSx0aGlzLnNlZ21lbnRzLmVsZW1lbnRzKFtdKSx0aGlzLnJlc3VtZSgpLHRoaXMubGluZVRvKHQsZSksdGhpc30sbGluZVRvOmZ1bmN0aW9uKHQsZSl7dmFyIG49aXQoZSk/bmV3IFUodCxlKTp0LGk9bmV3IE4obik7cmV0dXJuIHRoaXMuc2VnbWVudHMucHVzaChpKSx0aGlzfSxjdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyO3JldHVybiB0aGlzLnNlZ21lbnRzLmxlbmd0aD4wJiYoaT1ydCh0aGlzLnNlZ21lbnRzKSxyPW5ldyBOKG4sZSksdGhpcy5zdXNwZW5kKCksaS5jb250cm9sT3V0KHQpLHRoaXMucmVzdW1lKCksdGhpcy5zZWdtZW50cy5wdXNoKHIpKSx0aGlzfSxhcmM6ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbyxzLGEsaCxsO3JldHVybiB0aGlzLnNlZ21lbnRzLmxlbmd0aD4wJiYobz1ydCh0aGlzLnNlZ21lbnRzKSxzPW8uYW5jaG9yKCksYT10dC5yYWQodCksaD1uZXcgVShzLngtbipKLmNvcyhhKSxzLnktaSpKLnNpbihhKSksbD1uZXcgWC5BcmMoaCx7c3RhcnRBbmdsZTp0LGVuZEFuZ2xlOmUscmFkaXVzWDpuLHJhZGl1c1k6aSxhbnRpY2xvY2t3aXNlOnJ9KSx0aGlzLl9hZGRBcmNTZWdtZW50cyhsKSksdGhpc30sYXJjVG86ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbyxzLGE7cmV0dXJuIHRoaXMuc2VnbWVudHMubGVuZ3RoPjAmJihvPXJ0KHRoaXMuc2VnbWVudHMpLHM9by5hbmNob3IoKSxhPVguQXJjLmZyb21Qb2ludHMocyx0LGUsbixpLHIpLHRoaXMuX2FkZEFyY1NlZ21lbnRzKGEpKSx0aGlzfSxfYWRkQXJjU2VnbWVudHM6ZnVuY3Rpb24odCl7dmFyIGUsbjtmb3IodGhpcy5zdXNwZW5kKCksZT10LmN1cnZlUG9pbnRzKCksbj0xO248ZS5sZW5ndGg7bis9Myl0aGlzLmN1cnZlVG8oZVtuXSxlW24rMV0sZVtuKzJdKTt0aGlzLnJlc3VtZSgpLHRoaXMuZ2VvbWV0cnlDaGFuZ2UoKX0sY2xvc2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmNsb3NlZD0hMCx0aGlzLmdlb21ldHJ5Q2hhbmdlKCksdGhpc30scmF3QkJveDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYm94KCl9LF9jb250YWluc1BvaW50OmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyPXRoaXMuc2VnbWVudHMsbz1yLmxlbmd0aCxzPTA7Zm9yKGk9MTtpPG87aSsrKWU9cltpLTFdLG49cltpXSxzKz1lLl9pbnRlcnNlY3Rpb25zVG8obix0KTtyZXR1cm4hdGhpcy5vcHRpb25zLmNsb3NlZCYmclswXS5hbmNob3IoKS5lcXVhbHMocltvLTFdLmFuY2hvcigpKXx8KHMrPVgubGluZUludGVyc2VjdGlvbnNDb3VudChyWzBdLmFuY2hvcigpLHJbby0xXS5hbmNob3IoKSx0KSkscyUyIT09MH0sX2lzT25QYXRoOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLnNlZ21lbnRzLHI9aS5sZW5ndGg7aWYoZT1lfHx0aGlzLm9wdGlvbnMuc3Ryb2tlLndpZHRoLHI+MSl7aWYoaVswXS5faXNPblBhdGhUbyhpWzFdLHQsZSxcInN0YXJ0XCIpKXJldHVybiEwO2ZvcihuPTI7bjw9ci0yO24rKylpZihpW24tMV0uX2lzT25QYXRoVG8oaVtuXSx0LGUpKXJldHVybiEwO2lmKGlbci0yXS5faXNPblBhdGhUbyhpW3ItMV0sdCxlLFwiZW5kXCIpKXJldHVybiEwfXJldHVybiExfSxfYmJveDpmdW5jdGlvbih0KXt2YXIgZSxuLGkscixvPXRoaXMuc2VnbWVudHMscz1vLmxlbmd0aDtpZigxPT09cyluPW9bMF0uYW5jaG9yKCkudHJhbnNmb3JtQ29weSh0KSxlPW5ldyBYLlJlY3QobixZLlpFUk8pO2Vsc2UgaWYocz4wKWZvcihpPTE7aTxzO2krKylyPW9baS0xXS5iYm94VG8ob1tpXSx0KSxlPWU/WC5SZWN0LnVuaW9uKGUscik6cjtyZXR1cm4gZX19KSxRLm1peGlucy5QYWludGFibGUuZXh0ZW5kKFIuZm4pLFEubWl4aW5zLk1lYXN1cmFibGUuZXh0ZW5kKFIuZm4pLFIuZnJvbVJlY3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IFIoZSkubW92ZVRvKHQudG9wTGVmdCgpKS5saW5lVG8odC50b3BSaWdodCgpKS5saW5lVG8odC5ib3R0b21SaWdodCgpKS5saW5lVG8odC5ib3R0b21MZWZ0KCkpLmNsb3NlKCl9LFIuZnJvbVBvaW50cz1mdW5jdGlvbih0LGUpe3ZhciBuLGkscjtpZih0KXtmb3Iobj1uZXcgUihlKSxpPTA7aTx0Lmxlbmd0aDtpKyspcj1VLmNyZWF0ZSh0W2ldKSxyJiYoMD09PWk/bi5tb3ZlVG8ocik6bi5saW5lVG8ocikpO3JldHVybiBufX0sUi5mcm9tQXJjPWZ1bmN0aW9uKHQsZSl7dmFyIG49bmV3IFIoZSksaT10LnN0YXJ0QW5nbGUscj10LnBvaW50QXQoaSk7cmV0dXJuIG4ubW92ZVRvKHIueCxyLnkpLG4uYXJjKGksdC5lbmRBbmdsZSx0LnJhZGl1c1gsdC5yYWRpdXNZLHQuYW50aWNsb2Nrd2lzZSksbn0sej14dC5leHRlbmQoe25vZGVUeXBlOlwiTXVsdGlQYXRoXCIsaW5pdDpmdW5jdGlvbih0KXt4dC5mbi5pbml0LmNhbGwodGhpcyx0KSx0aGlzLnBhdGhzPW5ldyBPLHRoaXMucGF0aHMuYWRkT2JzZXJ2ZXIodGhpcyksaXQodGhpcy5vcHRpb25zLnN0cm9rZSl8fHRoaXMuc3Ryb2tlKFwiIzAwMFwiKX0sbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dmFyIG49bmV3IFI7cmV0dXJuIG4ubW92ZVRvKHQsZSksdGhpcy5wYXRocy5wdXNoKG4pLHRoaXN9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhdGhzLmxlbmd0aD4wJiZydCh0aGlzLnBhdGhzKS5saW5lVG8odCxlKSx0aGlzfSxjdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5wYXRocy5sZW5ndGg+MCYmcnQodGhpcy5wYXRocykuY3VydmVUbyh0LGUsbiksdGhpc30sYXJjOmZ1bmN0aW9uKHQsZSxuLGkscil7cmV0dXJuIHRoaXMucGF0aHMubGVuZ3RoPjAmJnJ0KHRoaXMucGF0aHMpLmFyYyh0LGUsbixpLHIpLHRoaXN9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLGkscil7cmV0dXJuIHRoaXMucGF0aHMubGVuZ3RoPjAmJnJ0KHRoaXMucGF0aHMpLmFyY1RvKHQsZSxuLGksciksdGhpc30sY2xvc2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXRocy5sZW5ndGg+MCYmcnQodGhpcy5wYXRocykuY2xvc2UoKSx0aGlzfSxfYmJveDpmdW5jdGlvbih0KXtyZXR1cm4gZSh0aGlzLnBhdGhzLCEwLHQpfSxyYXdCQm94OmZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcy5wYXRocywhMSl9LF9jb250YWluc1BvaW50OmZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5wYXRocztmb3IoZT0wO2U8bi5sZW5ndGg7ZSsrKWlmKG5bZV0uX2NvbnRhaW5zUG9pbnQodCkpcmV0dXJuITA7cmV0dXJuITF9LF9pc09uUGF0aDpmdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMucGF0aHMsaT10aGlzLm9wdGlvbnMuc3Ryb2tlLndpZHRoO2ZvcihlPTA7ZTxuLmxlbmd0aDtlKyspaWYobltlXS5faXNPblBhdGgodCxpKSlyZXR1cm4hMDtyZXR1cm4hMX0sX2NsaXBwZWRCQm94OmZ1bmN0aW9uKHQpe3JldHVybiBuKHRoaXMucGF0aHMsdGhpcy5jdXJyZW50VHJhbnNmb3JtKHQpKX19KSxRLm1peGlucy5QYWludGFibGUuZXh0ZW5kKHouZm4pLFEubWl4aW5zLk1lYXN1cmFibGUuZXh0ZW5kKHouZm4pLE09eHQuZXh0ZW5kKHtub2RlVHlwZTpcIkltYWdlXCIsaW5pdDpmdW5jdGlvbih0LGUsbil7eHQuZm4uaW5pdC5jYWxsKHRoaXMsbiksdGhpcy5zcmModCksdGhpcy5yZWN0KGV8fG5ldyBYLlJlY3QpfSxzcmM6ZnVuY3Rpb24odCl7cmV0dXJuIGl0KHQpPyh0aGlzLm9wdGlvbnMuc2V0KFwic3JjXCIsdCksdGhpcyk6dGhpcy5vcHRpb25zLmdldChcInNyY1wiKX0sYmJveDpmdW5jdGlvbih0KXt2YXIgZT1XKHRoaXMuY3VycmVudFRyYW5zZm9ybSh0KSk7cmV0dXJuIHRoaXMuX3JlY3QuYmJveChlKX0scmF3QkJveDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWN0LmJib3goKX0sX2NvbnRhaW5zUG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlY3QuY29udGFpbnNQb2ludCh0KX0sX2hhc0ZpbGw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zcmMoKX19KSxpKE0uZm4sW1wicmVjdFwiXSksQj1xLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUsbil7dGhpcy5vcHRpb25zPW5ldyBaKHtvZmZzZXQ6dCxjb2xvcjplLG9wYWNpdHk6aXQobik/bjoxfSksdGhpcy5vcHRpb25zLmFkZE9ic2VydmVyKHRoaXMpfX0pLGEoQi5mbixbXCJvZmZzZXRcIixcImNvbG9yXCIsXCJvcGFjaXR5XCJdKSwkKEIuZm4sc3QpLEIuY3JlYXRlPWZ1bmN0aW9uKHQpe2lmKGl0KHQpKXt2YXIgZTtyZXR1cm4gZT10IGluc3RhbmNlb2YgQj90OnQubGVuZ3RoPjE/bmV3IEIodFswXSx0WzFdLHRbMl0pOm5ldyBCKHQub2Zmc2V0LHQuY29sb3IsdC5vcGFjaXR5KX19LEQ9ay5leHRlbmQoe19jaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnNDaGFuZ2Uoe2ZpZWxkOlwic3RvcHNcIn0pfX0pLEw9cS5leHRlbmQoe25vZGVUeXBlOlwiZ3JhZGllbnRcIixpbml0OmZ1bmN0aW9uKHQpe3RoaXMuc3RvcHM9bmV3IEQodGhpcy5fY3JlYXRlU3RvcHModC5zdG9wcykpLHRoaXMuc3RvcHMuYWRkT2JzZXJ2ZXIodGhpcyksdGhpcy5fdXNlclNwYWNlPXQudXNlclNwYWNlLHRoaXMuaWQ9bCgpfSx1c2VyU3BhY2U6ZnVuY3Rpb24odCl7cmV0dXJuIGl0KHQpPyh0aGlzLl91c2VyU3BhY2U9dCx0aGlzLm9wdGlvbnNDaGFuZ2UoKSx0aGlzKTp0aGlzLl91c2VyU3BhY2V9LF9jcmVhdGVTdG9wczpmdW5jdGlvbih0KXt2YXIgZSxuPVtdO2Zvcih0PXR8fFtdLGU9MDtlPHQubGVuZ3RoO2UrKyluLnB1c2goQi5jcmVhdGUodFtlXSkpO3JldHVybiBufSxhZGRTdG9wOmZ1bmN0aW9uKHQsZSxuKXt0aGlzLnN0b3BzLnB1c2gobmV3IEIodCxlLG4pKX0scmVtb3ZlU3RvcDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnN0b3BzLmluZGV4T2YodCk7ZT49MCYmdGhpcy5zdG9wcy5zcGxpY2UoZSwxKX19KSwkKEwuZm4sc3Qse29wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24odCl7dGhpcy50cmlnZ2VyKFwib3B0aW9uc0NoYW5nZVwiLHtmaWVsZDpcImdyYWRpZW50XCIrKHQ/XCIuXCIrdC5maWVsZDpcIlwiKSx2YWx1ZTp0aGlzfSl9LGdlb21ldHJ5Q2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zQ2hhbmdlKCl9fSksST1MLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt0PXR8fHt9LEwuZm4uaW5pdC5jYWxsKHRoaXMsdCksdGhpcy5zdGFydCh0LnN0YXJ0fHxuZXcgVSksdGhpcy5lbmQodC5lbmR8fG5ldyBVKDEsMCkpfX0pLG8oSS5mbixbXCJzdGFydFwiLFwiZW5kXCJdKSxGPUwuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3Q9dHx8e30sTC5mbi5pbml0LmNhbGwodGhpcyx0KSx0aGlzLmNlbnRlcih0LmNlbnRlcnx8bmV3IFUpLHRoaXMuX3JhZGl1cz1pdCh0LnJhZGl1cyk/dC5yYWRpdXM6MSx0aGlzLl9mYWxsYmFja0ZpbGw9dC5mYWxsYmFja0ZpbGx9LHJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gaXQodCk/KHRoaXMuX3JhZGl1cz10LHRoaXMuZ2VvbWV0cnlDaGFuZ2UoKSx0aGlzKTp0aGlzLl9yYWRpdXN9LGZhbGxiYWNrRmlsbDpmdW5jdGlvbih0KXtyZXR1cm4gaXQodCk/KHRoaXMuX2ZhbGxiYWNrRmlsbD10LHRoaXMub3B0aW9uc0NoYW5nZSgpLHRoaXMpOnRoaXMuX2ZhbGxiYWNrRmlsbH19KSxvKEYuZm4sW1wiY2VudGVyXCJdKSxHPXh0LmV4dGVuZCh7bm9kZVR5cGU6XCJSZWN0XCIsaW5pdDpmdW5jdGlvbih0LGUpe3h0LmZuLmluaXQuY2FsbCh0aGlzLGUpLHRoaXMuZ2VvbWV0cnkodHx8bmV3IFguUmVjdCksaXQodGhpcy5vcHRpb25zLnN0cm9rZSl8fHRoaXMuc3Ryb2tlKFwiIzAwMFwiKX0sX2Jib3g6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2dlb21ldHJ5LmJib3godCl9LHJhd0JCb3g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2VvbWV0cnkuYmJveCgpfSxfY29udGFpbnNQb2ludDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZ2VvbWV0cnkuY29udGFpbnNQb2ludCh0KX0sX2lzT25QYXRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdlb21ldHJ5KCkuX2lzT25QYXRoKHQsdGhpcy5vcHRpb25zLnN0cm9rZS53aWR0aC8yKX19KSxRLm1peGlucy5QYWludGFibGUuZXh0ZW5kKEcuZm4pLFEubWl4aW5zLk1lYXN1cmFibGUuZXh0ZW5kKEcuZm4pLGkoRy5mbixbXCJnZW9tZXRyeVwiXSksaj1TLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe1MuZm4uaW5pdC5jYWxsKHRoaXMsSC5kZWVwRXh0ZW5kKHt9LHRoaXMuX2RlZmF1bHRzLGUpKSx0aGlzLl9yZWN0PXQsdGhpcy5fZmllbGRNYXA9e319LF9kZWZhdWx0czp7YWxpZ25Db250ZW50Om10LGp1c3RpZnlDb250ZW50Om10LGFsaWduSXRlbXM6bXQsc3BhY2luZzowLG9yaWVudGF0aW9uOnZ0LGxpbmVTcGFjaW5nOjAsd3JhcDohMH0scmVjdDpmdW5jdGlvbih0KXtyZXR1cm4gdD8odGhpcy5fcmVjdD10LHRoaXMpOnRoaXMuX3JlY3R9LF9pbml0TWFwOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLGU9dGhpcy5fZmllbGRNYXA7dC5vcmllbnRhdGlvbj09dnQ/KGUuc2l6ZUZpZWxkPVwid2lkdGhcIixlLmdyb3Vwc1NpemVGaWVsZD1cImhlaWdodFwiLGUuZ3JvdXBBeGlzPVwieFwiLGUuZ3JvdXBzQXhpcz1cInlcIik6KGUuc2l6ZUZpZWxkPVwiaGVpZ2h0XCIsZS5ncm91cHNTaXplRmllbGQ9XCJ3aWR0aFwiLGUuZ3JvdXBBeGlzPVwieVwiLGUuZ3JvdXBzQXhpcz1cInhcIil9LHJlZmxvdzpmdW5jdGlvbigpe3ZhciB0LGUsbixpLHIsbyxzLGEsaCxsLGMsdSxmLGQscCxtLGcsdix4LHksdyxiLEMsayxTLEU7aWYodGhpcy5fcmVjdCYmMCE9PXRoaXMuY2hpbGRyZW4ubGVuZ3RoKXtmb3IodGhpcy5faW5pdE1hcCgpLHRoaXMub3B0aW9ucy50cmFuc2Zvcm0mJnRoaXMudHJhbnNmb3JtKG51bGwpLHQ9dGhpcy5vcHRpb25zLGU9dGhpcy5fZmllbGRNYXAsbj10aGlzLl9yZWN0LGk9dGhpcy5faW5pdEdyb3VwcygpLHI9aS5ncm91cHMsbz1pLmdyb3Vwc1NpemUscz1lLnNpemVGaWVsZCxhPWUuZ3JvdXBzU2l6ZUZpZWxkLGg9ZS5ncm91cEF4aXMsbD1lLmdyb3Vwc0F4aXMsYz1fKG8sbix0LmFsaWduQ29udGVudCxsLGEpLHU9bmV3IFUsZj1uZXcgVSxkPW5ldyBYLlNpemUseT0wO3k8ci5sZW5ndGg7eSsrKXtmb3Iodj1yW3ldLHVbaF09cD1fKHYuc2l6ZSxuLHQuanVzdGlmeUNvbnRlbnQsaCxzKSx1W2xdPWMsZFtzXT12LnNpemUsZFthXT12LmxpbmVTaXplLHg9bmV3IFguUmVjdCh1LGQpLHc9MDt3PHYuYmJveGVzLmxlbmd0aDt3KyspZz12LmVsZW1lbnRzW3ddLG09di5iYm94ZXNbd10sZltoXT1wLGZbbF09XyhtLnNpemVbYV0seCx0LmFsaWduSXRlbXMsbCxhKSxUKGYsbSxnKSxwKz1tLnNpemVbc10rdC5zcGFjaW5nO2MrPXYubGluZVNpemUrdC5saW5lU3BhY2luZ30hdC53cmFwJiZ2LnNpemU+bi5zaXplW3NdJiYoYj1uLnNpemVbc10veC5zaXplW3NdLEM9eC50b3BMZWZ0KCkuc2NhbGUoYixiKSxrPXguc2l6ZVthXSpiLFM9XyhrLG4sdC5hbGlnbkNvbnRlbnQsbCxhKSxFPVgudHJhbnNmb3JtKCksXCJ4XCI9PT1oP0UudHJhbnNsYXRlKG4ub3JpZ2luLngtQy54LFMtQy55KTpFLnRyYW5zbGF0ZShTLUMueCxuLm9yaWdpbi55LUMueSksRS5zY2FsZShiLGIpLHRoaXMudHJhbnNmb3JtKEUpKX19LF9pbml0R3JvdXBzOmZ1bmN0aW9uKCl7dmFyIHQsZSxuLGk9dGhpcy5vcHRpb25zLHI9dGhpcy5jaGlsZHJlbixvPWkubGluZVNwYWNpbmcscz10aGlzLl9maWVsZE1hcC5zaXplRmllbGQsYT0tbyxoPVtdLGw9dGhpcy5fbmV3R3JvdXAoKSxjPWZ1bmN0aW9uKCl7aC5wdXNoKGwpLGErPWwubGluZVNpemUrb307Zm9yKG49MDtuPHIubGVuZ3RoO24rKyllPXJbbl0sdD1yW25dLmNsaXBwZWRCQm94KCksZS52aXNpYmxlKCkmJnQmJihpLndyYXAmJmwuc2l6ZSt0LnNpemVbc10raS5zcGFjaW5nPnRoaXMuX3JlY3Quc2l6ZVtzXT8wPT09bC5iYm94ZXMubGVuZ3RoPyh0aGlzLl9hZGRUb0dyb3VwKGwsdCxlKSxjKCksbD10aGlzLl9uZXdHcm91cCgpKTooYygpLGw9dGhpcy5fbmV3R3JvdXAoKSx0aGlzLl9hZGRUb0dyb3VwKGwsdCxlKSk6dGhpcy5fYWRkVG9Hcm91cChsLHQsZSkpO3JldHVybiBsLmJib3hlcy5sZW5ndGgmJmMoKSx7Z3JvdXBzOmgsZ3JvdXBzU2l6ZTphfX0sX2FkZFRvR3JvdXA6ZnVuY3Rpb24odCxlLG4pe3Quc2l6ZSs9ZS5zaXplW3RoaXMuX2ZpZWxkTWFwLnNpemVGaWVsZF0rdGhpcy5vcHRpb25zLnNwYWNpbmcsdC5saW5lU2l6ZT1NYXRoLm1heChlLnNpemVbdGhpcy5fZmllbGRNYXAuZ3JvdXBzU2l6ZUZpZWxkXSx0LmxpbmVTaXplKSx0LmJib3hlcy5wdXNoKGUpLHQuZWxlbWVudHMucHVzaChuKX0sX25ld0dyb3VwOmZ1bmN0aW9uKCl7cmV0dXJue2xpbmVTaXplOjAsc2l6ZTotdGhpcy5vcHRpb25zLnNwYWNpbmcsYmJveGVzOltdLGVsZW1lbnRzOltdfX19KSwkKFEse2FsaWduOmMsQXJjOkEsQ2lyY2xlOlAsRWxlbWVudDp4dCxFbGVtZW50c0FycmF5OmssZml0OnYsR3JhZGllbnQ6TCxHcmFkaWVudFN0b3A6QixHcm91cDpTLEltYWdlOk0sTGF5b3V0OmosTGluZWFyR3JhZGllbnQ6SSxNdWx0aVBhdGg6eixQYXRoOlIsUmFkaWFsR3JhZGllbnQ6RixSZWN0OkcsU2VnbWVudDpOLHN0YWNrOmYsVGV4dDpFLHZBbGlnbjp1LHZTdGFjazpkLHZXcmFwOm0sd3JhcDpwfSl9KHdpbmRvdy5rZW5kby5qUXVlcnkpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKHQsZSxuKXsobnx8ZSkoKX0pLGZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJkcmF3aW5nL3BhcnNlci5taW5cIixbXCJkcmF3aW5nL3NoYXBlcy5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7dmFyIGU9W107cmV0dXJuIHQucmVwbGFjZShtLGZ1bmN0aW9uKHQsbil7ZS5wdXNoKHBhcnNlRmxvYXQobikpfSksZX1mdW5jdGlvbiBuKHQsZSxuKXt2YXIgaSxyPWU/MDoxO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKz0yKXQuc3BsaWNlKGkrciwwLG4pfWZ1bmN0aW9uIGkodCxlKXtpZih0JiZlKXJldHVybiBlLnNjYWxlQ29weSgyKS50cmFuc2xhdGUoLXQueCwtdC55KX1mdW5jdGlvbiByKHQsZSxuKXt2YXIgaT0xLzM7cmV0dXJuIGU9ZS5jbG9uZSgpLnNjYWxlKDIvMykse2NvbnRyb2xPdXQ6ZS5jbG9uZSgpLnRyYW5zbGF0ZVdpdGgodC5zY2FsZUNvcHkoaSkpLGNvbnRyb2xJbjplLnRyYW5zbGF0ZVdpdGgobi5zY2FsZUNvcHkoaSkpfX12YXIgbz13aW5kb3cua2VuZG8scz1vLmRyYXdpbmcsYT1vLmdlb21ldHJ5LGg9by5DbGFzcyxsPWEuUG9pbnQsYz1vLmRlZXBFeHRlbmQsdT10LnRyaW0sZj1vLnV0aWwsZD1mLmxhc3QscD0vKFthLWRmLXpdezF9KShbXmEtZGYtel0qKSh6KT8vZ2ksbT0vWyxcXHNdPyhbK1xcLV0/KD86XFxkKlxcLlxcZCt8XFxkKykoPzpbZUVdWytcXC1dP1xcZCspPykvZyxnPVwibVwiLHY9XCJ6XCIseD1oLmV4dGVuZCh7cGFyc2U6ZnVuY3Rpb24odCxuKXt2YXIgaSxyPW5ldyBzLk11bHRpUGF0aChuKSxvPW5ldyBsO3JldHVybiB0LnJlcGxhY2UocCxmdW5jdGlvbih0LG4scyxhKXt2YXIgaD1uLnRvTG93ZXJDYXNlKCksbD1oPT09bixjPWUodShzKSk7aWYoaD09PWcmJihsPyhvLngrPWNbMF0sby55Kz1jWzFdKTooby54PWNbMF0sby55PWNbMV0pLHIubW92ZVRvKG8ueCxvLnkpLGMubGVuZ3RoPjImJihoPVwibFwiLGMuc3BsaWNlKDAsMikpKSx5W2hdKXlbaF0ocix7cGFyYW1ldGVyczpjLHBvc2l0aW9uOm8saXNSZWxhdGl2ZTpsLHByZXZpb3VzQ29tbWFuZDppfSksYSYmYS50b0xvd2VyQ2FzZSgpPT09diYmci5jbG9zZSgpO2Vsc2UgaWYoaCE9PWcpdGhyb3cgRXJyb3IoXCJFcnJvciB3aGlsZSBwYXJzaW5nIFNWRyBwYXRoLiBVbnN1cHBvcnRlZCBjb21tYW5kOiBcIitoKTtpPWh9KSxyfX0pLHk9e2w6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHI9ZS5wYXJhbWV0ZXJzLG89ZS5wb3NpdGlvbjtmb3Iobj0wO248ci5sZW5ndGg7bis9MilpPW5ldyBsKHJbbl0scltuKzFdKSxlLmlzUmVsYXRpdmUmJmkudHJhbnNsYXRlV2l0aChvKSx0LmxpbmVUbyhpLngsaS55KSxvLng9aS54LG8ueT1pLnl9LGM6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHIsbyxzPWUucGFyYW1ldGVycyxhPWUucG9zaXRpb247Zm9yKG89MDtvPHMubGVuZ3RoO28rPTYpbj1uZXcgbChzW29dLHNbbysxXSksaT1uZXcgbChzW28rMl0sc1tvKzNdKSxyPW5ldyBsKHNbbys0XSxzW28rNV0pLGUuaXNSZWxhdGl2ZSYmKGkudHJhbnNsYXRlV2l0aChhKSxuLnRyYW5zbGF0ZVdpdGgoYSksci50cmFuc2xhdGVXaXRoKGEpKSx0LmN1cnZlVG8obixpLHIpLGEueD1yLngsYS55PXIueX0sdjpmdW5jdGlvbih0LGUpe3ZhciBpPWUuaXNSZWxhdGl2ZT8wOmUucG9zaXRpb24ueDtuKGUucGFyYW1ldGVycywhMCxpKSx0aGlzLmwodCxlKX0saDpmdW5jdGlvbih0LGUpe3ZhciBpPWUuaXNSZWxhdGl2ZT8wOmUucG9zaXRpb24ueTtuKGUucGFyYW1ldGVycywhMSxpKSx0aGlzLmwodCxlKX0sYTpmdW5jdGlvbih0LGUpe3ZhciBuLGkscixvLHMsYSxoPWUucGFyYW1ldGVycyxjPWUucG9zaXRpb247Zm9yKG49MDtuPGgubGVuZ3RoO24rPTcpaT1oW25dLHI9aFtuKzFdLG89aFtuKzNdLHM9aFtuKzRdLGE9bmV3IGwoaFtuKzVdLGhbbis2XSksZS5pc1JlbGF0aXZlJiZhLnRyYW5zbGF0ZVdpdGgoYyksdC5hcmNUbyhhLGkscixvLHMpLGMueD1hLngsYy55PWEueX0sczpmdW5jdGlvbih0LGUpe3ZhciBuLHIsbyxzLGEsaD1lLnBhcmFtZXRlcnMsYz1lLnBvc2l0aW9uLHU9ZS5wcmV2aW91c0NvbW1hbmQ7Zm9yKFwic1wiIT11JiZcImNcIiE9dXx8KHM9ZChkKHQucGF0aHMpLnNlZ21lbnRzKS5jb250cm9sSW4oKSksYT0wO2E8aC5sZW5ndGg7YSs9NClvPW5ldyBsKGhbYV0saFthKzFdKSxyPW5ldyBsKGhbYSsyXSxoW2ErM10pLGUuaXNSZWxhdGl2ZSYmKG8udHJhbnNsYXRlV2l0aChjKSxyLnRyYW5zbGF0ZVdpdGgoYykpLG49cz9pKHMsYyk6Yy5jbG9uZSgpLHM9byx0LmN1cnZlVG8obixvLHIpLGMueD1yLngsYy55PXIueX0scTpmdW5jdGlvbih0LGUpe3ZhciBuLGksbyxzLGE9ZS5wYXJhbWV0ZXJzLGg9ZS5wb3NpdGlvbjtmb3Iocz0wO3M8YS5sZW5ndGg7cys9NClvPW5ldyBsKGFbc10sYVtzKzFdKSxpPW5ldyBsKGFbcysyXSxhW3MrM10pLGUuaXNSZWxhdGl2ZSYmKG8udHJhbnNsYXRlV2l0aChoKSxpLnRyYW5zbGF0ZVdpdGgoaCkpLG49cihoLG8saSksdC5jdXJ2ZVRvKG4uY29udHJvbE91dCxuLmNvbnRyb2xJbixpKSxoLng9aS54LGgueT1pLnl9LHQ6ZnVuY3Rpb24odCxlKXt2YXIgbixvLHMsYSxoLGM9ZS5wYXJhbWV0ZXJzLHU9ZS5wb3NpdGlvbixmPWUucHJldmlvdXNDb21tYW5kO2ZvcihcInFcIiE9ZiYmXCJ0XCIhPWZ8fChhPWQoZCh0LnBhdGhzKS5zZWdtZW50cyksbz1hLmNvbnRyb2xJbigpLmNsb25lKCkudHJhbnNsYXRlV2l0aCh1LnNjYWxlQ29weSgtMS8zKSkuc2NhbGUoMS41KSksaD0wO2g8Yy5sZW5ndGg7aCs9MilzPW5ldyBsKGNbaF0sY1toKzFdKSxlLmlzUmVsYXRpdmUmJnMudHJhbnNsYXRlV2l0aCh1KSxvPW8/aShvLHUpOnUuY2xvbmUoKSxuPXIodSxvLHMpLHQuY3VydmVUbyhuLmNvbnRyb2xPdXQsbi5jb250cm9sSW4scyksdS54PXMueCx1Lnk9cy55fX07eC5jdXJyZW50PW5ldyB4LHMuUGF0aC5wYXJzZT1mdW5jdGlvbih0LGUpe3JldHVybiB4LmN1cnJlbnQucGFyc2UodCxlKX0sYyhzLHtQYXRoUGFyc2VyOnh9KX0od2luZG93LmtlbmRvLmpRdWVyeSl9LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlLG4peyhufHxlKSgpfSksZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcImRyYXdpbmcvc2VhcmNoLm1pblwiLFtcImRyYXdpbmcvc2hhcGVzLm1pblwiXSx0KX0oZnVuY3Rpb24oKXshZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGUpe3JldHVybiB0Ll96SW5kZXg8ZS5fekluZGV4PzE6dC5fekluZGV4PmUuX3pJbmRleD8tMTowfXZhciBuPXdpbmRvdy5rZW5kbyxpPW4uZHJhd2luZyxyPW4uZ2VvbWV0cnksbz1uLkNsYXNzLHM9ci5SZWN0LGE9bi5kZWVwRXh0ZW5kLGg9dC5pc0FycmF5LGw9dC5pbkFycmF5LGM9TWF0aCx1PTFlNCxmPTc1LGQ9by5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oKXt0aGlzLnNoYXBlcz1bXX0sX2FkZDpmdW5jdGlvbih0LGUpe3RoaXMuc2hhcGVzLnB1c2goe2Jib3g6ZSxzaGFwZTp0fSksdC5fcXVhZE5vZGU9dGhpc30scG9pbnRTaGFwZXM6ZnVuY3Rpb24odCl7dmFyIGUsbj10aGlzLnNoYXBlcyxpPW4ubGVuZ3RoLHI9W107Zm9yKGU9MDtlPGk7ZSsrKW5bZV0uYmJveC5jb250YWluc1BvaW50KHQpJiZyLnB1c2gobltlXS5zaGFwZSk7cmV0dXJuIHJ9LGluc2VydDpmdW5jdGlvbih0LGUpe3RoaXMuX2FkZCh0LGUpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGUsbj10aGlzLnNoYXBlcyxpPW4ubGVuZ3RoO2ZvcihlPTA7ZTxpO2UrKylpZihuW2VdLnNoYXBlPT09dCl7bi5zcGxpY2UoZSwxKTticmVha319fSkscD1kLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXtkLmZuLmluaXQuY2FsbCh0aGlzKSx0aGlzLmNoaWxkcmVuPVtdLHRoaXMucmVjdD10fSxpbkJvdW5kczpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnJlY3Qsbj1lLmJvdHRvbVJpZ2h0KCksaT10LmJvdHRvbVJpZ2h0KCkscj1lLm9yaWdpbi54PD10Lm9yaWdpbi54JiZlLm9yaWdpbi55PD10Lm9yaWdpbi55JiZpLng8PW4ueCYmaS55PD1uLnk7cmV0dXJuIHJ9LHBvaW50U2hhcGVzOmZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5jaGlsZHJlbixpPW4ubGVuZ3RoLHI9ZC5mbi5wb2ludFNoYXBlcy5jYWxsKHRoaXMsdCk7Zm9yKGU9MDtlPGk7ZSsrKXI9ci5jb25jYXQobltlXS5wb2ludFNoYXBlcyh0KSk7cmV0dXJuIHJ9LGluc2VydDpmdW5jdGlvbih0LGUpe3ZhciBuLGk9ITEscj10aGlzLmNoaWxkcmVuO2lmKHRoaXMuaW5Cb3VuZHMoZSkpe2lmKHRoaXMuc2hhcGVzLmxlbmd0aDw0KXRoaXMuX2FkZCh0LGUpO2Vsc2V7Zm9yKHIubGVuZ3RofHx0aGlzLl9pbml0Q2hpbGRyZW4oKSxuPTA7bjxyLmxlbmd0aDtuKyspaWYocltuXS5pbnNlcnQodCxlKSl7aT0hMDticmVha31pfHx0aGlzLl9hZGQodCxlKX1pPSEwfXJldHVybiBpfSxfaW5pdENoaWxkcmVuOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yZWN0LGU9dGhpcy5jaGlsZHJlbixuPXQuY2VudGVyKCksaT10LndpZHRoKCkvMixyPXQuaGVpZ2h0KCkvMjtlLnB1c2gobmV3IHAobmV3IHMoW3Qub3JpZ2luLngsdC5vcmlnaW4ueV0sW2kscl0pKSxuZXcgcChuZXcgcyhbbi54LHQub3JpZ2luLnldLFtpLHJdKSksbmV3IHAobmV3IHMoW3Qub3JpZ2luLngsbi55XSxbaSxyXSkpLG5ldyBwKG5ldyBzKFtuLngsbi55XSxbaSxyXSkpKX19KSxtPW8uZXh0ZW5kKHtST09UX1NJWkU6MWUzLGluaXQ6ZnVuY3Rpb24oKXt0aGlzLmluaXRSb290cygpfSxpbml0Um9vdHM6ZnVuY3Rpb24oKXt0aGlzLnJvb3RNYXA9e30sdGhpcy5yb290PW5ldyBkLHRoaXMucm9vdEVsZW1lbnRzPVtdfSxjbGVhcjpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcyxuPWUucm9vdEVsZW1lbnRzO2Zvcih0PTA7dDxuLmxlbmd0aDt0KyspdGhpcy5yZW1vdmUoblt0XSk7dGhpcy5pbml0Um9vdHMoKX0scG9pbnRTaGFwZTpmdW5jdGlvbih0KXt2YXIgbixpPXRoaXMuUk9PVF9TSVpFLHI9dGhpcy5yb290LnBvaW50U2hhcGVzKHQpLG89KHRoaXMucm9vdE1hcFtjLmZsb29yKHQueC9pKV18fHt9KVtjLmZsb29yKHQueS9pKV07Zm9yKG8mJihyPXIuY29uY2F0KG8ucG9pbnRTaGFwZXModCkpKSx0aGlzLmFzc2lnblppbmRleChyKSxyLnNvcnQoZSksbj0wO248ci5sZW5ndGg7bisrKWlmKHJbbl0uY29udGFpbnNQb2ludCh0KSlyZXR1cm4gcltuXX0sYXNzaWduWmluZGV4OmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyLG87Zm9yKG89MDtvPHQubGVuZ3RoO28rKyl7Zm9yKGU9dFtvXSxpPTAsbj1jLnBvdyh1LGYpLHI9W107ZTspci5wdXNoKGUpLGU9ZS5wYXJlbnQ7Zm9yKDtyLmxlbmd0aDspZT1yLnBvcCgpLGkrPShsKGUsZS5wYXJlbnQ/ZS5wYXJlbnQuY2hpbGRyZW46dGhpcy5yb290RWxlbWVudHMpKzEpKm4sbi89dTt0W29dLl96SW5kZXg9aX19LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24odCl7XCJ0cmFuc2Zvcm1cIiE9dC5maWVsZCYmXCJzdHJva2Uud2lkdGhcIiE9dC5maWVsZHx8dGhpcy5iYm94Q2hhbmdlKHQuZWxlbWVudCl9LGdlb21ldHJ5Q2hhbmdlOmZ1bmN0aW9uKHQpe3RoaXMuYmJveENoYW5nZSh0LmVsZW1lbnQpfSxiYm94Q2hhbmdlOmZ1bmN0aW9uKHQpe2lmKFwiR3JvdXBcIj09PXQubm9kZVR5cGUpZm9yKHZhciBlPTA7ZTx0LmNoaWxkcmVuLmxlbmd0aDtlKyspdGhpcy5iYm94Q2hhbmdlKHQuY2hpbGRyZW5bZV0pO2Vsc2UgdC5fcXVhZE5vZGUmJnQuX3F1YWROb2RlLnJlbW92ZSh0KSx0aGlzLl9pbnNlcnRTaGFwZSh0KX0sYWRkOmZ1bmN0aW9uKHQpe3ZhciBlPWgodCk/dC5zbGljZSgwKTpbdF07dGhpcy5yb290RWxlbWVudHMucHVzaC5hcHBseSh0aGlzLnJvb3RFbGVtZW50cyxlKSx0aGlzLl9pbnNlcnQoZSl9LGNoaWxkcmVuQ2hhbmdlOmZ1bmN0aW9uKHQpe2lmKFwicmVtb3ZlXCI9PXQuYWN0aW9uKWZvcih2YXIgZT0wO2U8dC5pdGVtcy5sZW5ndGg7ZSsrKXRoaXMucmVtb3ZlKHQuaXRlbXNbZV0pO2Vsc2UgdGhpcy5faW5zZXJ0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuaXRlbXMsMCkpfSxfaW5zZXJ0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZTt0Lmxlbmd0aD4wOyllPXQucG9wKCksZS5hZGRPYnNlcnZlcih0aGlzKSxcIkdyb3VwXCI9PWUubm9kZVR5cGU/dC5wdXNoLmFwcGx5KHQsZS5jaGlsZHJlbik6dGhpcy5faW5zZXJ0U2hhcGUoZSl9LF9pbnNlcnRTaGFwZTpmdW5jdGlvbih0KXt2YXIgZSxuLGkscixvPXQuYmJveCgpO28mJihlPXRoaXMuUk9PVF9TSVpFLG49dGhpcy5nZXRTZWN0b3JzKG8pLGk9blswXVswXSxyPW5bMV1bMF0sdGhpcy5pblJvb3Qobik/dGhpcy5yb290Lmluc2VydCh0LG8pOih0aGlzLnJvb3RNYXBbaV18fCh0aGlzLnJvb3RNYXBbaV09e30pLHRoaXMucm9vdE1hcFtpXVtyXXx8KHRoaXMucm9vdE1hcFtpXVtyXT1uZXcgcChuZXcgcyhbaSplLHIqZV0sW2UsZV0pKSksdGhpcy5yb290TWFwW2ldW3JdLmluc2VydCh0LG8pKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZSxuO2lmKHQucmVtb3ZlT2JzZXJ2ZXIodGhpcyksXCJHcm91cFwiPT10Lm5vZGVUeXBlKWZvcihlPXQuY2hpbGRyZW4sbj0wO248ZS5sZW5ndGg7bisrKXRoaXMucmVtb3ZlKGVbbl0pO2Vsc2UgdC5fcXVhZE5vZGUmJih0Ll9xdWFkTm9kZS5yZW1vdmUodCksZGVsZXRlIHQuX3F1YWROb2RlKX0saW5Sb290OmZ1bmN0aW9uKHQpe3JldHVybiB0WzBdLmxlbmd0aD4xfHx0WzFdLmxlbmd0aD4xfSxnZXRTZWN0b3JzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT10aGlzLlJPT1RfU0laRSxyPXQuYm90dG9tUmlnaHQoKSxvPWMuZmxvb3Ioci54L2kpLHM9Yy5mbG9vcihyLnkvaSksYT1bW10sW11dO2ZvcihlPWMuZmxvb3IodC5vcmlnaW4ueC9pKTtlPD1vO2UrKylhWzBdLnB1c2goZSk7Zm9yKG49Yy5mbG9vcih0Lm9yaWdpbi55L2kpO248PXM7bisrKWFbMV0ucHVzaChuKTtyZXR1cm4gYX19KTthKGkse1NoYXBlc1F1YWRUcmVlOm0sUXVhZE5vZGU6cH0pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsbil7KG58fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwiZHJhd2luZy9zdmcubWluXCIsW1wiZHJhd2luZy9zaGFwZXMubWluXCIsXCJ1dGlsL21haW4ubWluXCJdLHQpfShmdW5jdGlvbigpeyFmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe3ZhciBlLG4saSxyO3RyeXtlPXQuZ2V0U2NyZWVuQ1RNP3QuZ2V0U2NyZWVuQ1RNKCk6bnVsbH1jYXRjaChvKXt9ZSYmKG49LWUuZSUxLGk9LWUuZiUxLHI9dC5zdHlsZSwwPT09biYmMD09PWl8fChyLmxlZnQ9bitcInB4XCIsci50b3A9aStcInB4XCIpKX1mdW5jdGlvbiBuKCl7dmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJiYXNlXCIpWzBdLGU9XCJcIixuPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYsaT1uLmluZGV4T2YoXCIjXCIpO3JldHVybiB0JiYhYy5zdXBwb3J0LmJyb3dzZXIubXNpZSYmKGkhPT0tMSYmKG49bi5zdWJzdHJpbmcoMCxpKSksZT1uKSxlfWZ1bmN0aW9uIGkodCl7cmV0dXJuXCJ1cmwoXCIrbigpK1wiI1wiK3QrXCIpXCJ9ZnVuY3Rpb24gcih0KXt2YXIgZSxuLGkscj1uZXcgTSxvPXQuY2xpcHBlZEJCb3goKTtyZXR1cm4gbyYmKGU9by5nZXRPcmlnaW4oKSxuPW5ldyBkLkdyb3VwLG4udHJhbnNmb3JtKGYudHJhbnNmb3JtKCkudHJhbnNsYXRlKC1lLngsLWUueSkpLG4uY2hpbGRyZW4ucHVzaCh0KSx0PW4pLHIubG9hZChbdF0pLGk9XCI8P3htbCB2ZXJzaW9uPScxLjAnID8+PHN2ZyB4bWxucz0nXCIrQStcIicgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHZlcnNpb249JzEuMSc+XCIrci5yZW5kZXIoKStcIjwvc3ZnPlwiLHIuZGVzdHJveSgpLGl9ZnVuY3Rpb24gbyhlLG4pe3ZhciBpPXIoZSk7cmV0dXJuIG4mJm4ucmF3fHwoaT1cImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsXCIrbS5lbmNvZGVCYXNlNjQoaSkpLHQuRGVmZXJyZWQoKS5yZXNvbHZlKGkpLnByb21pc2UoKX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuXCJjbGlwXCI9PXR8fFwiZmlsbFwiPT10JiYoIWV8fGUubm9kZVR5cGU9PVQpfWZ1bmN0aW9uIGEodCl7aWYoIXR8fCF0LmluZGV4T2Z8fHQuaW5kZXhPZihcIiZcIik8MClyZXR1cm4gdDt2YXIgZT1hLl9lbGVtZW50O3JldHVybiBlLmlubmVySFRNTD10LGUudGV4dENvbnRlbnR8fGUuaW5uZXJUZXh0fXZhciBoLGw9ZG9jdW1lbnQsYz13aW5kb3cua2VuZG8sdT1jLmRlZXBFeHRlbmQsZj1jLmdlb21ldHJ5LGQ9Yy5kcmF3aW5nLHA9ZC5CYXNlTm9kZSxtPWMudXRpbCxnPW0uZGVmaW5lZCx2PW0uaXNUcmFuc3BhcmVudCx4PW0ucmVuZGVyQXR0cix5PW0ucmVuZGVyQWxsQXR0cix3PW0ucmVuZGVyVGVtcGxhdGUsYj10LmluQXJyYXksXz1cImJ1dHRcIixDPWQuREFTSF9BUlJBWVMsVD1cImdyYWRpZW50XCIsaz1cIm5vbmVcIixTPVwiLmtlbmRvXCIsRT1cInNvbGlkXCIsUD1cIiBcIixBPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixPPVwidHJhbnNmb3JtXCIsTj1cInVuZGVmaW5lZFwiLFI9ZC5TdXJmYWNlLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LG4pe2QuU3VyZmFjZS5mbi5pbml0LmNhbGwodGhpcyx0LG4pLHRoaXMuX3Jvb3Q9bmV3IE0odGhpcy5vcHRpb25zKSxRKHRoaXMuZWxlbWVudFswXSx0aGlzLl90ZW1wbGF0ZSh0aGlzKSksdGhpcy5fcm9vdEVsZW1lbnQ9dGhpcy5lbGVtZW50WzBdLmZpcnN0RWxlbWVudENoaWxkLGUodGhpcy5fcm9vdEVsZW1lbnQpLHRoaXMuX3Jvb3QuYXR0YWNoVG8odGhpcy5fcm9vdEVsZW1lbnQpLHRoaXMuZWxlbWVudC5vbihcImNsaWNrXCIrUyx0aGlzLl9jbGljayksdGhpcy5lbGVtZW50Lm9uKFwibW91c2VvdmVyXCIrUyx0aGlzLl9tb3VzZWVudGVyKSxcbiAgICB0aGlzLmVsZW1lbnQub24oXCJtb3VzZW91dFwiK1MsdGhpcy5fbW91c2VsZWF2ZSksdGhpcy5lbGVtZW50Lm9uKFwibW91c2Vtb3ZlXCIrUyx0aGlzLl9tb3VzZW1vdmUpLHRoaXMucmVzaXplKCl9LHR5cGU6XCJzdmdcIixkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fcm9vdCYmKHRoaXMuX3Jvb3QuZGVzdHJveSgpLHRoaXMuX3Jvb3Q9bnVsbCx0aGlzLl9yb290RWxlbWVudD1udWxsLHRoaXMuZWxlbWVudC5vZmYoUykpLGQuU3VyZmFjZS5mbi5kZXN0cm95LmNhbGwodGhpcyl9LHRyYW5zbGF0ZTpmdW5jdGlvbih0KXt2YXIgZT1jLmZvcm1hdChcInswfSB7MX0gezJ9IHszfVwiLE1hdGgucm91bmQodC54KSxNYXRoLnJvdW5kKHQueSksdGhpcy5fc2l6ZS53aWR0aCx0aGlzLl9zaXplLmhlaWdodCk7dGhpcy5fb2Zmc2V0PXQsdGhpcy5fcm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKFwidmlld0JveFwiLGUpfSxkcmF3OmZ1bmN0aW9uKHQpe2QuU3VyZmFjZS5mbi5kcmF3LmNhbGwodGhpcyx0KSx0aGlzLl9yb290LmxvYWQoW3RdKX0sY2xlYXI6ZnVuY3Rpb24oKXtkLlN1cmZhY2UuZm4uY2xlYXIuY2FsbCh0aGlzKSx0aGlzLl9yb290LmNsZWFyKCl9LHN2ZzpmdW5jdGlvbigpe3JldHVyblwiPD94bWwgdmVyc2lvbj0nMS4wJyA/PlwiK3RoaXMuX3RlbXBsYXRlKHRoaXMpfSxleHBvcnRWaXN1YWw6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuX3Zpc3VhbCxuPXRoaXMuX29mZnNldDtyZXR1cm4gbiYmKHQ9bmV3IGQuR3JvdXAsdC5jaGlsZHJlbi5wdXNoKGUpLHQudHJhbnNmb3JtKGYudHJhbnNmb3JtKCkudHJhbnNsYXRlKC1uLngsLW4ueSkpLGU9dCksZX0sX3Jlc2l6ZTpmdW5jdGlvbigpe3RoaXMuX29mZnNldCYmdGhpcy50cmFuc2xhdGUodGhpcy5fb2Zmc2V0KX0sX3RlbXBsYXRlOncoXCI8c3ZnIHN0eWxlPSd3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBvdmVyZmxvdzogaGlkZGVuOycgeG1sbnM9J1wiK0ErXCInIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyB2ZXJzaW9uPScxLjEnPiM9IGQuX3Jvb3QucmVuZGVyKCkgIzwvc3ZnPlwiKX0pLHo9cC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7cC5mbi5pbml0LmNhbGwodGhpcyx0KSx0aGlzLmRlZmluaXRpb25zPXt9fSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50JiYodGhpcy5lbGVtZW50Ll9rZW5kb05vZGU9bnVsbCx0aGlzLmVsZW1lbnQ9bnVsbCksdGhpcy5jbGVhckRlZmluaXRpb25zKCkscC5mbi5kZXN0cm95LmNhbGwodGhpcyl9LGxvYWQ6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHIsbyxzPXRoaXMsYT1zLmVsZW1lbnQ7Zm9yKG89MDtvPHQubGVuZ3RoO28rKylpPXRbb10scj1pLmNoaWxkcmVuLG49bmV3IFdbaS5ub2RlVHlwZV0oaSksZyhlKT9zLmluc2VydEF0KG4sZSk6cy5hcHBlbmQobiksbi5jcmVhdGVEZWZpbml0aW9ucygpLHImJnIubGVuZ3RoPjAmJm4ubG9hZChyKSxhJiZuLmF0dGFjaFRvKGEsZSl9LHJvb3Q6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpczt0LnBhcmVudDspdD10LnBhcmVudDtyZXR1cm4gdH0sYXR0YWNoVG86ZnVuY3Rpb24odCxlKXt2YXIgbixpPWwuY3JlYXRlRWxlbWVudChcImRpdlwiKTtRKGksXCI8c3ZnIHhtbG5zPSdcIitBK1wiJyB2ZXJzaW9uPScxLjEnPlwiK3RoaXMucmVuZGVyKCkrXCI8L3N2Zz5cIiksbj1pLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCxuJiYoZyhlKT90Lmluc2VydEJlZm9yZShuLHQuY2hpbGROb2Rlc1tlXXx8bnVsbCk6dC5hcHBlbmRDaGlsZChuKSx0aGlzLnNldEVsZW1lbnQobikpfSxzZXRFbGVtZW50OmZ1bmN0aW9uKHQpe3ZhciBlLG4saT10aGlzLmNoaWxkTm9kZXM7Zm9yKHRoaXMuZWxlbWVudCYmKHRoaXMuZWxlbWVudC5fa2VuZG9Ob2RlPW51bGwpLHRoaXMuZWxlbWVudD10LHRoaXMuZWxlbWVudC5fa2VuZG9Ob2RlPXRoaXMsbj0wO248aS5sZW5ndGg7bisrKWU9dC5jaGlsZE5vZGVzW25dLGlbbl0uc2V0RWxlbWVudChlKX0sY2xlYXI6ZnVuY3Rpb24oKXt2YXIgdCxlO2Zvcih0aGlzLmNsZWFyRGVmaW5pdGlvbnMoKSx0aGlzLmVsZW1lbnQmJih0aGlzLmVsZW1lbnQuaW5uZXJIVE1MPVwiXCIpLHQ9dGhpcy5jaGlsZE5vZGVzLGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdLmRlc3Ryb3koKTt0aGlzLmNoaWxkTm9kZXM9W119LHJlbW92ZVNlbGY6ZnVuY3Rpb24oKXtpZih0aGlzLmVsZW1lbnQpe3ZhciB0PXRoaXMuZWxlbWVudC5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KSx0aGlzLmVsZW1lbnQ9bnVsbH1wLmZuLnJlbW92ZVNlbGYuY2FsbCh0aGlzKX0sdGVtcGxhdGU6dyhcIiM9IGQucmVuZGVyQ2hpbGRyZW4oKSAjXCIpLHJlbmRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRlbXBsYXRlKHRoaXMpfSxyZW5kZXJDaGlsZHJlbjpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5jaGlsZE5vZGVzLG49XCJcIjtmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKW4rPWVbdF0ucmVuZGVyKCk7cmV0dXJuIG59LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24odCl7dmFyIGU9dC5maWVsZCxuPXQudmFsdWU7XCJ2aXNpYmxlXCI9PT1lP3RoaXMuY3NzKFwiZGlzcGxheVwiLG4/XCJcIjprKTpoW2VdJiZzKGUsbik/dGhpcy51cGRhdGVEZWZpbml0aW9uKGUsbik6XCJvcGFjaXR5XCI9PT1lJiZ0aGlzLmF0dHIoXCJvcGFjaXR5XCIsbikscC5mbi5vcHRpb25zQ2hhbmdlLmNhbGwodGhpcyx0KX0sYXR0cjpmdW5jdGlvbih0LGUpe3RoaXMuZWxlbWVudCYmdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSh0LGUpfSxhbGxBdHRyOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRoaXMuYXR0cih0W2VdWzBdLHRbZV1bMV0pfSxjc3M6ZnVuY3Rpb24odCxlKXt0aGlzLmVsZW1lbnQmJih0aGlzLmVsZW1lbnQuc3R5bGVbdF09ZSl9LGFsbENzczpmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLmNzcyh0W2VdWzBdLHRbZV1bMV0pfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKHQpe3RoaXMuZWxlbWVudCYmdGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSh0KX0sbWFwVHJhbnNmb3JtOmZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiB0JiZlLnB1c2goW08sXCJtYXRyaXgoXCIrdC5tYXRyaXgoKS50b1N0cmluZyg2KStcIilcIl0pLGV9LHJlbmRlclRyYW5zZm9ybTpmdW5jdGlvbigpe3JldHVybiB5KHRoaXMubWFwVHJhbnNmb3JtKHRoaXMuc3JjRWxlbWVudC50cmFuc2Zvcm0oKSkpfSx0cmFuc2Zvcm1DaGFuZ2U6ZnVuY3Rpb24odCl7dD90aGlzLmFsbEF0dHIodGhpcy5tYXBUcmFuc2Zvcm0odCkpOnRoaXMucmVtb3ZlQXR0cihPKX0sbWFwU3R5bGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNyY0VsZW1lbnQub3B0aW9ucyxlPVtbXCJjdXJzb3JcIix0LmN1cnNvcl1dO3JldHVybiB0LnZpc2libGU9PT0hMSYmZS5wdXNoKFtcImRpc3BsYXlcIixrXSksZX0scmVuZGVyU3R5bGU6ZnVuY3Rpb24oKXtyZXR1cm4geChcInN0eWxlXCIsbS5yZW5kZXJTdHlsZSh0aGlzLm1hcFN0eWxlKCEwKSkpfSxyZW5kZXJPcGFjaXR5OmZ1bmN0aW9uKCl7cmV0dXJuIHgoXCJvcGFjaXR5XCIsdGhpcy5zcmNFbGVtZW50Lm9wdGlvbnMub3BhY2l0eSl9LGNyZWF0ZURlZmluaXRpb25zOmZ1bmN0aW9uKCl7dmFyIHQsZSxuLGkscj10aGlzLnNyY0VsZW1lbnQsbz10aGlzLmRlZmluaXRpb25zO2lmKHIpe249ci5vcHRpb25zO2ZvcihlIGluIGgpdD1uLmdldChlKSx0JiZzKGUsdCkmJihvW2VdPXQsaT0hMCk7aSYmdGhpcy5kZWZpbml0aW9uQ2hhbmdlKHthY3Rpb246XCJhZGRcIixkZWZpbml0aW9uczpvfSl9fSxkZWZpbml0aW9uQ2hhbmdlOmZ1bmN0aW9uKHQpe3RoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5kZWZpbml0aW9uQ2hhbmdlKHQpfSx1cGRhdGVEZWZpbml0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5kZWZpbml0aW9ucyxyPW5bdF0sbz1oW3RdLHM9e307ciYmKHNbdF09cix0aGlzLmRlZmluaXRpb25DaGFuZ2Uoe2FjdGlvbjpcInJlbW92ZVwiLGRlZmluaXRpb25zOnN9KSxkZWxldGUgblt0XSksZT8oc1t0XT1lLHRoaXMuZGVmaW5pdGlvbkNoYW5nZSh7YWN0aW9uOlwiYWRkXCIsZGVmaW5pdGlvbnM6c30pLG5bdF09ZSx0aGlzLmF0dHIobyxpKGUuaWQpKSk6ciYmdGhpcy5yZW1vdmVBdHRyKG8pfSxjbGVhckRlZmluaXRpb25zOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLmRlZmluaXRpb25zO2Zvcih0IGluIGUpe3RoaXMuZGVmaW5pdGlvbkNoYW5nZSh7YWN0aW9uOlwicmVtb3ZlXCIsZGVmaW5pdGlvbnM6ZX0pLHRoaXMuZGVmaW5pdGlvbnM9e307YnJlYWt9fSxyZW5kZXJEZWZpbml0aW9uczpmdW5jdGlvbigpe3JldHVybiB5KHRoaXMubWFwRGVmaW5pdGlvbnMoKSl9LG1hcERlZmluaXRpb25zOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLmRlZmluaXRpb25zLG49W107Zm9yKHQgaW4gZSluLnB1c2goW2hbdF0saShlW3RdLmlkKV0pO3JldHVybiBufX0pLE09ei5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7ei5mbi5pbml0LmNhbGwodGhpcyksdGhpcy5vcHRpb25zPXQsdGhpcy5kZWZzPW5ldyBCfSxhdHRhY2hUbzpmdW5jdGlvbih0KXt0aGlzLmVsZW1lbnQ9dCx0aGlzLmRlZnMuYXR0YWNoVG8odC5maXJzdEVsZW1lbnRDaGlsZCl9LGNsZWFyOmZ1bmN0aW9uKCl7cC5mbi5jbGVhci5jYWxsKHRoaXMpfSx0ZW1wbGF0ZTp3KFwiIz1kLmRlZnMucmVuZGVyKCkjIz0gZC5yZW5kZXJDaGlsZHJlbigpICNcIiksZGVmaW5pdGlvbkNoYW5nZTpmdW5jdGlvbih0KXt0aGlzLmRlZnMuZGVmaW5pdGlvbkNoYW5nZSh0KX19KSxCPXouZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKCl7ei5mbi5pbml0LmNhbGwodGhpcyksdGhpcy5kZWZpbml0aW9uTWFwPXt9fSxhdHRhY2hUbzpmdW5jdGlvbih0KXt0aGlzLmVsZW1lbnQ9dH0sdGVtcGxhdGU6dyhcIjxkZWZzPiM9IGQucmVuZGVyQ2hpbGRyZW4oKSM8L2RlZnM+XCIpLGRlZmluaXRpb25DaGFuZ2U6ZnVuY3Rpb24odCl7dmFyIGU9dC5kZWZpbml0aW9ucyxuPXQuYWN0aW9uO1wiYWRkXCI9PW4/dGhpcy5hZGREZWZpbml0aW9ucyhlKTpcInJlbW92ZVwiPT1uJiZ0aGlzLnJlbW92ZURlZmluaXRpb25zKGUpfSxjcmVhdGVEZWZpbml0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIG47cmV0dXJuXCJjbGlwXCI9PXQ/bj1EOlwiZmlsbFwiPT10JiYoZSBpbnN0YW5jZW9mIGQuTGluZWFyR3JhZGllbnQ/bj1VOmUgaW5zdGFuY2VvZiBkLlJhZGlhbEdyYWRpZW50JiYobj1ZKSksbmV3IG4oZSl9LGFkZERlZmluaXRpb25zOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0KXRoaXMuYWRkRGVmaW5pdGlvbihlLHRbZV0pfSxhZGREZWZpbml0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLmRlZmluaXRpb25NYXAscj1lLmlkLG89dGhpcy5lbGVtZW50LHM9aVtyXTtzP3MuY291bnQrKzoobj10aGlzLmNyZWF0ZURlZmluaXRpb24odCxlKSxpW3JdPXtlbGVtZW50Om4sY291bnQ6MX0sdGhpcy5hcHBlbmQobiksbyYmbi5hdHRhY2hUbyh0aGlzLmVsZW1lbnQpKX0scmVtb3ZlRGVmaW5pdGlvbnM6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHQpdGhpcy5yZW1vdmVEZWZpbml0aW9uKHRbZV0pfSxyZW1vdmVEZWZpbml0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVmaW5pdGlvbk1hcCxuPXQuaWQsaT1lW25dO2kmJihpLmNvdW50LS0sMD09PWkuY291bnQmJih0aGlzLnJlbW92ZShiKGkuZWxlbWVudCx0aGlzLmNoaWxkTm9kZXMpLDEpLGRlbGV0ZSBlW25dKSl9fSksRD16LmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt6LmZuLmluaXQuY2FsbCh0aGlzKSx0aGlzLnNyY0VsZW1lbnQ9dCx0aGlzLmlkPXQuaWQsdGhpcy5sb2FkKFt0XSl9LHRlbXBsYXRlOncoXCI8Y2xpcFBhdGggaWQ9JyM9ZC5pZCMnPiM9IGQucmVuZGVyQ2hpbGRyZW4oKSM8L2NsaXBQYXRoPlwiKX0pLEw9ei5leHRlbmQoe3RlbXBsYXRlOncoXCI8ZyM9IGQucmVuZGVyVHJhbnNmb3JtKCkgKyBkLnJlbmRlclN0eWxlKCkgKyBkLnJlbmRlck9wYWNpdHkoKSArIGQucmVuZGVyRGVmaW5pdGlvbnMoKSM+Iz0gZC5yZW5kZXJDaGlsZHJlbigpICM8L2c+XCIpLG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24odCl7dC5maWVsZD09TyYmdGhpcy50cmFuc2Zvcm1DaGFuZ2UodC52YWx1ZSksei5mbi5vcHRpb25zQ2hhbmdlLmNhbGwodGhpcyx0KX19KSxJPXouZXh0ZW5kKHtnZW9tZXRyeUNoYW5nZTpmdW5jdGlvbigpe3RoaXMuYXR0cihcImRcIix0aGlzLnJlbmRlckRhdGEoKSksdGhpcy5pbnZhbGlkYXRlKCl9LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24odCl7c3dpdGNoKHQuZmllbGQpe2Nhc2VcImZpbGxcIjp0LnZhbHVlP3RoaXMuYWxsQXR0cih0aGlzLm1hcEZpbGwodC52YWx1ZSkpOnRoaXMucmVtb3ZlQXR0cihcImZpbGxcIik7YnJlYWs7Y2FzZVwiZmlsbC5jb2xvclwiOnRoaXMuYWxsQXR0cih0aGlzLm1hcEZpbGwoe2NvbG9yOnQudmFsdWV9KSk7YnJlYWs7Y2FzZVwic3Ryb2tlXCI6dC52YWx1ZT90aGlzLmFsbEF0dHIodGhpcy5tYXBTdHJva2UodC52YWx1ZSkpOnRoaXMucmVtb3ZlQXR0cihcInN0cm9rZVwiKTticmVhaztjYXNlIE86dGhpcy50cmFuc2Zvcm1DaGFuZ2UodC52YWx1ZSk7YnJlYWs7ZGVmYXVsdDp2YXIgZT10aGlzLmF0dHJpYnV0ZU1hcFt0LmZpZWxkXTtlJiZ0aGlzLmF0dHIoZSx0LnZhbHVlKX16LmZuLm9wdGlvbnNDaGFuZ2UuY2FsbCh0aGlzLHQpfSxhdHRyaWJ1dGVNYXA6e1wiZmlsbC5vcGFjaXR5XCI6XCJmaWxsLW9wYWNpdHlcIixcInN0cm9rZS5jb2xvclwiOlwic3Ryb2tlXCIsXCJzdHJva2Uud2lkdGhcIjpcInN0cm9rZS13aWR0aFwiLFwic3Ryb2tlLm9wYWNpdHlcIjpcInN0cm9rZS1vcGFjaXR5XCJ9LGNvbnRlbnQ6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQmJih0aGlzLmVsZW1lbnQudGV4dENvbnRlbnQ9dGhpcy5zcmNFbGVtZW50LmNvbnRlbnQoKSl9LHJlbmRlckRhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmludFBhdGgodGhpcy5zcmNFbGVtZW50KX0scHJpbnRQYXRoOmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyLG8scz10LnNlZ21lbnRzLGE9cy5sZW5ndGg7aWYoYT4wKXtmb3IoZT1bXSxvPTE7bzxhO28rKylpPXRoaXMuc2VnbWVudFR5cGUoc1tvLTFdLHNbb10pLGkhPT1yJiYocj1pLGUucHVzaChpKSksZS5wdXNoKFwiTFwiPT09aT90aGlzLnByaW50UG9pbnRzKHNbb10uYW5jaG9yKCkpOnRoaXMucHJpbnRQb2ludHMoc1tvLTFdLmNvbnRyb2xPdXQoKSxzW29dLmNvbnRyb2xJbigpLHNbb10uYW5jaG9yKCkpKTtyZXR1cm4gbj1cIk1cIit0aGlzLnByaW50UG9pbnRzKHNbMF0uYW5jaG9yKCkpK1ArZS5qb2luKFApLHQub3B0aW9ucy5jbG9zZWQmJihuKz1cIlpcIiksbn19LHByaW50UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIHQsZT1hcmd1bWVudHMsbj1lLmxlbmd0aCxpPVtdO2Zvcih0PTA7dDxuO3QrKylpLnB1c2goZVt0XS50b1N0cmluZygzKSk7cmV0dXJuIGkuam9pbihQKX0sc2VnbWVudFR5cGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jb250cm9sT3V0KCkmJmUuY29udHJvbEluKCk/XCJDXCI6XCJMXCJ9LG1hcFN0cm9rZTpmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gdCYmIXYodC5jb2xvcik/KGUucHVzaChbXCJzdHJva2VcIix0LmNvbG9yXSksZS5wdXNoKFtcInN0cm9rZS13aWR0aFwiLHQud2lkdGhdKSxlLnB1c2goW1wic3Ryb2tlLWxpbmVjYXBcIix0aGlzLnJlbmRlckxpbmVjYXAodCldKSxlLnB1c2goW1wic3Ryb2tlLWxpbmVqb2luXCIsdC5saW5lSm9pbl0pLGcodC5vcGFjaXR5KSYmZS5wdXNoKFtcInN0cm9rZS1vcGFjaXR5XCIsdC5vcGFjaXR5XSksZyh0LmRhc2hUeXBlKSYmZS5wdXNoKFtcInN0cm9rZS1kYXNoYXJyYXlcIix0aGlzLnJlbmRlckRhc2hUeXBlKHQpXSkpOmUucHVzaChbXCJzdHJva2VcIixrXSksZX0scmVuZGVyU3Ryb2tlOmZ1bmN0aW9uKCl7cmV0dXJuIHkodGhpcy5tYXBTdHJva2UodGhpcy5zcmNFbGVtZW50Lm9wdGlvbnMuc3Ryb2tlKSl9LHJlbmRlckRhc2hUeXBlOmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyPXQud2lkdGh8fDEsbz10LmRhc2hUeXBlO2lmKG8mJm8hPUUpe2ZvcihlPUNbby50b0xvd2VyQ2FzZSgpXSxuPVtdLGk9MDtpPGUubGVuZ3RoO2krKyluLnB1c2goZVtpXSpyKTtyZXR1cm4gbi5qb2luKFwiIFwiKX19LHJlbmRlckxpbmVjYXA6ZnVuY3Rpb24odCl7dmFyIGU9dC5kYXNoVHlwZSxuPXQubGluZUNhcDtyZXR1cm4gZSYmZSE9RT9fOm59LG1hcEZpbGw6ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIHQmJnQubm9kZVR5cGU9PVR8fCh0JiYhdih0LmNvbG9yKT8oZS5wdXNoKFtcImZpbGxcIix0LmNvbG9yXSksZyh0Lm9wYWNpdHkpJiZlLnB1c2goW1wiZmlsbC1vcGFjaXR5XCIsdC5vcGFjaXR5XSkpOmUucHVzaChbXCJmaWxsXCIsa10pKSxlfSxyZW5kZXJGaWxsOmZ1bmN0aW9uKCl7cmV0dXJuIHkodGhpcy5tYXBGaWxsKHRoaXMuc3JjRWxlbWVudC5vcHRpb25zLmZpbGwpKX0sdGVtcGxhdGU6dyhcIjxwYXRoICM9IGQucmVuZGVyU3R5bGUoKSAjICM9IGQucmVuZGVyT3BhY2l0eSgpICMgIz0ga2VuZG8udXRpbC5yZW5kZXJBdHRyKCdkJywgZC5yZW5kZXJEYXRhKCkpICMgIz0gZC5yZW5kZXJTdHJva2UoKSAjICM9IGQucmVuZGVyRmlsbCgpICMgIz0gZC5yZW5kZXJEZWZpbml0aW9ucygpICMgIz0gZC5yZW5kZXJUcmFuc2Zvcm0oKSAjPjwvcGF0aD5cIil9KSxGPUkuZXh0ZW5kKHtyZW5kZXJEYXRhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJpbnRQYXRoKHRoaXMuc3JjRWxlbWVudC50b1BhdGgoKSl9fSksRz1JLmV4dGVuZCh7cmVuZGVyRGF0YTpmdW5jdGlvbigpe3ZhciB0LGUsbj10aGlzLnNyY0VsZW1lbnQucGF0aHM7aWYobi5sZW5ndGg+MCl7Zm9yKHQ9W10sZT0wO2U8bi5sZW5ndGg7ZSsrKXQucHVzaCh0aGlzLnByaW50UGF0aChuW2VdKSk7cmV0dXJuIHQuam9pbihcIiBcIil9fX0pLGo9SS5leHRlbmQoe2dlb21ldHJ5Q2hhbmdlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jZW50ZXIoKTt0aGlzLmF0dHIoXCJjeFwiLHQueCksdGhpcy5hdHRyKFwiY3lcIix0LnkpLHRoaXMuYXR0cihcInJcIix0aGlzLnJhZGl1cygpKSx0aGlzLmludmFsaWRhdGUoKX0sY2VudGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3JjRWxlbWVudC5nZW9tZXRyeSgpLmNlbnRlcn0scmFkaXVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3JjRWxlbWVudC5nZW9tZXRyeSgpLnJhZGl1c30sdGVtcGxhdGU6dyhcIjxjaXJjbGUgIz0gZC5yZW5kZXJTdHlsZSgpICMgIz0gZC5yZW5kZXJPcGFjaXR5KCkgIyBjeD0nIz0gZC5jZW50ZXIoKS54ICMnIGN5PScjPSBkLmNlbnRlcigpLnkgIycgcj0nIz0gZC5yYWRpdXMoKSAjJyAjPSBkLnJlbmRlclN0cm9rZSgpICMgIz0gZC5yZW5kZXJGaWxsKCkgIyAjPSBkLnJlbmRlckRlZmluaXRpb25zKCkgIyAjPSBkLnJlbmRlclRyYW5zZm9ybSgpICMgPjwvY2lyY2xlPlwiKX0pLEg9SS5leHRlbmQoe2dlb21ldHJ5Q2hhbmdlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wb3MoKTt0aGlzLmF0dHIoXCJ4XCIsdC54KSx0aGlzLmF0dHIoXCJ5XCIsdC55KSx0aGlzLmludmFsaWRhdGUoKX0sb3B0aW9uc0NoYW5nZTpmdW5jdGlvbih0KXtcImZvbnRcIj09PXQuZmllbGQ/KHRoaXMuYXR0cihcInN0eWxlXCIsbS5yZW5kZXJTdHlsZSh0aGlzLm1hcFN0eWxlKCkpKSx0aGlzLmdlb21ldHJ5Q2hhbmdlKCkpOlwiY29udGVudFwiPT09dC5maWVsZCYmSS5mbi5jb250ZW50LmNhbGwodGhpcyx0aGlzLnNyY0VsZW1lbnQuY29udGVudCgpKSxJLmZuLm9wdGlvbnNDaGFuZ2UuY2FsbCh0aGlzLHQpfSxtYXBTdHlsZTpmdW5jdGlvbih0KXt2YXIgZT1JLmZuLm1hcFN0eWxlLmNhbGwodGhpcyx0KSxuPXRoaXMuc3JjRWxlbWVudC5vcHRpb25zLmZvbnQ7cmV0dXJuIHQmJihuPWMuaHRtbEVuY29kZShuKSksZS5wdXNoKFtcImZvbnRcIixuXSksZX0scG9zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zcmNFbGVtZW50LnBvc2l0aW9uKCksZT10aGlzLnNyY0VsZW1lbnQubWVhc3VyZSgpO3JldHVybiB0LmNsb25lKCkuc2V0WSh0LnkrZS5iYXNlbGluZSl9LHJlbmRlckNvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNyY0VsZW1lbnQuY29udGVudCgpO3JldHVybiB0PWEodCksdD1jLmh0bWxFbmNvZGUodCl9LHRlbXBsYXRlOncoXCI8dGV4dCAjPSBkLnJlbmRlclN0eWxlKCkgIyAjPSBkLnJlbmRlck9wYWNpdHkoKSAjIHg9JyM9IHRoaXMucG9zKCkueCAjJyB5PScjPSB0aGlzLnBvcygpLnkgIycgIz0gZC5yZW5kZXJTdHJva2UoKSAjICM9IGQucmVuZGVyVHJhbnNmb3JtKCkgIyAjPSBkLnJlbmRlckRlZmluaXRpb25zKCkgIyAjPSBkLnJlbmRlckZpbGwoKSAjPiM9IGQucmVuZGVyQ29udGVudCgpICM8L3RleHQ+XCIpfSkscT1JLmV4dGVuZCh7Z2VvbWV0cnlDaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLmFsbEF0dHIodGhpcy5tYXBQb3NpdGlvbigpKSx0aGlzLmludmFsaWRhdGUoKX0sb3B0aW9uc0NoYW5nZTpmdW5jdGlvbih0KXtcInNyY1wiPT09dC5maWVsZCYmdGhpcy5hbGxBdHRyKHRoaXMubWFwU291cmNlKCkpLEkuZm4ub3B0aW9uc0NoYW5nZS5jYWxsKHRoaXMsdCl9LG1hcFBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zcmNFbGVtZW50LnJlY3QoKSxlPXQudG9wTGVmdCgpO3JldHVybltbXCJ4XCIsZS54XSxbXCJ5XCIsZS55XSxbXCJ3aWR0aFwiLHQud2lkdGgoKStcInB4XCJdLFtcImhlaWdodFwiLHQuaGVpZ2h0KCkrXCJweFwiXV19LHJlbmRlclBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHkodGhpcy5tYXBQb3NpdGlvbigpKX0sbWFwU291cmNlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc3JjRWxlbWVudC5zcmMoKTtyZXR1cm4gdCYmKGU9Yy5odG1sRW5jb2RlKGUpKSxbW1wieGxpbms6aHJlZlwiLGVdXX0scmVuZGVyU291cmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHkodGhpcy5tYXBTb3VyY2UoITApKX0sdGVtcGxhdGU6dyhcIjxpbWFnZSBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSdub25lJyAjPSBkLnJlbmRlclN0eWxlKCkgIyAjPSBkLnJlbmRlclRyYW5zZm9ybSgpIyAjPSBkLnJlbmRlck9wYWNpdHkoKSAjICM9IGQucmVuZGVyUG9zaXRpb24oKSAjICM9IGQucmVuZGVyU291cmNlKCkgIyAjPSBkLnJlbmRlckRlZmluaXRpb25zKCkjPjwvaW1hZ2U+XCIpfSksJD16LmV4dGVuZCh7dGVtcGxhdGU6dyhcIjxzdG9wICM9ZC5yZW5kZXJPZmZzZXQoKSMgIz1kLnJlbmRlclN0eWxlKCkjIC8+XCIpLHJlbmRlck9mZnNldDpmdW5jdGlvbigpe3JldHVybiB4KFwib2Zmc2V0XCIsdGhpcy5zcmNFbGVtZW50Lm9mZnNldCgpKX0sbWFwU3R5bGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNyY0VsZW1lbnQ7cmV0dXJuW1tcInN0b3AtY29sb3JcIix0LmNvbG9yKCldLFtcInN0b3Atb3BhY2l0eVwiLHQub3BhY2l0eSgpXV19LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24odCl7XCJvZmZzZXRcIj09dC5maWVsZD90aGlzLmF0dHIodC5maWVsZCx0LnZhbHVlKTpcImNvbG9yXCIhPXQuZmllbGQmJlwib3BhY2l0eVwiIT10LmZpZWxkfHx0aGlzLmNzcyhcInN0b3AtXCIrdC5maWVsZCx0LnZhbHVlKX19KSxYPXouZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3ouZm4uaW5pdC5jYWxsKHRoaXMsdCksdGhpcy5pZD10LmlkLHRoaXMubG9hZFN0b3BzKCl9LGxvYWRTdG9wczpmdW5jdGlvbigpe3ZhciB0LGUsbj10aGlzLnNyY0VsZW1lbnQsaT1uLnN0b3BzLHI9dGhpcy5lbGVtZW50O2ZvcihlPTA7ZTxpLmxlbmd0aDtlKyspdD1uZXcgJChpW2VdKSx0aGlzLmFwcGVuZCh0KSxyJiZ0LmF0dGFjaFRvKHIpfSxvcHRpb25zQ2hhbmdlOmZ1bmN0aW9uKHQpe1wiZ3JhZGllbnQuc3RvcHNcIj09dC5maWVsZD8ocC5mbi5jbGVhci5jYWxsKHRoaXMpLHRoaXMubG9hZFN0b3BzKCkpOnQuZmllbGQ9PVQmJnRoaXMuYWxsQXR0cih0aGlzLm1hcENvb3JkaW5hdGVzKCkpfSxyZW5kZXJDb29yZGluYXRlczpmdW5jdGlvbigpe3JldHVybiB5KHRoaXMubWFwQ29vcmRpbmF0ZXMoKSl9LG1hcFNwYWNlOmZ1bmN0aW9uKCl7cmV0dXJuW1wiZ3JhZGllbnRVbml0c1wiLHRoaXMuc3JjRWxlbWVudC51c2VyU3BhY2UoKT9cInVzZXJTcGFjZU9uVXNlXCI6XCJvYmplY3RCb3VuZGluZ0JveFwiXX19KSxVPVguZXh0ZW5kKHt0ZW1wbGF0ZTp3KFwiPGxpbmVhckdyYWRpZW50IGlkPScjPWQuaWQjJyAjPWQucmVuZGVyQ29vcmRpbmF0ZXMoKSM+Iz0gZC5yZW5kZXJDaGlsZHJlbigpIzwvbGluZWFyR3JhZGllbnQ+XCIpLG1hcENvb3JkaW5hdGVzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zcmNFbGVtZW50LGU9dC5zdGFydCgpLG49dC5lbmQoKSxpPVtbXCJ4MVwiLGUueF0sW1wieTFcIixlLnldLFtcIngyXCIsbi54XSxbXCJ5MlwiLG4ueV0sdGhpcy5tYXBTcGFjZSgpXTtyZXR1cm4gaX19KSxZPVguZXh0ZW5kKHt0ZW1wbGF0ZTp3KFwiPHJhZGlhbEdyYWRpZW50IGlkPScjPWQuaWQjJyAjPWQucmVuZGVyQ29vcmRpbmF0ZXMoKSM+Iz0gZC5yZW5kZXJDaGlsZHJlbigpIzwvcmFkaWFsR3JhZGllbnQ+XCIpLG1hcENvb3JkaW5hdGVzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zcmNFbGVtZW50LGU9dC5jZW50ZXIoKSxuPXQucmFkaXVzKCksaT1bW1wiY3hcIixlLnhdLFtcImN5XCIsZS55XSxbXCJyXCIsbl0sdGhpcy5tYXBTcGFjZSgpXTtyZXR1cm4gaX19KSxWPUkuZXh0ZW5kKHtnZW9tZXRyeUNoYW5nZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuc3JjRWxlbWVudC5nZW9tZXRyeSgpO3RoaXMuYXR0cihcInhcIix0Lm9yaWdpbi54KSx0aGlzLmF0dHIoXCJ5XCIsdC5vcmlnaW4ueSksdGhpcy5hdHRyKFwid2lkdGhcIix0LnNpemUud2lkdGgpLHRoaXMuYXR0cihcImhlaWdodFwiLHQuc2l6ZS5oZWlnaHQpLHRoaXMuaW52YWxpZGF0ZSgpfSxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3JjRWxlbWVudC5nZW9tZXRyeSgpLnNpemV9LG9yaWdpbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNyY0VsZW1lbnQuZ2VvbWV0cnkoKS5vcmlnaW59LHRlbXBsYXRlOncoXCI8cmVjdCAjPSBkLnJlbmRlclN0eWxlKCkgIyAjPSBkLnJlbmRlck9wYWNpdHkoKSAjIHg9JyM9IGQub3JpZ2luKCkueCAjJyB5PScjPSBkLm9yaWdpbigpLnkgIycgd2lkdGg9JyM9IGQuc2l6ZSgpLndpZHRoICMnIGhlaWdodD0nIz0gZC5zaXplKCkuaGVpZ2h0ICMnIz0gZC5yZW5kZXJTdHJva2UoKSAjICM9IGQucmVuZGVyRmlsbCgpICMgIz0gZC5yZW5kZXJEZWZpbml0aW9ucygpICMgIz0gZC5yZW5kZXJUcmFuc2Zvcm0oKSAjIC8+XCIpfSksVz17R3JvdXA6TCxUZXh0OkgsUGF0aDpJLE11bHRpUGF0aDpHLENpcmNsZTpqLEFyYzpGLEltYWdlOnEsUmVjdDpWfSxRPWZ1bmN0aW9uKHQsZSl7dC5pbm5lckhUTUw9ZX07IWZ1bmN0aW9uKCl7dmFyIHQ9XCI8c3ZnIHhtbG5zPSdcIitBK1wiJz48L3N2Zz5cIixlPWwuY3JlYXRlRWxlbWVudChcImRpdlwiKSxuPXR5cGVvZiBET01QYXJzZXIhPU47ZS5pbm5lckhUTUw9dCxuJiZlLmZpcnN0Q2hpbGQubmFtZXNwYWNlVVJJIT1BJiYoUT1mdW5jdGlvbih0LGUpe3ZhciBuPW5ldyBET01QYXJzZXIsaT1uLnBhcnNlRnJvbVN0cmluZyhlLFwidGV4dC94bWxcIikscj1sLmFkb3B0Tm9kZShpLmRvY3VtZW50RWxlbWVudCk7dC5pbm5lckhUTUw9XCJcIix0LmFwcGVuZENoaWxkKHIpfSl9KCksYS5fZWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKSxoPXtjbGlwOlwiY2xpcC1wYXRoXCIsZmlsbDpcImZpbGxcIn0sYy5zdXBwb3J0LnN2Zz1mdW5jdGlvbigpe3JldHVybiBsLmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoXCJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0Jhc2ljU3RydWN0dXJlXCIsXCIxLjFcIil9KCksYy5zdXBwb3J0LnN2ZyYmZC5TdXJmYWNlRmFjdG9yeS5jdXJyZW50LnJlZ2lzdGVyKFwic3ZnXCIsUiwxMCksdShkLHtleHBvcnRTVkc6byxzdmc6e0FyY05vZGU6RixDaXJjbGVOb2RlOmosQ2xpcE5vZGU6RCxEZWZpbml0aW9uTm9kZTpCLEdyYWRpZW50U3RvcE5vZGU6JCxHcm91cE5vZGU6TCxJbWFnZU5vZGU6cSxMaW5lYXJHcmFkaWVudE5vZGU6VSxNdWx0aVBhdGhOb2RlOkcsTm9kZTp6LFBhdGhOb2RlOkksUmFkaWFsR3JhZGllbnROb2RlOlksUmVjdE5vZGU6VixSb290Tm9kZTpNLFN1cmZhY2U6UixUZXh0Tm9kZTpILF9leHBvcnRHcm91cDpyfX0pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsbil7KG58fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwiZHJhd2luZy9jYW52YXMubWluXCIsW1wiZHJhd2luZy9zZWFyY2gubWluXCIsXCJrZW5kby5jb2xvci5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgaSxyLG8scyxhLGgsbD17d2lkdGg6XCI4MDBweFwiLGhlaWdodDpcIjYwMHB4XCIsY29yczpcIkFub255bW91c1wifSxjPWUuY2xpcHBlZEJCb3goKTtyZXR1cm4gYyYmKGk9Yy5nZXRPcmlnaW4oKSxyPW5ldyBiLkdyb3VwLHIudHJhbnNmb3JtKHcudHJhbnNmb3JtKCkudHJhbnNsYXRlKC1pLngsLWkueSkpLHIuY2hpbGRyZW4ucHVzaChlKSxlPXIsbz1jLmdldFNpemUoKSxsLndpZHRoPW8ud2lkdGgrXCJweFwiLGwuaGVpZ2h0PW8uaGVpZ2h0K1wicHhcIiksbj1wKGwsbikscz10KFwiPGRpdiAvPlwiKS5jc3Moe2Rpc3BsYXk6XCJub25lXCIsd2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHR9KS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KSxhPW5ldyBBKHMsbiksYS5zdXNwZW5kVHJhY2tpbmcoKSxhLmRyYXcoZSksaD1hLmltYWdlKCksaC5hbHdheXMoZnVuY3Rpb24oKXthLmRlc3Ryb3koKSxzLnJlbW92ZSgpfSksaH1mdW5jdGlvbiBuKHQsZSl7dmFyIG4saSxyO2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspaT1lW3JdLG49ZC5wYXJzZUNvbG9yKGkuY29sb3IoKSksbi5hKj1pLm9wYWNpdHkoKSx0LmFkZENvbG9yU3RvcChpLm9mZnNldCgpLG4udG9Dc3NSZ2JhKCkpfXZhciBpLHIsbyxzLGEsaCxsLGMsdSxmPWRvY3VtZW50LGQ9d2luZG93LmtlbmRvLHA9ZC5kZWVwRXh0ZW5kLG09ZC51dGlsLGc9bS5kZWZpbmVkLHY9bS5pc1RyYW5zcGFyZW50LHg9bS5yZW5kZXJUZW1wbGF0ZSx5PW0udmFsdWVPckRlZmF1bHQsdz1kLmdlb21ldHJ5LGI9ZC5kcmF3aW5nLF89Yi5CYXNlTm9kZSxDPXQucHJveHksVD1cImJ1dHRcIixrPWIuREFTSF9BUlJBWVMsUz0xZTMvNjAsRT1cInNvbGlkXCIsUD1cIi5rZW5kb1wiLEE9Yi5TdXJmYWNlLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLG4pe2IuU3VyZmFjZS5mbi5pbml0LmNhbGwodGhpcyxlLG4pLHRoaXMuZWxlbWVudFswXS5pbm5lckhUTUw9dGhpcy5fdGVtcGxhdGUodGhpcyk7dmFyIHI9dGhpcy5lbGVtZW50WzBdLmZpcnN0RWxlbWVudENoaWxkO3Iud2lkdGg9dChlKS53aWR0aCgpLHIuaGVpZ2h0PXQoZSkuaGVpZ2h0KCksdGhpcy5fcm9vdEVsZW1lbnQ9cix0aGlzLl9yb290PW5ldyBpKHIpfSxkZXN0cm95OmZ1bmN0aW9uKCl7Yi5TdXJmYWNlLmZuLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9yb290JiYodGhpcy5fcm9vdC5kZXN0cm95KCksdGhpcy5fcm9vdD1udWxsKSx0aGlzLl9zZWFyY2hUcmVlJiYodGhpcy5fc2VhcmNoVHJlZS5jbGVhcigpLGRlbGV0ZSB0aGlzLl9zZWFyY2hUcmVlKSx0aGlzLmVsZW1lbnQub2ZmKFApfSx0eXBlOlwiY2FudmFzXCIsZHJhdzpmdW5jdGlvbih0KXtiLlN1cmZhY2UuZm4uZHJhdy5jYWxsKHRoaXMsdCksdGhpcy5fcm9vdC5sb2FkKFt0XSx2b2lkIDAsdGhpcy5vcHRpb25zLmNvcnMpLHRoaXMuX3NlYXJjaFRyZWUmJnRoaXMuX3NlYXJjaFRyZWUuYWRkKFt0XSl9LGNsZWFyOmZ1bmN0aW9uKCl7Yi5TdXJmYWNlLmZuLmNsZWFyLmNhbGwodGhpcyksdGhpcy5fcm9vdC5jbGVhcigpLHRoaXMuX3NlYXJjaFRyZWUmJnRoaXMuX3NlYXJjaFRyZWUuY2xlYXIoKX0sZXZlbnRUYXJnZXQ6ZnVuY3Rpb24odCl7dmFyIGUsbjtpZih0aGlzLl9zZWFyY2hUcmVlKXJldHVybiBlPXRoaXMuX3N1cmZhY2VQb2ludCh0KSxuPXRoaXMuX3NlYXJjaFRyZWUucG9pbnRTaGFwZShlKX0saW1hZ2U6ZnVuY3Rpb24oKXt2YXIgZSxuPXRoaXMuX3Jvb3QsaT10aGlzLl9yb290RWxlbWVudCxyPVtdO3JldHVybiBuLnRyYXZlcnNlKGZ1bmN0aW9uKHQpe3QubG9hZGluZyYmci5wdXNoKHQubG9hZGluZyl9KSxlPXQuRGVmZXJyZWQoKSx0LndoZW4uYXBwbHkodCxyKS5kb25lKGZ1bmN0aW9uKCl7bi5faW52YWxpZGF0ZSgpO3RyeXt2YXIgdD1pLnRvRGF0YVVSTCgpO2UucmVzb2x2ZSh0KX1jYXRjaChyKXtlLnJlamVjdChyKX19KS5mYWlsKGZ1bmN0aW9uKHQpe2UucmVqZWN0KHQpfSksZS5wcm9taXNlKCl9LHN1c3BlbmRUcmFja2luZzpmdW5jdGlvbigpe2IuU3VyZmFjZS5mbi5zdXNwZW5kVHJhY2tpbmcuY2FsbCh0aGlzKSx0aGlzLl9zZWFyY2hUcmVlJiYodGhpcy5fc2VhcmNoVHJlZS5jbGVhcigpLGRlbGV0ZSB0aGlzLl9zZWFyY2hUcmVlKX0scmVzdW1lVHJhY2tpbmc6ZnVuY3Rpb24oKXt2YXIgdCxlLG47aWYoYi5TdXJmYWNlLmZuLnJlc3VtZVRyYWNraW5nLmNhbGwodGhpcyksIXRoaXMuX3NlYXJjaFRyZWUpe2Zvcih0aGlzLl9zZWFyY2hUcmVlPW5ldyBiLlNoYXBlc1F1YWRUcmVlLHQ9dGhpcy5fcm9vdC5jaGlsZE5vZGVzLGU9W10sbj0wO248dC5sZW5ndGg7bisrKWUucHVzaCh0W25dLnNyY0VsZW1lbnQpO3RoaXMuX3NlYXJjaFRyZWUuYWRkKGUpfX0sX3Jlc2l6ZTpmdW5jdGlvbigpe3RoaXMuX3Jvb3RFbGVtZW50LndpZHRoPXRoaXMuX3NpemUud2lkdGgsdGhpcy5fcm9vdEVsZW1lbnQuaGVpZ2h0PXRoaXMuX3NpemUuaGVpZ2h0LHRoaXMuX3Jvb3QuaW52YWxpZGF0ZSgpfSxfdGVtcGxhdGU6eChcIjxjYW52YXMgc3R5bGU9J3dpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7Jz48L2NhbnZhcz5cIiksX2VuYWJsZVRyYWNraW5nOmZ1bmN0aW9uKCl7dGhpcy5fc2VhcmNoVHJlZT1uZXcgYi5TaGFwZXNRdWFkVHJlZSx0aGlzLl9tb3VzZVRyYWNrSGFuZGxlcj1DKHRoaXMuX3RyYWNrTW91c2UsdGhpcyksdGhpcy5lbGVtZW50Lm9uKFwiY2xpY2tcIitQLHRoaXMuX21vdXNlVHJhY2tIYW5kbGVyKSx0aGlzLmVsZW1lbnQub24oXCJtb3VzZW1vdmVcIitQLHRoaXMuX21vdXNlVHJhY2tIYW5kbGVyKSxiLlN1cmZhY2UuZm4uX2VuYWJsZVRyYWNraW5nLmNhbGwodGhpcyl9LF90cmFja01vdXNlOmZ1bmN0aW9uKHQpe3ZhciBlLG47dGhpcy5fc3VzcGVuZGVkVHJhY2tpbmd8fChlPXRoaXMuZXZlbnRUYXJnZXQodCksXCJjbGlja1wiIT10LnR5cGU/KG49dGhpcy5fY3VycmVudFNoYXBlLG4mJm4hPT1lJiZ0aGlzLnRyaWdnZXIoXCJtb3VzZWxlYXZlXCIse2VsZW1lbnQ6bixvcmlnaW5hbEV2ZW50OnQsdHlwZTpcIm1vdXNlbGVhdmVcIn0pLGUmJm4hPT1lJiZ0aGlzLnRyaWdnZXIoXCJtb3VzZWVudGVyXCIse2VsZW1lbnQ6ZSxvcmlnaW5hbEV2ZW50OnQsdHlwZTpcIm1vdXNlZW50ZXJcIn0pLHRoaXMudHJpZ2dlcihcIm1vdXNlbW92ZVwiLHtlbGVtZW50OmUsb3JpZ2luYWxFdmVudDp0LHR5cGU6XCJtb3VzZW1vdmVcIn0pLHRoaXMuX2N1cnJlbnRTaGFwZT1lKTplJiZ0aGlzLnRyaWdnZXIoXCJjbGlja1wiLHtlbGVtZW50OmUsb3JpZ2luYWxFdmVudDp0LHR5cGU6XCJjbGlja1wifSkpfX0pLE89Xy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7Xy5mbi5pbml0LmNhbGwodGhpcyx0KSx0JiZ0aGlzLmluaXRDbGlwKCl9LGluaXRDbGlwOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zcmNFbGVtZW50LmNsaXAoKTt0JiYodGhpcy5jbGlwPXQsdC5hZGRPYnNlcnZlcih0aGlzKSl9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5zcmNFbGVtZW50JiZ0aGlzLnNyY0VsZW1lbnQucmVtb3ZlT2JzZXJ2ZXIodGhpcyksdGhpcy5jbGVhckNsaXAoKSxfLmZuLmNsZWFyLmNhbGwodGhpcyl9LGNsZWFyQ2xpcDpmdW5jdGlvbigpe3RoaXMuY2xpcCYmKHRoaXMuY2xpcC5yZW1vdmVPYnNlcnZlcih0aGlzKSxkZWxldGUgdGhpcy5jbGlwKX0sc2V0Q2xpcDpmdW5jdGlvbih0KXt0aGlzLmNsaXAmJih0LmJlZ2luUGF0aCgpLHIuZm4ucmVuZGVyUG9pbnRzKHQsdGhpcy5jbGlwKSx0LmNsaXAoKSl9LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24odCl7XCJjbGlwXCI9PXQuZmllbGQmJih0aGlzLmNsZWFyQ2xpcCgpLHRoaXMuaW5pdENsaXAoKSksXy5mbi5vcHRpb25zQ2hhbmdlLmNhbGwodGhpcyx0KX0sc2V0VHJhbnNmb3JtOmZ1bmN0aW9uKHQpe2lmKHRoaXMuc3JjRWxlbWVudCl7dmFyIGU9dGhpcy5zcmNFbGVtZW50LnRyYW5zZm9ybSgpO2UmJnQudHJhbnNmb3JtLmFwcGx5KHQsZS5tYXRyaXgoKS50b0FycmF5KDYpKX19LGxvYWRFbGVtZW50czpmdW5jdGlvbih0LGUsbil7dmFyIGkscixvLHMsYT10aGlzO2ZvcihzPTA7czx0Lmxlbmd0aDtzKyspcj10W3NdLG89ci5jaGlsZHJlbixpPW5ldyB1W3Iubm9kZVR5cGVdKHIsbiksbyYmby5sZW5ndGg+MCYmaS5sb2FkKG8sZSxuKSxnKGUpP2EuaW5zZXJ0QXQoaSxlKTphLmFwcGVuZChpKX0sbG9hZDpmdW5jdGlvbih0LGUsbil7dGhpcy5sb2FkRWxlbWVudHModCxlLG4pLHRoaXMuaW52YWxpZGF0ZSgpfSxzZXRPcGFjaXR5OmZ1bmN0aW9uKHQpe2lmKHRoaXMuc3JjRWxlbWVudCl7dmFyIGU9dGhpcy5zcmNFbGVtZW50Lm9wYWNpdHkoKTtnKGUpJiZ0aGlzLmdsb2JhbEFscGhhKHQsZSl9fSxnbG9iYWxBbHBoYTpmdW5jdGlvbih0LGUpe2UmJnQuZ2xvYmFsQWxwaGEmJihlKj10Lmdsb2JhbEFscGhhKSx0Lmdsb2JhbEFscGhhPWV9LHZpc2libGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNyY0VsZW1lbnQ7cmV0dXJuIXR8fHQmJnQub3B0aW9ucy52aXNpYmxlIT09ITF9fSksTj1PLmV4dGVuZCh7cmVuZGVyVG86ZnVuY3Rpb24odCl7dmFyIGUsbixpO2lmKHRoaXMudmlzaWJsZSgpKXtmb3IodC5zYXZlKCksdGhpcy5zZXRUcmFuc2Zvcm0odCksdGhpcy5zZXRDbGlwKHQpLHRoaXMuc2V0T3BhY2l0eSh0KSxlPXRoaXMuY2hpbGROb2RlcyxuPTA7bjxlLmxlbmd0aDtuKyspaT1lW25dLGkudmlzaWJsZSgpJiZpLnJlbmRlclRvKHQpO3QucmVzdG9yZSgpfX19KTtiLm1peGlucy5UcmF2ZXJzYWJsZS5leHRlbmQoTi5mbixcImNoaWxkTm9kZXNcIiksaT1OLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXtOLmZuLmluaXQuY2FsbCh0aGlzKSx0aGlzLmNhbnZhcz10LHRoaXMuY3R4PXQuZ2V0Q29udGV4dChcIjJkXCIpO3ZhciBlPUModGhpcy5faW52YWxpZGF0ZSx0aGlzKTt0aGlzLmludmFsaWRhdGU9ZC50aHJvdHRsZShmdW5jdGlvbigpe2QuYW5pbWF0aW9uRnJhbWUoZSl9LFMpfSxkZXN0cm95OmZ1bmN0aW9uKCl7Ti5mbi5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5jYW52YXM9bnVsbCx0aGlzLmN0eD1udWxsfSxsb2FkOmZ1bmN0aW9uKHQsZSxuKXt0aGlzLmxvYWRFbGVtZW50cyh0LGUsbiksdGhpcy5faW52YWxpZGF0ZSgpfSxfaW52YWxpZGF0ZTpmdW5jdGlvbigpe3RoaXMuY3R4JiYodGhpcy5jdHguY2xlYXJSZWN0KDAsMCx0aGlzLmNhbnZhcy53aWR0aCx0aGlzLmNhbnZhcy5oZWlnaHQpLHRoaXMucmVuZGVyVG8odGhpcy5jdHgpKX19KSxiLm1peGlucy5UcmF2ZXJzYWJsZS5leHRlbmQoaS5mbixcImNoaWxkTm9kZXNcIikscj1PLmV4dGVuZCh7cmVuZGVyVG86ZnVuY3Rpb24odCl7dC5zYXZlKCksdGhpcy5zZXRUcmFuc2Zvcm0odCksdGhpcy5zZXRDbGlwKHQpLHRoaXMuc2V0T3BhY2l0eSh0KSx0LmJlZ2luUGF0aCgpLHRoaXMucmVuZGVyUG9pbnRzKHQsdGhpcy5zcmNFbGVtZW50KSx0aGlzLnNldExpbmVEYXNoKHQpLHRoaXMuc2V0TGluZUNhcCh0KSx0aGlzLnNldExpbmVKb2luKHQpLHRoaXMuc2V0RmlsbCh0KSx0aGlzLnNldFN0cm9rZSh0KSx0LnJlc3RvcmUoKX0sc2V0RmlsbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnNyY0VsZW1lbnQub3B0aW9ucy5maWxsLG49ITE7cmV0dXJuIGUmJihcImdyYWRpZW50XCI9PWUubm9kZVR5cGU/KHRoaXMuc2V0R3JhZGllbnRGaWxsKHQsZSksbj0hMCk6dihlLmNvbG9yKXx8KHQuZmlsbFN0eWxlPWUuY29sb3IsdC5zYXZlKCksdGhpcy5nbG9iYWxBbHBoYSh0LGUub3BhY2l0eSksdC5maWxsKCksdC5yZXN0b3JlKCksbj0hMCkpLG59LHNldEdyYWRpZW50RmlsbDpmdW5jdGlvbih0LGUpe3ZhciBpLHIsbyxzLGE9dGhpcy5zcmNFbGVtZW50LnJhd0JCb3goKTtlIGluc3RhbmNlb2YgYi5MaW5lYXJHcmFkaWVudD8ocj1lLnN0YXJ0KCksbz1lLmVuZCgpLGk9dC5jcmVhdGVMaW5lYXJHcmFkaWVudChyLngsci55LG8ueCxvLnkpKTplIGluc3RhbmNlb2YgYi5SYWRpYWxHcmFkaWVudCYmKHM9ZS5jZW50ZXIoKSxpPXQuY3JlYXRlUmFkaWFsR3JhZGllbnQocy54LHMueSwwLHMueCxzLnksZS5yYWRpdXMoKSkpLG4oaSxlLnN0b3BzKSx0LnNhdmUoKSxlLnVzZXJTcGFjZSgpfHx0LnRyYW5zZm9ybShhLndpZHRoKCksMCwwLGEuaGVpZ2h0KCksYS5vcmlnaW4ueCxhLm9yaWdpbi55KSx0LmZpbGxTdHlsZT1pLHQuZmlsbCgpLHQucmVzdG9yZSgpfSxzZXRTdHJva2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zcmNFbGVtZW50Lm9wdGlvbnMuc3Ryb2tlO2lmKGUmJiF2KGUuY29sb3IpJiZlLndpZHRoPjApcmV0dXJuIHQuc3Ryb2tlU3R5bGU9ZS5jb2xvcix0LmxpbmVXaWR0aD15KGUud2lkdGgsMSksdC5zYXZlKCksdGhpcy5nbG9iYWxBbHBoYSh0LGUub3BhY2l0eSksdC5zdHJva2UoKSx0LnJlc3RvcmUoKSwhMH0sZGFzaFR5cGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNyY0VsZW1lbnQub3B0aW9ucy5zdHJva2U7aWYodCYmdC5kYXNoVHlwZSlyZXR1cm4gdC5kYXNoVHlwZS50b0xvd2VyQ2FzZSgpfSxzZXRMaW5lRGFzaDpmdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMuZGFzaFR5cGUoKTtuJiZuIT1FJiYoZT1rW25dLHQuc2V0TGluZURhc2g/dC5zZXRMaW5lRGFzaChlKToodC5tb3pEYXNoPWUsdC53ZWJraXRMaW5lRGFzaD1lKSl9LHNldExpbmVDYXA6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kYXNoVHlwZSgpLG49dGhpcy5zcmNFbGVtZW50Lm9wdGlvbnMuc3Ryb2tlO2UmJmUhPT1FP3QubGluZUNhcD1UOm4mJm4ubGluZUNhcCYmKHQubGluZUNhcD1uLmxpbmVDYXApfSxzZXRMaW5lSm9pbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnNyY0VsZW1lbnQub3B0aW9ucy5zdHJva2U7ZSYmZS5saW5lSm9pbiYmKHQubGluZUpvaW49ZS5saW5lSm9pbil9LHJlbmRlclBvaW50czpmdW5jdGlvbih0LGUpe3ZhciBuLGkscixvLHMsYSxoPWUuc2VnbWVudHM7aWYoMCE9PWgubGVuZ3RoKXtmb3Iobj1oWzBdLGk9bi5hbmNob3IoKSx0Lm1vdmVUbyhpLngsaS55KSxyPTE7cjxoLmxlbmd0aDtyKyspbj1oW3JdLGk9bi5hbmNob3IoKSxvPWhbci0xXSxzPW8uY29udHJvbE91dCgpLGE9bi5jb250cm9sSW4oKSxzJiZhP3QuYmV6aWVyQ3VydmVUbyhzLngscy55LGEueCxhLnksaS54LGkueSk6dC5saW5lVG8oaS54LGkueSk7ZS5vcHRpb25zLmNsb3NlZCYmdC5jbG9zZVBhdGgoKX19fSksbz1yLmV4dGVuZCh7cmVuZGVyUG9pbnRzOmZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5zcmNFbGVtZW50LnBhdGhzO2ZvcihlPTA7ZTxuLmxlbmd0aDtlKyspci5mbi5yZW5kZXJQb2ludHModCxuW2VdKX19KSxzPXIuZXh0ZW5kKHtyZW5kZXJQb2ludHM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zcmNFbGVtZW50Lmdlb21ldHJ5KCksbj1lLmNlbnRlcixpPWUucmFkaXVzO3QuYXJjKG4ueCxuLnksaSwwLDIqTWF0aC5QSSl9fSksYT1yLmV4dGVuZCh7cmVuZGVyUG9pbnRzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc3JjRWxlbWVudC50b1BhdGgoKTtyLmZuLnJlbmRlclBvaW50cy5jYWxsKHRoaXMsdCxlKX19KSxoPXIuZXh0ZW5kKHtyZW5kZXJUbzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnNyY0VsZW1lbnQsbj1lLnBvc2l0aW9uKCksaT1lLm1lYXN1cmUoKTt0LnNhdmUoKSx0aGlzLnNldFRyYW5zZm9ybSh0KSx0aGlzLnNldENsaXAodCksdGhpcy5zZXRPcGFjaXR5KHQpLHQuYmVnaW5QYXRoKCksdC5mb250PWUub3B0aW9ucy5mb250LHRoaXMuc2V0RmlsbCh0KSYmdC5maWxsVGV4dChlLmNvbnRlbnQoKSxuLngsbi55K2kuYmFzZWxpbmUpLHRoaXMuc2V0U3Ryb2tlKHQpJiYodGhpcy5zZXRMaW5lRGFzaCh0KSx0LnN0cm9rZVRleHQoZS5jb250ZW50KCksbi54LG4ueStpLmJhc2VsaW5lKSksdC5yZXN0b3JlKCl9fSksbD1yLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLG4pe3IuZm4uaW5pdC5jYWxsKHRoaXMsZSksdGhpcy5vbkxvYWQ9Qyh0aGlzLm9uTG9hZCx0aGlzKSx0aGlzLm9uRXJyb3I9Qyh0aGlzLm9uRXJyb3IsdGhpcyksdGhpcy5sb2FkaW5nPXQuRGVmZXJyZWQoKTt2YXIgaT10aGlzLmltZz1uZXcgSW1hZ2U7biYmIS9eZGF0YTovaS50ZXN0KGUuc3JjKCkpJiYoaS5jcm9zc09yaWdpbj1uKSxpLnNyYz1lLnNyYygpLGkuY29tcGxldGU/dGhpcy5vbkxvYWQoKTooaS5vbmxvYWQ9dGhpcy5vbkxvYWQsaS5vbmVycm9yPXRoaXMub25FcnJvcil9LHJlbmRlclRvOmZ1bmN0aW9uKHQpe1wicmVzb2x2ZWRcIj09PXRoaXMubG9hZGluZy5zdGF0ZSgpJiYodC5zYXZlKCksdGhpcy5zZXRUcmFuc2Zvcm0odCksdGhpcy5zZXRDbGlwKHQpLHRoaXMuZHJhd0ltYWdlKHQpLHQucmVzdG9yZSgpKX0sb3B0aW9uc0NoYW5nZTpmdW5jdGlvbihlKXtcInNyY1wiPT09ZS5maWVsZD8odGhpcy5sb2FkaW5nPXQuRGVmZXJyZWQoKSx0aGlzLmltZy5zcmM9dGhpcy5zcmNFbGVtZW50LnNyYygpKTpyLmZuLm9wdGlvbnNDaGFuZ2UuY2FsbCh0aGlzLGUpfSxvbkxvYWQ6ZnVuY3Rpb24oKXt0aGlzLmxvYWRpbmcucmVzb2x2ZSgpLHRoaXMuaW52YWxpZGF0ZSgpfSxvbkVycm9yOmZ1bmN0aW9uKCl7dGhpcy5sb2FkaW5nLnJlamVjdChFcnJvcihcIlVuYWJsZSB0byBsb2FkIGltYWdlICdcIit0aGlzLmltZy5zcmMrXCInLiBDaGVjayBmb3IgY29ubmVjdGl2aXR5IGFuZCB2ZXJpZnkgQ09SUyBoZWFkZXJzLlwiKSl9LGRyYXdJbWFnZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnNyY0VsZW1lbnQucmVjdCgpLG49ZS50b3BMZWZ0KCk7dC5kcmF3SW1hZ2UodGhpcy5pbWcsbi54LG4ueSxlLndpZHRoKCksZS5oZWlnaHQoKSl9fSksYz1yLmV4dGVuZCh7cmVuZGVyUG9pbnRzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc3JjRWxlbWVudC5nZW9tZXRyeSgpLG49ZS5vcmlnaW4saT1lLnNpemU7dC5yZWN0KG4ueCxuLnksaS53aWR0aCxpLmhlaWdodCl9fSksdT17R3JvdXA6TixUZXh0OmgsUGF0aDpyLE11bHRpUGF0aDpvLENpcmNsZTpzLEFyYzphLEltYWdlOmwsUmVjdDpjfSxkLnN1cHBvcnQuY2FudmFzPWZ1bmN0aW9uKCl7cmV0dXJuISFmLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIikuZ2V0Q29udGV4dH0oKSxkLnN1cHBvcnQuY2FudmFzJiZiLlN1cmZhY2VGYWN0b3J5LmN1cnJlbnQucmVnaXN0ZXIoXCJjYW52YXNcIixBLDIwKSxwKGQuZHJhd2luZyx7ZXhwb3J0SW1hZ2U6ZSxjYW52YXM6e0FyY05vZGU6YSxDaXJjbGVOb2RlOnMsR3JvdXBOb2RlOk4sSW1hZ2VOb2RlOmwsTXVsdGlQYXRoTm9kZTpvLE5vZGU6TyxQYXRoTm9kZTpyLFJlY3ROb2RlOmMsUm9vdE5vZGU6aSxTdXJmYWNlOkEsVGV4dE5vZGU6aH19KX0od2luZG93LmtlbmRvLmpRdWVyeSl9LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlLG4peyhufHxlKSgpfSksZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcImRyYXdpbmcvdm1sLm1pblwiLFtcImRyYXdpbmcvc2hhcGVzLm1pblwiLFwia2VuZG8uY29sb3IubWluXCJdLHQpfShmdW5jdGlvbigpeyFmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7aWYodS5uYW1lc3BhY2VzJiYhdS5uYW1lc3BhY2VzLmt2bWwpe3UubmFtZXNwYWNlcy5hZGQoXCJrdm1sXCIsXCJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbFwiKTt2YXIgdD11LnN0eWxlU2hlZXRzLmxlbmd0aD4zMD91LnN0eWxlU2hlZXRzWzBdOnUuY3JlYXRlU3R5bGVTaGVldCgpO3QuYWRkUnVsZShcIi5rdm1sXCIsXCJiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKVwiKX19ZnVuY3Rpb24gbih0KXt2YXIgZT11LmNyZWF0ZUVsZW1lbnQoXCJrdm1sOlwiK3QpO3JldHVybiBlLmNsYXNzTmFtZT1cImt2bWxcIixlfWZ1bmN0aW9uIGkodCl7dmFyIGUsbj10Lmxlbmd0aCxpPVtdO2ZvcihlPTA7ZTxuO2UrKylpLnB1c2godFtlXS5zY2FsZUNvcHkoUikudG9TdHJpbmcoMCxcIixcIikpO3JldHVybiBpLmpvaW4oXCIgXCIpfWZ1bmN0aW9uIHIodCxlKXt2YXIgbixyLHMsYSxoLGw9dC5zZWdtZW50cyxjPWwubGVuZ3RoO2lmKGM+MCl7Zm9yKG49W10saD0xO2g8YztoKyspcz1vKGxbaC0xXSxsW2hdKSxzIT09YSYmKGE9cyxuLnB1c2gocykpLG4ucHVzaChcImxcIj09PXM/aShbbFtoXS5hbmNob3IoKV0pOmkoW2xbaC0xXS5jb250cm9sT3V0KCksbFtoXS5jb250cm9sSW4oKSxsW2hdLmFuY2hvcigpXSkpO3JldHVybiByPVwibSBcIitpKFtsWzBdLmFuY2hvcigpXSkrXCIgXCIrbi5qb2luKFwiIFwiKSx0Lm9wdGlvbnMuY2xvc2VkJiYocis9XCIgeFwiKSxlIT09ITAmJihyKz1cIiBlXCIpLHJ9fWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gdC5jb250cm9sT3V0KCkmJmUuY29udHJvbEluKCk/XCJjXCI6XCJsXCJ9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gMD09PXQuaW5kZXhPZihcImZpbGxcIil8fDA9PT10LmluZGV4T2YoTSl9ZnVuY3Rpb24gYSh0LGUsbil7dmFyIGkscj1uKkEoZS5vcGFjaXR5KCksMSk7cmV0dXJuIGk9dD9oKHQsZS5jb2xvcigpLHIpOmgoZS5jb2xvcigpLFwiI2ZmZlwiLDEtcil9ZnVuY3Rpb24gaCh0LGUsbil7dmFyIGk9bmV3IEModCkscj1uZXcgQyhlKSxvPWwoaS5yLHIucixuKSxzPWwoaS5nLHIuZyxuKSxhPWwoaS5iLHIuYixuKTtyZXR1cm4gbmV3IEMobyxzLGEpLnRvSGV4KCl9ZnVuY3Rpb24gbCh0LGUsbil7cmV0dXJuIGYucm91bmQobiplKygxLW4pKnQpfXZhciBjLHU9ZG9jdW1lbnQsZj1NYXRoLGQ9Zi5hdGFuMixwPWYuY2VpbCxtPWYuc3FydCxnPXdpbmRvdy5rZW5kbyx2PWcuZGVlcEV4dGVuZCx4PXQubm9vcCx5PWcuZHJhd2luZyx3PXkuQmFzZU5vZGUsYj1nLmdlb21ldHJ5LF89Yi50b01hdHJpeCxDPWcuQ29sb3IsVD1nLnV0aWwsaz1ULmlzVHJhbnNwYXJlbnQsUz1ULmRlZmluZWQsRT1ULmRlZyxQPVQucm91bmQsQT1ULnZhbHVlT3JEZWZhdWx0LE89XCJub25lXCIsTj1cIi5rZW5kb1wiLFI9MTAwLHo9UipSLE09XCJncmFkaWVudFwiLEI9NCxEPXkuU3VyZmFjZS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxuKXt5LlN1cmZhY2UuZm4uaW5pdC5jYWxsKHRoaXMsdCxuKSxlKCksdGhpcy5lbGVtZW50LmVtcHR5KCksdGhpcy5fcm9vdD1uZXcgSSx0aGlzLl9yb290LmF0dGFjaFRvKHRoaXMuZWxlbWVudFswXSksdGhpcy5lbGVtZW50Lm9uKFwiY2xpY2tcIitOLHRoaXMuX2NsaWNrKSx0aGlzLmVsZW1lbnQub24oXCJtb3VzZW92ZXJcIitOLHRoaXMuX21vdXNlZW50ZXIpLHRoaXMuZWxlbWVudC5vbihcIm1vdXNlb3V0XCIrTix0aGlzLl9tb3VzZWxlYXZlKSx0aGlzLmVsZW1lbnQub24oXCJtb3VzZW1vdmVcIitOLHRoaXMuX21vdXNlbW92ZSl9LHR5cGU6XCJ2bWxcIixkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fcm9vdCYmKHRoaXMuX3Jvb3QuZGVzdHJveSgpLHRoaXMuX3Jvb3Q9bnVsbCx0aGlzLmVsZW1lbnQub2ZmKE4pKSx5LlN1cmZhY2UuZm4uZGVzdHJveS5jYWxsKHRoaXMpfSxkcmF3OmZ1bmN0aW9uKHQpe3kuU3VyZmFjZS5mbi5kcmF3LmNhbGwodGhpcyx0KSx0aGlzLl9yb290LmxvYWQoW3RdLHZvaWQgMCxudWxsKX0sY2xlYXI6ZnVuY3Rpb24oKXt5LlN1cmZhY2UuZm4uY2xlYXIuY2FsbCh0aGlzKSx0aGlzLl9yb290LmNsZWFyKCl9fSksTD13LmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt3LmZuLmluaXQuY2FsbCh0aGlzLHQpLHRoaXMuY3JlYXRlRWxlbWVudCgpLHRoaXMuYXR0YWNoUmVmZXJlbmNlKCl9LG9ic2VydmU6eCxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50JiYodGhpcy5lbGVtZW50Ll9rZW5kb05vZGU9bnVsbCx0aGlzLmVsZW1lbnQ9bnVsbCksdy5mbi5kZXN0cm95LmNhbGwodGhpcyl9LGNsZWFyOmZ1bmN0aW9uKCl7dmFyIHQsZTtmb3IodGhpcy5lbGVtZW50JiYodGhpcy5lbGVtZW50LmlubmVySFRNTD1cIlwiKSx0PXRoaXMuY2hpbGROb2RlcyxlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXS5kZXN0cm95KCk7dGhpcy5jaGlsZE5vZGVzPVtdfSxyZW1vdmVTZWxmOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50JiYodGhpcy5lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KSx0aGlzLmVsZW1lbnQ9bnVsbCksdy5mbi5yZW1vdmVTZWxmLmNhbGwodGhpcyl9LGNyZWF0ZUVsZW1lbnQ6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQ9dS5jcmVhdGVFbGVtZW50KFwiZGl2XCIpfSxhdHRhY2hSZWZlcmVuY2U6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuX2tlbmRvTm9kZT10aGlzfSxsb2FkOmZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByLG8scyxhLGgsbDtmb3IoaT1BKGksMSksdGhpcy5zcmNFbGVtZW50JiYoaSo9QSh0aGlzLnNyY0VsZW1lbnQub3B0aW9ucy5vcGFjaXR5LDEpKSxyPTA7cjx0Lmxlbmd0aDtyKyspbz10W3JdLHM9by5jaGlsZHJlbixhPW8uY3VycmVudFRyYW5zZm9ybShuKSxoPWkqQShvLm9wdGlvbnMub3BhY2l0eSwxKSxsPW5ldyBodFtvLm5vZGVUeXBlXShvLGEsaCkscyYmcy5sZW5ndGg+MCYmbC5sb2FkKHMsZSxhLGkpLFMoZSk/dGhpcy5pbnNlcnRBdChsLGUpOnRoaXMuYXBwZW5kKGwpLGwuYXR0YWNoVG8odGhpcy5lbGVtZW50LGUpfSxhdHRhY2hUbzpmdW5jdGlvbih0LGUpe1MoZSk/dC5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LHQuY2hpbGRyZW5bZV18fG51bGwpOnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KX0sb3B0aW9uc0NoYW5nZTpmdW5jdGlvbih0KXtcInZpc2libGVcIj09dC5maWVsZCYmdGhpcy5jc3MoXCJkaXNwbGF5XCIsdC52YWx1ZSE9PSExP1wiXCI6Tyl9LHNldFN0eWxlOmZ1bmN0aW9uKCl7dGhpcy5hbGxDc3ModGhpcy5tYXBTdHlsZSgpKX0sbWFwU3R5bGU6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5zcmNFbGVtZW50JiZ0aGlzLnNyY0VsZW1lbnQub3B0aW9ucy52aXNpYmxlPT09ITEmJnQucHVzaChbXCJkaXNwbGF5XCIsT10pLHR9LG1hcE9wYWNpdHlUbzpmdW5jdGlvbih0LGUpe3ZhciBuPUEodGhpcy5vcGFjaXR5LDEpO24qPUEoZSwxKSx0LnB1c2goW1wib3BhY2l0eVwiLG5dKX0sYXR0cjpmdW5jdGlvbih0LGUpe3RoaXMuZWxlbWVudCYmKHRoaXMuZWxlbWVudFt0XT1lKX0sYWxsQXR0cjpmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLmF0dHIodFtlXVswXSx0W2VdWzFdKX0sY3NzOmZ1bmN0aW9uKHQsZSl7dGhpcy5lbGVtZW50JiYodGhpcy5lbGVtZW50LnN0eWxlW3RdPWUpfSxhbGxDc3M6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5jc3ModFtlXVswXSx0W2VdWzFdKX19KSxJPUwuZXh0ZW5kKHtjcmVhdGVFbGVtZW50OmZ1bmN0aW9uKCl7TC5mbi5jcmVhdGVFbGVtZW50LmNhbGwodGhpcyksdGhpcy5hbGxDc3MoW1tcIndpZHRoXCIsXCIxMDAlXCJdLFtcImhlaWdodFwiLFwiMTAwJVwiXSxbXCJwb3NpdGlvblwiLFwicmVsYXRpdmVcIl0sW1widmlzaWJpbGl0eVwiLFwidmlzaWJsZVwiXV0pfSxhdHRhY2hSZWZlcmVuY2U6eH0pLEY9Zy5DbGFzcy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0aGlzLnNyY0VsZW1lbnQ9dCx0aGlzLm9ic2VydmVyPWUsdC5hZGRPYnNlcnZlcih0aGlzKX0sZ2VvbWV0cnlDaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLm9ic2VydmVyLm9wdGlvbnNDaGFuZ2Uoe2ZpZWxkOlwiY2xpcFwiLHZhbHVlOnRoaXMuc3JjRWxlbWVudH0pfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuc3JjRWxlbWVudC5yZW1vdmVPYnNlcnZlcih0aGlzKX19KSxHPUwuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe0wuZm4uaW5pdC5jYWxsKHRoaXMsdCksdCYmdGhpcy5pbml0Q2xpcCgpfSxvYnNlcnZlOmZ1bmN0aW9uKCl7dy5mbi5vYnNlcnZlLmNhbGwodGhpcyl9LG1hcFN0eWxlOmZ1bmN0aW9uKCl7dmFyIHQ9TC5mbi5tYXBTdHlsZS5jYWxsKHRoaXMpO3JldHVybiB0aGlzLnNyY0VsZW1lbnQmJnRoaXMuc3JjRWxlbWVudC5jbGlwKCkmJnQucHVzaChbXCJjbGlwXCIsdGhpcy5jbGlwUmVjdCgpXSksdH0sb3B0aW9uc0NoYW5nZTpmdW5jdGlvbih0KXtcImNsaXBcIj09dC5maWVsZCYmKHRoaXMuY2xlYXJDbGlwKCksdGhpcy5pbml0Q2xpcCgpLHRoaXMuc2V0Q2xpcCgpKSxMLmZuLm9wdGlvbnNDaGFuZ2UuY2FsbCh0aGlzLHQpfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuY2xlYXJDbGlwKCksTC5mbi5jbGVhci5jYWxsKHRoaXMpfSxpbml0Q2xpcDpmdW5jdGlvbigpe3RoaXMuc3JjRWxlbWVudC5jbGlwKCkmJih0aGlzLmNsaXA9bmV3IEYodGhpcy5zcmNFbGVtZW50LmNsaXAoKSx0aGlzKSx0aGlzLmNsaXAub2JzZXJ2ZXI9dGhpcyl9LGNsZWFyQ2xpcDpmdW5jdGlvbigpe3RoaXMuY2xpcCYmKHRoaXMuY2xpcC5jbGVhcigpLHRoaXMuY2xpcD1udWxsLHRoaXMuY3NzKFwiY2xpcFwiLHRoaXMuY2xpcFJlY3QoKSkpfSxzZXRDbGlwOmZ1bmN0aW9uKCl7dGhpcy5jbGlwJiZ0aGlzLmNzcyhcImNsaXBcIix0aGlzLmNsaXBSZWN0KCkpfSxjbGlwUmVjdDpmdW5jdGlvbigpe3ZhciB0LGUsbixpPWMscj10aGlzLnNyY0VsZW1lbnQuY2xpcCgpO3JldHVybiByJiYodD10aGlzLmNsaXBCQm94KHIpLGU9dC50b3BMZWZ0KCksbj10LmJvdHRvbVJpZ2h0KCksaT1nLmZvcm1hdChcInJlY3QoezB9cHggezF9cHggezJ9cHggezN9cHgpXCIsZS55LG4ueCxuLnksZS54KSksaX0sY2xpcEJCb3g6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zcmNFbGVtZW50LnJhd0JCb3goKS50b3BMZWZ0KCksbj10LnJhd0JCb3goKTtyZXR1cm4gbi5vcmlnaW4udHJhbnNsYXRlKC1lLngsLWUueSksbn19KSxqPUcuZXh0ZW5kKHtjcmVhdGVFbGVtZW50OmZ1bmN0aW9uKCl7TC5mbi5jcmVhdGVFbGVtZW50LmNhbGwodGhpcyksdGhpcy5zZXRTdHlsZSgpfSxhdHRhY2hUbzpmdW5jdGlvbih0LGUpe3RoaXMuY3NzKFwiZGlzcGxheVwiLE8pLEwuZm4uYXR0YWNoVG8uY2FsbCh0aGlzLHQsZSksdGhpcy5zcmNFbGVtZW50Lm9wdGlvbnMudmlzaWJsZSE9PSExJiZ0aGlzLmNzcyhcImRpc3BsYXlcIixcIlwiKX0sX2F0dGFjaFRvOmZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtlLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCksdC5hcHBlbmRDaGlsZChlKX0sbWFwU3R5bGU6ZnVuY3Rpb24oKXt2YXIgdD1HLmZuLm1hcFN0eWxlLmNhbGwodGhpcyk7cmV0dXJuIHQucHVzaChbXCJwb3NpdGlvblwiLFwiYWJzb2x1dGVcIl0pLHQucHVzaChbXCJ3aGl0ZS1zcGFjZVwiLFwibm93cmFwXCJdKSx0fSxvcHRpb25zQ2hhbmdlOmZ1bmN0aW9uKHQpe1widHJhbnNmb3JtXCI9PT10LmZpZWxkJiZ0aGlzLnJlZnJlc2hUcmFuc2Zvcm0oKSxcIm9wYWNpdHlcIj09PXQuZmllbGQmJnRoaXMucmVmcmVzaE9wYWNpdHkoKSxHLmZuLm9wdGlvbnNDaGFuZ2UuY2FsbCh0aGlzLHQpfSxyZWZyZXNoVHJhbnNmb3JtOmZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5zcmNFbGVtZW50LmN1cnJlbnRUcmFuc2Zvcm0odCksaT10aGlzLmNoaWxkTm9kZXMscj1pLmxlbmd0aDtmb3IodGhpcy5zZXRDbGlwKCksZT0wO2U8cjtlKyspaVtlXS5yZWZyZXNoVHJhbnNmb3JtKG4pfSxjdXJyZW50T3BhY2l0eTpmdW5jdGlvbigpe3ZhciB0PUEodGhpcy5zcmNFbGVtZW50Lm9wdGlvbnMub3BhY2l0eSwxKTtyZXR1cm4gdGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LmN1cnJlbnRPcGFjaXR5JiYodCo9dGhpcy5wYXJlbnQuY3VycmVudE9wYWNpdHkoKSksdH0scmVmcmVzaE9wYWNpdHk6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuY2hpbGROb2RlcyxuPWUubGVuZ3RoLGk9dGhpcy5jdXJyZW50T3BhY2l0eSgpO2Zvcih0PTA7dDxuO3QrKyllW3RdLnJlZnJlc2hPcGFjaXR5KGkpfSxpbml0Q2xpcDpmdW5jdGlvbigpe2lmKEcuZm4uaW5pdENsaXAuY2FsbCh0aGlzKSx0aGlzLmNsaXApe3ZhciB0PXRoaXMuY2xpcC5zcmNFbGVtZW50LmJib3godGhpcy5zcmNFbGVtZW50LmN1cnJlbnRUcmFuc2Zvcm0oKSk7dCYmKHRoaXMuY3NzKFwid2lkdGhcIix0LndpZHRoKCkrdC5vcmlnaW4ueCksdGhpcy5jc3MoXCJoZWlnaHRcIix0LmhlaWdodCgpK3Qub3JpZ2luLnkpKX19LGNsaXBCQm94OmZ1bmN0aW9uKHQpe3JldHVybiB0LmJib3godGhpcy5zcmNFbGVtZW50LmN1cnJlbnRUcmFuc2Zvcm0oKSl9LGNsZWFyQ2xpcDpmdW5jdGlvbigpe0cuZm4uY2xlYXJDbGlwLmNhbGwodGhpcyl9fSksSD1MLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3RoaXMub3BhY2l0eT1lLEwuZm4uaW5pdC5jYWxsKHRoaXMsdCl9LGNyZWF0ZUVsZW1lbnQ6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQ9bihcInN0cm9rZVwiKSx0aGlzLnNldE9wYWNpdHkoKX0sb3B0aW9uc0NoYW5nZTpmdW5jdGlvbih0KXswPT09dC5maWVsZC5pbmRleE9mKFwic3Ryb2tlXCIpJiZ0aGlzLnNldFN0cm9rZSgpfSxyZWZyZXNoT3BhY2l0eTpmdW5jdGlvbih0KXt0aGlzLm9wYWNpdHk9dCx0aGlzLnNldFN0cm9rZSgpfSxzZXRTdHJva2U6ZnVuY3Rpb24oKXt0aGlzLmFsbEF0dHIodGhpcy5tYXBTdHJva2UoKSl9LHNldE9wYWNpdHk6ZnVuY3Rpb24oKXt0aGlzLnNldFN0cm9rZSgpfSxtYXBTdHJva2U6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuc3JjRWxlbWVudC5vcHRpb25zLnN0cm9rZSxuPVtdO3JldHVybiBlJiYhayhlLmNvbG9yKSYmMCE9PWUud2lkdGg/KG4ucHVzaChbXCJvblwiLFwidHJ1ZVwiXSksbi5wdXNoKFtcImNvbG9yXCIsZS5jb2xvcl0pLG4ucHVzaChbXCJ3ZWlnaHRcIiwoZS53aWR0aHx8MSkrXCJweFwiXSksdGhpcy5tYXBPcGFjaXR5VG8obixlLm9wYWNpdHkpLFMoZS5kYXNoVHlwZSkmJm4ucHVzaChbXCJkYXNoc3R5bGVcIixlLmRhc2hUeXBlXSksUyhlLmxpbmVKb2luKSYmbi5wdXNoKFtcImpvaW5zdHlsZVwiLGUubGluZUpvaW5dKSxTKGUubGluZUNhcCkmJih0PWUubGluZUNhcC50b0xvd2VyQ2FzZSgpLFwiYnV0dFwiPT09dCYmKHQ9XCJidXR0XCI9PT10P1wiZmxhdFwiOnQpLG4ucHVzaChbXCJlbmRjYXBcIix0XSkpKTpuLnB1c2goW1wib25cIixcImZhbHNlXCJdKSxufX0pLHE9TC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlLG4pe3RoaXMub3BhY2l0eT1uLEwuZm4uaW5pdC5jYWxsKHRoaXMsdCl9LGNyZWF0ZUVsZW1lbnQ6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQ9bihcImZpbGxcIiksdGhpcy5zZXRGaWxsKCl9LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24odCl7cyh0LmZpZWxkKSYmdGhpcy5zZXRGaWxsKCl9LHJlZnJlc2hPcGFjaXR5OmZ1bmN0aW9uKHQpe3RoaXMub3BhY2l0eT10LHRoaXMuc2V0T3BhY2l0eSgpfSxzZXRGaWxsOmZ1bmN0aW9uKCl7dGhpcy5hbGxBdHRyKHRoaXMubWFwRmlsbCgpKX0sc2V0T3BhY2l0eTpmdW5jdGlvbigpe3RoaXMuc2V0RmlsbCgpfSxhdHRyOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLmVsZW1lbnQ7aWYoaSl7Zm9yKG49dC5zcGxpdChcIi5cIik7bi5sZW5ndGg+MTspaT1pW24uc2hpZnQoKV07aVtuWzBdXT1lfX0sbWFwRmlsbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuc3JjRWxlbWVudC5maWxsKCksZT1bW1wib25cIixcImZhbHNlXCJdXTtyZXR1cm4gdCYmKHQubm9kZVR5cGU9PU0/ZT10aGlzLm1hcEdyYWRpZW50KHQpOmsodC5jb2xvcil8fChlPXRoaXMubWFwRmlsbENvbG9yKHQpKSksZX0sbWFwRmlsbENvbG9yOmZ1bmN0aW9uKHQpe3ZhciBlPVtbXCJvblwiLFwidHJ1ZVwiXSxbXCJjb2xvclwiLHQuY29sb3JdXTtyZXR1cm4gdGhpcy5tYXBPcGFjaXR5VG8oZSx0Lm9wYWNpdHkpLGV9LG1hcEdyYWRpZW50OmZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5zcmNFbGVtZW50Lm9wdGlvbnMsaT1uLmZhbGxiYWNrRmlsbHx8dC5mYWxsYmFja0ZpbGwmJnQuZmFsbGJhY2tGaWxsKCk7cmV0dXJuIGU9dCBpbnN0YW5jZW9mIHkuTGluZWFyR3JhZGllbnQ/dGhpcy5tYXBMaW5lYXJHcmFkaWVudCh0KTp0IGluc3RhbmNlb2YgeS5SYWRpYWxHcmFkaWVudCYmdC5zdXBwb3J0Vk1MP3RoaXMubWFwUmFkaWFsR3JhZGllbnQodCk6aT90aGlzLm1hcEZpbGxDb2xvcihpKTpbW1wib25cIixcImZhbHNlXCJdXX0sbWFwTGluZWFyR3JhZGllbnQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5zdGFydCgpLG49dC5lbmQoKSxpPVQuZGVnKGQobi55LWUueSxuLngtZS54KSkscj1bW1wib25cIixcInRydWVcIl0sW1widHlwZVwiLE1dLFtcImZvY3VzXCIsMF0sW1wibWV0aG9kXCIsXCJub25lXCJdLFtcImFuZ2xlXCIsMjcwLWldXTtyZXR1cm4gdGhpcy5hZGRDb2xvcnMocikscn0sbWFwUmFkaWFsR3JhZGllbnQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zcmNFbGVtZW50LnJhd0JCb3goKSxuPXQuY2VudGVyKCksaT0obi54LWUub3JpZ2luLngpL2Uud2lkdGgoKSxyPShuLnktZS5vcmlnaW4ueSkvZS5oZWlnaHQoKSxvPVtbXCJvblwiLFwidHJ1ZVwiXSxbXCJ0eXBlXCIsXCJncmFkaWVudHRpdGxlXCJdLFtcImZvY3VzXCIsXCIxMDAlXCJdLFtcImZvY3VzcG9zaXRpb25cIixpK1wiIFwiK3JdLFtcIm1ldGhvZFwiLFwibm9uZVwiXV07XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29sb3JzKG8pLG99LGFkZENvbG9yczpmdW5jdGlvbih0KXt2YXIgZSxuLGk9dGhpcy5zcmNFbGVtZW50Lm9wdGlvbnMscj1BKHRoaXMub3BhY2l0eSwxKSxvPVtdLHM9aS5maWxsLnN0b3BzLGg9aS5iYXNlQ29sb3IsbD10aGlzLmVsZW1lbnQuY29sb3JzP1wiY29sb3JzLnZhbHVlXCI6XCJjb2xvcnNcIixjPWEoaCxzWzBdLHIpLHU9YShoLHNbcy5sZW5ndGgtMV0scik7Zm9yKG49MDtuPHMubGVuZ3RoO24rKyllPXNbbl0sby5wdXNoKGYucm91bmQoMTAwKmUub2Zmc2V0KCkpK1wiJSBcIithKGgsZSxyKSk7dC5wdXNoKFtsLG8uam9pbihcIixcIildLFtcImNvbG9yXCIsY10sW1wiY29sb3IyXCIsdV0pfX0pLCQ9TC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0aGlzLnRyYW5zZm9ybT1lLEwuZm4uaW5pdC5jYWxsKHRoaXMsdCl9LGNyZWF0ZUVsZW1lbnQ6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQ9bihcInNrZXdcIiksdGhpcy5zZXRUcmFuc2Zvcm0oKX0sb3B0aW9uc0NoYW5nZTpmdW5jdGlvbih0KXtcInRyYW5zZm9ybVwiPT09dC5maWVsZCYmdGhpcy5yZWZyZXNoKHRoaXMuc3JjRWxlbWVudC5jdXJyZW50VHJhbnNmb3JtKCkpfSxyZWZyZXNoOmZ1bmN0aW9uKHQpe3RoaXMudHJhbnNmb3JtPXQsdGhpcy5zZXRUcmFuc2Zvcm0oKX0sdHJhbnNmb3JtT3JpZ2luOmZ1bmN0aW9uKCl7cmV0dXJuXCItMC41LC0wLjVcIn0sc2V0VHJhbnNmb3JtOmZ1bmN0aW9uKCl7dGhpcy5hbGxBdHRyKHRoaXMubWFwVHJhbnNmb3JtKCkpfSxtYXBUcmFuc2Zvcm06ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRyYW5zZm9ybSxlPVtdLG49Xyh0KTtyZXR1cm4gbj8obi5yb3VuZChCKSxlLnB1c2goW1wib25cIixcInRydWVcIl0sW1wibWF0cml4XCIsW24uYSxuLmMsbi5iLG4uZCwwLDBdLmpvaW4oXCIsXCIpXSxbXCJvZmZzZXRcIixuLmUrXCJweCxcIituLmYrXCJweFwiXSxbXCJvcmlnaW5cIix0aGlzLnRyYW5zZm9ybU9yaWdpbigpXSkpOmUucHVzaChbXCJvblwiLFwiZmFsc2VcIl0pLGV9fSksWD1HLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUsbil7dGhpcy5maWxsPXRoaXMuY3JlYXRlRmlsbE5vZGUodCxlLG4pLHRoaXMuc3Ryb2tlPW5ldyBIKHQsbiksdGhpcy50cmFuc2Zvcm09dGhpcy5jcmVhdGVUcmFuc2Zvcm1Ob2RlKHQsZSksRy5mbi5pbml0LmNhbGwodGhpcyx0KX0sYXR0YWNoVG86ZnVuY3Rpb24odCxlKXt0aGlzLmZpbGwuYXR0YWNoVG8odGhpcy5lbGVtZW50KSx0aGlzLnN0cm9rZS5hdHRhY2hUbyh0aGlzLmVsZW1lbnQpLHRoaXMudHJhbnNmb3JtLmF0dGFjaFRvKHRoaXMuZWxlbWVudCksTC5mbi5hdHRhY2hUby5jYWxsKHRoaXMsdCxlKX0sY3JlYXRlRmlsbE5vZGU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBuZXcgcSh0LGUsbil9LGNyZWF0ZVRyYW5zZm9ybU5vZGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3ICQodCxlKX0sY3JlYXRlRWxlbWVudDpmdW5jdGlvbigpe3RoaXMuZWxlbWVudD1uKFwic2hhcGVcIiksdGhpcy5zZXRDb29yZHNpemUoKSx0aGlzLnNldFN0eWxlKCl9LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24odCl7cyh0LmZpZWxkKT90aGlzLmZpbGwub3B0aW9uc0NoYW5nZSh0KTowPT09dC5maWVsZC5pbmRleE9mKFwic3Ryb2tlXCIpP3RoaXMuc3Ryb2tlLm9wdGlvbnNDaGFuZ2UodCk6XCJ0cmFuc2Zvcm1cIj09PXQuZmllbGQ/dGhpcy50cmFuc2Zvcm0ub3B0aW9uc0NoYW5nZSh0KTpcIm9wYWNpdHlcIj09PXQuZmllbGQmJih0aGlzLmZpbGwuc2V0T3BhY2l0eSgpLHRoaXMuc3Ryb2tlLnNldE9wYWNpdHkoKSksRy5mbi5vcHRpb25zQ2hhbmdlLmNhbGwodGhpcyx0KX0scmVmcmVzaFRyYW5zZm9ybTpmdW5jdGlvbih0KXt0aGlzLnRyYW5zZm9ybS5yZWZyZXNoKHRoaXMuc3JjRWxlbWVudC5jdXJyZW50VHJhbnNmb3JtKHQpKX0scmVmcmVzaE9wYWNpdHk6ZnVuY3Rpb24odCl7dCo9QSh0aGlzLnNyY0VsZW1lbnQub3B0aW9ucy5vcGFjaXR5LDEpLHRoaXMuZmlsbC5yZWZyZXNoT3BhY2l0eSh0KSx0aGlzLnN0cm9rZS5yZWZyZXNoT3BhY2l0eSh0KX0sbWFwU3R5bGU6ZnVuY3Rpb24odCxlKXt2YXIgbixpPUcuZm4ubWFwU3R5bGUuY2FsbCh0aGlzKTtyZXR1cm4gdCYmZXx8KHQ9ZT1SKSxpLnB1c2goW1wicG9zaXRpb25cIixcImFic29sdXRlXCJdLFtcIndpZHRoXCIsdCtcInB4XCJdLFtcImhlaWdodFwiLGUrXCJweFwiXSksbj10aGlzLnNyY0VsZW1lbnQub3B0aW9ucy5jdXJzb3IsbiYmaS5wdXNoKFtcImN1cnNvclwiLG5dKSxpfSxzZXRDb29yZHNpemU6ZnVuY3Rpb24oKXt0aGlzLmFsbEF0dHIoW1tcImNvb3Jkb3JpZ2luXCIsXCIwIDBcIl0sW1wiY29vcmRzaXplXCIseitcIiBcIit6XV0pfX0pLFU9TC5leHRlbmQoe2NyZWF0ZUVsZW1lbnQ6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQ9bihcInBhdGhcIiksdGhpcy5zZXRQYXRoRGF0YSgpfSxnZW9tZXRyeUNoYW5nZTpmdW5jdGlvbigpe3RoaXMuc2V0UGF0aERhdGEoKX0sc2V0UGF0aERhdGE6ZnVuY3Rpb24oKXt0aGlzLmF0dHIoXCJ2XCIsdGhpcy5yZW5kZXJEYXRhKCkpfSxyZW5kZXJEYXRhOmZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy5zcmNFbGVtZW50KX19KSxZPVguZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSxuKXt0aGlzLnBhdGhEYXRhPXRoaXMuY3JlYXRlRGF0YU5vZGUodCksWC5mbi5pbml0LmNhbGwodGhpcyx0LGUsbil9LGF0dGFjaFRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5wYXRoRGF0YS5hdHRhY2hUbyh0aGlzLmVsZW1lbnQpLFguZm4uYXR0YWNoVG8uY2FsbCh0aGlzLHQsZSl9LGNyZWF0ZURhdGFOb2RlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVSh0KX0sZ2VvbWV0cnlDaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLnBhdGhEYXRhLmdlb21ldHJ5Q2hhbmdlKCksWC5mbi5nZW9tZXRyeUNoYW5nZS5jYWxsKHRoaXMpfX0pLFY9VS5leHRlbmQoe3JlbmRlckRhdGE6ZnVuY3Rpb24oKXt2YXIgdCxlLG4saT10aGlzLnNyY0VsZW1lbnQucGF0aHM7aWYoaS5sZW5ndGg+MCl7Zm9yKHQ9W10sZT0wO2U8aS5sZW5ndGg7ZSsrKW49ZTxpLmxlbmd0aC0xLHQucHVzaChyKGlbZV0sbikpO3JldHVybiB0LmpvaW4oXCIgXCIpfX19KSxXPVkuZXh0ZW5kKHtjcmVhdGVEYXRhTm9kZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFYodCl9fSksUT0kLmV4dGVuZCh7dHJhbnNmb3JtT3JpZ2luOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zcmNFbGVtZW50Lmdlb21ldHJ5KCkuYmJveCgpLGU9dC5jZW50ZXIoKSxuPS1wKGUueCkvcCh0LndpZHRoKCkpLGk9LXAoZS55KS9wKHQuaGVpZ2h0KCkpO3JldHVybiBuK1wiLFwiK2l9fSksWj1YLmV4dGVuZCh7Y3JlYXRlRWxlbWVudDpmdW5jdGlvbigpe3RoaXMuZWxlbWVudD1uKFwib3ZhbFwiKSx0aGlzLnNldFN0eWxlKCl9LGNyZWF0ZVRyYW5zZm9ybU5vZGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IFEodCxlKX0sZ2VvbWV0cnlDaGFuZ2U6ZnVuY3Rpb24oKXtYLmZuLmdlb21ldHJ5Q2hhbmdlLmNhbGwodGhpcyksdGhpcy5zZXRTdHlsZSgpLHRoaXMucmVmcmVzaFRyYW5zZm9ybSgpfSxtYXBTdHlsZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuc3JjRWxlbWVudC5nZW9tZXRyeSgpLGU9dC5yYWRpdXMsbj10LmNlbnRlcixpPXAoMiplKSxyPVguZm4ubWFwU3R5bGUuY2FsbCh0aGlzLGksaSk7cmV0dXJuIHIucHVzaChbXCJsZWZ0XCIscChuLngtZSkrXCJweFwiXSxbXCJ0b3BcIixwKG4ueS1lKStcInB4XCJdKSxyfX0pLEo9VS5leHRlbmQoe3JlbmRlckRhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLnNyY0VsZW1lbnQudG9QYXRoKCkpfX0pLEs9WS5leHRlbmQoe2NyZWF0ZURhdGFOb2RlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgSih0KX19KSx0dD1VLmV4dGVuZCh7Y3JlYXRlRWxlbWVudDpmdW5jdGlvbigpe1UuZm4uY3JlYXRlRWxlbWVudC5jYWxsKHRoaXMpLHRoaXMuYXR0cihcInRleHRwYXRob2tcIiwhMCl9LHJlbmRlckRhdGE6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNyY0VsZW1lbnQucmVjdCgpLGU9dC5jZW50ZXIoKTtyZXR1cm5cIm0gXCIraShbbmV3IGIuUG9pbnQodC50b3BMZWZ0KCkueCxlLnkpXSkrXCIgbCBcIitpKFtuZXcgYi5Qb2ludCh0LmJvdHRvbVJpZ2h0KCkueCxlLnkpXSl9fSksZXQ9TC5leHRlbmQoe2NyZWF0ZUVsZW1lbnQ6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQ9bihcInRleHRwYXRoXCIpLHRoaXMuYXR0cihcIm9uXCIsITApLHRoaXMuYXR0cihcImZpdHBhdGhcIiwhMSksdGhpcy5zZXRTdHlsZSgpLHRoaXMuc2V0U3RyaW5nKCl9LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24odCl7XCJjb250ZW50XCI9PT10LmZpZWxkP3RoaXMuc2V0U3RyaW5nKCk6dGhpcy5zZXRTdHlsZSgpLEwuZm4ub3B0aW9uc0NoYW5nZS5jYWxsKHRoaXMsdCl9LG1hcFN0eWxlOmZ1bmN0aW9uKCl7cmV0dXJuW1tcImZvbnRcIix0aGlzLnNyY0VsZW1lbnQub3B0aW9ucy5mb250XV19LHNldFN0cmluZzpmdW5jdGlvbigpe3RoaXMuYXR0cihcInN0cmluZ1wiLHRoaXMuc3JjRWxlbWVudC5jb250ZW50KCkpfX0pLG50PVkuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSxuKXt0aGlzLnBhdGg9bmV3IGV0KHQpLFkuZm4uaW5pdC5jYWxsKHRoaXMsdCxlLG4pfSxjcmVhdGVEYXRhTm9kZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IHR0KHQpfSxhdHRhY2hUbzpmdW5jdGlvbih0LGUpe3RoaXMucGF0aC5hdHRhY2hUbyh0aGlzLmVsZW1lbnQpLFkuZm4uYXR0YWNoVG8uY2FsbCh0aGlzLHQsZSl9LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24odCl7XCJmb250XCIhPT10LmZpZWxkJiZcImNvbnRlbnRcIiE9PXQuZmllbGR8fCh0aGlzLnBhdGgub3B0aW9uc0NoYW5nZSh0KSx0aGlzLnBhdGhEYXRhLmdlb21ldHJ5Q2hhbmdlKHQpKSxZLmZuLm9wdGlvbnNDaGFuZ2UuY2FsbCh0aGlzLHQpfX0pLGl0PVUuZXh0ZW5kKHtyZW5kZXJEYXRhOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zcmNFbGVtZW50LnJlY3QoKSxlPShuZXcgeS5QYXRoKS5tb3ZlVG8odC50b3BMZWZ0KCkpLmxpbmVUbyh0LnRvcFJpZ2h0KCkpLmxpbmVUbyh0LmJvdHRvbVJpZ2h0KCkpLmxpbmVUbyh0LmJvdHRvbUxlZnQoKSkuY2xvc2UoKTtyZXR1cm4gcihlKX19KSxydD0kLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUsbil7dGhpcy5vcGFjaXR5PW4sJC5mbi5pbml0LmNhbGwodGhpcyx0LGUpfSxjcmVhdGVFbGVtZW50OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50PW4oXCJmaWxsXCIpLHRoaXMuYXR0cihcInR5cGVcIixcImZyYW1lXCIpLHRoaXMuYXR0cihcInJvdGF0ZVwiLCEwKSx0aGlzLnNldE9wYWNpdHkoKSx0aGlzLnNldFNyYygpLHRoaXMuc2V0VHJhbnNmb3JtKCl9LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24odCl7XCJzcmNcIj09PXQuZmllbGQmJnRoaXMuc2V0U3JjKCksJC5mbi5vcHRpb25zQ2hhbmdlLmNhbGwodGhpcyx0KX0sZ2VvbWV0cnlDaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLnJlZnJlc2goKX0scmVmcmVzaE9wYWNpdHk6ZnVuY3Rpb24odCl7dGhpcy5vcGFjaXR5PXQsdGhpcy5zZXRPcGFjaXR5KCl9LHNldE9wYWNpdHk6ZnVuY3Rpb24oKXt2YXIgdD1bXTt0aGlzLm1hcE9wYWNpdHlUbyh0LHRoaXMuc3JjRWxlbWVudC5vcHRpb25zLm9wYWNpdHkpLHRoaXMuYWxsQXR0cih0KX0sc2V0U3JjOmZ1bmN0aW9uKCl7dGhpcy5hdHRyKFwic3JjXCIsdGhpcy5zcmNFbGVtZW50LnNyYygpKX0sbWFwVHJhbnNmb3JtOmZ1bmN0aW9uKCl7dmFyIHQsZSxuLGkscixvLHMsYSxoPXRoaXMuc3JjRWxlbWVudCxsPWgucmF3QkJveCgpLGM9bC5jZW50ZXIoKSx1PVIvMixmPVIscD1sLndpZHRoKCkvZixnPWwuaGVpZ2h0KCkvZix2PTAseD10aGlzLnRyYW5zZm9ybTtyZXR1cm4geD8obj1fKHgpLGk9bShuLmEqbi5hK24uYipuLmIpLHI9bShuLmMqbi5jK24uZCpuLmQpLHAqPWksZyo9cixvPUUoZChuLmIsbi5kKSkscz1FKGQoLW4uYyxuLmEpKSx2PShvK3MpLzIsMCE9PXY/KGE9aC5iYm94KCkuY2VudGVyKCksdD0oYS54LXUpL2YsZT0oYS55LXUpL2YpOih0PShjLngqaStuLmUtdSkvZixlPShjLnkqcituLmYtdSkvZikpOih0PShjLngtdSkvZixlPShjLnktdSkvZikscD1QKHAsQiksZz1QKGcsQiksdD1QKHQsQiksZT1QKGUsQiksdj1QKHYsQiksW1tcInNpemVcIixwK1wiLFwiK2ddLFtcInBvc2l0aW9uXCIsdCtcIixcIitlXSxbXCJhbmdsZVwiLHZdXX19KSxvdD1ZLmV4dGVuZCh7Y3JlYXRlRmlsbE5vZGU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBuZXcgcnQodCxlLG4pfSxjcmVhdGVEYXRhTm9kZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGl0KHQpfSxvcHRpb25zQ2hhbmdlOmZ1bmN0aW9uKHQpe1wic3JjXCIhPT10LmZpZWxkJiZcInRyYW5zZm9ybVwiIT09dC5maWVsZHx8dGhpcy5maWxsLm9wdGlvbnNDaGFuZ2UodCksWS5mbi5vcHRpb25zQ2hhbmdlLmNhbGwodGhpcyx0KX0sZ2VvbWV0cnlDaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLmZpbGwuZ2VvbWV0cnlDaGFuZ2UoKSxZLmZuLmdlb21ldHJ5Q2hhbmdlLmNhbGwodGhpcyl9LHJlZnJlc2hUcmFuc2Zvcm06ZnVuY3Rpb24odCl7WS5mbi5yZWZyZXNoVHJhbnNmb3JtLmNhbGwodGhpcyx0KSx0aGlzLmZpbGwucmVmcmVzaCh0aGlzLnNyY0VsZW1lbnQuY3VycmVudFRyYW5zZm9ybSh0KSl9fSksc3Q9VS5leHRlbmQoe3JlbmRlckRhdGE6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNyY0VsZW1lbnQuZ2VvbWV0cnkoKSxlPVtcIm1cIixpKFt0LnRvcExlZnQoKV0pLFwibFwiLGkoW3QudG9wUmlnaHQoKSx0LmJvdHRvbVJpZ2h0KCksdC5ib3R0b21MZWZ0KCldKSxcInggZVwiXTtyZXR1cm4gZS5qb2luKFwiIFwiKX19KSxhdD1ZLmV4dGVuZCh7Y3JlYXRlRGF0YU5vZGU6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBzdCh0KX19KSxodD17R3JvdXA6aixUZXh0Om50LFBhdGg6WSxNdWx0aVBhdGg6VyxDaXJjbGU6WixBcmM6SyxJbWFnZTpvdCxSZWN0OmF0fTtnLnN1cHBvcnQudm1sPWZ1bmN0aW9uKCl7dmFyIHQ9Zy5zdXBwb3J0LmJyb3dzZXI7cmV0dXJuIHQubXNpZSYmdC52ZXJzaW9uPDl9KCksYz1cImluaGVyaXRcIixnLnN1cHBvcnQuYnJvd3Nlci5tc2llJiZnLnN1cHBvcnQuYnJvd3Nlci52ZXJzaW9uPDgmJihjPVwicmVjdChhdXRvIGF1dG8gYXV0byBhdXRvKVwiKSxnLnN1cHBvcnQudm1sJiZ5LlN1cmZhY2VGYWN0b3J5LmN1cnJlbnQucmVnaXN0ZXIoXCJ2bWxcIixELDMwKSx2KHkse3ZtbDp7QXJjRGF0YU5vZGU6SixBcmNOb2RlOkssQ2lyY2xlVHJhbnNmb3JtTm9kZTpRLENpcmNsZU5vZGU6WixGaWxsTm9kZTpxLEdyb3VwTm9kZTpqLEltYWdlTm9kZTpvdCxJbWFnZUZpbGxOb2RlOnJ0LEltYWdlUGF0aERhdGFOb2RlOml0LE11bHRpUGF0aERhdGFOb2RlOlYsTXVsdGlQYXRoTm9kZTpXLE5vZGU6TCxQYXRoRGF0YU5vZGU6VSxQYXRoTm9kZTpZLFJlY3REYXRhTm9kZTpzdCxSZWN0Tm9kZTphdCxSb290Tm9kZTpJLFN0cm9rZU5vZGU6SCxTdXJmYWNlOkQsVGV4dE5vZGU6bnQsVGV4dFBhdGhOb2RlOmV0LFRleHRQYXRoRGF0YU5vZGU6dHQsVHJhbnNmb3JtTm9kZTokfX0pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsbil7KG58fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwiZHJhd2luZy9odG1sLm1pblwiLFtcImtlbmRvLmNvbG9yLm1pblwiLFwiZHJhd2luZy9zaGFwZXMubWluXCIsXCJ1dGlsL21haW4ubWluXCIsXCJ1dGlsL3RleHQtbWV0cmljcy5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBpKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0P3t4OnQseTp0fTpBcnJheS5pc0FycmF5KHQpP3t4OnRbMF0seTp0WzFdfTp7eDp0LngseTp0Lnl9fWZ1bmN0aW9uIHIobixyKXtmdW5jdGlvbiBzKGUpe3ZhciBuPW5ldyBodC5Hcm91cCxpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIFIobixbdS54LDAsMCx1LnksLWkubGVmdCp1LngsLWkudG9wKnUueV0pLGd0Ll9jbGlwYm94PSExLGd0Ll9tYXRyaXg9bHQuTWF0cml4LnVuaXQoKSxndC5fc3RhY2tpbmdDb250ZXh0PXtlbGVtZW50OmUsZ3JvdXA6bn0sZ3QuX2F2b2lkTGlua3M9ci5hdm9pZExpbmtzPT09ITA/XCJhXCI6ci5hdm9pZExpbmtzLHQoZSkuYWRkQ2xhc3MoXCJrLXBkZi1leHBvcnRcIiksZXQoZSxuKSx0KGUpLnJlbW92ZUNsYXNzKFwiay1wZGYtZXhwb3J0XCIpLG59ZnVuY3Rpb24gYShlKXtpZihudWxsIT1lKXJldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiYoZT1rZW5kby50ZW1wbGF0ZShlLnJlcGxhY2UoL15cXHMrfFxccyskL2csXCJcIikpKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2Z1bmN0aW9uKG4pe3ZhciBpPWUobik7aWYoaSlyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgaSYmKGk9aS5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLFwiXCIpKSx0KGkpWzBdfTpmdW5jdGlvbigpe3JldHVybiB0KGUpLmNsb25lKClbMF19fWZ1bmN0aW9uIGgoZSl7dmFyIG4saSxyLG8scz1lLmNsb25lTm9kZSghMSk7aWYoMT09ZS5ub2RlVHlwZSl7bj10KGUpLGk9dChzKSxvPW4uZGF0YSgpO2ZvcihyIGluIG8paS5kYXRhKHIsb1tyXSk7aWYoL15jYW52YXMkL2kudGVzdChlLnRhZ05hbWUpKXMuZ2V0Q29udGV4dChcIjJkXCIpLmRyYXdJbWFnZShlLDAsMCk7ZWxzZSBpZigvXmlucHV0JC9pLnRlc3QoZS50YWdOYW1lKSllLnJlbW92ZUF0dHJpYnV0ZShcIm5hbWVcIik7ZWxzZSBmb3Iocj1lLmZpcnN0Q2hpbGQ7cjtyPXIubmV4dFNpYmxpbmcpcy5hcHBlbmRDaGlsZChoKHIpKX1yZXR1cm4gc31mdW5jdGlvbiBsKG4saSxyLG8scyxsLGMpe2Z1bmN0aW9uIHUoKXtmdW5jdGlvbiB0KCl7ZChrLGZ1bmN0aW9uKCl7bih7cGFnZXM6ayxjb250YWluZXI6RX0pfSl9dmFyIGUsaTsoXCItXCIhPXJ8fHMpJiZtKFMpLGU9eCgpLFMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSxTKSxlLmFwcGVuZENoaWxkKFMpLEM/KGk9ay5sZW5ndGgsay5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7dmFyIHI9Qyh7ZWxlbWVudDplLHBhZ2VOdW06bisxLHRvdGFsUGFnZXM6ay5sZW5ndGh9KTtyJiYoZS5hcHBlbmRDaGlsZChyKSxwKHIsZnVuY3Rpb24oKXswPT09LS1pJiZ0KCl9KSl9KSk6dCgpfWZ1bmN0aW9uIGYodCl7aWYoYy5rZWVwVG9nZXRoZXImJnQuaXMoYy5rZWVwVG9nZXRoZXIpJiZ0LmhlaWdodCgpPD1zLVApcmV0dXJuITA7dmFyIGU9dFswXS50YWdOYW1lO3JldHVybiEoL15oWzEtNl0kL2kudGVzdChlKSYmdC5oZWlnaHQoKT49cy1QKSYmKHQuZGF0YShcImtlbmRvQ2hhcnRcIil8fC9eKD86aW1nfHRyfHRoZWFkfHRofHRmb290fGlmcmFtZXxzdmd8b2JqZWN0fGNhbnZhc3xpbnB1dHx0ZXh0YXJlYXxzZWxlY3R8dmlkZW98aFsxLTZdKSQvaS50ZXN0KGUpKX1mdW5jdGlvbiBtKG4pe3ZhciBpLG8sYSxoLGw9YihuKSxjPWUoXyhsLFwicGFkZGluZy1ib3R0b21cIikpLHU9ZShfKGwsXCJib3JkZXItYm90dG9tLXdpZHRoXCIpKSxkPVA7Zm9yKFArPWMrdSxpPSEwLG89bi5maXJzdENoaWxkO287bz1vLm5leHRTaWJsaW5nKWlmKDE9PW8ubm9kZVR5cGUpe2lmKGk9ITEsYT10KG8pLGEuaXMocikpe3Yobyk7Y29udGludWV9aWYoIXMpe20obyk7Y29udGludWV9aWYoIS9eKD86c3RhdGljfHJlbGF0aXZlKSQvLnRlc3QoXyhiKG8pLFwicG9zaXRpb25cIikpKWNvbnRpbnVlO2g9eShvKSwxPT1oP3Yobyk6aCYmZihhKT92KG8pOm0obyl9ZWxzZSAzPT1vLm5vZGVUeXBlJiZzJiYodyhvLGkpLGk9ITEpO1A9ZH1mdW5jdGlvbiBnKHQpe3ZhciBlPXQucGFyZW50Tm9kZSxuPWUuZmlyc3RDaGlsZDtpZih0PT09bilyZXR1cm4hMDtpZih0PT09ZS5jaGlsZHJlblswXSl7aWYoNz09bi5ub2RlVHlwZXx8OD09bi5ub2RlVHlwZSlyZXR1cm4hMDtpZigzPT1uLm5vZGVUeXBlKXJldHVybiEvXFxTLy50ZXN0KG4uZGF0YSl9cmV0dXJuITF9ZnVuY3Rpb24gdihlKXt2YXIgbixpLHIsbyxzLGEsaDtyZXR1cm4gMT09ZS5ub2RlVHlwZSYmZSE9PVMmJmcoZSk/dihlLnBhcmVudE5vZGUpOihuPXQoZSkuY2xvc2VzdChcInRhYmxlXCIpLGk9bi5maW5kKFwiY29sZ3JvdXA6Zmlyc3RcIiksYy5yZXBlYXRIZWFkZXJzJiYocj1uLmZpbmQoXCJ0aGVhZDpmaXJzdFwiKSxvPXQoZSkuY2xvc2VzdCgnLmstZ3JpZFtkYXRhLXJvbGU9XCJncmlkXCJdJyksb1swXSYmb1swXS5xdWVyeVNlbGVjdG9yKFwiLmstYXV0by1zY3JvbGxhYmxlXCIpJiYocz1vLmZpbmQoXCIuay1ncmlkLWhlYWRlcjpmaXJzdFwiKSkpLGE9eCgpLGg9VC5jcmVhdGVSYW5nZSgpLGguc2V0U3RhcnRCZWZvcmUoUyksaC5zZXRFbmRCZWZvcmUoZSksYS5hcHBlbmRDaGlsZChoLmV4dHJhY3RDb250ZW50cygpKSxTLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsUyksblswXSYmKG49dChlKS5jbG9zZXN0KFwidGFibGVcIiksYy5yZXBlYXRIZWFkZXJzJiZyWzBdJiZyLmNsb25lKCkucHJlcGVuZFRvKG4pLGlbMF0mJmkuY2xvbmUoKS5wcmVwZW5kVG8obikpLHZvaWQoYy5yZXBlYXRIZWFkZXJzJiZzJiZzWzBdJiYobz10KGUpLmNsb3Nlc3QoJy5rLWdyaWRbZGF0YS1yb2xlPVwiZ3JpZFwiXScpLHNbMF0mJnMuY2xvbmUoKS5wcmVwZW5kVG8obykpKSl9ZnVuY3Rpb24geCgpe3ZhciBlPVQuY3JlYXRlRWxlbWVudChcIktFTkRPLVBERi1QQUdFXCIpO3JldHVybiB0KGUpLmNzcyh7ZGlzcGxheTpcImJsb2NrXCIsYm94U2l6aW5nOlwiY29udGVudC1ib3hcIix3aWR0aDpvfHxcImF1dG9cIixwYWRkaW5nOmwudG9wK1wicHggXCIrbC5yaWdodCtcInB4IFwiK2wuYm90dG9tK1wicHggXCIrbC5sZWZ0K1wicHhcIixwb3NpdGlvbjpcInJlbGF0aXZlXCIsaGVpZ2h0OnN8fFwiYXV0b1wiLG92ZXJmbG93OnN8fG8/XCJoaWRkZW5cIjpcInZpc2libGVcIixjbGVhcjpcImJvdGhcIn0pLGMmJmMucGFnZUNsYXNzTmFtZSYmKGUuY2xhc3NOYW1lPWMucGFnZUNsYXNzTmFtZSksay5wdXNoKGUpLGV9ZnVuY3Rpb24geSh0KXt2YXIgZSxuLGk9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gMD09PWkud2lkdGh8fDA9PT1pLmhlaWdodD8wOihlPVMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLG49cy1QLGkuaGVpZ2h0Pm4/MzppLnRvcC1lPm4/MTppLmJvdHRvbS1lPm4/MjowKX1mdW5jdGlvbiB3KHQsZSl7dmFyIG4saSxyLG8sczsvXFxTLy50ZXN0KHQuZGF0YSkmJihuPXQuZGF0YS5sZW5ndGgsaT1ULmNyZWF0ZVJhbmdlKCksaS5zZWxlY3ROb2RlQ29udGVudHModCkscj15KGkpLHImJihvPXQsMT09cj92KGU/dC5wYXJlbnROb2RlOnQpOighZnVuY3Rpb24gYShlLG4scil7cmV0dXJuIGkuc2V0RW5kKHQsbiksZT09bnx8bj09cj9uOnkoaSk/YShlLGUrbj4+MSxuKTphKG4sbityPj4xLHIpfSgwLG4+PjEsbiksIS9cXFMvLnRlc3QoXCJcIitpKSYmZT92KHQucGFyZW50Tm9kZSk6KG89dC5zcGxpdFRleHQoaS5lbmRPZmZzZXQpLHM9eCgpLGkuc2V0U3RhcnRCZWZvcmUoUykscy5hcHBlbmRDaGlsZChpLmV4dHJhY3RDb250ZW50cygpKSxTLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHMsUykpKSx3KG8pKSl9dmFyIEM9YShjLnRlbXBsYXRlKSxUPWkub3duZXJEb2N1bWVudCxrPVtdLFM9Yy5fZGVzdHJ1Y3RpdmU/aTpoKGkpLEU9VC5jcmVhdGVFbGVtZW50KFwiS0VORE8tUERGLURPQ1VNRU5UXCIpLFA9MDt0KFMpLmZpbmQoXCJ0Zm9vdFwiKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfSksdChTKS5maW5kKFwib2xcIikuZWFjaChmdW5jdGlvbigpe3QodGhpcykuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKHQpe3RoaXMuc2V0QXR0cmlidXRlKFwia2VuZG8tc3BsaXQtaW5kZXhcIix0KX0pfSksdChFKS5jc3Moe2Rpc3BsYXk6XCJibG9ja1wiLHBvc2l0aW9uOlwiYWJzb2x1dGVcIixib3hTaXppbmc6XCJjb250ZW50LWJveFwiLGxlZnQ6XCItMTAwMDBweFwiLHRvcDpcIi0xMDAwMHB4XCJ9KSxvJiYodChFKS5jc3Moe3dpZHRoOm8scGFkZGluZ0xlZnQ6bC5sZWZ0LHBhZGRpbmdSaWdodDpsLnJpZ2h0fSksdChTKS5jc3Moe292ZXJmbG93OlwiaGlkZGVuXCJ9KSksaS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShFLGkpLEUuYXBwZW5kQ2hpbGQoUyksYy5iZWZvcmVQYWdlQnJlYWs/c2V0VGltZW91dChmdW5jdGlvbigpe2MuYmVmb3JlUGFnZUJyZWFrKEUsdSl9LDE1KTpzZXRUaW1lb3V0KHUsMTUpfXZhciBjLHU7aWYocnx8KHI9e30pLGM9dC5EZWZlcnJlZCgpLG49dChuKVswXSwhbilyZXR1cm4gYy5yZWplY3QoXCJObyBlbGVtZW50IHRvIGV4cG9ydFwiKTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSl0aHJvdyBFcnJvcihcIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlIGlzIG1pc3NpbmcuICBZb3UgYXJlIHVzaW5nIGFuIHVuc3VwcG9ydGVkIGJyb3dzZXIsIG9yIHJ1bm5pbmcgaW4gSUU4IGNvbXBhdGliaWxpdHkgbW9kZS4gIERyYXdpbmcgSFRNTCBpcyBzdXBwb3J0ZWQgaW4gQ2hyb21lLCBGaXJlZm94LCBTYWZhcmkgYW5kIElFOSsuXCIpO3JldHVybiBrZW5kby5wZGYmJmtlbmRvLnBkZi5kZWZpbmVGb250KG8obi5vd25lckRvY3VtZW50KSksdT1pKHIuc2NhbGV8fDEpLHAobixmdW5jdGlvbigpe3ZhciB0LGU9ciYmci5mb3JjZVBhZ2VCcmVhayxpPXImJnIucGFwZXJTaXplJiZcImF1dG9cIiE9ci5wYXBlclNpemUsbz1rZW5kby5wZGYuZ2V0UGFwZXJPcHRpb25zKGZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJwYXBlclNpemVcIj09dD9pP3JbdF06XCJBNFwiOnQgaW4gcj9yW3RdOmV9KSxhPWkmJm8ucGFwZXJTaXplWzBdLGg9aSYmby5wYXBlclNpemVbMV0sZj1yLm1hcmdpbiYmby5tYXJnaW4sZD0hIWY7ZXx8aD8oZnx8KGY9e2xlZnQ6MCx0b3A6MCxyaWdodDowLGJvdHRvbTowfSksYSYmKGEvPXUueCksaCYmKGgvPXUueSksZi5sZWZ0Lz11LngsZi5yaWdodC89dS54LGYudG9wLz11LnksZi5ib3R0b20vPXUueSx0PW5ldyBodC5Hcm91cCh7cGRmOnttdWx0aVBhZ2U6ITAscGFwZXJTaXplOmk/by5wYXBlclNpemU6XCJhdXRvXCIsX2lnbm9yZU1hcmdpbjpkfX0pLGwoZnVuY3Rpb24oZSl7aWYoci5wcm9ncmVzcyl7dmFyIG49ITEsaT0wOyFmdW5jdGlvbiBvKCl7aWYoaTxlLnBhZ2VzLmxlbmd0aCl7dmFyIGE9cyhlLnBhZ2VzW2ldKTt0LmFwcGVuZChhKSxyLnByb2dyZXNzKHtwYWdlOmEscGFnZU51bTorK2ksdG90YWxQYWdlczplLnBhZ2VzLmxlbmd0aCxjYW5jZWw6ZnVuY3Rpb24oKXtuPSEwfX0pLG4/ZS5jb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlLmNvbnRhaW5lcik6c2V0VGltZW91dChvKX1lbHNlIGUuY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZS5jb250YWluZXIpLGMucmVzb2x2ZSh0KX0oKX1lbHNlIGUucGFnZXMuZm9yRWFjaChmdW5jdGlvbihlKXt0LmFwcGVuZChzKGUpKX0pLGUuY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZS5jb250YWluZXIpLGMucmVzb2x2ZSh0KX0sbixlLGE/YS1mLmxlZnQtZi5yaWdodDpudWxsLGg/aC1mLnRvcC1mLmJvdHRvbTpudWxsLGYscikpOmMucmVzb2x2ZShzKG4pKX0pLGMucHJvbWlzZSgpfWZ1bmN0aW9uIG8odCl7ZnVuY3Rpb24gZSh0KXtpZih0KXt2YXIgZT1udWxsO3RyeXtlPXQuY3NzUnVsZXN9Y2F0Y2gobil7fWUmJmkodCxlKX19ZnVuY3Rpb24gbih0KXt2YXIgZSxuPV8odC5zdHlsZSxcInNyY1wiKTtyZXR1cm4gbj9vdChuKS5yZWR1Y2UoZnVuY3Rpb24odCxlKXt2YXIgbj1zdChlKTtyZXR1cm4gbiYmdC5wdXNoKG4pLHR9LFtdKTooZT1zdCh0LmNzc1RleHQpLGU/W2VdOltdKX1mdW5jdGlvbiBpKHQsaSl7dmFyIG8scyxhLGgsbCxjLHU7Zm9yKG89MDtvPGkubGVuZ3RoOysrbylzd2l0Y2gocz1pW29dLHMudHlwZSl7Y2FzZSAzOmUocy5zdHlsZVNoZWV0KTticmVhaztjYXNlIDU6YT1zLnN0eWxlLGg9b3QoXyhhLFwiZm9udC1mYW1pbHlcIikpLGw9L14oWzU2Nzg5XTAwfGJvbGQpJC9pLnRlc3QoXyhhLFwiZm9udC13ZWlnaHRcIikpLGM9XCJpdGFsaWNcIj09XyhhLFwiZm9udC1zdHlsZVwiKSx1PW4ocyksdS5sZW5ndGg+MCYmcih0LGgsbCxjLHVbMF0pfX1mdW5jdGlvbiByKHQsZSxuLGkscil7L15kYXRhOi9pLnRlc3Qocil8fC9eW15cXC86XSs6XFwvXFwvLy50ZXN0KHIpfHwvXlxcLy8udGVzdChyKXx8KHI9KHQuaHJlZitcIlwiKS5yZXBsYWNlKC9bXlxcL10qJC8sXCJcIikrciksZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Q9dC5yZXBsYWNlKC9eKFsnXCJdPykoLio/KVxcMSQvLFwiJDJcIiksbiYmKHQrPVwifGJvbGRcIiksaSYmKHQrPVwifGl0YWxpY1wiKSxvW3RdPXJ9KX12YXIgbyxzO2ZvcihudWxsPT10JiYodD1kb2N1bWVudCksbz17fSxzPTA7czx0LnN0eWxlU2hlZXRzLmxlbmd0aDsrK3MpZSh0LnN0eWxlU2hlZXRzW3NdKTtyZXR1cm4gb31mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIHQ9XCJfY291bnRlcl9cIit0LGd0W3RdfWZ1bmN0aW9uIGgodCl7dmFyIGU9W10sbj1ndDtmb3IodD1cIl9jb3VudGVyX1wiK3Q7bjspcyhuLHQpJiZlLnB1c2goblt0XSksbj1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik7cmV0dXJuIGUucmV2ZXJzZSgpfWZ1bmN0aW9uIGwodCxlKXt2YXIgbj1ndDtmb3IodD1cIl9jb3VudGVyX1wiK3Q7biYmIXMobix0KTspbj1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik7bnx8KG49Z3QuX3Jvb3QpLG5bdF09KG5bdF18fDApKyhudWxsPT1lPzE6ZSl9ZnVuY3Rpb24gYyh0LGUpe3Q9XCJfY291bnRlcl9cIit0LGd0W3RdPW51bGw9PWU/MDplfWZ1bmN0aW9uIHUodCxuLGkpe3ZhciByLG8scztmb3Iocj0wO3I8dC5sZW5ndGg7KW89dFtyKytdLHM9ZSh0W3JdKSxpc05hTihzKT9uKG8saSk6KG4obyxzKSwrK3IpfWZ1bmN0aW9uIGYodCxlKXt2YXIgbj1rZW5kby5wYXJzZUNvbG9yKHQpO3JldHVybiBuJiYobj1uLnRvUkdCKCksZT9uPW4udG9Dc3NSZ2JhKCk6MD09PW4uYSYmKG49bnVsbCkpLG59ZnVuY3Rpb24gZCh0LGUpe2Z1bmN0aW9uIG4oKXstLWk8PTAmJmUoKX12YXIgaT0wO3QuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZSxyLG89dC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpO2ZvcihlPTA7ZTxvLmxlbmd0aDsrK2Upcj1vW2VdLHIuY29tcGxldGV8fChpKyssci5vbmxvYWQ9ci5vbmVycm9yPW4pfSksaXx8bigpfWZ1bmN0aW9uIHAodCxlKXtmdW5jdGlvbiBuKHQpe210W3RdfHwobXRbdF09ITAsby5wdXNoKHQpKX1mdW5jdGlvbiBpKCl7LS1yPD0wJiZlKCl9dmFyIHIsbz1bXTshZnVuY3Rpb24gcyh0KXsvXmltZyQvaS50ZXN0KHQudGFnTmFtZSkmJm4odC5zcmMpLHJ0KF8oYih0KSxcImJhY2tncm91bmQtaW1hZ2VcIikpLmZvckVhY2goZnVuY3Rpb24odCl7XCJ1cmxcIj09dC50eXBlJiZuKHQudXJsKX0pLHQuY2hpbGRyZW4mJmN0LmNhbGwodC5jaGlsZHJlbikuZm9yRWFjaChzKX0odCkscj1vLmxlbmd0aCwwPT09ciYmaSgpLG8uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1tdFt0XT1uZXcgSW1hZ2U7L15kYXRhOi9pLnRlc3QodCl8fChlLmNyb3NzT3JpZ2luPVwiQW5vbnltb3VzXCIpLGUuc3JjPXQsZS5jb21wbGV0ZT9pKCk6KGUub25sb2FkPWksZS5vbmVycm9yPWZ1bmN0aW9uKCl7bXRbdF09bnVsbCxpKCl9KX0pfWZ1bmN0aW9uIG0odCl7dmFyIGUsaT1cIlwiO2RvIGU9dCUyNixpPVN0cmluZy5mcm9tQ2hhckNvZGUoOTcrZSkraSx0PW4uZmxvb3IodC8yNik7d2hpbGUodD4wKTtyZXR1cm4gaX1mdW5jdGlvbiBnKHQsZSxuKXt2YXIgaSxyO2d0PU9iamVjdC5jcmVhdGUoZ3QpLGd0W3QudGFnTmFtZS50b0xvd2VyQ2FzZSgpXT17ZWxlbWVudDp0LHN0eWxlOmV9LGk9XyhlLFwidGV4dC1kZWNvcmF0aW9uXCIpLGkmJlwibm9uZVwiIT1pJiYocj1fKGUsXCJjb2xvclwiKSxpLnNwbGl0KC9cXHMrL2cpLmZvckVhY2goZnVuY3Rpb24odCl7Z3RbdF18fChndFt0XT1yKX0pKSx3KGUpJiYoZ3QuX3N0YWNraW5nQ29udGV4dD17ZWxlbWVudDp0LGdyb3VwOm59KX1mdW5jdGlvbiB2KCl7Z3Q9T2JqZWN0LmdldFByb3RvdHlwZU9mKGd0KX1mdW5jdGlvbiB4KHQpe2lmKG51bGwhPWd0Ll9jbGlwYm94KXt2YXIgZT10LmJib3goZ3QuX21hdHJpeCk7Z3QuX2NsaXBib3g9Z3QuX2NsaXBib3g/bHQuUmVjdC5pbnRlcnNlY3QoZ3QuX2NsaXBib3gsZSk6ZX19ZnVuY3Rpb24geSgpe3ZhciB0PWd0Ll9jbGlwYm94O3JldHVybiBudWxsPT10fHwodD8wPT09dC53aWR0aCgpfHwwPT09dC5oZWlnaHQoKTp2b2lkIDApfWZ1bmN0aW9uIHcodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gXyh0LGUpfWlmKFwibm9uZVwiIT1lKFwidHJhbnNmb3JtXCIpfHxcInN0YXRpY1wiIT1lKFwicG9zaXRpb25cIikmJlwiYXV0b1wiIT1lKFwiei1pbmRleFwiKXx8ZShcIm9wYWNpdHlcIik8MSlyZXR1cm4hMH1mdW5jdGlvbiBiKHQsZSl7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQsZXx8bnVsbCl9ZnVuY3Rpb24gXyh0LGUpe3ZhciBuPXQuZ2V0UHJvcGVydHlWYWx1ZShlKTtyZXR1cm4gbnVsbCE9biYmXCJcIiE9PW58fCh1dC53ZWJraXQ/bj10LmdldFByb3BlcnR5VmFsdWUoXCItd2Via2l0LVwiK2UpOnV0Lm1vemlsbGE/bj10LmdldFByb3BlcnR5VmFsdWUoXCItbW96LVwiK2UpOnV0Lm9wZXJhP249dC5nZXRQcm9wZXJ0eVZhbHVlKFwiLW8tXCIrZSk6dXQubXNpZSYmKG49dC5nZXRQcm9wZXJ0eVZhbHVlKFwiLW1zLVwiK2UpKSksbn1mdW5jdGlvbiBDKHQsZSxuLGkpe3Quc2V0UHJvcGVydHkoZSxuLGkpLHV0LndlYmtpdD90LnNldFByb3BlcnR5KFwiLXdlYmtpdC1cIitlLG4saSk6dXQubW96aWxsYT90LnNldFByb3BlcnR5KFwiLW1vei1cIitlLG4saSk6dXQub3BlcmE/dC5zZXRQcm9wZXJ0eShcIi1vLVwiK2UsbixpKTp1dC5tc2llJiYodC5zZXRQcm9wZXJ0eShcIi1tcy1cIitlLG4saSksZT1cIm1zXCIrZS5yZXBsYWNlKC8oXnwtKShbYS16XSkvZyxmdW5jdGlvbih0LGUsbil7cmV0dXJuIGUrbi50b1VwcGVyQ2FzZSgpfSksdFtlXT1uKX1mdW5jdGlvbiBUKHQsbil7cmV0dXJuIG49XCJib3JkZXItXCIrbix7d2lkdGg6ZShfKHQsbitcIi13aWR0aFwiKSksc3R5bGU6Xyh0LG4rXCItc3R5bGVcIiksY29sb3I6ZihfKHQsbitcIi1jb2xvclwiKSwhMCl9fWZ1bmN0aW9uIGsodCxlKXt2YXIgbj10LnN0eWxlLmNzc1RleHQsaT1lKCk7cmV0dXJuIHQuc3R5bGUuY3NzVGV4dD1uLGl9ZnVuY3Rpb24gUyh0LG4pe3ZhciBpPV8odCxcImJvcmRlci1cIituK1wiLXJhZGl1c1wiKS5zcGxpdCgvXFxzKy9nKS5tYXAoZSk7cmV0dXJuIDE9PWkubGVuZ3RoJiZpLnB1c2goaVswXSksQih7eDppWzBdLHk6aVsxXX0pfWZ1bmN0aW9uIEUodCl7dmFyIGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gZT1QKGUsXCJib3JkZXItKi13aWR0aFwiLHQpLGU9UChlLFwicGFkZGluZy0qXCIsdCl9ZnVuY3Rpb24gUCh0LG4saSl7dmFyIHIsbyxzLGEsaDtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2Ygbj8ocj1iKGkpLG89ZShfKHIsbi5yZXBsYWNlKFwiKlwiLFwidG9wXCIpKSkscz1lKF8ocixuLnJlcGxhY2UoXCIqXCIsXCJyaWdodFwiKSkpLGE9ZShfKHIsbi5yZXBsYWNlKFwiKlwiLFwiYm90dG9tXCIpKSksaD1lKF8ocixuLnJlcGxhY2UoXCIqXCIsXCJsZWZ0XCIpKSkpOlwibnVtYmVyXCI9PXR5cGVvZiBuJiYobz1zPWE9aD1uKSx7dG9wOnQudG9wK28scmlnaHQ6dC5yaWdodC1zLGJvdHRvbTp0LmJvdHRvbS1hLGxlZnQ6dC5sZWZ0K2gsd2lkdGg6dC5yaWdodC10LmxlZnQtcy1oLGhlaWdodDp0LmJvdHRvbS10LnRvcC1hLW99fWZ1bmN0aW9uIEEodCl7dmFyIG4saSxyPV8odCxcInRyYW5zZm9ybVwiKTtyZXR1cm5cIm5vbmVcIj09cj9udWxsOihuPS9eXFxzKm1hdHJpeFxcKFxccyooLio/KVxccypcXClcXHMqJC8uZXhlYyhyKSxuPyhpPV8odCxcInRyYW5zZm9ybS1vcmlnaW5cIiksbj1uWzFdLnNwbGl0KC9cXHMqLFxccyovZykubWFwKGUpLGk9aS5zcGxpdCgvXFxzKy9nKS5tYXAoZSkse21hdHJpeDpuLG9yaWdpbjppfSk6dm9pZCAwKX1mdW5jdGlvbiBPKHQpe3JldHVybiAxODAqdC9uLlBJJTM2MH1mdW5jdGlvbiBOKHQpe3ZhciBpPWUodCk7cmV0dXJuL2dyYWQkLy50ZXN0KHQpP24uUEkqaS8yMDA6L3JhZCQvLnRlc3QodCk/aTovdHVybiQvLnRlc3QodCk/bi5QSSppKjI6L2RlZyQvLnRlc3QodCk/bi5QSSppLzE4MDp2b2lkIDB9ZnVuY3Rpb24gUih0LGUpe3JldHVybiBlPW5ldyBsdC5NYXRyaXgoZVswXSxlWzFdLGVbMl0sZVszXSxlWzRdLGVbNV0pLHQudHJhbnNmb3JtKGUpLGV9ZnVuY3Rpb24geih0LGUpe3QuY2xpcChlKX1mdW5jdGlvbiBNKHQsZSxuLGkpe2Zvcih2YXIgcj1uZXcgbHQuQXJjKFtlLG5dLGkpLmN1cnZlUG9pbnRzKCksbz0xO288ci5sZW5ndGg7KXQuY3VydmVUbyhyW28rK10scltvKytdLHJbbysrXSl9ZnVuY3Rpb24gQih0KXtyZXR1cm4odC54PD0wfHx0Lnk8PTApJiYodC54PXQueT0wKSx0fWZ1bmN0aW9uIEQodCxlLGkscixvKXt2YXIgcz1uLm1heCgwLGUueCksYT1uLm1heCgwLGUueSksaD1uLm1heCgwLGkueCksbD1uLm1heCgwLGkueSksYz1uLm1heCgwLHIueCksdT1uLm1heCgwLHIueSksZj1uLm1heCgwLG8ueCksZD1uLm1heCgwLG8ueSkscD1uLm1pbih0LndpZHRoLyhzK2gpLHQuaGVpZ2h0LyhsK3UpLHQud2lkdGgvKGMrZiksdC5oZWlnaHQvKGQrYSkpO3JldHVybiBwPDEmJihzKj1wLGEqPXAsaCo9cCxsKj1wLGMqPXAsdSo9cCxmKj1wLGQqPXApLHt0bDp7eDpzLHk6YX0sdHI6e3g6aCx5Omx9LGJyOnt4OmMseTp1fSxibDp7eDpmLHk6ZH19fWZ1bmN0aW9uIEwodCxuLGkpe3ZhciByLG8scyxhLGgsbCxjLHUsZj1iKHQpLGQ9UyhmLFwidG9wLWxlZnRcIikscD1TKGYsXCJ0b3AtcmlnaHRcIiksbT1TKGYsXCJib3R0b20tbGVmdFwiKSxnPVMoZixcImJvdHRvbS1yaWdodFwiKTtyZXR1cm5cInBhZGRpbmdcIiE9aSYmXCJjb250ZW50XCIhPWl8fChyPVQoZixcInRvcFwiKSxvPVQoZixcInJpZ2h0XCIpLHM9VChmLFwiYm90dG9tXCIpLGE9VChmLFwibGVmdFwiKSxkLngtPWEud2lkdGgsZC55LT1yLndpZHRoLHAueC09by53aWR0aCxwLnktPXIud2lkdGgsZy54LT1vLndpZHRoLGcueS09cy53aWR0aCxtLngtPWEud2lkdGgsbS55LT1zLndpZHRoLFwiY29udGVudFwiPT1pJiYoaD1lKF8oZixcInBhZGRpbmctdG9wXCIpKSxsPWUoXyhmLFwicGFkZGluZy1yaWdodFwiKSksYz1lKF8oZixcInBhZGRpbmctYm90dG9tXCIpKSx1PWUoXyhmLFwicGFkZGluZy1sZWZ0XCIpKSxkLngtPXUsZC55LT1oLHAueC09bCxwLnktPWgsZy54LT1sLGcueS09YyxtLngtPXUsbS55LT1jKSksXCJudW1iZXJcIj09dHlwZW9mIGkmJihkLngtPWksZC55LT1pLHAueC09aSxwLnktPWksZy54LT1pLGcueS09aSxtLngtPWksbS55LT1pKSxJKG4sZCxwLGcsbSl9ZnVuY3Rpb24gSSh0LGUsbixpLHIpe3ZhciBvPUQodCxlLG4saSxyKSxzPW8udGwsYT1vLnRyLGg9by5icixsPW8uYmwsYz1uZXcgaHQuUGF0aCh7ZmlsbDpudWxsLHN0cm9rZTpudWxsfSk7cmV0dXJuIGMubW92ZVRvKHQubGVmdCx0LnRvcCtzLnkpLHMueCYmTShjLHQubGVmdCtzLngsdC50b3Arcy55LHtzdGFydEFuZ2xlOi0xODAsZW5kQW5nbGU6LTkwLHJhZGl1c1g6cy54LHJhZGl1c1k6cy55fSksYy5saW5lVG8odC5yaWdodC1hLngsdC50b3ApLGEueCYmTShjLHQucmlnaHQtYS54LHQudG9wK2EueSx7c3RhcnRBbmdsZTotOTAsZW5kQW5nbGU6MCxyYWRpdXNYOmEueCxyYWRpdXNZOmEueX0pLGMubGluZVRvKHQucmlnaHQsdC5ib3R0b20taC55KSxoLngmJk0oYyx0LnJpZ2h0LWgueCx0LmJvdHRvbS1oLnkse3N0YXJ0QW5nbGU6MCxlbmRBbmdsZTo5MCxyYWRpdXNYOmgueCxyYWRpdXNZOmgueX0pLGMubGluZVRvKHQubGVmdCtsLngsdC5ib3R0b20pLGwueCYmTShjLHQubGVmdCtsLngsdC5ib3R0b20tbC55LHtzdGFydEFuZ2xlOjkwLGVuZEFuZ2xlOjE4MCxyYWRpdXNYOmwueCxyYWRpdXNZOmwueX0pLGMuY2xvc2UoKX1mdW5jdGlvbiBGKHQsbil7dmFyIGk9ZSh0KStcIlwiO3N3aXRjaChuKXtjYXNlXCJkZWNpbWFsLWxlYWRpbmctemVyb1wiOnJldHVybiBpLmxlbmd0aDwyJiYoaT1cIjBcIitpKSxpO2Nhc2VcImxvd2VyLXJvbWFuXCI6cmV0dXJuIGZ0KHQpLnRvTG93ZXJDYXNlKCk7Y2FzZVwidXBwZXItcm9tYW5cIjpyZXR1cm4gZnQodCkudG9VcHBlckNhc2UoKTtjYXNlXCJsb3dlci1sYXRpblwiOmNhc2VcImxvd2VyLWFscGhhXCI6cmV0dXJuIG0odC0xKTtjYXNlXCJ1cHBlci1sYXRpblwiOmNhc2VcInVwcGVyLWFscGhhXCI6cmV0dXJuIG0odC0xKS50b1VwcGVyQ2FzZSgpO2RlZmF1bHQ6cmV0dXJuIGl9fWZ1bmN0aW9uIEcodCxlKXtmdW5jdGlvbiBuKHQsZSxuKXtyZXR1cm4gbj8obj1uLnJlcGxhY2UoL15cXHMqKFtcIiddKSguKilcXDFcXHMqJC8sXCIkMlwiKSxoKHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gRih0LGUpfSkuam9pbihuKSk6RihhKHQpfHwwLGUpfXZhciBpLHI9b3QoZSwvXlxccysvKSxvPVtdO3JldHVybiByLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHI7KGk9L15cXHMqKFtcIiddKSguKilcXDFcXHMqJC8uZXhlYyhlKSk/by5wdXNoKGlbMl0ucmVwbGFjZSgvXFxcXChbMC05YS1mXXs0fSkvZ2ksZnVuY3Rpb24odCxlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChlLDE2KSl9KSk6KGk9L15cXHMqY291bnRlclxcKCguKj8pXFwpXFxzKiQvLmV4ZWMoZSkpPyhyPW90KGlbMV0pLG8ucHVzaChuKHJbMF0sclsxXSkpKTooaT0vXlxccypjb3VudGVyc1xcKCguKj8pXFwpXFxzKiQvLmV4ZWMoZSkpPyhyPW90KGlbMV0pLG8ucHVzaChuKHJbMF0sclsyXSxyWzFdKSkpOm8ucHVzaCgoaT0vXlxccyphdHRyXFwoKC4qPylcXClcXHMqJC8uZXhlYyhlKSk/dC5nZXRBdHRyaWJ1dGUoaVsxXSl8fFwiXCI6ZSl9KSxvLmpvaW4oXCJcIil9ZnVuY3Rpb24gaih0KXt2YXIgZSxuO2lmKHQuY3NzVGV4dClyZXR1cm4gdC5jc3NUZXh0O2ZvcihlPVtdLG49MDtuPHQubGVuZ3RoOysrbillLnB1c2godFtuXStcIjogXCIrXyh0LHRbbl0pKTtyZXR1cm4gZS5qb2luKFwiO1xcblwiKX1mdW5jdGlvbiBIKHQsZSl7ZnVuY3Rpb24gbihlLG4pe3ZhciByLG89Yih0LGUpO28uY29udGVudCYmXCJub3JtYWxcIiE9by5jb250ZW50JiZcIm5vbmVcIiE9by5jb250ZW50JiZcIjBweFwiIT1vLndpZHRoJiYocj10Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChwdCksci5zdHlsZS5jc3NUZXh0PWoobyksci50ZXh0Q29udGVudD1HKHQsby5jb250ZW50KSx0Lmluc2VydEJlZm9yZShyLG4pLGkucHVzaChyKSl9dmFyIGkscjtyZXR1cm4gdC50YWdOYW1lPT1wdD92b2lkIHEodCxlKTooaT1bXSxuKFwiOmJlZm9yZVwiLHQuZmlyc3RDaGlsZCksbihcIjphZnRlclwiLG51bGwpLHI9dC5jbGFzc05hbWUsdC5jbGFzc05hbWUrPVwiIGtlbmRvLXBkZi1oaWRlLXBzZXVkby1lbGVtZW50c1wiLHEodCxlKSx0LmNsYXNzTmFtZT1yLHZvaWQgaS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QucmVtb3ZlQ2hpbGQoZSl9KSl9ZnVuY3Rpb24gcShpLHIpe2Z1bmN0aW9uIG8odCl7dmFyIGUsbixyLG8scyxhO2lmKC9edGQkL2kudGVzdChpLnRhZ05hbWUpJiYoZT1ndC50YWJsZSxlJiZcImNvbGxhcHNlXCI9PV8oZS5zdHlsZSxcImJvcmRlci1jb2xsYXBzZVwiKSkpe2lmKG49VChlLnN0eWxlLFwibGVmdFwiKS53aWR0aCxyPVQoZS5zdHlsZSxcInRvcFwiKS53aWR0aCwwPT09biYmMD09PXIpcmV0dXJuIHQ7aWYobz1lLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz1lLmVsZW1lbnQucm93c1swXS5jZWxsc1swXSxhPXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYS50b3A9PW8udG9wfHxhLmxlZnQ9PW8ubGVmdClyZXR1cm4gY3QuY2FsbCh0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue2xlZnQ6dC5sZWZ0K24sdG9wOnQudG9wK3IscmlnaHQ6dC5yaWdodCtuLGJvdHRvbTp0LmJvdHRvbStyLGhlaWdodDp0LmhlaWdodCx3aWR0aDp0LndpZHRofX0pfXJldHVybiB0fWZ1bmN0aW9uIHModCxlLGksbyxzLGEsaCxsKXtmdW5jdGlvbiBjKGUscixvKXt2YXIgcz1uLlBJLzIqZS8oZStpKSxhPXt4OnIueC1lLHk6ci55LWl9LGg9bmV3IGh0LlBhdGgoe2ZpbGw6e2NvbG9yOnR9LHN0cm9rZTpudWxsfSkubW92ZVRvKDAsMCk7UihoLG8pLE0oaCwwLHIueSx7c3RhcnRBbmdsZTotOTAsZW5kQW5nbGU6LU8ocykscmFkaXVzWDpyLngscmFkaXVzWTpyLnl9KSxhLng+MCYmYS55PjA/KGgubGluZVRvKGEueCpuLmNvcyhzKSxyLnktYS55Km4uc2luKHMpKSxNKGgsMCxyLnkse3N0YXJ0QW5nbGU6LU8ocyksZW5kQW5nbGU6LTkwLHJhZGl1c1g6YS54LHJhZGl1c1k6YS55LGFudGljbG9ja3dpc2U6ITB9KSk6YS54PjA/aC5saW5lVG8oYS54LGkpLmxpbmVUbygwLGkpOmgubGluZVRvKGEueCxpKS5saW5lVG8oYS54LDApLGYuYXBwZW5kKGguY2xvc2UoKSl9aWYoIShpPD0wKSl7dmFyIHUsZj1uZXcgaHQuR3JvdXA7UihmLGwpLHIuYXBwZW5kKGYpLEIoYSksQihoKSx1PW5ldyBodC5QYXRoKHtmaWxsOntjb2xvcjp0fSxzdHJva2U6bnVsbH0pLGYuYXBwZW5kKHUpLHUubW92ZVRvKGEueD9uLm1heChhLngsbyk6MCwwKS5saW5lVG8oZS0oaC54P24ubWF4KGgueCxzKTowKSwwKS5saW5lVG8oZS1uLm1heChoLngscyksaSkubGluZVRvKG4ubWF4KGEueCxvKSxpKS5jbG9zZSgpLGEueCYmYyhvLGEsWy0xLDAsMCwxLGEueCwwXSksaC54JiZjKHMsaCxbMSwwLDAsMSxlLWgueCwwXSl9fWZ1bmN0aW9uIGEoZSl7dmFyIG4sbyxzPW5ldyBodC5Hcm91cDtmb3IoeihzLEkoZSxxLFUsVyxZKSksci5hcHBlbmQocyksXCJBXCI9PWkudGFnTmFtZSYmaS5ocmVmJiYhL14jPyQvLnRlc3QodChpKS5hdHRyKFwiaHJlZlwiKSkmJihndC5fYXZvaWRMaW5rcyYmdChpKS5pcyhndC5fYXZvaWRMaW5rcyl8fChzLl9wZGZMaW5rPXt1cmw6aS5ocmVmLHRvcDplLnRvcCxyaWdodDplLnJpZ2h0LGJvdHRvbTplLmJvdHRvbSxsZWZ0OmUubGVmdH0pKSxaJiYobj1uZXcgaHQuUGF0aCh7ZmlsbDp7Y29sb3I6Wi50b0Nzc1JnYmEoKX0sc3Ryb2tlOm51bGx9KSxuLm1vdmVUbyhlLmxlZnQsZS50b3ApLmxpbmVUbyhlLnJpZ2h0LGUudG9wKS5saW5lVG8oZS5yaWdodCxlLmJvdHRvbSkubGluZVRvKGUubGVmdCxlLmJvdHRvbSkuY2xvc2UoKSxzLmFwcGVuZChuKSksbz11Lmxlbmd0aDstLW8+PTA7KWgocyxlLHVbb10sZFtvJWQubGVuZ3RoXSxwW28lcC5sZW5ndGhdLGdbbyVnLmxlbmd0aF0sdltvJXYubGVuZ3RoXSl9ZnVuY3Rpb24gaCh0LHIsbyxzLGEsaCxsKXtmdW5jdGlvbiBjKHQscixvLGMsdSl7ZnVuY3Rpb24gZigpe2Zvcig7eC5vcmlnaW4ueD5yLmxlZnQ7KXgub3JpZ2luLngtPW99ZnVuY3Rpb24gZCgpe2Zvcig7eC5vcmlnaW4ueT5yLnRvcDspeC5vcmlnaW4ueS09Y31mdW5jdGlvbiBwKCl7Zm9yKDt4Lm9yaWdpbi54PHIucmlnaHQ7KXUodCx4LmNsb25lKCkpLHgub3JpZ2luLngrPW99dmFyIG0sZyx2LHgseSx3PW8vYyxiPXI7aWYoXCJjb250ZW50LWJveFwiPT1oPyhiPVAoYixcImJvcmRlci0qLXdpZHRoXCIsaSksYj1QKGIsXCJwYWRkaW5nLSpcIixpKSk6XCJwYWRkaW5nLWJveFwiPT1oJiYoYj1QKGIsXCJib3JkZXItKi13aWR0aFwiLGkpKSwvXlxccyphdXRvKFxccythdXRvKT9cXHMqJC8udGVzdChsKXx8KFwiY29udGFpblwiPT1sPyhtPW4ubWluKGIud2lkdGgvbyxiLmhlaWdodC9jKSxvKj1tLGMqPW0pOlwiY292ZXJcIj09bD8obT1uLm1heChiLndpZHRoL28sYi5oZWlnaHQvYyksbyo9bSxjKj1tKTooZz1sLnNwbGl0KC9cXHMrL2cpLG89LyUkLy50ZXN0KGdbMF0pP2Iud2lkdGgqZShnWzBdKS8xMDA6ZShnWzBdKSxjPTE9PWcubGVuZ3RofHxcImF1dG9cIj09Z1sxXT9vL3c6LyUkLy50ZXN0KGdbMV0pP2IuaGVpZ2h0KmUoZ1sxXSkvMTAwOmUoZ1sxXSkpKSx2PShhK1wiXCIpLnNwbGl0KC9cXHMrLyksMT09di5sZW5ndGgmJih2WzFdPVwiNTAlXCIpLHZbMF09LyUkLy50ZXN0KHZbMF0pP2UodlswXSkvMTAwKihiLndpZHRoLW8pOmUodlswXSksdlsxXT0vJSQvLnRlc3QodlsxXSk/ZSh2WzFdKS8xMDAqKGIuaGVpZ2h0LWMpOmUodlsxXSkseD1uZXcgbHQuUmVjdChbYi5sZWZ0K3ZbMF0sYi50b3ArdlsxXV0sW28sY10pLFwibm8tcmVwZWF0XCI9PXMpdSh0LHgpO2Vsc2UgaWYoXCJyZXBlYXQteFwiPT1zKWYoKSxwKCk7ZWxzZSBpZihcInJlcGVhdC15XCI9PXMpZm9yKGQoKTt4Lm9yaWdpbi55PHIuYm90dG9tOyl1KHQseC5jbG9uZSgpKSx4Lm9yaWdpbi55Kz1jO2Vsc2UgaWYoXCJyZXBlYXRcIj09cylmb3IoZigpLGQoKSx5PXgub3JpZ2luLmNsb25lKCk7eC5vcmlnaW4ueTxyLmJvdHRvbTspeC5vcmlnaW4ueD15LngscCgpLHgub3JpZ2luLnkrPWN9aWYobyYmXCJub25lXCIhPW8paWYoXCJ1cmxcIj09by50eXBlKXtpZigvXnVybFxcKFxcXCJkYXRhOmltYWdlXFwvc3ZnL2kudGVzdChvLnVybCkpcmV0dXJuO3ZhciB1PW10W28udXJsXTt1JiZ1LndpZHRoPjAmJnUuaGVpZ2h0PjAmJmModCxyLHUud2lkdGgsdS5oZWlnaHQsZnVuY3Rpb24odCxlKXt0LmFwcGVuZChuZXcgaHQuSW1hZ2Uoby51cmwsZSkpfSl9ZWxzZXtpZihcImxpbmVhclwiIT1vLnR5cGUpcmV0dXJuO2ModCxyLHIud2lkdGgsci5oZWlnaHQsJChvKSl9fWZ1bmN0aW9uIGwoKXtmdW5jdGlvbiB0KHQpe2soaSxmdW5jdGlvbigpe2kuc3R5bGUucG9zaXRpb249XCJyZWxhdGl2ZVwiO3ZhciBlPWkub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KHB0KTtlLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixlLnN0eWxlLmJveFNpemluZz1cImJvcmRlci1ib3hcIixcIm91dHNpZGVcIj09bj8oZS5zdHlsZS53aWR0aD1cIjZlbVwiLGUuc3R5bGUubGVmdD1cIi02LjhlbVwiLGUuc3R5bGUudGV4dEFsaWduPVwicmlnaHRcIik6ZS5zdHlsZS5sZWZ0PVwiMHB4XCIsdChlKSxpLmluc2VydEJlZm9yZShlLGkuZmlyc3RDaGlsZCksZXQoZSxyKSxpLnJlbW92ZUNoaWxkKGUpfSl9ZnVuY3Rpb24gZSh0KXt2YXIgZSxuPWkucGFyZW50Tm9kZS5jaGlsZHJlbixyPWkuZ2V0QXR0cmlidXRlKFwia2VuZG8tc3BsaXQtaW5kZXhcIik7aWYobnVsbCE9cilyZXR1cm4gdCgwfHIsbi5sZW5ndGgpO2ZvcihlPTA7ZTxuLmxlbmd0aDsrK2UpaWYobltlXT09PWkpcmV0dXJuIHQoZSxuLmxlbmd0aCl9dmFyIG4sbz1fKE4sXCJsaXN0LXN0eWxlLXR5cGVcIik7aWYoXCJub25lXCIhPW8pc3dpdGNoKG49XyhOLFwibGlzdC1zdHlsZS1wb3NpdGlvblwiKSxvKXtjYXNlXCJjaXJjbGVcIjpjYXNlXCJkaXNjXCI6Y2FzZVwic3F1YXJlXCI6dChmdW5jdGlvbih0KXt0LnN0eWxlLmZvbnRTaXplPVwiNjAlXCIsdC5zdHlsZS5saW5lSGVpZ2h0PVwiMjAwJVwiLHQuc3R5bGUucGFkZGluZ1JpZ2h0PVwiMC41ZW1cIix0LnN0eWxlLmZvbnRGYW1pbHk9XCJEZWphVnUgU2VyaWZcIix0LmlubmVySFRNTD17ZGlzYzpcIuKXj1wiLGNpcmNsZTpcIuKXr1wiLHNxdWFyZTpcIuKWoFwifVtvXX0pO2JyZWFrO2Nhc2VcImRlY2ltYWxcIjpjYXNlXCJkZWNpbWFsLWxlYWRpbmctemVyb1wiOnQoZnVuY3Rpb24odCl7ZShmdW5jdGlvbihlKXsrK2UsXCJkZWNpbWFsLWxlYWRpbmctemVyb1wiPT1vJiYoZStcIlwiKS5sZW5ndGg8MiYmKGU9XCIwXCIrZSksdC5pbm5lckhUTUw9ZStcIi5cIn0pfSk7YnJlYWs7Y2FzZVwibG93ZXItcm9tYW5cIjpjYXNlXCJ1cHBlci1yb21hblwiOnQoZnVuY3Rpb24odCl7ZShmdW5jdGlvbihlKXtlPWZ0KGUrMSksXCJ1cHBlci1yb21hblwiPT1vJiYoZT1lLnRvVXBwZXJDYXNlKCkpLHQuaW5uZXJIVE1MPWUrXCIuXCJ9KX0pO2JyZWFrO2Nhc2VcImxvd2VyLWxhdGluXCI6Y2FzZVwibG93ZXItYWxwaGFcIjpjYXNlXCJ1cHBlci1sYXRpblwiOmNhc2VcInVwcGVyLWFscGhhXCI6dChmdW5jdGlvbih0KXtlKGZ1bmN0aW9uKGUpe2U9bShlKSwvXnVwcGVyL2kudGVzdChvKSYmKGU9ZS50b1VwcGVyQ2FzZSgpKSx0LmlubmVySFRNTD1lK1wiLlwifSl9KX19ZnVuY3Rpb24gYyh0LGUsbil7ZnVuY3Rpb24gbyh0KXtyZXR1cm57eDp0LnkseTp0Lnh9fXZhciBoLGwsYyx1LGYsZCxwLG07aWYoMCE9PXQud2lkdGgmJjAhPT10LmhlaWdodCYmKGEodCksaD1ILndpZHRoPjAmJihlJiZcImx0clwiPT1RfHxuJiZcInJ0bFwiPT1RKSxsPUcud2lkdGg+MCYmKG4mJlwibHRyXCI9PVF8fGUmJlwicnRsXCI9PVEpLDAhPT1GLndpZHRofHwwIT09SC53aWR0aHx8MCE9PUcud2lkdGh8fDAhPT1qLndpZHRoKSl7aWYoRi5jb2xvcj09Ry5jb2xvciYmRi5jb2xvcj09ai5jb2xvciYmRi5jb2xvcj09SC5jb2xvciYmRi53aWR0aD09Ry53aWR0aCYmRi53aWR0aD09ai53aWR0aCYmRi53aWR0aD09SC53aWR0aCYmaCYmbClyZXR1cm4gdD1QKHQsRi53aWR0aC8yKSxjPUwoaSx0LEYud2lkdGgvMiksYy5vcHRpb25zLnN0cm9rZT17Y29sb3I6Ri5jb2xvcix3aWR0aDpGLndpZHRofSx2b2lkIHIuYXBwZW5kKGMpO2lmKDA9PT1xLngmJjA9PT1VLngmJjA9PT1XLngmJjA9PT1ZLngmJkYud2lkdGg8MiYmSC53aWR0aDwyJiZHLndpZHRoPDImJmoud2lkdGg8MilyZXR1cm4gRi53aWR0aD4wJiZyLmFwcGVuZChuZXcgaHQuUGF0aCh7c3Ryb2tlOnt3aWR0aDpGLndpZHRoLGNvbG9yOkYuY29sb3J9fSkubW92ZVRvKHQubGVmdCx0LnRvcCtGLndpZHRoLzIpLmxpbmVUbyh0LnJpZ2h0LHQudG9wK0Yud2lkdGgvMikpLGoud2lkdGg+MCYmci5hcHBlbmQobmV3IGh0LlBhdGgoe3N0cm9rZTp7d2lkdGg6ai53aWR0aCxjb2xvcjpqLmNvbG9yfX0pLm1vdmVUbyh0LmxlZnQsdC5ib3R0b20tai53aWR0aC8yKS5saW5lVG8odC5yaWdodCx0LmJvdHRvbS1qLndpZHRoLzIpKSxoJiZyLmFwcGVuZChuZXcgaHQuUGF0aCh7c3Ryb2tlOnt3aWR0aDpILndpZHRoLGNvbG9yOkguY29sb3J9fSkubW92ZVRvKHQubGVmdCtILndpZHRoLzIsdC50b3ApLmxpbmVUbyh0LmxlZnQrSC53aWR0aC8yLHQuYm90dG9tKSksdm9pZChsJiZyLmFwcGVuZChuZXcgaHQuUGF0aCh7c3Ryb2tlOnt3aWR0aDpHLndpZHRoLGNvbG9yOkcuY29sb3J9fSkubW92ZVRvKHQucmlnaHQtRy53aWR0aC8yLHQudG9wKS5saW5lVG8odC5yaWdodC1HLndpZHRoLzIsdC5ib3R0b20pKSk7dT1EKHQscSxVLFcsWSksZj11LnRsLGQ9dS50cixwPXUuYnIsbT11LmJsLHMoRi5jb2xvcix0LndpZHRoLEYud2lkdGgsSC53aWR0aCxHLndpZHRoLGYsZCxbMSwwLDAsMSx0LmxlZnQsdC50b3BdKSxzKGouY29sb3IsdC53aWR0aCxqLndpZHRoLEcud2lkdGgsSC53aWR0aCxwLG0sWy0xLDAsMCwtMSx0LnJpZ2h0LHQuYm90dG9tXSkscyhILmNvbG9yLHQuaGVpZ2h0LEgud2lkdGgsai53aWR0aCxGLndpZHRoLG8obSksbyhmKSxbMCwtMSwxLDAsdC5sZWZ0LHQuYm90dG9tXSkscyhHLmNvbG9yLHQuaGVpZ2h0LEcud2lkdGgsRi53aWR0aCxqLndpZHRoLG8oZCksbyhwKSxbMCwxLC0xLDAsdC5yaWdodCx0LnRvcF0pfX12YXIgdSxkLHAsZyx2LHksdyxDLEUsQSxOPWIoaSksRj1UKE4sXCJ0b3BcIiksRz1UKE4sXCJyaWdodFwiKSxqPVQoTixcImJvdHRvbVwiKSxIPVQoTixcImxlZnRcIikscT1TKE4sXCJ0b3AtbGVmdFwiKSxVPVMoTixcInRvcC1yaWdodFwiKSxZPVMoTixcImJvdHRvbS1sZWZ0XCIpLFc9UyhOLFwiYm90dG9tLXJpZ2h0XCIpLFE9XyhOLFwiZGlyZWN0aW9uXCIpLFo9XyhOLFwiYmFja2dyb3VuZC1jb2xvclwiKTtpZihaPWYoWiksdT1ydChfKE4sXCJiYWNrZ3JvdW5kLWltYWdlXCIpKSxkPW90KF8oTixcImJhY2tncm91bmQtcmVwZWF0XCIpKSxwPW90KF8oTixcImJhY2tncm91bmQtcG9zaXRpb25cIikpLGc9b3QoXyhOLFwiYmFja2dyb3VuZC1vcmlnaW5cIikpLHY9b3QoXyhOLFwiYmFja2dyb3VuZC1zaXplXCIpKSx1dC5tc2llJiZ1dC52ZXJzaW9uPDEwJiYocD1vdChpLmN1cnJlbnRTdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24pKSx5PVAoaS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcImJvcmRlci0qLXdpZHRoXCIsaSksZnVuY3Rpb24oKXt2YXIgdCxuLGksbyxzLGEsaCxsPV8oTixcImNsaXBcIiksYz0vXlxccypyZWN0XFwoKC4qKVxcKVxccyokLy5leGVjKGwpO2MmJih0PWNbMV0uc3BsaXQoL1sgLF0rL2cpLG49XCJhdXRvXCI9PXRbMF0/eS50b3A6ZSh0WzBdKSt5LnRvcCxpPVwiYXV0b1wiPT10WzFdP3kucmlnaHQ6ZSh0WzFdKSt5LmxlZnQsbz1cImF1dG9cIj09dFsyXT95LmJvdHRvbTplKHRbMl0pK3kudG9wLHM9XCJhdXRvXCI9PXRbM10/eS5sZWZ0OmUodFszXSkreS5sZWZ0LGE9bmV3IGh0Lkdyb3VwLGg9KG5ldyBodC5QYXRoKS5tb3ZlVG8ocyxuKS5saW5lVG8oaSxuKS5saW5lVG8oaSxvKS5saW5lVG8ocyxvKS5jbG9zZSgpLHooYSxoKSxyLmFwcGVuZChhKSxyPWEseChoKSl9KCksQT1fKE4sXCJkaXNwbGF5XCIpLFwidGFibGUtcm93XCI9PUEpZm9yKHc9W10sQz0wLEU9aS5jaGlsZHJlbjtDPEUubGVuZ3RoOysrQyl3LnB1c2goRVtDXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7ZWxzZSB3PWkuZ2V0Q2xpZW50UmVjdHMoKSwxPT13Lmxlbmd0aCYmKHc9W2kuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCldKTtmb3Iodz1vKHcpLEM9MDtDPHcubGVuZ3RoOysrQyljKHdbQ10sMD09PUMsQz09dy5sZW5ndGgtMSk7cmV0dXJuIHcubGVuZ3RoPjAmJlwibGlzdC1pdGVtXCI9PUEmJmwod1swXSksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIHQ9TChpLHksXCJwYWRkaW5nXCIpLGU9bmV3IGh0Lkdyb3VwO3ooZSx0KSxyLmFwcGVuZChlKSxyPWUseCh0KX1WKGkpP3QoKTovXihoaWRkZW58YXV0b3xzY3JvbGwpLy50ZXN0KF8oTixcIm92ZXJmbG93XCIpKT90KCk6L14oaGlkZGVufGF1dG98c2Nyb2xsKS8udGVzdChfKE4sXCJvdmVyZmxvdy14XCIpKT90KCk6L14oaGlkZGVufGF1dG98c2Nyb2xsKS8udGVzdChfKE4sXCJvdmVyZmxvdy15XCIpKSYmdCgpfSgpLFgoaSxyKXx8SihpLHIpLHJ9ZnVuY3Rpb24gJCh0KXtyZXR1cm4gZnVuY3Rpb24oaSxyKXt2YXIgbyxzLGEsaCxsLGMsdSxmLGQscCxtLGcsdix4PXIud2lkdGgoKSx5PXIuaGVpZ2h0KCk7c3dpdGNoKHQudHlwZSl7Y2FzZVwibGluZWFyXCI6c3dpdGNoKG89bnVsbCE9dC5hbmdsZT90LmFuZ2xlOm4uUEksdC50byl7Y2FzZVwidG9wXCI6bz0wO2JyZWFrO2Nhc2VcImxlZnRcIjpvPS1uLlBJLzI7YnJlYWs7Y2FzZVwiYm90dG9tXCI6bz1uLlBJO2JyZWFrO2Nhc2VcInJpZ2h0XCI6bz1uLlBJLzI7YnJlYWs7Y2FzZVwidG9wIGxlZnRcIjpjYXNlXCJsZWZ0IHRvcFwiOm89LW4uYXRhbjIoeSx4KTticmVhaztjYXNlXCJ0b3AgcmlnaHRcIjpjYXNlXCJyaWdodCB0b3BcIjpvPW4uYXRhbjIoeSx4KTticmVhaztjYXNlXCJib3R0b20gbGVmdFwiOmNhc2VcImxlZnQgYm90dG9tXCI6bz1uLlBJK24uYXRhbjIoeSx4KTticmVhaztjYXNlXCJib3R0b20gcmlnaHRcIjpjYXNlXCJyaWdodCBib3R0b21cIjpvPW4uUEktbi5hdGFuMih5LHgpfXQucmV2ZXJzZSYmKG8tPW4uUEkpLG8lPTIqbi5QSSxvPDAmJihvKz0yKm4uUEkpLHM9bi5hYnMoeCpuLnNpbihvKSkrbi5hYnMoeSpuLmNvcyhvKSksYT1uLmF0YW4oeCpuLnRhbihvKS95KSxoPW4uc2luKGEpLGw9bi5jb3MoYSksYz1uLmFicyhoKStuLmFicyhsKSx1PWMvMipoLGY9Yy8yKmwsbz5uLlBJLzImJm88PTMqbi5QSS8yJiYodT0tdSxmPS1mKSxkPVtdLHA9MCxtPXQuc3RvcHMubWFwKGZ1bmN0aW9uKG4saSl7dmFyIHIsbz1uLnBlcmNlbnQ7cmV0dXJuIG8/bz1lKG8pLzEwMDpuLmxlbmd0aD9vPWUobi5sZW5ndGgpL3M6MD09PWk/bz0wOmk9PXQuc3RvcHMubGVuZ3RoLTEmJihvPTEpLHI9e2NvbG9yOm4uY29sb3IudG9Dc3NSZ2JhKCksb2Zmc2V0Om99LG51bGwhPW8/KHA9byxkLmZvckVhY2goZnVuY3Rpb24odCxlKXt2YXIgbj10LnN0b3A7bi5vZmZzZXQ9dC5sZWZ0KyhwLXQubGVmdCkqKGUrMSkvKGQubGVuZ3RoKzEpfSksZD1bXSk6ZC5wdXNoKHtsZWZ0OnAsc3RvcDpyfSkscn0pLGc9Wy41LXUsLjUrZl0sdj1bLjUrdSwuNS1mXSxpLmFwcGVuZChodC5QYXRoLmZyb21SZWN0KHIpLnN0cm9rZShudWxsKS5maWxsKG5ldyBodC5MaW5lYXJHcmFkaWVudCh7c3RhcnQ6ZyxlbmQ6dixzdG9wczptLHVzZXJTcGFjZTohMX0pKSk7YnJlYWs7Y2FzZVwicmFkaWFsXCI6d2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmxvZyYmd2luZG93LmNvbnNvbGUubG9nKFwiUmFkaWFsIGdyYWRpZW50cyBhcmUgbm90IHlldCBzdXBwb3J0ZWQgaW4gSFRNTCByZW5kZXJlclwiKX19fWZ1bmN0aW9uIFgoZSxuKXt2YXIgaSxyLG8scztpZihlLmdldEF0dHJpYnV0ZShrZW5kby5hdHRyKFwicm9sZVwiKSkmJihpPWtlbmRvLndpZGdldEluc3RhbmNlKHQoZSkpLGkmJihpLmV4cG9ydERPTVZpc3VhbHx8aS5leHBvcnRWaXN1YWwpKSlyZXR1cm4hIShyPWkuZXhwb3J0RE9NVmlzdWFsP2kuZXhwb3J0RE9NVmlzdWFsKCk6aS5leHBvcnRWaXN1YWwoKSkmJihvPW5ldyBodC5Hcm91cCxvLmNoaWxkcmVuLnB1c2gocikscz1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG8udHJhbnNmb3JtKGx0LnRyYW5zZm9ybSgpLnRyYW5zbGF0ZShzLmxlZnQscy50b3ApKSxuLmFwcGVuZChvKSwhMCl9ZnVuY3Rpb24gVSh0LGUsbil7dmFyIGk9RSh0KSxyPW5ldyBsdC5SZWN0KFtpLmxlZnQsaS50b3BdLFtpLndpZHRoLGkuaGVpZ2h0XSksbz1uZXcgaHQuSW1hZ2UoZSxyKTt6KG8sTCh0LGksXCJjb250ZW50XCIpKSxuLmFwcGVuZChvKX1mdW5jdGlvbiBZKHQsbil7dmFyIGk9Yih0KSxyPWIobiksbz1lKF8oaSxcInotaW5kZXhcIikpLHM9ZShfKHIsXCJ6LWluZGV4XCIpKSxhPV8oaSxcInBvc2l0aW9uXCIpLGg9XyhyLFwicG9zaXRpb25cIik7cmV0dXJuIGlzTmFOKG8pJiZpc05hTihzKT8vc3RhdGljfGFic29sdXRlLy50ZXN0KGEpJiYvc3RhdGljfGFic29sdXRlLy50ZXN0KGgpPzA6XCJzdGF0aWNcIj09YT8tMTpcInN0YXRpY1wiPT1oPzE6MDppc05hTihvKT8wPT09cz8wOnM+MD8tMToxOmlzTmFOKHMpPzA9PT1vPzA6bz4wPzE6LTE6ZShvKS1lKHMpfWZ1bmN0aW9uIFYodCl7cmV0dXJuL14oPzp0ZXh0YXJlYXxzZWxlY3R8aW5wdXQpJC9pLnRlc3QodC50YWdOYW1lKX1mdW5jdGlvbiBXKHQpe3JldHVybiB0LnNlbGVjdGVkT3B0aW9ucyYmdC5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoPjA/dC5zZWxlY3RlZE9wdGlvbnNbMF06dC5vcHRpb25zW3Quc2VsZWN0ZWRJbmRleF19ZnVuY3Rpb24gUSh0LGUpe3ZhciBpPWIodCkscj1fKGksXCJjb2xvclwiKSxvPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XCJjaGVja2JveFwiPT10LnR5cGU/KGUuYXBwZW5kKGh0LlBhdGguZnJvbVJlY3QobmV3IGx0LlJlY3QoW28ubGVmdCsxLG8udG9wKzFdLFtvLndpZHRoLTIsby5oZWlnaHQtMl0pKS5zdHJva2UociwxKSksdC5jaGVja2VkJiZlLmFwcGVuZCgobmV3IGh0LlBhdGgpLnN0cm9rZShyLDEuMikubW92ZVRvKG8ubGVmdCsuMjIqby53aWR0aCxvLnRvcCsuNTUqby5oZWlnaHQpLmxpbmVUbyhvLmxlZnQrLjQ1Km8ud2lkdGgsby50b3ArLjc1Km8uaGVpZ2h0KS5saW5lVG8oby5sZWZ0Ky43OCpvLndpZHRoLG8udG9wKy4yMipvLndpZHRoKSkpOihlLmFwcGVuZChuZXcgaHQuQ2lyY2xlKG5ldyBsdC5DaXJjbGUoWyhvLmxlZnQrby5yaWdodCkvMiwoby50b3Arby5ib3R0b20pLzJdLG4ubWluKG8ud2lkdGgtMixvLmhlaWdodC0yKS8yKSkuc3Ryb2tlKHIsMSkpLHQuY2hlY2tlZCYmZS5hcHBlbmQobmV3IGh0LkNpcmNsZShuZXcgbHQuQ2lyY2xlKFsoby5sZWZ0K28ucmlnaHQpLzIsKG8udG9wK28uYm90dG9tKS8yXSxuLm1pbihvLndpZHRoLTgsby5oZWlnaHQtOCkvMikpLmZpbGwocikuc3Ryb2tlKG51bGwpKSl9ZnVuY3Rpb24gWih0LGUpe3ZhciBuLGkscixvLHMsYT10LnRhZ05hbWUudG9Mb3dlckNhc2UoKTtpZihcImlucHV0XCI9PWEmJihcImNoZWNrYm94XCI9PXQudHlwZXx8XCJyYWRpb1wiPT10LnR5cGUpKXJldHVybiBRKHQsZSk7aWYobj10LnBhcmVudE5vZGUsaT10Lm93bmVyRG9jdW1lbnQscj1pLmNyZWF0ZUVsZW1lbnQocHQpLHIuc3R5bGUuY3NzVGV4dD1qKGIodCkpLFwiaW5wdXRcIj09YSYmKHIuc3R5bGUud2hpdGVTcGFjZT1cInByZVwiKSxcInNlbGVjdFwiIT1hJiZcInRleHRhcmVhXCIhPWF8fChyLnN0eWxlLm92ZXJmbG93PVwiYXV0b1wiKSxcInNlbGVjdFwiPT1hKWlmKHQubXVsdGlwbGUpZm9yKHM9MDtzPHQub3B0aW9ucy5sZW5ndGg7KytzKW89aS5jcmVhdGVFbGVtZW50KHB0KSxvLnN0eWxlLmNzc1RleHQ9aihiKHQub3B0aW9uc1tzXSkpLG8uc3R5bGUuZGlzcGxheT1cImJsb2NrXCIsby50ZXh0Q29udGVudD10Lm9wdGlvbnNbc10udGV4dENvbnRlbnQsci5hcHBlbmRDaGlsZChvKTtlbHNlIG89Vyh0KSxvJiYoci50ZXh0Q29udGVudD1vLnRleHRDb250ZW50KTtlbHNlIHIudGV4dENvbnRlbnQ9dC52YWx1ZTtuLmluc2VydEJlZm9yZShyLHQpLHIuc2Nyb2xsTGVmdD10LnNjcm9sbExlZnQsci5zY3JvbGxUb3A9dC5zY3JvbGxUb3AsdC5zdHlsZS5kaXNwbGF5PVwibm9uZVwiLEoocixlKSx0LnN0eWxlLmRpc3BsYXk9XCJcIixuLnJlbW92ZUNoaWxkKHIpfWZ1bmN0aW9uIEoodCxlKXt2YXIgbixpLHIsbyxzLGEsaCxsLGM7c3dpdGNoKGd0Ll9zdGFja2luZ0NvbnRleHQuZWxlbWVudD09PXQmJihndC5fc3RhY2tpbmdDb250ZXh0Lmdyb3VwPWUpLHQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKXtjYXNlXCJpbWdcIjpVKHQsdC5zcmMsZSk7YnJlYWs7Y2FzZVwiY2FudmFzXCI6dHJ5e1UodCx0LnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKSxlKX1jYXRjaCh1KXt9XG4gICAgYnJlYWs7Y2FzZVwidGV4dGFyZWFcIjpjYXNlXCJpbnB1dFwiOmNhc2VcInNlbGVjdFwiOloodCxlKTticmVhaztkZWZhdWx0OmZvcihuPVtdLGk9W10scj1bXSxvPVtdLHM9dC5maXJzdENoaWxkO3M7cz1zLm5leHRTaWJsaW5nKXN3aXRjaChzLm5vZGVUeXBlKXtjYXNlIDM6L1xcUy8udGVzdChzLmRhdGEpJiZLKHQscyxlKTticmVhaztjYXNlIDE6YT1iKHMpLGg9XyhhLFwiZGlzcGxheVwiKSxsPV8oYSxcImZsb2F0XCIpLGM9XyhhLFwicG9zaXRpb25cIiksXCJzdGF0aWNcIiE9Yz9vLnB1c2gocyk6XCJpbmxpbmVcIiE9aD9cIm5vbmVcIiE9bD9pLnB1c2gocyk6bi5wdXNoKHMpOnIucHVzaChzKX1kdChuLFkpLmZvckVhY2goZnVuY3Rpb24odCl7ZXQodCxlKX0pLGR0KGksWSkuZm9yRWFjaChmdW5jdGlvbih0KXtldCh0LGUpfSksZHQocixZKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2V0KHQsZSl9KSxkdChvLFkpLmZvckVhY2goZnVuY3Rpb24odCl7ZXQodCxlKX0pfX1mdW5jdGlvbiBLKHQsaSxyKXtmdW5jdGlvbiBvKHQpe3ZhciBlLGkscixvO2lmKHV0Lm1zaWV8fHV0LmNocm9tZSl7Zm9yKGU9dC5nZXRDbGllbnRSZWN0cygpLGk9e3RvcDorKDEvMCkscmlnaHQ6LSgxLzApLGJvdHRvbTotKDEvMCksbGVmdDorKDEvMCl9LHI9MDtyPGUubGVuZ3RoOysrcilvPWVbcl0sby53aWR0aDw9MXx8by5ib3R0b209PT1FfHwoaS5sZWZ0PW4ubWluKG8ubGVmdCxpLmxlZnQpLGkudG9wPW4ubWluKG8udG9wLGkudG9wKSxpLnJpZ2h0PW4ubWF4KG8ucmlnaHQsaS5yaWdodCksaS5ib3R0b209bi5tYXgoby5ib3R0b20saS5ib3R0b20pKTtyZXR1cm4gaS53aWR0aD1pLnJpZ2h0LWkubGVmdCxpLmhlaWdodD1pLmJvdHRvbS1pLnRvcCxpfXJldHVybiB0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWZ1bmN0aW9uIHMoKXt2YXIgdCxlLHIscyxoLGwsZCxwPXUsbT1jLnN1YnN0cih1KS5zZWFyY2goL1xcUy8pO2lmKHUrPW0sbTwwfHx1Pj1mKXJldHVybiEwO2lmKHYuc2V0U3RhcnQoaSx1KSx2LnNldEVuZChpLHUrMSksdD1vKHYpLGU9ITEsdyYmKG09Yy5zdWJzdHIodSkuc2VhcmNoKC9cXHMvKSxtPj0wJiYodi5zZXRFbmQoaSx1K20pLHI9byh2KSxyLmJvdHRvbT09dC5ib3R0b20mJih0PXIsZT0hMCx1Kz1tKSkpLCFlKXtpZihtPWZ1bmN0aW9uIGcoZSxuLHIpe3Yuc2V0RW5kKGksbik7dmFyIHM9byh2KTtyZXR1cm4gcy5ib3R0b20hPXQuYm90dG9tJiZlPG4/ZyhlLGUrbj4+MSxuKTpzLnJpZ2h0IT10LnJpZ2h0Pyh0PXMsbjxyP2cobixuK3I+PjEscik6bik6bn0odSxuLm1pbihmLHUrUyksZiksbT09dSlyZXR1cm4hMDtpZih1PW0sbT0oXCJcIit2KS5zZWFyY2goL1xccyskLyksMD09PW0pcmV0dXJuO20+MCYmKHYuc2V0RW5kKGksdi5zdGFydE9mZnNldCttKSx0PW8odikpfWlmKHV0Lm1zaWUmJih0PXYuZ2V0Q2xpZW50UmVjdHMoKVswXSkscz1cIlwiK3YsL14oPzpwcmV8cHJlLXdyYXApJC9pLnRlc3QoQykpe2lmKC9cXHQvLnRlc3Qocykpe2ZvcihoPTAsbT1wO208di5zdGFydE9mZnNldDsrK20pbD1jLmNoYXJDb2RlQXQobSksOT09bD9oKz04LWglODoxMD09bHx8MTM9PWw/aD0wOmgrKztmb3IoOyhtPXMuc2VhcmNoKFwiXFx0XCIpKT49MDspZD1cIiAgICAgICAgXCIuc3Vic3RyKDAsOC0oaCttKSU4KSxzPXMuc3Vic3RyKDAsbSkrZCtzLnN1YnN0cihtKzEpfX1lbHNlIHM9cy5yZXBsYWNlKC9cXHMrL2csXCIgXCIpO2V8fChFPXQuYm90dG9tKSxhKHMsdCl9ZnVuY3Rpb24gYSh0LGUpe3ZhciBuLGksbzt1dC5tc2llJiYhaXNOYU4ocCkmJihuPWF0KG0pLGk9KGUudG9wK2UuYm90dG9tLW4pLzIsZT17dG9wOmkscmlnaHQ6ZS5yaWdodCxib3R0b206aStuLGxlZnQ6ZS5sZWZ0LGhlaWdodDpuLHdpZHRoOmUucmlnaHQtZS5sZWZ0fSksbz1uZXcgaXQodCxuZXcgbHQuUmVjdChbZS5sZWZ0LGUudG9wXSxbZS53aWR0aCxlLmhlaWdodF0pLHtmb250Om0sZmlsbDp7Y29sb3I6Z319KSxyLmFwcGVuZChvKSxoKGUpfWZ1bmN0aW9uIGgodCl7ZnVuY3Rpb24gZShlLG4pe3ZhciBpLG87ZSYmKGk9ZC8xMixvPW5ldyBodC5QYXRoKHtzdHJva2U6e3dpZHRoOmksY29sb3I6ZX19KSxuLT1pLG8ubW92ZVRvKHQubGVmdCxuKS5saW5lVG8odC5yaWdodCxuKSxyLmFwcGVuZChvKSl9ZShndC51bmRlcmxpbmUsdC5ib3R0b20pLGUoZ3RbXCJsaW5lLXRocm91Z2hcIl0sdC5ib3R0b20tdC5oZWlnaHQvMi43KSxlKGd0Lm92ZXJsaW5lLHQudG9wKX12YXIgbCxjLHUsZixkLHAsbSxnLHYseCx3LEMsVCxrLFMsRTtpZigheSgpJiYobD1iKHQpLCEoZShfKGwsXCJ0ZXh0LWluZGVudFwiKSk8LTUwMCkmJihjPWkuZGF0YSx1PTAsZj1jLnNlYXJjaCgvXFxTXFxzKiQvKSsxLGYmJihkPV8obCxcImZvbnQtc2l6ZVwiKSxwPV8obCxcImxpbmUtaGVpZ2h0XCIpLG09W18obCxcImZvbnQtc3R5bGVcIiksXyhsLFwiZm9udC12YXJpYW50XCIpLF8obCxcImZvbnQtd2VpZ2h0XCIpLGQsXyhsLFwiZm9udC1mYW1pbHlcIildLmpvaW4oXCIgXCIpLGQ9ZShkKSxwPWUocCksMCE9PWQpKSkpe2ZvcihnPV8obCxcImNvbG9yXCIpLHY9dC5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCkseD1fKGwsXCJ0ZXh0LWFsaWduXCIpLHc9XCJqdXN0aWZ5XCI9PXgsQz1fKGwsXCJ3aGl0ZS1zcGFjZVwiKSx1dC5tc2llJiYoVD1sLnRleHRPdmVyZmxvdyxcImVsbGlwc2lzXCI9PVQmJihrPXQuc3R5bGUudGV4dE92ZXJmbG93LHQuc3R5bGUudGV4dE92ZXJmbG93PVwiY2xpcFwiKSksUz10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoL2QqNSwwPT09UyYmKFM9NTAwKSxFPW51bGw7IXMoKTspO3V0Lm1zaWUmJlwiZWxsaXBzaXNcIj09VCYmKHQuc3R5bGUudGV4dE92ZXJmbG93PWspfX1mdW5jdGlvbiB0dCh0LG4saSl7dmFyIHIsbyxzLGEsaCxsO2ZvcihcImF1dG9cIiE9aT8ocj1ndC5fc3RhY2tpbmdDb250ZXh0Lmdyb3VwLGk9ZShpKSk6KHI9bixpPTApLG89ci5jaGlsZHJlbixzPTA7czxvLmxlbmd0aCYmIShudWxsIT1vW3NdLl9kb21fekluZGV4JiZvW3NdLl9kb21fekluZGV4PmkpOysrcyk7cmV0dXJuIGE9bmV3IGh0Lkdyb3VwLHIuaW5zZXJ0QXQoYSxzKSxhLl9kb21fekluZGV4PWksciE9PW4mJmd0Ll9jbGlwYm94JiYoaD1ndC5fbWF0cml4LmludmVydCgpLGw9Z3QuX2NsaXBib3gudHJhbnNmb3JtQ29weShoKSx6KGEsaHQuUGF0aC5mcm9tUmVjdChsKSkpLGF9ZnVuY3Rpb24gZXQodCxuKXt2YXIgaSxyLG8scyxhLGgsZixkPWIodCkscD1fKGQsXCJjb3VudGVyLXJlc2V0XCIpO3AmJnUob3QocCwvXlxccysvKSxjLDApLGk9XyhkLFwiY291bnRlci1pbmNyZW1lbnRcIiksaSYmdShvdChpLC9eXFxzKy8pLGwsMSksL14oc3R5bGV8c2NyaXB0fGxpbmt8bWV0YXxpZnJhbWV8c3ZnfGNvbHxjb2xncm91cCkkL2kudGVzdCh0LnRhZ05hbWUpfHxudWxsIT1ndC5fY2xpcGJveCYmKHI9ZShfKGQsXCJvcGFjaXR5XCIpKSxvPV8oZCxcInZpc2liaWxpdHlcIikscz1fKGQsXCJkaXNwbGF5XCIpLDAhPT1yJiZcImhpZGRlblwiIT1vJiZcIm5vbmVcIiE9cyYmKGE9QShkKSxmPV8oZCxcInotaW5kZXhcIiksKGF8fHI8MSkmJlwiYXV0b1wiPT1mJiYoZj0wKSxoPXR0KHQsbixmKSxyPDEmJmgub3BhY2l0eShyKmgub3BhY2l0eSgpKSxnKHQsZCxoKSxhP2sodCxmdW5jdGlvbigpe3ZhciBlLG4saSxyO0ModC5zdHlsZSxcInRyYW5zZm9ybVwiLFwibm9uZVwiLFwiaW1wb3J0YW50XCIpLEModC5zdHlsZSxcInRyYW5zaXRpb25cIixcIm5vbmVcIixcImltcG9ydGFudFwiKSxcInN0YXRpY1wiPT1fKGQsXCJwb3NpdGlvblwiKSYmQyh0LnN0eWxlLFwicG9zaXRpb25cIixcInJlbGF0aXZlXCIsXCJpbXBvcnRhbnRcIiksZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49ZS5sZWZ0K2Eub3JpZ2luWzBdLGk9ZS50b3ArYS5vcmlnaW5bMV0scj1bMSwwLDAsMSwtbiwtaV0scj1udChyLGEubWF0cml4KSxyPW50KHIsWzEsMCwwLDEsbixpXSkscj1SKGgsciksZ3QuX21hdHJpeD1ndC5fbWF0cml4Lm11bHRpcGx5Q29weShyKSxIKHQsaCl9KTpIKHQsaCksdigpKSl9ZnVuY3Rpb24gbnQodCxlKXt2YXIgbj10WzBdLGk9dFsxXSxyPXRbMl0sbz10WzNdLHM9dFs0XSxhPXRbNV0saD1lWzBdLGw9ZVsxXSxjPWVbMl0sdT1lWzNdLGY9ZVs0XSxkPWVbNV07cmV0dXJuW24qaCtpKmMsbipsK2kqdSxyKmgrbypjLHIqbCtvKnUscypoK2EqYytmLHMqbCthKnUrZF19dmFyIGl0LHJ0LG90LHN0LGF0LGh0PWtlbmRvLmRyYXdpbmcsbHQ9a2VuZG8uZ2VvbWV0cnksY3Q9QXJyYXkucHJvdG90eXBlLnNsaWNlLHV0PWtlbmRvLnN1cHBvcnQuYnJvd3NlcixmdD1rZW5kby51dGlsLmFyYWJpY1RvUm9tYW4sZHQ9a2VuZG8udXRpbC5tZXJnZVNvcnQscHQ9XCJLRU5ETy1QU0VVRE8tRUxFTUVOVFwiLG10PXt9LGd0PXt9O2d0Ll9yb290PWd0LGl0PWh0LlRleHQuZXh0ZW5kKHtub2RlVHlwZTpcIlRleHRcIixpbml0OmZ1bmN0aW9uKHQsZSxuKXtodC5UZXh0LmZuLmluaXQuY2FsbCh0aGlzLHQsZS5nZXRPcmlnaW4oKSxuKSx0aGlzLl9wZGZSZWN0PWV9LHJlY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGRmUmVjdH0scmF3QkJveDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wZGZSZWN0fX0pLGh0LmRyYXdET009cixyLmdldEZvbnRGYWNlcz1vLHJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtmdW5jdGlvbiBwKCl7dmFyIGU9YS5leGVjKHQpO2UmJih0PXQuc3Vic3RyKGVbMV0ubGVuZ3RoKSl9ZnVuY3Rpb24gbShlKXtwKCk7dmFyIG49ZS5leGVjKHQpO2lmKG4pcmV0dXJuIHQ9dC5zdWJzdHIoblsxXS5sZW5ndGgpLG5bMV19ZnVuY3Rpb24gZygpe3ZhciBlLHIsbz1rZW5kby5wYXJzZUNvbG9yKHQsITApO2lmKG8pcmV0dXJuIHQ9dC5zdWJzdHIoby5tYXRjaFswXS5sZW5ndGgpLG89by50b1JHQigpLChlPW0oaSkpfHwocj1tKG4pKSx7Y29sb3I6byxsZW5ndGg6ZSxwZXJjZW50OnJ9fWZ1bmN0aW9uIHYoZSl7dmFyIGkscyxhLHUsZixkLHA9W10sdj0hMTtpZihtKGgpKXtmb3IoaT1tKG8pLGk/KGk9TihpKSxtKGMpKToocz1tKHIpLFwidG9cIj09cz9zPW0ocik6cyYmL14tLy50ZXN0KGUpJiYodj0hMCksYT1tKHIpLG0oYykpLC8tbW96LS8udGVzdChlKSYmbnVsbD09aSYmbnVsbD09cyYmKHU9bShuKSxmPW0obiksdj0hMCxcIjAlXCI9PXU/cz1cImxlZnRcIjpcIjEwMCVcIj09dSYmKHM9XCJyaWdodFwiKSxcIjAlXCI9PWY/YT1cInRvcFwiOlwiMTAwJVwiPT1mJiYoYT1cImJvdHRvbVwiKSxtKGMpKTt0JiYhbShsKSYmKGQ9ZygpKTspcC5wdXNoKGQpLG0oYyk7cmV0dXJue3R5cGU6XCJsaW5lYXJcIixhbmdsZTppLHRvOnMmJmE/cytcIiBcIithOnM/czphP2E6bnVsbCxzdG9wczpwLHJldmVyc2U6dn19fWZ1bmN0aW9uIHgoKXtpZihtKGgpKXt2YXIgdD1tKGYpO3JldHVybiB0PXQucmVwbGFjZSgvXlsnXCJdK3xbXCInXSskL2csXCJcIiksbShsKSx7dHlwZTpcInVybFwiLHVybDp0fX19dmFyIHksdz10O3JldHVybiBzKGQsdyk/ZFt3XTooKHk9bShlKSk/eT12KHkpOih5PW0odSkpJiYoeT14KCkpLGRbd109eXx8e3R5cGU6XCJub25lXCJ9KX12YXIgZT0vXigoLXdlYmtpdC18LW1vei18LW8tfC1tcy0pP2xpbmVhci1ncmFkaWVudFxccyopXFwoLyxuPS9eKFstMC05Ll0rJSkvLGk9L14oWy0wLTkuXStweCkvLHI9L14obGVmdHxyaWdodHx0b3B8Ym90dG9tfHRvfGNlbnRlcilcXFcvLG89L14oWy0wLTkuXSsoZGVnfGdyYWR8cmFkfHR1cm4pKS8sYT0vXihcXHMrKS8saD0vXihcXCgpLyxsPS9eKFxcKSkvLGM9L14oLCkvLHU9L14odXJsKVxcKC8sZj0vXiguKj8pXFwpLyxkPXt9LHA9e307cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBzKHAsZSk/cFtlXTpwW2VdPW90KGUpLm1hcCh0KX19KCksb3Q9ZnVuY3Rpb24oKXt2YXIgdD17fTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtmdW5jdGlvbiBpKHQpe3JldHVybiBmPXQuZXhlYyhlLnN1YnN0cihsKSl9ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLFwiXCIpfXZhciBvLGEsaCxsLGMsdSxmO2lmKG58fChuPS9eXFxzKixcXHMqLyksbz1lK24scyh0LG8pKXJldHVybiB0W29dO2ZvcihhPVtdLGg9MCxsPTAsYz0wLHU9ITE7bDxlLmxlbmd0aDspIXUmJmkoL15bXFwoXFxbXFx7XS8pPyhjKyssbCsrKTohdSYmaSgvXltcXClcXF1cXH1dLyk/KGMtLSxsKyspOiF1JiZpKC9eW1xcXCJcXCddLyk/KHU9ZlswXSxsKyspOlwiJ1wiPT11JiZpKC9eXFxcXFxcJy8pP2wrPTI6J1wiJz09dSYmaSgvXlxcXFxcXFwiLyk/bCs9MjpcIidcIj09dSYmaSgvXlxcJy8pPyh1PSExLGwrKyk6J1wiJz09dSYmaSgvXlxcXCIvKT8odT0hMSxsKyspOmkobik/KCF1JiYhYyYmbD5oJiYoYS5wdXNoKHIoZS5zdWJzdHJpbmcoaCxsKSkpLGg9bCtmWzBdLmxlbmd0aCksbCs9ZlswXS5sZW5ndGgpOmwrKztyZXR1cm4gaDxsJiZhLnB1c2gocihlLnN1YnN0cmluZyhoLGwpKSksdFtvXT1hfX0oKSxzdD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG4saT10W2VdO3JldHVybiBpfHwoKG49L3VybFxcKChbJ1wiXT8pKFteJ1wiKV0qPylcXDFcXClcXHMrZm9ybWF0XFwoKFsnXCJdPyl0cnVldHlwZVxcM1xcKS8uZXhlYyhlKSk/aT10W2VdPW5bMl06KG49L3VybFxcKChbJ1wiXT8pKFteJ1wiKV0qP1xcLnR0ZilcXDFcXCkvLmV4ZWMoZSkpJiYoaT10W2VdPW5bMl0pKSxpfX0oT2JqZWN0LmNyZWF0ZShudWxsKSksYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPXRbZV07cmV0dXJuIG51bGw9PW4mJihuPXRbZV09a2VuZG8udXRpbC5tZWFzdXJlVGV4dChcIk1hcHFcIix7Zm9udDplfSkuaGVpZ2h0KSxufX0oT2JqZWN0LmNyZWF0ZShudWxsKSl9KHdpbmRvdy5rZW5kby5qUXVlcnkscGFyc2VGbG9hdCxNYXRoKX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsbil7KG58fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwiZHJhd2luZy9hbmltYXRpb24ubWluXCIsW1wiZHJhd2luZy9nZW9tZXRyeS5taW5cIixcImRyYXdpbmcvY29yZS5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3ZhciBlPXQubm9vcCxuPXdpbmRvdy5rZW5kbyxpPW4uQ2xhc3Mscj1uLnV0aWwsbz1uLmFuaW1hdGlvbkZyYW1lLHM9bi5kZWVwRXh0ZW5kLGE9aS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO24ub3B0aW9ucz1zKHt9LG4ub3B0aW9ucyxlKSxuLmVsZW1lbnQ9dH0sb3B0aW9uczp7ZHVyYXRpb246NTAwLGVhc2luZzpcInN3aW5nXCJ9LHNldHVwOmUsc3RlcDplLHBsYXk6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49ZS5vcHRpb25zLGk9dC5lYXNpbmdbbi5lYXNpbmddLHM9bi5kdXJhdGlvbixhPW4uZGVsYXl8fDAsaD1yLm5vdygpK2EsbD1oK3M7MD09PXM/KGUuc3RlcCgxKSxlLmFib3J0KCkpOnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbigpe3ZhciBuLGEsYyx1O2UuX3N0b3BwZWR8fChuPXIubm93KCksYT1yLmxpbWl0VmFsdWUobi1oLDAscyksYz1hL3MsdT1pKGMsYSwwLDEscyksZS5zdGVwKHUpLG48bD9vKHQpOmUuYWJvcnQoKSl9O3QoKX0sYSl9LGFib3J0OmZ1bmN0aW9uKCl7dGhpcy5fc3RvcHBlZD0hMH0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuYWJvcnQoKX19KSxoPWZ1bmN0aW9uKCl7dGhpcy5faXRlbXM9W119O2gucHJvdG90eXBlPXtyZWdpc3RlcjpmdW5jdGlvbih0LGUpe3RoaXMuX2l0ZW1zLnB1c2goe25hbWU6dCx0eXBlOmV9KX0sY3JlYXRlOmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyLG89dGhpcy5faXRlbXM7aWYoZSYmZS50eXBlKWZvcihpPWUudHlwZS50b0xvd2VyQ2FzZSgpLHI9MDtyPG8ubGVuZ3RoO3IrKylpZihvW3JdLm5hbWUudG9Mb3dlckNhc2UoKT09PWkpe249b1tyXTticmVha31pZihuKXJldHVybiBuZXcgbi50eXBlKHQsZSl9fSxoLmN1cnJlbnQ9bmV3IGgsYS5jcmVhdGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBoLmN1cnJlbnQuY3JlYXRlKHQsZSxuKX0scyhuLmRyYXdpbmcse0FuaW1hdGlvbjphLEFuaW1hdGlvbkZhY3Rvcnk6aH0pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsbil7KG58fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwia2VuZG8uZHJhd2luZy5taW5cIixbXCJrZW5kby5jb2xvci5taW5cIixcInV0aWwvbWFpbi5taW5cIixcInV0aWwvdGV4dC1tZXRyaWNzLm1pblwiLFwidXRpbC9iYXNlNjQubWluXCIsXCJtaXhpbnMvb2JzZXJ2ZXJzLm1pblwiLFwiZHJhd2luZy9nZW9tZXRyeS5taW5cIixcImRyYXdpbmcvY29yZS5taW5cIixcImRyYXdpbmcvbWl4aW5zLm1pblwiLFwiZHJhd2luZy9zaGFwZXMubWluXCIsXCJkcmF3aW5nL3BhcnNlci5taW5cIixcImRyYXdpbmcvc2VhcmNoLm1pblwiLFwiZHJhd2luZy9zdmcubWluXCIsXCJkcmF3aW5nL2NhbnZhcy5taW5cIixcImRyYXdpbmcvdm1sLm1pblwiLFwiZHJhd2luZy9odG1sLm1pblwiLFwiZHJhd2luZy9hbmltYXRpb24ubWluXCJdLHQpfShmdW5jdGlvbigpe30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsbil7KG58fGUpKCl9KTs7IWZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJ1dGlsL21haW4ubWluXCIsW1wia2VuZG8uY29yZS5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtyZXR1cm4gdHlwZW9mIHQhPT1PfWZ1bmN0aW9uIGkodCxpKXt2YXIgZT1uKGkpO3JldHVybiBMLnJvdW5kKHQqZSkvZX1mdW5jdGlvbiBuKHQpe3JldHVybiB0P0wucG93KDEwLHQpOjF9ZnVuY3Rpb24gZSh0LGksbil7cmV0dXJuIEwubWF4KEwubWluKHQsbiksaSl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCpqfWZ1bmN0aW9uIHIodCl7cmV0dXJuIHQvan1mdW5jdGlvbiBhKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0JiYhaXNOYU4odCl9ZnVuY3Rpb24gcyhpLG4pe3JldHVybiB0KGkpP2k6bn1mdW5jdGlvbiBsKHQpe3JldHVybiB0KnR9ZnVuY3Rpb24gdSh0KXt2YXIgaSxuPVtdO2ZvcihpIGluIHQpbi5wdXNoKGkrdFtpXSk7cmV0dXJuIG4uc29ydCgpLmpvaW4oXCJcIil9ZnVuY3Rpb24gYyh0KXt2YXIgaSxuPTIxNjYxMzYyNjE7Zm9yKGk9MDtpPHQubGVuZ3RoOysraSluKz0objw8MSkrKG48PDQpKyhuPDw3KSsobjw8OCkrKG48PDI0KSxuXj10LmNoYXJDb2RlQXQoaSk7cmV0dXJuIG4+Pj4wfWZ1bmN0aW9uIGgodCl7cmV0dXJuIGModSh0KSl9ZnVuY3Rpb24gcCh0KXt2YXIgaSxuPXQubGVuZ3RoLGU9RSxvPVU7Zm9yKGk9MDtpPG47aSsrKW89TC5tYXgobyx0W2ldKSxlPUwubWluKGUsdFtpXSk7cmV0dXJue21pbjplLG1heDpvfX1mdW5jdGlvbiBmKHQpe3JldHVybiBwKHQpLm1pbn1mdW5jdGlvbiBkKHQpe3JldHVybiBwKHQpLm1heH1mdW5jdGlvbiB4KHQpe3JldHVybiBnKHQpLm1pbn1mdW5jdGlvbiBtKHQpe3JldHVybiBnKHQpLm1heH1mdW5jdGlvbiBnKHQpe3ZhciBpLG4sZSxvPUUscj1VO2ZvcihpPTAsbj10Lmxlbmd0aDtpPG47aSsrKWU9dFtpXSxudWxsIT09ZSYmaXNGaW5pdGUoZSkmJihvPUwubWluKG8sZSkscj1MLm1heChyLGUpKTtyZXR1cm57bWluOm89PT1FP3ZvaWQgMDpvLG1heDpyPT09VT92b2lkIDA6cn19ZnVuY3Rpb24gdih0KXtpZih0KXJldHVybiB0W3QubGVuZ3RoLTFdfWZ1bmN0aW9uIHkodCxpKXtyZXR1cm4gdC5wdXNoLmFwcGx5KHQsaSksdH1mdW5jdGlvbiBiKHQpe3JldHVybiBCLnRlbXBsYXRlKHQse3VzZVdpdGhCbG9jazohMSxwYXJhbU5hbWU6XCJkXCJ9KX1mdW5jdGlvbiB3KGksbil7cmV0dXJuIHQobikmJm51bGwhPT1uP1wiIFwiK2krXCI9J1wiK24rXCInIFwiOlwiXCJ9ZnVuY3Rpb24gVCh0KXt2YXIgaSxuPVwiXCI7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyluKz13KHRbaV1bMF0sdFtpXVsxXSk7cmV0dXJuIG59ZnVuY3Rpb24gayhpKXt2YXIgbixlLG89XCJcIjtmb3Iobj0wO248aS5sZW5ndGg7bisrKWU9aVtuXVsxXSx0KGUpJiYobys9aVtuXVswXStcIjpcIitlK1wiO1wiKTtpZihcIlwiIT09bylyZXR1cm4gb31mdW5jdGlvbiBfKHQpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0JiYodCs9XCJweFwiKSx0fWZ1bmN0aW9uIE0odCl7dmFyIGksbixlPVtdO2lmKHQpZm9yKGk9Qi50b0h5cGhlbnModCkuc3BsaXQoXCItXCIpLG49MDtuPGkubGVuZ3RoO24rKyllLnB1c2goXCJrLXBvcy1cIitpW25dKTtyZXR1cm4gZS5qb2luKFwiIFwiKX1mdW5jdGlvbiBTKGkpe3JldHVyblwiXCI9PT1pfHxudWxsPT09aXx8XCJub25lXCI9PT1pfHxcInRyYW5zcGFyZW50XCI9PT1pfHwhdChpKX1mdW5jdGlvbiBBKHQpe2Zvcih2YXIgaT17MTpcImlcIiwxMDpcInhcIiwxMDA6XCJjXCIsMjpcImlpXCIsMjA6XCJ4eFwiLDIwMDpcImNjXCIsMzpcImlpaVwiLDMwOlwieHh4XCIsMzAwOlwiY2NjXCIsNDpcIml2XCIsNDA6XCJ4bFwiLDQwMDpcImNkXCIsNTpcInZcIiw1MDpcImxcIiw1MDA6XCJkXCIsNjpcInZpXCIsNjA6XCJseFwiLDYwMDpcImRjXCIsNzpcInZpaVwiLDcwOlwibHh4XCIsNzAwOlwiZGNjXCIsODpcInZpaWlcIiw4MDpcImx4eHhcIiw4MDA6XCJkY2NjXCIsOTpcIml4XCIsOTA6XCJ4Y1wiLDkwMDpcImNtXCIsMWUzOlwibVwifSxuPVsxZTMsOTAwLDgwMCw3MDAsNjAwLDUwMCw0MDAsMzAwLDIwMCwxMDAsOTAsODAsNzAsNjAsNTAsNDAsMzAsMjAsMTAsOSw4LDcsNiw1LDQsMywyLDFdLGU9XCJcIjt0PjA7KXQ8blswXT9uLnNoaWZ0KCk6KGUrPWlbblswXV0sdC09blswXSk7cmV0dXJuIGV9ZnVuY3Rpb24gVih0KXt2YXIgaSxuLGUsbyxyO2Zvcih0PXQudG9Mb3dlckNhc2UoKSxpPXtpOjEsdjo1LHg6MTAsbDo1MCxjOjEwMCxkOjUwMCxtOjFlM30sbj0wLGU9MCxvPTA7bzx0Lmxlbmd0aDsrK28pe2lmKHI9aVt0LmNoYXJBdChvKV0sIXIpcmV0dXJuIG51bGw7bis9cixyPmUmJihuLT0yKmUpLGU9cn1yZXR1cm4gbn1mdW5jdGlvbiBSKHQpe3ZhciBpPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG4sZT1cIlwiO2ZvcihuPWFyZ3VtZW50cy5sZW5ndGg7LS1uPj0wOyllKz1cIjpcIithcmd1bWVudHNbbl07cmV0dXJuIGUgaW4gaT9pW2VdOmlbZV09dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIFAodCl7Zm9yKHZhciBpLG4sZT1bXSxvPTAscj10Lmxlbmd0aDtvPHI7KWk9dC5jaGFyQ29kZUF0KG8rKyksaT49NTUyOTYmJmk8PTU2MzE5JiZvPHI/KG49dC5jaGFyQ29kZUF0KG8rKyksNTYzMjA9PSg2NDUxMiZuKT9lLnB1c2goKCgxMDIzJmkpPDwxMCkrKDEwMjMmbikrNjU1MzYpOihlLnB1c2goaSksby0tKSk6ZS5wdXNoKGkpO3JldHVybiBlfWZ1bmN0aW9uIHoodCl7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKHQpe3ZhciBpPVwiXCI7cmV0dXJuIHQ+NjU1MzUmJih0LT02NTUzNixpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQ+Pj4xMCYxMDIzfDU1Mjk2KSx0PTU2MzIwfDEwMjMmdCksaSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KX0pLmpvaW4oXCJcIil9ZnVuY3Rpb24gQyh0LGkpe2Z1bmN0aW9uIG4odCxuKXtmb3IodmFyIGU9W10sbz0wLHI9MCxhPTA7bzx0Lmxlbmd0aCYmcjxuLmxlbmd0aDspaSh0W29dLG5bcl0pPD0wP2VbYSsrXT10W28rK106ZVthKytdPW5bcisrXTtyZXR1cm4gbzx0Lmxlbmd0aCYmZS5wdXNoLmFwcGx5KGUsdC5zbGljZShvKSkscjxuLmxlbmd0aCYmZS5wdXNoLmFwcGx5KGUsbi5zbGljZShyKSksZX1yZXR1cm4gdC5sZW5ndGg8Mj90LnNsaWNlKCk6ZnVuY3Rpb24gZSh0KXt2YXIgaSxvLHI7cmV0dXJuIHQubGVuZ3RoPD0xP3Q6KGk9TWF0aC5mbG9vcih0Lmxlbmd0aC8yKSxvPXQuc2xpY2UoMCxpKSxyPXQuc2xpY2UoaSksbz1lKG8pLHI9ZShyKSxuKG8scikpfSh0KX12YXIgTD1NYXRoLEI9d2luZG93LmtlbmRvLEk9Qi5kZWVwRXh0ZW5kLGo9TC5QSS8xODAsRT1OdW1iZXIuTUFYX1ZBTFVFLFU9LU51bWJlci5NQVhfVkFMVUUsTz1cInVuZGVmaW5lZFwiLEQ9RGF0ZS5ub3c7RHx8KEQ9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0pLEkoQix7dXRpbDp7TUFYX05VTTpFLE1JTl9OVU06VSxhcHBlbmQ6eSxhcnJheUxpbWl0czpwLGFycmF5TWluOmYsYXJyYXlNYXg6ZCxkZWZpbmVkOnQsZGVnOnIsaGFzaEtleTpjLGhhc2hPYmplY3Q6aCxpc051bWJlcjphLGlzVHJhbnNwYXJlbnQ6UyxsYXN0OnYsbGltaXRWYWx1ZTplLG5vdzpELG9iamVjdEtleTp1LHJvdW5kOmkscmFkOm8scmVuZGVyQXR0cjp3LHJlbmRlckFsbEF0dHI6VCxyZW5kZXJQb3M6TSxyZW5kZXJTaXplOl8scmVuZGVyU3R5bGU6ayxyZW5kZXJUZW1wbGF0ZTpiLHNwYXJzZUFycmF5TGltaXRzOmcsc3BhcnNlQXJyYXlNaW46eCxzcGFyc2VBcnJheU1heDptLHNxcjpsLHZhbHVlT3JEZWZhdWx0OnMscm9tYW5Ub0FyYWJpYzpWLGFyYWJpY1RvUm9tYW46QSxtZW1vaXplOlIsdWNzMmVuY29kZTp6LHVjczJkZWNvZGU6UCxtZXJnZVNvcnQ6Q319KSxCLmRyYXdpbmcudXRpbD1CLnV0aWwsQi5kYXRhdml6LnV0aWw9Qi51dGlsfSgpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGksbil7KG58fGkpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwidXRpbC90ZXh0LW1ldHJpY3MubWluXCIsW1wia2VuZG8uY29yZS5taW5cIixcInV0aWwvbWFpbi5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGkoKXtyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MCxiYXNlbGluZTowfX1mdW5jdGlvbiBuKHQsaSxuKXtyZXR1cm4gaC5jdXJyZW50Lm1lYXN1cmUodCxpLG4pfWZ1bmN0aW9uIGUodCxpKXt2YXIgbj1bXTtpZih0Lmxlbmd0aD4wJiZkb2N1bWVudC5mb250cyl7dHJ5e249dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmZvbnRzLmxvYWQodCl9KX1jYXRjaChlKXtyLmxvZ1RvQ29uc29sZShlKX1Qcm9taXNlLmFsbChuKS50aGVuKGksaSl9ZWxzZSBpKCl9dmFyIG89ZG9jdW1lbnQscj13aW5kb3cua2VuZG8sYT1yLkNsYXNzLHM9ci51dGlsLGw9cy5kZWZpbmVkLHU9YS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dGhpcy5fc2l6ZT10LHRoaXMuX2xlbmd0aD0wLHRoaXMuX21hcD17fX0scHV0OmZ1bmN0aW9uKHQsaSl7dmFyIG49dGhpcyxlPW4uX21hcCxvPXtrZXk6dCx2YWx1ZTppfTtlW3RdPW8sbi5faGVhZD8obi5fdGFpbC5uZXdlcj1vLG8ub2xkZXI9bi5fdGFpbCxuLl90YWlsPW8pOm4uX2hlYWQ9bi5fdGFpbD1vLG4uX2xlbmd0aD49bi5fc2l6ZT8oZVtuLl9oZWFkLmtleV09bnVsbCxuLl9oZWFkPW4uX2hlYWQubmV3ZXIsbi5faGVhZC5vbGRlcj1udWxsKTpuLl9sZW5ndGgrK30sZ2V0OmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMsbj1pLl9tYXBbdF07aWYobilyZXR1cm4gbj09PWkuX2hlYWQmJm4hPT1pLl90YWlsJiYoaS5faGVhZD1uLm5ld2VyLGkuX2hlYWQub2xkZXI9bnVsbCksbiE9PWkuX3RhaWwmJihuLm9sZGVyJiYobi5vbGRlci5uZXdlcj1uLm5ld2VyLG4ubmV3ZXIub2xkZXI9bi5vbGRlciksbi5vbGRlcj1pLl90YWlsLG4ubmV3ZXI9bnVsbCxpLl90YWlsLm5ld2VyPW4saS5fdGFpbD1uKSxuLnZhbHVlfX0pLGM9dChcIjxkaXYgc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OyB0b3A6IC00MDAwcHggIWltcG9ydGFudDsgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7cGFkZGluZzogMCAhaW1wb3J0YW50OyBtYXJnaW46IDAgIWltcG9ydGFudDsgYm9yZGVyOiAwICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgd2hpdGUtc3BhY2U6IG5vd3JhcCFpbXBvcnRhbnQ7JyAvPlwiKVswXSxoPWEuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMuX2NhY2hlPW5ldyB1KDFlMyksdGhpcy5faW5pdE9wdGlvbnModCl9LG9wdGlvbnM6e2Jhc2VsaW5lTWFya2VyU2l6ZToxfSxtZWFzdXJlOmZ1bmN0aW9uKG4sZSxyKXt2YXIgYSx1LGgscCxmLGQseCxtO2lmKCFuKXJldHVybiBpKCk7aWYoYT1zLm9iamVjdEtleShlKSx1PXMuaGFzaEtleShuK2EpLGg9dGhpcy5fY2FjaGUuZ2V0KHUpLGgpcmV0dXJuIGg7cD1pKCksZj1yP3I6YyxkPXRoaXMuX2Jhc2VsaW5lTWFya2VyKCkuY2xvbmVOb2RlKCExKTtmb3IoeCBpbiBlKW09ZVt4XSxsKG0pJiYoZi5zdHlsZVt4XT1tKTtyZXR1cm4gdChmKS50ZXh0KG4pLGYuYXBwZW5kQ2hpbGQoZCksby5ib2R5LmFwcGVuZENoaWxkKGYpLChuK1wiXCIpLmxlbmd0aCYmKHAud2lkdGg9Zi5vZmZzZXRXaWR0aC10aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplLHAuaGVpZ2h0PWYub2Zmc2V0SGVpZ2h0LHAuYmFzZWxpbmU9ZC5vZmZzZXRUb3ArdGhpcy5vcHRpb25zLmJhc2VsaW5lTWFya2VyU2l6ZSkscC53aWR0aD4wJiZwLmhlaWdodD4wJiZ0aGlzLl9jYWNoZS5wdXQodSxwKSxmLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZikscH0sX2Jhc2VsaW5lTWFya2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHQoXCI8ZGl2IGNsYXNzPSdrLWJhc2VsaW5lLW1hcmtlcicgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO3dpZHRoOiBcIit0aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplK1wicHg7IGhlaWdodDogXCIrdGhpcy5vcHRpb25zLmJhc2VsaW5lTWFya2VyU2l6ZStcInB4O292ZXJmbG93OiBoaWRkZW47JyAvPlwiKVswXX19KTtoLmN1cnJlbnQ9bmV3IGgsci51dGlsLlRleHRNZXRyaWNzPWgsci51dGlsLkxSVUNhY2hlPXUsci51dGlsLmxvYWRGb250cz1lLHIudXRpbC5tZWFzdXJlVGV4dD1ufSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGksbil7KG58fGkpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwidXRpbC9iYXNlNjQubWluXCIsW1widXRpbC9tYWluLm1pblwiXSx0KX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBuLGUsbyxhLHMsbCx1LGM9XCJcIixoPTA7Zm9yKHQ9aSh0KTtoPHQubGVuZ3RoOyluPXQuY2hhckNvZGVBdChoKyspLGU9dC5jaGFyQ29kZUF0KGgrKyksbz10LmNoYXJDb2RlQXQoaCsrKSxhPW4+PjIscz0oMyZuKTw8NHxlPj40LGw9KDE1JmUpPDwyfG8+PjYsdT02MyZvLGlzTmFOKGUpP2w9dT02NDppc05hTihvKSYmKHU9NjQpLGM9YytyLmNoYXJBdChhKStyLmNoYXJBdChzKStyLmNoYXJBdChsKStyLmNoYXJBdCh1KTtyZXR1cm4gY31mdW5jdGlvbiBpKHQpe3ZhciBpLG4sZT1cIlwiO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspbj10LmNoYXJDb2RlQXQoaSksbjwxMjg/ZSs9byhuKTpuPDIwNDg/KGUrPW8oMTkyfG4+Pj42KSxlKz1vKDEyOHw2MyZuKSk6bjw2NTUzNiYmKGUrPW8oMjI0fG4+Pj4xMiksZSs9bygxMjh8bj4+PjYmNjMpLGUrPW8oMTI4fDYzJm4pKTtyZXR1cm4gZX12YXIgbj13aW5kb3cua2VuZG8sZT1uLmRlZXBFeHRlbmQsbz1TdHJpbmcuZnJvbUNoYXJDb2RlLHI9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVwiO2Uobi51dGlsLHtlbmNvZGVCYXNlNjQ6dCxlbmNvZGVVVEY4Oml9KX0oKSx3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxpLG4peyhufHxpKSgpfSksZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcIm1peGlucy9vYnNlcnZlcnMubWluXCIsW1wia2VuZG8uY29yZS5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBpPU1hdGgsbj13aW5kb3cua2VuZG8sZT1uLmRlZXBFeHRlbmQsbz10LmluQXJyYXkscj17b2JzZXJ2ZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29ic2VydmVycz10aGlzLl9vYnNlcnZlcnN8fFtdfSxhZGRPYnNlcnZlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb2JzZXJ2ZXJzP3RoaXMuX29ic2VydmVycy5wdXNoKHQpOnRoaXMuX29ic2VydmVycz1bdF0sdGhpc30scmVtb3ZlT2JzZXJ2ZXI6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vYnNlcnZlcnMoKSxuPW8odCxpKTtyZXR1cm4gbiE9LTEmJmkuc3BsaWNlKG4sMSksdGhpc30sdHJpZ2dlcjpmdW5jdGlvbih0LGkpe3ZhciBuLGUsbz10aGlzLl9vYnNlcnZlcnM7aWYobyYmIXRoaXMuX3N1c3BlbmRlZClmb3IoZT0wO2U8by5sZW5ndGg7ZSsrKW49b1tlXSxuW3RdJiZuW3RdKGkpO3JldHVybiB0aGlzfSxvcHRpb25zQ2hhbmdlOmZ1bmN0aW9uKHQpe3Q9dHx8e30sdC5lbGVtZW50PXRoaXMsdGhpcy50cmlnZ2VyKFwib3B0aW9uc0NoYW5nZVwiLHQpfSxnZW9tZXRyeUNoYW5nZTpmdW5jdGlvbigpe3RoaXMudHJpZ2dlcihcImdlb21ldHJ5Q2hhbmdlXCIse2VsZW1lbnQ6dGhpc30pfSxzdXNwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N1c3BlbmRlZD0odGhpcy5fc3VzcGVuZGVkfHwwKSsxLHRoaXN9LHJlc3VtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdXNwZW5kZWQ9aS5tYXgoKHRoaXMuX3N1c3BlbmRlZHx8MCktMSwwKSx0aGlzfSxfb2JzZXJ2ZXJGaWVsZDpmdW5jdGlvbih0LGkpe3RoaXNbdF0mJnRoaXNbdF0ucmVtb3ZlT2JzZXJ2ZXIodGhpcyksdGhpc1t0XT1pLGkuYWRkT2JzZXJ2ZXIodGhpcyl9fTtlKG4se21peGluczp7T2JzZXJ2ZXJzTWl4aW46cn19KX0od2luZG93LmtlbmRvLmpRdWVyeSksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKHQsaSxuKXsobnx8aSkoKX0pLGZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJrZW5kby5kYXRhdml6LmNvcmUubWluXCIsW1wia2VuZG8uY29yZS5taW5cIixcImtlbmRvLmRyYXdpbmcubWluXCJdLHQpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGkpe2Z1bmN0aW9uIG4odCxpKXt2YXIgbj17dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9O3JldHVybiBpPWl8fDAsXCJudW1iZXJcIj09dHlwZW9mIHQ/bltPdF09bltVdF09bltodF09bltWdF09dDoobltPdF09dFtPdF18fGksbltVdF09dFtVdF18fGksbltodF09dFtodF18fGksbltWdF09dFtWdF18fGkpLG59ZnVuY3Rpb24gZSh0LGkpe3ZhciBuPXQudGlja1gsZT10LnRpY2tZLG89dC5wb3NpdGlvbixyPW5ldyAkLlBhdGgoe3N0cm9rZTp7d2lkdGg6aS53aWR0aCxjb2xvcjppLmNvbG9yfX0pO3JldHVybiB0LnZlcnRpY2FsP3IubW92ZVRvKG4sbykubGluZVRvKG4raS5zaXplLG8pOnIubW92ZVRvKG8sZSkubGluZVRvKG8sZStpLnNpemUpLHcocikscn1mdW5jdGlvbiBvKHQsaSl7dmFyIG49dC5saW5lU3RhcnQsZT10LmxpbmVFbmQsbz10LnBvc2l0aW9uLHI9bmV3ICQuUGF0aCh7c3Ryb2tlOnt3aWR0aDppLndpZHRoLGNvbG9yOmkuY29sb3IsZGFzaFR5cGU6aS5kYXNoVHlwZX19KTtyZXR1cm4gdC52ZXJ0aWNhbD9yLm1vdmVUbyhuLG8pLmxpbmVUbyhlLG8pOnIubW92ZVRvKG8sbikubGluZVRvKG8sZSksdyhyKSxyfWZ1bmN0aW9uIHIodCxpKXt2YXIgbixlLG8scj1oKGktdCxidC0xKTtpZigwPT09cil7aWYoMD09PWkpcmV0dXJuLjE7cj1zdC5hYnMoaSl9cmV0dXJuIG49c3QucG93KDEwLHN0LmZsb29yKHN0LmxvZyhyKS9zdC5sb2coMTApKSksZT1oKHIvbixidCksbz0xLG89ZTwxLjkwNDc2Mj8uMjplPDQuNzYxOTA0Py41OmU8OS41MjM4MDk/MToyLGgobipvLGJ0KX1mdW5jdGlvbiBhKHQsaSxuLGUsbyl7dmFyIHI9bypUdDtyZXR1cm4gbmV3IFd0KG4rKHQtbikqc3QuY29zKHIpKyhpLWUpKnN0LnNpbihyKSxlLSh0LW4pKnN0LnNpbihyKSsoaS1lKSpzdC5jb3MocikpfWZ1bmN0aW9uIHMoaSxuKXtpZihpLngxPT1uLngxJiZpLnkxPT1uLnkxJiZpLngyPT1uLngyJiZpLnkyPT1uLnkyKXJldHVybiBuO3ZhciBlPXN0Lm1pbihpLngxLG4ueDEpLG89c3QubWF4KGkueDEsbi54MSkscj1zdC5taW4oaS54MixuLngyKSxhPXN0Lm1heChpLngyLG4ueDIpLHM9c3QubWluKGkueTEsbi55MSksbD1zdC5tYXgoaS55MSxuLnkxKSx1PXN0Lm1pbihpLnkyLG4ueTIpLGM9c3QubWF4KGkueTIsbi55MiksaD1bXTtyZXR1cm4gaFswXT1TKG8scyxyLGwpLGhbMV09UyhlLGwsbyx1KSxoWzJdPVMocixsLGEsdSksaFszXT1TKG8sdSxyLGMpLGkueDE9PWUmJmkueTE9PXN8fG4ueDE9PWUmJm4ueTE9PXM/KGhbNF09UyhlLHMsbyxsKSxoWzVdPVMocix1LGEsYykpOihoWzRdPVMocixzLGEsbCksaFs1XT1TKGUsdSxvLGMpKSx0LmdyZXAoaCxmdW5jdGlvbih0KXtyZXR1cm4gdC5oZWlnaHQoKT4wJiZ0LndpZHRoKCk+MH0pWzBdfWZ1bmN0aW9uIGwodCxpKXtyZXR1cm4gb3QodCxpKSE9LTF9ZnVuY3Rpb24gdSh0LGkpe3JldHVybiBoKHN0LmNlaWwodC9pKSppLGJ0KX1mdW5jdGlvbiBjKHQsaSl7cmV0dXJuIGgoc3QuZmxvb3IodC9pKSppLGJ0KX1mdW5jdGlvbiBoKHQsaSl7dmFyIG49c3QucG93KDEwLGl8fDApO3JldHVybiBzdC5yb3VuZCh0Km4pL259ZnVuY3Rpb24gcCh0LGkpe3JldHVybiBzdC5sb2codCkvc3QubG9nKGkpfWZ1bmN0aW9uIGYodCxpLG4pe3ZhciBlPWgoc3QuYWJzKHQlaSksYnQpLG89aSooMS1uKTtyZXR1cm4gMD09PWV8fGU+b31mdW5jdGlvbiBkKHQsaSxuKXtyZXR1cm4gaCh0KyhpLXQpKm4sZnQpfWZ1bmN0aW9uIHgodCxpKXtyZXR1cm4gdC1pfWZ1bmN0aW9uIG0odCxpKXtyZXR1cm4gdC5tYXRjaChrdCk/WC5mb3JtYXQuYXBwbHkodGhpcyxhcmd1bWVudHMpOlgudG9TdHJpbmcoaSx0KX1mdW5jdGlvbiBnKHQsaSl7cmV0dXJuLXQueCppLnkrdC55KmkueDwwfWZ1bmN0aW9uIHYodCxpKXtyZXR1cm4gdCYmaT90LmdldFRpbWUoKS1pLmdldFRpbWUoKTotMX1mdW5jdGlvbiB5KHQpe3ZhciBpPXQub3JpZ2luYWxFdmVudCxuPTA7cmV0dXJuIGkud2hlZWxEZWx0YSYmKG49LWkud2hlZWxEZWx0YS8xMjAsbj1uPjA/c3QuY2VpbChuKTpzdC5mbG9vcihuKSksaS5kZXRhaWwmJihuPWgoaS5kZXRhaWwvMykpLG59ZnVuY3Rpb24gYih0KXtpZighdHx8IXQuaW5kZXhPZnx8dC5pbmRleE9mKFwiJlwiKTwwKXJldHVybiB0O3ZhciBpPWIuX2VsZW1lbnQ7cmV0dXJuIGkuaW5uZXJIVE1MPXQsaS50ZXh0Q29udGVudHx8aS5pbm5lclRleHR9ZnVuY3Rpb24gdyh0KXt2YXIgaSxuO2lmKCFYLnN1cHBvcnQudm1sKWZvcihpPS41LHQub3B0aW9ucy5zdHJva2UmJksodC5vcHRpb25zLnN0cm9rZS53aWR0aCkmJnQub3B0aW9ucy5zdHJva2Uud2lkdGglMj09PTAmJihpPTApLG49MDtuPHQuc2VnbWVudHMubGVuZ3RoO24rKyl0LnNlZ21lbnRzW25dLmFuY2hvcigpLnJvdW5kKDApLnRyYW5zbGF0ZShpLGkpO3JldHVybiB0fWZ1bmN0aW9uIFQodCl7dmFyIGksbixlPXQuc3RvcHMsbz10LmlubmVyUmFkaXVzL3QucmFkaXVzKjEwMCxyPWUubGVuZ3RoLGE9W107Zm9yKGk9MDtpPHI7aSsrKW49bHQoe30sZVtpXSksbi5vZmZzZXQ9KG4ub2Zmc2V0KigxMDAtbykrbykvMTAwLGEucHVzaChuKTtyZXR1cm4gYX1mdW5jdGlvbiBrKHQpe3ZhciBpPXQub3JpZ2luLG49dC5ib3R0b21SaWdodCgpO3JldHVybiBuZXcgUyhpLngsaS55LG4ueCxuLnkpfWZ1bmN0aW9uIF8oaSl7aT1pfHx7fTt2YXIgbj10KGkudG91Y2g/aS50b3VjaC5pbml0aWFsVG91Y2g6aS50YXJnZXQpO3JldHVybiBufWZ1bmN0aW9uIE0odCl7cmV0dXJuIHN0Lm1heChzdC5taW4odCxNdCksLU10KX12YXIgUyxBLFYsUixQLHosQyxMLEIsSSxqLEUsVSxPLEQsRyxOLEYsSCxYPXdpbmRvdy5rZW5kbyxXPVgudXRpbCxxPVcuYXBwZW5kLEs9Vy5kZWZpbmVkLFk9Vy5sYXN0LFE9Vy52YWx1ZU9yRGVmYXVsdCxKPVguZGF0YXZpeixaPUouZ2VvbWV0cnksJD1KLmRyYXdpbmcsdHQ9JC51dGlsLm1lYXN1cmVUZXh0LGl0PVguQ2xhc3MsbnQ9WC50ZW1wbGF0ZSxldD10Lm5vb3Asb3Q9dC5pbkFycmF5LHJ0PXQuaXNQbGFpbk9iamVjdCxhdD10LnRyaW0sc3Q9TWF0aCxsdD1YLmRlZXBFeHRlbmQsdXQ9XCJheGlzTGFiZWxDbGlja1wiLGN0PVwiIzAwMFwiLGh0PVwiYm90dG9tXCIscHQ9XCJjZW50ZXJcIixmdD0zLGR0PVwiY2xpcFwiLHh0PVwiY2lyY2xlXCIsbXQ9XCJjcm9zc1wiLGd0PVwiMTJweCBzYW5zLXNlcmlmXCIsdnQ9NDAwLHl0PTcsYnQ9MTAsd3Q9NjAwLFR0PXN0LlBJLzE4MCxrdD0vXFx7XFxkKzo/LyxfdD1cImhlaWdodFwiLE10PVguc3VwcG9ydC52bWw/MWU1OjNlNSxTdD02MDAsQXQ9XCJpbnNpZGVcIixWdD1cImxlZnRcIixSdD1cImxpbmVhclwiLFB0PU51bWJlci5NQVhfVkFMVUUsenQ9LU51bWJlci5NQVhfVkFMVUUsQ3Q9TWF0aC5wb3coMTAsLWJ0KzEpLEx0PVwibm9uZVwiLEJ0PVwibm90ZUNsaWNrXCIsSXQ9XCJub3RlSG92ZXJcIixqdD1cIm91dHNpZGVcIixFdD1cInJhZGlhbFwiLFV0PVwicmlnaHRcIixPdD1cInRvcFwiLER0PVwidHJpYW5nbGVcIixHdD1cIndpZHRoXCIsTnQ9XCIjZmZmXCIsRnQ9XCJ4XCIsSHQ9XCJ5XCIsWHQ9LjIsV3Q9ZnVuY3Rpb24odCxuKXt2YXIgZT10aGlzO3JldHVybiBlIGluc3RhbmNlb2YgV3Q/KGUueD10fHwwLGUueT1ufHwwLGkpOm5ldyBXdCh0LG4pfTtXdC5mbj1XdC5wcm90b3R5cGU9e2Nsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gbmV3IFd0KHQueCx0LnkpfSxlcXVhbHM6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQueD09PXRoaXMueCYmdC55PT09dGhpcy55fSxyb3RhdGU6ZnVuY3Rpb24odCxpKXt2YXIgbj10aGlzLGU9aSpUdCxvPXN0LmNvcyhlKSxyPXN0LnNpbihlKSxhPXQueCxzPXQueSxsPW4ueCx1PW4ueTtyZXR1cm4gbi54PWgoYSsobC1hKSpvKyh1LXMpKnIsZnQpLG4ueT1oKHMrKHUtcykqby0obC1hKSpyLGZ0KSxufSxtdWx0aXBseTpmdW5jdGlvbih0KXt2YXIgaT10aGlzO3JldHVybiBpLngqPXQsaS55Kj10LGl9LGRpc3RhbmNlVG86ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy54LXQueCxuPXRoaXMueS10Lnk7cmV0dXJuIHN0LnNxcnQoaSppK24qbil9fSxXdC5vbkNpcmNsZT1mdW5jdGlvbih0LGksbil7cmV0dXJuIGkqPVR0LG5ldyBXdCh0LngtbipzdC5jb3MoaSksdC55LW4qc3Quc2luKGkpKX0sUz1mdW5jdGlvbih0LG4sZSxvKXt2YXIgcj10aGlzO3JldHVybiByIGluc3RhbmNlb2YgUz8oci54MT10fHwwLHIueDI9ZXx8MCxyLnkxPW58fDAsci55Mj1vfHwwLGkpOm5ldyBTKHQsbixlLG8pfSxTLmZuPVMucHJvdG90eXBlPXt3aWR0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLngyLXRoaXMueDF9LGhlaWdodDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnkyLXRoaXMueTF9LHRyYW5zbGF0ZTpmdW5jdGlvbih0LGkpe3ZhciBuPXRoaXM7cmV0dXJuIG4ueDErPXQsbi54Mis9dCxuLnkxKz1pLG4ueTIrPWksbn0sbW92ZTpmdW5jdGlvbih0LGkpe3ZhciBuPXRoaXMsZT1uLmhlaWdodCgpLG89bi53aWR0aCgpO3JldHVybiBLKHQpJiYobi54MT10LG4ueDI9bi54MStvKSxLKGkpJiYobi55MT1pLG4ueTI9bi55MStlKSxufSx3cmFwOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXM7cmV0dXJuIGkueDE9c3QubWluKGkueDEsdC54MSksaS55MT1zdC5taW4oaS55MSx0LnkxKSxpLngyPXN0Lm1heChpLngyLHQueDIpLGkueTI9c3QubWF4KGkueTIsdC55MiksaX0sd3JhcFBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLndyYXAobmV3IFModC54LHQueSx0LngsdC55KSksdGhpc30sc25hcFRvOmZ1bmN0aW9uKHQsaSl7dmFyIG49dGhpcztyZXR1cm4gaSE9RnQmJml8fChuLngxPXQueDEsbi54Mj10LngyKSxpIT1IdCYmaXx8KG4ueTE9dC55MSxuLnkyPXQueTIpLG59LGFsaWduVG86ZnVuY3Rpb24odCxpKXt2YXIgbixlLG89dGhpcyxyPW8uaGVpZ2h0KCksYT1vLndpZHRoKCkscz1pPT1PdHx8aT09aHQ/SHQ6RnQsbD1zPT1IdD9yOmE7cmV0dXJuIGk9PT1wdD8obj10LmNlbnRlcigpLGU9by5jZW50ZXIoKSxvLngxKz1uLngtZS54LG8ueTErPW4ueS1lLnkpOm9bcysxXT1pPT09T3R8fGk9PT1WdD90W3MrMV0tbDp0W3MrMl0sby54Mj1vLngxK2Esby55Mj1vLnkxK3Isb30sc2hyaW5rOmZ1bmN0aW9uKHQsaSl7dmFyIG49dGhpcztyZXR1cm4gbi54Mi09dCxuLnkyLT1pLG59LGV4cGFuZDpmdW5jdGlvbih0LGkpe3JldHVybiB0aGlzLnNocmluaygtdCwtaSksdGhpc30scGFkOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMsZT1uKHQpO3JldHVybiBpLngxLT1lLmxlZnQsaS54Mis9ZS5yaWdodCxpLnkxLT1lLnRvcCxpLnkyKz1lLmJvdHRvbSxpfSx1bnBhZDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLGU9bih0KTtyZXR1cm4gZS5sZWZ0PS1lLmxlZnQsZS50b3A9LWUudG9wLGUucmlnaHQ9LWUucmlnaHQsZS5ib3R0b209LWUuYm90dG9tLGkucGFkKGUpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyBTKHQueDEsdC55MSx0LngyLHQueTIpfSxjZW50ZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiBuZXcgV3QodC54MSt0LndpZHRoKCkvMix0LnkxK3QuaGVpZ2h0KCkvMil9LGNvbnRhaW5zUG9pbnQ6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcztyZXR1cm4gdC54Pj1pLngxJiZ0Lng8PWkueDImJnQueT49aS55MSYmdC55PD1pLnkyfSxwb2ludHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybltuZXcgV3QodC54MSx0LnkxKSxuZXcgV3QodC54Mix0LnkxKSxuZXcgV3QodC54Mix0LnkyKSxuZXcgV3QodC54MSx0LnkyKV19LGdldEhhc2g6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVyblt0LngxLHQueTEsdC54Mix0LnkyXS5qb2luKFwiLFwiKX0sb3ZlcmxhcHM6ZnVuY3Rpb24odCl7cmV0dXJuISh0LnkyPHRoaXMueTF8fHRoaXMueTI8dC55MXx8dC54Mjx0aGlzLngxfHx0aGlzLngyPHQueDEpfSxyb3RhdGU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcyxuPWkud2lkdGgoKSxlPWkuaGVpZ2h0KCksbz1pLmNlbnRlcigpLHI9by54LHM9by55LGw9YSgwLDAscixzLHQpLHU9YShuLDAscixzLHQpLGM9YShuLGUscixzLHQpLGg9YSgwLGUscixzLHQpO3JldHVybiBuPXN0Lm1heChsLngsdS54LGMueCxoLngpLXN0Lm1pbihsLngsdS54LGMueCxoLngpLGU9c3QubWF4KGwueSx1LnksYy55LGgueSktc3QubWluKGwueSx1LnksYy55LGgueSksaS54Mj1pLngxK24saS55Mj1pLnkxK2UsaX0sdG9SZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBaLlJlY3QoW3RoaXMueDEsdGhpcy55MV0sW3RoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpXSl9LGhhc1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMud2lkdGgoKSYmMCE9PXRoaXMuaGVpZ2h0KCl9LGFsaWduOmZ1bmN0aW9uKHQsaSxuKXt2YXIgZT10aGlzLG89aSsxLHI9aSsyLGE9aT09PUZ0P0d0Ol90LHM9ZVthXSgpO2wobixbVnQsT3RdKT8oZVtvXT10W29dLGVbcl09ZVtvXStzKTpsKG4sW1V0LGh0XSk/KGVbcl09dFtyXSxlW29dPWVbcl0tcyk6bj09cHQmJihlW29dPXRbb10rKHRbYV0oKS1zKS8yLGVbcl09ZVtvXStzKX19LEE9aXQuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsaSxuLGUsbyl7dmFyIHI9dGhpcztyLmM9dCxyLmlyPWksci5yPW4sci5zdGFydEFuZ2xlPWUsci5hbmdsZT1vfSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyBBKHQuYyx0LmlyLHQucix0LnN0YXJ0QW5nbGUsdC5hbmdsZSl9LG1pZGRsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0QW5nbGUrdGhpcy5hbmdsZS8yfSxyYWRpdXM6ZnVuY3Rpb24odCxpKXt2YXIgbj10aGlzO3JldHVybiBpP24uaXI9dDpuLnI9dCxufSxwb2ludDpmdW5jdGlvbih0LGkpe3ZhciBuPXRoaXMsZT10KlR0LG89c3QuY29zKGUpLHI9c3Quc2luKGUpLGE9aT9uLmlyOm4ucixzPWgobi5jLngtbyphLGZ0KSxsPWgobi5jLnktciphLGZ0KTtyZXR1cm4gbmV3IFd0KHMsbCl9LGFkamFjZW50Qm94OmZ1bmN0aW9uKHQsaSxuKXt2YXIgZT10aGlzLmNsb25lKCkuZXhwYW5kKHQpLG89ZS5taWRkbGUoKSxyPWUucG9pbnQobyksYT1pLzIscz1uLzIsbD1yLngtYSx1PXIueS1zLGM9c3Quc2luKG8qVHQpLGg9c3QuY29zKG8qVHQpO3JldHVybiBzdC5hYnMoYyk8LjkmJihsKz1hKi1oL3N0LmFicyhoKSksc3QuYWJzKGgpPC45JiYodSs9cyotYy9zdC5hYnMoYykpLG5ldyBTKGwsdSxsK2ksdStuKX0sY29udGFpbnNQb2ludDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLG49aS5jLGU9aS5pcixvPWkucixyPWkuc3RhcnRBbmdsZSxhPWkuc3RhcnRBbmdsZStpLmFuZ2xlLHM9dC54LW4ueCxsPXQueS1uLnksdT1uZXcgV3QocyxsKSxjPWkucG9pbnQocikscD1uZXcgV3QoYy54LW4ueCxjLnktbi55KSxmPWkucG9pbnQoYSksZD1uZXcgV3QoZi54LW4ueCxmLnktbi55KSx4PWgocypzK2wqbCxmdCk7cmV0dXJuKHAuZXF1YWxzKHUpfHxnKHAsdSkpJiYhZyhkLHUpJiZ4Pj1lKmUmJng8PW8qb30sZ2V0QkJveDpmdW5jdGlvbigpe3ZhciB0LGksbixlPXRoaXMsbz1uZXcgUyhQdCxQdCx6dCx6dCkscj1oKGUuc3RhcnRBbmdsZSUzNjApLGE9aCgocitlLmFuZ2xlKSUzNjApLHM9ZS5pcixsPVswLDkwLDE4MCwyNzAscixhXS5zb3J0KHgpLHU9b3QocixsKSxjPW90KGEsbCk7Zm9yKHQ9cj09YT9sOnU8Yz9sLnNsaWNlKHUsYysxKTpbXS5jb25jYXQobC5zbGljZSgwLGMrMSksbC5zbGljZSh1LGwubGVuZ3RoKSksaT0wO2k8dC5sZW5ndGg7aSsrKW49ZS5wb2ludCh0W2ldKSxvLndyYXBQb2ludChuKSxvLndyYXBQb2ludChuLHMpO3JldHVybiBzfHxvLndyYXBQb2ludChlLmMpLG99LGV4cGFuZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yKz10LHRoaXN9fSksVj1BLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGksbixlKXtBLmZuLmluaXQuY2FsbCh0aGlzLHQsMCxpLG4sZSl9LGV4cGFuZDpmdW5jdGlvbih0KXtyZXR1cm4gQS5mbi5leHBhbmQuY2FsbCh0aGlzLHQpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyBWKHQuYyx0LnIsdC5zdGFydEFuZ2xlLHQuYW5nbGUpfSxyYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIEEuZm4ucmFkaXVzLmNhbGwodGhpcyx0KX0scG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIEEuZm4ucG9pbnQuY2FsbCh0aGlzLHQpfX0pLFI9ZnVuY3Rpb24oKXt9LFIuZm49Ui5wcm90b3R5cGU9e2NyZWF0ZVJpbmc6ZnVuY3Rpb24odCxpKXt2YXIgbixlPXQuc3RhcnRBbmdsZSsxODAsbz10LmFuZ2xlK2Uscj1uZXcgWi5Qb2ludCh0LmMueCx0LmMueSksYT1zdC5tYXgodC5yLDApLHM9c3QubWF4KHQuaXIsMCksbD1uZXcgWi5BcmMocix7c3RhcnRBbmdsZTplLGVuZEFuZ2xlOm8scmFkaXVzWDphLHJhZGl1c1k6YX0pLHU9JC5QYXRoLmZyb21BcmMobCxpKS5jbG9zZSgpO3JldHVybiBzPyhsLnJhZGl1c1g9bC5yYWRpdXNZPXMsbj1sLnBvaW50QXQobyksdS5saW5lVG8obi54LG4ueSksdS5hcmMobyxlLHMscywhMCkpOnUubGluZVRvKHIueCxyLnkpLHV9fSxSLmN1cnJlbnQ9bmV3IFIsUD1pdC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcztpLmNoaWxkcmVuPVtdLGkub3B0aW9ucz1sdCh7fSxpLm9wdGlvbnMsdCl9LHJlZmxvdzpmdW5jdGlvbih0KXt2YXIgaSxuLGUsbz10aGlzLHI9by5jaGlsZHJlbjtmb3Iobj0wO248ci5sZW5ndGg7bisrKWU9cltuXSxlLnJlZmxvdyh0KSxpPWk/aS53cmFwKGUuYm94KTplLmJveC5jbG9uZSgpO28uYm94PWl8fHR9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgdCxpPXRoaXMsbj1pLmNoaWxkcmVuO2Zvcih0aGlzLmFuaW1hdGlvbiYmdGhpcy5hbmltYXRpb24uZGVzdHJveSgpLHQ9MDt0PG4ubGVuZ3RoO3QrKyluW3RdLmRlc3Ryb3koKX0sZ2V0Um9vdDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50O3JldHVybiB0P3QuZ2V0Um9vdCgpOm51bGx9LGdldENoYXJ0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRSb290KCk7aWYodClyZXR1cm4gdC5jaGFydH0sdHJhbnNsYXRlQ2hpbGRyZW46ZnVuY3Rpb24odCxpKXt2YXIgbixlPXRoaXMsbz1lLmNoaWxkcmVuLHI9by5sZW5ndGg7Zm9yKG49MDtuPHI7bisrKW9bbl0uYm94LnRyYW5zbGF0ZSh0LGkpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtxKHRoaXMuY2hpbGRyZW4sYXJndW1lbnRzKTtmb3IodmFyIHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWFyZ3VtZW50c1t0XS5wYXJlbnQ9dGhpc30scmVuZGVyVmlzdWFsOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnZpc2libGUhPT0hMSYmKHRoaXMuY3JlYXRlVmlzdWFsKCksdGhpcy5hZGRWaXN1YWwoKSx0aGlzLnJlbmRlckNoaWxkcmVuKCksdGhpcy5jcmVhdGVBbmltYXRpb24oKSx0aGlzLnJlbmRlckNvbXBsZXRlKCkpfSxhZGRWaXN1YWw6ZnVuY3Rpb24oKXt0aGlzLnZpc3VhbCYmKHRoaXMudmlzdWFsLmNoYXJ0RWxlbWVudD10aGlzLHRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5hcHBlbmRWaXN1YWwodGhpcy52aXN1YWwpKX0scmVuZGVyQ2hpbGRyZW46ZnVuY3Rpb24oKXt2YXIgdCxpPXRoaXMuY2hpbGRyZW47Zm9yKHQ9MDt0PGkubGVuZ3RoO3QrKylpW3RdLnJlbmRlclZpc3VhbCgpfSxjcmVhdGVWaXN1YWw6ZnVuY3Rpb24oKXt0aGlzLnZpc3VhbD1uZXcgSi5kcmF3aW5nLkdyb3VwKHt6SW5kZXg6dGhpcy5vcHRpb25zLnpJbmRleCx2aXNpYmxlOlEodGhpcy5vcHRpb25zLnZpc2libGUsITApfSl9LGNyZWF0ZUFuaW1hdGlvbjpmdW5jdGlvbigpe3RoaXMudmlzdWFsJiYodGhpcy5hbmltYXRpb249JC5BbmltYXRpb24uY3JlYXRlKHRoaXMudmlzdWFsLHRoaXMub3B0aW9ucy5hbmltYXRpb24pKX0sYXBwZW5kVmlzdWFsOmZ1bmN0aW9uKHQpe3QuY2hhcnRFbGVtZW50fHwodC5jaGFydEVsZW1lbnQ9dGhpcyksdC5vcHRpb25zLm5vY2xpcD90aGlzLmNsaXBSb290KCkudmlzdWFsLmFwcGVuZCh0KTpLKHQub3B0aW9ucy56SW5kZXgpP3RoaXMuc3RhY2tSb290KCkuc3RhY2tWaXN1YWwodCk6dGhpcy52aXN1YWw/dGhpcy52aXN1YWwuYXBwZW5kKHQpOnRoaXMucGFyZW50LmFwcGVuZFZpc3VhbCh0KX0sY2xpcFJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQuY2xpcFJvb3QoKTp0aGlzfSxzdGFja1Jvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQuc3RhY2tSb290KCk6dGhpc30sc3RhY2tWaXN1YWw6ZnVuY3Rpb24odCl7dmFyIGksbixlLG89dC5vcHRpb25zLnpJbmRleHx8MCxyPXRoaXMudmlzdWFsLmNoaWxkcmVuO2ZvcihpPTA7aTxyLmxlbmd0aCYmKG49cltpXSxlPVEobi5vcHRpb25zLnpJbmRleCwwKSwhKGU+bykpO2krKyk7dGhpcy52aXN1YWwuaW5zZXJ0QXQodCxpKX0sdHJhdmVyc2U6ZnVuY3Rpb24odCl7dmFyIGksbixlPXRoaXMuY2hpbGRyZW47Zm9yKGk9MDtpPGUubGVuZ3RoO2krKyluPWVbaV0sdChuKSxuLnRyYXZlcnNlJiZuLnRyYXZlcnNlKHQpfSxjbG9zZXN0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgaT10aGlzLG49ITE7aSYmIW47KW49dChpKSxufHwoaT1pLnBhcmVudCk7aWYobilyZXR1cm4gaX0scmVuZGVyQ29tcGxldGU6dC5ub29wLGhhc0hpZ2hsaWdodDpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLm9wdGlvbnN8fHt9KS5oaWdobGlnaHQ7cmV0dXJuISghdGhpcy5jcmVhdGVIaWdobGlnaHR8fHQmJnQudmlzaWJsZT09PSExKX0sdG9nZ2xlSGlnaGxpZ2h0OmZ1bmN0aW9uKGkpe3ZhciBuLGU9dGhpcyxvPWUuX2hpZ2hsaWdodCxyPShlLm9wdGlvbnN8fHt9KS5oaWdobGlnaHQsYT0ocnx8e30pLnZpc3VhbDtpZighbyl7aWYobj17ZmlsbDp7Y29sb3I6TnQsb3BhY2l0eTouMn0sc3Ryb2tlOntjb2xvcjpOdCx3aWR0aDoxLG9wYWNpdHk6LjJ9fSxhKXtpZihvPWUuX2hpZ2hsaWdodD1hKHQuZXh0ZW5kKGUuaGlnaGxpZ2h0VmlzdWFsQXJncygpLHtjcmVhdGVWaXN1YWw6ZnVuY3Rpb24oKXtyZXR1cm4gZS5jcmVhdGVIaWdobGlnaHQobil9LHNlbmRlcjplLmdldENoYXJ0KCksc2VyaWVzOmUuc2VyaWVzLGRhdGFJdGVtOmUuZGF0YUl0ZW0sY2F0ZWdvcnk6ZS5jYXRlZ29yeSx2YWx1ZTplLnZhbHVlLHN0YWNrVmFsdWU6ZS5zdGFja1ZhbHVlLHBlcmNlbnRhZ2U6ZS5wZXJjZW50YWdlLHJ1bm5pbmdUb3RhbDplLnJ1bm5pbmdUb3RhbCx0b3RhbDplLnRvdGFsfSkpLCFvKXJldHVybn1lbHNlIG89ZS5faGlnaGxpZ2h0PWUuY3JlYXRlSGlnaGxpZ2h0KG4pO28ub3B0aW9ucy56SW5kZXg9ZS5vcHRpb25zLnpJbmRleCxlLmFwcGVuZFZpc3VhbChvKX1vLnZpc2libGUoaSl9LGNyZWF0ZUdyYWRpZW50T3ZlcmxheTpmdW5jdGlvbih0LGksbil7dmFyIGU9bmV3ICQuUGF0aChsdCh7c3Ryb2tlOntjb2xvcjpMdH0sZmlsbDp0aGlzLmNyZWF0ZUdyYWRpZW50KG4pLGNsb3NlZDp0Lm9wdGlvbnMuY2xvc2VkfSxpKSk7cmV0dXJuIGUuc2VnbWVudHMuZWxlbWVudHModC5zZWdtZW50cy5lbGVtZW50cygpKSxlfSxjcmVhdGVHcmFkaWVudDpmdW5jdGlvbih0KXtpZih0aGlzLnBhcmVudClyZXR1cm4gdGhpcy5wYXJlbnQuY3JlYXRlR3JhZGllbnQodCl9fSksej1QLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt2YXIgaT10aGlzO2kuZ3JhZGllbnRzPXt9LFAuZm4uaW5pdC5jYWxsKGksdCl9LG9wdGlvbnM6e3dpZHRoOnd0LGhlaWdodDp2dCxiYWNrZ3JvdW5kOk50LGJvcmRlcjp7Y29sb3I6Y3Qsd2lkdGg6MH0sbWFyZ2luOm4oNSksekluZGV4Oi0yfSxyZWZsb3c6ZnVuY3Rpb24oKXt2YXIgdCxpPXRoaXMsbj1pLm9wdGlvbnMsZT1pLmNoaWxkcmVuLG89bmV3IFMoMCwwLG4ud2lkdGgsbi5oZWlnaHQpO2ZvcihpLmJveD1vLnVucGFkKG4ubWFyZ2luKSx0PTA7dDxlLmxlbmd0aDt0KyspZVt0XS5yZWZsb3cobyksbz1zKG8sZVt0XS5ib3gpfHxTKCl9LGNyZWF0ZVZpc3VhbDpmdW5jdGlvbigpe3RoaXMudmlzdWFsPW5ldyAkLkdyb3VwLHRoaXMuY3JlYXRlQmFja2dyb3VuZCgpfSxjcmVhdGVCYWNrZ3JvdW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLGk9dC5ib3JkZXJ8fHt9LG49dGhpcy5ib3guY2xvbmUoKS5wYWQodC5tYXJnaW4pLnVucGFkKGkud2lkdGgpLGU9JC5QYXRoLmZyb21SZWN0KG4udG9SZWN0KCkse3N0cm9rZTp7Y29sb3I6aS53aWR0aD9pLmNvbG9yOlwiXCIsd2lkdGg6aS53aWR0aCxkYXNoVHlwZTppLmRhc2hUeXBlfSxmaWxsOntjb2xvcjp0LmJhY2tncm91bmQsb3BhY2l0eTp0Lm9wYWNpdHl9LHpJbmRleDotMTB9KTt0aGlzLnZpc3VhbC5hcHBlbmQoZSl9LGdldFJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sY3JlYXRlR3JhZGllbnQ6ZnVuY3Rpb24odCl7dmFyIGksbixlPXRoaXMuZ3JhZGllbnRzLG89Vy5vYmplY3RLZXkodCkscj1KLkdyYWRpZW50c1t0LmdyYWRpZW50XTtyZXR1cm4gZVtvXT9pPWVbb106KG49bHQoe30scix0KSxcImxpbmVhclwiPT1yLnR5cGU/aT1uZXcgJC5MaW5lYXJHcmFkaWVudChuKToodC5pbm5lclJhZGl1cyYmKG4uc3RvcHM9VChuKSksaT1uZXcgJC5SYWRpYWxHcmFkaWVudChuKSxpLnN1cHBvcnRWTUw9ci5zdXBwb3J0Vk1MIT09ITEpLGVbb109aSksaX19KSxDPVAuZXh0ZW5kKHtvcHRpb25zOnthbGlnbjpWdCx2QWxpZ246T3QsbWFyZ2luOnt9LHBhZGRpbmc6e30sYm9yZGVyOntjb2xvcjpjdCx3aWR0aDowfSxiYWNrZ3JvdW5kOlwiXCIsc2hyaW5rVG9GaXQ6ITEsd2lkdGg6MCxoZWlnaHQ6MCx2aXNpYmxlOiEwfSxyZWZsb3c6ZnVuY3Rpb24odCl7ZnVuY3Rpb24gaSgpe3MuYWxpZ24odCxGdCxsLmFsaWduKSxzLmFsaWduKHQsSHQsbC52QWxpZ24pLHMucGFkZGluZ0JveD1lLmNsb25lKCkudW5wYWQoZikudW5wYWQoeCl9dmFyIGUsbyxyLGEscz10aGlzLGw9cy5vcHRpb25zLHU9bC53aWR0aCxjPWwuaGVpZ2h0LGg9dSYmYyxwPWwuc2hyaW5rVG9GaXQsZj1uKGwubWFyZ2luKSxkPW4obC5wYWRkaW5nKSx4PWwuYm9yZGVyLndpZHRoLG09cy5jaGlsZHJlbjtmb3Iobz10LmNsb25lKCksaCYmKG8ueDI9by54MSt1LG8ueTI9by55MStjKSxwJiZvLnVucGFkKGYpLnVucGFkKHgpLnVucGFkKGQpLFAuZm4ucmVmbG93LmNhbGwocyxvKSxlPWg/cy5ib3g9UygwLDAsdSxjKTpzLmJveCxwJiZoPyhpKCksbz1zLmNvbnRlbnRCb3g9cy5wYWRkaW5nQm94LmNsb25lKCkudW5wYWQoZCkpOihvPXMuY29udGVudEJveD1lLmNsb25lKCksZS5wYWQoZCkucGFkKHgpLnBhZChmKSxpKCkpLHMudHJhbnNsYXRlQ2hpbGRyZW4oZS54MS1vLngxK2YubGVmdCt4K2QubGVmdCxlLnkxLW8ueTErZi50b3AreCtkLnRvcCkscj0wO3I8bS5sZW5ndGg7cisrKWE9bVtyXSxhLnJlZmxvdyhhLmJveCl9LGFsaWduOmZ1bmN0aW9uKHQsaSxuKXt0aGlzLmJveC5hbGlnbih0LGksbil9LGhhc0JveDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucztyZXR1cm4gdC5ib3JkZXIud2lkdGh8fHQuYmFja2dyb3VuZH0sY3JlYXRlVmlzdWFsOmZ1bmN0aW9uKCl7UC5mbi5jcmVhdGVWaXN1YWwuY2FsbCh0aGlzKTt2YXIgdD10aGlzLm9wdGlvbnM7dC52aXNpYmxlJiZ0aGlzLmhhc0JveCgpJiZ0aGlzLnZpc3VhbC5hcHBlbmQoJC5QYXRoLmZyb21SZWN0KHRoaXMucGFkZGluZ0JveC50b1JlY3QoKSx0aGlzLnZpc3VhbFN0eWxlKCkpKX0sdmlzdWFsU3R5bGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGk9dC5vcHRpb25zLG49aS5ib3JkZXJ8fHt9O3JldHVybntzdHJva2U6e3dpZHRoOm4ud2lkdGgsY29sb3I6bi5jb2xvcixvcGFjaXR5OlEobi5vcGFjaXR5LGkub3BhY2l0eSksZGFzaFR5cGU6bi5kYXNoVHlwZX0sZmlsbDp7Y29sb3I6aS5iYWNrZ3JvdW5kLG9wYWNpdHk6aS5vcGFjaXR5fSxjdXJzb3I6aS5jdXJzb3J9fX0pLEw9UC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxpKXt2YXIgbj10aGlzO1AuZm4uaW5pdC5jYWxsKG4saSksbi5jb250ZW50PXQsbi5yZWZsb3coUygpKX0sb3B0aW9uczp7Zm9udDpndCxjb2xvcjpjdCxhbGlnbjpWdCx2QWxpZ246XCJcIn0scmVmbG93OmZ1bmN0aW9uKHQpe3ZhciBpLG49dGhpcyxlPW4ub3B0aW9ucztpPWUuc2l6ZT10dChuLmNvbnRlbnQse2ZvbnQ6ZS5mb250fSksbi5iYXNlbGluZT1pLmJhc2VsaW5lLG4uYm94PVModC54MSx0LnkxLHQueDEraS53aWR0aCx0LnkxK2kuaGVpZ2h0KX0sY3JlYXRlVmlzdWFsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3RoaXMudmlzdWFsPW5ldyAkLlRleHQodGhpcy5jb250ZW50LHRoaXMuYm94LnRvUmVjdCgpLnRvcExlZnQoKSx7Zm9udDp0LmZvbnQsZmlsbDp7Y29sb3I6dC5jb2xvcixvcGFjaXR5OnQub3BhY2l0eX0sY3Vyc29yOnQuY3Vyc29yfSl9fSksQj1QLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXtQLmZuLmluaXQuY2FsbCh0aGlzLHQpLHRoaXMuX2luaXREaXJlY3Rpb24oKX0sX2luaXREaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnM7dC52ZXJ0aWNhbD8odGhpcy5ncm91cEF4aXM9RnQsdGhpcy5lbGVtZW50QXhpcz1IdCx0aGlzLmdyb3VwU2l6ZUZpZWxkPUd0LHRoaXMuZWxlbWVudFNpemVGaWVsZD1fdCx0aGlzLmdyb3VwU3BhY2luZz10LnNwYWNpbmcsdGhpcy5lbGVtZW50U3BhY2luZz10LnZTcGFjaW5nKToodGhpcy5ncm91cEF4aXM9SHQsdGhpcy5lbGVtZW50QXhpcz1GdCx0aGlzLmdyb3VwU2l6ZUZpZWxkPV90LHRoaXMuZWxlbWVudFNpemVGaWVsZD1HdCx0aGlzLmdyb3VwU3BhY2luZz10LnZTcGFjaW5nLHRoaXMuZWxlbWVudFNwYWNpbmc9dC5zcGFjaW5nKX0sb3B0aW9uczp7dmVydGljYWw6ITAsd3JhcDohMCx2U3BhY2luZzowLHNwYWNpbmc6MH0scmVmbG93OmZ1bmN0aW9uKHQpe3RoaXMuYm94PXQuY2xvbmUoKSx0aGlzLnJlZmxvd0NoaWxkcmVuKCl9LHJlZmxvd0NoaWxkcmVuOmZ1bmN0aW9uKCl7dmFyIHQsaSxuLGUsbyxyLGEscyxsLHUsYz10aGlzLGg9Yy5ib3gscD1jLmVsZW1lbnRBeGlzLGY9Yy5ncm91cEF4aXMsZD1jLmVsZW1lbnRTaXplRmllbGQseD1jLmdyb3VwU2l6ZUZpZWxkLG09Yy5ncm91cE9wdGlvbnMoKSxnPW0uZ3JvdXBzLHY9Zy5sZW5ndGgseT1oW2YrMV0rYy5hbGlnblN0YXJ0KG0uZ3JvdXBzU2l6ZSxoW3hdKCkpLGI9eTtpZih2KXtmb3IoYT0wO2E8djthKyspe2ZvcihuPWdbYV0sZT1uLmdyb3VwRWxlbWVudHMsbz1lLmxlbmd0aCx0PWhbcCsxXSxyPTA7cjxvO3IrKylzPWVbcl0sdT1jLmVsZW1lbnRTaXplKHMpLGk9YitjLmFsaWduU3RhcnQodVt4XSxuLmdyb3VwU2l6ZSksbD1TKCksbFtmKzFdPWksbFtmKzJdPWkrdVt4XSxsW3ArMV09dCxsW3ArMl09dCt1W2RdLHMucmVmbG93KGwpLHQrPXVbZF0rYy5lbGVtZW50U3BhY2luZztiKz1uLmdyb3VwU2l6ZStjLmdyb3VwU3BhY2luZ31oW2YrMV09eSxoW2YrMl09eSttLmdyb3Vwc1NpemUsaFtwKzJdPWhbcCsxXSttLm1heEdyb3VwRWxlbWVudHNTaXplfX0sYWxpZ25TdGFydDpmdW5jdGlvbih0LGkpe3ZhciBuPTAsZT10aGlzLm9wdGlvbnMuYWxpZ247cmV0dXJuIGU9PVV0fHxlPT1odD9uPWktdDplPT1wdCYmKG49KGktdCkvMiksbn0sZ3JvdXBPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIHQsaSxuPXRoaXMsZT1uLmJveCxvPW4uY2hpbGRyZW4scj1vLmxlbmd0aCxhPXRoaXMuZWxlbWVudFNpemVGaWVsZCxzPXRoaXMuZ3JvdXBTaXplRmllbGQsbD10aGlzLmVsZW1lbnRTcGFjaW5nLHU9dGhpcy5ncm91cFNwYWNpbmcsYz1oKGVbYV0oKSkscD0wLGY9MCxkPTAseD0wLG09W10sZz1bXSx2PTA7Zm9yKHA9MDtwPHI7cCsrKWk9b1twXSxpLmJveHx8aS5yZWZsb3coZSksdD10aGlzLmVsZW1lbnRTaXplKGkpLG4ub3B0aW9ucy53cmFwJiZoKGQrbCt0W2FdKT5jJiYobS5wdXNoKHtncm91cEVsZW1lbnRzOmcsZ3JvdXBTaXplOmYsZ3JvdXBFbGVtZW50c1NpemU6ZH0pLHY9c3QubWF4KHYsZCkseCs9dStmLGY9MCxkPTAsZz1bXSksZj1zdC5tYXgoZix0W3NdKSxkPjAmJihkKz1sKSxkKz10W2FdLGcucHVzaChpKTtyZXR1cm4gbS5wdXNoKHtncm91cEVsZW1lbnRzOmcsZ3JvdXBTaXplOmYsZ3JvdXBFbGVtZW50c1NpemU6ZH0pLHY9c3QubWF4KHYsZCkseCs9Zix7Z3JvdXBzOm0sZ3JvdXBzU2l6ZTp4LG1heEdyb3VwRWxlbWVudHNTaXplOnZ9fSxlbGVtZW50U2l6ZTpmdW5jdGlvbih0KXtyZXR1cm57d2lkdGg6dC5ib3gud2lkdGgoKSxoZWlnaHQ6dC5ib3guaGVpZ2h0KCl9fSxjcmVhdGVWaXN1YWw6ZXR9KSxJPUMuZXh0ZW5kKHtST1dTX1NQTElUX1JFR0VYOi9cXG58XFxcXG4vbSxpbml0OmZ1bmN0aW9uKHQsaSl7dmFyIG49dGhpcztuLmNvbnRlbnQ9dCxDLmZuLmluaXQuY2FsbChuLGkpLG4uX2luaXRDb250YWluZXIoKSxuLnJlZmxvdyhTKCkpfSxfaW5pdENvbnRhaW5lcjpmdW5jdGlvbigpe3ZhciB0LGksbj10aGlzLGU9bi5vcHRpb25zLG89KG4uY29udGVudCtcIlwiKS5zcGxpdChuLlJPV1NfU1BMSVRfUkVHRVgpLHI9bmV3IEIoe3ZlcnRpY2FsOiEwLGFsaWduOmUuYWxpZ24sd3JhcDohMX0pLGE9bHQoe30sZSx7b3BhY2l0eToxLGFuaW1hdGlvbjpudWxsfSk7Zm9yKG4uY29udGFpbmVyPXIsbi5hcHBlbmQociksaT0wO2k8by5sZW5ndGg7aSsrKXQ9bmV3IEwoYXQob1tpXSksYSksci5hcHBlbmQodCl9LHJlZmxvdzpmdW5jdGlvbih0KXt2YXIgaSxlLG8scj10aGlzLm9wdGlvbnMsYT1yLnZpc3VhbDt0aGlzLmNvbnRhaW5lci5vcHRpb25zLmFsaWduPXIuYWxpZ24sYSYmIXRoaXMuX2JveFJlZmxvdz8odC5oYXNTaXplKCl8fCh0aGlzLl9ib3hSZWZsb3c9ITAsdGhpcy5yZWZsb3codCksdGhpcy5fYm94UmVmbG93PSExLHQ9dGhpcy5ib3gpLHRoaXMudmlzdWFsPWEodGhpcy52aXN1YWxDb250ZXh0KHQpKSxpPXQsdGhpcy52aXN1YWwmJihpPWsodGhpcy52aXN1YWwuY2xpcHBlZEJCb3goKXx8bmV3IFouUmVjdCksdGhpcy52aXN1YWwub3B0aW9ucy56SW5kZXg9ci56SW5kZXgsdGhpcy52aXN1YWwub3B0aW9ucy5ub2NsaXA9ci5ub2NsaXApLHRoaXMuYm94PXRoaXMuY29udGVudEJveD10aGlzLnBhZGRpbmdCb3g9aSk6KEMuZm4ucmVmbG93LmNhbGwodGhpcyx0KSxyLnJvdGF0aW9uJiYoZT1uKHIubWFyZ2luKSxvPXRoaXMuYm94LnVucGFkKGUpLHRoaXMudGFyZ2V0Qm94PXQsdGhpcy5ub3JtYWxCb3g9by5jbG9uZSgpLG89dGhpcy5yb3RhdGUoKSxvLnRyYW5zbGF0ZShlLmxlZnQtZS5yaWdodCxlLnRvcC1lLmJvdHRvbSksdGhpcy5yb3RhdGVkQm94PW8uY2xvbmUoKSxvLnBhZChlKSkpfSxjcmVhdGVWaXN1YWw6ZnVuY3Rpb24oKXt2YXIgdCxpPXRoaXMub3B0aW9ucztpLnZpc2libGUmJih0aGlzLnZpc3VhbD1uZXcgSi5kcmF3aW5nLkdyb3VwKHt0cmFuc2Zvcm06dGhpcy5yb3RhdGlvblRyYW5zZm9ybSgpLHpJbmRleDppLnpJbmRleCxub2NsaXA6aS5ub2NsaXB9KSx0aGlzLmhhc0JveCgpJiYodD0kLlBhdGguZnJvbVJlY3QodGhpcy5wYWRkaW5nQm94LnRvUmVjdCgpLHRoaXMudmlzdWFsU3R5bGUoKSksdGhpcy52aXN1YWwuYXBwZW5kKHQpKSl9LHJlbmRlclZpc3VhbDpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy52aXN1YWw/KHRoaXMuYWRkVmlzdWFsKCksdGhpcy5jcmVhdGVBbmltYXRpb24oKSk6Qy5mbi5yZW5kZXJWaXN1YWwuY2FsbCh0aGlzKX0sdmlzdWFsT3B0aW9uczpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucztyZXR1cm57YmFja2dyb3VuZDp0LmJhY2tncm91bmQsYm9yZGVyOnQuYm9yZGVyLGNvbG9yOnQuY29sb3IsZm9udDp0LmZvbnQsbWFyZ2luOnQubWFyZ2luLHBhZGRpbmc6dC5wYWRkaW5nLHZpc2libGU6dC52aXNpYmxlfX0sdmlzdWFsQ29udGV4dDpmdW5jdGlvbih0KXt2YXIgaT10aGlzO3JldHVybnt0ZXh0OmkuY29udGVudCxyZWN0OnQudG9SZWN0KCksc2VuZGVyOnRoaXMuZ2V0Q2hhcnQoKSxvcHRpb25zOmkudmlzdWFsT3B0aW9ucygpLGNyZWF0ZVZpc3VhbDpmdW5jdGlvbigpe3JldHVybiBpLl9ib3hSZWZsb3c9ITAsaS5yZWZsb3codCksaS5fYm94UmVmbG93PSExLGkuZ2V0RGVmYXVsdFZpc3VhbCgpfX19LGdldERlZmF1bHRWaXN1YWw6ZnVuY3Rpb24oKXt0aGlzLmNyZWF0ZVZpc3VhbCgpLHRoaXMucmVuZGVyQ2hpbGRyZW4oKTt2YXIgdD10aGlzLnZpc3VhbDtyZXR1cm4gZGVsZXRlIHRoaXMudmlzdWFsLHR9LHJvdGF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucztyZXR1cm4gdGhpcy5ib3gucm90YXRlKHQucm90YXRpb24pLHRoaXMuYWxpZ24odGhpcy50YXJnZXRCb3gsRnQsdC5hbGlnbiksdGhpcy5hbGlnbih0aGlzLnRhcmdldEJveCxIdCx0LnZBbGlnbiksdGhpcy5ib3h9LHJvdGF0aW9uVHJhbnNmb3JtOmZ1bmN0aW9uKCl7dmFyIHQsaSxuLGUsbz10aGlzLm9wdGlvbnMucm90YXRpb247cmV0dXJuIG8/KHQ9dGhpcy5ub3JtYWxCb3guY2VudGVyKCksaT10Lngsbj10LnksZT10aGlzLnJvdGF0ZWRCb3guY2VudGVyKCksWi50cmFuc2Zvcm0oKS50cmFuc2xhdGUoZS54LWksZS55LW4pLnJvdGF0ZShvLFtpLG5dKSk6bnVsbH19KSxqPVAuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXM7UC5mbi5pbml0LmNhbGwoaSx0KSx0PWkub3B0aW9ucyxpLmFwcGVuZChuZXcgSSh0LnRleHQsbHQoe30sdCx7dkFsaWduOnQucG9zaXRpb259KSkpfSxvcHRpb25zOntjb2xvcjpjdCxwb3NpdGlvbjpPdCxhbGlnbjpwdCxtYXJnaW46big1KSxwYWRkaW5nOm4oNSl9LHJlZmxvdzpmdW5jdGlvbih0KXt2YXIgaT10aGlzO1AuZm4ucmVmbG93LmNhbGwoaSx0KSxpLmJveC5zbmFwVG8odCxGdCl9fSksai5idWlsZFRpdGxlPWZ1bmN0aW9uKHQsaSxuKXt2YXIgZTtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9e3RleHQ6dH0pLHQ9bHQoe3Zpc2libGU6ITB9LG4sdCksdCYmdC52aXNpYmxlJiZ0LnRleHQmJihlPW5ldyBqKHQpLGkuYXBwZW5kKGUpKSxlfSxFPUkuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsaSxuLGUsbyl7dmFyIHI9dGhpcztyLnRleHQ9aSxyLnZhbHVlPXQsci5pbmRleD1uLHIuZGF0YUl0ZW09ZSxJLmZuLmluaXQuY2FsbChyLGksbyl9LHZpc3VhbENvbnRleHQ6ZnVuY3Rpb24odCl7dmFyIGk9SS5mbi52aXN1YWxDb250ZXh0LmNhbGwodGhpcyx0KTtyZXR1cm4gaS52YWx1ZT10aGlzLnZhbHVlLGkuZGF0YUl0ZW09dGhpcy5kYXRhSXRlbSxpLmZvcm1hdD10aGlzLm9wdGlvbnMuZm9ybWF0LGkuY3VsdHVyZT10aGlzLm9wdGlvbnMuY3VsdHVyZSxpfSxjbGljazpmdW5jdGlvbih0LGkpe3ZhciBuPXRoaXM7dC50cmlnZ2VyKHV0LHtlbGVtZW50Ol8oaSksdmFsdWU6bi52YWx1ZSx0ZXh0Om4udGV4dCxpbmRleDpuLmluZGV4LGRhdGFJdGVtOm4uZGF0YUl0ZW0sYXhpczpuLnBhcmVudC5vcHRpb25zfSl9LHJvdGF0ZTpmdW5jdGlvbigpe3ZhciB0LGk7cmV0dXJuIHRoaXMub3B0aW9ucy5hbGlnblJvdGF0aW9uIT1wdD8odD10aGlzLm5vcm1hbEJveC50b1JlY3QoKSxpPXRoaXMucm90YXRpb25UcmFuc2Zvcm0oKSx0aGlzLmJveD1rKHQuYmJveChpLm1hdHJpeCgpKSkpOkkuZm4ucm90YXRlLmNhbGwodGhpcyksdGhpcy5ib3h9LHJvdGF0aW9uVHJhbnNmb3JtOmZ1bmN0aW9uKCl7dmFyIHQsaSxuLGUsbyxyLGEscyxsLHUsYyxwLGYsZCx4LG0sZyx2LHk9dGhpcy5vcHRpb25zLGI9eS5yb3RhdGlvbjtyZXR1cm4gYj95LmFsaWduUm90YXRpb249PXB0P0kuZm4ucm90YXRpb25UcmFuc2Zvcm0uY2FsbCh0aGlzKToodD1aLnRyYW5zZm9ybSgpLnJvdGF0ZShiKS5tYXRyaXgoKSxpPXRoaXMubm9ybWFsQm94LnRvUmVjdCgpLG49dGhpcy50YXJnZXRCb3gudG9SZWN0KCksZT15LnJvdGF0aW9uT3JpZ2lufHxPdCxvPWU9PU90fHxlPT1odD9GdDpIdCxyPWU9PU90fHxlPT1odD9IdDpGdCxhPWU9PU90fHxlPT1WdD9uLm9yaWdpbjpuLmJvdHRvbVJpZ2h0KCkscz1pLnRvcExlZnQoKS50cmFuc2Zvcm1Db3B5KHQpLGw9aS50b3BSaWdodCgpLnRyYW5zZm9ybUNvcHkodCksdT1pLmJvdHRvbVJpZ2h0KCkudHJhbnNmb3JtQ29weSh0KSxjPWkuYm90dG9tTGVmdCgpLnRyYW5zZm9ybUNvcHkodCkscD1aLlJlY3QuZnJvbVBvaW50cyhzLGwsdSxjKSxmPXt9LGZbcl09bi5vcmlnaW5bcl0tcC5vcmlnaW5bcl0sZD1zdC5hYnMoc1tyXStmW3JdLWFbcl0pLHg9c3QuYWJzKGxbcl0rZltyXS1hW3JdKSxoKGQsYnQpPT09aCh4LGJ0KT8obT1zLGc9bCk6eDxkPyhtPWwsZz11KToobT1zLGc9Yyksdj1tW29dKyhnW29dLW1bb10pLzIsZltvXT1uLmNlbnRlcigpW29dLXYsWi50cmFuc2Zvcm0oKS50cmFuc2xhdGUoZi54LGYueSkucm90YXRlKGIpKTpudWxsfX0pLFU9UC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcztQLmZuLmluaXQuY2FsbChpLHQpLGkub3B0aW9ucy52aXNpYmxlfHwoaS5vcHRpb25zPWx0KHt9LGkub3B0aW9ucyx7bGFiZWxzOnt2aXNpYmxlOiExfSxsaW5lOnt2aXNpYmxlOiExfSxtYXJnaW46MCxtYWpvclRpY2tTaXplOjAsbWlub3JUaWNrU2l6ZTowfSkpLGkub3B0aW9ucy5taW5vclRpY2tzPWx0KHt9LHtjb2xvcjppLm9wdGlvbnMubGluZS5jb2xvcix3aWR0aDppLm9wdGlvbnMubGluZS53aWR0aCx2aXNpYmxlOmkub3B0aW9ucy5taW5vclRpY2tUeXBlIT1MdH0saS5vcHRpb25zLm1pbm9yVGlja3Mse3NpemU6aS5vcHRpb25zLm1pbm9yVGlja1NpemUsYWxpZ246aS5vcHRpb25zLm1pbm9yVGlja1R5cGV9KSxpLm9wdGlvbnMubWFqb3JUaWNrcz1sdCh7fSx7Y29sb3I6aS5vcHRpb25zLmxpbmUuY29sb3Isd2lkdGg6aS5vcHRpb25zLmxpbmUud2lkdGgsdmlzaWJsZTppLm9wdGlvbnMubWFqb3JUaWNrVHlwZSE9THR9LGkub3B0aW9ucy5tYWpvclRpY2tzLHtzaXplOmkub3B0aW9ucy5tYWpvclRpY2tTaXplLGFsaWduOmkub3B0aW9ucy5tYWpvclRpY2tUeXBlfSksdGhpcy5vcHRpb25zLl9kZWZlckxhYmVsc3x8aS5jcmVhdGVMYWJlbHMoKSxpLmNyZWF0ZVRpdGxlKCksaS5jcmVhdGVOb3RlcygpfSxvcHRpb25zOntsYWJlbHM6e3Zpc2libGU6ITAscm90YXRpb246MCxtaXJyb3I6ITEsc3RlcDoxLHNraXA6MH0sbGluZTp7d2lkdGg6MSxjb2xvcjpjdCx2aXNpYmxlOiEwfSx0aXRsZTp7dmlzaWJsZTohMCxwb3NpdGlvbjpwdH0sbWFqb3JUaWNrczp7YWxpZ246anQsc2l6ZTo0LHNraXA6MCxzdGVwOjF9LG1pbm9yVGlja3M6e2FsaWduOmp0LHNpemU6Myxza2lwOjAsc3RlcDoxfSxheGlzQ3Jvc3NpbmdWYWx1ZTowLG1ham9yVGlja1R5cGU6anQsbWlub3JUaWNrVHlwZTpMdCxtYWpvckdyaWRMaW5lczp7c2tpcDowLHN0ZXA6MX0sbWlub3JHcmlkTGluZXM6e3Zpc2libGU6ITEsd2lkdGg6MSxjb2xvcjpjdCxza2lwOjAsc3RlcDoxfSxtYXJnaW46NSx2aXNpYmxlOiEwLHJldmVyc2U6ITEsanVzdGlmaWVkOiEwLG5vdGVzOntsYWJlbDp7dGV4dDpcIlwifX0sX2FsaWduTGluZXM6ITAsX2RlZmVyTGFiZWxzOiExfSxsYWJlbHNSYW5nZTpmdW5jdGlvbigpe3JldHVybnttaW46dGhpcy5vcHRpb25zLmxhYmVscy5za2lwLG1heDp0aGlzLmxhYmVsc0NvdW50KCl9fSxjcmVhdGVMYWJlbHM6ZnVuY3Rpb24oKXt2YXIgaSxuLGUsbyxyPXRoaXMsYT1yLm9wdGlvbnMscz1hLnZlcnRpY2FsP1V0OnB0LGw9bHQoe30sYS5sYWJlbHMse2FsaWduOnMsekluZGV4OmEuekluZGV4fSksdT1zdC5tYXgoMSxsLnN0ZXApO2lmKHIuY2hpbGRyZW49dC5ncmVwKHIuY2hpbGRyZW4sZnVuY3Rpb24odCl7cmV0dXJuISh0IGluc3RhbmNlb2YgRSl9KSxyLmxhYmVscz1bXSxsLnZpc2libGUpZm9yKGk9ci5sYWJlbHNSYW5nZSgpLG49bC5yb3RhdGlvbixydChuKSYmKGwuYWxpZ25Sb3RhdGlvbj1uLmFsaWduLGwucm90YXRpb249bi5hbmdsZSksXCJhdXRvXCI9PWwucm90YXRpb24mJihsLnJvdGF0aW9uPTAsYS5hdXRvUm90YXRlTGFiZWxzPSEwKSxvPWkubWluO288aS5tYXg7bys9dSllPXIuY3JlYXRlQXhpc0xhYmVsKG8sbCksZSYmKHIuYXBwZW5kKGUpLHIubGFiZWxzLnB1c2goZSkpfSxsaW5lQm94OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxpPXQub3B0aW9ucyxuPXQuYm94LGU9aS52ZXJ0aWNhbCxvPWkubGFiZWxzLm1pcnJvcixyPW8/bi54MTpuLngyLGE9bz9uLnkyOm4ueTEscz1pLmxpbmUud2lkdGh8fDA7cmV0dXJuIGU/UyhyLG4ueTEscixuLnkyLXMpOlMobi54MSxhLG4ueDItcyxhKX0sY3JlYXRlVGl0bGU6ZnVuY3Rpb24oKXt2YXIgdCxpPXRoaXMsbj1pLm9wdGlvbnMsZT1sdCh7cm90YXRpb246bi52ZXJ0aWNhbD8tOTA6MCx0ZXh0OlwiXCIsekluZGV4OjEsdmlzdWFsU2l6ZTohMH0sbi50aXRsZSk7ZS52aXNpYmxlJiZlLnRleHQmJih0PW5ldyBJKGUudGV4dCxlKSxpLmFwcGVuZCh0KSxpLnRpdGxlPXQpfSxjcmVhdGVOb3RlczpmdW5jdGlvbigpe3ZhciB0LGksbixlPXRoaXMsbz1lLm9wdGlvbnMscj1vLm5vdGVzLGE9ci5kYXRhfHxbXTtmb3IoZS5ub3Rlcz1bXSx0PTA7dDxhLmxlbmd0aDt0KyspaT1sdCh7fSxyLGFbdF0pLGkudmFsdWU9ZS5wYXJzZU5vdGVWYWx1ZShpLnZhbHVlKSxuPW5ldyBPKGkudmFsdWUsaS5sYWJlbC50ZXh0LGksbnVsbCxudWxsLGkpLG4ub3B0aW9ucy52aXNpYmxlJiYoSyhuLm9wdGlvbnMucG9zaXRpb24pP28udmVydGljYWwmJiFsKG4ub3B0aW9ucy5wb3NpdGlvbixbVnQsVXRdKT9uLm9wdGlvbnMucG9zaXRpb249by5yZXZlcnNlP1Z0OlV0Om8udmVydGljYWx8fGwobi5vcHRpb25zLnBvc2l0aW9uLFtPdCxodF0pfHwobi5vcHRpb25zLnBvc2l0aW9uPW8ucmV2ZXJzZT9odDpPdCk6bi5vcHRpb25zLnBvc2l0aW9uPW8udmVydGljYWw/by5yZXZlcnNlP1Z0OlV0Om8ucmV2ZXJzZT9odDpPdCxlLmFwcGVuZChuKSxlLm5vdGVzLnB1c2gobikpfSxwYXJzZU5vdGVWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdH0scmVuZGVyVmlzdWFsOmZ1bmN0aW9uKCl7UC5mbi5yZW5kZXJWaXN1YWwuY2FsbCh0aGlzKSx0aGlzLmNyZWF0ZVBsb3RCYW5kcygpfSxjcmVhdGVWaXN1YWw6ZnVuY3Rpb24oKXtQLmZuLmNyZWF0ZVZpc3VhbC5jYWxsKHRoaXMpLHRoaXMuY3JlYXRlQmFja2dyb3VuZCgpLHRoaXMuY3JlYXRlTGluZSgpfSxncmlkTGluZXNWaXN1YWw6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9ncmlkTGluZXM7cmV0dXJuIHR8fCh0PXRoaXMuX2dyaWRMaW5lcz1uZXcgJC5Hcm91cCh7ekluZGV4Oi0yfSksdGhpcy5hcHBlbmRWaXN1YWwodGhpcy5fZ3JpZExpbmVzKSksdH0sY3JlYXRlVGlja3M6ZnVuY3Rpb24odCl7ZnVuY3Rpb24gaShpLG4sbyl7dmFyIHMsdT1pLmxlbmd0aCxjPXN0Lm1heCgxLG4uc3RlcCk7aWYobi52aXNpYmxlKWZvcihzPW4uc2tpcDtzPHU7cys9YylLKG8pJiZzJW89PT0wfHwobC50aWNrWD1hP3IueDI6ci54Mi1uLnNpemUsbC50aWNrWT1hP3IueTEtbi5zaXplOnIueTEsbC5wb3NpdGlvbj1pW3NdLHQuYXBwZW5kKGUobCxuKSkpfXZhciBuPXRoaXMsbz1uLm9wdGlvbnMscj1uLmxpbmVCb3goKSxhPW8ubGFiZWxzLm1pcnJvcixzPW8ubWFqb3JUaWNrcy52aXNpYmxlP28ubWFqb3JVbml0OjAsbD17dmVydGljYWw6by52ZXJ0aWNhbH07aShuLmdldE1ham9yVGlja1Bvc2l0aW9ucygpLG8ubWFqb3JUaWNrcyksaShuLmdldE1pbm9yVGlja1Bvc2l0aW9ucygpLG8ubWlub3JUaWNrcyxzL28ubWlub3JVbml0KX0sY3JlYXRlTGluZTpmdW5jdGlvbigpe3ZhciB0LGksbj10aGlzLGU9bi5vcHRpb25zLG89ZS5saW5lLHI9bi5saW5lQm94KCk7by53aWR0aD4wJiZvLnZpc2libGUmJih0PW5ldyAkLlBhdGgoe3N0cm9rZTp7d2lkdGg6by53aWR0aCxjb2xvcjpvLmNvbG9yLGRhc2hUeXBlOm8uZGFzaFR5cGV9fSksdC5tb3ZlVG8oci54MSxyLnkxKS5saW5lVG8oci54MixyLnkyKSxlLl9hbGlnbkxpbmVzJiZ3KHQpLGk9dGhpcy5fbGluZUdyb3VwPW5ldyAkLkdyb3VwLGkuYXBwZW5kKHQpLHRoaXMudmlzdWFsLmFwcGVuZChpKSx0aGlzLmNyZWF0ZVRpY2tzKGkpKX0sZ2V0QWN0dWFsVGlja1NpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGk9dC5vcHRpb25zLG49MDtyZXR1cm4gaS5tYWpvclRpY2tzLnZpc2libGUmJmkubWlub3JUaWNrcy52aXNpYmxlP249c3QubWF4KGkubWFqb3JUaWNrcy5zaXplLGkubWlub3JUaWNrcy5zaXplKTppLm1ham9yVGlja3MudmlzaWJsZT9uPWkubWFqb3JUaWNrcy5zaXplOmkubWlub3JUaWNrcy52aXNpYmxlJiYobj1pLm1pbm9yVGlja3Muc2l6ZSksXG4gICAgbn0sY3JlYXRlQmFja2dyb3VuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT10Lm9wdGlvbnMsbj1pLmJhY2tncm91bmQsZT10LmJveDtuJiYodC5fYmFja2dyb3VuZFBhdGg9JC5QYXRoLmZyb21SZWN0KGUudG9SZWN0KCkse2ZpbGw6e2NvbG9yOm59LHN0cm9rZTpudWxsfSksdGhpcy52aXN1YWwuYXBwZW5kKHQuX2JhY2tncm91bmRQYXRoKSl9LGNyZWF0ZVBsb3RCYW5kczpmdW5jdGlvbigpe3ZhciBpLG4sZSxvLHIsYSxzPXRoaXMsbD1zLm9wdGlvbnMsdT1sLnBsb3RCYW5kc3x8W10sYz1sLnZlcnRpY2FsLGg9cy5wbG90QXJlYTswIT09dS5sZW5ndGgmJihyPXRoaXMuX3Bsb3RiYW5kR3JvdXA9bmV3ICQuR3JvdXAoe3pJbmRleDotMX0pLGE9dC5ncmVwKHMucGFuZS5heGVzLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm9wdGlvbnMudmVydGljYWwhPT1zLm9wdGlvbnMudmVydGljYWx9KVswXSx0LmVhY2godSxmdW5jdGlvbih0LGwpe3ZhciB1LHA7ZT1RKGwuZnJvbSx6dCksbz1RKGwudG8sUHQpLGM/KGk9KGF8fGguYXhpc1gpLmxpbmVCb3goKSxuPXMuZ2V0U2xvdChsLmZyb20sbC50bywhMCkpOihpPXMuZ2V0U2xvdChsLmZyb20sbC50bywhMCksbj0oYXx8aC5heGlzWSkubGluZUJveCgpKSwwIT09aS53aWR0aCgpJiYwIT09bi5oZWlnaHQoKSYmKHU9bmV3IFouUmVjdChbaS54MSxuLnkxXSxbaS53aWR0aCgpLG4uaGVpZ2h0KCldKSxwPSQuUGF0aC5mcm9tUmVjdCh1LHtmaWxsOntjb2xvcjpsLmNvbG9yLG9wYWNpdHk6bC5vcGFjaXR5fSxzdHJva2U6bnVsbH0pLHIuYXBwZW5kKHApKX0pLHMuYXBwZW5kVmlzdWFsKHIpKX0sY3JlYXRlR3JpZExpbmVzOmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGkodCxpLGUpe3ZhciByLHM9dC5sZW5ndGgsdT1zdC5tYXgoMSxpLnN0ZXApO2lmKGkudmlzaWJsZSlmb3Iocj1pLnNraXA7cjxzO3IrPXUpbj1oKHRbcl0pLGwobix4KXx8ciVlPT09MHx8YSYmZj09PW58fChkLnBvc2l0aW9uPW4sbS5hcHBlbmQobyhkLGkpKSx4LnB1c2gobikpfXZhciBuLGU9dGhpcyxyPWUub3B0aW9ucyxhPXQub3B0aW9ucy5saW5lLnZpc2libGUscz1yLm1ham9yR3JpZExpbmVzLHU9cy52aXNpYmxlP3IubWFqb3JVbml0OjAsYz1yLnZlcnRpY2FsLHA9dC5saW5lQm94KCksZj1wW2M/XCJ5MVwiOlwieDFcIl0sZD17bGluZVN0YXJ0OnBbYz9cIngxXCI6XCJ5MVwiXSxsaW5lRW5kOnBbYz9cIngyXCI6XCJ5MlwiXSx2ZXJ0aWNhbDpjfSx4PVtdLG09dGhpcy5ncmlkTGluZXNWaXN1YWwoKTtyZXR1cm4gaShlLmdldE1ham9yVGlja1Bvc2l0aW9ucygpLHIubWFqb3JHcmlkTGluZXMpLGkoZS5nZXRNaW5vclRpY2tQb3NpdGlvbnMoKSxyLm1pbm9yR3JpZExpbmVzLHUvci5taW5vclVuaXQpLG0uY2hpbGRyZW59LHJlZmxvdzpmdW5jdGlvbih0KXt2YXIgaSxuLGU9dGhpcyxvPWUub3B0aW9ucyxyPW8udmVydGljYWwsYT1lLmxhYmVscyxzPWEubGVuZ3RoLGw9ZS50aXRsZSx1PXI/R3Q6X3QsYz1sP2wuYm94W3VdKCk6MCxoPWUuZ2V0QWN0dWFsVGlja1NpemUoKStvLm1hcmdpbitjLHA9MCxmPSh0aGlzLmdldFJvb3QoKXx8e30pLmJveHx8dCxkPWZbdV0oKTtmb3Iobj0wO248cztuKyspaT1hW25dLmJveFt1XSgpLGkraDw9ZCYmKHA9c3QubWF4KHAsaSkpO2UuYm94PXI/Uyh0LngxLHQueTEsdC54MStwK2gsdC55Mik6Uyh0LngxLHQueTEsdC54Mix0LnkxK3AraCksZS5hcnJhbmdlVGl0bGUoKSxlLmFycmFuZ2VMYWJlbHMoKSxlLmFycmFuZ2VOb3RlcygpfSxnZXRMYWJlbHNUaWNrUG9zaXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TWFqb3JUaWNrUG9zaXRpb25zKCl9LGxhYmVsVGlja0luZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0LmluZGV4fSxhcnJhbmdlTGFiZWxzOmZ1bmN0aW9uKCl7dmFyIHQsaSxuLGUsbyxyLGEscyxsLHUsYyxoPXRoaXMscD1oLm9wdGlvbnMsZj1oLmxhYmVscyxkPSFwLmp1c3RpZmllZCx4PXAudmVydGljYWwsbT1oLmxpbmVCb3goKSxnPXAubGFiZWxzLm1pcnJvcix2PWguZ2V0TGFiZWxzVGlja1Bvc2l0aW9ucygpLHk9aC5nZXRBY3R1YWxUaWNrU2l6ZSgpK3AubWFyZ2luO2ZvcihuPTA7bjxmLmxlbmd0aDtuKyspZT1mW25dLG89aC5sYWJlbFRpY2tJbmRleChlKSxyPXg/ZS5ib3guaGVpZ2h0KCk6ZS5ib3gud2lkdGgoKSxhPXZbb10tci8yLHg/KGQmJihzPXZbb10sbD12W28rMV0sdT1zKyhsLXMpLzIsYT11LXIvMiksYz1tLngyLGc/KGMrPXksZS5vcHRpb25zLnJvdGF0aW9uT3JpZ2luPVZ0KTooYy09eStlLmJveC53aWR0aCgpLGUub3B0aW9ucy5yb3RhdGlvbk9yaWdpbj1VdCksdD1lLmJveC5tb3ZlKGMsYSkpOihkPyhzPXZbb10sbD12W28rMV0pOihzPWEsbD1hK3IpLGk9bS55MSxnPyhpLT15K2UuYm94LmhlaWdodCgpLGUub3B0aW9ucy5yb3RhdGlvbk9yaWdpbj1odCk6KGkrPXksZS5vcHRpb25zLnJvdGF0aW9uT3JpZ2luPU90KSx0PVMocyxpLGwsaStlLmJveC5oZWlnaHQoKSkpLGUucmVmbG93KHQpfSxhdXRvUm90YXRlTGFiZWxzOmZ1bmN0aW9uKCl7dmFyIHQsaSxuLGUsbyxyO2lmKHRoaXMub3B0aW9ucy5hdXRvUm90YXRlTGFiZWxzJiYhdGhpcy5vcHRpb25zLnZlcnRpY2FsKXtmb3IodD10aGlzLmdldE1ham9yVGlja1Bvc2l0aW9ucygpLGk9dGhpcy5sYWJlbHMscj0wO3I8aS5sZW5ndGg7cisrKWlmKG89dFtyKzFdLXRbcl0sbj1pW3JdLmJveCxuLndpZHRoKCk+byl7aWYobi5oZWlnaHQoKT5vKXtlPS05MDticmVha31lPS00NX1pZihlKXtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKWlbcl0ub3B0aW9ucy5yb3RhdGlvbj1lLGlbcl0ucmVmbG93KFMoKSk7cmV0dXJuITB9fX0sYXJyYW5nZVRpdGxlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxpPXQub3B0aW9ucyxuPWkubGFiZWxzLm1pcnJvcixlPWkudmVydGljYWwsbz10LnRpdGxlO28mJihlPyhvLm9wdGlvbnMuYWxpZ249bj9VdDpWdCxvLm9wdGlvbnMudkFsaWduPW8ub3B0aW9ucy5wb3NpdGlvbik6KG8ub3B0aW9ucy5hbGlnbj1vLm9wdGlvbnMucG9zaXRpb24sby5vcHRpb25zLnZBbGlnbj1uP090Omh0KSxvLnJlZmxvdyh0LmJveCkpfSxhcnJhbmdlTm90ZXM6ZnVuY3Rpb24oKXt2YXIgdCxpLG4sZSxvPXRoaXM7Zm9yKHQ9MDt0PG8ubm90ZXMubGVuZ3RoO3QrKylpPW8ubm90ZXNbdF0sZT1pLm9wdGlvbnMudmFsdWUsSyhlKT8oby5zaG91bGRSZW5kZXJOb3RlKGUpP2kuc2hvdygpOmkuaGlkZSgpLG49by5nZXRTbG90KGUpKTppLmhpZGUoKSxpLnJlZmxvdyhufHxvLmxpbmVCb3goKSl9LGFsaWduVG86ZnVuY3Rpb24odCl7dmFyIGk9dGhpcyxuPXQubGluZUJveCgpLGU9aS5vcHRpb25zLnZlcnRpY2FsLG89ZT9IdDpGdDtpLmJveC5zbmFwVG8obixvKSxlP2kuYm94LnNocmluaygwLGkubGluZUJveCgpLmhlaWdodCgpLW4uaGVpZ2h0KCkpOmkuYm94LnNocmluayhpLmxpbmVCb3goKS53aWR0aCgpLW4ud2lkdGgoKSwwKSxpLmJveFtvKzFdLT1pLmxpbmVCb3goKVtvKzFdLW5bbysxXSxpLmJveFtvKzJdLT1pLmxpbmVCb3goKVtvKzJdLW5bbysyXX0sYXhpc0xhYmVsVGV4dDpmdW5jdGlvbih0LGksbil7dmFyIGUsbz10O3JldHVybiBuLnRlbXBsYXRlPyhlPW50KG4udGVtcGxhdGUpLG89ZSh7dmFsdWU6dCxkYXRhSXRlbTppLGZvcm1hdDpuLmZvcm1hdCxjdWx0dXJlOm4uY3VsdHVyZX0pKTpuLmZvcm1hdCYmKG89bi5mb3JtYXQubWF0Y2goa3QpP1guZm9ybWF0KG4uZm9ybWF0LHQpOlgudG9TdHJpbmcodCxuLmZvcm1hdCxuLmN1bHR1cmUpKSxvfSxzbG90OmZ1bmN0aW9uKHQsaSxuKXt2YXIgZT10aGlzLmdldFNsb3QodCxpLG4pO2lmKGUpcmV0dXJuIGUudG9SZWN0KCl9LGNvbnRlbnRCb3g6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmJveC5jbG9uZSgpLGk9dGhpcy5sYWJlbHM7cmV0dXJuIGkubGVuZ3RoJiYoaVswXS5vcHRpb25zLnZpc2libGUmJnQud3JhcChpWzBdLmJveCksWShpKS5vcHRpb25zLnZpc2libGUmJnQud3JhcChZKGkpLmJveCkpLHR9LGxpbWl0UmFuZ2U6ZnVuY3Rpb24odCxpLG4sZSxvKXt2YXIgcixhPXRoaXMub3B0aW9ucztpZighKHQ8biYmbzwwJiYoIUsoYS5taW4pfHxhLm1pbjw9bil8fGU8aSYmbz4wJiYoIUsoYS5tYXgpfHxlPD1hLm1heCkpKXJldHVybiBpPG4mJm8+MHx8ZTx0JiZvPDA/e21pbjp0LG1heDppfToocj1pLXQsdDxuPyh0PVcubGltaXRWYWx1ZSh0LG4sZSksaT1XLmxpbWl0VmFsdWUodCtyLG4rcixlKSk6aT5lJiYoaT1XLmxpbWl0VmFsdWUoaSxuLGUpLHQ9Vy5saW1pdFZhbHVlKGktcixuLGUtcikpLHttaW46dCxtYXg6aX0pfSx2YWx1ZVJhbmdlOmZ1bmN0aW9uKCl7cmV0dXJue21pbjp0aGlzLnNlcmllc01pbixtYXg6dGhpcy5zZXJpZXNNYXh9fX0pLE89Qy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxpLG4sZSxvLHIpe3ZhciBhPXRoaXM7Qy5mbi5pbml0LmNhbGwoYSxyKSxhLnZhbHVlPXQsYS50ZXh0PWksYS5kYXRhSXRlbT1uLGEuY2F0ZWdvcnk9ZSxhLnNlcmllcz1vLGEucmVuZGVyKCl9LG9wdGlvbnM6e2ljb246e3Zpc2libGU6ITAsdHlwZTp4dH0sbGFiZWw6e3Bvc2l0aW9uOkF0LHZpc2libGU6ITAsYWxpZ246cHQsdkFsaWduOnB0fSxsaW5lOnt2aXNpYmxlOiEwfSx2aXNpYmxlOiEwLHBvc2l0aW9uOk90LHpJbmRleDoyfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnZpc2libGU9ITF9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMudmlzaWJsZT0hMH0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIHQsaSxuLGUsbz10aGlzLHI9by5vcHRpb25zLGE9ci5sYWJlbCxzPW8udGV4dCxsPXIuaWNvbix1PWwuc2l6ZSxjPVMoKTtyLnZpc2libGUmJihLKGEpJiZhLnZpc2libGUmJihhLnRlbXBsYXRlPyhlPW50KGEudGVtcGxhdGUpLHM9ZSh7ZGF0YUl0ZW06by5kYXRhSXRlbSxjYXRlZ29yeTpvLmNhdGVnb3J5LHZhbHVlOm8udmFsdWUsdGV4dDpzLHNlcmllczpvLnNlcmllc30pKTphLmZvcm1hdCYmKHM9bShhLmZvcm1hdCxzKSksby5sYWJlbD1uZXcgSShzLGx0KHt9LGEpKSxhLnBvc2l0aW9uIT09QXR8fEsodSl8fChsLnR5cGU9PT14dD91PXN0Lm1heChvLmxhYmVsLmJveC53aWR0aCgpLG8ubGFiZWwuYm94LmhlaWdodCgpKTooaT1vLmxhYmVsLmJveC53aWR0aCgpLG49by5sYWJlbC5ib3guaGVpZ2h0KCkpLGMud3JhcChvLmxhYmVsLmJveCkpKSxsLndpZHRoPWl8fHV8fHl0LGwuaGVpZ2h0PW58fHV8fHl0LHQ9bmV3IEQobHQoe30sbCkpLG8ubWFya2VyPXQsby5hcHBlbmQodCksby5sYWJlbCYmby5hcHBlbmQoby5sYWJlbCksdC5yZWZsb3coUygpKSxvLndyYXBwZXJCb3g9Yy53cmFwKHQuYm94KSl9LHJlZmxvdzpmdW5jdGlvbih0KXt2YXIgaSxuLGUsbz10aGlzLHI9by5vcHRpb25zLGE9dC5jZW50ZXIoKSxzPW8ud3JhcHBlckJveCx1PXIubGluZS5sZW5ndGgsYz1yLnBvc2l0aW9uLGg9by5sYWJlbCxwPW8ubWFya2VyO3IudmlzaWJsZSYmKGwoYyxbVnQsVXRdKT9jPT09VnQ/KGU9cy5hbGlnblRvKHQsYykudHJhbnNsYXRlKC11LHQuY2VudGVyKCkueS1zLmNlbnRlcigpLnkpLHIubGluZS52aXNpYmxlJiYoaT1bdC54MSxhLnldLG8ubGluZVBvaW50cz1baSxbZS54MixhLnldXSxuPWUuY2xvbmUoKS53cmFwUG9pbnQoaSkpKTooZT1zLmFsaWduVG8odCxjKS50cmFuc2xhdGUodSx0LmNlbnRlcigpLnktcy5jZW50ZXIoKS55KSxyLmxpbmUudmlzaWJsZSYmKGk9W3QueDIsYS55XSxvLmxpbmVQb2ludHM9W2ksW2UueDEsYS55XV0sbj1lLmNsb25lKCkud3JhcFBvaW50KGkpKSk6Yz09PWh0PyhlPXMuYWxpZ25Ubyh0LGMpLnRyYW5zbGF0ZSh0LmNlbnRlcigpLngtcy5jZW50ZXIoKS54LHUpLHIubGluZS52aXNpYmxlJiYoaT1bYS54LHQueTJdLG8ubGluZVBvaW50cz1baSxbYS54LGUueTFdXSxuPWUuY2xvbmUoKS53cmFwUG9pbnQoaSkpKTooZT1zLmFsaWduVG8odCxjKS50cmFuc2xhdGUodC5jZW50ZXIoKS54LXMuY2VudGVyKCkueCwtdSksci5saW5lLnZpc2libGUmJihpPVthLngsdC55MV0sby5saW5lUG9pbnRzPVtpLFthLngsZS55Ml1dLG49ZS5jbG9uZSgpLndyYXBQb2ludChpKSkpLHAmJnAucmVmbG93KGUpLGgmJihoLnJlZmxvdyhlKSxwJiYoci5sYWJlbC5wb3NpdGlvbj09PWp0JiZoLmJveC5hbGlnblRvKHAuYm94LGMpLGgucmVmbG93KGguYm94KSkpLG8uY29udGVudEJveD1lLG8udGFyZ2V0Qm94PXQsby5ib3g9bnx8ZSl9LGNyZWF0ZVZpc3VhbDpmdW5jdGlvbigpe0MuZm4uY3JlYXRlVmlzdWFsLmNhbGwodGhpcyksdGhpcy52aXN1YWwub3B0aW9ucy5ub2NsaXA9dGhpcy5vcHRpb25zLm5vY2xpcCx0aGlzLm9wdGlvbnMudmlzaWJsZSYmdGhpcy5jcmVhdGVMaW5lKCl9LHJlbmRlclZpc3VhbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT10Lm9wdGlvbnMsbj1pLnZpc3VhbDtpLnZpc2libGUmJm4/KHQudmlzdWFsPW4oe2RhdGFJdGVtOnQuZGF0YUl0ZW0sY2F0ZWdvcnk6dC5jYXRlZ29yeSx2YWx1ZTp0LnZhbHVlLHRleHQ6dC50ZXh0LHNlbmRlcjp0LmdldENoYXJ0KCksc2VyaWVzOnQuc2VyaWVzLHJlY3Q6dC50YXJnZXRCb3gudG9SZWN0KCksb3B0aW9uczp7YmFja2dyb3VuZDppLmJhY2tncm91bmQsYm9yZGVyOmkuYmFja2dyb3VuZCxpY29uOmkuaWNvbixsYWJlbDppLmxhYmVsLGxpbmU6aS5saW5lLHBvc2l0aW9uOmkucG9zaXRpb24sdmlzaWJsZTppLnZpc2libGV9LGNyZWF0ZVZpc3VhbDpmdW5jdGlvbigpe3QuY3JlYXRlVmlzdWFsKCksdC5yZW5kZXJDaGlsZHJlbigpO3ZhciBpPXQudmlzdWFsO3JldHVybiBkZWxldGUgdC52aXN1YWwsaX19KSx0LmFkZFZpc3VhbCgpKTpDLmZuLnJlbmRlclZpc3VhbC5jYWxsKHQpfSxjcmVhdGVMaW5lOmZ1bmN0aW9uKCl7dmFyIHQsaT10aGlzLm9wdGlvbnMubGluZTt0aGlzLmxpbmVQb2ludHMmJih0PSQuUGF0aC5mcm9tUG9pbnRzKHRoaXMubGluZVBvaW50cyx7c3Ryb2tlOntjb2xvcjppLmNvbG9yLHdpZHRoOmkud2lkdGgsZGFzaFR5cGU6aS5kYXNoVHlwZX19KSx3KHQpLHRoaXMudmlzdWFsLmFwcGVuZCh0KSl9LGNsaWNrOmZ1bmN0aW9uKHQsaSl7dmFyIG49dGhpcy5ldmVudEFyZ3MoaSk7dC50cmlnZ2VyKEJ0LG4pfHxpLnByZXZlbnREZWZhdWx0KCl9LGhvdmVyOmZ1bmN0aW9uKHQsaSl7dmFyIG49dGhpcy5ldmVudEFyZ3MoaSk7dC50cmlnZ2VyKEl0LG4pfHxpLnByZXZlbnREZWZhdWx0KCl9LGxlYXZlOmZ1bmN0aW9uKHQpe3QuX3Vuc2V0QWN0aXZlUG9pbnQoKX0sZXZlbnRBcmdzOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMsbj1pLm9wdGlvbnM7cmV0dXJue2VsZW1lbnQ6Xyh0KSx0ZXh0Oksobi5sYWJlbCk/bi5sYWJlbC50ZXh0OlwiXCIsZGF0YUl0ZW06aS5kYXRhSXRlbSxzZXJpZXM6aS5zZXJpZXMsdmFsdWU6aS52YWx1ZSxjYXRlZ29yeTppLmNhdGVnb3J5LHZpc3VhbDppLnZpc3VhbH19fSksRD1DLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGkpe3RoaXMucG9pbnREYXRhPWksQy5mbi5pbml0LmNhbGwodGhpcyx0KX0sb3B0aW9uczp7dHlwZTp4dCxhbGlnbjpwdCx2QWxpZ246cHR9LGdldEVsZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgdCxpLG49dGhpcyxlPW4ub3B0aW9ucyxvPWUudHlwZSxyPWUucm90YXRpb24sYT1uLnBhZGRpbmdCb3gscz1hLmNlbnRlcigpLGw9YS53aWR0aCgpLzI7aWYoZS52aXNpYmxlJiZuLmhhc0JveCgpKXJldHVybiBpPW4udmlzdWFsU3R5bGUoKSxvPT09eHQ/dD1uZXcgJC5DaXJjbGUobmV3IFouQ2lyY2xlKFtoKGEueDErbCxmdCksaChhLnkxK2EuaGVpZ2h0KCkvMixmdCldLGwpLGkpOm89PT1EdD90PSQuUGF0aC5mcm9tUG9pbnRzKFtbYS54MStsLGEueTFdLFthLngxLGEueTJdLFthLngyLGEueTJdXSxpKS5jbG9zZSgpOm89PT1tdD8odD1uZXcgJC5NdWx0aVBhdGgoaSksdC5tb3ZlVG8oYS54MSxhLnkxKS5saW5lVG8oYS54MixhLnkyKSx0Lm1vdmVUbyhhLngxLGEueTIpLmxpbmVUbyhhLngyLGEueTEpKTp0PSQuUGF0aC5mcm9tUmVjdChhLnRvUmVjdCgpLGkpLHImJnQudHJhbnNmb3JtKFoudHJhbnNmb3JtKCkucm90YXRlKC1yLFtzLngscy55XSkpLHQub3B0aW9ucy56SW5kZXg9dGhpcy5vcHRpb25zLnpJbmRleCx0fSxjcmVhdGVFbGVtZW50OmZ1bmN0aW9uKCl7dmFyIHQsaT10aGlzLG49aS5vcHRpb25zLnZpc3VhbCxlPWkucG9pbnREYXRhfHx7fTtyZXR1cm4gdD1uP24oe3ZhbHVlOmUudmFsdWUsZGF0YUl0ZW06ZS5kYXRhSXRlbSxzZW5kZXI6aS5nZXRDaGFydCgpLHNlcmllczplLnNlcmllcyxjYXRlZ29yeTplLmNhdGVnb3J5LHJlY3Q6aS5wYWRkaW5nQm94LnRvUmVjdCgpLG9wdGlvbnM6aS52aXN1YWxPcHRpb25zKCksY3JlYXRlVmlzdWFsOmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0RWxlbWVudCgpfX0pOmkuZ2V0RWxlbWVudCgpfSx2aXN1YWxPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3JldHVybntiYWNrZ3JvdW5kOnQuYmFja2dyb3VuZCxib3JkZXI6dC5ib3JkZXIsbWFyZ2luOnQubWFyZ2luLHBhZGRpbmc6dC5wYWRkaW5nLHR5cGU6dC50eXBlLHNpemU6dC53aWR0aCx2aXNpYmxlOnQudmlzaWJsZX19LGNyZWF0ZVZpc3VhbDpmdW5jdGlvbigpe3RoaXMudmlzdWFsPXRoaXMuY3JlYXRlRWxlbWVudCgpfX0pLEc9VS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxpLG4pe3ZhciBlPXRoaXMsbz1lLmluaXREZWZhdWx0cyh0LGksbik7dGhpcy5zZXJpZXNNaW49dCx0aGlzLnNlcmllc01heD1pLFUuZm4uaW5pdC5jYWxsKGUsbyl9LHN0YXJ0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sb3B0aW9uczp7dHlwZTpcIm51bWVyaWNcIixtaW46MCxtYXg6MSx2ZXJ0aWNhbDohMCxtYWpvckdyaWRMaW5lczp7dmlzaWJsZTohMCx3aWR0aDoxLGNvbG9yOmN0fSxsYWJlbHM6e2Zvcm1hdDpcIiMuIyMjIyMjIyMjIyMjIyMjIyMjIyNcIn0sekluZGV4OjF9LGluaXREZWZhdWx0czpmdW5jdGlvbih0LGksbil7dmFyIGUsbz10aGlzLGE9bi5uYXJyb3dSYW5nZSxzPW8uYXV0b0F4aXNNaW4odCxpLGEpLGw9by5hdXRvQXhpc01heCh0LGksYSksaD1yKHMsbCkscD17bWFqb3JVbml0Omh9O3JldHVybiBuLnJvdW5kVG9NYWpvclVuaXQhPT0hMSYmKHM8MCYmZihzLGgsMS8zKSYmKHMtPWgpLGw+MCYmZihsLGgsMS8zKSYmKGwrPWgpKSxwLm1pbj1jKHMsaCkscC5tYXg9dShsLGgpLHRoaXMudG90YWxNaW49SyhuLm1pbik/c3QubWluKHAubWluLG4ubWluKTpwLm1pbix0aGlzLnRvdGFsTWF4PUsobi5tYXgpP3N0Lm1heChwLm1heCxuLm1heCk6cC5tYXgsdGhpcy50b3RhbE1ham9yVW5pdD1oLG4mJihlPUsobi5taW4pfHxLKG4ubWF4KSxlJiZuLm1pbj09PW4ubWF4JiYobi5taW4+MD9uLm1pbj0wOm4ubWF4PTEpLG4ubWFqb3JVbml0PyhwLm1pbj1jKHAubWluLG4ubWFqb3JVbml0KSxwLm1heD11KHAubWF4LG4ubWFqb3JVbml0KSk6ZSYmKG49bHQocCxuKSxwLm1ham9yVW5pdD1yKG4ubWluLG4ubWF4KSkpLHAubWlub3JVbml0PShuLm1ham9yVW5pdHx8cC5tYWpvclVuaXQpLzUsbHQocCxuKX0scmFuZ2U6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnM7cmV0dXJue21pbjp0Lm1pbixtYXg6dC5tYXh9fSxhdXRvQXhpc01heDpmdW5jdGlvbih0LGksbil7dmFyIGUsbztpZighdCYmIWkpcmV0dXJuIDE7aWYodDw9MCYmaTw9MCl7aWYoaT10PT1pPzA6aSxvPXN0LmFicygoaS10KS9pKSxuPT09ITF8fCFuJiZvPlh0KXJldHVybiAwO2U9c3QubWluKDAsaS0odC1pKS8yKX1lbHNlIHQ9dD09aT8wOnQsZT1pO3JldHVybiBlfSxhdXRvQXhpc01pbjpmdW5jdGlvbih0LGksbil7dmFyIGUsbztpZighdCYmIWkpcmV0dXJuIDA7aWYodD49MCYmaT49MCl7aWYodD10PT1pPzA6dCxvPShpLXQpL2ksbj09PSExfHwhbiYmbz5YdClyZXR1cm4gMDtlPXN0Lm1heCgwLHQtKGktdCkvMil9ZWxzZSBpPXQ9PWk/MDppLGU9dDtyZXR1cm4gZX0sZ2V0RGl2aXNpb25zOmZ1bmN0aW9uKHQpe2lmKDA9PT10KXJldHVybiAxO3ZhciBpPXRoaXMub3B0aW9ucyxuPWkubWF4LWkubWluO3JldHVybiBzdC5mbG9vcihoKG4vdCxmdCkpKzF9LGdldFRpY2tQb3NpdGlvbnM6ZnVuY3Rpb24odCxpKXt2YXIgbixlPXRoaXMsbz1lLm9wdGlvbnMscj1vLnZlcnRpY2FsLGE9by5yZXZlcnNlLHM9ZS5saW5lQm94KCksbD1yP3MuaGVpZ2h0KCk6cy53aWR0aCgpLHU9by5tYXgtby5taW4sYz1sL3UscD10KmMsZj0wLGQ9ZS5nZXREaXZpc2lvbnModCkseD0ocj8tMToxKSooYT8tMToxKSxtPTE9PT14PzE6MixnPXNbKHI/SHQ6RnQpK21dLHY9W107Zm9yKGkmJihmPWkvdCksbj0wO248ZDtuKyspbiVmIT09MCYmdi5wdXNoKGgoZyxmdCkpLGcrPXAqeDtyZXR1cm4gdn0sZ2V0TWFqb3JUaWNrUG9zaXRpb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdC5nZXRUaWNrUG9zaXRpb25zKHQub3B0aW9ucy5tYWpvclVuaXQpfSxnZXRNaW5vclRpY2tQb3NpdGlvbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0LmdldFRpY2tQb3NpdGlvbnModC5vcHRpb25zLm1pbm9yVW5pdCl9LGdldFNsb3Q6ZnVuY3Rpb24odCxpLG4pe3ZhciBlLG8scj10aGlzLGE9ci5vcHRpb25zLHM9YS5yZXZlcnNlLGw9YS52ZXJ0aWNhbCx1PWw/SHQ6RnQsYz1yLmxpbmVCb3goKSxoPWNbdSsocz8yOjEpXSxwPWw/Yy5oZWlnaHQoKTpjLndpZHRoKCksZj1zPy0xOjEsZD1mKihwLyhhLm1heC1hLm1pbikpLHg9bmV3IFMoYy54MSxjLnkxLGMueDEsYy55MSk7cmV0dXJuIEsodCl8fCh0PWl8fDApLEsoaSl8fChpPXR8fDApLG4mJih0PXN0Lm1heChzdC5taW4odCxhLm1heCksYS5taW4pLGk9c3QubWF4KHN0Lm1pbihpLGEubWF4KSxhLm1pbikpLGw/KGU9YS5tYXgtc3QubWF4KHQsaSksbz1hLm1heC1zdC5taW4odCxpKSk6KGU9c3QubWluKHQsaSktYS5taW4sbz1zdC5tYXgodCxpKS1hLm1pbikseFt1KzFdPU0oaCtkKihzP286ZSkpLHhbdSsyXT1NKGgrZCoocz9lOm8pKSx4fSxnZXRWYWx1ZTpmdW5jdGlvbih0KXt2YXIgaSxuPXRoaXMsZT1uLm9wdGlvbnMsbz1lLnJldmVyc2Uscj1lLnZlcnRpY2FsLGE9MSplLm1heCxzPTEqZS5taW4sbD1yP0h0OkZ0LHU9bi5saW5lQm94KCksYz11W2wrKG8/MjoxKV0scD1yP3UuaGVpZ2h0KCk6dS53aWR0aCgpLGY9bz8tMToxLGQ9ZioodFtsXS1jKSx4PShhLXMpL3AsbT1kKng7cmV0dXJuIGQ8MHx8ZD5wP251bGw6KGk9cj9hLW06cyttLGgoaSxidCkpfSx0cmFuc2xhdGVSYW5nZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLG49aS5vcHRpb25zLGU9aS5saW5lQm94KCksbz1uLnZlcnRpY2FsLHI9bi5yZXZlcnNlLGE9bz9lLmhlaWdodCgpOmUud2lkdGgoKSxzPW4ubWF4LW4ubWluLGw9YS9zLHU9aCh0L2wsYnQpO3JldHVybiFvJiYhcnx8byYmcnx8KHU9LXUpLHttaW46bi5taW4rdSxtYXg6bi5tYXgrdX19LHNjYWxlUmFuZ2U6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcyxuPWkub3B0aW9ucyxlPS10Km4ubWFqb3JVbml0O3JldHVybnttaW46bi5taW4tZSxtYXg6bi5tYXgrZX19LGxhYmVsc0NvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RGl2aXNpb25zKHRoaXMub3B0aW9ucy5tYWpvclVuaXQpfSxjcmVhdGVBeGlzTGFiZWw6ZnVuY3Rpb24odCxpKXt2YXIgbj10aGlzLGU9bi5vcHRpb25zLG89aChlLm1pbit0KmUubWFqb3JVbml0LGJ0KSxyPW4uYXhpc0xhYmVsVGV4dChvLG51bGwsaSk7cmV0dXJuIG5ldyBFKG8scix0LG51bGwsaSl9LHNob3VsZFJlbmRlck5vdGU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5yYW5nZSgpO3JldHVybiBpLm1pbjw9dCYmdDw9aS5tYXh9LHBhbjpmdW5jdGlvbih0KXt2YXIgaT10aGlzLnRyYW5zbGF0ZVJhbmdlKHQpO3JldHVybiB0aGlzLmxpbWl0UmFuZ2UoaS5taW4saS5tYXgsdGhpcy50b3RhbE1pbix0aGlzLnRvdGFsTWF4KX0scG9pbnRzUmFuZ2U6ZnVuY3Rpb24odCxpKXt2YXIgbj10aGlzLmdldFZhbHVlKHQpLGU9dGhpcy5nZXRWYWx1ZShpKSxvPXN0Lm1pbihuLGUpLHI9c3QubWF4KG4sZSk7aWYodGhpcy5pc1ZhbGlkUmFuZ2UobyxyKSlyZXR1cm57bWluOm8sbWF4OnJ9fSx6b29tUmFuZ2U6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5zY2FsZVJhbmdlKHQpLG49dGhpcy50b3RhbE1heCxlPXRoaXMudG90YWxNaW4sbz1XLmxpbWl0VmFsdWUoaS5taW4sZSxuKSxyPVcubGltaXRWYWx1ZShpLm1heCxlLG4pO2lmKHRoaXMuaXNWYWxpZFJhbmdlKG8scikpcmV0dXJue21pbjpvLG1heDpyfX0saXNWYWxpZFJhbmdlOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIGktdD5DdH19KSxOPVUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsaSxuKXt0aGlzLm9wdGlvbnM9dGhpcy5faW5pdE9wdGlvbnModCxpLG4pLHRoaXMuc2VyaWVzTWluPXQsdGhpcy5zZXJpZXNNYXg9aSxVLmZuLmluaXQuY2FsbCh0aGlzLG4pfSxzdGFydFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5taW59LG9wdGlvbnM6e3R5cGU6XCJsb2dcIixtYWpvclVuaXQ6MTAsbWlub3JVbml0OjEsYXhpc0Nyb3NzaW5nVmFsdWU6MSx2ZXJ0aWNhbDohMCxtYWpvckdyaWRMaW5lczp7dmlzaWJsZTohMCx3aWR0aDoxLGNvbG9yOmN0fSx6SW5kZXg6MX0sZ2V0U2xvdDpmdW5jdGlvbih0LGksbil7dmFyIGUsbyxyPXRoaXMsYT1yLm9wdGlvbnMscz1hLnJldmVyc2UsbD1hLnZlcnRpY2FsLHU9bD9IdDpGdCxjPXIubGluZUJveCgpLGg9Y1t1KyhzPzI6MSldLGY9bD9jLmhlaWdodCgpOmMud2lkdGgoKSxkPXM/LTE6MSx4PWEubWFqb3JVbml0LG09ci5sb2dNaW4sZz1yLmxvZ01heCx2PWQqKGYvKGctbSkpLHk9bmV3IFMoYy54MSxjLnkxLGMueDEsYy55MSk7aWYoSyh0KXx8KHQ9aXx8MSksSyhpKXx8KGk9dHx8MSksISh0PD0wfHxpPD0wKSlyZXR1cm4gbiYmKHQ9c3QubWF4KHN0Lm1pbih0LGEubWF4KSxhLm1pbiksaT1zdC5tYXgoc3QubWluKGksYS5tYXgpLGEubWluKSksdD1wKHQseCksaT1wKGkseCksbD8oZT1nLXN0Lm1heCh0LGkpLG89Zy1zdC5taW4odCxpKSk6KGU9c3QubWluKHQsaSktbSxvPXN0Lm1heCh0LGkpLW0pLHlbdSsxXT1NKGgrdioocz9vOmUpKSx5W3UrMl09TShoK3YqKHM/ZTpvKSkseX0sZ2V0VmFsdWU6ZnVuY3Rpb24odCl7dmFyIGksbj10aGlzLGU9bi5vcHRpb25zLG89ZS5yZXZlcnNlLHI9ZS52ZXJ0aWNhbCxhPW4ubGluZUJveCgpLHM9ZS5tYWpvclVuaXQsbD1uLmxvZ01pbix1PW4ubG9nTWF4LGM9cj09PW8/MTotMSxwPTE9PT1jPzE6MixmPXI/YS5oZWlnaHQoKTphLndpZHRoKCksZD0odS1sKS9mLHg9cj9IdDpGdCxtPWFbeCtwXSxnPWMqKHRbeF0tbSksdj1nKmQ7cmV0dXJuIGc8MHx8Zz5mP251bGw6KGk9bCt2LGgoc3QucG93KHMsaSksYnQpKX0scmFuZ2U6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnM7cmV0dXJue21pbjp0Lm1pbixtYXg6dC5tYXh9fSxzY2FsZVJhbmdlOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMsbj1pLm9wdGlvbnMsZT1uLm1ham9yVW5pdCxvPS10O3JldHVybnttaW46c3QucG93KGUsaS5sb2dNaW4tbyksbWF4OnN0LnBvdyhlLGkubG9nTWF4K28pfX0sdHJhbnNsYXRlUmFuZ2U6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcyxuPWkub3B0aW9ucyxlPW4ubWFqb3JVbml0LG89aS5saW5lQm94KCkscj1uLnZlcnRpY2FsLGE9bi5yZXZlcnNlLHM9cj9vLmhlaWdodCgpOm8ud2lkdGgoKSxsPXMvKGkubG9nTWF4LWkubG9nTWluKSx1PWgodC9sLGJ0KTtyZXR1cm4hciYmIWF8fHImJmF8fCh1PS11KSx7bWluOnN0LnBvdyhlLGkubG9nTWluK3UpLG1heDpzdC5wb3coZSxpLmxvZ01heCt1KX19LGxhYmVsc0NvdW50OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxpPXN0LmZsb29yKHQubG9nTWF4KSxuPXN0LmZsb29yKGktdC5sb2dNaW4pKzE7cmV0dXJuIG59LGdldE1ham9yVGlja1Bvc2l0aW9uczpmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT1bXTtyZXR1cm4gdC50cmF2ZXJzZU1ham9yVGlja3NQb3NpdGlvbnMoZnVuY3Rpb24odCl7aS5wdXNoKHQpfSx7c3RlcDoxLHNraXA6MH0pLGl9LGNyZWF0ZVRpY2tzOmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGkoaSxuKXtjLnRpY2tYPXM/YS54MjphLngyLW4uc2l6ZSxjLnRpY2tZPXM/YS55MS1uLnNpemU6YS55MSxjLnBvc2l0aW9uPWksdC5hcHBlbmQoZShjLG4pKX12YXIgbj10aGlzLG89W10scj1uLm9wdGlvbnMsYT1uLmxpbmVCb3goKSxzPXIubGFiZWxzLm1pcnJvcixsPXIubWFqb3JUaWNrcyx1PXIubWlub3JUaWNrcyxjPXt2ZXJ0aWNhbDpyLnZlcnRpY2FsfTtyZXR1cm4gbC52aXNpYmxlJiZuLnRyYXZlcnNlTWFqb3JUaWNrc1Bvc2l0aW9ucyhpLGwpLHUudmlzaWJsZSYmbi50cmF2ZXJzZU1pbm9yVGlja3NQb3NpdGlvbnMoaSx1KSxvfSxjcmVhdGVHcmlkTGluZXM6ZnVuY3Rpb24odCl7ZnVuY3Rpb24gaSh0LGkpe2wodCxoKXx8KGMucG9zaXRpb249dCxwLmFwcGVuZChvKGMsaSkpLGgucHVzaCh0KSl9dmFyIG49dGhpcyxlPW4ub3B0aW9ucyxyPWUubWFqb3JHcmlkTGluZXMsYT1lLm1pbm9yR3JpZExpbmVzLHM9ZS52ZXJ0aWNhbCx1PXQubGluZUJveCgpLGM9e2xpbmVTdGFydDp1W3M/XCJ4MVwiOlwieTFcIl0sbGluZUVuZDp1W3M/XCJ4MlwiOlwieTJcIl0sdmVydGljYWw6c30saD1bXSxwPXRoaXMuZ3JpZExpbmVzVmlzdWFsKCk7cmV0dXJuIHIudmlzaWJsZSYmbi50cmF2ZXJzZU1ham9yVGlja3NQb3NpdGlvbnMoaSxyKSxhLnZpc2libGUmJm4udHJhdmVyc2VNaW5vclRpY2tzUG9zaXRpb25zKGksYSkscC5jaGlsZHJlbn0sdHJhdmVyc2VNYWpvclRpY2tzUG9zaXRpb25zOmZ1bmN0aW9uKHQsaSl7dmFyIG4sZSxvPXRoaXMscj1vLl9saW5lT3B0aW9ucygpLGE9ci5saW5lU3RhcnQscz1yLnN0ZXAsbD1vLmxvZ01pbix1PW8ubG9nTWF4O2ZvcihuPXN0LmNlaWwobCkraS5za2lwO248PXU7bis9aS5zdGVwKWU9aChhK3MqKG4tbCksYnQpLHQoZSxpKX0sdHJhdmVyc2VNaW5vclRpY2tzUG9zaXRpb25zOmZ1bmN0aW9uKHQsaSl7dmFyIG4sZSxvLHIsYSxzPXRoaXMsbD1zLm9wdGlvbnMsdT1zLl9saW5lT3B0aW9ucygpLGM9dS5saW5lU3RhcnQsZj11LnN0ZXAsZD1sLm1ham9yVW5pdCx4PXMubG9nTWluLG09cy5sb2dNYXgsZz1zdC5mbG9vcih4KSx2PWwubWF4LHk9bC5taW4sYj1sLm1pbm9yVW5pdDtmb3Iobj1nO248bTtuKyspZm9yKHI9cy5fbWlub3JJbnRlcnZhbE9wdGlvbnMobiksYT1pLnNraXA7YTxiJiYoZT1yLnZhbHVlK2Eqci5taW5vclN0ZXAsIShlPnYpKTthKz1pLnN0ZXApZT49eSYmKG89aChjK2YqKHAoZSxkKS14KSxidCksdChvLGkpKX0sY3JlYXRlQXhpc0xhYmVsOmZ1bmN0aW9uKHQsaSl7dmFyIG49dGhpcyxlPW4ub3B0aW9ucyxvPXN0LmNlaWwobi5sb2dNaW4rdCkscj1NYXRoLnBvdyhlLm1ham9yVW5pdCxvKSxhPW4uYXhpc0xhYmVsVGV4dChyLG51bGwsaSk7cmV0dXJuIG5ldyBFKHIsYSx0LG51bGwsaSl9LHNob3VsZFJlbmRlck5vdGU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5yYW5nZSgpO3JldHVybiBpLm1pbjw9dCYmdDw9aS5tYXh9LF90aHJvd05lZ2F0aXZlVmFsdWVzRXJyb3I6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihcIk5vbiBwb3NpdGl2ZSB2YWx1ZXMgY2Fubm90IGJlIHVzZWQgZm9yIGEgbG9nYXJpdGhtaWMgYXhpc1wiKX0sX2luaXRPcHRpb25zOmZ1bmN0aW9uKHQsaSxuKXt2YXIgZT10aGlzLG89bHQoe30sZS5vcHRpb25zLHttaW46dCxtYXg6aX0sbikscj1vLm1pbixhPW8ubWF4LHM9by5tYWpvclVuaXQsbD10aGlzLl9hdXRvTWF4KGkscyksdT10aGlzLl9hdXRvTWluKHQsaSxvKTtyZXR1cm4gby5heGlzQ3Jvc3NpbmdWYWx1ZTw9MCYmZS5fdGhyb3dOZWdhdGl2ZVZhbHVlc0Vycm9yKCksSyhuLm1heCk/bi5tYXg8PTAmJmUuX3Rocm93TmVnYXRpdmVWYWx1ZXNFcnJvcigpOmE9bCxLKG4ubWluKT9uLm1pbjw9MCYmZS5fdGhyb3dOZWdhdGl2ZVZhbHVlc0Vycm9yKCk6cj11LHRoaXMudG90YWxNaW49SyhuLm1pbik/c3QubWluKHUsbi5taW4pOnUsdGhpcy50b3RhbE1heD1LKG4ubWF4KT9zdC5tYXgobCxuLm1heCk6bCxlLmxvZ01pbj1oKHAocixzKSxidCksZS5sb2dNYXg9aChwKGEscyksYnQpLG8ubWF4PWEsby5taW49cixvLm1pbm9yVW5pdD1uLm1pbm9yVW5pdHx8aChzLTEsYnQpLG99LF9hdXRvTWluOmZ1bmN0aW9uKHQsaSxuKXt2YXIgZT10LG89bi5tYWpvclVuaXQ7cmV0dXJuIHQ8PTA/ZT1pPD0xP3N0LnBvdyhvLC0yKToxOm4ubmFycm93UmFuZ2V8fChlPXN0LnBvdyhvLHN0LmZsb29yKHAodCxvKSkpKSxlfSxfYXV0b01heDpmdW5jdGlvbih0LGkpe3ZhciBuLGU9aChwKHQsaSksYnQpJTE7cmV0dXJuIG49dDw9MD9pOjAhPT1lJiYoZTwuM3x8ZT4uOSk/c3QucG93KGkscCh0LGkpKy4yKTpzdC5wb3coaSxzdC5jZWlsKHAodCxpKSkpfSxwYW46ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy50cmFuc2xhdGVSYW5nZSh0KTtyZXR1cm4gdGhpcy5saW1pdFJhbmdlKGkubWluLGkubWF4LHRoaXMudG90YWxNaW4sdGhpcy50b3RhbE1heCwtdCl9LHBvaW50c1JhbmdlOmZ1bmN0aW9uKHQsaSl7dmFyIG49dGhpcy5nZXRWYWx1ZSh0KSxlPXRoaXMuZ2V0VmFsdWUoaSksbz1zdC5taW4obixlKSxyPXN0Lm1heChuLGUpO3JldHVybnttaW46byxtYXg6cn19LHpvb21SYW5nZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnMsbj10aGlzLnNjYWxlUmFuZ2UodCksZT10aGlzLnRvdGFsTWF4LG89dGhpcy50b3RhbE1pbixyPVcubGltaXRWYWx1ZShuLm1pbixvLGUpLGE9Vy5saW1pdFZhbHVlKG4ubWF4LG8sZSkscz1pLm1ham9yVW5pdCxsPWE+ciYmaS5taW4mJmkubWF4JiZoKHAoaS5tYXgscyktcChpLm1pbixzKSxidCk8MSx1PSEoaS5taW49PT1vJiZpLm1heD09PWUpJiZoKHAoYSxzKS1wKHIscyksYnQpPj0xO2lmKGx8fHUpcmV0dXJue21pbjpyLG1heDphfX0sX21pbm9ySW50ZXJ2YWxPcHRpb25zOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMub3B0aW9ucy5tYWpvclVuaXQsbj1zdC5wb3coaSx0KSxlPXN0LnBvdyhpLHQrMSksbz1lLW4scj1vL3RoaXMub3B0aW9ucy5taW5vclVuaXQ7cmV0dXJue3ZhbHVlOm4sbWlub3JTdGVwOnJ9fSxfbGluZU9wdGlvbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGk9dC5vcHRpb25zLG49aS5yZXZlcnNlLGU9aS52ZXJ0aWNhbCxvPWU/SHQ6RnQscj10LmxpbmVCb3goKSxhPWU9PT1uPzE6LTEscz0xPT09YT8xOjIsbD1lP3IuaGVpZ2h0KCk6ci53aWR0aCgpLHU9YSoobC8odC5sb2dNYXgtdC5sb2dNaW4pKSxjPXJbbytzXTtyZXR1cm57c3RlcDp1LGxpbmVTdGFydDpjLGxpbmVCb3g6cn19fSksSi5HcmFkaWVudHM9e2dsYXNzOnt0eXBlOlJ0LHJvdGF0aW9uOjAsc3RvcHM6W3tvZmZzZXQ6MCxjb2xvcjpOdCxvcGFjaXR5OjB9LHtvZmZzZXQ6LjI1LGNvbG9yOk50LG9wYWNpdHk6LjN9LHtvZmZzZXQ6MSxjb2xvcjpOdCxvcGFjaXR5OjB9XX0sc2hhcnBCZXZlbDp7dHlwZTpFdCxzdG9wczpbe29mZnNldDowLGNvbG9yOk50LG9wYWNpdHk6LjU1fSx7b2Zmc2V0Oi42NSxjb2xvcjpOdCxvcGFjaXR5OjB9LHtvZmZzZXQ6Ljk1LGNvbG9yOk50LG9wYWNpdHk6LjI1fV19LHJvdW5kZWRCZXZlbDp7dHlwZTpFdCxzdG9wczpbe29mZnNldDouMzMsY29sb3I6TnQsb3BhY2l0eTouMDZ9LHtvZmZzZXQ6LjgzLGNvbG9yOk50LG9wYWNpdHk6LjJ9LHtvZmZzZXQ6Ljk1LGNvbG9yOk50LG9wYWNpdHk6MH1dfSxyb3VuZGVkR2xhc3M6e3R5cGU6RXQsc3VwcG9ydFZNTDohMSxzdG9wczpbe29mZnNldDowLGNvbG9yOk50LG9wYWNpdHk6MH0se29mZnNldDouNSxjb2xvcjpOdCxvcGFjaXR5Oi4zfSx7b2Zmc2V0Oi45OSxjb2xvcjpOdCxvcGFjaXR5OjB9XX0sc2hhcnBHbGFzczp7dHlwZTpFdCxzdXBwb3J0Vk1MOiExLHN0b3BzOlt7b2Zmc2V0OjAsY29sb3I6TnQsb3BhY2l0eTouMn0se29mZnNldDouMTUsY29sb3I6TnQsb3BhY2l0eTouMTV9LHtvZmZzZXQ6LjE3LGNvbG9yOk50LG9wYWNpdHk6LjM1fSx7b2Zmc2V0Oi44NSxjb2xvcjpOdCxvcGFjaXR5Oi4wNX0se29mZnNldDouODcsY29sb3I6TnQsb3BhY2l0eTouMTV9LHtvZmZzZXQ6Ljk5LGNvbG9yOk50LG9wYWNpdHk6MH1dfX0sRj17ZXh0ZW5kOmZ1bmN0aW9uKHQsaSl7aWYoIXQuZXhwb3J0VmlzdWFsKXRocm93IEVycm9yKFwiTWl4aW4gdGFyZ2V0IGhhcyBubyBleHBvcnRWaXN1YWwgbWV0aG9kIGRlZmluZWQuXCIpO3QuZXhwb3J0U1ZHPXRoaXMuZXhwb3J0U1ZHLHQuZXhwb3J0SW1hZ2U9dGhpcy5leHBvcnRJbWFnZSx0LmV4cG9ydFBERj10aGlzLmV4cG9ydFBERixpfHwodC5zdmc9dGhpcy5zdmcsdC5pbWFnZURhdGFVUkw9dGhpcy5pbWFnZURhdGFVUkwpfSxleHBvcnRTVkc6ZnVuY3Rpb24odCl7cmV0dXJuICQuZXhwb3J0U1ZHKHRoaXMuZXhwb3J0VmlzdWFsKCksdCl9LGV4cG9ydEltYWdlOmZ1bmN0aW9uKHQpe3JldHVybiAkLmV4cG9ydEltYWdlKHRoaXMuZXhwb3J0VmlzdWFsKHQpLHQpfSxleHBvcnRQREY6ZnVuY3Rpb24odCl7cmV0dXJuICQuZXhwb3J0UERGKHRoaXMuZXhwb3J0VmlzdWFsKCksdCl9LHN2ZzpmdW5jdGlvbigpe2lmKCQuc3ZnLlN1cmZhY2UpcmV0dXJuICQuc3ZnLl9leHBvcnRHcm91cCh0aGlzLmV4cG9ydFZpc3VhbCgpKTt0aHJvdyBFcnJvcihcIlNWRyBFeHBvcnQgZmFpbGVkLiBVbmFibGUgdG8gZXhwb3J0IGluc3RhbnRpYXRlIGtlbmRvLmRyYXdpbmcuc3ZnLlN1cmZhY2VcIil9LGltYWdlRGF0YVVSTDpmdW5jdGlvbigpe3ZhciBpLG4sZTtpZighWC5zdXBwb3J0LmNhbnZhcylyZXR1cm4gbnVsbDtpZigkLmNhbnZhcy5TdXJmYWNlKXJldHVybiBpPXQoXCI8ZGl2IC8+XCIpLmNzcyh7ZGlzcGxheTpcIm5vbmVcIix3aWR0aDp0aGlzLmVsZW1lbnQud2lkdGgoKSxoZWlnaHQ6dGhpcy5lbGVtZW50LmhlaWdodCgpfSkuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSksbj1uZXcgJC5jYW52YXMuU3VyZmFjZShpKSxuLmRyYXcodGhpcy5leHBvcnRWaXN1YWwoKSksZT1uLl9yb290RWxlbWVudC50b0RhdGFVUkwoKSxuLmRlc3Ryb3koKSxpLnJlbW92ZSgpLGU7dGhyb3cgRXJyb3IoXCJJbWFnZSBFeHBvcnQgZmFpbGVkLiBVbmFibGUgdG8gZXhwb3J0IGluc3RhbnRpYXRlIGtlbmRvLmRyYXdpbmcuY2FudmFzLlN1cmZhY2VcIil9fSxIPWZ1bmN0aW9uKHQpe3RoaXMuY2xvc2VkPXR9LEgucHJvdG90eXBlPUguZm49e1dFSUdIVDouMzMzLEVYVFJFTVVNX0FMTE9XRURfREVWSUFUSU9OOi4wMSxwcm9jZXNzOmZ1bmN0aW9uKHQpe3ZhciBpLG4sZSxvLHIsYSxzLGwsdSxjLGg9dGhpcyxwPWguY2xvc2VkLGY9dC5zbGljZSgwKSxkPWYubGVuZ3RoLHg9W107aWYoZD4yJiYoaC5yZW1vdmVEdXBsaWNhdGVzKDAsZiksZD1mLmxlbmd0aCksZDwyfHwyPT1kJiZmWzBdLmVxdWFscyhmWzFdKSlyZXR1cm4geDtmb3IoaT1mWzBdLG49ZlsxXSxlPWZbMl0seC5wdXNoKG5ldyAkLlNlZ21lbnQoaSkpO2kuZXF1YWxzKGZbZC0xXSk7KXA9ITAsZi5wb3AoKSxkLS07aWYoMj09ZClyZXR1cm4gcz1oLnRhbmdlbnQoaSxuLEZ0LEh0KSxZKHgpLmNvbnRyb2xPdXQoaC5maXJzdENvbnRyb2xQb2ludChzLGksbixGdCxIdCkpLHgucHVzaChuZXcgJC5TZWdtZW50KG4saC5zZWNvbmRDb250cm9sUG9pbnQocyxpLG4sRnQsSHQpKSkseDtmb3IocD8oaT1mW2QtMV0sbj1mWzBdLGU9ZlsxXSxvPWguY29udHJvbFBvaW50cyhpLG4sZSkscj1vWzFdLGE9b1swXSk6KHM9aC50YW5nZW50KGksbixGdCxIdCkscj1oLmZpcnN0Q29udHJvbFBvaW50KHMsaSxuLEZ0LEh0KSksbD1yLHU9MDt1PD1kLTM7dSsrKWgucmVtb3ZlRHVwbGljYXRlcyh1LGYpLGQ9Zi5sZW5ndGgsdSszPD1kJiYoaT1mW3VdLG49Zlt1KzFdLGU9Zlt1KzJdLG89aC5jb250cm9sUG9pbnRzKGksbixlKSxZKHgpLmNvbnRyb2xPdXQobCksbD1vWzFdLGM9b1swXSx4LnB1c2gobmV3ICQuU2VnbWVudChuLGMpKSk7cmV0dXJuIHA/KGk9ZltkLTJdLG49ZltkLTFdLGU9ZlswXSxvPWguY29udHJvbFBvaW50cyhpLG4sZSksWSh4KS5jb250cm9sT3V0KGwpLHgucHVzaChuZXcgJC5TZWdtZW50KG4sb1swXSkpLFkoeCkuY29udHJvbE91dChvWzFdKSx4LnB1c2gobmV3ICQuU2VnbWVudChlLGEpKSk6KHM9aC50YW5nZW50KG4sZSxGdCxIdCksWSh4KS5jb250cm9sT3V0KGwpLHgucHVzaChuZXcgJC5TZWdtZW50KGUsaC5zZWNvbmRDb250cm9sUG9pbnQocyxuLGUsRnQsSHQpKSkpLHh9LHJlbW92ZUR1cGxpY2F0ZXM6ZnVuY3Rpb24odCxpKXtmb3IoO2lbdCsxXSYmKGlbdF0uZXF1YWxzKGlbdCsxXSl8fGlbdCsxXS5lcXVhbHMoaVt0KzJdKSk7KWkuc3BsaWNlKHQrMSwxKX0saW52ZXJ0QXhpczpmdW5jdGlvbih0LGksbil7dmFyIGUsbyxyPXRoaXMsYT0hMTtyZXR1cm4gdC54PT09aS54P2E9ITA6aS54PT09bi54PyhpLnk8bi55JiZ0Lnk8PWkueXx8bi55PGkueSYmaS55PD10LnkpJiYoYT0hMCk6KGU9ci5saW5lRnVuY3Rpb24odCxpKSxvPXIuY2FsY3VsYXRlRnVuY3Rpb24oZSxuLngpLHQueTw9aS55JiZuLnk8PW98fGkueTw9dC55JiZuLnk+PW98fChhPSEwKSksYX0saXNMaW5lOmZ1bmN0aW9uKHQsaSxuKXt2YXIgZT10aGlzLG89ZS5saW5lRnVuY3Rpb24odCxpKSxyPWUuY2FsY3VsYXRlRnVuY3Rpb24obyxuLngpO3JldHVybiB0Lng9PWkueCYmaS54PT1uLnh8fGgociwxKT09PWgobi55LDEpfSxsaW5lRnVuY3Rpb246ZnVuY3Rpb24odCxpKXt2YXIgbj0oaS55LXQueSkvKGkueC10LngpLGU9dC55LW4qdC54O3JldHVybltlLG5dfSxjb250cm9sUG9pbnRzOmZ1bmN0aW9uKHQsaSxuKXt2YXIgZSxvLHIsYSxzLGwsdT10aGlzLGM9RnQsaD1IdCxwPSExLGY9ITEsZD11LkVYVFJFTVVNX0FMTE9XRURfREVWSUFUSU9OO3JldHVybiB1LmlzTGluZSh0LGksbik/ZT11LnRhbmdlbnQodCxpLEZ0LEh0KToobz17eDp1LmlzTW9ub3RvbmljQnlGaWVsZCh0LGksbixGdCkseTp1LmlzTW9ub3RvbmljQnlGaWVsZCh0LGksbixIdCl9LG8ueCYmby55PyhlPXUudGFuZ2VudCh0LG4sRnQsSHQpLHA9ITApOih1LmludmVydEF4aXModCxpLG4pJiYoYz1IdCxoPUZ0KSxvW2NdP2U9MDoocz1uW2hdPHRbaF0mJnRbaF08PWlbaF18fHRbaF08bltoXSYmaVtoXTw9dFtoXT91LnNpZ24oKG5baF0tdFtoXSkqKGlbY10tdFtjXSkpOi11LnNpZ24oKG5bY10tdFtjXSkqKGlbaF0tdFtoXSkpLGU9ZCpzLGY9ITApKSksYT11LnNlY29uZENvbnRyb2xQb2ludChlLHQsaSxjLGgpLGYmJihsPWMsYz1oLGg9bCkscj11LmZpcnN0Q29udHJvbFBvaW50KGUsaSxuLGMsaCkscCYmKHUucmVzdHJpY3RDb250cm9sUG9pbnQodCxpLGEsZSksdS5yZXN0cmljdENvbnRyb2xQb2ludChpLG4scixlKSksW2Escl19LHNpZ246ZnVuY3Rpb24odCl7cmV0dXJuIHQ8PTA/LTE6MX0scmVzdHJpY3RDb250cm9sUG9pbnQ6ZnVuY3Rpb24odCxpLG4sZSl7dC55PGkueT9pLnk8bi55PyhuLng9dC54KyhpLnktdC55KS9lLG4ueT1pLnkpOm4ueTx0LnkmJihuLng9aS54LShpLnktdC55KS9lLG4ueT10LnkpOm4ueTxpLnk/KG4ueD10LngtKHQueS1pLnkpL2Usbi55PWkueSk6dC55PG4ueSYmKG4ueD1pLngrKHQueS1pLnkpL2Usbi55PXQueSl9LHRhbmdlbnQ6ZnVuY3Rpb24odCxpLG4sZSl7dmFyIG8scj1pW25dLXRbbl0sYT1pW2VdLXRbZV07cmV0dXJuIG89MD09PXI/MDphL3J9LGlzTW9ub3RvbmljQnlGaWVsZDpmdW5jdGlvbih0LGksbixlKXtyZXR1cm4gbltlXT5pW2VdJiZpW2VdPnRbZV18fG5bZV08aVtlXSYmaVtlXTx0W2VdfSxmaXJzdENvbnRyb2xQb2ludDpmdW5jdGlvbih0LGksbixlLG8pe3ZhciByPXRoaXMsYT1pW2VdLHM9bltlXSxsPShzLWEpKnIuV0VJR0hUO3JldHVybiByLnBvaW50KGErbCxpW29dK2wqdCxlLG8pfSxzZWNvbmRDb250cm9sUG9pbnQ6ZnVuY3Rpb24odCxpLG4sZSxvKXt2YXIgcj10aGlzLGE9aVtlXSxzPW5bZV0sbD0ocy1hKSpyLldFSUdIVDtyZXR1cm4gci5wb2ludChzLWwsbltvXS1sKnQsZSxvKX0scG9pbnQ6ZnVuY3Rpb24odCxpLG4sZSl7dmFyIG89bmV3IFouUG9pbnQ7cmV0dXJuIG9bbl09dCxvW2VdPWksb30sY2FsY3VsYXRlRnVuY3Rpb246ZnVuY3Rpb24odCxpKXt2YXIgbixlPTAsbz10Lmxlbmd0aDtmb3Iobj0wO248bztuKyspZSs9TWF0aC5wb3coaSxuKSp0W25dO3JldHVybiBlfX0sYi5fZWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKSxsdChYLmRhdGF2aXose0FYSVNfTEFCRUxfQ0xJQ0s6dXQsQ09PUkRfUFJFQ0lTSU9OOmZ0LERFRkFVTFRfUFJFQ0lTSU9OOmJ0LERFRkFVTFRfV0lEVEg6d3QsREVGQVVMVF9IRUlHSFQ6dnQsREVGQVVMVF9GT05UOmd0LElOSVRJQUxfQU5JTUFUSU9OX0RVUkFUSU9OOlN0LE5PVEVfQ0xJQ0s6QnQsTk9URV9IT1ZFUjpJdCxDTElQOmR0LEF4aXM6VSxBeGlzTGFiZWw6RSxCb3gyRDpTLEJveEVsZW1lbnQ6QyxDaGFydEVsZW1lbnQ6UCxDdXJ2ZVByb2Nlc3NvcjpILEV4cG9ydE1peGluOkYsRmxvYXRFbGVtZW50OkIsTG9nYXJpdGhtaWNBeGlzOk4sTm90ZTpPLE51bWVyaWNBeGlzOkcsUG9pbnQyRDpXdCxSaW5nOkEsUm9vdEVsZW1lbnQ6eixTZWN0b3I6VixTaGFwZUJ1aWxkZXI6UixTaGFwZUVsZW1lbnQ6RCxUZXh0OkwsVGV4dEJveDpJLFRpdGxlOmosYWxpZ25QYXRoVG9QaXhlbDp3LGF1dG9Gb3JtYXQ6bSxhdXRvTWFqb3JVbml0OnIsYm94RGlmZjpzLGRhdGVDb21wYXJlcjp2LGRlY29kZUVudGl0aWVzOmIsZXZlbnRUYXJnZXRFbGVtZW50Ol8sZ2V0U3BhY2luZzpuLGluQXJyYXk6bCxpbnRlcnBvbGF0ZVZhbHVlOmQsbXdEZWx0YTp5LHJlY3RUb0JveDprLHJvdGF0ZVBvaW50OmEscm91bmQ6aCxjZWlsOnUsZmxvb3I6Y30pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KSx3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxpLG4peyhufHxpKSgpfSk7OyFmdW5jdGlvbihvLGRlZmluZSl7ZGVmaW5lKFwidXRpbC9tYWluLm1pblwiLFtcImtlbmRvLmNvcmUubWluXCJdLG8pfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIG8obyl7cmV0dXJuIHR5cGVvZiBvIT09T31mdW5jdGlvbiBlKG8sZSl7dmFyIGw9cihlKTtyZXR1cm4gRy5yb3VuZChvKmwpL2x9ZnVuY3Rpb24gcihvKXtyZXR1cm4gbz9HLnBvdygxMCxvKToxfWZ1bmN0aW9uIGwobyxlLHIpe3JldHVybiBHLm1heChHLm1pbihvLHIpLGUpfWZ1bmN0aW9uIGMobyl7cmV0dXJuIG8qSX1mdW5jdGlvbiBhKG8pe3JldHVybiBvL0l9ZnVuY3Rpb24gdChvKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgbyYmIWlzTmFOKG8pfWZ1bmN0aW9uIG4oZSxyKXtyZXR1cm4gbyhlKT9lOnJ9ZnVuY3Rpb24gaShvKXtyZXR1cm4gbypvfWZ1bmN0aW9uIGYobyl7dmFyIGUscj1bXTtmb3IoZSBpbiBvKXIucHVzaChlK29bZV0pO3JldHVybiByLnNvcnQoKS5qb2luKFwiXCIpfWZ1bmN0aW9uIHMobyl7dmFyIGUscj0yMTY2MTM2MjYxO2ZvcihlPTA7ZTxvLmxlbmd0aDsrK2Upcis9KHI8PDEpKyhyPDw0KSsocjw8NykrKHI8PDgpKyhyPDwyNCkscl49by5jaGFyQ29kZUF0KGUpO3JldHVybiByPj4+MH1mdW5jdGlvbiBkKG8pe3JldHVybiBzKGYobykpfWZ1bmN0aW9uIGIobyl7dmFyIGUscj1vLmxlbmd0aCxsPU4sYz1TO2ZvcihlPTA7ZTxyO2UrKyljPUcubWF4KGMsb1tlXSksbD1HLm1pbihsLG9bZV0pO3JldHVybnttaW46bCxtYXg6Y319ZnVuY3Rpb24gdShvKXtyZXR1cm4gYihvKS5taW59ZnVuY3Rpb24gaChvKXtyZXR1cm4gYihvKS5tYXh9ZnVuY3Rpb24gayhvKXtyZXR1cm4gbShvKS5taW59ZnVuY3Rpb24gZyhvKXtyZXR1cm4gbShvKS5tYXh9ZnVuY3Rpb24gbShvKXt2YXIgZSxyLGwsYz1OLGE9Uztmb3IoZT0wLHI9by5sZW5ndGg7ZTxyO2UrKylsPW9bZV0sbnVsbCE9PWwmJmlzRmluaXRlKGwpJiYoYz1HLm1pbihjLGwpLGE9Ry5tYXgoYSxsKSk7cmV0dXJue21pbjpjPT09Tj92b2lkIDA6YyxtYXg6YT09PVM/dm9pZCAwOmF9fWZ1bmN0aW9uIHAobyl7aWYobylyZXR1cm4gb1tvLmxlbmd0aC0xXX1mdW5jdGlvbiB2KG8sZSl7cmV0dXJuIG8ucHVzaC5hcHBseShvLGUpLG99ZnVuY3Rpb24gdyhvKXtyZXR1cm4gUC50ZW1wbGF0ZShvLHt1c2VXaXRoQmxvY2s6ITEscGFyYW1OYW1lOlwiZFwifSl9ZnVuY3Rpb24gQyhlLHIpe3JldHVybiBvKHIpJiZudWxsIT09cj9cIiBcIitlK1wiPSdcIityK1wiJyBcIjpcIlwifWZ1bmN0aW9uIHkobyl7dmFyIGUscj1cIlwiO2ZvcihlPTA7ZTxvLmxlbmd0aDtlKyspcis9QyhvW2VdWzBdLG9bZV1bMV0pO3JldHVybiByfWZ1bmN0aW9uIEQoZSl7dmFyIHIsbCxjPVwiXCI7Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKylsPWVbcl1bMV0sbyhsKSYmKGMrPWVbcl1bMF0rXCI6XCIrbCtcIjtcIik7aWYoXCJcIiE9PWMpcmV0dXJuIGN9ZnVuY3Rpb24geChvKXtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgbyYmKG8rPVwicHhcIiksb31mdW5jdGlvbiBCKG8pe3ZhciBlLHIsbD1bXTtpZihvKWZvcihlPVAudG9IeXBoZW5zKG8pLnNwbGl0KFwiLVwiKSxyPTA7cjxlLmxlbmd0aDtyKyspbC5wdXNoKFwiay1wb3MtXCIrZVtyXSk7cmV0dXJuIGwuam9pbihcIiBcIil9ZnVuY3Rpb24gXyhlKXtyZXR1cm5cIlwiPT09ZXx8bnVsbD09PWV8fFwibm9uZVwiPT09ZXx8XCJ0cmFuc3BhcmVudFwiPT09ZXx8IW8oZSl9ZnVuY3Rpb24gQShvKXtmb3IodmFyIGU9ezE6XCJpXCIsMTA6XCJ4XCIsMTAwOlwiY1wiLDI6XCJpaVwiLDIwOlwieHhcIiwyMDA6XCJjY1wiLDM6XCJpaWlcIiwzMDpcInh4eFwiLDMwMDpcImNjY1wiLDQ6XCJpdlwiLDQwOlwieGxcIiw0MDA6XCJjZFwiLDU6XCJ2XCIsNTA6XCJsXCIsNTAwOlwiZFwiLDY6XCJ2aVwiLDYwOlwibHhcIiw2MDA6XCJkY1wiLDc6XCJ2aWlcIiw3MDpcImx4eFwiLDcwMDpcImRjY1wiLDg6XCJ2aWlpXCIsODA6XCJseHh4XCIsODAwOlwiZGNjY1wiLDk6XCJpeFwiLDkwOlwieGNcIiw5MDA6XCJjbVwiLDFlMzpcIm1cIn0scj1bMWUzLDkwMCw4MDAsNzAwLDYwMCw1MDAsNDAwLDMwMCwyMDAsMTAwLDkwLDgwLDcwLDYwLDUwLDQwLDMwLDIwLDEwLDksOCw3LDYsNSw0LDMsMiwxXSxsPVwiXCI7bz4wOylvPHJbMF0/ci5zaGlmdCgpOihsKz1lW3JbMF1dLG8tPXJbMF0pO3JldHVybiBsfWZ1bmN0aW9uIEwobyl7dmFyIGUscixsLGMsYTtmb3Iobz1vLnRvTG93ZXJDYXNlKCksZT17aToxLHY6NSx4OjEwLGw6NTAsYzoxMDAsZDo1MDAsbToxZTN9LHI9MCxsPTAsYz0wO2M8by5sZW5ndGg7KytjKXtpZihhPWVbby5jaGFyQXQoYyldLCFhKXJldHVybiBudWxsO3IrPWEsYT5sJiYoci09MipsKSxsPWF9cmV0dXJuIHJ9ZnVuY3Rpb24geihvKXt2YXIgZT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLGw9XCJcIjtmb3Iocj1hcmd1bWVudHMubGVuZ3RoOy0tcj49MDspbCs9XCI6XCIrYXJndW1lbnRzW3JdO3JldHVybiBsIGluIGU/ZVtsXTplW2xdPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBUKG8pe2Zvcih2YXIgZSxyLGw9W10sYz0wLGE9by5sZW5ndGg7YzxhOyllPW8uY2hhckNvZGVBdChjKyspLGU+PTU1Mjk2JiZlPD01NjMxOSYmYzxhPyhyPW8uY2hhckNvZGVBdChjKyspLDU2MzIwPT0oNjQ1MTImcik/bC5wdXNoKCgoMTAyMyZlKTw8MTApKygxMDIzJnIpKzY1NTM2KToobC5wdXNoKGUpLGMtLSkpOmwucHVzaChlKTtyZXR1cm4gbH1mdW5jdGlvbiBqKG8pe3JldHVybiBvLm1hcChmdW5jdGlvbihvKXt2YXIgZT1cIlwiO3JldHVybiBvPjY1NTM1JiYoby09NjU1MzYsZSs9U3RyaW5nLmZyb21DaGFyQ29kZShvPj4+MTAmMTAyM3w1NTI5Niksbz01NjMyMHwxMDIzJm8pLGUrPVN0cmluZy5mcm9tQ2hhckNvZGUobyl9KS5qb2luKFwiXCIpfWZ1bmN0aW9uIE0obyxlKXtmdW5jdGlvbiByKG8scil7Zm9yKHZhciBsPVtdLGM9MCxhPTAsdD0wO2M8by5sZW5ndGgmJmE8ci5sZW5ndGg7KWUob1tjXSxyW2FdKTw9MD9sW3QrK109b1tjKytdOmxbdCsrXT1yW2ErK107cmV0dXJuIGM8by5sZW5ndGgmJmwucHVzaC5hcHBseShsLG8uc2xpY2UoYykpLGE8ci5sZW5ndGgmJmwucHVzaC5hcHBseShsLHIuc2xpY2UoYSkpLGx9cmV0dXJuIG8ubGVuZ3RoPDI/by5zbGljZSgpOmZ1bmN0aW9uIGwobyl7dmFyIGUsYyxhO3JldHVybiBvLmxlbmd0aDw9MT9vOihlPU1hdGguZmxvb3Ioby5sZW5ndGgvMiksYz1vLnNsaWNlKDAsZSksYT1vLnNsaWNlKGUpLGM9bChjKSxhPWwoYSkscihjLGEpKX0obyl9dmFyIEc9TWF0aCxQPXdpbmRvdy5rZW5kbyxXPVAuZGVlcEV4dGVuZCxJPUcuUEkvMTgwLE49TnVtYmVyLk1BWF9WQUxVRSxTPS1OdW1iZXIuTUFYX1ZBTFVFLE89XCJ1bmRlZmluZWRcIixFPURhdGUubm93O0V8fChFPWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9KSxXKFAse3V0aWw6e01BWF9OVU06TixNSU5fTlVNOlMsYXBwZW5kOnYsYXJyYXlMaW1pdHM6YixhcnJheU1pbjp1LGFycmF5TWF4OmgsZGVmaW5lZDpvLGRlZzphLGhhc2hLZXk6cyxoYXNoT2JqZWN0OmQsaXNOdW1iZXI6dCxpc1RyYW5zcGFyZW50Ol8sbGFzdDpwLGxpbWl0VmFsdWU6bCxub3c6RSxvYmplY3RLZXk6Zixyb3VuZDplLHJhZDpjLHJlbmRlckF0dHI6QyxyZW5kZXJBbGxBdHRyOnkscmVuZGVyUG9zOkIscmVuZGVyU2l6ZTp4LHJlbmRlclN0eWxlOkQscmVuZGVyVGVtcGxhdGU6dyxzcGFyc2VBcnJheUxpbWl0czptLHNwYXJzZUFycmF5TWluOmssc3BhcnNlQXJyYXlNYXg6ZyxzcXI6aSx2YWx1ZU9yRGVmYXVsdDpuLHJvbWFuVG9BcmFiaWM6TCxhcmFiaWNUb1JvbWFuOkEsbWVtb2l6ZTp6LHVjczJlbmNvZGU6aix1Y3MyZGVjb2RlOlQsbWVyZ2VTb3J0Ok19fSksUC5kcmF3aW5nLnV0aWw9UC51dGlsLFAuZGF0YXZpei51dGlsPVAudXRpbH0oKSx3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24obyxlLHIpeyhyfHxlKSgpfSksZnVuY3Rpb24obyxkZWZpbmUpe2RlZmluZShcInV0aWwvdGV4dC1tZXRyaWNzLm1pblwiLFtcImtlbmRvLmNvcmUubWluXCIsXCJ1dGlsL21haW4ubWluXCJdLG8pfShmdW5jdGlvbigpeyFmdW5jdGlvbihvKXtmdW5jdGlvbiBlKCl7cmV0dXJue3dpZHRoOjAsaGVpZ2h0OjAsYmFzZWxpbmU6MH19ZnVuY3Rpb24gcihvLGUscil7cmV0dXJuIGQuY3VycmVudC5tZWFzdXJlKG8sZSxyKX1mdW5jdGlvbiBsKG8sZSl7dmFyIHI9W107aWYoby5sZW5ndGg+MCYmZG9jdW1lbnQuZm9udHMpe3RyeXtyPW8ubWFwKGZ1bmN0aW9uKG8pe3JldHVybiBkb2N1bWVudC5mb250cy5sb2FkKG8pfSl9Y2F0Y2gobCl7YS5sb2dUb0NvbnNvbGUobCl9UHJvbWlzZS5hbGwocikudGhlbihlLGUpfWVsc2UgZSgpfXZhciBjPWRvY3VtZW50LGE9d2luZG93LmtlbmRvLHQ9YS5DbGFzcyxuPWEudXRpbCxpPW4uZGVmaW5lZCxmPXQuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKG8pe3RoaXMuX3NpemU9byx0aGlzLl9sZW5ndGg9MCx0aGlzLl9tYXA9e319LHB1dDpmdW5jdGlvbihvLGUpe3ZhciByPXRoaXMsbD1yLl9tYXAsYz17a2V5Om8sdmFsdWU6ZX07bFtvXT1jLHIuX2hlYWQ/KHIuX3RhaWwubmV3ZXI9YyxjLm9sZGVyPXIuX3RhaWwsci5fdGFpbD1jKTpyLl9oZWFkPXIuX3RhaWw9YyxyLl9sZW5ndGg+PXIuX3NpemU/KGxbci5faGVhZC5rZXldPW51bGwsci5faGVhZD1yLl9oZWFkLm5ld2VyLHIuX2hlYWQub2xkZXI9bnVsbCk6ci5fbGVuZ3RoKyt9LGdldDpmdW5jdGlvbihvKXt2YXIgZT10aGlzLHI9ZS5fbWFwW29dO2lmKHIpcmV0dXJuIHI9PT1lLl9oZWFkJiZyIT09ZS5fdGFpbCYmKGUuX2hlYWQ9ci5uZXdlcixlLl9oZWFkLm9sZGVyPW51bGwpLHIhPT1lLl90YWlsJiYoci5vbGRlciYmKHIub2xkZXIubmV3ZXI9ci5uZXdlcixyLm5ld2VyLm9sZGVyPXIub2xkZXIpLHIub2xkZXI9ZS5fdGFpbCxyLm5ld2VyPW51bGwsZS5fdGFpbC5uZXdlcj1yLGUuX3RhaWw9ciksci52YWx1ZX19KSxzPW8oXCI8ZGl2IHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsgdG9wOiAtNDAwMHB4ICFpbXBvcnRhbnQ7IHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7IGhlaWdodDogYXV0byAhaW1wb3J0YW50O3BhZGRpbmc6IDAgIWltcG9ydGFudDsgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IGJvcmRlcjogMCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OiBub3JtYWwgIWltcG9ydGFudDsgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7IHdoaXRlLXNwYWNlOiBub3dyYXAhaW1wb3J0YW50OycgLz5cIilbMF0sZD10LmV4dGVuZCh7aW5pdDpmdW5jdGlvbihvKXt0aGlzLl9jYWNoZT1uZXcgZigxZTMpLHRoaXMuX2luaXRPcHRpb25zKG8pfSxvcHRpb25zOntiYXNlbGluZU1hcmtlclNpemU6MX0sbWVhc3VyZTpmdW5jdGlvbihyLGwsYSl7dmFyIHQsZixkLGIsdSxoLGssZztpZighcilyZXR1cm4gZSgpO2lmKHQ9bi5vYmplY3RLZXkobCksZj1uLmhhc2hLZXkocit0KSxkPXRoaXMuX2NhY2hlLmdldChmKSxkKXJldHVybiBkO2I9ZSgpLHU9YT9hOnMsaD10aGlzLl9iYXNlbGluZU1hcmtlcigpLmNsb25lTm9kZSghMSk7Zm9yKGsgaW4gbClnPWxba10saShnKSYmKHUuc3R5bGVba109Zyk7cmV0dXJuIG8odSkudGV4dChyKSx1LmFwcGVuZENoaWxkKGgpLGMuYm9keS5hcHBlbmRDaGlsZCh1KSwocitcIlwiKS5sZW5ndGgmJihiLndpZHRoPXUub2Zmc2V0V2lkdGgtdGhpcy5vcHRpb25zLmJhc2VsaW5lTWFya2VyU2l6ZSxiLmhlaWdodD11Lm9mZnNldEhlaWdodCxiLmJhc2VsaW5lPWgub2Zmc2V0VG9wK3RoaXMub3B0aW9ucy5iYXNlbGluZU1hcmtlclNpemUpLGIud2lkdGg+MCYmYi5oZWlnaHQ+MCYmdGhpcy5fY2FjaGUucHV0KGYsYiksdS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHUpLGJ9LF9iYXNlbGluZU1hcmtlcjpmdW5jdGlvbigpe3JldHVybiBvKFwiPGRpdiBjbGFzcz0nay1iYXNlbGluZS1tYXJrZXInIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTt3aWR0aDogXCIrdGhpcy5vcHRpb25zLmJhc2VsaW5lTWFya2VyU2l6ZStcInB4OyBoZWlnaHQ6IFwiK3RoaXMub3B0aW9ucy5iYXNlbGluZU1hcmtlclNpemUrXCJweDtvdmVyZmxvdzogaGlkZGVuOycgLz5cIilbMF19fSk7ZC5jdXJyZW50PW5ldyBkLGEudXRpbC5UZXh0TWV0cmljcz1kLGEudXRpbC5MUlVDYWNoZT1mLGEudXRpbC5sb2FkRm9udHM9bCxhLnV0aWwubWVhc3VyZVRleHQ9cn0od2luZG93LmtlbmRvLmpRdWVyeSl9LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24obyxlLHIpeyhyfHxlKSgpfSksZnVuY3Rpb24obyxkZWZpbmUpe2RlZmluZShcInV0aWwvYmFzZTY0Lm1pblwiLFtcInV0aWwvbWFpbi5taW5cIl0sbyl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbyhvKXt2YXIgcixsLGMsdCxuLGksZixzPVwiXCIsZD0wO2ZvcihvPWUobyk7ZDxvLmxlbmd0aDspcj1vLmNoYXJDb2RlQXQoZCsrKSxsPW8uY2hhckNvZGVBdChkKyspLGM9by5jaGFyQ29kZUF0KGQrKyksdD1yPj4yLG49KDMmcik8PDR8bD4+NCxpPSgxNSZsKTw8MnxjPj42LGY9NjMmYyxpc05hTihsKT9pPWY9NjQ6aXNOYU4oYykmJihmPTY0KSxzPXMrYS5jaGFyQXQodCkrYS5jaGFyQXQobikrYS5jaGFyQXQoaSkrYS5jaGFyQXQoZik7cmV0dXJuIHN9ZnVuY3Rpb24gZShvKXt2YXIgZSxyLGw9XCJcIjtmb3IoZT0wO2U8by5sZW5ndGg7ZSsrKXI9by5jaGFyQ29kZUF0KGUpLHI8MTI4P2wrPWMocik6cjwyMDQ4PyhsKz1jKDE5MnxyPj4+NiksbCs9YygxMjh8NjMmcikpOnI8NjU1MzYmJihsKz1jKDIyNHxyPj4+MTIpLGwrPWMoMTI4fHI+Pj42JjYzKSxsKz1jKDEyOHw2MyZyKSk7cmV0dXJuIGx9dmFyIHI9d2luZG93LmtlbmRvLGw9ci5kZWVwRXh0ZW5kLGM9U3RyaW5nLmZyb21DaGFyQ29kZSxhPVwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz1cIjtsKHIudXRpbCx7ZW5jb2RlQmFzZTY0Om8sZW5jb2RlVVRGODplfSl9KCksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKG8sZSxyKXsocnx8ZSkoKX0pLGZ1bmN0aW9uKG8sZGVmaW5lKXtkZWZpbmUoXCJtaXhpbnMvb2JzZXJ2ZXJzLm1pblwiLFtcImtlbmRvLmNvcmUubWluXCJdLG8pfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihvKXt2YXIgZT1NYXRoLHI9d2luZG93LmtlbmRvLGw9ci5kZWVwRXh0ZW5kLGM9by5pbkFycmF5LGE9e29ic2VydmVyczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vYnNlcnZlcnM9dGhpcy5fb2JzZXJ2ZXJzfHxbXX0sYWRkT2JzZXJ2ZXI6ZnVuY3Rpb24obyl7cmV0dXJuIHRoaXMuX29ic2VydmVycz90aGlzLl9vYnNlcnZlcnMucHVzaChvKTp0aGlzLl9vYnNlcnZlcnM9W29dLHRoaXN9LHJlbW92ZU9ic2VydmVyOmZ1bmN0aW9uKG8pe3ZhciBlPXRoaXMub2JzZXJ2ZXJzKCkscj1jKG8sZSk7cmV0dXJuIHIhPS0xJiZlLnNwbGljZShyLDEpLHRoaXN9LHRyaWdnZXI6ZnVuY3Rpb24obyxlKXt2YXIgcixsLGM9dGhpcy5fb2JzZXJ2ZXJzO2lmKGMmJiF0aGlzLl9zdXNwZW5kZWQpZm9yKGw9MDtsPGMubGVuZ3RoO2wrKylyPWNbbF0scltvXSYmcltvXShlKTtyZXR1cm4gdGhpc30sb3B0aW9uc0NoYW5nZTpmdW5jdGlvbihvKXtvPW98fHt9LG8uZWxlbWVudD10aGlzLHRoaXMudHJpZ2dlcihcIm9wdGlvbnNDaGFuZ2VcIixvKX0sZ2VvbWV0cnlDaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLnRyaWdnZXIoXCJnZW9tZXRyeUNoYW5nZVwiLHtlbGVtZW50OnRoaXN9KX0sc3VzcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdXNwZW5kZWQ9KHRoaXMuX3N1c3BlbmRlZHx8MCkrMSx0aGlzfSxyZXN1bWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3VzcGVuZGVkPWUubWF4KCh0aGlzLl9zdXNwZW5kZWR8fDApLTEsMCksdGhpc30sX29ic2VydmVyRmllbGQ6ZnVuY3Rpb24obyxlKXt0aGlzW29dJiZ0aGlzW29dLnJlbW92ZU9ic2VydmVyKHRoaXMpLHRoaXNbb109ZSxlLmFkZE9ic2VydmVyKHRoaXMpfX07bChyLHttaXhpbnM6e09ic2VydmVyc01peGluOmF9fSl9KHdpbmRvdy5rZW5kby5qUXVlcnkpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbihvLGUscil7KHJ8fGUpKCl9KSxmdW5jdGlvbihvLGRlZmluZSl7ZGVmaW5lKFwia2VuZG8uZGF0YXZpei50aGVtZXMubWluXCIsW1wia2VuZG8uZGF0YXZpei5jb3JlLm1pblwiXSxvKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obyl7ZnVuY3Rpb24gZShlLHIpe3JldHVybiBvLm1hcChlLGZ1bmN0aW9uKG8sZSl7cmV0dXJuW1tvLHJbZV1dXX0pfXZhciByPXdpbmRvdy5rZW5kbyxsPXIuZGF0YXZpei51aSxjPXIuZGVlcEV4dGVuZCxhPTEuNSx0PS40LG49XCIjMDAwXCIsaT1cIkFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmXCIsZj1cIjExcHggXCIraSxzPVwiMTJweCBcIitpLGQ9XCIxNnB4IFwiK2ksYj1cIiNmZmZcIix1PXt0aXRsZTp7Zm9udDpkfSxsZWdlbmQ6e2xhYmVsczp7Zm9udDpzfX0sc2VyaWVzRGVmYXVsdHM6e3Zpc2libGU6ITAsbGFiZWxzOntmb250OmZ9LGRvbnV0OnttYXJnaW46MX0sbGluZTp7d2lkdGg6Mn0sdmVyaWNhbExpbmU6e3dpZHRoOjJ9LHNjYXR0ZXJMaW5lOnt3aWR0aDoxfSxhcmVhOntvcGFjaXR5Oi40LG1hcmtlcnM6e3Zpc2libGU6ITEsc2l6ZTo2fSxoaWdobGlnaHQ6e21hcmtlcnM6e2JvcmRlcjp7Y29sb3I6XCIjZmZmXCIsb3BhY2l0eToxLHdpZHRoOjF9fX0sbGluZTp7b3BhY2l0eToxLHdpZHRoOjB9fSx2ZXJ0aWNhbEFyZWE6e29wYWNpdHk6LjQsbWFya2Vyczp7dmlzaWJsZTohMSxzaXplOjZ9LGxpbmU6e29wYWNpdHk6MSx3aWR0aDowfX0scmFkYXJMaW5lOnt3aWR0aDoyLG1hcmtlcnM6e3Zpc2libGU6ITF9fSxyYWRhckFyZWE6e29wYWNpdHk6LjUsbWFya2Vyczp7dmlzaWJsZTohMSxzaXplOjZ9LGxpbmU6e29wYWNpdHk6MSx3aWR0aDowfX0sY2FuZGxlc3RpY2s6e2xpbmU6e3dpZHRoOjEsY29sb3I6bn0sYm9yZGVyOnt3aWR0aDoxLF9icmlnaHRuZXNzOi44fSxnYXA6MSxzcGFjaW5nOi4zLGRvd25Db2xvcjpiLGhpZ2hsaWdodDp7bGluZTp7d2lkdGg6Mn0sYm9yZGVyOnt3aWR0aDoyLG9wYWNpdHk6MX19fSxvaGxjOntsaW5lOnt3aWR0aDoxfSxnYXA6MSxzcGFjaW5nOi4zLGhpZ2hsaWdodDp7bGluZTp7d2lkdGg6MyxvcGFjaXR5OjF9fX0sYnViYmxlOntvcGFjaXR5Oi42LGJvcmRlcjp7d2lkdGg6MH0sbGFiZWxzOntiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIn19LGJhcjp7Z2FwOmEsc3BhY2luZzp0fSxjb2x1bW46e2dhcDphLHNwYWNpbmc6dH0scmFuZ2VDb2x1bW46e2dhcDphLHNwYWNpbmc6dH0scmFuZ2VCYXI6e2dhcDphLHNwYWNpbmc6dH0sd2F0ZXJmYWxsOntnYXA6LjUsc3BhY2luZzp0LGxpbmU6e3dpZHRoOjEsY29sb3I6bn19LGhvcml6b250YWxXYXRlcmZhbGw6e2dhcDouNSxzcGFjaW5nOnQsbGluZTp7d2lkdGg6MSxjb2xvcjpufX0sYnVsbGV0OntnYXA6YSxzcGFjaW5nOnQsdGFyZ2V0Ontjb2xvcjpcIiNmZjAwMDBcIn19LHZlcnRpY2FsQnVsbGV0OntnYXA6YSxzcGFjaW5nOnQsdGFyZ2V0Ontjb2xvcjpcIiNmZjAwMDBcIn19LGJveFBsb3Q6e291dGxpZXJzRmllbGQ6XCJcIixtZWFuRmllbGQ6XCJcIix3aGlza2Vyczp7d2lkdGg6MSxjb2xvcjpufSxtZWFuOnt3aWR0aDoxLGNvbG9yOm59LG1lZGlhbjp7d2lkdGg6MSxjb2xvcjpufSxib3JkZXI6e3dpZHRoOjEsX2JyaWdodG5lc3M6Ljh9LGdhcDoxLHNwYWNpbmc6LjMsZG93bkNvbG9yOmIsaGlnaGxpZ2h0Ont3aGlza2Vyczp7d2lkdGg6Mn0sYm9yZGVyOnt3aWR0aDoyLG9wYWNpdHk6MX19fSxmdW5uZWw6e2xhYmVsczp7Y29sb3I6XCJcIixiYWNrZ3JvdW5kOlwiXCJ9fSxub3Rlczp7aWNvbjp7Ym9yZGVyOnt3aWR0aDoxfX0sbGFiZWw6e3BhZGRpbmc6Myxmb250OnN9LGxpbmU6e2xlbmd0aDoxMCx3aWR0aDoxfSx2aXNpYmxlOiEwfX0sY2F0ZWdvcnlBeGlzOnttYWpvckdyaWRMaW5lczp7dmlzaWJsZTohMH19LGF4aXNEZWZhdWx0czp7bGFiZWxzOntmb250OnN9LHRpdGxlOntmb250OmQsbWFyZ2luOjV9LGNyb3NzaGFpcjp7dG9vbHRpcDp7Zm9udDpzfX0sbm90ZXM6e2ljb246e3NpemU6Nyxib3JkZXI6e3dpZHRoOjF9fSxsYWJlbDp7cGFkZGluZzozLGZvbnQ6c30sbGluZTp7bGVuZ3RoOjEwLHdpZHRoOjF9LHZpc2libGU6ITB9fSx0b29sdGlwOntmb250OnN9LG5hdmlnYXRvcjp7cGFuZTp7aGVpZ2h0OjkwLG1hcmdpbjp7dG9wOjEwfX19fSxoPXtzY2FsZTp7bGFiZWxzOntmb250OnN9fX0saz17c2hhcGVEZWZhdWx0czp7aG92ZXI6e29wYWNpdHk6LjJ9LHN0cm9rZTp7d2lkdGg6MH19LGVkaXRhYmxlOntyZXNpemU6e2hhbmRsZXM6e3dpZHRoOjcsaGVpZ2h0Ojd9fX0sc2VsZWN0YWJsZTp7c3Ryb2tlOnt3aWR0aDoxLGRhc2hUeXBlOlwiZG90XCJ9fSxjb25uZWN0aW9uRGVmYXVsdHM6e3N0cm9rZTp7d2lkdGg6Mn0sc2VsZWN0aW9uOntoYW5kbGVzOnt3aWR0aDo4LGhlaWdodDo4fX0sZWRpdGFibGU6e3Rvb2xzOltcImVkaXRcIixcImRlbGV0ZVwiXX19fSxnPWwudGhlbWVzLG09bC5yZWdpc3RlclRoZW1lPWZ1bmN0aW9uKG8sZSl7dmFyIHIsbD17fTtsLmNoYXJ0PWMoe30sdSxlLmNoYXJ0KSxsLmdhdWdlPWMoe30saCxlLmdhdWdlKSxsLmRpYWdyYW09Yyh7fSxrLGUuZGlhZ3JhbSksbC50cmVlTWFwPWMoe30sZS50cmVlTWFwKSxyPWwuY2hhcnQuc2VyaWVzRGVmYXVsdHMsci52ZXJ0aWNhbExpbmU9Yyh7fSxyLmxpbmUpLHIudmVydGljYWxBcmVhPWMoe30sci5hcmVhKSxyLnZlcnRpY2FsQm94UGxvdD1jKHt9LHIuYm94UGxvdCksci5wb2xhckFyZWE9Yyh7fSxyLnJhZGFyQXJlYSksci5wb2xhckxpbmU9Yyh7fSxyLnJhZGFyTGluZSksZ1tvXT1sfTttKFwiYmxhY2tcIix7Y2hhcnQ6e3RpdGxlOntjb2xvcjpifSxsZWdlbmQ6e2xhYmVsczp7Y29sb3I6Yn0saW5hY3RpdmVJdGVtczp7bGFiZWxzOntjb2xvcjpcIiM5MTkxOTFcIn0sbWFya2Vyczp7Y29sb3I6XCIjOTE5MTkxXCJ9fX0sc2VyaWVzRGVmYXVsdHM6e2xhYmVsczp7Y29sb3I6Yn0sZXJyb3JCYXJzOntjb2xvcjpifSxub3Rlczp7aWNvbjp7YmFja2dyb3VuZDpcIiMzYjNiM2JcIixib3JkZXI6e2NvbG9yOlwiIzhlOGU4ZVwifX0sbGFiZWw6e2NvbG9yOmJ9LGxpbmU6e2NvbG9yOlwiIzhlOGU4ZVwifX0scGllOntvdmVybGF5OntncmFkaWVudDpcInNoYXJwQmV2ZWxcIn19LGRvbnV0OntvdmVybGF5OntncmFkaWVudDpcInNoYXJwR2xhc3NcIn19LGxpbmU6e21hcmtlcnM6e2JhY2tncm91bmQ6XCIjM2QzZDNkXCJ9fSxzY2F0dGVyOnttYXJrZXJzOntiYWNrZ3JvdW5kOlwiIzNkM2QzZFwifX0sc2NhdHRlckxpbmU6e21hcmtlcnM6e2JhY2tncm91bmQ6XCIjM2QzZDNkXCJ9fSx3YXRlcmZhbGw6e2xpbmU6e2NvbG9yOlwiIzhlOGU4ZVwifX0saG9yaXpvbnRhbFdhdGVyZmFsbDp7bGluZTp7Y29sb3I6XCIjOGU4ZThlXCJ9fSxjYW5kbGVzdGljazp7ZG93bkNvbG9yOlwiIzU1NVwiLGxpbmU6e2NvbG9yOmJ9LGJvcmRlcjp7X2JyaWdodG5lc3M6MS41LG9wYWNpdHk6MX0saGlnaGxpZ2h0Ontib3JkZXI6e2NvbG9yOmIsb3BhY2l0eTouMn19fSxvaGxjOntsaW5lOntjb2xvcjpifX19LGNoYXJ0QXJlYTp7YmFja2dyb3VuZDpcIiMzZDNkM2RcIn0sc2VyaWVzQ29sb3JzOltcIiMwMDgxZGFcIixcIiMzYWFmZmZcIixcIiM5OWM5MDBcIixcIiNmZmViM2RcIixcIiNiMjA3NTNcIixcIiNmZjQxOTVcIl0sYXhpc0RlZmF1bHRzOntsaW5lOntjb2xvcjpcIiM4ZThlOGVcIn0sbGFiZWxzOntjb2xvcjpifSxtYWpvckdyaWRMaW5lczp7Y29sb3I6XCIjNTQ1NDU0XCJ9LG1pbm9yR3JpZExpbmVzOntjb2xvcjpcIiM0NTQ1NDVcIn0sdGl0bGU6e2NvbG9yOmJ9LGNyb3NzaGFpcjp7Y29sb3I6XCIjOGU4ZThlXCJ9LG5vdGVzOntpY29uOntiYWNrZ3JvdW5kOlwiIzNiM2IzYlwiLGJvcmRlcjp7Y29sb3I6XCIjOGU4ZThlXCJ9fSxsYWJlbDp7Y29sb3I6Yn0sbGluZTp7Y29sb3I6XCIjOGU4ZThlXCJ9fX19LGdhdWdlOntwb2ludGVyOntjb2xvcjpcIiMwMDcwZTRcIn0sc2NhbGU6e3JhbmdlUGxhY2Vob2xkZXJDb2xvcjpcIiMxZDFkMWRcIixsYWJlbHM6e2NvbG9yOmJ9LG1pbm9yVGlja3M6e2NvbG9yOmJ9LG1ham9yVGlja3M6e2NvbG9yOmJ9LGxpbmU6e2NvbG9yOmJ9fX0sZGlhZ3JhbTp7c2hhcGVEZWZhdWx0czp7ZmlsbDp7Y29sb3I6XCIjMDA2NmNjXCJ9LGNvbm5lY3RvckRlZmF1bHRzOntmaWxsOntjb2xvcjpifSxzdHJva2U6e2NvbG9yOlwiIzM4NDA0OVwifSxob3Zlcjp7ZmlsbDp7Y29sb3I6XCIjM2QzZDNkXCJ9LHN0cm9rZTp7Y29sb3I6XCIjZWZlZmVmXCJ9fX0sY29udGVudDp7Y29sb3I6Yn19LGVkaXRhYmxlOntyZXNpemU6e2hhbmRsZXM6e2ZpbGw6e2NvbG9yOlwiIzNkM2QzZFwifSxzdHJva2U6e2NvbG9yOmJ9LGhvdmVyOntmaWxsOntjb2xvcjpifSxzdHJva2U6e2NvbG9yOmJ9fX19LHJvdGF0ZTp7dGh1bWI6e3N0cm9rZTp7Y29sb3I6Yn0sZmlsbDp7Y29sb3I6Yn19fX0sc2VsZWN0YWJsZTp7c3Ryb2tlOntjb2xvcjpifX0sY29ubmVjdGlvbkRlZmF1bHRzOntzdHJva2U6e2NvbG9yOmJ9LGNvbnRlbnQ6e2NvbG9yOmJ9LHNlbGVjdGlvbjp7aGFuZGxlczp7ZmlsbDp7Y29sb3I6XCIjM2QzZDNkXCJ9LHN0cm9rZTp7Y29sb3I6XCIjZWZlZmVmXCJ9fX19fSx0cmVlTWFwOntjb2xvcnM6W1tcIiMwMDgxZGFcIixcIiMzMTRiNWNcIl0sW1wiIzNhYWZmZlwiLFwiIzNjNTQ2NFwiXSxbXCIjOTljOTAwXCIsXCIjNGY1OTMxXCJdLFtcIiNmZmViM2RcIixcIiM2NDYwM2RcIl0sW1wiI2IyMDc1M1wiLFwiIzU0MzI0MVwiXSxbXCIjZmY0MTk1XCIsXCIjNjQzZTRmXCJdXX19KSxtKFwiYmx1ZW9wYWxcIix7Y2hhcnQ6e3RpdGxlOntjb2xvcjpcIiMyOTMxMzVcIn0sbGVnZW5kOntsYWJlbHM6e2NvbG9yOlwiIzI5MzEzNVwifSxpbmFjdGl2ZUl0ZW1zOntsYWJlbHM6e2NvbG9yOlwiIzI3QTVCQVwifSxtYXJrZXJzOntjb2xvcjpcIiMyN0E1QkFcIn19fSxzZXJpZXNEZWZhdWx0czp7bGFiZWxzOntjb2xvcjpuLGJhY2tncm91bmQ6YixvcGFjaXR5Oi41fSxlcnJvckJhcnM6e2NvbG9yOlwiIzI5MzEzNVwifSxjYW5kbGVzdGljazp7ZG93bkNvbG9yOlwiI2M0ZDBkNVwiLGxpbmU6e2NvbG9yOlwiIzlhYWJiMlwifX0sd2F0ZXJmYWxsOntsaW5lOntjb2xvcjpcIiM5YWFiYjJcIn19LGhvcml6b250YWxXYXRlcmZhbGw6e2xpbmU6e2NvbG9yOlwiIzlhYWJiMlwifX0sbm90ZXM6e2ljb246e2JhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLGJvcmRlcjp7Y29sb3I6XCIjOWFhYmIyXCJ9fSxsYWJlbDp7Y29sb3I6XCIjMjkzMTM1XCJ9LGxpbmU6e2NvbG9yOlwiIzlhYWJiMlwifX19LHNlcmllc0NvbG9yczpbXCIjMDA2OWE1XCIsXCIjMDA5OGVlXCIsXCIjN2JkMmY2XCIsXCIjZmZiODAwXCIsXCIjZmY4NTE3XCIsXCIjZTM0YTAwXCJdLGF4aXNEZWZhdWx0czp7bGluZTp7Y29sb3I6XCIjOWFhYmIyXCJ9LGxhYmVsczp7Y29sb3I6XCIjMjkzMTM1XCJ9LG1ham9yR3JpZExpbmVzOntjb2xvcjpcIiNjNGQwZDVcIn0sbWlub3JHcmlkTGluZXM6e2NvbG9yOlwiI2VkZjFmMlwifSx0aXRsZTp7Y29sb3I6XCIjMjkzMTM1XCJ9LGNyb3NzaGFpcjp7Y29sb3I6XCIjOWFhYmIyXCJ9LG5vdGVzOntpY29uOntiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixib3JkZXI6e2NvbG9yOlwiIzlhYWJiMlwifX0sbGFiZWw6e2NvbG9yOlwiIzI5MzEzNVwifSxsaW5lOntjb2xvcjpcIiM5YWFiYjJcIn19fX0sZ2F1Z2U6e3BvaW50ZXI6e2NvbG9yOlwiIzAwNWM4M1wifSxzY2FsZTp7cmFuZ2VQbGFjZWhvbGRlckNvbG9yOlwiI2RhZWNmNFwiLGxhYmVsczp7Y29sb3I6XCIjMjkzMTM1XCJ9LG1pbm9yVGlja3M6e2NvbG9yOlwiIzI5MzEzNVwifSxtYWpvclRpY2tzOntjb2xvcjpcIiMyOTMxMzVcIn0sbGluZTp7Y29sb3I6XCIjMjkzMTM1XCJ9fX0sZGlhZ3JhbTp7c2hhcGVEZWZhdWx0czp7ZmlsbDp7Y29sb3I6XCIjN2VjNmUzXCJ9LGNvbm5lY3RvckRlZmF1bHRzOntmaWxsOntjb2xvcjpcIiMwMDNmNTlcIn0sc3Ryb2tlOntjb2xvcjpifSxob3Zlcjp7ZmlsbDp7Y29sb3I6Yn0sc3Ryb2tlOntjb2xvcjpcIiMwMDNmNTlcIn19fSxjb250ZW50Ontjb2xvcjpcIiMyOTMxMzVcIn19LGVkaXRhYmxlOntyZXNpemU6e2hhbmRsZXM6e2ZpbGw6e2NvbG9yOmJ9LHN0cm9rZTp7Y29sb3I6XCIjMDAzZjU5XCJ9LGhvdmVyOntmaWxsOntjb2xvcjpcIiMwMDNmNTlcIn0sc3Ryb2tlOntjb2xvcjpcIiMwMDNmNTlcIn19fX0scm90YXRlOnt0aHVtYjp7c3Ryb2tlOntjb2xvcjpcIiMwMDNmNTlcIn0sZmlsbDp7Y29sb3I6XCIjMDAzZjU5XCJ9fX19LHNlbGVjdGFibGU6e3N0cm9rZTp7Y29sb3I6XCIjMDAzZjU5XCJ9fSxjb25uZWN0aW9uRGVmYXVsdHM6e3N0cm9rZTp7Y29sb3I6XCIjMDAzZjU5XCJ9LGNvbnRlbnQ6e2NvbG9yOlwiIzI5MzEzNVwifSxzZWxlY3Rpb246e2hhbmRsZXM6e2ZpbGw6e2NvbG9yOlwiIzNkM2QzZFwifSxzdHJva2U6e2NvbG9yOlwiI2VmZWZlZlwifX19fX0sdHJlZU1hcDp7Y29sb3JzOltbXCIjMDA2OWE1XCIsXCIjYmFkN2U3XCJdLFtcIiMwMDk4ZWVcIixcIiNiOWUwZjVcIl0sW1wiIzdiZDJmNlwiLFwiI2NlZWFmNlwiXSxbXCIjZmZiODAwXCIsXCIjZTZlM2M0XCJdLFtcIiNmZjg1MTdcIixcIiNlNGQ4YzhcIl0sW1wiI2UzNGEwMFwiLFwiI2RkY2NjMlwiXV19fSksbShcImhpZ2hjb250cmFzdFwiLHtjaGFydDp7dGl0bGU6e2NvbG9yOlwiI2ZmZmZmZlwifSxsZWdlbmQ6e2xhYmVsczp7Y29sb3I6XCIjZmZmZmZmXCJ9LGluYWN0aXZlSXRlbXM6e2xhYmVsczp7Y29sb3I6XCIjNjY0NjVCXCJ9LG1hcmtlcnM6e2NvbG9yOlwiIzY2NDY1QlwifX19LHNlcmllc0RlZmF1bHRzOntsYWJlbHM6e2NvbG9yOlwiI2ZmZmZmZlwifSxlcnJvckJhcnM6e2NvbG9yOlwiI2ZmZmZmZlwifSxub3Rlczp7aWNvbjp7YmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsYm9yZGVyOntjb2xvcjpcIiNmZmZmZmZcIn19LGxhYmVsOntjb2xvcjpcIiNmZmZmZmZcIn0sbGluZTp7Y29sb3I6XCIjZmZmZmZmXCJ9fSxwaWU6e292ZXJsYXk6e2dyYWRpZW50Olwic2hhcnBHbGFzc1wifX0sZG9udXQ6e292ZXJsYXk6e2dyYWRpZW50Olwic2hhcnBHbGFzc1wifX0sbGluZTp7bWFya2Vyczp7YmFja2dyb3VuZDpcIiMyYzIzMmJcIn19LHNjYXR0ZXI6e21hcmtlcnM6e2JhY2tncm91bmQ6XCIjMmMyMzJiXCJ9fSxzY2F0dGVyTGluZTp7bWFya2Vyczp7YmFja2dyb3VuZDpcIiMyYzIzMmJcIn19LGFyZWE6e29wYWNpdHk6LjV9LHdhdGVyZmFsbDp7bGluZTp7Y29sb3I6XCIjZmZmZmZmXCJ9fSxob3Jpem9udGFsV2F0ZXJmYWxsOntsaW5lOntjb2xvcjpcIiNmZmZmZmZcIn19LGNhbmRsZXN0aWNrOntkb3duQ29sb3I6XCIjNjY0ZTYyXCIsbGluZTp7Y29sb3I6XCIjZmZmZmZmXCJ9LGJvcmRlcjp7X2JyaWdodG5lc3M6MS41LG9wYWNpdHk6MX0saGlnaGxpZ2h0Ontib3JkZXI6e2NvbG9yOlwiI2ZmZmZmZlwiLG9wYWNpdHk6MX19fSxvaGxjOntsaW5lOntjb2xvcjpcIiNmZmZmZmZcIn19fSxjaGFydEFyZWE6e2JhY2tncm91bmQ6XCIjMmMyMzJiXCJ9LHNlcmllc0NvbG9yczpbXCIjYTcwMDhmXCIsXCIjZmZiODAwXCIsXCIjM2FhZmZmXCIsXCIjOTljOTAwXCIsXCIjYjIwNzUzXCIsXCIjZmY0MTk1XCJdLGF4aXNEZWZhdWx0czp7bGluZTp7Y29sb3I6XCIjZmZmZmZmXCJ9LGxhYmVsczp7Y29sb3I6XCIjZmZmZmZmXCJ9LG1ham9yR3JpZExpbmVzOntjb2xvcjpcIiM2NjRlNjJcIn0sbWlub3JHcmlkTGluZXM6e2NvbG9yOlwiIzRmMzk0YlwifSx0aXRsZTp7Y29sb3I6XCIjZmZmZmZmXCJ9LGNyb3NzaGFpcjp7Y29sb3I6XCIjZmZmZmZmXCJ9LG5vdGVzOntpY29uOntiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixib3JkZXI6e2NvbG9yOlwiI2ZmZmZmZlwifX0sbGFiZWw6e2NvbG9yOlwiI2ZmZmZmZlwifSxsaW5lOntjb2xvcjpcIiNmZmZmZmZcIn19fX0sZ2F1Z2U6e3BvaW50ZXI6e2NvbG9yOlwiI2E3MDA4ZlwifSxzY2FsZTp7cmFuZ2VQbGFjZWhvbGRlckNvbG9yOlwiIzJjMjMyYlwiLGxhYmVsczp7Y29sb3I6XCIjZmZmZmZmXCJ9LG1pbm9yVGlja3M6e2NvbG9yOlwiIzJjMjMyYlwifSxtYWpvclRpY2tzOntjb2xvcjpcIiM2NjRlNjJcIn0sbGluZTp7Y29sb3I6XCIjZmZmZmZmXCJ9fX0sZGlhZ3JhbTp7c2hhcGVEZWZhdWx0czp7ZmlsbDp7Y29sb3I6XCIjYTcwMThmXCJ9LGNvbm5lY3RvckRlZmF1bHRzOntmaWxsOntjb2xvcjpifSxzdHJva2U6e2NvbG9yOlwiIzJjMjMyYlwifSxob3Zlcjp7ZmlsbDp7Y29sb3I6XCIjMmMyMzJiXCJ9LHN0cm9rZTp7Y29sb3I6Yn19fSxjb250ZW50Ontjb2xvcjpifX0sZWRpdGFibGU6e3Jlc2l6ZTp7aGFuZGxlczp7ZmlsbDp7Y29sb3I6XCIjMmMyMzJiXCJ9LHN0cm9rZTp7Y29sb3I6Yn0saG92ZXI6e2ZpbGw6e2NvbG9yOmJ9LHN0cm9rZTp7Y29sb3I6Yn19fX0scm90YXRlOnt0aHVtYjp7c3Ryb2tlOntjb2xvcjpifSxmaWxsOntjb2xvcjpifX19fSxzZWxlY3RhYmxlOntzdHJva2U6e2NvbG9yOmJ9fSxjb25uZWN0aW9uRGVmYXVsdHM6e3N0cm9rZTp7Y29sb3I6Yn0sY29udGVudDp7Y29sb3I6Yn0sc2VsZWN0aW9uOntoYW5kbGVzOntmaWxsOntjb2xvcjpcIiMyYzIzMmJcIn0sc3Ryb2tlOntjb2xvcjpifX19fX0sdHJlZU1hcDp7Y29sb3JzOltbXCIjYTcwMDhmXCIsXCIjNDUxYzNmXCJdLFtcIiNmZmI4MDBcIixcIiM1NjQxMjJcIl0sW1wiIzNhYWZmZlwiLFwiIzJmM2Y1NVwiXSxbXCIjOTljOTAwXCIsXCIjNDI0NDIyXCJdLFtcIiNiMjA3NTNcIixcIiM0NzFkMzNcIl0sW1wiI2ZmNDE5NVwiLFwiIzU2Mjk0MFwiXV19fSksbShcImRlZmF1bHRcIix7Y2hhcnQ6e3RpdGxlOntjb2xvcjpcIiM4ZThlOGVcIn0sbGVnZW5kOntsYWJlbHM6e2NvbG9yOlwiIzIzMjMyM1wifSxpbmFjdGl2ZUl0ZW1zOntsYWJlbHM6e2NvbG9yOlwiIzkxOTE5MVwifSxtYXJrZXJzOntjb2xvcjpcIiM5MTkxOTFcIn19fSxzZXJpZXNEZWZhdWx0czp7bGFiZWxzOntjb2xvcjpuLGJhY2tncm91bmQ6YixvcGFjaXR5Oi41fSxlcnJvckJhcnM6e2NvbG9yOlwiIzIzMjMyM1wifSxjYW5kbGVzdGljazp7ZG93bkNvbG9yOlwiI2RlZGVkZVwiLGxpbmU6e2NvbG9yOlwiIzhkOGQ4ZFwifX0sd2F0ZXJmYWxsOntsaW5lOntjb2xvcjpcIiM4ZThlOGVcIn19LGhvcml6b250YWxXYXRlcmZhbGw6e2xpbmU6e2NvbG9yOlwiIzhlOGU4ZVwifX0sbm90ZXM6e2ljb246e2JhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLGJvcmRlcjp7Y29sb3I6XCIjOGU4ZThlXCJ9fSxsYWJlbDp7Y29sb3I6XCIjMjMyMzIzXCJ9LGxpbmU6e2NvbG9yOlwiIzhlOGU4ZVwifX19LHNlcmllc0NvbG9yczpbXCIjZmY2ODAwXCIsXCIjYTBhNzAwXCIsXCIjZmY4ZDAwXCIsXCIjNjc4OTAwXCIsXCIjZmZiNTNjXCIsXCIjMzk2MDAwXCJdLGF4aXNEZWZhdWx0czp7bGluZTp7Y29sb3I6XCIjOGU4ZThlXCJ9LGxhYmVsczp7Y29sb3I6XCIjMjMyMzIzXCJ9LG1pbm9yR3JpZExpbmVzOntjb2xvcjpcIiNmMGYwZjBcIn0sbWFqb3JHcmlkTGluZXM6e2NvbG9yOlwiI2RmZGZkZlwifSx0aXRsZTp7Y29sb3I6XCIjMjMyMzIzXCJ9LGNyb3NzaGFpcjp7Y29sb3I6XCIjOGU4ZThlXCJ9LG5vdGVzOntpY29uOntiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixib3JkZXI6e2NvbG9yOlwiIzhlOGU4ZVwifX0sbGFiZWw6e2NvbG9yOlwiIzIzMjMyM1wifSxsaW5lOntjb2xvcjpcIiM4ZThlOGVcIn19fX0sZ2F1Z2U6e3BvaW50ZXI6e2NvbG9yOlwiI2VhNzAwMVwifSxzY2FsZTp7cmFuZ2VQbGFjZWhvbGRlckNvbG9yOlwiI2RlZGVkZVwiLGxhYmVsczp7Y29sb3I6XCIjMmUyZTJlXCJ9LG1pbm9yVGlja3M6e2NvbG9yOlwiIzJlMmUyZVwifSxtYWpvclRpY2tzOntjb2xvcjpcIiMyZTJlMmVcIn0sbGluZTp7Y29sb3I6XCIjMmUyZTJlXCJ9fX0sZGlhZ3JhbTp7c2hhcGVEZWZhdWx0czp7ZmlsbDp7Y29sb3I6XCIjZTE1NjEzXCJ9LGNvbm5lY3RvckRlZmF1bHRzOntmaWxsOntjb2xvcjpcIiMyODI4MjhcIn0sc3Ryb2tlOntjb2xvcjpifSxob3Zlcjp7ZmlsbDp7Y29sb3I6Yn0sc3Ryb2tlOntjb2xvcjpcIiMyODI4MjhcIn19fSxjb250ZW50Ontjb2xvcjpcIiMyZTJlMmVcIn19LGVkaXRhYmxlOntyZXNpemU6e2hhbmRsZXM6e2ZpbGw6e2NvbG9yOmJ9LHN0cm9rZTp7Y29sb3I6XCIjMjgyODI4XCJ9LGhvdmVyOntmaWxsOntjb2xvcjpcIiMyODI4MjhcIn0sc3Ryb2tlOntjb2xvcjpcIiMyODI4MjhcIn19fX0scm90YXRlOnt0aHVtYjp7c3Ryb2tlOntjb2xvcjpcIiMyODI4MjhcIn0sZmlsbDp7Y29sb3I6XCIjMjgyODI4XCJ9fX19LHNlbGVjdGFibGU6e3N0cm9rZTp7Y29sb3I6XCIjYTcwMThmXCJ9fSxjb25uZWN0aW9uRGVmYXVsdHM6e3N0cm9rZTp7Y29sb3I6XCIjMjgyODI4XCJ9LGNvbnRlbnQ6e2NvbG9yOlwiIzJlMmUyZVwifSxzZWxlY3Rpb246e2hhbmRsZXM6e2ZpbGw6e2NvbG9yOmJ9LHN0cm9rZTp7Y29sb3I6XCIjMjgyODI4XCJ9fX19fSx0cmVlTWFwOntjb2xvcnM6W1tcIiNmZjY4MDBcIixcIiNlZGNmYmFcIl0sW1wiI2EwYTcwMFwiLFwiI2RhZGNiYVwiXSxbXCIjZmY4ZDAwXCIsXCIjZWRkN2JhXCJdLFtcIiM2Nzg5MDBcIixcIiNjZmQ2YmFcIl0sW1wiI2ZmYjUzY1wiLFwiI2VkZGZjNlwiXSxbXCIjMzk2MDAwXCIsXCIjYzZjZWJhXCJdXX19KSxtKFwic2lsdmVyXCIse2NoYXJ0Ont0aXRsZTp7Y29sb3I6XCIjNGU1OTY4XCJ9LGxlZ2VuZDp7bGFiZWxzOntjb2xvcjpcIiM0ZTU5NjhcIn0saW5hY3RpdmVJdGVtczp7bGFiZWxzOntjb2xvcjpcIiNCMUJDQzhcIn0sbWFya2Vyczp7Y29sb3I6XCIjQjFCQ0M4XCJ9fX0sc2VyaWVzRGVmYXVsdHM6e2xhYmVsczp7Y29sb3I6XCIjMjkzMTM1XCIsYmFja2dyb3VuZDpcIiNlYWVhZWNcIixvcGFjaXR5Oi41fSxlcnJvckJhcnM6e2NvbG9yOlwiIzRlNTk2OFwifSxub3Rlczp7aWNvbjp7YmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsYm9yZGVyOntjb2xvcjpcIiM0ZTU5NjhcIn19LGxhYmVsOntjb2xvcjpcIiM0ZTU5NjhcIn0sbGluZTp7Y29sb3I6XCIjNGU1OTY4XCJ9fSxsaW5lOnttYXJrZXJzOntiYWNrZ3JvdW5kOlwiI2VhZWFlY1wifX0sc2NhdHRlcjp7bWFya2Vyczp7YmFja2dyb3VuZDpcIiNlYWVhZWNcIn19LHNjYXR0ZXJMaW5lOnttYXJrZXJzOntiYWNrZ3JvdW5kOlwiI2VhZWFlY1wifX0scGllOntjb25uZWN0b3JzOntjb2xvcjpcIiNBNkIxQzBcIn19LGRvbnV0Ontjb25uZWN0b3JzOntjb2xvcjpcIiNBNkIxQzBcIn19LHdhdGVyZmFsbDp7bGluZTp7Y29sb3I6XCIjYTZiMWMwXCJ9fSxob3Jpem9udGFsV2F0ZXJmYWxsOntsaW5lOntjb2xvcjpcIiNhNmIxYzBcIn19LGNhbmRsZXN0aWNrOntkb3duQ29sb3I6XCIjYTZhZmJlXCJ9fSxjaGFydEFyZWE6e2JhY2tncm91bmQ6XCIjZWFlYWVjXCJ9LHNlcmllc0NvbG9yczpbXCIjMDA3YmMzXCIsXCIjNzZiODAwXCIsXCIjZmZhZTAwXCIsXCIjZWY0YzAwXCIsXCIjYTQxOWI3XCIsXCIjNDMwQjYyXCJdLGF4aXNEZWZhdWx0czp7bGluZTp7Y29sb3I6XCIjYTZiMWMwXCJ9LGxhYmVsczp7Y29sb3I6XCIjNGU1OTY4XCJ9LG1ham9yR3JpZExpbmVzOntjb2xvcjpcIiNkY2RjZGZcIn0sbWlub3JHcmlkTGluZXM6e2NvbG9yOlwiI2VlZWVlZlwifSx0aXRsZTp7Y29sb3I6XCIjNGU1OTY4XCJ9LGNyb3NzaGFpcjp7Y29sb3I6XCIjYTZiMWMwXCJ9LG5vdGVzOntpY29uOntiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixib3JkZXI6e2NvbG9yOlwiIzRlNTk2OFwifX0sbGFiZWw6e2NvbG9yOlwiIzRlNTk2OFwifSxsaW5lOntjb2xvcjpcIiM0ZTU5NjhcIn19fX0sZ2F1Z2U6e3BvaW50ZXI6e2NvbG9yOlwiIzA4NzljMFwifSxzY2FsZTp7cmFuZ2VQbGFjZWhvbGRlckNvbG9yOlwiI2YzZjNmNFwiLGxhYmVsczp7Y29sb3I6XCIjNTE1OTY3XCJ9LG1pbm9yVGlja3M6e2NvbG9yOlwiIzUxNTk2N1wifSxtYWpvclRpY2tzOntjb2xvcjpcIiM1MTU5NjdcIn0sbGluZTp7Y29sb3I6XCIjNTE1OTY3XCJ9fX0sZGlhZ3JhbTp7c2hhcGVEZWZhdWx0czp7ZmlsbDp7Y29sb3I6XCIjMWM4MmMyXCJ9LGNvbm5lY3RvckRlZmF1bHRzOntmaWxsOntjb2xvcjpcIiM1MTU5NjdcIn0sc3Ryb2tlOntjb2xvcjpifSxob3Zlcjp7ZmlsbDp7Y29sb3I6Yn0sc3Ryb2tlOntjb2xvcjpcIiMyODI4MjhcIn19fSxjb250ZW50Ontjb2xvcjpcIiM1MTU5NjdcIn19LGVkaXRhYmxlOntyZXNpemU6e2hhbmRsZXM6e2ZpbGw6e2NvbG9yOmJ9LHN0cm9rZTp7Y29sb3I6XCIjNTE1OTY3XCJ9LGhvdmVyOntmaWxsOntjb2xvcjpcIiM1MTU5NjdcIn0sc3Ryb2tlOntjb2xvcjpcIiM1MTU5NjdcIn19fX0scm90YXRlOnt0aHVtYjp7c3Ryb2tlOntjb2xvcjpcIiM1MTU5NjdcIn0sZmlsbDp7Y29sb3I6XCIjNTE1OTY3XCJ9fX19LHNlbGVjdGFibGU6e3N0cm9rZTp7Y29sb3I6XCIjNTE1OTY3XCJ9fSxjb25uZWN0aW9uRGVmYXVsdHM6e3N0cm9rZTp7Y29sb3I6XCIjNTE1OTY3XCJ9LGNvbnRlbnQ6e2NvbG9yOlwiIzUxNTk2N1wifSxzZWxlY3Rpb246e2hhbmRsZXM6e2ZpbGw6e2NvbG9yOmJ9LHN0cm9rZTp7Y29sb3I6XCIjNTE1OTY3XCJ9fX19fSx0cmVlTWFwOntjb2xvcnM6W1tcIiMwMDdiYzNcIixcIiNjMmRiZWFcIl0sW1wiIzc2YjgwMFwiLFwiI2RhZTdjM1wiXSxbXCIjZmZhZTAwXCIsXCIjZjVlNWMzXCJdLFtcIiNlZjRjMDBcIixcIiNmMmQyYzNcIl0sW1wiI2E0MTliN1wiLFwiI2UzYzdlOFwiXSxbXCIjNDMwYjYyXCIsXCIjZDBjNWQ3XCJdXX19KSxtKFwibWV0cm9cIix7Y2hhcnQ6e3RpdGxlOntjb2xvcjpcIiM3Nzc3NzdcIn0sbGVnZW5kOntsYWJlbHM6e2NvbG9yOlwiIzc3Nzc3N1wifSxpbmFjdGl2ZUl0ZW1zOntsYWJlbHM6e2NvbG9yOlwiI0NCQ0JDQlwifSxtYXJrZXJzOntjb2xvcjpcIiNDQkNCQ0JcIn19fSxzZXJpZXNEZWZhdWx0czp7bGFiZWxzOntjb2xvcjpufSxlcnJvckJhcnM6e2NvbG9yOlwiIzc3Nzc3N1wifSxub3Rlczp7aWNvbjp7YmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsYm9yZGVyOntjb2xvcjpcIiM3Nzc3NzdcIn19LGxhYmVsOntjb2xvcjpcIiM3Nzc3NzdcIn0sbGluZTp7Y29sb3I6XCIjNzc3Nzc3XCJ9fSxjYW5kbGVzdGljazp7ZG93bkNvbG9yOlwiI2M3YzdjN1wiLGxpbmU6e2NvbG9yOlwiIzc4Nzg3OFwifX0sd2F0ZXJmYWxsOntsaW5lOntjb2xvcjpcIiNjN2M3YzdcIn19LGhvcml6b250YWxXYXRlcmZhbGw6e2xpbmU6e2NvbG9yOlwiI2M3YzdjN1wifX0sb3ZlcmxheTp7Z3JhZGllbnQ6XCJub25lXCJ9LGJvcmRlcjp7X2JyaWdodG5lc3M6MX19LHNlcmllc0NvbG9yczpbXCIjOGViYzAwXCIsXCIjMzA5YjQ2XCIsXCIjMjVhMGRhXCIsXCIjZmY2OTAwXCIsXCIjZTYxZTI2XCIsXCIjZDhlNDA0XCIsXCIjMTZhYmE5XCIsXCIjN2U1MWExXCIsXCIjMzEzMTMxXCIsXCIjZWQxNjkxXCJdLGF4aXNEZWZhdWx0czp7bGluZTp7Y29sb3I6XCIjYzdjN2M3XCJ9LGxhYmVsczp7Y29sb3I6XCIjNzc3Nzc3XCJ9LG1pbm9yR3JpZExpbmVzOntjb2xvcjpcIiNjN2M3YzdcIn0sbWFqb3JHcmlkTGluZXM6e2NvbG9yOlwiI2M3YzdjN1wifSx0aXRsZTp7Y29sb3I6XCIjNzc3Nzc3XCJ9LGNyb3NzaGFpcjp7Y29sb3I6XCIjYzdjN2M3XCJ9LG5vdGVzOntpY29uOntiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixib3JkZXI6e2NvbG9yOlwiIzc3Nzc3N1wifX0sbGFiZWw6e2NvbG9yOlwiIzc3Nzc3N1wifSxsaW5lOntjb2xvcjpcIiM3Nzc3NzdcIn19fX0sZ2F1Z2U6e3BvaW50ZXI6e2NvbG9yOlwiIzhlYmMwMFwifSxzY2FsZTp7cmFuZ2VQbGFjZWhvbGRlckNvbG9yOlwiI2U2ZTZlNlwiLGxhYmVsczp7Y29sb3I6XCIjNzc3XCJ9LG1pbm9yVGlja3M6e2NvbG9yOlwiIzc3N1wifSxtYWpvclRpY2tzOntjb2xvcjpcIiM3NzdcIn0sbGluZTp7Y29sb3I6XCIjNzc3XCJ9fX0sZGlhZ3JhbTp7c2hhcGVEZWZhdWx0czp7ZmlsbDp7Y29sb3I6XCIjOGViYzAwXCJ9LGNvbm5lY3RvckRlZmF1bHRzOntmaWxsOntjb2xvcjpufSxzdHJva2U6e2NvbG9yOmJ9LGhvdmVyOntmaWxsOntjb2xvcjpifSxzdHJva2U6e2NvbG9yOm59fX0sY29udGVudDp7Y29sb3I6XCIjNzc3XCJ9fSxlZGl0YWJsZTp7cmVzaXplOntoYW5kbGVzOntmaWxsOntjb2xvcjpifSxzdHJva2U6e2NvbG9yOlwiIzc4Nzg3OFwifSxob3Zlcjp7ZmlsbDp7Y29sb3I6XCIjNzg3ODc4XCJ9LHN0cm9rZTp7Y29sb3I6XCIjNzg3ODc4XCJ9fX19LHJvdGF0ZTp7dGh1bWI6e3N0cm9rZTp7Y29sb3I6XCIjNzg3ODc4XCJ9LGZpbGw6e2NvbG9yOlwiIzc4Nzg3OFwifX19fSxzZWxlY3RhYmxlOntzdHJva2U6e2NvbG9yOlwiIzUxNTk2N1wifX0sY29ubmVjdGlvbkRlZmF1bHRzOntzdHJva2U6e2NvbG9yOlwiIzc4Nzg3OFwifSxjb250ZW50Ontjb2xvcjpcIiM3NzdcIn0sc2VsZWN0aW9uOntoYW5kbGVzOntmaWxsOntjb2xvcjpifSxzdHJva2U6e2NvbG9yOlwiIzc4Nzg3OFwifX19fX0sdHJlZU1hcDp7Y29sb3JzOltbXCIjOGViYzAwXCIsXCIjZThmMmNjXCJdLFtcIiMzMDliNDZcIixcIiNkNmViZGFcIl0sW1wiIzI1YTBkYVwiLFwiI2QzZWNmOFwiXSxbXCIjZmY2OTAwXCIsXCIjZmZlMWNjXCJdLFtcIiNlNjFlMjZcIixcIiNmYWQyZDRcIl0sW1wiI2Q4ZTQwNFwiLFwiI2Y3ZmFjZFwiXSxbXCIjMTZhYmE5XCIsXCIjZDBlZWVlXCJdLFtcIiM3ZTUxYTFcIixcIiNlNWRjZWNcIl0sW1wiIzMxMzEzMVwiLFwiI2Q2ZDZkNlwiXSxbXCIjZWQxNjkxXCIsXCIjZmJkMGU5XCJdXX19KSxtKFwibWV0cm9ibGFja1wiLHtjaGFydDp7dGl0bGU6e2NvbG9yOlwiI2ZmZmZmZlwifSxsZWdlbmQ6e2xhYmVsczp7Y29sb3I6XCIjZmZmZmZmXCJ9LGluYWN0aXZlSXRlbXM6e2xhYmVsczp7Y29sb3I6XCIjNzk3OTc5XCJ9LG1hcmtlcnM6e2NvbG9yOlwiIzc5Nzk3OVwifX19LHNlcmllc0RlZmF1bHRzOntib3JkZXI6e19icmlnaHRuZXNzOjF9LGxhYmVsczp7Y29sb3I6XCIjZmZmZmZmXCJ9LGVycm9yQmFyczp7Y29sb3I6XCIjZmZmZmZmXCJ9LG5vdGVzOntpY29uOntiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixib3JkZXI6e2NvbG9yOlwiI2NlY2VjZVwifX0sbGFiZWw6e2NvbG9yOlwiI2ZmZmZmZlwifSxsaW5lOntjb2xvcjpcIiNjZWNlY2VcIn19LGxpbmU6e21hcmtlcnM6e2JhY2tncm91bmQ6XCIjMGUwZTBlXCJ9fSxidWJibGU6e29wYWNpdHk6LjZ9LHNjYXR0ZXI6e21hcmtlcnM6e2JhY2tncm91bmQ6XCIjMGUwZTBlXCJ9fSxzY2F0dGVyTGluZTp7bWFya2Vyczp7YmFja2dyb3VuZDpcIiMwZTBlMGVcIn19LGNhbmRsZXN0aWNrOntkb3duQ29sb3I6XCIjODI4MjgyXCIsbGluZTp7Y29sb3I6XCIjZmZmZmZmXCJ9fSx3YXRlcmZhbGw6e2xpbmU6e2NvbG9yOlwiI2NlY2VjZVwifX0saG9yaXpvbnRhbFdhdGVyZmFsbDp7bGluZTp7Y29sb3I6XCIjY2VjZWNlXCJ9fSxvdmVybGF5OntncmFkaWVudDpcIm5vbmVcIn19LGNoYXJ0QXJlYTp7YmFja2dyb3VuZDpcIiMwZTBlMGVcIn0sc2VyaWVzQ29sb3JzOltcIiMwMGFiYTlcIixcIiMzMDliNDZcIixcIiM4ZWJjMDBcIixcIiNmZjY5MDBcIixcIiNlNjFlMjZcIixcIiNkOGU0MDRcIixcIiMyNWEwZGFcIixcIiM3ZTUxYTFcIixcIiMzMTMxMzFcIixcIiNlZDE2OTFcIl0sYXhpc0RlZmF1bHRzOntsaW5lOntjb2xvcjpcIiNjZWNlY2VcIn0sbGFiZWxzOntjb2xvcjpcIiNmZmZmZmZcIn0sbWlub3JHcmlkTGluZXM6e2NvbG9yOlwiIzJkMmQyZFwifSxtYWpvckdyaWRMaW5lczp7Y29sb3I6XCIjMzMzMzMzXCJ9LHRpdGxlOntjb2xvcjpcIiNmZmZmZmZcIn0sY3Jvc3NoYWlyOntjb2xvcjpcIiNjZWNlY2VcIn0sbm90ZXM6e2ljb246e2JhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLGJvcmRlcjp7Y29sb3I6XCIjY2VjZWNlXCJ9fSxsYWJlbDp7Y29sb3I6XCIjZmZmZmZmXCJ9LGxpbmU6e2NvbG9yOlwiI2NlY2VjZVwifX19fSxnYXVnZTp7cG9pbnRlcjp7Y29sb3I6XCIjMDBhYmE5XCJ9LHNjYWxlOntyYW5nZVBsYWNlaG9sZGVyQ29sb3I6XCIjMmQyZDJkXCIsbGFiZWxzOntjb2xvcjpcIiNmZmZmZmZcIn0sbWlub3JUaWNrczp7Y29sb3I6XCIjMzMzMzMzXCJ9LG1ham9yVGlja3M6e2NvbG9yOlwiI2NlY2VjZVwifSxsaW5lOntjb2xvcjpcIiNjZWNlY2VcIn19fSxkaWFncmFtOntzaGFwZURlZmF1bHRzOntmaWxsOntjb2xvcjpcIiMwMGFiYTlcIn0sY29ubmVjdG9yRGVmYXVsdHM6e2ZpbGw6e2NvbG9yOmJ9LHN0cm9rZTp7Y29sb3I6XCIjMGUwZTBlXCJ9LGhvdmVyOntmaWxsOntjb2xvcjpcIiMwZTBlMGVcIn0sc3Ryb2tlOntjb2xvcjpifX19LGNvbnRlbnQ6e2NvbG9yOmJ9fSxlZGl0YWJsZTp7cmVzaXplOntoYW5kbGVzOntmaWxsOntjb2xvcjpcIiMwZTBlMGVcIn0sc3Ryb2tlOntjb2xvcjpcIiM3ODc4NzhcIn0saG92ZXI6e2ZpbGw6e2NvbG9yOlwiIzc4Nzg3OFwifSxzdHJva2U6e2NvbG9yOlwiIzc4Nzg3OFwifX19fSxyb3RhdGU6e3RodW1iOntzdHJva2U6e2NvbG9yOmJ9LGZpbGw6e2NvbG9yOmJ9fX19LHNlbGVjdGFibGU6e3N0cm9rZTp7Y29sb3I6XCIjNzg3ODc4XCJ9fSxjb25uZWN0aW9uRGVmYXVsdHM6e3N0cm9rZTp7Y29sb3I6Yn0sY29udGVudDp7Y29sb3I6Yn0sc2VsZWN0aW9uOntoYW5kbGVzOntmaWxsOntjb2xvcjpcIiMwZTBlMGVcIn0sc3Ryb2tlOntjb2xvcjpifX19fX0sdHJlZU1hcDp7Y29sb3JzOltbXCIjMDBhYmE5XCIsXCIjMGIyZDJkXCJdLFtcIiMzMDliNDZcIixcIiMxNTJhMTlcIl0sW1wiIzhlYmMwMFwiLFwiIzI4MzEwYlwiXSxbXCIjZmY2OTAwXCIsXCIjM2UyMDBiXCJdLFtcIiNlNjFlMjZcIixcIiMzOTExMTNcIl0sW1wiI2Q4ZTQwNFwiLFwiIzM2MzkwY1wiXSxbXCIjMjVhMGRhXCIsXCIjMTMyYjM3XCJdLFtcIiM3ZTUxYTFcIixcIiMyNDFiMmJcIl0sW1wiIzMxMzEzMVwiLFwiIzE1MTUxNVwiXSxbXCIjZWQxNjkxXCIsXCIjM2IxMDI4XCJdXX19KSxtKFwibW9vbmxpZ2h0XCIse2NoYXJ0Ont0aXRsZTp7Y29sb3I6XCIjZmZmZmZmXCJ9LGxlZ2VuZDp7bGFiZWxzOntjb2xvcjpcIiNmZmZmZmZcIn0saW5hY3RpdmVJdGVtczp7bGFiZWxzOntjb2xvcjpcIiNBMUE3QUJcIn0sbWFya2Vyczp7Y29sb3I6XCIjQTFBN0FCXCJ9fX0sc2VyaWVzRGVmYXVsdHM6e2xhYmVsczp7Y29sb3I6XCIjZmZmZmZmXCJ9LGVycm9yQmFyczp7Y29sb3I6XCIjZmZmZmZmXCJ9LG5vdGVzOntpY29uOntiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixib3JkZXI6e2NvbG9yOlwiIzhjOTA5ZVwifX0sbGFiZWw6e2NvbG9yOlwiI2ZmZmZmZlwifSxsaW5lOntjb2xvcjpcIiM4YzkwOWVcIn19LHBpZTp7b3ZlcmxheTp7Z3JhZGllbnQ6XCJzaGFycEJldmVsXCJ9fSxkb251dDp7b3ZlcmxheTp7Z3JhZGllbnQ6XCJzaGFycEdsYXNzXCJ9fSxsaW5lOnttYXJrZXJzOntiYWNrZ3JvdW5kOlwiIzIxMmEzM1wifX0sYnViYmxlOntvcGFjaXR5Oi42fSxzY2F0dGVyOnttYXJrZXJzOntiYWNrZ3JvdW5kOlwiIzIxMmEzM1wifX0sc2NhdHRlckxpbmU6e21hcmtlcnM6e2JhY2tncm91bmQ6XCIjMjEyYTMzXCJ9fSxhcmVhOntvcGFjaXR5Oi4zfSxjYW5kbGVzdGljazp7ZG93bkNvbG9yOlwiIzc1N2Q4N1wiLGxpbmU6e2NvbG9yOlwiI2VhOWQwNlwifSxib3JkZXI6e19icmlnaHRuZXNzOjEuNSxvcGFjaXR5OjF9LGhpZ2hsaWdodDp7Ym9yZGVyOntjb2xvcjpiLG9wYWNpdHk6LjJ9fX0sd2F0ZXJmYWxsOntsaW5lOntjb2xvcjpcIiM4YzkwOWVcIn19LGhvcml6b250YWxXYXRlcmZhbGw6e2xpbmU6e2NvbG9yOlwiIzhjOTA5ZVwifX0sb2hsYzp7bGluZTp7Y29sb3I6XCIjZWE5ZDA2XCJ9fX0sY2hhcnRBcmVhOntiYWNrZ3JvdW5kOlwiIzIxMmEzM1wifSxzZXJpZXNDb2xvcnM6W1wiI2ZmY2EwOFwiLFwiI2ZmNzEwZlwiLFwiI2VkMmUyNFwiLFwiI2ZmOWYwM1wiLFwiI2UxM2MwMlwiLFwiI2EwMDIwMVwiXSxheGlzRGVmYXVsdHM6e2xpbmU6e2NvbG9yOlwiIzhjOTA5ZVwifSxtaW5vclRpY2tzOntjb2xvcjpcIiM4YzkwOWVcIn0sbWFqb3JUaWNrczp7Y29sb3I6XCIjOGM5MDllXCJ9LGxhYmVsczp7Y29sb3I6XCIjZmZmZmZmXCJ9LG1ham9yR3JpZExpbmVzOntjb2xvcjpcIiMzZTQyNGRcIn0sbWlub3JHcmlkTGluZXM6e2NvbG9yOlwiIzJmMzY0MFwifSx0aXRsZTp7Y29sb3I6XCIjZmZmZmZmXCJ9LGNyb3NzaGFpcjp7Y29sb3I6XCIjOGM5MDllXCJ9LG5vdGVzOntpY29uOntiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixib3JkZXI6e2NvbG9yOlwiIzhjOTA5ZVwifX0sbGFiZWw6e2NvbG9yOlwiI2ZmZmZmZlwifSxsaW5lOntjb2xvcjpcIiM4YzkwOWVcIn19fX0sZ2F1Z2U6e3BvaW50ZXI6e2NvbG9yOlwiI2Y0YWYwM1wifSxzY2FsZTp7cmFuZ2VQbGFjZWhvbGRlckNvbG9yOlwiIzJmMzY0MFwiLGxhYmVsczp7Y29sb3I6Yn0sbWlub3JUaWNrczp7Y29sb3I6XCIjOGM5MDllXCJ9LG1ham9yVGlja3M6e2NvbG9yOlwiIzhjOTA5ZVwifSxsaW5lOntjb2xvcjpcIiM4YzkwOWVcIn19fSxkaWFncmFtOntzaGFwZURlZmF1bHRzOntmaWxsOntjb2xvcjpcIiNmM2FlMDNcIn0sY29ubmVjdG9yRGVmYXVsdHM6e2ZpbGw6e2NvbG9yOmJ9LHN0cm9rZTp7Y29sb3I6XCIjNDE0NTUwXCJ9LGhvdmVyOntmaWxsOntjb2xvcjpcIiM0MTQ1NTBcIn0sc3Ryb2tlOntjb2xvcjpifX19LGNvbnRlbnQ6e2NvbG9yOmJ9fSxlZGl0YWJsZTp7cmVzaXplOntoYW5kbGVzOntmaWxsOntjb2xvcjpcIiM0MTQ1NTBcIn0sc3Ryb2tlOntjb2xvcjpifSxob3Zlcjp7ZmlsbDp7Y29sb3I6Yn0sc3Ryb2tlOntjb2xvcjpifX19fSxyb3RhdGU6e3RodW1iOntzdHJva2U6e2NvbG9yOmJ9LGZpbGw6e2NvbG9yOmJ9fX19LHNlbGVjdGFibGU6e3N0cm9rZTp7Y29sb3I6Yn19LGNvbm5lY3Rpb25EZWZhdWx0czp7c3Ryb2tlOntjb2xvcjpifSxjb250ZW50Ontjb2xvcjpifSxzZWxlY3Rpb246e2hhbmRsZXM6e2ZpbGw6e2NvbG9yOlwiIzQxNDU1MFwifSxzdHJva2U6e2NvbG9yOmJ9fX19fSx0cmVlTWFwOntjb2xvcnM6W1tcIiNmZmNhMDhcIixcIiM0ZTRiMmJcIl0sW1wiI2ZmNzEwZlwiLFwiIzRlMzkyZFwiXSxbXCIjZWQyZTI0XCIsXCIjNGIyYzMxXCJdLFtcIiNmZjlmMDNcIixcIiM0ZTQyMmFcIl0sW1wiI2UxM2MwMlwiLFwiIzQ4MmUyYVwiXSxbXCIjYTAwMjAxXCIsXCIjM2IyMzJhXCJdXX19KSxtKFwidW5pZm9ybVwiLHtjaGFydDp7dGl0bGU6e2NvbG9yOlwiIzY4Njg2OFwifSxsZWdlbmQ6e2xhYmVsczp7Y29sb3I6XCIjNjg2ODY4XCJ9LGluYWN0aXZlSXRlbXM6e2xhYmVsczp7Y29sb3I6XCIjQjZCNkI2XCJ9LG1hcmtlcnM6e2NvbG9yOlwiI0I2QjZCNlwifX19LHNlcmllc0RlZmF1bHRzOntsYWJlbHM6e2NvbG9yOlwiIzY4Njg2OFwifSxlcnJvckJhcnM6e2NvbG9yOlwiIzY4Njg2OFwifSxub3Rlczp7aWNvbjp7YmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsYm9yZGVyOntjb2xvcjpcIiM5ZTllOWVcIn19LGxhYmVsOntjb2xvcjpcIiM2ODY4NjhcIn0sbGluZTp7Y29sb3I6XCIjOWU5ZTllXCJ9fSxwaWU6e292ZXJsYXk6e2dyYWRpZW50Olwic2hhcnBCZXZlbFwifX0sZG9udXQ6e292ZXJsYXk6e2dyYWRpZW50Olwic2hhcnBHbGFzc1wifX0sbGluZTp7bWFya2Vyczp7YmFja2dyb3VuZDpcIiNmZmZmZmZcIn19LGJ1YmJsZTp7b3BhY2l0eTouNn0sc2NhdHRlcjp7bWFya2Vyczp7YmFja2dyb3VuZDpcIiNmZmZmZmZcIn19LHNjYXR0ZXJMaW5lOnttYXJrZXJzOntiYWNrZ3JvdW5kOlwiI2ZmZmZmZlwifX0sYXJlYTp7b3BhY2l0eTouM30sY2FuZGxlc3RpY2s6e2Rvd25Db2xvcjpcIiNjY2NjY2NcIixsaW5lOntjb2xvcjpcIiNjY2NjY2NcIn0sYm9yZGVyOntfYnJpZ2h0bmVzczoxLjUsb3BhY2l0eToxfSxoaWdobGlnaHQ6e2JvcmRlcjp7Y29sb3I6XCIjY2NjY2NjXCIsb3BhY2l0eTouMn19fSx3YXRlcmZhbGw6e2xpbmU6e2NvbG9yOlwiIzllOWU5ZVwifX0saG9yaXpvbnRhbFdhdGVyZmFsbDp7bGluZTp7Y29sb3I6XCIjOWU5ZTllXCJ9fSxvaGxjOntsaW5lOntjb2xvcjpcIiNjY2NjY2NcIn19fSxjaGFydEFyZWE6e2JhY2tncm91bmQ6XCIjZmZmZmZmXCJ9LHNlcmllc0NvbG9yczpbXCIjNTI3YWEzXCIsXCIjNmY5MWIzXCIsXCIjOGNhN2MyXCIsXCIjYThiZGQxXCIsXCIjYzVkM2UwXCIsXCIjZTJlOWYwXCJdLGF4aXNEZWZhdWx0czp7bGluZTp7Y29sb3I6XCIjOWU5ZTllXCJ9LG1pbm9yVGlja3M6e2NvbG9yOlwiI2FhYWFhYVwifSxtYWpvclRpY2tzOntjb2xvcjpcIiM4ODg4ODhcIn0sbGFiZWxzOntjb2xvcjpcIiM2ODY4NjhcIn0sbWFqb3JHcmlkTGluZXM6e2NvbG9yOlwiI2RhZGFkYVwifSxtaW5vckdyaWRMaW5lczp7Y29sb3I6XCIjZTdlN2U3XCJ9LHRpdGxlOntjb2xvcjpcIiM2ODY4NjhcIn0sY3Jvc3NoYWlyOntjb2xvcjpcIiM5ZTllOWVcIn0sbm90ZXM6e2ljb246e2JhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLGJvcmRlcjp7Y29sb3I6XCIjOWU5ZTllXCJ9fSxsYWJlbDp7Y29sb3I6XCIjNjg2ODY4XCJ9LGxpbmU6e2NvbG9yOlwiIzllOWU5ZVwifX19fSxnYXVnZTp7cG9pbnRlcjp7Y29sb3I6XCIjNTI3YWEzXCJ9LHNjYWxlOntyYW5nZVBsYWNlaG9sZGVyQ29sb3I6XCIjZTdlN2U3XCIsbGFiZWxzOntjb2xvcjpcIiM2ODY4NjhcIn0sbWlub3JUaWNrczp7Y29sb3I6XCIjYWFhYWFhXCJ9LG1ham9yVGlja3M6e2NvbG9yOlwiIzg4ODg4OFwifSxsaW5lOntjb2xvcjpcIiM5ZTllOWVcIn19fSxkaWFncmFtOntzaGFwZURlZmF1bHRzOntmaWxsOntjb2xvcjpcIiNkMWQxZDFcIn0sY29ubmVjdG9yRGVmYXVsdHM6e2ZpbGw6e2NvbG9yOlwiIzY4Njg2OFwifSxzdHJva2U6e2NvbG9yOmJ9LGhvdmVyOntmaWxsOntjb2xvcjpifSxzdHJva2U6e2NvbG9yOlwiIzY4Njg2OFwifX19LGNvbnRlbnQ6e2NvbG9yOlwiIzY4Njg2OFwifX0sZWRpdGFibGU6e3Jlc2l6ZTp7aGFuZGxlczp7ZmlsbDp7Y29sb3I6Yn0sc3Ryb2tlOntjb2xvcjpcIiM2ODY4NjhcIn0saG92ZXI6e2ZpbGw6e2NvbG9yOlwiIzY4Njg2OFwifSxzdHJva2U6e2NvbG9yOlwiIzY4Njg2OFwifX19fSxyb3RhdGU6e3RodW1iOntzdHJva2U6e2NvbG9yOlwiIzY4Njg2OFwifSxmaWxsOntjb2xvcjpcIiM2ODY4NjhcIn19fX0sc2VsZWN0YWJsZTp7c3Ryb2tlOntjb2xvcjpcIiM2ODY4NjhcIn19LGNvbm5lY3Rpb25EZWZhdWx0czp7c3Ryb2tlOntjb2xvcjpcIiM2ODY4NjhcIn0sY29udGVudDp7Y29sb3I6XCIjNjg2ODY4XCJ9LHNlbGVjdGlvbjp7aGFuZGxlczp7ZmlsbDp7Y29sb3I6Yn0sc3Ryb2tlOntjb2xvcjpcIiM2ODY4NjhcIn19fX19LHRyZWVNYXA6e2NvbG9yczpbW1wiIzUyN2FhM1wiLFwiI2QwZDhlMVwiXSxbXCIjNmY5MWIzXCIsXCIjZDZkZGU0XCJdLFtcIiM4Y2E3YzJcIixcIiNkY2UxZTdcIl0sW1wiI2E4YmRkMVwiLFwiI2UyZTZlYVwiXSxbXCIjYzVkM2UwXCIsXCIjZTdlYWVkXCJdLFtcIiNlMmU5ZjBcIixcIiNlZGVmZjBcIl1dfX0pLG0oXCJib290c3RyYXBcIix7Y2hhcnQ6e3RpdGxlOntjb2xvcjpcIiMzMzMzMzNcIn0sbGVnZW5kOntsYWJlbHM6e2NvbG9yOlwiIzMzMzMzM1wifSxpbmFjdGl2ZUl0ZW1zOntsYWJlbHM6e2NvbG9yOlwiIzk5OTk5OVwifSxtYXJrZXJzOntjb2xvcjpcIiM5QTlBOUFcIn19fSxzZXJpZXNEZWZhdWx0czp7bGFiZWxzOntjb2xvcjpcIiMzMzMzMzNcIn0sb3ZlcmxheTp7Z3JhZGllbnQ6XCJub25lXCJ9LGVycm9yQmFyczp7Y29sb3I6XCIjMzQzNDM0XCJ9LG5vdGVzOntpY29uOntiYWNrZ3JvdW5kOlwiIzAwMDAwMFwiLGJvcmRlcjp7Y29sb3I6XCIjMDAwMDAwXCJ9fSxsYWJlbDp7Y29sb3I6XCIjMzMzMzMzXCJ9LGxpbmU6e2NvbG9yOlwiIzAwMDAwMFwifX0scGllOntvdmVybGF5OntncmFkaWVudDpcIm5vbmVcIn19LGRvbnV0OntvdmVybGF5OntncmFkaWVudDpcIm5vbmVcIn19LGxpbmU6e21hcmtlcnM6e2JhY2tncm91bmQ6XCIjZmZmZmZmXCJ9fSxidWJibGU6e29wYWNpdHk6LjZ9LHNjYXR0ZXI6e21hcmtlcnM6e2JhY2tncm91bmQ6XCIjZmZmZmZmXCJ9fSxzY2F0dGVyTGluZTp7bWFya2Vyczp7YmFja2dyb3VuZDpcIiNmZmZmZmZcIn19LGFyZWE6e29wYWNpdHk6Ljh9LGNhbmRsZXN0aWNrOntkb3duQ29sb3I6XCIjZDBkMGQwXCIsbGluZTp7Y29sb3I6XCIjMzMzMzMzXCJ9LGJvcmRlcjp7X2JyaWdodG5lc3M6MS41LG9wYWNpdHk6MX0saGlnaGxpZ2h0Ontib3JkZXI6e2NvbG9yOlwiI2I4YjhiOFwiLG9wYWNpdHk6LjJ9fX0sd2F0ZXJmYWxsOntsaW5lOntjb2xvcjpcIiNjY2NjY2NcIn19LGhvcml6b250YWxXYXRlcmZhbGw6e2xpbmU6e2NvbG9yOlwiI2NjY2NjY1wifX0sb2hsYzp7bGluZTp7Y29sb3I6XCIjMzMzMzMzXCJ9fX0sY2hhcnRBcmVhOntiYWNrZ3JvdW5kOlwiI2ZmZmZmZlwifSxzZXJpZXNDb2xvcnM6W1wiIzQyOGJjYVwiLFwiIzViYzBkZVwiLFwiIzVjYjg1Y1wiLFwiI2YyYjY2MVwiLFwiI2U2N2Q0YVwiLFwiI2RhM2IzNlwiXSxheGlzRGVmYXVsdHM6e2xpbmU6e2NvbG9yOlwiI2NjY2NjY1wifSxtaW5vclRpY2tzOntjb2xvcjpcIiNlYmViZWJcIn0sbWFqb3JUaWNrczp7Y29sb3I6XCIjY2NjY2NjXCJ9LGxhYmVsczp7Y29sb3I6XCIjMzMzMzMzXCJ9LG1ham9yR3JpZExpbmVzOntjb2xvcjpcIiNjY2NjY2NcIn0sbWlub3JHcmlkTGluZXM6e2NvbG9yOlwiI2ViZWJlYlwifSx0aXRsZTp7Y29sb3I6XCIjMzMzMzMzXCJ9LGNyb3NzaGFpcjp7Y29sb3I6XCIjMDAwMDAwXCJ9LG5vdGVzOntpY29uOntiYWNrZ3JvdW5kOlwiIzAwMDAwMFwiLGJvcmRlcjp7Y29sb3I6XCIjMDAwMDAwXCJ9fSxsYWJlbDp7Y29sb3I6XCIjZmZmZmZmXCJ9LGxpbmU6e2NvbG9yOlwiIzAwMDAwMFwifX19fSxnYXVnZTp7cG9pbnRlcjp7Y29sb3I6XCIjNDI4YmNhXCJ9LHNjYWxlOntyYW5nZVBsYWNlaG9sZGVyQ29sb3I6XCIjY2NjY2NjXCIsbGFiZWxzOntjb2xvcjpcIiMzMzMzMzNcIn0sbWlub3JUaWNrczp7Y29sb3I6XCIjZWJlYmViXCJ9LG1ham9yVGlja3M6e2NvbG9yOlwiI2NjY2NjY1wifSxsaW5lOntjb2xvcjpcIiNjY2NjY2NcIn19fSxkaWFncmFtOntzaGFwZURlZmF1bHRzOntmaWxsOntjb2xvcjpcIiM0MjhiY2FcIn0sY29ubmVjdG9yRGVmYXVsdHM6e2ZpbGw6e2NvbG9yOlwiIzMzMzMzM1wifSxzdHJva2U6e2NvbG9yOmJ9LGhvdmVyOntmaWxsOntjb2xvcjpifSxzdHJva2U6e2NvbG9yOlwiIzMzMzMzM1wifX19LGNvbnRlbnQ6e2NvbG9yOlwiIzMzMzMzM1wifX0sZWRpdGFibGU6e3Jlc2l6ZTp7aGFuZGxlczp7ZmlsbDp7Y29sb3I6Yn0sc3Ryb2tlOntjb2xvcjpcIiMzMzMzMzNcIn0saG92ZXI6e2ZpbGw6e2NvbG9yOlwiIzMzMzMzM1wifSxzdHJva2U6e2NvbG9yOlwiIzMzMzMzM1wifX19fSxyb3RhdGU6e3RodW1iOntzdHJva2U6e2NvbG9yOlwiIzMzMzMzM1wifSxmaWxsOntjb2xvcjpcIiMzMzMzMzNcIn19fX0sc2VsZWN0YWJsZTp7c3Ryb2tlOntjb2xvcjpcIiMzMzMzMzNcIn19LGNvbm5lY3Rpb25EZWZhdWx0czp7c3Ryb2tlOntjb2xvcjpcIiNjNGM0YzRcIn0sY29udGVudDp7Y29sb3I6XCIjMzMzMzMzXCJ9LHNlbGVjdGlvbjp7aGFuZGxlczp7ZmlsbDp7Y29sb3I6Yn0sc3Ryb2tlOntjb2xvcjpcIiMzMzMzMzNcIn19LHN0cm9rZTp7Y29sb3I6XCIjMzMzMzMzXCJ9fX19LHRyZWVNYXA6e2NvbG9yczpbW1wiIzQyOGJjYVwiLFwiI2QxZTBlY1wiXSxbXCIjNWJjMGRlXCIsXCIjZDZlYWYwXCJdLFtcIiM1Y2I4NWNcIixcIiNkNmU5ZDZcIl0sW1wiIzVjYjg1Y1wiLFwiI2Y0ZThkN1wiXSxbXCIjZTY3ZDRhXCIsXCIjZjJkZGQzXCJdLFtcIiNkYTNiMzZcIixcIiNmMGQwY2ZcIl1dfX0pLG0oXCJmbGF0XCIse2NoYXJ0Ont0aXRsZTp7Y29sb3I6XCIjNGM1MzU2XCJ9LGxlZ2VuZDp7bGFiZWxzOntjb2xvcjpcIiM0YzUzNTZcIn0saW5hY3RpdmVJdGVtczp7bGFiZWxzOntjb2xvcjpcIiNDQkNCQ0JcIn0sbWFya2Vyczp7Y29sb3I6XCIjQ0JDQkNCXCJ9fX0sc2VyaWVzRGVmYXVsdHM6e2xhYmVsczp7Y29sb3I6XCIjNGM1MzU2XCJ9LGVycm9yQmFyczp7Y29sb3I6XCIjNGM1MzU2XCJ9LG5vdGVzOntpY29uOntiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixib3JkZXI6e2NvbG9yOlwiI2NkY2RjZFwifX0sbGFiZWw6e2NvbG9yOlwiIzRjNTM1NlwifSxsaW5lOntjb2xvcjpcIiNjZGNkY2RcIn19LGNhbmRsZXN0aWNrOntkb3duQ29sb3I6XCIjYzdjN2M3XCIsbGluZTp7Y29sb3I6XCIjNzg3ODc4XCJ9fSxhcmVhOntvcGFjaXR5Oi45fSx3YXRlcmZhbGw6e2xpbmU6e2NvbG9yOlwiI2NkY2RjZFwifX0saG9yaXpvbnRhbFdhdGVyZmFsbDp7bGluZTp7Y29sb3I6XCIjY2RjZGNkXCJ9fSxvdmVybGF5OntncmFkaWVudDpcIm5vbmVcIn0sYm9yZGVyOntfYnJpZ2h0bmVzczoxfX0sc2VyaWVzQ29sb3JzOltcIiMxMGM0YjJcIixcIiNmZjc2NjNcIixcIiNmZmI3NGZcIixcIiNhMmRmNTNcIixcIiMxYzllYzRcIixcIiNmZjYzYTVcIixcIiMxY2M0N2JcIl0sYXhpc0RlZmF1bHRzOntsaW5lOntjb2xvcjpcIiNjZGNkY2RcIn0sbGFiZWxzOntjb2xvcjpcIiM0YzUzNTZcIn0sbWlub3JHcmlkTGluZXM6e2NvbG9yOlwiI2NkY2RjZFwifSxtYWpvckdyaWRMaW5lczp7Y29sb3I6XCIjY2RjZGNkXCJ9LHRpdGxlOntjb2xvcjpcIiM0YzUzNTZcIn0sY3Jvc3NoYWlyOntjb2xvcjpcIiNjZGNkY2RcIn0sbm90ZXM6e2ljb246e2JhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLGJvcmRlcjp7Y29sb3I6XCIjY2RjZGNkXCJ9fSxsYWJlbDp7Y29sb3I6XCIjNGM1MzU2XCJ9LGxpbmU6e2NvbG9yOlwiI2NkY2RjZFwifX19fSxnYXVnZTp7cG9pbnRlcjp7Y29sb3I6XCIjMTBjNGIyXCJ9LHNjYWxlOntyYW5nZVBsYWNlaG9sZGVyQ29sb3I6XCIjY2RjZGNkXCIsbGFiZWxzOntjb2xvcjpcIiM0YzUzNTZcIn0sbWlub3JUaWNrczp7Y29sb3I6XCIjNGM1MzU2XCJ9LG1ham9yVGlja3M6e2NvbG9yOlwiIzRjNTM1NlwifSxsaW5lOntjb2xvcjpcIiM0YzUzNTZcIn19fSxkaWFncmFtOntzaGFwZURlZmF1bHRzOntmaWxsOntjb2xvcjpcIiMxMGM0YjJcIn0sY29ubmVjdG9yRGVmYXVsdHM6e2ZpbGw6e2NvbG9yOlwiIzM2Mzk0MFwifSxzdHJva2U6e2NvbG9yOmJ9LGhvdmVyOntmaWxsOntjb2xvcjpifSxzdHJva2U6e2NvbG9yOlwiIzM2Mzk0MFwifX19LGNvbnRlbnQ6e2NvbG9yOlwiIzRjNTM1NlwifX0sZWRpdGFibGU6e3Jlc2l6ZTp7aGFuZGxlczp7ZmlsbDp7Y29sb3I6Yn0sc3Ryb2tlOntjb2xvcjpcIiMzNjM5NDBcIn0saG92ZXI6e2ZpbGw6e2NvbG9yOlwiIzM2Mzk0MFwifSxzdHJva2U6e2NvbG9yOlwiIzM2Mzk0MFwifX19fSxyb3RhdGU6e3RodW1iOntzdHJva2U6e2NvbG9yOlwiIzM2Mzk0MFwifSxmaWxsOntjb2xvcjpcIiMzNjM5NDBcIn19fX0sc2VsZWN0YWJsZTp7c3Ryb2tlOntjb2xvcjpcIiMzNjM5NDBcIn19LGNvbm5lY3Rpb25EZWZhdWx0czp7c3Ryb2tlOntjb2xvcjpcIiNjZGNkY2RcIn0sY29udGVudDp7Y29sb3I6XCIjNGM1MzU2XCJcbn0sc2VsZWN0aW9uOntoYW5kbGVzOntmaWxsOntjb2xvcjpifSxzdHJva2U6e2NvbG9yOlwiIzM2Mzk0MFwifX0sc3Ryb2tlOntjb2xvcjpcIiMzNjM5NDBcIn19fX0sdHJlZU1hcDp7Y29sb3JzOltbXCIjMTBjNGIyXCIsXCIjY2ZmM2YwXCJdLFtcIiNmZjc2NjNcIixcIiNmZmU0ZTBcIl0sW1wiI2ZmYjc0ZlwiLFwiI2ZmZjFkY1wiXSxbXCIjYTJkZjUzXCIsXCIjZWNmOWRkXCJdLFtcIiMxYzllYzRcIixcIiNkMmVjZjNcIl0sW1wiI2ZmNjNhNVwiLFwiI2ZmZTBlZFwiXSxbXCIjMWNjNDdiXCIsXCIjZDJmM2U1XCJdXX19KSxtKFwibWF0ZXJpYWxcIix7Y2hhcnQ6e3RpdGxlOntjb2xvcjpcIiM0NDQ0NDRcIn0sbGVnZW5kOntsYWJlbHM6e2NvbG9yOlwiIzQ0NDQ0NFwifSxpbmFjdGl2ZUl0ZW1zOntsYWJlbHM6e2NvbG9yOlwiI0NCQ0JDQlwifSxtYXJrZXJzOntjb2xvcjpcIiNDQkNCQ0JcIn19fSxzZXJpZXNEZWZhdWx0czp7bGFiZWxzOntjb2xvcjpcIiM0NDQ0NDRcIn0sZXJyb3JCYXJzOntjb2xvcjpcIiM0NDQ0NDRcIn0sbm90ZXM6e2ljb246e2JhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLGJvcmRlcjp7Y29sb3I6XCIjZTVlNWU1XCJ9fSxsYWJlbDp7Y29sb3I6XCIjNDQ0NDQ0XCJ9LGxpbmU6e2NvbG9yOlwiI2U1ZTVlNVwifX0sY2FuZGxlc3RpY2s6e2Rvd25Db2xvcjpcIiNjN2M3YzdcIixsaW5lOntjb2xvcjpcIiM3ODc4NzhcIn19LGFyZWE6e29wYWNpdHk6Ljl9LHdhdGVyZmFsbDp7bGluZTp7Y29sb3I6XCIjZTVlNWU1XCJ9fSxob3Jpem9udGFsV2F0ZXJmYWxsOntsaW5lOntjb2xvcjpcIiNlNWU1ZTVcIn19LG92ZXJsYXk6e2dyYWRpZW50Olwibm9uZVwifSxib3JkZXI6e19icmlnaHRuZXNzOjF9fSxzZXJpZXNDb2xvcnM6W1wiIzNmNTFiNVwiLFwiIzAzYTlmNFwiLFwiIzRjYWY1MFwiLFwiI2Y5Y2UxZFwiLFwiI2ZmOTgwMFwiLFwiI2ZmNTcyMlwiXSxheGlzRGVmYXVsdHM6e2xpbmU6e2NvbG9yOlwiI2U1ZTVlNVwifSxsYWJlbHM6e2NvbG9yOlwiIzQ0NDQ0NFwifSxtaW5vckdyaWRMaW5lczp7Y29sb3I6XCIjZTVlNWU1XCJ9LG1ham9yR3JpZExpbmVzOntjb2xvcjpcIiNlNWU1ZTVcIn0sdGl0bGU6e2NvbG9yOlwiIzQ0NDQ0NFwifSxjcm9zc2hhaXI6e2NvbG9yOlwiIzdmN2Y3ZlwifSxub3Rlczp7aWNvbjp7YmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsYm9yZGVyOntjb2xvcjpcIiNlNWU1ZTVcIn19LGxhYmVsOntjb2xvcjpcIiM0NDQ0NDRcIn0sbGluZTp7Y29sb3I6XCIjZTVlNWU1XCJ9fX19LGdhdWdlOntwb2ludGVyOntjb2xvcjpcIiMzZjUxYjVcIn0sc2NhbGU6e3JhbmdlUGxhY2Vob2xkZXJDb2xvcjpcIiNlNWU1ZTVcIixsYWJlbHM6e2NvbG9yOlwiIzQ0NDQ0NFwifSxtaW5vclRpY2tzOntjb2xvcjpcIiM0NDQ0NDRcIn0sbWFqb3JUaWNrczp7Y29sb3I6XCIjNDQ0NDQ0XCJ9LGxpbmU6e2NvbG9yOlwiIzQ0NDQ0NFwifX19LGRpYWdyYW06e3NoYXBlRGVmYXVsdHM6e2ZpbGw6e2NvbG9yOlwiIzNmNTFiNVwifSxjb25uZWN0b3JEZWZhdWx0czp7ZmlsbDp7Y29sb3I6XCIjN2Y3ZjdmXCJ9LHN0cm9rZTp7Y29sb3I6Yn0saG92ZXI6e2ZpbGw6e2NvbG9yOmJ9LHN0cm9rZTp7Y29sb3I6XCIjN2Y3ZjdmXCJ9fX0sY29udGVudDp7Y29sb3I6XCIjNDQ0NDQ0XCJ9fSxlZGl0YWJsZTp7cmVzaXplOntoYW5kbGVzOntmaWxsOntjb2xvcjpifSxzdHJva2U6e2NvbG9yOlwiIzQ0NDQ0NFwifSxob3Zlcjp7ZmlsbDp7Y29sb3I6XCIjNDQ0NDQ0XCJ9LHN0cm9rZTp7Y29sb3I6XCIjNDQ0NDQ0XCJ9fX19LHJvdGF0ZTp7dGh1bWI6e3N0cm9rZTp7Y29sb3I6XCIjNDQ0NDQ0XCJ9LGZpbGw6e2NvbG9yOlwiIzQ0NDQ0NFwifX19fSxzZWxlY3RhYmxlOntzdHJva2U6e2NvbG9yOlwiIzQ0NDQ0NFwifX0sY29ubmVjdGlvbkRlZmF1bHRzOntzdHJva2U6e2NvbG9yOlwiIzdmN2Y3ZlwifSxjb250ZW50Ontjb2xvcjpcIiM0NDQ0NDRcIn0sc2VsZWN0aW9uOntoYW5kbGVzOntmaWxsOntjb2xvcjpifSxzdHJva2U6e2NvbG9yOlwiIzQ0NDQ0NFwifX0sc3Ryb2tlOntjb2xvcjpcIiM0NDQ0NDRcIn19fX0sdHJlZU1hcDp7Y29sb3JzOltbXCIjM2Y1MWI1XCIsXCIjY2ZmM2YwXCJdLFtcIiMwM2E5ZjRcIixcIiNlNWY2ZmVcIl0sW1wiIzRjYWY1MFwiLFwiI2VkZjdlZFwiXSxbXCIjZjljZTFkXCIsXCIjZmVmYWU4XCJdLFtcIiNmZjk4MDBcIixcIiNmZmY0ZTVcIl0sW1wiI2ZmNTcyMlwiLFwiI2ZmZWVlOFwiXV19fSksbShcIm1hdGVyaWFsYmxhY2tcIix7Y2hhcnQ6e3RpdGxlOntjb2xvcjpcIiNmZmZcIn0sbGVnZW5kOntsYWJlbHM6e2NvbG9yOlwiI2ZmZlwifSxpbmFjdGl2ZUl0ZW1zOntsYWJlbHM6e2NvbG9yOlwiI0NCQ0JDQlwifSxtYXJrZXJzOntjb2xvcjpcIiNDQkNCQ0JcIn19fSxzZXJpZXNEZWZhdWx0czp7bGFiZWxzOntjb2xvcjpcIiNmZmZcIn0sZXJyb3JCYXJzOntjb2xvcjpcIiNmZmZcIn0sbm90ZXM6e2ljb246e2JhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLGJvcmRlcjp7Y29sb3I6XCIjZTVlNWU1XCJ9fSxsYWJlbDp7Y29sb3I6XCIjZmZmXCJ9LGxpbmU6e2NvbG9yOlwiI2U1ZTVlNVwifX0sY2FuZGxlc3RpY2s6e2Rvd25Db2xvcjpcIiNjN2M3YzdcIixsaW5lOntjb2xvcjpcIiM3ODc4NzhcIn19LGFyZWE6e29wYWNpdHk6Ljl9LHdhdGVyZmFsbDp7bGluZTp7Y29sb3I6XCIjNGQ0ZDRkXCJ9fSxob3Jpem9udGFsV2F0ZXJmYWxsOntsaW5lOntjb2xvcjpcIiM0ZDRkNGRcIn19LG92ZXJsYXk6e2dyYWRpZW50Olwibm9uZVwifSxib3JkZXI6e19icmlnaHRuZXNzOjF9fSxjaGFydEFyZWE6e2JhY2tncm91bmQ6XCIjMWMxYzFjXCJ9LHNlcmllc0NvbG9yczpbXCIjM2Y1MWI1XCIsXCIjMDNhOWY0XCIsXCIjNGNhZjUwXCIsXCIjZjljZTFkXCIsXCIjZmY5ODAwXCIsXCIjZmY1NzIyXCJdLGF4aXNEZWZhdWx0czp7bGluZTp7Y29sb3I6XCIjNGQ0ZDRkXCJ9LGxhYmVsczp7Y29sb3I6XCIjZmZmXCJ9LG1pbm9yR3JpZExpbmVzOntjb2xvcjpcIiM0ZDRkNGRcIn0sbWFqb3JHcmlkTGluZXM6e2NvbG9yOlwiIzRkNGQ0ZFwifSx0aXRsZTp7Y29sb3I6XCIjZmZmXCJ9LGNyb3NzaGFpcjp7Y29sb3I6XCIjN2Y3ZjdmXCJ9LG5vdGVzOntpY29uOntiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixib3JkZXI6e2NvbG9yOlwiIzRkNGQ0ZFwifX0sbGFiZWw6e2NvbG9yOlwiI2ZmZlwifSxsaW5lOntjb2xvcjpcIiM0ZDRkNGRcIn19fX0sZ2F1Z2U6e3BvaW50ZXI6e2NvbG9yOlwiIzNmNTFiNVwifSxzY2FsZTp7cmFuZ2VQbGFjZWhvbGRlckNvbG9yOlwiIzRkNGQ0ZFwiLGxhYmVsczp7Y29sb3I6XCIjZmZmXCJ9LG1pbm9yVGlja3M6e2NvbG9yOlwiI2ZmZlwifSxtYWpvclRpY2tzOntjb2xvcjpcIiNmZmZcIn0sbGluZTp7Y29sb3I6XCIjZmZmXCJ9fX0sZGlhZ3JhbTp7c2hhcGVEZWZhdWx0czp7ZmlsbDp7Y29sb3I6XCIjM2Y1MWI1XCJ9LGNvbm5lY3RvckRlZmF1bHRzOntmaWxsOntjb2xvcjpcIiM3ZjdmN2ZcIn0sc3Ryb2tlOntjb2xvcjpifSxob3Zlcjp7ZmlsbDp7Y29sb3I6Yn0sc3Ryb2tlOntjb2xvcjpcIiM3ZjdmN2ZcIn19fSxjb250ZW50Ontjb2xvcjpcIiNmZmZcIn19LGVkaXRhYmxlOntyZXNpemU6e2hhbmRsZXM6e2ZpbGw6e2NvbG9yOmJ9LHN0cm9rZTp7Y29sb3I6XCIjZmZmXCJ9LGhvdmVyOntmaWxsOntjb2xvcjpcIiNmZmZcIn0sc3Ryb2tlOntjb2xvcjpcIiNmZmZcIn19fX0scm90YXRlOnt0aHVtYjp7c3Ryb2tlOntjb2xvcjpcIiNmZmZcIn0sZmlsbDp7Y29sb3I6XCIjZmZmXCJ9fX19LHNlbGVjdGFibGU6e3N0cm9rZTp7Y29sb3I6XCIjZmZmXCJ9fSxjb25uZWN0aW9uRGVmYXVsdHM6e3N0cm9rZTp7Y29sb3I6XCIjN2Y3ZjdmXCJ9LGNvbnRlbnQ6e2NvbG9yOlwiI2ZmZlwifSxzZWxlY3Rpb246e2hhbmRsZXM6e2ZpbGw6e2NvbG9yOmJ9LHN0cm9rZTp7Y29sb3I6XCIjZmZmXCJ9fSxzdHJva2U6e2NvbG9yOlwiI2ZmZlwifX19fSx0cmVlTWFwOntjb2xvcnM6W1tcIiMzZjUxYjVcIixcIiNjZmYzZjBcIl0sW1wiIzAzYTlmNFwiLFwiI2U1ZjZmZVwiXSxbXCIjNGNhZjUwXCIsXCIjZWRmN2VkXCJdLFtcIiNmOWNlMWRcIixcIiNmZWZhZThcIl0sW1wiI2ZmOTgwMFwiLFwiI2ZmZjRlNVwiXSxbXCIjZmY1NzIyXCIsXCIjZmZlZWU4XCJdXX19KSxmdW5jdGlvbigpe2Z1bmN0aW9uIG8oKXtyZXR1cm57aWNvbjp7YmFja2dyb3VuZDpcIiMwMDdjYzBcIixib3JkZXI6e2NvbG9yOlwiIzAwN2NjMFwifX0sbGFiZWw6e2NvbG9yOlwiI2ZmZmZmZlwifSxsaW5lOntjb2xvcjphfX19dmFyIHI9XCIjMzMzMzMzXCIsbD1cIiM3ZjdmN2ZcIixjPVwiI2JkYmRiZFwiLGE9XCIjYzhjOGM4XCIsdD1cIiNkZGRkZGRcIixuPVtcIiMwMDhmZDNcIixcIiM5OWQxMDFcIixcIiNmMzliMDJcIixcIiNmMDU2NjJcIixcIiNjMDNjNTNcIixcIiNhY2FjYWNcIl0saT1bXCIjY2JlOGY1XCIsXCIjZWFmNWNiXCIsXCIjZmNlYWNjXCIsXCIjZmJkY2RmXCIsXCIjZjJkN2RjXCIsXCIjZWVlZWVlXCJdLGY9blswXSxzPWI7bShcImZpb3JpXCIse2NoYXJ0Ont0aXRsZTp7Y29sb3I6cn0sbGVnZW5kOntsYWJlbHM6e2NvbG9yOnJ9LGluYWN0aXZlSXRlbXM6e2xhYmVsczp7Y29sb3I6bH0sbWFya2Vyczp7Y29sb3I6bH19fSxzZXJpZXNEZWZhdWx0czp7bGFiZWxzOntjb2xvcjpyfSxlcnJvckJhcnM6e2NvbG9yOnJ9LG5vdGVzOm8oKSxjYW5kbGVzdGljazp7ZG93bkNvbG9yOmEsbGluZTp7Y29sb3I6Y319LGFyZWE6e29wYWNpdHk6Ljh9LHdhdGVyZmFsbDp7bGluZTp7Y29sb3I6YX19LGhvcml6b250YWxXYXRlcmZhbGw6e2xpbmU6e2NvbG9yOmF9fSxvdmVybGF5OntncmFkaWVudDpcIm5vbmVcIn0sYm9yZGVyOntfYnJpZ2h0bmVzczoxfX0sc2VyaWVzQ29sb3JzOm4sYXhpc0RlZmF1bHRzOntsaW5lOntjb2xvcjphfSxsYWJlbHM6e2NvbG9yOnJ9LG1pbm9yR3JpZExpbmVzOntjb2xvcjp0fSxtYWpvckdyaWRMaW5lczp7Y29sb3I6YX0sdGl0bGU6e2NvbG9yOnJ9LGNyb3NzaGFpcjp7Y29sb3I6bH0sbm90ZXM6bygpfX0sZ2F1Z2U6e3BvaW50ZXI6e2NvbG9yOmZ9LHNjYWxlOntyYW5nZVBsYWNlaG9sZGVyQ29sb3I6YSxsYWJlbHM6e2NvbG9yOnJ9LG1pbm9yVGlja3M6e2NvbG9yOnJ9LG1ham9yVGlja3M6e2NvbG9yOnJ9LGxpbmU6e2NvbG9yOnJ9fX0sZGlhZ3JhbTp7c2hhcGVEZWZhdWx0czp7ZmlsbDp7Y29sb3I6Zn0sY29ubmVjdG9yRGVmYXVsdHM6e2ZpbGw6e2NvbG9yOnJ9LHN0cm9rZTp7Y29sb3I6c30saG92ZXI6e2ZpbGw6e2NvbG9yOnN9LHN0cm9rZTp7Y29sb3I6cn19fSxjb250ZW50Ontjb2xvcjpyfX0sZWRpdGFibGU6e3Jlc2l6ZTp7aGFuZGxlczp7ZmlsbDp7Y29sb3I6c30sc3Ryb2tlOntjb2xvcjpjfSxob3Zlcjp7ZmlsbDp7Y29sb3I6Y30sc3Ryb2tlOntjb2xvcjpjfX19fSxyb3RhdGU6e3RodW1iOntzdHJva2U6e2NvbG9yOmN9LGZpbGw6e2NvbG9yOmN9fX19LHNlbGVjdGFibGU6e3N0cm9rZTp7Y29sb3I6Y319LGNvbm5lY3Rpb25EZWZhdWx0czp7c3Ryb2tlOntjb2xvcjpjfSxjb250ZW50Ontjb2xvcjpjfSxzZWxlY3Rpb246e2hhbmRsZXM6e2ZpbGw6e2NvbG9yOnN9LHN0cm9rZTp7Y29sb3I6Y319LHN0cm9rZTp7Y29sb3I6Y319fX0sdHJlZU1hcDp7Y29sb3JzOmUobixpKX19KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIG8oKXtyZXR1cm57aWNvbjp7YmFja2dyb3VuZDpcIiMwMGIwZmZcIixib3JkZXI6e2NvbG9yOlwiIzAwYjBmZlwifX0sbGFiZWw6e2NvbG9yOlwiI2ZmZmZmZlwifSxsaW5lOntjb2xvcjphfX19dmFyIHI9XCIjNGU0ZTRlXCIsbD1cIiM3ZjdmN2ZcIixjPVwiI2JkYmRiZFwiLGE9XCIjYzhjOGM4XCIsdD1cIiNlNWU1ZTVcIixuPVtcIiMwMDcyYzZcIixcIiM1ZGIyZmZcIixcIiMwMDhhMTdcIixcIiM4MmJhMDBcIixcIiNmZjhmMzJcIixcIiNhYzE5M2RcIl0saT1bXCIjY2JlMmYzXCIsXCIjZGVlZmZlXCIsXCIjY2JlN2QwXCIsXCIjZTVmMGNiXCIsXCIjZmVlOGQ1XCIsXCIjZWVkMGQ3XCJdLGY9blswXSxzPWI7bShcIm9mZmljZTM2NVwiLHtjaGFydDp7dGl0bGU6e2NvbG9yOnJ9LGxlZ2VuZDp7bGFiZWxzOntjb2xvcjpyfSxpbmFjdGl2ZUl0ZW1zOntsYWJlbHM6e2NvbG9yOmx9LG1hcmtlcnM6e2NvbG9yOmx9fX0sc2VyaWVzRGVmYXVsdHM6e2xhYmVsczp7Y29sb3I6cn0sZXJyb3JCYXJzOntjb2xvcjpyfSxub3RlczpvKCksY2FuZGxlc3RpY2s6e2Rvd25Db2xvcjphLGxpbmU6e2NvbG9yOmN9fSxhcmVhOntvcGFjaXR5Oi44fSx3YXRlcmZhbGw6e2xpbmU6e2NvbG9yOmF9fSxob3Jpem9udGFsV2F0ZXJmYWxsOntsaW5lOntjb2xvcjphfX0sb3ZlcmxheTp7Z3JhZGllbnQ6XCJub25lXCJ9LGJvcmRlcjp7X2JyaWdodG5lc3M6MX19LHNlcmllc0NvbG9yczpuLGF4aXNEZWZhdWx0czp7bGluZTp7Y29sb3I6YX0sbGFiZWxzOntjb2xvcjpyfSxtaW5vckdyaWRMaW5lczp7Y29sb3I6dH0sbWFqb3JHcmlkTGluZXM6e2NvbG9yOmF9LHRpdGxlOntjb2xvcjpyfSxjcm9zc2hhaXI6e2NvbG9yOmx9LG5vdGVzOm8oKX19LGdhdWdlOntwb2ludGVyOntjb2xvcjpmfSxzY2FsZTp7cmFuZ2VQbGFjZWhvbGRlckNvbG9yOmEsbGFiZWxzOntjb2xvcjpyfSxtaW5vclRpY2tzOntjb2xvcjpyfSxtYWpvclRpY2tzOntjb2xvcjpyfSxsaW5lOntjb2xvcjpyfX19LGRpYWdyYW06e3NoYXBlRGVmYXVsdHM6e2ZpbGw6e2NvbG9yOmZ9LGNvbm5lY3RvckRlZmF1bHRzOntmaWxsOntjb2xvcjpyfSxzdHJva2U6e2NvbG9yOnN9LGhvdmVyOntmaWxsOntjb2xvcjpzfSxzdHJva2U6e2NvbG9yOnJ9fX0sY29udGVudDp7Y29sb3I6cn19LGVkaXRhYmxlOntyZXNpemU6e2hhbmRsZXM6e2ZpbGw6e2NvbG9yOnN9LHN0cm9rZTp7Y29sb3I6Y30saG92ZXI6e2ZpbGw6e2NvbG9yOmN9LHN0cm9rZTp7Y29sb3I6Y319fX0scm90YXRlOnt0aHVtYjp7c3Ryb2tlOntjb2xvcjpjfSxmaWxsOntjb2xvcjpjfX19fSxzZWxlY3RhYmxlOntzdHJva2U6e2NvbG9yOmN9fSxjb25uZWN0aW9uRGVmYXVsdHM6e3N0cm9rZTp7Y29sb3I6Y30sY29udGVudDp7Y29sb3I6Y30sc2VsZWN0aW9uOntoYW5kbGVzOntmaWxsOntjb2xvcjpzfSxzdHJva2U6e2NvbG9yOmN9fSxzdHJva2U6e2NvbG9yOmN9fX19LHRyZWVNYXA6e2NvbG9yczplKG4saSl9fSl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBvKCl7cmV0dXJue2ljb246e2JhY2tncm91bmQ6XCIjMDA3Y2MwXCIsYm9yZGVyOntjb2xvcjpcIiMwMDdjYzBcIn19LGxhYmVsOntjb2xvcjpcIiNmZmZmZmZcIn0sbGluZTp7Y29sb3I6YX19fXZhciByPVwiIzMyMzY0Y1wiLGw9XCIjN2Y3ZjdmXCIsYz1cIiNiZGJkYmRcIixhPVwiI2RmZTBlMVwiLHQ9XCIjZGZlMGUxXCIsbj1bXCIjZmY0MzUwXCIsXCIjZmY5ZWE1XCIsXCIjMDBhY2MxXCIsXCIjODBkZWVhXCIsXCIjZmZiZjQ2XCIsXCIjZmZkNzhjXCJdLGk9W1wiI2ZmZDlkY1wiLFwiI2ZmZWNlZFwiLFwiI2NjZWVmM1wiLFwiI2U2ZjhmYlwiLFwiI2ZmZjJkYVwiLFwiI2ZmZjdlOFwiXSxmPW5bMF0scz1iO20oXCJub3ZhXCIse2NoYXJ0Ont0aXRsZTp7Y29sb3I6cn0sbGVnZW5kOntsYWJlbHM6e2NvbG9yOnJ9LGluYWN0aXZlSXRlbXM6e2xhYmVsczp7Y29sb3I6bH0sbWFya2Vyczp7Y29sb3I6bH19fSxzZXJpZXNEZWZhdWx0czp7bGFiZWxzOntjb2xvcjpyfSxlcnJvckJhcnM6e2NvbG9yOnJ9LG5vdGVzOm8oKSxjYW5kbGVzdGljazp7ZG93bkNvbG9yOmEsbGluZTp7Y29sb3I6Y319LGFyZWE6e29wYWNpdHk6Ljh9LHdhdGVyZmFsbDp7bGluZTp7Y29sb3I6YX19LGhvcml6b250YWxXYXRlcmZhbGw6e2xpbmU6e2NvbG9yOmF9fSxvdmVybGF5OntncmFkaWVudDpcIm5vbmVcIn0sYm9yZGVyOntfYnJpZ2h0bmVzczoxfX0sc2VyaWVzQ29sb3JzOm4sYXhpc0RlZmF1bHRzOntsaW5lOntjb2xvcjphfSxsYWJlbHM6e2NvbG9yOnJ9LG1pbm9yR3JpZExpbmVzOntjb2xvcjp0fSxtYWpvckdyaWRMaW5lczp7Y29sb3I6YX0sdGl0bGU6e2NvbG9yOnJ9LGNyb3NzaGFpcjp7Y29sb3I6cn0sbm90ZXM6bygpfX0sZ2F1Z2U6e3BvaW50ZXI6e2NvbG9yOmZ9LHNjYWxlOntyYW5nZVBsYWNlaG9sZGVyQ29sb3I6YSxsYWJlbHM6e2NvbG9yOnJ9LG1pbm9yVGlja3M6e2NvbG9yOnJ9LG1ham9yVGlja3M6e2NvbG9yOnJ9LGxpbmU6e2NvbG9yOnJ9fX0sZGlhZ3JhbTp7c2hhcGVEZWZhdWx0czp7ZmlsbDp7Y29sb3I6Zn0sY29ubmVjdG9yRGVmYXVsdHM6e2ZpbGw6e2NvbG9yOnJ9LHN0cm9rZTp7Y29sb3I6c30saG92ZXI6e2ZpbGw6e2NvbG9yOnN9LHN0cm9rZTp7Y29sb3I6cn19fSxjb250ZW50Ontjb2xvcjpyfX0sZWRpdGFibGU6e3Jlc2l6ZTp7aGFuZGxlczp7ZmlsbDp7Y29sb3I6c30sc3Ryb2tlOntjb2xvcjpjfSxob3Zlcjp7ZmlsbDp7Y29sb3I6Y30sc3Ryb2tlOntjb2xvcjpjfX19fSxyb3RhdGU6e3RodW1iOntzdHJva2U6e2NvbG9yOmN9LGZpbGw6e2NvbG9yOmN9fX19LHNlbGVjdGFibGU6e3N0cm9rZTp7Y29sb3I6Y319LGNvbm5lY3Rpb25EZWZhdWx0czp7c3Ryb2tlOntjb2xvcjpjfSxjb250ZW50Ontjb2xvcjpjfSxzZWxlY3Rpb246e2hhbmRsZXM6e2ZpbGw6e2NvbG9yOnN9LHN0cm9rZTp7Y29sb3I6Y319LHN0cm9rZTp7Y29sb3I6Y319fX0sdHJlZU1hcDp7Y29sb3JzOmUobixpKX19KX0oKX0od2luZG93LmtlbmRvLmpRdWVyeSksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKG8sZSxyKXsocnx8ZSkoKX0pOzshZnVuY3Rpb24oZSxkZWZpbmUpe2RlZmluZShcInV0aWwvbWFpbi5taW5cIixbXCJrZW5kby5jb3JlLm1pblwiXSxlKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3JldHVybiB0eXBlb2YgZSE9PUZ9ZnVuY3Rpb24gdChlLHQpe3ZhciBuPWkodCk7cmV0dXJuIEwucm91bmQoZSpuKS9ufWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGU/TC5wb3coMTAsZSk6MX1mdW5jdGlvbiBuKGUsdCxpKXtyZXR1cm4gTC5tYXgoTC5taW4oZSxpKSx0KX1mdW5jdGlvbiBvKGUpe3JldHVybiBlKk19ZnVuY3Rpb24gcihlKXtyZXR1cm4gZS9NfWZ1bmN0aW9uIGEoZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJiFpc05hTihlKX1mdW5jdGlvbiBzKHQsaSl7cmV0dXJuIGUodCk/dDppfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGUqZX1mdW5jdGlvbiBjKGUpe3ZhciB0LGk9W107Zm9yKHQgaW4gZSlpLnB1c2godCtlW3RdKTtyZXR1cm4gaS5zb3J0KCkuam9pbihcIlwiKX1mdW5jdGlvbiBoKGUpe3ZhciB0LGk9MjE2NjEzNjI2MTtmb3IodD0wO3Q8ZS5sZW5ndGg7Kyt0KWkrPShpPDwxKSsoaTw8NCkrKGk8PDcpKyhpPDw4KSsoaTw8MjQpLGlePWUuY2hhckNvZGVBdCh0KTtyZXR1cm4gaT4+PjB9ZnVuY3Rpb24gdShlKXtyZXR1cm4gaChjKGUpKX1mdW5jdGlvbiBwKGUpe3ZhciB0LGk9ZS5sZW5ndGgsbj16LG89Tztmb3IodD0wO3Q8aTt0Kyspbz1MLm1heChvLGVbdF0pLG49TC5taW4obixlW3RdKTtyZXR1cm57bWluOm4sbWF4Om99fWZ1bmN0aW9uIGYoZSl7cmV0dXJuIHAoZSkubWlufWZ1bmN0aW9uIGQoZSl7cmV0dXJuIHAoZSkubWF4fWZ1bmN0aW9uIGcoZSl7cmV0dXJuIHgoZSkubWlufWZ1bmN0aW9uIG0oZSl7cmV0dXJuIHgoZSkubWF4fWZ1bmN0aW9uIHgoZSl7dmFyIHQsaSxuLG89eixyPU87Zm9yKHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspbj1lW3RdLG51bGwhPT1uJiZpc0Zpbml0ZShuKSYmKG89TC5taW4obyxuKSxyPUwubWF4KHIsbikpO3JldHVybnttaW46bz09PXo/dm9pZCAwOm8sbWF4OnI9PT1PP3ZvaWQgMDpyfX1mdW5jdGlvbiB2KGUpe2lmKGUpcmV0dXJuIGVbZS5sZW5ndGgtMV19ZnVuY3Rpb24geShlLHQpe3JldHVybiBlLnB1c2guYXBwbHkoZSx0KSxlfWZ1bmN0aW9uIF8oZSl7cmV0dXJuIEUudGVtcGxhdGUoZSx7dXNlV2l0aEJsb2NrOiExLHBhcmFtTmFtZTpcImRcIn0pfWZ1bmN0aW9uIGIodCxpKXtyZXR1cm4gZShpKSYmbnVsbCE9PWk/XCIgXCIrdCtcIj0nXCIraStcIicgXCI6XCJcIn1mdW5jdGlvbiB3KGUpe3ZhciB0LGk9XCJcIjtmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWkrPWIoZVt0XVswXSxlW3RdWzFdKTtyZXR1cm4gaX1mdW5jdGlvbiBBKHQpe3ZhciBpLG4sbz1cIlwiO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspbj10W2ldWzFdLGUobikmJihvKz10W2ldWzBdK1wiOlwiK24rXCI7XCIpO2lmKFwiXCIhPT1vKXJldHVybiBvfWZ1bmN0aW9uIGsoZSl7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIGUmJihlKz1cInB4XCIpLGV9ZnVuY3Rpb24gUyhlKXt2YXIgdCxpLG49W107aWYoZSlmb3IodD1FLnRvSHlwaGVucyhlKS5zcGxpdChcIi1cIiksaT0wO2k8dC5sZW5ndGg7aSsrKW4ucHVzaChcImstcG9zLVwiK3RbaV0pO3JldHVybiBuLmpvaW4oXCIgXCIpfWZ1bmN0aW9uIEModCl7cmV0dXJuXCJcIj09PXR8fG51bGw9PT10fHxcIm5vbmVcIj09PXR8fFwidHJhbnNwYXJlbnRcIj09PXR8fCFlKHQpfWZ1bmN0aW9uIFAoZSl7Zm9yKHZhciB0PXsxOlwiaVwiLDEwOlwieFwiLDEwMDpcImNcIiwyOlwiaWlcIiwyMDpcInh4XCIsMjAwOlwiY2NcIiwzOlwiaWlpXCIsMzA6XCJ4eHhcIiwzMDA6XCJjY2NcIiw0OlwiaXZcIiw0MDpcInhsXCIsNDAwOlwiY2RcIiw1OlwidlwiLDUwOlwibFwiLDUwMDpcImRcIiw2OlwidmlcIiw2MDpcImx4XCIsNjAwOlwiZGNcIiw3OlwidmlpXCIsNzA6XCJseHhcIiw3MDA6XCJkY2NcIiw4OlwidmlpaVwiLDgwOlwibHh4eFwiLDgwMDpcImRjY2NcIiw5OlwiaXhcIiw5MDpcInhjXCIsOTAwOlwiY21cIiwxZTM6XCJtXCJ9LGk9WzFlMyw5MDAsODAwLDcwMCw2MDAsNTAwLDQwMCwzMDAsMjAwLDEwMCw5MCw4MCw3MCw2MCw1MCw0MCwzMCwyMCwxMCw5LDgsNyw2LDUsNCwzLDIsMV0sbj1cIlwiO2U+MDspZTxpWzBdP2kuc2hpZnQoKToobis9dFtpWzBdXSxlLT1pWzBdKTtyZXR1cm4gbn1mdW5jdGlvbiBUKGUpe3ZhciB0LGksbixvLHI7Zm9yKGU9ZS50b0xvd2VyQ2FzZSgpLHQ9e2k6MSx2OjUseDoxMCxsOjUwLGM6MTAwLGQ6NTAwLG06MWUzfSxpPTAsbj0wLG89MDtvPGUubGVuZ3RoOysrbyl7aWYocj10W2UuY2hhckF0KG8pXSwhcilyZXR1cm4gbnVsbDtpKz1yLHI+biYmKGktPTIqbiksbj1yfXJldHVybiBpfWZ1bmN0aW9uIFIoZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaSxuPVwiXCI7Zm9yKGk9YXJndW1lbnRzLmxlbmd0aDstLWk+PTA7KW4rPVwiOlwiK2FyZ3VtZW50c1tpXTtyZXR1cm4gbiBpbiB0P3Rbbl06dFtuXT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gSShlKXtmb3IodmFyIHQsaSxuPVtdLG89MCxyPWUubGVuZ3RoO288cjspdD1lLmNoYXJDb2RlQXQobysrKSx0Pj01NTI5NiYmdDw9NTYzMTkmJm88cj8oaT1lLmNoYXJDb2RlQXQobysrKSw1NjMyMD09KDY0NTEyJmkpP24ucHVzaCgoKDEwMjMmdCk8PDEwKSsoMTAyMyZpKSs2NTUzNik6KG4ucHVzaCh0KSxvLS0pKTpuLnB1c2godCk7cmV0dXJuIG59ZnVuY3Rpb24gVihlKXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIjtyZXR1cm4gZT42NTUzNSYmKGUtPTY1NTM2LHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoZT4+PjEwJjEwMjN8NTUyOTYpLGU9NTYzMjB8MTAyMyZlKSx0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSkuam9pbihcIlwiKX1mdW5jdGlvbiBCKGUsdCl7ZnVuY3Rpb24gaShlLGkpe2Zvcih2YXIgbj1bXSxvPTAscj0wLGE9MDtvPGUubGVuZ3RoJiZyPGkubGVuZ3RoOyl0KGVbb10saVtyXSk8PTA/blthKytdPWVbbysrXTpuW2ErK109aVtyKytdO3JldHVybiBvPGUubGVuZ3RoJiZuLnB1c2guYXBwbHkobixlLnNsaWNlKG8pKSxyPGkubGVuZ3RoJiZuLnB1c2guYXBwbHkobixpLnNsaWNlKHIpKSxufXJldHVybiBlLmxlbmd0aDwyP2Uuc2xpY2UoKTpmdW5jdGlvbiBuKGUpe3ZhciB0LG8scjtyZXR1cm4gZS5sZW5ndGg8PTE/ZToodD1NYXRoLmZsb29yKGUubGVuZ3RoLzIpLG89ZS5zbGljZSgwLHQpLHI9ZS5zbGljZSh0KSxvPW4obykscj1uKHIpLGkobyxyKSl9KGUpfXZhciBMPU1hdGgsRT13aW5kb3cua2VuZG8sRD1FLmRlZXBFeHRlbmQsTT1MLlBJLzE4MCx6PU51bWJlci5NQVhfVkFMVUUsTz0tTnVtYmVyLk1BWF9WQUxVRSxGPVwidW5kZWZpbmVkXCIsVT1EYXRlLm5vdztVfHwoVT1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksRChFLHt1dGlsOntNQVhfTlVNOnosTUlOX05VTTpPLGFwcGVuZDp5LGFycmF5TGltaXRzOnAsYXJyYXlNaW46ZixhcnJheU1heDpkLGRlZmluZWQ6ZSxkZWc6cixoYXNoS2V5OmgsaGFzaE9iamVjdDp1LGlzTnVtYmVyOmEsaXNUcmFuc3BhcmVudDpDLGxhc3Q6dixsaW1pdFZhbHVlOm4sbm93OlUsb2JqZWN0S2V5OmMscm91bmQ6dCxyYWQ6byxyZW5kZXJBdHRyOmIscmVuZGVyQWxsQXR0cjp3LHJlbmRlclBvczpTLHJlbmRlclNpemU6ayxyZW5kZXJTdHlsZTpBLHJlbmRlclRlbXBsYXRlOl8sc3BhcnNlQXJyYXlMaW1pdHM6eCxzcGFyc2VBcnJheU1pbjpnLHNwYXJzZUFycmF5TWF4Om0sc3FyOmwsdmFsdWVPckRlZmF1bHQ6cyxyb21hblRvQXJhYmljOlQsYXJhYmljVG9Sb21hbjpQLG1lbW9pemU6Uix1Y3MyZW5jb2RlOlYsdWNzMmRlY29kZTpJLG1lcmdlU29ydDpCfX0pLEUuZHJhd2luZy51dGlsPUUudXRpbCxFLmRhdGF2aXoudXRpbD1FLnV0aWx9KCksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsdCxpKXsoaXx8dCkoKX0pLGZ1bmN0aW9uKGUsZGVmaW5lKXtkZWZpbmUoXCJ1dGlsL3RleHQtbWV0cmljcy5taW5cIixbXCJrZW5kby5jb3JlLm1pblwiLFwidXRpbC9tYWluLm1pblwiXSxlKX0oZnVuY3Rpb24oKXshZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybnt3aWR0aDowLGhlaWdodDowLGJhc2VsaW5lOjB9fWZ1bmN0aW9uIGkoZSx0LGkpe3JldHVybiB1LmN1cnJlbnQubWVhc3VyZShlLHQsaSl9ZnVuY3Rpb24gbihlLHQpe3ZhciBpPVtdO2lmKGUubGVuZ3RoPjAmJmRvY3VtZW50LmZvbnRzKXt0cnl7aT1lLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZG9jdW1lbnQuZm9udHMubG9hZChlKX0pfWNhdGNoKG4pe3IubG9nVG9Db25zb2xlKG4pfVByb21pc2UuYWxsKGkpLnRoZW4odCx0KX1lbHNlIHQoKX12YXIgbz1kb2N1bWVudCxyPXdpbmRvdy5rZW5kbyxhPXIuQ2xhc3Mscz1yLnV0aWwsbD1zLmRlZmluZWQsYz1hLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlKXt0aGlzLl9zaXplPWUsdGhpcy5fbGVuZ3RoPTAsdGhpcy5fbWFwPXt9fSxwdXQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLG49aS5fbWFwLG89e2tleTplLHZhbHVlOnR9O25bZV09byxpLl9oZWFkPyhpLl90YWlsLm5ld2VyPW8sby5vbGRlcj1pLl90YWlsLGkuX3RhaWw9byk6aS5faGVhZD1pLl90YWlsPW8saS5fbGVuZ3RoPj1pLl9zaXplPyhuW2kuX2hlYWQua2V5XT1udWxsLGkuX2hlYWQ9aS5faGVhZC5uZXdlcixpLl9oZWFkLm9sZGVyPW51bGwpOmkuX2xlbmd0aCsrfSxnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXQuX21hcFtlXTtpZihpKXJldHVybiBpPT09dC5faGVhZCYmaSE9PXQuX3RhaWwmJih0Ll9oZWFkPWkubmV3ZXIsdC5faGVhZC5vbGRlcj1udWxsKSxpIT09dC5fdGFpbCYmKGkub2xkZXImJihpLm9sZGVyLm5ld2VyPWkubmV3ZXIsaS5uZXdlci5vbGRlcj1pLm9sZGVyKSxpLm9sZGVyPXQuX3RhaWwsaS5uZXdlcj1udWxsLHQuX3RhaWwubmV3ZXI9aSx0Ll90YWlsPWkpLGkudmFsdWV9fSksaD1lKFwiPGRpdiBzdHlsZT0ncG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7IHRvcDogLTQwMDBweCAhaW1wb3J0YW50OyB3aWR0aDogYXV0byAhaW1wb3J0YW50OyBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1wb3J0YW50OyBib3JkZXI6IDAgIWltcG9ydGFudDtsaW5lLWhlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OyB3aGl0ZS1zcGFjZTogbm93cmFwIWltcG9ydGFudDsnIC8+XCIpWzBdLHU9YS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSl7dGhpcy5fY2FjaGU9bmV3IGMoMWUzKSx0aGlzLl9pbml0T3B0aW9ucyhlKX0sb3B0aW9uczp7YmFzZWxpbmVNYXJrZXJTaXplOjF9LG1lYXN1cmU6ZnVuY3Rpb24oaSxuLHIpe3ZhciBhLGMsdSxwLGYsZCxnLG07aWYoIWkpcmV0dXJuIHQoKTtpZihhPXMub2JqZWN0S2V5KG4pLGM9cy5oYXNoS2V5KGkrYSksdT10aGlzLl9jYWNoZS5nZXQoYyksdSlyZXR1cm4gdTtwPXQoKSxmPXI/cjpoLGQ9dGhpcy5fYmFzZWxpbmVNYXJrZXIoKS5jbG9uZU5vZGUoITEpO2ZvcihnIGluIG4pbT1uW2ddLGwobSkmJihmLnN0eWxlW2ddPW0pO3JldHVybiBlKGYpLnRleHQoaSksZi5hcHBlbmRDaGlsZChkKSxvLmJvZHkuYXBwZW5kQ2hpbGQoZiksKGkrXCJcIikubGVuZ3RoJiYocC53aWR0aD1mLm9mZnNldFdpZHRoLXRoaXMub3B0aW9ucy5iYXNlbGluZU1hcmtlclNpemUscC5oZWlnaHQ9Zi5vZmZzZXRIZWlnaHQscC5iYXNlbGluZT1kLm9mZnNldFRvcCt0aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplKSxwLndpZHRoPjAmJnAuaGVpZ2h0PjAmJnRoaXMuX2NhY2hlLnB1dChjLHApLGYucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmKSxwfSxfYmFzZWxpbmVNYXJrZXI6ZnVuY3Rpb24oKXtyZXR1cm4gZShcIjxkaXYgY2xhc3M9J2stYmFzZWxpbmUtbWFya2VyJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7d2lkdGg6IFwiK3RoaXMub3B0aW9ucy5iYXNlbGluZU1hcmtlclNpemUrXCJweDsgaGVpZ2h0OiBcIit0aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplK1wicHg7b3ZlcmZsb3c6IGhpZGRlbjsnIC8+XCIpWzBdfX0pO3UuY3VycmVudD1uZXcgdSxyLnV0aWwuVGV4dE1ldHJpY3M9dSxyLnV0aWwuTFJVQ2FjaGU9YyxyLnV0aWwubG9hZEZvbnRzPW4sci51dGlsLm1lYXN1cmVUZXh0PWl9KHdpbmRvdy5rZW5kby5qUXVlcnkpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsdCxpKXsoaXx8dCkoKX0pLGZ1bmN0aW9uKGUsZGVmaW5lKXtkZWZpbmUoXCJ1dGlsL2Jhc2U2NC5taW5cIixbXCJ1dGlsL21haW4ubWluXCJdLGUpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIGksbixvLGEscyxsLGMsaD1cIlwiLHU9MDtmb3IoZT10KGUpO3U8ZS5sZW5ndGg7KWk9ZS5jaGFyQ29kZUF0KHUrKyksbj1lLmNoYXJDb2RlQXQodSsrKSxvPWUuY2hhckNvZGVBdCh1KyspLGE9aT4+MixzPSgzJmkpPDw0fG4+PjQsbD0oMTUmbik8PDJ8bz4+NixjPTYzJm8saXNOYU4obik/bD1jPTY0OmlzTmFOKG8pJiYoYz02NCksaD1oK3IuY2hhckF0KGEpK3IuY2hhckF0KHMpK3IuY2hhckF0KGwpK3IuY2hhckF0KGMpO3JldHVybiBofWZ1bmN0aW9uIHQoZSl7dmFyIHQsaSxuPVwiXCI7Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKylpPWUuY2hhckNvZGVBdCh0KSxpPDEyOD9uKz1vKGkpOmk8MjA0OD8obis9bygxOTJ8aT4+PjYpLG4rPW8oMTI4fDYzJmkpKTppPDY1NTM2JiYobis9bygyMjR8aT4+PjEyKSxuKz1vKDEyOHxpPj4+NiY2Myksbis9bygxMjh8NjMmaSkpO3JldHVybiBufXZhciBpPXdpbmRvdy5rZW5kbyxuPWkuZGVlcEV4dGVuZCxvPVN0cmluZy5mcm9tQ2hhckNvZGUscj1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCI7bihpLnV0aWwse2VuY29kZUJhc2U2NDplLGVuY29kZVVURjg6dH0pfSgpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbihlLHQsaSl7KGl8fHQpKCl9KSxmdW5jdGlvbihlLGRlZmluZSl7ZGVmaW5lKFwibWl4aW5zL29ic2VydmVycy5taW5cIixbXCJrZW5kby5jb3JlLm1pblwiXSxlKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aCxpPXdpbmRvdy5rZW5kbyxuPWkuZGVlcEV4dGVuZCxvPWUuaW5BcnJheSxyPXtvYnNlcnZlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2JzZXJ2ZXJzPXRoaXMuX29ic2VydmVyc3x8W119LGFkZE9ic2VydmVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9vYnNlcnZlcnM/dGhpcy5fb2JzZXJ2ZXJzLnB1c2goZSk6dGhpcy5fb2JzZXJ2ZXJzPVtlXSx0aGlzfSxyZW1vdmVPYnNlcnZlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLm9ic2VydmVycygpLGk9byhlLHQpO3JldHVybiBpIT0tMSYmdC5zcGxpY2UoaSwxKSx0aGlzfSx0cmlnZ2VyOmZ1bmN0aW9uKGUsdCl7dmFyIGksbixvPXRoaXMuX29ic2VydmVycztpZihvJiYhdGhpcy5fc3VzcGVuZGVkKWZvcihuPTA7bjxvLmxlbmd0aDtuKyspaT1vW25dLGlbZV0mJmlbZV0odCk7cmV0dXJuIHRoaXN9LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24oZSl7ZT1lfHx7fSxlLmVsZW1lbnQ9dGhpcyx0aGlzLnRyaWdnZXIoXCJvcHRpb25zQ2hhbmdlXCIsZSl9LGdlb21ldHJ5Q2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyKFwiZ2VvbWV0cnlDaGFuZ2VcIix7ZWxlbWVudDp0aGlzfSl9LHN1c3BlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3VzcGVuZGVkPSh0aGlzLl9zdXNwZW5kZWR8fDApKzEsdGhpc30scmVzdW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N1c3BlbmRlZD10Lm1heCgodGhpcy5fc3VzcGVuZGVkfHwwKS0xLDApLHRoaXN9LF9vYnNlcnZlckZpZWxkOmZ1bmN0aW9uKGUsdCl7dGhpc1tlXSYmdGhpc1tlXS5yZW1vdmVPYnNlcnZlcih0aGlzKSx0aGlzW2VdPXQsdC5hZGRPYnNlcnZlcih0aGlzKX19O24oaSx7bWl4aW5zOntPYnNlcnZlcnNNaXhpbjpyfX0pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KSx3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0LGkpeyhpfHx0KSgpfSksZnVuY3Rpb24oZSxkZWZpbmUpe2RlZmluZShcImtlbmRvLmRhdGF2aXouY2hhcnQubWluXCIsW1wia2VuZG8uY29sb3IubWluXCIsXCJrZW5kby5kYXRhLm1pblwiLFwia2VuZG8uZGF0YXZpei5jb3JlLm1pblwiLFwia2VuZG8uZGF0YXZpei50aGVtZXMubWluXCIsXCJrZW5kby5kcmF3aW5nLm1pblwiLFwia2VuZG8udXNlcmV2ZW50cy5taW5cIl0sZSl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gaSgpe3JldHVybiB0aGlzfWZ1bmN0aW9uIG4oKXt0aGlzLl9kZWZhdWx0cz17fX1mdW5jdGlvbiBvKGUsdCxpLG4pe3ZhciBvLHIsYT0obi54LWkueCkqKGUueS1pLnkpLShuLnktaS55KSooZS54LWkueCkscz0obi55LWkueSkqKHQueC1lLngpLShuLngtaS54KSoodC55LWUueSk7cmV0dXJuIDAhPT1zJiYocj1hL3Msbz1uZXcgdWkoZS54K3IqKHQueC1lLngpLGUueStyKih0LnktZS55KSkpLG99ZnVuY3Rpb24gcihlLHQpe3ZhciBpLG4sbyxyPWUuc2VyaWVzLHM9ci5sZW5ndGgsbD1lLnNlcmllc0RlZmF1bHRzLGM9WHQoe30sZS5zZXJpZXNEZWZhdWx0cyksaD10P1h0KHt9LHQuc2VyaWVzRGVmYXVsdHMpOnt9LHU9WHQoe30saCk7Zm9yKGEoYyksYSh1KSxpPTA7aTxzO2krKyluPXJbaV0udHlwZXx8ZS5zZXJpZXNEZWZhdWx0cy50eXBlLG89WHQoe2RhdGE6W119LHUsaFtuXSx7dG9vbHRpcDplLnRvb2x0aXB9LGMsbFtuXSkscltpXS5fZGVmYXVsdHM9byxyW2ldPVh0KHt9LG8scltpXSl9ZnVuY3Rpb24gYShlKXtkZWxldGUgZS5iYXIsZGVsZXRlIGUuY29sdW1uLGRlbGV0ZSBlLnJhbmdlQ29sdW1uLGRlbGV0ZSBlLmxpbmUsZGVsZXRlIGUudmVydGljYWxMaW5lLGRlbGV0ZSBlLnBpZSxkZWxldGUgZS5kb251dCxkZWxldGUgZS5hcmVhLGRlbGV0ZSBlLnZlcnRpY2FsQXJlYSxkZWxldGUgZS5zY2F0dGVyLGRlbGV0ZSBlLnNjYXR0ZXJMaW5lLGRlbGV0ZSBlLmJ1YmJsZSxkZWxldGUgZS5jYW5kbGVzdGljayxkZWxldGUgZS5vaGxjLGRlbGV0ZSBlLmJveFBsb3QsZGVsZXRlIGUuYnVsbGV0LGRlbGV0ZSBlLnZlcnRpY2FsQnVsbGV0LGRlbGV0ZSBlLnBvbGFyQXJlYSxkZWxldGUgZS5wb2xhckxpbmUsZGVsZXRlIGUucmFkYXJBcmVhLGRlbGV0ZSBlLnJhZGFyTGluZSxkZWxldGUgZS53YXRlcmZhbGx9ZnVuY3Rpb24gcyhlKXt2YXIgdCxpLG4sbyxyPWUuc2VyaWVzLGE9ZS5zZXJpZXNDb2xvcnN8fFtdO2Zvcih0PTA7dDxyLmxlbmd0aDt0KyspaT1yW3RdLG49YVt0JWEubGVuZ3RoXSxpLmNvbG9yPWkuY29sb3J8fG4sbz1pLl9kZWZhdWx0cyxvJiYoby5jb2xvcj1vLmNvbG9yfHxuKX1mdW5jdGlvbiBsKGUpe3ZhciB0O0V0KFtubixocix2cix5cl0sZnVuY3Rpb24oKXt0PXRoaXMrXCJBeGVzXCIsZVt0XSYmKGVbdGhpcytcIkF4aXNcIl09ZVt0XSxkZWxldGUgZVt0XSl9KX1mdW5jdGlvbiBjKHQsaSl7dmFyIG49KGl8fHt9KS5heGlzRGVmYXVsdHN8fHt9O0V0KFtubixocix2cix5cl0sZnVuY3Rpb24oKXt2YXIgaT10aGlzK1wiQXhpc1wiLG89W10uY29uY2F0KHRbaV0pLHI9dC5heGlzRGVmYXVsdHN8fHt9O289ZS5tYXAobyxmdW5jdGlvbihlKXt2YXIgdD0oZXx8e30pLmNvbG9yLG89WHQoe30sbixuW2ldLHIscltpXSx7bGluZTp7Y29sb3I6dH0sbGFiZWxzOntjb2xvcjp0fSx0aXRsZTp7Y29sb3I6dH19LGUpO3JldHVybiBkZWxldGUgb1tpXSxvfSksdFtpXT1vLmxlbmd0aD4xP286b1swXX0pfWZ1bmN0aW9uIGgoZSl7dmFyIHQsaT1lLmxlbmd0aCxuPTA7Zm9yKHQ9MDt0PGk7dCsrKW49T3QubWF4KG4sZVt0XS5kYXRhLmxlbmd0aCk7cmV0dXJuIG59ZnVuY3Rpb24gdShlKXtyZXR1cm4gZSplfWZ1bmN0aW9uIHAoZSx0KXtpZihudWxsPT09dClyZXR1cm4gdDt2YXIgaT1XdChlLCEwKTtyZXR1cm4gaSh0KX1mdW5jdGlvbiBmKGUsdCl7aWYobnVsbD09PXQpcmV0dXJuIHQ7dmFyIGk9XCJfZGF0ZV9cIitlLG49dFtpXTtyZXR1cm4gbnx8KG49ZChXdChlLCEwKSh0KSksdFtpXT1uKSxufWZ1bmN0aW9uIGQoZSl7dmFyIHQsaTtpZihlIGluc3RhbmNlb2YgRGF0ZSl0PWU7ZWxzZSBpZih0eXBlb2YgZT09PVlvKXQ9TnQucGFyc2VEYXRlKGUpfHxuZXcgRGF0ZShlKTtlbHNlIGlmKGUpaWYoRHQoZSkpZm9yKHQ9W10saT0wO2k8ZS5sZW5ndGg7aSsrKXQucHVzaChkKGVbaV0pKTtlbHNlIHQ9bmV3IERhdGUoZSk7cmV0dXJuIHR9ZnVuY3Rpb24gZyhlKXtyZXR1cm4gRHQoZSk/enQoZSxnKTplP2QoZSkuZ2V0VGltZSgpOnR9ZnVuY3Rpb24gbShlLHQsaSxuKXt2YXIgbyxyPWU7cmV0dXJuIGUmJihlPWQoZSksbz1lLmdldEhvdXJzKCksaT09PV9yPyhyPW5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKSt0LDAsMSksTnQuZGF0ZS5hZGp1c3REU1QociwwKSk6aT09PXNvPyhyPW5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKSxlLmdldE1vbnRoKCkrdCwxKSxOdC5kYXRlLmFkanVzdERTVChyLG8pKTppPT09bXI/KHI9bSh4KGUsbiksNyp0LHhuKSxOdC5kYXRlLmFkanVzdERTVChyLG8pKTppPT09eG4/KHI9bmV3IERhdGUoZS5nZXRGdWxsWWVhcigpLGUuZ2V0TW9udGgoKSxlLmdldERhdGUoKSt0KSxOdC5kYXRlLmFkanVzdERTVChyLG8pKTppPT09SG4/KGU9bmV3IERhdGUoZSksZS5zZXRVVENNaW51dGVzKDAsMCwwKSxyPXcoZSx0KlFvKSk6aT09PWFvPyhyPXcoZSx0KktvKSxyLmdldFNlY29uZHMoKT4wJiZyLnNldFNlY29uZHMoMCkpOmk9PT1Fbz9yPXcoZSx0KlpvKTppPT09RG8mJihyPXcoZSx0KSksaSE9PURvJiZyLmdldE1pbGxpc2Vjb25kcygpPjAmJnIuc2V0TWlsbGlzZWNvbmRzKDApKSxyfWZ1bmN0aW9uIHgoZSx0KXt2YXIgaT1lLmdldERheSgpLG49MDtpZighaXNOYU4oaSkpZm9yKHQ9dHx8MDtpIT09dDspMD09PWk/aT02OmktLSxuKys7cmV0dXJuIHcoZSwtbiokbyl9ZnVuY3Rpb24gdihlLHQsaSl7cmV0dXJuIGU9ZChlKSxtKGUsMCx0LGkpfWZ1bmN0aW9uIHkoZSx0LGkpe3JldHVybiBlPWQoZSksZSYmdihlLHQsaSkuZ2V0VGltZSgpPT09ZS5nZXRUaW1lKCk/ZTptKGUsMSx0LGkpfWZ1bmN0aW9uIF8oZSx0KXtyZXR1cm4gZS5nZXRUaW1lKCktdH1mdW5jdGlvbiBiKGUsdCl7dmFyIGk9ZS5nZXRUaW1lKCktdCxuPWUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCk7cmV0dXJuIGktbipLb31mdW5jdGlvbiB3KGUsdCl7cmV0dXJuIG5ldyBEYXRlKGUuZ2V0VGltZSgpK3QpfWZ1bmN0aW9uIEEoZSx0LGkpe3ZhciBuO3JldHVybiBuPWk9PT1fcj90LmdldEZ1bGxZZWFyKCktZS5nZXRGdWxsWWVhcigpOmk9PT1zbz8xMipBKGUsdCxfcikrdC5nZXRNb250aCgpLWUuZ2V0TW9udGgoKTpPdC5mbG9vcihpPT09eG4/Xyh0LGUpLyRvOl8odCxlKS9pcltpXSl9ZnVuY3Rpb24gayhlLHQsaSxuKXt2YXIgbyxyPWQoZSksYT1kKHQpO3JldHVybiBvPWk9PXNvP3IuZ2V0TW9udGgoKS1hLmdldE1vbnRoKCkrMTIqKHIuZ2V0RnVsbFllYXIoKS1hLmdldEZ1bGxZZWFyKCkpK1MocixuZXcgRGF0ZShyLmdldEZ1bGxZZWFyKCksci5nZXRNb250aCgpKSx4bikvbmV3IERhdGUoci5nZXRGdWxsWWVhcigpLHIuZ2V0TW9udGgoKSsxLDApLmdldERhdGUoKTppPT1fcj9yLmdldEZ1bGxZZWFyKCktYS5nZXRGdWxsWWVhcigpK2socixuZXcgRGF0ZShyLmdldEZ1bGxZZWFyKCksMCksc28sMSkvMTI6aT09eG58fGk9PW1yP1MocixhLGkpOl8ocix0KS9pcltpXSxvL259ZnVuY3Rpb24gUyhlLHQsaSl7cmV0dXJuIGIoZSx0KS9pcltpXX1mdW5jdGlvbiBDKGUpe3JldHVybiAxPT09ZS5sZW5ndGg/ZVswXTplfWZ1bmN0aW9uIFAoZSl7dmFyIHQsaSxuLG89ZS5sZW5ndGg7aWYobz4wKWZvcihpPTA7aTxvO2krKyluPWVbaV0uY29udGVudEJveCgpLHQ/dC53cmFwKG4pOnQ9bi5jbG9uZSgpO3JldHVybiB0fHxpaSgpfWZ1bmN0aW9uIFQoZSx0KXtyZXR1cm4gZSYmdD9lLnRvTG93ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNlKCk6ZT09PXR9ZnVuY3Rpb24gUihlLHQpe3JldHVybiBlJiZ0P2coZSk9PT1nKHQpOmU9PT10fWZ1bmN0aW9uIEkoZSx0KXtudWxsIT09dCYmZS5wdXNoKHQpfWZ1bmN0aW9uIFYoZSx0KXtmb3IodmFyIGksbixvPTAscj10Lmxlbmd0aC0xO288PXI7KWlmKGk9T3QuZmxvb3IoKG8rcikvMiksbj10W2ldLG48ZSlvPWkrMTtlbHNle2lmKCEobj5lKSl7Zm9yKDtSKHRbaS0xXSxlKTspaS0tO3JldHVybiBpfXI9aS0xfXJldHVybiB0W2ldPD1lP2k6aS0xfWZ1bmN0aW9uIEIoZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJiFpc05hTihlKX1mdW5jdGlvbiBMKGUpe3ZhciB0LGksbj1lLmxlbmd0aCxvPTA7Zm9yKHQ9MDt0PG47dCsrKWk9ZVt0XSxCKGkpJiZvKys7cmV0dXJuIG99ZnVuY3Rpb24gRShlKXtyZXR1cm4gTChlKT09PWUubGVuZ3RofWZ1bmN0aW9uIEQoZSl7dmFyIHQsaSxuLG89e307Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKylpPWVbdF0sbj1pLm9wdGlvbnMubmFtZSxuJiYob1tuXT1pLnJhbmdlKCkpO3JldHVybiBvfWZ1bmN0aW9uIE0oZSx0LGksbil7dmFyIG8scixhLHMsbCxjPSExO2lmKGk9aXx8e30sYT1pLmV4Y2x1ZGVkPWkuZXhjbHVkZWR8fFtdLHM9aS5kZWZhdWx0cz1pLmRlZmF1bHRzfHx7fSxsPWkuZGVwdGg9aS5kZXB0aHx8MCwhKGw+dG8pKXtmb3IobyBpbiBlKSFBaShvLGkuZXhjbHVkZWQpJiZlLmhhc093blByb3BlcnR5KG8pJiYocj1lW29dLFp0KHIpPyhjPSEwLG58fChlW29dPU1pKHIodCksc1tvXSkpKTp0eXBlb2Ygcj09PXZvJiYobnx8KGkuZGVmYXVsdHM9c1tvXSksaS5kZXB0aCsrLGM9TShyLHQsaSxuKXx8YyxpLmRlcHRoLS0pKTtyZXR1cm4gY319ZnVuY3Rpb24geihlLGkpe3ZhciBuLG8scixhPVtdLHM9ZS5ncm91cE5hbWVUZW1wbGF0ZSxsPWkubGVuZ3RoO2lmKDA9PT1sKXJldHVybiByPVh0KHt9LGUpLHIudmlzaWJsZUluTGVnZW5kPSExLFtyXTtmb3IoUmkocyk/KE50LmxvZ1RvQ29uc29sZShcIidncm91cE5hbWVUZW1wbGF0ZScgaXMgb2Jzb2xldGUgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMuIFNwZWNpZnkgdGhlIGdyb3VwIG5hbWUgdGVtcGxhdGUgYXMgJ3Nlcmllcy5uYW1lJ1wiKSxzJiYobj1LdChzKSkpOihuPUt0KGUubmFtZXx8XCJcIiksMD09PW4uX3Nsb3RDb3VudCYmKG49S3QoUmkoZS5uYW1lKT9cIiM9IGdyb3VwLnZhbHVlICM6ICM9IHNlcmllcy5uYW1lICNcIjpcIiM9IGdyb3VwLnZhbHVlICNcIikpKSxvPTA7bzxsO28rKylyPVh0KHt9LGUpLFp0KHIuY29sb3IpfHwoci5jb2xvcj10KSxyLl9ncm91cEl4PW8sci5fZ3JvdXBWYWx1ZT1pW29dLnZhbHVlLGEucHVzaChyKSxuJiYoci5uYW1lPW4oe3NlcmllczpyLGdyb3VwOmlbb119KSk7cmV0dXJuIGF9ZnVuY3Rpb24gTyhlLHQpe3ZhciBpLG4sbz1bXTtmb3IodD1bXS5jb25jYXQodCksaT0wO2k8ZS5sZW5ndGg7aSsrKW49ZVtpXSxBaShuLnR5cGUsdCkmJm8ucHVzaChuKTtyZXR1cm4gb31mdW5jdGlvbiBGKHQsaSl7aWYodCBpbnN0YW5jZW9mIERhdGUpe2Zvcih2YXIgbj0wLG89aS5sZW5ndGg7bjxvO24rKylpZihSKGlbbl0sdCkpcmV0dXJuIG47cmV0dXJuLTF9cmV0dXJuIGUuaW5BcnJheSh0LGkpfWZ1bmN0aW9uIFUoZSx0KXt0PXR8fF9pO2Zvcih2YXIgaT0xLG49ZS5sZW5ndGg7aTxuO2krKylpZih0KGVbaV0sZVtpLTFdKTwwKXtlLnNvcnQodCk7YnJlYWt9cmV0dXJuIGV9ZnVuY3Rpb24gSChlLHQpe3ZhciBpLG49VShlLHQpLG89bi5sZW5ndGgscj1vPjA/W25bMF1dOltdO2Zvcih0PXR8fF9pLGk9MTtpPG87aSsrKTAhPT10KG5baV0sSWkocikpJiZyLnB1c2gobltpXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gTihlLHQpe3ZhciBpPWUudHlwZSxuPXQgaW5zdGFuY2VvZiBEYXRlO3JldHVybiFpJiZufHxUKGksbW4pfWZ1bmN0aW9uIGooZSl7dmFyIHQsaSxuLG8scj1bXSxhPWUubGVuZ3RoO2Zvcih0PTA7dDxhO3QrKylmb3IoaT1lW3RdLG89aS5sZW5ndGgsbj0wO248bztuKyspcltuXT1yW25dfHxbXSxyW25dLnB1c2goaVtuXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gRyhlLHQpe2lmKGUuaW5kZXhPZihcIi5cIik+LTEpZm9yKHZhciBpLG49ZS5zcGxpdChcIi5cIiksbz1cIlwiO24ubGVuZ3RoPjE7KW8rPW4uc2hpZnQoKSxpPU50LmdldHRlcihvKSh0KXx8e30sTnQuc2V0dGVyKG8pKHQsaSksbys9XCIuXCJ9ZnVuY3Rpb24gcShlKXt2YXIgdCxpLG4sbz1lLmRhdGEscj0wO2Zvcih0PTA7dDxvLmxlbmd0aDt0KyspaT1vZS5jdXJyZW50LmJpbmRQb2ludChlLHQpLG49aS52YWx1ZUZpZWxkcy52YWx1ZSx0eXBlb2Ygbj09PVlvJiYobj1wYXJzZUZsb2F0KG4pKSxCKG4pJiZpLmZpZWxkcy52aXNpYmxlIT09ITEmJihyKz1PdC5hYnMobikpO3JldHVybiByfWZ1bmN0aW9uIFkoZSl7dmFyIHQ9ZS5vdmVybGF5O3JldHVybiB0JiZ0LmdyYWRpZW50JiZcIm5vbmVcIiE9dC5ncmFkaWVudH1mdW5jdGlvbiBYKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKFJpKGVbdF0uekluZGV4KSlyZXR1cm4hMH1mdW5jdGlvbiBXKCl7dGhpcy5fZGVmYXVsdFByZXZlbnRlZD0hMH1mdW5jdGlvbiBaKGUsdCl7aWYoZSlmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKylpZihlW2ldLmNhdGVnb3J5PT09dClyZXR1cm5bZVtpXV19ZnVuY3Rpb24gSyhlKXtyZXR1cm4gUmkoZSkmJm51bGwhPT1lfWZ1bmN0aW9uIFEoZSl7dmFyIHQsaSxuPXt9O2ZvcihpPTA7aTxlLmxlbmd0aDtpKyspdD1lW2ldLHQuYXhpcy5vcHRpb25zLm5hbWUmJihuW3QuYXhpcy5vcHRpb25zLm5hbWVdPXttaW46dC5yYW5nZS5taW4sbWF4OnQucmFuZ2UubWF4fSk7cmV0dXJuIG59ZnVuY3Rpb24gJChlLHQpe3ZhciBpPSh0fHxcIlwiKS50b0xvd2VyQ2FzZSgpLG49XCJub25lXCI9PWkmJiEoZS5jdHJsS2V5fHxlLnNoaWZ0S2V5fHxlLmFsdEtleSl8fGVbaStcIktleVwiXTtyZXR1cm4gbn1mdW5jdGlvbiBKKGUsdCl7dmFyIGk9W107ZWUoZSxpKSxOdC51dGlsLmxvYWRGb250cyhpLHQpfWZ1bmN0aW9uIGVlKGUsdCxpKXt2YXIgbj01O2k9aXx8e2RlcHRoOjB9LCFlfHxpLmRlcHRoPm58fCFkb2N1bWVudC5mb250c3x8T2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgbz1lW25dO1wiZGF0YVNvdXJjZVwiIT09biYmXCIkXCIhPT1uWzBdJiZvJiYoXCJmb250XCI9PT1uP3QucHVzaChvKTpcIm9iamVjdFwiPT10eXBlb2YgbyYmKGkuZGVwdGgrKyxlZShvLHQsaSksaS5kZXB0aC0tKSl9KX1mdW5jdGlvbiB0ZShlLHQpe3ZhciBpLG4sbyxyO2ZvcihvIGluIHQpaT10W29dLG49ZVtvXSxSaShuKSYmKHI9bnVsbD09PWkscnx8IVJpKGkpPyhkZWxldGUgZVtvXSxyJiZkZWxldGUgdFtvXSk6biYmTXQoaSkmJk10KGkpJiZ0ZShuLGkpKX1mdW5jdGlvbiBpZShlLHQpe3ZhciBpLG47Zm9yKGk9MDtpPGUubGVuZ3RoO2krKylpZihuPWVbaV0sbiYmbi5wYW5lPT09dClyZXR1cm4gbn12YXIgbmUsb2UscmUsYWUsc2UsbGUsY2UsaGUsdWUscGUsZmUsZGUsZ2UsbWUseGUsdmUseWUsX2UsYmUsd2UsQWUsa2UsU2UsQ2UsUGUsVGUsUmUsSWUsVmUsQmUsTGUsRWUsRGUsTWUsemUsT2UsRmUsVWUsSGUsTmUsamUsR2UscWUsWWUsWGUsV2UsWmUsS2UsUWUsJGUsSmUsZXQsdHQsaXQsbnQsb3QscnQsYXQsc3QsbHQsY3QsaHQsdXQscHQsZnQsZHQsZ3QsbXQseHQsdnQseXQsX3QsYnQsd3QsQXQsa3QsU3QsQ3QsUHQsVHQsUnQsSXQsVnQsQnQsTHQsRXQ9ZS5lYWNoLER0PWUuaXNBcnJheSxNdD1lLmlzUGxhaW5PYmplY3QsenQ9ZS5tYXAsT3Q9TWF0aCxGdD1lLm5vb3AsVXQ9ZS5leHRlbmQsSHQ9ZS5wcm94eSxOdD13aW5kb3cua2VuZG8sanQ9TnQuQ2xhc3MsR3Q9TnQuT2JzZXJ2YWJsZSxxdD1OdC5kYXRhLkRhdGFTb3VyY2UsWXQ9TnQudWkuV2lkZ2V0LFh0PU50LmRlZXBFeHRlbmQsV3Q9TnQuZ2V0dGVyLFp0PU50LmlzRnVuY3Rpb24sS3Q9TnQudGVtcGxhdGUsUXQ9TnQuX291dGVyV2lkdGgsJHQ9TnQuX291dGVySGVpZ2h0LEp0PU50LmRhdGF2aXosZWk9SnQuQXhpcyx0aT1KdC5BeGlzTGFiZWwsaWk9SnQuQm94MkQsbmk9SnQuQm94RWxlbWVudCxvaT1KdC5DaGFydEVsZW1lbnQscmk9TnQuZHJhd2luZy5Db2xvcixhaT1KdC5DdXJ2ZVByb2Nlc3NvcixzaT1KdC5GbG9hdEVsZW1lbnQsbGk9SnQuTm90ZSxjaT1KdC5Mb2dhcml0aG1pY0F4aXMsaGk9SnQuTnVtZXJpY0F4aXMsdWk9SnQuUG9pbnQyRCxwaT1KdC5Sb290RWxlbWVudCxmaT1KdC5SaW5nLGRpPUp0LlNoYXBlRWxlbWVudCxnaT1KdC5TaGFwZUJ1aWxkZXIsbWk9SnQuVGV4dEJveCx4aT1KdC5UaXRsZSx2aT1KdC5hbGlnblBhdGhUb1BpeGVsLHlpPUp0LmF1dG9Gb3JtYXQsX2k9SnQuZGF0ZUNvbXBhcmVyLGJpPUp0LmV2ZW50VGFyZ2V0RWxlbWVudCx3aT1KdC5nZXRTcGFjaW5nLEFpPUp0LmluQXJyYXksa2k9SnQuaW50ZXJwb2xhdGVWYWx1ZSxTaT1KdC5td0RlbHRhLENpPUp0LnJvdW5kLFBpPU50LnV0aWwsVGk9UGkuYXBwZW5kLFJpPVBpLmRlZmluZWQsSWk9UGkubGFzdCxWaT1QaS5saW1pdFZhbHVlLEJpPVBpLnNwYXJzZUFycmF5TGltaXRzLExpPVBpLnNwYXJzZUFycmF5TWluLEVpPVBpLnNwYXJzZUFycmF5TWF4LERpPVBpLnJlbmRlclRlbXBsYXRlLE1pPVBpLnZhbHVlT3JEZWZhdWx0LHppPUp0Lmdlb21ldHJ5LE9pPUp0LmRyYXdpbmcsRmk9XCIua2VuZG9DaGFydFwiLFVpPVwiYWJvdmVcIixIaT1cImFyZWFcIixOaT1cImF1dG9cIixqaT1cImZpdFwiLEdpPUp0LkFYSVNfTEFCRUxfQ0xJQ0sscWk9XCJiYXJcIixZaT02LFhpPS44LFdpPVwiYmVsb3dcIixaaT1cIiMwMDBcIixLaT1cImJvdGhcIixRaT1cImJvdHRvbVwiLCRpPVwiYm94UGxvdFwiLEppPVwiYnViYmxlXCIsZW49XCJidWxsZXRcIix0bj1cImNhbmRsZXN0aWNrXCIsbm49XCJjYXRlZ29yeVwiLG9uPVwiY2VudGVyXCIscm49XCJjaGFuZ2VcIixhbj1cImNpcmNsZVwiLHNuPVwiY29udGV4dG1lbnVcIitGaSxsbj1KdC5DTElQLGNuPVwiY29sb3JcIixobj1cImNvbHVtblwiLHVuPUp0LkNPT1JEX1BSRUNJU0lPTixwbj1cImNyb3NzXCIsZm49XCJrLVwiLGRuPVwiY3VzdG9tXCIsZ249XCJkYXRhQm91bmRcIixtbj1cImRhdGVcIix4bj1cImRheXNcIix2bj1KdC5ERUZBVUxUX0ZPTlQseW49SnQuREVGQVVMVF9IRUlHSFQsX249SnQuREVGQVVMVF9QUkVDSVNJT04sYm49SnQuREVGQVVMVF9XSURUSCx3bj00LEFuPVwiZG9udXRcIixrbj01MCxTbj1cImRyYWdcIixDbj1cImRyYWdFbmRcIixQbj1cImRyYWdTdGFydFwiLFRuPVwiZXJyb3JMb3dcIixSbj1cImVycm9ySGlnaFwiLEluPVwieEVycm9yTG93XCIsVm49XCJ4RXJyb3JIaWdoXCIsQm49XCJ5RXJyb3JMb3dcIixMbj1cInlFcnJvckhpZ2hcIixFbj1cImZhZGVJblwiLERuPVwiZmlyc3RcIixNbj1cImZyb21cIix6bj1cImZ1bm5lbFwiLE9uPVwiZ2xhc3NcIixGbj1cImhvcml6b250YWxcIixVbj1cImhvcml6b250YWxXYXRlcmZhbGxcIixIbj1cImhvdXJzXCIsTm49SnQuSU5JVElBTF9BTklNQVRJT05fRFVSQVRJT04sam49XCJpbnNpZGVCYXNlXCIsR249XCJpbnNpZGVFbmRcIixxbj1cImludGVycG9sYXRlXCIsWW49XCJsZWF2ZVwiLFhuPVwibGVmdFwiLFduPVwibGVnZW5kSXRlbUNsaWNrXCIsWm49XCJsZWdlbmRJdGVtSG92ZXJcIixLbj1cImxpbmVcIixRbj04LCRuPVwibGluZWFyXCIsSm49XCJsb2dcIixlbz1cIm1heFwiLHRvPTUsaW89TnVtYmVyLk1BWF9WQUxVRSxubz1cIm1pblwiLG9vPS4wMSxybz0tTnVtYmVyLk1BWF9WQUxVRSxhbz1cIm1pbnV0ZXNcIixzbz1cIm1vbnRoc1wiLGxvPVwibW91c2VsZWF2ZVwiK0ZpLGNvPVwibW91c2Vtb3ZlLnRyYWNraW5nXCIsaG89XCJtb3VzZW1vdmVcIitGaSx1bz0yMCxwbz0xNTAsZm89XCJET01Nb3VzZVNjcm9sbFwiK0ZpK1wiIG1vdXNld2hlZWxcIitGaSxnbz1KdC5OT1RFX0NMSUNLLG1vPUp0Lk5PVEVfSE9WRVIseG89XCJub3RlVGV4dFwiLHZvPVwib2JqZWN0XCIseW89XCJvaGxjXCIsX289XCJvdXRzaWRlRW5kXCIsYm89XCJwaWVcIix3bz03MCxBbz1cInBsb3RBcmVhQ2xpY2tcIixrbz1cInBsb3RBcmVhSG92ZXJcIixTbz1cInBvaW50ZXJcIixDbz1cInJhbmdlQmFyXCIsUG89XCJyYW5nZUNvbHVtblwiLFRvPVwicmVuZGVyXCIsUm89XCJyaWdodFwiLElvPVwicm91bmRlZEJldmVsXCIsVm89XCJyb3VuZGVkR2xhc3NcIixCbz1cInNjYXR0ZXJcIixMbz1cInNjYXR0ZXJMaW5lXCIsRW89XCJzZWNvbmRzXCIsRG89XCJtaWxsaXNlY29uZHNcIixNbz1cInNlbGVjdFN0YXJ0XCIsem89XCJzZWxlY3RcIixPbz1cInNlbGVjdEVuZFwiLEZvPVwic2VyaWVzQ2xpY2tcIixVbz1cInNlcmllc0hvdmVyXCIsSG89TnQuc3VwcG9ydC5icm93c2VyLm1zaWUmJjEwPT09TnQuc3VwcG9ydC5icm93c2VyLnZlcnNpb24/LjAwMTowLE5vPVwic3RlcFwiLGpvPVwic21vb3RoXCIsR289XCJzdGRlcnJcIixxbz1cInN0ZGRldlwiLFlvPVwic3RyaW5nXCIsWG89XCJzdW1tYXJ5XCIsV289MSxabz0xZTMqV28sS289NjAqWm8sUW89NjAqS28sJG89MjQqUW8sSm89Nyokbyxlcj0zMSokbyx0cj0zNjUqJG8saXI9e3llYXJzOnRyLG1vbnRoczplcix3ZWVrczpKbyxkYXlzOiRvLGhvdXJzOlFvLG1pbnV0ZXM6S28sc2Vjb25kczpabyxtaWxsaXNlY29uZHM6V299LG5yPVwidG9cIixvcj1cInRvcFwiLHJyPTE1MCxhcj01LHNyPTEwMCxscj0xMDAsY3I9XCJjaGFydC10b29sdGlwLWludmVyc2VcIixocj1cInZhbHVlXCIsdXI9XCJ2ZXJ0aWNhbEFyZWFcIixwcj1cInZlcnRpY2FsQm94UGxvdFwiLGZyPVwidmVydGljYWxCdWxsZXRcIixkcj1cInZlcnRpY2FsTGluZVwiLGdyPVwid2F0ZXJmYWxsXCIsbXI9XCJ3ZWVrc1wiLHhyPVwiI2ZmZlwiLHZyPVwieFwiLHlyPVwieVwiLF9yPVwieWVhcnNcIixicj1cInplcm9cIix3cj0zLEFyPVwiem9vbVN0YXJ0XCIsa3I9XCJ6b29tXCIsU3I9XCJ6b29tRW5kXCIsQ3I9W0RvLEVvLGFvLEhuLHhuLG1yLHNvLF9yXSxQcj1bcWksaG4seW8sdG4sJGkscHIsZW4sUG8sQ28sZ3IsVW5dLFRyPXttaWxsaXNlY29uZHM6XCJISDptbTpzcy5mZmZcIixzZWNvbmRzOlwiSEg6bW06c3NcIixtaW51dGVzOlwiSEg6bW1cIixob3VyczpcIkhIOm1tXCIsZGF5czpcIk0vZFwiLHdlZWtzOlwiTS9kXCIsbW9udGhzOlwiTU1NICd5eVwiLHllYXJzOlwieXl5eVwifSxScj1ZdC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSxpKXt2YXIgbixvLHI9dGhpcztOdC5kZXN0cm95KGUpLFl0LmZuLmluaXQuY2FsbChyLGUpLHIuZWxlbWVudC5hZGRDbGFzcyhmbit0aGlzLm9wdGlvbnMubmFtZS50b0xvd2VyQ2FzZSgpKS5jc3MoXCJwb3NpdGlvblwiLFwicmVsYXRpdmVcIiksaSYmKG89aS5kYXRhU291cmNlLGkuZGF0YVNvdXJjZT10KSxuPVh0KHt9LHIub3B0aW9ucyxpKSxyLl9vcmlnaW5hbE9wdGlvbnM9WHQoe30sbiksci5faW5pdFRoZW1lKG4pLHIuX2luaXRTdXJmYWNlKCksci5iaW5kKHIuZXZlbnRzLHIub3B0aW9ucyksci53cmFwcGVyPXIuZWxlbWVudCxpJiYoaS5kYXRhU291cmNlPW8pLHIuX2luaXREYXRhU291cmNlKGkpLE50Lm5vdGlmeShyLEp0LnVpKX0sX2luaXRUaGVtZTpmdW5jdGlvbihpKXt2YXIgbixvPXRoaXMscj1KdC51aS50aGVtZXN8fHt9LGE9aS50aGVtZSxjPXJbYV18fHJbYS50b0xvd2VyQ2FzZSgpXSxoPWEmJmM/Yy5jaGFydDp7fSx1PVtdLHA9aS5zZXJpZXN8fFtdO2ZvcihuPTA7bjxwLmxlbmd0aDtuKyspdS5wdXNoKGUuZXh0ZW5kKHt9LHBbbl0pKTtpLnNlcmllcz11LGwoaSksby5fYXBwbHlEZWZhdWx0cyhpLGgpLG51bGw9PT1pLnNlcmllc0NvbG9ycyYmKGkuc2VyaWVzQ29sb3JzPXQpLG8ub3B0aW9ucz1YdCh7fSxoLGkpLHMoby5vcHRpb25zKX0sX2luaXREYXRhU291cmNlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT0oZXx8e30pLmRhdGFTb3VyY2U7dC5fZGF0YUNoYW5nZUhhbmRsZXI9SHQodC5fb25EYXRhQ2hhbmdlZCx0KSx0LmRhdGFTb3VyY2U9cXQuY3JlYXRlKGkpLmJpbmQocm4sdC5fZGF0YUNoYW5nZUhhbmRsZXIpLHQuX2JpbmRDYXRlZ29yaWVzKCksaSYmKHQuX2hhc0RhdGFTb3VyY2U9ITApLEooZSxmdW5jdGlvbigpe3QuX3JlZHJhdygpLHQuX2F0dGFjaEV2ZW50cygpfSksaSYmdC5vcHRpb25zLmF1dG9CaW5kJiZ0LmRhdGFTb3VyY2UuZmV0Y2goKX0sc2V0RGF0YVNvdXJjZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3QuZGF0YVNvdXJjZS51bmJpbmQocm4sdC5fZGF0YUNoYW5nZUhhbmRsZXIpLHQuZGF0YVNvdXJjZT1lPXF0LmNyZWF0ZShlKSx0Ll9oYXNEYXRhU291cmNlPSEwLHQuX2hhc0RhdGE9ITEsZS5iaW5kKHJuLHQuX2RhdGFDaGFuZ2VIYW5kbGVyKSx0Lm9wdGlvbnMuYXV0b0JpbmQmJmUuZmV0Y2goKX0sZXZlbnRzOltnbixGbyxVbyxHaSxXbixabixBbyxrbyxQbixTbixDbixBcixrcixTcixNbyx6byxPbyxnbyxtbyxUb10saXRlbXM6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpfSxvcHRpb25zOntuYW1lOlwiQ2hhcnRcIixyZW5kZXJBczpcIlwiLHRoZW1lOlwiZGVmYXVsdFwiLGNoYXJ0QXJlYTp7fSxsZWdlbmQ6e3Zpc2libGU6ITAsbGFiZWxzOnt9fSxjYXRlZ29yeUF4aXM6e30sYXV0b0JpbmQ6ITAsc2VyaWVzRGVmYXVsdHM6e3R5cGU6aG4sZGF0YTpbXSxoaWdobGlnaHQ6e3Zpc2libGU6ITB9LGxhYmVsczp7fSxuZWdhdGl2ZVZhbHVlczp7dmlzaWJsZTohMX19LHNlcmllczpbXSxzZXJpZXNDb2xvcnM6bnVsbCx0b29sdGlwOnt2aXNpYmxlOiExfSx0cmFuc2l0aW9uczohMCx2YWx1ZUF4aXM6e30scGxvdEFyZWE6e30sdGl0bGU6e30seEF4aXM6e30seUF4aXM6e30scGFuZXM6W3t9XSxwYW5uYWJsZTohMSx6b29tYWJsZTohMX0scmVmcmVzaDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5fYXBwbHlEZWZhdWx0cyhlLm9wdGlvbnMpLHMoZS5vcHRpb25zKSxlLl9iaW5kU2VyaWVzKCksZS5fYmluZENhdGVnb3JpZXMoKSxlLnRyaWdnZXIoZ24pLGUuX3JlZHJhdygpfSxnZXRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIE50LmRpbWVuc2lvbnModGhpcy5lbGVtZW50KX0sX3Jlc2l6ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucy50cmFuc2l0aW9uczt0aGlzLm9wdGlvbnMudHJhbnNpdGlvbnM9ITEsdGhpcy5fcmVkcmF3KCksdGhpcy5vcHRpb25zLnRyYW5zaXRpb25zPWV9LHJlZHJhdzpmdW5jdGlvbihlKXt2YXIgdCxpLG49dGhpcztuLl9hcHBseURlZmF1bHRzKG4ub3B0aW9ucykscyhuLm9wdGlvbnMpLGU/KGk9bi5fbW9kZWwuX3Bsb3RBcmVhLHQ9aS5maW5kUGFuZShlKSxpLnJlZHJhdyh0KSk6bi5fcmVkcmF3KCl9LGdldEF4aXM6ZnVuY3Rpb24oZSl7dmFyIHQsaT10aGlzLl9wbG90QXJlYS5heGVzO2Zvcih0PTA7dDxpLmxlbmd0aDt0KyspaWYoaVt0XS5vcHRpb25zLm5hbWU9PT1lKXJldHVybiBuZXcgQnQoaVt0XSl9LGZpbmRBeGlzQnlOYW1lOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdldEF4aXMoZSl9LHBsb3RBcmVhOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBJdCh0aGlzLl9wbG90QXJlYSl9LGZpbmRQYW5lQnlOYW1lOmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcy5fcGxvdEFyZWEucGFuZXM7Zm9yKHQ9MDt0PGkubGVuZ3RoO3QrKylpZihpW3RdLm9wdGlvbnMubmFtZT09PWUpcmV0dXJuIG5ldyBWdCh0aGlzLGlbdF0pfSxmaW5kUGFuZUJ5SW5kZXg6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcGxvdEFyZWEucGFuZXM7aWYodFtlXSlyZXR1cm4gbmV3IFZ0KHRoaXMsdFtlXSl9LGZpbmRTZXJpZXM6ZnVuY3Rpb24oZSl7dmFyIHQsaT10aGlzLl9wbG90QXJlYSxuPWkuc3JjU2VyaWVzfHxpLnNlcmllcztmb3IodD0wO3Q8bi5sZW5ndGg7dCsrKWlmKGUoblt0XSkpcmV0dXJuIG5ldyBMdCh0aGlzLG5bdF0pfSxmaW5kU2VyaWVzQnlOYW1lOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jcmVhdGVTZXJpZXMoe25hbWU6ZX0pfSxmaW5kU2VyaWVzQnlJbmRleDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fY3JlYXRlU2VyaWVzKHtpbmRleDplfSl9LF9jcmVhdGVTZXJpZXM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fc2VyaWVzT3B0aW9ucyhlKTtpZih0KXJldHVybiBuZXcgTHQodGhpcyx0KX0sX3Nlcmllc09wdGlvbnM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuPXRoaXMuX3Bsb3RBcmVhLG89bi5zcmNTZXJpZXN8fG4uc2VyaWVzO2lmKFJpKGUuaW5kZXgpKXQ9b1tlLmluZGV4XTtlbHNlIGlmKFJpKGUubmFtZSkpZm9yKGk9MDtpPG8ubGVuZ3RoO2krKylpZihvW2ldLm5hbWU9PT1lLm5hbWUpe3Q9b1tpXTticmVha31yZXR1cm4gdH0sdG9nZ2xlSGlnaGxpZ2h0OmZ1bmN0aW9uKGUsdCl7dmFyIGksbixvLHI9dGhpcy5fcGxvdEFyZWEsYT0oci5zcmNTZXJpZXN8fHIuc2VyaWVzfHxbXSlbMF07TnQuaXNGdW5jdGlvbih0KT9vPXIuZmlsdGVyUG9pbnRzKHQpOihNdCh0KT8oaT10LnNlcmllcyxuPXQuY2F0ZWdvcnkpOmk9bj10LG89YS50eXBlPT09QW4/WihyLnBvaW50c0J5U2VyaWVzTmFtZShpKSxuKTphLnR5cGU9PT1ib3x8YS50eXBlPT09em4/Wigoci5jaGFydHNbMF18fHt9KS5wb2ludHMsbik6ci5wb2ludHNCeVNlcmllc05hbWUoaSkpLG8mJnRoaXMuX3RvZ2dsZVBvaW50c0hpZ2hsaWdodChlLG8pfSxfdG9nZ2xlUG9pbnRzSGlnaGxpZ2h0OmZ1bmN0aW9uKGUsdCl7dmFyIGksbj10aGlzLl9oaWdobGlnaHQ7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyluLnRvZ2dsZVBvaW50SGlnaGxpZ2h0KHRbaV0sZSl9LHNob3dUb29sdGlwOmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvPXRoaXMuX3NoYXJlZFRvb2x0aXAoKSxyPXRoaXMuX3Rvb2x0aXAsYT10aGlzLl9wbG90QXJlYTtOdC5pc0Z1bmN0aW9uKGUpPyh0PWEuZmluZFBvaW50KGUpLHQmJm8mJihpPXQuY2F0ZWdvcnlJeCkpOm8mJlJpKGUpJiYoaT1hLmNhdGVnb3J5QXhpcy5jYXRlZ29yeUluZGV4KGUpKSxvP2k+PTAmJihuPXRoaXMuX3Bsb3RBcmVhLnBvaW50c0J5Q2F0ZWdvcnlJbmRleChpKSxyLnNob3dBdChuKSk6dCYmci5zaG93KHQpfSxoaWRlVG9vbHRpcDpmdW5jdGlvbigpe3RoaXMuX3Rvb2x0aXAuaGlkZSgpfSxfaW5pdFN1cmZhY2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN1cmZhY2UsdD10aGlzLl9zdXJmYWNlV3JhcCgpLGk9dGhpcy5vcHRpb25zLmNoYXJ0QXJlYTtpLndpZHRoJiZ0LmNzcyhcIndpZHRoXCIsaS53aWR0aCksaS5oZWlnaHQmJnQuY3NzKFwiaGVpZ2h0XCIsaS5oZWlnaHQpLGUmJmUub3B0aW9ucy50eXBlPT09dGhpcy5vcHRpb25zLnJlbmRlckFzPyh0aGlzLnN1cmZhY2UuY2xlYXIoKSx0aGlzLnN1cmZhY2UucmVzaXplKCkpOihlJiZlLmRlc3Ryb3koKSx0aGlzLnN1cmZhY2U9T2kuU3VyZmFjZS5jcmVhdGUodCx7dHlwZTp0aGlzLm9wdGlvbnMucmVuZGVyQXN9KSl9LF9zdXJmYWNlV3JhcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnR9LF9yZWRyYXc6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMsaT10Ll9nZXRNb2RlbCgpO3QuX2Rlc3Ryb3lWaWV3KCksdC5fbW9kZWw9aSx0Ll9wbG90QXJlYT1pLl9wbG90QXJlYSxpLnJlbmRlclZpc3VhbCgpLHRoaXMub3B0aW9ucy50cmFuc2l0aW9ucyE9PSExJiZpLnRyYXZlcnNlKGZ1bmN0aW9uKGUpe2UuYW5pbWF0aW9uJiZlLmFuaW1hdGlvbi5zZXR1cCgpfSksdC5faW5pdFN1cmZhY2UoKSx0LnN1cmZhY2UuZHJhdyhpLnZpc3VhbCksdGhpcy5vcHRpb25zLnRyYW5zaXRpb25zIT09ITEmJmkudHJhdmVyc2UoZnVuY3Rpb24oZSl7ZS5hbmltYXRpb24mJmUuYW5pbWF0aW9uLnBsYXkoKX0pLHQuX3Rvb2x0aXA9dC5fY3JlYXRlVG9vbHRpcCgpLHQuX2hpZ2hsaWdodD1uZXcgdnQoZSksdC5fc2V0dXBTZWxlY3Rpb24oKSx0Ll9jcmVhdGVQYW5uYWJsZSgpLHQuX2NyZWF0ZVpvb21TZWxlY3Rpb24oKSx0Ll9jcmVhdGVNb3VzZXdoZWVsWm9vbSgpLHQuX2hhc0RhdGFTb3VyY2UmJiF0Ll9oYXNEYXRhJiZ0Lm9wdGlvbnMuYXV0b0JpbmR8fHQudHJpZ2dlcihUbyl9LGV4cG9ydFZpc3VhbDpmdW5jdGlvbihlKXt2YXIgdCxpLG4sbztyZXR1cm4gZSYmKGUud2lkdGh8fGUuaGVpZ2h0KT8oaT10aGlzLm9wdGlvbnMuY2hhcnRBcmVhLG49dGhpcy5fb3JpZ2luYWxPcHRpb25zLmNoYXJ0QXJlYSxYdChpLGUpLG89dGhpcy5fZ2V0TW9kZWwoKSxpLndpZHRoPW4ud2lkdGgsaS5oZWlnaHQ9bi5oZWlnaHQsby5yZW5kZXJWaXN1YWwoKSx0PW8udmlzdWFsKTp0PXRoaXMuc3VyZmFjZS5leHBvcnRWaXN1YWwoKSx0fSxfc2hhcmVkVG9vbHRpcDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLm9wdGlvbnM7cmV0dXJuIGUuX3Bsb3RBcmVhIGluc3RhbmNlb2YgdXQmJnQudG9vbHRpcC5zaGFyZWR9LF9jcmVhdGVQYW5uYWJsZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucztlLnBhbm5hYmxlIT09ITEmJih0aGlzLl9wYW5uYWJsZT1uZXcgQ3QodGhpcy5fcGxvdEFyZWEsZS5wYW5uYWJsZSkpfSxfY3JlYXRlWm9vbVNlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucy56b29tYWJsZSx0PShlfHx7fSkuc2VsZWN0aW9uO2UhPT0hMSYmdCE9PSExJiYodGhpcy5fem9vbVNlbGVjdGlvbj1uZXcgUHQodGhpcyx0KSl9LF9jcmVhdGVNb3VzZXdoZWVsWm9vbTpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucy56b29tYWJsZSx0PShlfHx7fSkubW91c2V3aGVlbDtlIT09ITEmJnQhPT0hMSYmKHRoaXMuX21vdXNld2hlZWxab29tPW5ldyBUdCh0aGlzLHQpKX0sX2NyZWF0ZVRvb2x0aXA6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMsaT10Lm9wdGlvbnMsbj10LmVsZW1lbnQ7cmV0dXJuIGU9dC5fc2hhcmVkVG9vbHRpcCgpP25ldyBidChuLHQuX3Bsb3RBcmVhLGkudG9vbHRpcCk6bmV3IF90KG4saS50b29sdGlwKSxlLmJpbmQoWW4sSHQodC5fdG9vbHRpcGxlYXZlLHQpKSxlfSxfdG9vbHRpcGxlYXZlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuX3Bsb3RBcmVhLGk9ZS5faGlnaGxpZ2h0O3QuaGlkZUNyb3NzaGFpcnMoKSxpLmhpZGUoKX0sX2FwcGx5RGVmYXVsdHM6ZnVuY3Rpb24oZSx0KXtjKGUsdCkscihlLHQpfSxfZ2V0TW9kZWw6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMsaT10Lm9wdGlvbnMsbj1uZXcgcGkodC5fbW9kZWxPcHRpb25zKCkpO3JldHVybiBuLmNoYXJ0PXQseGkuYnVpbGRUaXRsZShpLnRpdGxlLG4pLGU9bi5fcGxvdEFyZWE9dC5fY3JlYXRlUGxvdEFyZWEoKSxpLmxlZ2VuZC52aXNpYmxlJiZuLmFwcGVuZChuZXcgbGUoZS5vcHRpb25zLmxlZ2VuZCkpLG4uYXBwZW5kKGUpLG4ucmVmbG93KCksbn0sX21vZGVsT3B0aW9uczpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLm9wdGlvbnMsaT1lLmVsZW1lbnQsbj1PdC5mbG9vcihpLmhlaWdodCgpKSxvPU90LmZsb29yKGkud2lkdGgoKSk7cmV0dXJuIGUuX3NpemU9bnVsbCxYdCh7d2lkdGg6b3x8Ym4saGVpZ2h0Om58fHluLHRyYW5zaXRpb25zOnQudHJhbnNpdGlvbnN9LHQuY2hhcnRBcmVhKX0sX2NyZWF0ZVBsb3RBcmVhOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10Lm9wdGlvbnM7cmV0dXJuIG5lLmN1cnJlbnQuY3JlYXRlKGU/W106aS5zZXJpZXMsaSl9LF9zZXR1cFNlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciBlLHQsaSxuLG8scixhPXRoaXMscz1hLl9wbG90QXJlYSxsPXMuYXhlcyxjPWEuX3NlbGVjdGlvbnM9W107Zm9yKGEuX3NlbGVjdFN0YXJ0SGFuZGxlcnx8KGEuX3NlbGVjdFN0YXJ0SGFuZGxlcj1IdChhLl9zZWxlY3RTdGFydCxhKSxhLl9zZWxlY3RIYW5kbGVyPUh0KGEuX3NlbGVjdCxhKSxhLl9zZWxlY3RFbmRIYW5kbGVyPUh0KGEuX3NlbGVjdEVuZCxhKSksdD0wO3Q8bC5sZW5ndGg7dCsrKWk9bFt0XSxyPWkub3B0aW9ucyxpIGluc3RhbmNlb2YgY2UmJnIuc2VsZWN0JiYhci52ZXJ0aWNhbCYmKG49MCxvPXIuY2F0ZWdvcmllcy5sZW5ndGgtMSxpIGluc3RhbmNlb2YgaGUmJihuPXIuY2F0ZWdvcmllc1tuXSxvPXIuY2F0ZWdvcmllc1tvXSksci5qdXN0aWZpZWR8fChpIGluc3RhbmNlb2YgaGU/bz1tKG8sMSxyLmJhc2VVbml0LHIud2Vla1N0YXJ0RGF5KTpvKyspLGU9bmV3IFN0KGEsaSxYdCh7bWluOm4sbWF4Om99LHIuc2VsZWN0KSksZS5iaW5kKE1vLGEuX3NlbGVjdFN0YXJ0SGFuZGxlciksZS5iaW5kKHpvLGEuX3NlbGVjdEhhbmRsZXIpLGUuYmluZChPbyxhLl9zZWxlY3RFbmRIYW5kbGVyKSxjLnB1c2goZSkpfSxfc2VsZWN0U3RhcnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudHJpZ2dlcihNbyxlKX0sX3NlbGVjdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50cmlnZ2VyKHpvLGUpfSxfc2VsZWN0RW5kOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRyaWdnZXIoT28sZSl9LF9hdHRhY2hFdmVudHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5lbGVtZW50LGk9ZS5zdXJmYWNlO2kuYmluZChcIm1vdXNlZW50ZXJcIixIdChlLl9tb3VzZW92ZXIsZSkpLGkuYmluZChcIm1vdXNlbGVhdmVcIixIdChlLl9tb3VzZW91dCxlKSksdC5vbihzbixIdChlLl9jbGljayxlKSksdC5vbihmbyxIdChlLl9tb3VzZXdoZWVsLGUpKSx0Lm9uKGxvLEh0KGUuX21vdXNlbGVhdmUsZSkpLGUuX21vdXNlbW92ZT1OdC50aHJvdHRsZShIdChlLl9tb3VzZW1vdmUsZSksdW8pLGUuX3Nob3VsZEF0dGFjaE1vdXNlTW92ZSgpJiZ0Lm9uKGhvLGUuX21vdXNlbW92ZSksTnQuVXNlckV2ZW50cyYmKGUuX3VzZXJFdmVudHM9bmV3IE50LlVzZXJFdmVudHModCx7Z2xvYmFsOiEwLG11bHRpVG91Y2g6ITAsZmFzdFRhcDohMCx0YXA6SHQoZS5fdGFwLGUpLHN0YXJ0Okh0KGUuX3N0YXJ0LGUpLG1vdmU6SHQoZS5fbW92ZSxlKSxlbmQ6SHQoZS5fZW5kLGUpLGdlc3R1cmVzdGFydDpIdChlLl9nZXN0dXJlc3RhcnQsZSksZ2VzdHVyZWNoYW5nZTpIdChlLl9nZXN0dXJlY2hhbmdlLGUpLGdlc3R1cmVlbmQ6SHQoZS5fZ2VzdHVyZWVuZCxlKX0pKX0sX2dlc3R1cmVzdGFydDpmdW5jdGlvbihlKXt0aGlzLl9tb3VzZXdoZWVsWm9vbSYmKHRoaXMuX2dlc3R1cmVEaXN0YW5jZT1lLmRpc3RhbmNlLHRoaXMuX3Vuc2V0QWN0aXZlUG9pbnQoKSx0aGlzLnN1cmZhY2Uuc3VzcGVuZFRyYWNraW5nKCkpfSxfZ2VzdHVyZWVuZDpmdW5jdGlvbigpe3RoaXMuX3pvb21pbmcmJih0aGlzLnN1cmZhY2UmJnRoaXMuc3VyZmFjZS5yZXN1bWVUcmFja2luZygpLHRoaXMuX3pvb21pbmc9ITEsdGhpcy50cmlnZ2VyKFNyLHt9KSl9LF9nZXN0dXJlY2hhbmdlOmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHI9dGhpcyxhPXIuX21vdXNld2hlZWxab29tO2EmJihlLnByZXZlbnREZWZhdWx0KCksdD1yLl9nZXN0dXJlRGlzdGFuY2UsaT0tZS5kaXN0YW5jZS90KzEsT3QuYWJzKGkpPj0uMSYmKGk9T3Qucm91bmQoMTAqaSksci5fZ2VzdHVyZURpc3RhbmNlPWUuZGlzdGFuY2Usbj17ZGVsdGE6aSxheGlzUmFuZ2VzOkQoci5fcGxvdEFyZWEuYXhlcyksb3JpZ2luYWxFdmVudDplfSwhci5fem9vbWluZyYmci50cmlnZ2VyKEFyLG4pfHwoci5fem9vbWluZ3x8KHIuX3pvb21pbmc9ITApLG89bi5heGlzUmFuZ2VzPWEudXBkYXRlUmFuZ2VzKGkpLG8mJiFyLnRyaWdnZXIoa3IsbikmJmEuem9vbSgpKSkpfSxfbW91c2VvdXQ6ZnVuY3Rpb24oZSl7aWYoZS5lbGVtZW50KXt2YXIgdD10aGlzLl9kcmF3aW5nQ2hhcnRFbGVtZW50KGUuZWxlbWVudCxlKTt0JiZ0LmxlYXZlJiZ0LmxlYXZlKHRoaXMsZS5vcmlnaW5hbEV2ZW50KX19LF9zdGFydDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dC5fZXZlbnRzLG49dC5fZXZlbnRDb29yZGluYXRlcyhlKTt0Ll9wbG90QXJlYS5iYWNrZ3JvdW5kQ29udGFpbnNQb2ludChuKSYmKFJpKGlbUG5dfHxpW1NuXXx8aVtDbl0pJiZ0Ll9zdGFydE5hdmlnYXRpb24oZSxuLFBuKSx0Ll9wYW5uYWJsZSYmdC5fcGFubmFibGUuc3RhcnQoZSkmJih0aGlzLnN1cmZhY2Uuc3VzcGVuZFRyYWNraW5nKCksdGhpcy5fdW5zZXRBY3RpdmVQb2ludCgpKSx0Ll96b29tU2VsZWN0aW9uJiZ0Ll96b29tU2VsZWN0aW9uLnN0YXJ0KGUpJiZ0aGlzLnRyaWdnZXIoQXIse2F4aXNSYW5nZXM6RCh0aGlzLl9wbG90QXJlYS5heGVzKSxvcmlnaW5hbEV2ZW50OmV9KSl9LF9tb3ZlOmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHIsYSxzPXRoaXMsbD1zLl9uYXZTdGF0ZSxjPXMuX3Bhbm5hYmxlLGg9e307aWYoYyllLnByZXZlbnREZWZhdWx0KCksaD1jLm1vdmUoZSksaCYmIXMudHJpZ2dlcihTbix7YXhpc1JhbmdlczpoLG9yaWdpbmFsRXZlbnQ6ZX0pJiZjLnBhbigpO2Vsc2UgaWYobCl7Zm9yKGUucHJldmVudERlZmF1bHQoKSx0PWwuYXhlcyxpPTA7aTx0Lmxlbmd0aDtpKyspbj10W2ldLG89bi5vcHRpb25zLm5hbWUsbyYmKHI9bi5vcHRpb25zLnZlcnRpY2FsP2UueTplLngsYT1yLnN0YXJ0TG9jYXRpb24tci5sb2NhdGlvbiwwIT09YSYmKGhbbi5vcHRpb25zLm5hbWVdPW4udHJhbnNsYXRlUmFuZ2UoYSkpKTtsLmF4aXNSYW5nZXM9aCxzLnRyaWdnZXIoU24se2F4aXNSYW5nZXM6aCxvcmlnaW5hbEV2ZW50OmV9KX1zLl96b29tU2VsZWN0aW9uJiZzLl96b29tU2VsZWN0aW9uLm1vdmUoZSl9LF9lbmQ6ZnVuY3Rpb24oZSl7dmFyIHQsaT10aGlzLl9wYW5uYWJsZTtpJiZpLmVuZChlKT8odGhpcy5zdXJmYWNlLnJlc3VtZVRyYWNraW5nKCksdGhpcy50cmlnZ2VyKENuLHtheGlzUmFuZ2VzOkQodGhpcy5fcGxvdEFyZWEuYXhlcyksb3JpZ2luYWxFdmVudDplfSkpOnRoaXMuX2VuZE5hdmlnYXRpb24oZSxDbiksdGhpcy5fem9vbVNlbGVjdGlvbiYmKHQ9dGhpcy5fem9vbVNlbGVjdGlvbi5lbmQoZSksdCYmIXRoaXMudHJpZ2dlcihrcix7YXhpc1Jhbmdlczp0LG9yaWdpbmFsRXZlbnQ6ZX0pJiYodGhpcy5fem9vbVNlbGVjdGlvbi56b29tKCksdGhpcy50cmlnZ2VyKFNyLHtheGlzUmFuZ2VzOnQsb3JpZ2luYWxFdmVudDplfSkpKX0sX21vdXNld2hlZWw6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG8scixhLHMsbD10aGlzLGM9ZS5vcmlnaW5hbEV2ZW50LGg9U2koZSksdT1sLl9uYXZTdGF0ZSxwPXt9LGY9bC5fbW91c2V3aGVlbFpvb20sZD1sLl9ldmVudENvb3JkaW5hdGVzKGMpO2lmKGwuX3Bsb3RBcmVhLmJhY2tncm91bmRDb250YWluc1BvaW50KGQpKWlmKGYpcz17ZGVsdGE6aCxheGlzUmFuZ2VzOkQodGhpcy5fcGxvdEFyZWEuYXhlcyksb3JpZ2luYWxFdmVudDplfSwhbC5fem9vbWluZyYmbC50cmlnZ2VyKEFyLHMpfHwoZS5wcmV2ZW50RGVmYXVsdCgpLGwuX3pvb21pbmd8fChsLl91bnNldEFjdGl2ZVBvaW50KCksbC5zdXJmYWNlLnN1c3BlbmRUcmFja2luZygpLGwuX3pvb21pbmc9ITApLGwuX213VGltZW91dCYmY2xlYXJUaW1lb3V0KGwuX213VGltZW91dCkscy5heGlzUmFuZ2VzPXA9Zi51cGRhdGVSYW5nZXMoaCkscCYmIWwudHJpZ2dlcihrcixzKSYmZi56b29tKCksbC5fbXdUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtsLnRyaWdnZXIoU3IscyksbC5fem9vbWluZz0hMSxsLnN1cmZhY2UmJmwuc3VyZmFjZS5yZXN1bWVUcmFja2luZygpfSxwbykpO2Vsc2UgaWYodXx8KHQ9bC5fc3RhcnROYXZpZ2F0aW9uKGMsZCxBciksdHx8KHU9bC5fbmF2U3RhdGUpKSx1KXtmb3IoaT11LnRvdGFsRGVsdGF8fGgsdS50b3RhbERlbHRhPWkraCxuPWwuX25hdlN0YXRlLmF4ZXMsbz0wO288bi5sZW5ndGg7bysrKXI9bltvXSxhPXIub3B0aW9ucy5uYW1lLGEmJihwW2FdPXIuc2NhbGVSYW5nZSgtaSkpO2wudHJpZ2dlcihrcix7ZGVsdGE6aCxheGlzUmFuZ2VzOnAsb3JpZ2luYWxFdmVudDplfSksbC5fbXdUaW1lb3V0JiZjbGVhclRpbWVvdXQobC5fbXdUaW1lb3V0KSxsLl9td1RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2wuX2VuZE5hdmlnYXRpb24oZSxTcil9LHBvKX19LF9zdGFydE5hdmlnYXRpb246ZnVuY3Rpb24oZSx0LGkpe3ZhciBuLG8scj10aGlzLGE9ci5fbW9kZWwuX3Bsb3RBcmVhLHM9YS5maW5kUG9pbnRQYW5lKHQpLGw9YS5heGVzLnNsaWNlKDApO3MmJihvPUQobCksbj1yLnRyaWdnZXIoaSx7YXhpc1JhbmdlczpvLG9yaWdpbmFsRXZlbnQ6ZX0pLG4/ci5fdXNlckV2ZW50cy5jYW5jZWwoKTooci5fc3VwcHJlc3NIb3Zlcj0hMCxyLl91bnNldEFjdGl2ZVBvaW50KCksci5fbmF2U3RhdGU9e2F4aXNSYW5nZXM6byxwYW5lOnMsYXhlczpsfSkpfSxfZW5kTmF2aWdhdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXM7aS5fbmF2U3RhdGUmJihpLnRyaWdnZXIodCx7YXhpc1JhbmdlczppLl9uYXZTdGF0ZS5heGlzUmFuZ2VzLG9yaWdpbmFsRXZlbnQ6ZX0pLGkuX3N1cHByZXNzSG92ZXI9ITEsaS5fbmF2U3RhdGU9bnVsbCl9LF9nZXRDaGFydEVsZW1lbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLnN1cmZhY2UuZXZlbnRUYXJnZXQoZSk7aWYoaSlyZXR1cm4gdGhpcy5fZHJhd2luZ0NoYXJ0RWxlbWVudChpLGUsdCl9LF9kcmF3aW5nQ2hhcnRFbGVtZW50OmZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIG47ZSYmIW47KW49ZS5jaGFydEVsZW1lbnQsZT1lLnBhcmVudDtpZihuKXJldHVybiBuLmFsaWFzRm9yJiYobj1uLmFsaWFzRm9yKHQsdGhpcy5fZXZlbnRDb29yZGluYXRlcyh0KSkpLGkmJihuPW4uY2xvc2VzdChpKSksbn0sX2V2ZW50Q29vcmRpbmF0ZXM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPVJpKChlLnh8fHt9KS5jbGllbnQpLG49aT9lLnguY2xpZW50OmUuY2xpZW50WCxvPWk/ZS55LmNsaWVudDplLmNsaWVudFk7cmV0dXJuIHQuX3RvTW9kZWxDb29yZGluYXRlcyhuLG8pfSxfdG9Nb2RlbENvb3JkaW5hdGVzOmZ1bmN0aW9uKHQsaSl7dmFyIG49dGhpcy5lbGVtZW50LG89bi5vZmZzZXQoKSxyPXBhcnNlSW50KG4uY3NzKFwicGFkZGluZ0xlZnRcIiksMTApLGE9cGFyc2VJbnQobi5jc3MoXCJwYWRkaW5nVG9wXCIpLDEwKSxzPWUod2luZG93KTtyZXR1cm4gbmV3IHVpKHQtby5sZWZ0LXIrcy5zY3JvbGxMZWZ0KCksaS1vLnRvcC1hK3Muc2Nyb2xsVG9wKCkpfSxfdGFwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10LnN1cmZhY2UuZXZlbnRUYXJnZXQoZSksbj10Ll9kcmF3aW5nQ2hhcnRFbGVtZW50KGksZSk7dC5fYWN0aXZlUG9pbnQ9PT1uP3QuX3Byb3BhZ2F0ZUNsaWNrKG4sZSk6KHQuX3N0YXJ0SG92ZXIoaSxlKXx8dC5fdW5zZXRBY3RpdmVQb2ludCgpLHQuX3Byb3BhZ2F0ZUNsaWNrKG4sZSkpLHQuX3N1cHJlc3NNb3VzZWxlYXZlPSEwLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0Ll9zdXByZXNzTW91c2VsZWF2ZT0hMX0sMCl9LF9jbGljazpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dC5fZ2V0Q2hhcnRFbGVtZW50KGUpO3QuX3Byb3BhZ2F0ZUNsaWNrKGksZSl9LF9wcm9wYWdhdGVDbGljazpmdW5jdGlvbihlLHQpe2Zvcig7ZTspZS5jbGljayYmZS5jbGljayh0aGlzLHQpLGU9ZS5wYXJlbnR9LF9zdGFydEhvdmVyOmZ1bmN0aW9uKGUsaSl7dmFyIG4sbz10aGlzLHI9by5fZHJhd2luZ0NoYXJ0RWxlbWVudChlLGkpLGE9by5fdG9vbHRpcCxzPW8uX2hpZ2hsaWdodCxsPW8ub3B0aW9ucy50b29sdGlwO2lmKCFvLl9zdXBwcmVzc0hvdmVyJiZzJiYhcy5pc0hpZ2hsaWdodGVkKHIpJiYhby5fc2hhcmVkVG9vbHRpcCgpKXJldHVybiBuPW8uX2RyYXdpbmdDaGFydEVsZW1lbnQoZSxpLGZ1bmN0aW9uKGUpe3JldHVybiBlLmhvdmVyJiYhKGUgaW5zdGFuY2VvZiBjdCl9KSxuJiYhbi5ob3ZlcihvLGkpPyhvLl9hY3RpdmVQb2ludD1uLGw9WHQoe30sbCxuLm9wdGlvbnMudG9vbHRpcCksbC52aXNpYmxlJiZhLnNob3cobikscy5zaG93KG4pLG4pOnR9LF9tb3VzZW92ZXI6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcyxuPWkuX3N0YXJ0SG92ZXIodC5lbGVtZW50LHQub3JpZ2luYWxFdmVudCk7biYmbi50b29sdGlwVHJhY2tpbmcmJmUoZG9jdW1lbnQpLm9uKGNvLEh0KGkuX21vdXNlTW92ZVRyYWNraW5nLGkpKX0sX21vdXNlTW92ZVRyYWNraW5nOmZ1bmN0aW9uKHQpe3ZhciBpLG4sbz10aGlzLHI9by5vcHRpb25zLGE9by5fdG9vbHRpcCxzPW8uX2hpZ2hsaWdodCxsPW8uX2V2ZW50Q29vcmRpbmF0ZXModCksYz1vLl9hY3RpdmVQb2ludDtvLl9wbG90QXJlYS5ib3guY29udGFpbnNQb2ludChsKT9jJiZjLnRvb2x0aXBUcmFja2luZyYmYy5zZXJpZXMmJmMucGFyZW50LmdldE5lYXJlc3RQb2ludCYmKG49Yy5wYXJlbnQuZ2V0TmVhcmVzdFBvaW50KGwueCxsLnksYy5zZXJpZXNJeCksbiYmbiE9YyYmKG4uaG92ZXIobyx0KSxvLl9hY3RpdmVQb2ludD1uLGk9WHQoe30sci50b29sdGlwLGMub3B0aW9ucy50b29sdGlwKSxpLnZpc2libGUmJmEuc2hvdyhuKSxzLnNob3cobikpKTooZShkb2N1bWVudCkub2ZmKGNvKSxvLl91bnNldEFjdGl2ZVBvaW50KCkpfSxfbW91c2Vtb3ZlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2V2ZW50Q29vcmRpbmF0ZXMoZSk7dGhpcy5fdHJhY2tDcm9zc2hhaXJzKHQpLFxudGhpcy5fcGxvdEFyZWEuaG92ZXImJnRoaXMuX3Bsb3RBcmVhLmhvdmVyKHRoaXMsZSksdGhpcy5fc2hhcmVkVG9vbHRpcCgpJiZ0aGlzLl90cmFja1NoYXJlZFRvb2x0aXAodCxlKX0sX3RyYWNrQ3Jvc3NoYWlyczpmdW5jdGlvbihlKXt2YXIgdCxpLG49dGhpcy5fcGxvdEFyZWEuY3Jvc3NoYWlycztmb3IodD0wO3Q8bi5sZW5ndGg7dCsrKWk9blt0XSxpLmJveC5jb250YWluc1BvaW50KGUpP2kuc2hvd0F0KGUpOmkuaGlkZSgpfSxfdHJhY2tTaGFyZWRUb29sdGlwOmZ1bmN0aW9uKHQsaSl7dmFyIG4sbyxyLGEscz10aGlzLGw9cy5vcHRpb25zLGM9cy5fcGxvdEFyZWEsaD1jLmNhdGVnb3J5QXhpcyx1PXMuX3Rvb2x0aXAscD1sLnRvb2x0aXAsZj1zLl9oaWdobGlnaHQ7Yy5ib3guY29udGFpbnNQb2ludCh0KSYmKG49aC5wb2ludENhdGVnb3J5SW5kZXgodCksbiE9PXMuX3Rvb2x0aXBDYXRlZ29yeUl4JiYobz1jLnBvaW50c0J5Q2F0ZWdvcnlJbmRleChuKSxyPWUubWFwKG8sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXZlbnRBcmdzKGkpfSksYT1yWzBdfHx7fSxhLmNhdGVnb3J5UG9pbnRzPXIsby5sZW5ndGg+MCYmIXRoaXMudHJpZ2dlcihVbyxhKT8ocC52aXNpYmxlJiZ1LnNob3dBdChvLHQpLGYuc2hvdyhvKSk6dS5oaWRlKCkscy5fdG9vbHRpcENhdGVnb3J5SXg9bikpfSxfbW91c2VsZWF2ZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLG49aS5fcGxvdEFyZWEsbz1pLl90b29sdGlwLHI9aS5faGlnaGxpZ2h0LGE9dC5yZWxhdGVkVGFyZ2V0O2EmJmUoYSkuY2xvc2VzdChvLmVsZW1lbnQpLmxlbmd0aHx8aS5fc3VwcmVzc01vdXNlbGVhdmV8fChpLl9tb3VzZW1vdmUuY2FuY2VsKCksbi5oaWRlQ3Jvc3NoYWlycygpLHIuaGlkZSgpLHNldFRpbWVvdXQoSHQoby5oaWRlLG8pLGxyKSxpLl90b29sdGlwQ2F0ZWdvcnlJeD1udWxsKX0sX3Vuc2V0QWN0aXZlUG9pbnQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5fdG9vbHRpcCxpPWUuX2hpZ2hsaWdodDtlLl9hY3RpdmVQb2ludD1udWxsLHQmJnQuaGlkZSgpLGkmJmkuaGlkZSgpfSxfb25EYXRhQ2hhbmdlZDpmdW5jdGlvbihlKXt2YXIgdCxpLG49dGhpcyxvPW4ub3B0aW9ucyxyPW4uX3NvdXJjZVNlcmllc3x8by5zZXJpZXMsYT1yLmxlbmd0aCxsPW4uZGF0YVNvdXJjZS52aWV3KCksYz0obi5kYXRhU291cmNlLmdyb3VwKCl8fFtdKS5sZW5ndGg+MCxoPVtdO2Zvcih0PTA7dDxhO3QrKylpPXJbdF0sbi5faXNCaW5kYWJsZShpKSYmYz8oVGkoaCx6KGksbCkpLHRoaXMuX2FwcGx5R3JvdXBWaXNpYmxlU3RhdGUoaCxlKSk6aC5wdXNoKGl8fFtdKTtuLl9zb3VyY2VTZXJpZXM9cixvLnNlcmllcz1oLHMobi5vcHRpb25zKSxuLl9iaW5kU2VyaWVzKCksbi5fYmluZENhdGVnb3JpZXMoKSxuLl9oYXNEYXRhPSEwLG4uX2RlZmVyUmVkcmF3KCl9LF9hcHBseUdyb3VwVmlzaWJsZVN0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIGksbjtpZih0JiZ0LmFjdGlvbilmb3IoaT10aGlzLl9ncm91cFZpc2libGVTdGF0ZT10aGlzLl9ncm91cFZpc2libGVTdGF0ZXx8e30sbj0wO248ZS5sZW5ndGg7bisrKWlbZVtuXS5fZ3JvdXBWYWx1ZV09PT0hMSYmKGVbbl0udmlzaWJsZT0hMSk7ZWxzZSBkZWxldGUgdGhpcy5fZ3JvdXBWaXNpYmxlU3RhdGV9LF9zYXZlR3JvdXBWaXNpYmxlU3RhdGU6ZnVuY3Rpb24oZSl7UmkoZS5fZ3JvdXBWYWx1ZSkmJih0aGlzLl9ncm91cFZpc2libGVTdGF0ZXx8KHRoaXMuX2dyb3VwVmlzaWJsZVN0YXRlPXt9KSx0aGlzLl9ncm91cFZpc2libGVTdGF0ZVtlLl9ncm91cFZhbHVlXT1lLnZpc2libGUpfSxfZGVmZXJSZWRyYXc6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO050LnN1cHBvcnQudm1sPyhlLl9jbGVhclJlZHJhd1RpbWVvdXQoKSxlLl9yZWRyYXdUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLnN1cmZhY2UmJihlLnRyaWdnZXIoZ24pLGUuX3JlZHJhdygpKX0sMCkpOihlLnRyaWdnZXIoZ24pLGUuX3JlZHJhdygpKX0sX2NsZWFyUmVkcmF3VGltZW91dDpmdW5jdGlvbigpe3RoaXMuX3JlZHJhd1RpbWVvdXQmJihjbGVhckludGVydmFsKHRoaXMuX3JlZHJhd1RpbWVvdXQpLHRoaXMuX3JlZHJhd1RpbWVvdXQ9bnVsbCl9LF9iaW5kU2VyaWVzOmZ1bmN0aW9uKCl7dmFyIGUsdCxpLG4sbz10aGlzLHI9by5kYXRhU291cmNlLnZpZXcoKSxhPW8ub3B0aW9ucy5zZXJpZXMscz1hLmxlbmd0aDtmb3IoZT0wO2U8cztlKyspdD1hW2VdLG8uX2lzQmluZGFibGUodCkmJihpPXQuX2dyb3VwSXgsbj1SaShpKT8ocltpXXx8e30pLml0ZW1zOnIsdC5hdXRvQmluZCE9PSExJiYodC5kYXRhPW4pKX0sX2JpbmRDYXRlZ29yaWVzOmZ1bmN0aW9uKCl7dmFyIGUsdCxpPXRoaXMsbj1pLmRhdGFTb3VyY2UudmlldygpfHxbXSxvPShpLmRhdGFTb3VyY2UuZ3JvdXAoKXx8W10pLmxlbmd0aD4wLHI9bixhPWkub3B0aW9ucyxzPVtdLmNvbmNhdChhLmNhdGVnb3J5QXhpcyk7Zm9yKG8mJm4ubGVuZ3RoJiYocj1uWzBdLml0ZW1zKSxlPTA7ZTxzLmxlbmd0aDtlKyspdD1zW2VdLHQuYXV0b0JpbmQhPT0hMSYmaS5fYmluZENhdGVnb3J5QXhpcyh0LHIsZSl9LF9iaW5kQ2F0ZWdvcnlBeGlzOmZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvLHIsYT0odHx8W10pLmxlbmd0aDtpZihlLmZpZWxkKWZvcihlLmNhdGVnb3JpZXM9W10sbj0wO248YTtuKyspcj10W25dLG89cChlLmZpZWxkLHIpLDA9PT1uPyhlLmNhdGVnb3JpZXM9W29dLGUuZGF0YUl0ZW1zPVtyXSk6KGUuY2F0ZWdvcmllcy5wdXNoKG8pLGUuZGF0YUl0ZW1zLnB1c2gocikpO2Vsc2UgdGhpcy5fYmluZENhdGVnb3J5QXhpc0Zyb21TZXJpZXMoZSxpKX0sX2JpbmRDYXRlZ29yeUF4aXNGcm9tU2VyaWVzOmZ1bmN0aW9uKGUsdCl7dmFyIGksbixvLHIsYSxzLGwsYyxoLHUsZCxnPXRoaXMsbT1bXSx4PWcub3B0aW9ucy5zZXJpZXMsdj14Lmxlbmd0aCx5PXt9O2ZvcihuPTA7bjx2O24rKylpZihvPXhbbl0scj1vLmNhdGVnb3J5QXhpcz09PWUubmFtZXx8IW8uY2F0ZWdvcnlBeGlzJiYwPT09dCxhPW8uZGF0YSxsPWEubGVuZ3RoLG8uY2F0ZWdvcnlGaWVsZCYmciYmbD4wKWZvcihkPU4oZSxwKG8uY2F0ZWdvcnlGaWVsZCxhWzBdKSksdT1kP2Y6cCxzPTA7czxsO3MrKyljPWFbc10saD11KG8uY2F0ZWdvcnlGaWVsZCxjKSwhZCYmeVtoXXx8KG0ucHVzaChbaCxjXSksZHx8KHlbaF09ITApKTttLmxlbmd0aD4wJiYoZCYmKG09SChtLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIF9pKGVbMF0sdFswXSl9KSksaT1qKG0pLGUuY2F0ZWdvcmllcz1pWzBdLGUuZGF0YUl0ZW1zPWlbMV0pfSxfaXNCaW5kYWJsZTpmdW5jdGlvbihlKXt2YXIgdCxpLG49b2UuY3VycmVudC52YWx1ZUZpZWxkcyhlKSxvPSEwO2ZvcihpPTA7aTxuLmxlbmd0aDtpKyspaWYodD1uW2ldLHQ9PT1ocj90PVwiZmllbGRcIjp0Kz1cIkZpZWxkXCIsIVJpKGVbdF0pKXtvPSExO2JyZWFrfXJldHVybiBvfSxfbGVnZW5kSXRlbUNsaWNrOmZ1bmN0aW9uKGUsdCl7dmFyIGksbixvPXRoaXMscj1vLl9wbG90QXJlYSxhPShyLnNyY1Nlcmllc3x8ci5zZXJpZXMpW2VdO0FpKGEudHlwZSxbYm8sQW4sem5dKT8obj1hLmRhdGFbdF0saT0hIVJpKG4udmlzaWJsZSkmJiFuLnZpc2libGUsbi52aXNpYmxlPWkpOihhLnZpc2libGU9IWEudmlzaWJsZSx0aGlzLl9zYXZlR3JvdXBWaXNpYmxlU3RhdGUoYSkpLHRoaXMuX25vVHJhbnNpdGlvbnNSZWRyYXcoKX0sX25vVHJhbnNpdGlvbnNSZWRyYXc6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMub3B0aW9uczt0LnRyYW5zaXRpb25zJiYodC50cmFuc2l0aW9ucz0hMSxlPSEwKSx0aGlzLnJlZHJhdygpLGUmJih0LnRyYW5zaXRpb25zPSEwKX0sX2xlZ2VuZEl0ZW1Ib3ZlcjpmdW5jdGlvbihlLHQpe3ZhciBpLG49dGhpcyxvPW4uX3Bsb3RBcmVhLHI9bi5faGlnaGxpZ2h0LGE9KG8uc3JjU2VyaWVzfHxvLnNlcmllcylbZV07aT1BaShhLnR5cGUsW2JvLEFuLHpuXSk/by5maW5kUG9pbnQoZnVuY3Rpb24oaSl7cmV0dXJuIGkuc2VyaWVzLmluZGV4PT09ZSYmaS5pbmRleD09PXR9KTpvLnBvaW50c0J5U2VyaWVzSW5kZXgoZSksci5zaG93KGkpfSxfc2hvdWxkQXR0YWNoTW91c2VNb3ZlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuX2V2ZW50cztyZXR1cm4gZS5fcGxvdEFyZWEuY3Jvc3NoYWlycy5sZW5ndGh8fGUuX3Rvb2x0aXAmJmUuX3NoYXJlZFRvb2x0aXAoKXx8UmkodFtrb10pfSxzZXRPcHRpb25zOmZ1bmN0aW9uKGkpe3ZhciBuPXRoaXMsbz1pLmRhdGFTb3VyY2U7aS5kYXRhU291cmNlPXQsdGUobi5fb3JpZ2luYWxPcHRpb25zLGkpLG4uX29yaWdpbmFsT3B0aW9ucz1YdChuLl9vcmlnaW5hbE9wdGlvbnMsaSksbi5vcHRpb25zPVh0KHt9LG4uX29yaWdpbmFsT3B0aW9ucyksbi5fc291cmNlU2VyaWVzPW51bGwsZShkb2N1bWVudCkub2ZmKGhvKSxZdC5mbi5fc2V0RXZlbnRzLmNhbGwobixpKSxuLl9pbml0VGhlbWUobi5vcHRpb25zKSxvJiZuLnNldERhdGFTb3VyY2Uobyksbi5faGFzRGF0YVNvdXJjZT9uLl9vbkRhdGFDaGFuZ2VkKCk6KG4uX2JpbmRDYXRlZ29yaWVzKCksbi5yZWRyYXcoKSksbi5fc2hvdWxkQXR0YWNoTW91c2VNb3ZlKCkmJm4uZWxlbWVudC5vbihobyxuLl9tb3VzZW1vdmUpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxpPXQuZGF0YVNvdXJjZTt0LmVsZW1lbnQub2ZmKEZpKSxpJiZpLnVuYmluZChybix0Ll9kYXRhQ2hhbmdlSGFuZGxlciksZShkb2N1bWVudCkub2ZmKGNvKSx0Ll91c2VyRXZlbnRzJiZ0Ll91c2VyRXZlbnRzLmRlc3Ryb3koKSx0Ll9kZXN0cm95VmlldygpLHQuc3VyZmFjZS5kZXN0cm95KCksdC5zdXJmYWNlPW51bGwsdC5fY2xlYXJSZWRyYXdUaW1lb3V0KCksWXQuZm4uZGVzdHJveS5jYWxsKHQpfSxfZGVzdHJveVZpZXc6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5fbW9kZWwsaT1lLl9zZWxlY3Rpb25zO2lmKHQmJih0LmRlc3Ryb3koKSxlLl9tb2RlbD1udWxsKSxpKWZvcig7aS5sZW5ndGg+MDspaS5zaGlmdCgpLmRlc3Ryb3koKTtlLl91bnNldEFjdGl2ZVBvaW50KCksZS5fdG9vbHRpcCYmZS5fdG9vbHRpcC5kZXN0cm95KCksZS5faGlnaGxpZ2h0JiZlLl9oaWdobGlnaHQuZGVzdHJveSgpLGUuX3pvb21TZWxlY3Rpb24mJihlLl96b29tU2VsZWN0aW9uLmRlc3Ryb3koKSxkZWxldGUgZS5fem9vbVNlbGVjdGlvbiksZS5fcGFubmFibGUmJihlLl9wYW5uYWJsZS5kZXN0cm95KCksZGVsZXRlIGUuX3Bhbm5hYmxlKSxlLl9tb3VzZXdoZWVsWm9vbSYmKGUuX21vdXNld2hlZWxab29tLmRlc3Ryb3koKSxkZWxldGUgZS5fbW91c2V3aGVlbFpvb20pfX0pO0p0LkV4cG9ydE1peGluLmV4dGVuZChSci5mbiksTnQuUERGTWl4aW4mJk50LlBERk1peGluLmV4dGVuZChSci5mbiksbmU9anQuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKCl7dGhpcy5fcmVnaXN0cnk9W119LHJlZ2lzdGVyOmZ1bmN0aW9uKGUsdCl7dGhpcy5fcmVnaXN0cnkucHVzaCh7dHlwZTplLHNlcmllc1R5cGVzOnR9KX0sY3JlYXRlOmZ1bmN0aW9uKGUsdCl7dmFyIGksbixvLHI9dGhpcy5fcmVnaXN0cnksYT1yWzBdO2ZvcihpPTA7aTxyLmxlbmd0aDtpKyspaWYobj1yW2ldLG89TyhlLG4uc2VyaWVzVHlwZXMpLG8ubGVuZ3RoPjApe2E9bjticmVha31yZXR1cm4gbmV3IGEudHlwZShvLHQpfX0pLG5lLmN1cnJlbnQ9bmV3IG5lLG9lPWp0LmV4dGVuZCh7aW5pdDpmdW5jdGlvbigpe3RoaXMuX3ZhbHVlRmllbGRzPXt9LHRoaXMuX290aGVyRmllbGRzPXt9LHRoaXMuX251bGxWYWx1ZT17fSx0aGlzLl91bmRlZmluZWRWYWx1ZT17fX0scmVnaXN0ZXI6ZnVuY3Rpb24oZSxpLG4pe3ZhciBvLHIsYT10aGlzO2ZvcihpPWl8fFtocl0sbz0wO288ZS5sZW5ndGg7bysrKXI9ZVtvXSxhLl92YWx1ZUZpZWxkc1tyXT1pLGEuX290aGVyRmllbGRzW3JdPW4sYS5fbnVsbFZhbHVlW3JdPWEuX21ha2VWYWx1ZShpLG51bGwpLGEuX3VuZGVmaW5lZFZhbHVlW3JdPWEuX21ha2VWYWx1ZShpLHQpfSxjYW5vbmljYWxGaWVsZHM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudmFsdWVGaWVsZHMoZSkuY29uY2F0KHRoaXMub3RoZXJGaWVsZHMoZSkpfSx2YWx1ZUZpZWxkczpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fdmFsdWVGaWVsZHNbZS50eXBlXXx8W2hyXX0sb3RoZXJGaWVsZHM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX290aGVyRmllbGRzW2UudHlwZV18fFtocl19LGJpbmRQb2ludDpmdW5jdGlvbihlLHQsaSl7dmFyIG4sbyxyLGEscyxsPXRoaXMsYz1lLmRhdGEsaD1SaShpKT9pOmNbdF0sdT17dmFsdWVGaWVsZHM6e3ZhbHVlOmh9fSxwPWwudmFsdWVGaWVsZHMoZSksZj1sLl9vdGhlckZpZWxkc1tlLnR5cGVdO3JldHVybiBudWxsPT09aD9zPWwuX251bGxWYWx1ZVtlLnR5cGVdOlJpKGgpP0R0KGgpPyhvPWguc2xpY2UocC5sZW5ndGgpLHM9bC5fYmluZEZyb21BcnJheShoLHApLG49bC5fYmluZEZyb21BcnJheShvLGYpKTp0eXBlb2YgaD09PXZvJiYocj1sLnNvdXJjZUZpZWxkcyhlLHApLGE9bC5zb3VyY2VGaWVsZHMoZSxmKSxzPWwuX2JpbmRGcm9tT2JqZWN0KGgscCxyKSxuPWwuX2JpbmRGcm9tT2JqZWN0KGgsZixhKSk6cz1sLl91bmRlZmluZWRWYWx1ZVtlLnR5cGVdLFJpKHMpJiYoMT09PXAubGVuZ3RoP3UudmFsdWVGaWVsZHMudmFsdWU9c1twWzBdXTp1LnZhbHVlRmllbGRzPXMpLHUuZmllbGRzPW58fHt9LHV9LF9tYWtlVmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuLG89e30scj1lLmxlbmd0aDtmb3IoaT0wO2k8cjtpKyspbj1lW2ldLG9bbl09dDtyZXR1cm4gb30sX2JpbmRGcm9tQXJyYXk6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuLG89e307aWYodClmb3Iobj1PdC5taW4odC5sZW5ndGgsZS5sZW5ndGgpLGk9MDtpPG47aSsrKW9bdFtpXV09ZVtpXTtyZXR1cm4gb30sX2JpbmRGcm9tT2JqZWN0OmZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvLHIsYSxzPXt9O2lmKHQpZm9yKG89dC5sZW5ndGgsaT1pfHx0LG49MDtuPG87bisrKXI9dFtuXSxhPWlbbl0sc1tyXT1wKGEsZSk7cmV0dXJuIHN9LHNvdXJjZUZpZWxkczpmdW5jdGlvbihlLHQpe3ZhciBpLG4sbyxyLGE7aWYodClmb3Iobj10Lmxlbmd0aCxyPVtdLGk9MDtpPG47aSsrKW89dFtpXSxhPW89PT1ocj9cImZpZWxkXCI6bytcIkZpZWxkXCIsci5wdXNoKGVbYV18fG8pO3JldHVybiByfX0pLG9lLmN1cnJlbnQ9bmV3IG9lLHJlPW9pLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXM7b2kuZm4uaW5pdC5jYWxsKGksdCksdGhpcy50ZXh0Qm94PW5ldyBtaShlLGkub3B0aW9ucyksaS5hcHBlbmQodGhpcy50ZXh0Qm94KX0sb3B0aW9uczp7cG9zaXRpb246X28sbWFyZ2luOndpKDMpLHBhZGRpbmc6d2koNCksY29sb3I6WmksYmFja2dyb3VuZDpcIlwiLGJvcmRlcjp7d2lkdGg6MSxjb2xvcjpcIlwifSxhYm92ZUF4aXM6ITAsdmVydGljYWw6ITEsYW5pbWF0aW9uOnt0eXBlOkVuLGRlbGF5Ok5ufSx6SW5kZXg6Mn0sY3JlYXRlVmlzdWFsOmZ1bmN0aW9uKCl7dGhpcy50ZXh0Qm94Lm9wdGlvbnMubm9jbGlwPXRoaXMub3B0aW9ucy5ub2NsaXB9LHJlZmxvdzpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dC5vcHRpb25zLG49aS52ZXJ0aWNhbCxvPWkuYWJvdmVBeGlzLHI9dC5jaGlsZHJlblswXSxhPXIuYm94LHM9ci5vcHRpb25zLnBhZGRpbmc7ci5vcHRpb25zLmFsaWduPW4/b246WG4sci5vcHRpb25zLnZBbGlnbj1uP29yOm9uLGkucG9zaXRpb249PUduP24/KHIub3B0aW9ucy52QWxpZ249b3IsIW8mJmEuaGVpZ2h0KCk8ZS5oZWlnaHQoKSYmKHIub3B0aW9ucy52QWxpZ249UWkpKTpyLm9wdGlvbnMuYWxpZ249bz9SbzpYbjppLnBvc2l0aW9uPT1vbj8oci5vcHRpb25zLnZBbGlnbj1vbixyLm9wdGlvbnMuYWxpZ249b24pOmkucG9zaXRpb249PWpuP24/ci5vcHRpb25zLnZBbGlnbj1vP1FpOm9yOnIub3B0aW9ucy5hbGlnbj1vP1huOlJvOmkucG9zaXRpb249PV9vJiYobj9lPW8/bmV3IGlpKGUueDEsZS55MS1hLmhlaWdodCgpLGUueDIsZS55MSk6bmV3IGlpKGUueDEsZS55MixlLngyLGUueTIrYS5oZWlnaHQoKSk6KHIub3B0aW9ucy5hbGlnbj1vbixlPW8/bmV3IGlpKGUueDIsZS55MSxlLngyK2Eud2lkdGgoKSxlLnkyKTpuZXcgaWkoZS54MS1hLndpZHRoKCksZS55MSxlLngxLGUueTIpKSksaS5yb3RhdGlvbnx8KG4/cy5sZWZ0PXMucmlnaHQ9KGUud2lkdGgoKS1yLmNvbnRlbnRCb3gud2lkdGgoKSkvMjpzLnRvcD1zLmJvdHRvbT0oZS5oZWlnaHQoKS1yLmNvbnRlbnRCb3guaGVpZ2h0KCkpLzIpLHIucmVmbG93KGUpfSxhbGlnblRvQ2xpcEJveDpmdW5jdGlvbihlKXt2YXIgdCxpPXRoaXMsbj1pLm9wdGlvbnMudmVydGljYWwsbz1uP3lyOnZyLHI9bytcIjFcIixhPW8rXCIyXCIscz1pLmNoaWxkcmVuWzBdLGw9aS5wYXJlbnQuYm94OyhsW3JdPGVbcl18fGVbYV08bFthXSkmJih0PXMucGFkZGluZ0JveC5jbG9uZSgpLHRbcl09T3QubWF4KGxbcl0sZVtyXSksdFthXT1PdC5taW4obFthXSxlW2FdKSx0aGlzLnJlZmxvdyh0KSl9fSksYWU9bmkuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7bmkuZm4uaW5pdC5jYWxsKHQsZSksdC5jcmVhdGVDb250YWluZXIoKSx0LmNyZWF0ZU1hcmtlcigpLHQuY3JlYXRlTGFiZWwoKX0sY3JlYXRlQ29udGFpbmVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLmNvbnRhaW5lcj1uZXcgc2koe3ZlcnRpY2FsOiExLHdyYXA6ITEsYWxpZ246b259KSxlLmFwcGVuZChlLmNvbnRhaW5lcil9LGNyZWF0ZU1hcmtlcjpmdW5jdGlvbigpe3RoaXMuY29udGFpbmVyLmFwcGVuZChuZXcgZGkodGhpcy5tYXJrZXJPcHRpb25zKCkpKX0sbWFya2VyT3B0aW9uczpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucyx0PWUubWFya2VyQ29sb3I7cmV0dXJuIFh0KHt9LGUubWFya2Vycyx7YmFja2dyb3VuZDp0LGJvcmRlcjp7Y29sb3I6dH19KX0sY3JlYXRlTGFiZWw6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5vcHRpb25zLGk9WHQoe30sdC5sYWJlbHMpO2UuY29udGFpbmVyLmFwcGVuZChuZXcgbWkodC50ZXh0LGkpKX0scmVuZGVyQ29tcGxldGU6ZnVuY3Rpb24oKXt2YXIgZSx0O29pLmZuLnJlbmRlckNvbXBsZXRlLmNhbGwodGhpcyksZT10aGlzLm9wdGlvbnMuY3Vyc29yfHx7fSx0PXRoaXMuX2l0ZW1PdmVybGF5PU9pLlBhdGguZnJvbVJlY3QodGhpcy5jb250YWluZXIuYm94LnRvUmVjdCgpLHtmaWxsOntjb2xvcjp4cixvcGFjaXR5OjB9LHN0cm9rZTpudWxsLGN1cnNvcjplLnN0eWxlfHxlfSksdGhpcy5hcHBlbmRWaXN1YWwodCl9LGNsaWNrOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5ldmVudEFyZ3ModCk7ZS50cmlnZ2VyKFduLGkpfHwodC5wcmV2ZW50RGVmYXVsdCgpLGUuX2xlZ2VuZEl0ZW1DbGljayhpLnNlcmllc0luZGV4LGkucG9pbnRJbmRleCkpfSxob3ZlcjpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMuZXZlbnRBcmdzKHQpO3JldHVybiBlLnRyaWdnZXIoWm4saSl8fCh0LnByZXZlbnREZWZhdWx0KCksZS5fbGVnZW5kSXRlbUhvdmVyKGkuc2VyaWVzSW5kZXgsaS5wb2ludEluZGV4KSksITB9LGxlYXZlOmZ1bmN0aW9uKGUpe2UuX3Vuc2V0QWN0aXZlUG9pbnQoKX0sZXZlbnRBcmdzOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub3B0aW9ucztyZXR1cm57ZWxlbWVudDpiaShlKSx0ZXh0OnQudGV4dCxzZXJpZXM6dC5zZXJpZXMsc2VyaWVzSW5kZXg6dC5zZXJpZXMuaW5kZXgscG9pbnRJbmRleDp0LnBvaW50SW5kZXh9fSxyZW5kZXJWaXN1YWw6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5vcHRpb25zLGk9dC52aXN1YWw7aT8oZS52aXN1YWw9aSh7YWN0aXZlOnQuYWN0aXZlLHNlcmllczp0LnNlcmllcyxwb2ludEluZGV4OnQucG9pbnRJbmRleCxvcHRpb25zOnttYXJrZXJzOmUubWFya2VyT3B0aW9ucygpLGxhYmVsczp0LmxhYmVsc30sY3JlYXRlVmlzdWFsOmZ1bmN0aW9uKCl7ZS5jcmVhdGVWaXN1YWwoKSxlLnJlbmRlckNoaWxkcmVuKCksZS5yZW5kZXJDb21wbGV0ZSgpO3ZhciB0PWUudmlzdWFsO3JldHVybiBkZWxldGUgZS52aXN1YWwsdH19KSx0aGlzLmFkZFZpc3VhbCgpKTpvaS5mbi5yZW5kZXJWaXN1YWwuY2FsbChlKX19KSxzZT1vaS5leHRlbmQoe3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlLHQsaT10aGlzLmNoaWxkcmVuLG49dGhpcy5vcHRpb25zLG89bi52ZXJ0aWNhbDtmb3IodGhpcy52aXN1YWw9bmV3IE9pLkxheW91dChudWxsLHtzcGFjaW5nOm8/MDpuLnNwYWNpbmcsbGluZVNwYWNpbmc6bz9uLnNwYWNpbmc6MCxvcmllbnRhdGlvbjpvP1widmVydGljYWxcIjpcImhvcml6b250YWxcIn0pLHQ9MDt0PGkubGVuZ3RoO3QrKyllPWlbdF0sZS5yZWZsb3cobmV3IGlpKSxlLnJlbmRlclZpc3VhbCgpfSxyZWZsb3c6ZnVuY3Rpb24oZSl7dGhpcy52aXN1YWwucmVjdChlLnRvUmVjdCgpKSx0aGlzLnZpc3VhbC5yZWZsb3coKTt2YXIgdD10aGlzLnZpc3VhbC5jbGlwcGVkQkJveCgpO3RoaXMuYm94PXQ/SnQucmVjdFRvQm94KHQpOm5ldyBpaX0scmVuZGVyVmlzdWFsOmZ1bmN0aW9uKCl7dGhpcy5hZGRWaXN1YWwoKX0sY3JlYXRlVmlzdWFsOkZ0fSksbGU9b2kuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7b2kuZm4uaW5pdC5jYWxsKHQsZSksQWkodC5vcHRpb25zLnBvc2l0aW9uLFtvcixSbyxRaSxYbixkbl0pfHwodC5vcHRpb25zLnBvc2l0aW9uPVJvKSx0LmNyZWF0ZUNvbnRhaW5lcigpLHQuY3JlYXRlSXRlbXMoKX0sb3B0aW9uczp7cG9zaXRpb246Um8saXRlbXM6W10sbGFiZWxzOnttYXJnaW46e2xlZnQ6Nn19LG9mZnNldFg6MCxvZmZzZXRZOjAsbWFyZ2luOndpKDUpLHBhZGRpbmc6d2koNSksYm9yZGVyOntjb2xvcjpaaSx3aWR0aDowfSxpdGVtOntjdXJzb3I6U299LHNwYWNpbmc6NixiYWNrZ3JvdW5kOlwiXCIsekluZGV4OjEsbWFya2Vyczp7Ym9yZGVyOnt3aWR0aDoxfSx3aWR0aDo3LGhlaWdodDo3LHR5cGU6XCJyZWN0XCIsYWxpZ246WG4sdkFsaWduOm9ufX0sY3JlYXRlQ29udGFpbmVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUub3B0aW9ucyxpPXQuYWxpZ24sbj10LnBvc2l0aW9uLG89bixyPW9uO249PWRuP289WG46QWkobixbb3IsUWldKT8obz1cInN0YXJ0XCI9PWk/WG46XCJlbmRcIj09aT9SbzpvbixyPW4pOmkmJihcInN0YXJ0XCI9PWk/cj1vcjpcImVuZFwiPT1pJiYocj1RaSkpLGUuY29udGFpbmVyPW5ldyBuaSh7bWFyZ2luOnQubWFyZ2luLHBhZGRpbmc6dC5wYWRkaW5nLGJhY2tncm91bmQ6dC5iYWNrZ3JvdW5kLGJvcmRlcjp0LmJvcmRlcix2QWxpZ246cixhbGlnbjpvLHpJbmRleDp0LnpJbmRleCxzaHJpbmtUb0ZpdDohMH0pLGUuYXBwZW5kKGUuY29udGFpbmVyKX0sY3JlYXRlSXRlbXM6ZnVuY3Rpb24oKXt2YXIgZSx0LGksbj10aGlzLG89bi5vcHRpb25zLHI9by5pdGVtcyxhPXIubGVuZ3RoLHM9bi5pc1ZlcnRpY2FsKCk7Zm9yKGU9bmV3IHNlKHt2ZXJ0aWNhbDpzLHNwYWNpbmc6by5zcGFjaW5nfSksby5yZXZlcnNlJiYocj1yLnNsaWNlKDApLnJldmVyc2UoKSksdD0wO3Q8YTt0KyspaT1yW3RdLGUuYXBwZW5kKG5ldyBhZShYdCh7fSx7bWFya2VyczpvLm1hcmtlcnMsbGFiZWxzOm8ubGFiZWxzfSxvLml0ZW0saSkpKTtlLnJlbmRlcigpLG4uY29udGFpbmVyLmFwcGVuZChlKX0saXNWZXJ0aWNhbDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLm9wdGlvbnMsaT10Lm9yaWVudGF0aW9uLG49dC5wb3NpdGlvbixvPW49PWRuJiZpIT1Gbnx8KFJpKGkpP2khPUZuOkFpKG4sW1huLFJvXSkpO3JldHVybiBvfSxoYXNJdGVtczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRhaW5lci5jaGlsZHJlblswXS5jaGlsZHJlbi5sZW5ndGg+MH0scmVmbG93OmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMsbj1pLm9wdGlvbnM7cmV0dXJuIGU9ZS5jbG9uZSgpLGkuaGFzSXRlbXMoKT8obi5wb3NpdGlvbj09PWRuPyhpLmNvbnRhaW5lckN1c3RvbVJlZmxvdyhlKSxpLmJveD1lKTppLmNvbnRhaW5lclJlZmxvdyhlKSx0KTooaS5ib3g9ZSx0KX0sY29udGFpbmVyUmVmbG93OmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcyxuPWkub3B0aW9ucyxvPW4ucG9zaXRpb24scj1vPT1vcnx8bz09UWk/dnI6eXIsYT1lLmNsb25lKCkscz1pLmNvbnRhaW5lcixsPW4ud2lkdGgsYz1uLmhlaWdodCxoPWkuaXNWZXJ0aWNhbCgpLHU9ZS5jbG9uZSgpO28hPVhuJiZvIT1Sb3x8KGEueTE9dS55MT0wKSxoJiZjPyhhLnkyPWEueTErYyxhLmFsaWduKHUseXIscy5vcHRpb25zLnZBbGlnbikpOiFoJiZsJiYoYS54Mj1hLngxK2wsYS5hbGlnbih1LHZyLHMub3B0aW9ucy5hbGlnbikpLHMucmVmbG93KGEpLGE9cy5ib3gsdD1hLmNsb25lKCksKG4ub2Zmc2V0WHx8bi5vZmZzZXRZKSYmKGEudHJhbnNsYXRlKG4ub2Zmc2V0WCxuLm9mZnNldFkpLGkuY29udGFpbmVyLnJlZmxvdyhhKSksdFtyKzFdPWVbcisxXSx0W3IrMl09ZVtyKzJdLGkuYm94PXR9LGNvbnRhaW5lckN1c3RvbVJlZmxvdzpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dC5vcHRpb25zLG49aS5vZmZzZXRYLG89aS5vZmZzZXRZLHI9dC5jb250YWluZXIsYT1pLndpZHRoLHM9aS5oZWlnaHQsbD10LmlzVmVydGljYWwoKSxjPWUuY2xvbmUoKTtsJiZzP2MueTI9Yy55MStzOiFsJiZhJiYoYy54Mj1jLngxK2EpLHIucmVmbG93KGMpLGM9ci5ib3gsci5yZWZsb3coaWkobixvLG4rYy53aWR0aCgpLG8rYy5oZWlnaHQoKSkpfSxyZW5kZXJWaXN1YWw6ZnVuY3Rpb24oKXt0aGlzLmhhc0l0ZW1zKCkmJm9pLmZuLnJlbmRlclZpc3VhbC5jYWxsKHRoaXMpfX0pLGNlPWVpLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2U9ZXx8e30sdGhpcy5faW5pdEZpZWxkcygpLHRoaXMuX2luaXRDYXRlZ29yaWVzKGUpLGVpLmZuLmluaXQuY2FsbCh0LGUpfSxfaW5pdEZpZWxkczpmdW5jdGlvbigpe3RoaXMuX3RpY2tzPXt9LHRoaXMub3V0T2ZSYW5nZU1pbj0wLHRoaXMub3V0T2ZSYW5nZU1heD0wfSxfaW5pdENhdGVnb3JpZXM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuPShlLmNhdGVnb3JpZXN8fFtdKS5zbGljZSgwKSxvPVJpKGUubWluKSxyPVJpKGUubWF4KTtlLmNhdGVnb3JpZXM9biwob3x8cikmJm4ubGVuZ3RoJiYoZS5zcmNDYXRlZ29yaWVzPWUuY2F0ZWdvcmllcyx0PW8/T3QuZmxvb3IoZS5taW4pOjAsaT1yP2UuanVzdGlmaWVkP090LmZsb29yKGUubWF4KSsxOk90LmNlaWwoZS5tYXgpOm4ubGVuZ3RoLGUuY2F0ZWdvcmllcz1lLmNhdGVnb3JpZXMuc2xpY2UodCxpKSl9LG9wdGlvbnM6e3R5cGU6bm4sY2F0ZWdvcmllczpbXSx2ZXJ0aWNhbDohMSxtYWpvckdyaWRMaW5lczp7dmlzaWJsZTohMSx3aWR0aDoxLGNvbG9yOlppfSxsYWJlbHM6e3pJbmRleDoxfSxqdXN0aWZpZWQ6ITF9LHJhbmdlSW5kaWNlczpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5vcHRpb25zLGk9dC5jYXRlZ29yaWVzLmxlbmd0aHx8MSxuPUIodC5taW4pP3QubWluJTE6MDtyZXR1cm4gZT1CKHQubWF4KSYmdC5tYXglMSE9PTAmJnQubWF4PHRoaXMudG90YWxSYW5nZSgpLm1heD9pLSgxLXQubWF4JTEpOmktKHQuanVzdGlmaWVkPzE6MCkse21pbjpuLG1heDplfX0sdG90YWxSYW5nZUluZGljZXM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuPXRoaXMub3B0aW9ucyxvPUIobi5taW4pP24ubWluOjA7cmV0dXJuIHQ9QihuLm1heCk/bi5tYXg6QihuLm1pbik/bytuLmNhdGVnb3JpZXMubGVuZ3RoOihuLnNyY0NhdGVnb3JpZXN8fG4uY2F0ZWdvcmllcykubGVuZ3RoLShuLmp1c3RpZmllZD8xOjApfHwxLGUmJihpPXRoaXMudG90YWxSYW5nZSgpLG89VmkobywwLGkubWF4KSx0PVZpKHQsMCxpLm1heCkpLHttaW46byxtYXg6dH19LHJhbmdlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO3JldHVybnttaW46QihlLm1pbik/ZS5taW46MCxtYXg6QihlLm1heCk/ZS5tYXg6ZS5jYXRlZ29yaWVzLmxlbmd0aH19LHRvdGFsUmFuZ2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnM7cmV0dXJue21pbjowLG1heDpPdC5tYXgodGhpcy5fc2VyaWVzTWF4fHwwLChlLnNyY0NhdGVnb3JpZXN8fGUuY2F0ZWdvcmllcykubGVuZ3RoKS0oZS5qdXN0aWZpZWQ/MTowKX19LGdldFNjYWxlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yYW5nZUluZGljZXMoKSx0PWUubWluLGk9ZS5tYXgsbj10aGlzLmxpbmVCb3goKSxvPXRoaXMub3B0aW9ucy52ZXJ0aWNhbD9uLmhlaWdodCgpOm4ud2lkdGgoKSxyPW8vKGktdHx8MSk7cmV0dXJuIHIqKHRoaXMub3B0aW9ucy5yZXZlcnNlPy0xOjEpfSxnZXRUaWNrUG9zaXRpb25zOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLGk9dC5vcHRpb25zLG49aS52ZXJ0aWNhbCxvPXQubGluZUJveCgpLHI9aS5yZXZlcnNlLGE9dC5nZXRTY2FsZSgpLHM9dC5yYW5nZUluZGljZXMoKSxsPXMubWluLGM9cy5tYXgsaD1sJTEhPT0wP090LmZsb29yKGwvMSkrZTpsLHU9b1sobj95cjp2cikrKHI/MjoxKV0scD1bXTtoPD1jOylwLnB1c2godStDaShhKihoLWwpLHVuKSksaCs9ZTtyZXR1cm4gcH0sZ2V0TGFiZWxzVGlja1Bvc2l0aW9uczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0TWFqb3JUaWNrUG9zaXRpb25zKCkuc2xpY2UoMCksdD10aGlzLnJhbmdlSW5kaWNlcygpLGk9dGhpcy5nZXRTY2FsZSgpLG49dGhpcy5saW5lQm94KCksbz10aGlzLm9wdGlvbnMscj1vLnZlcnRpY2FsP3lyOnZyLGE9by5yZXZlcnNlPzI6MSxzPW8ucmV2ZXJzZT8xOjI7cmV0dXJuIHQubWluJTEhPT0wJiZlLnVuc2hpZnQobltyK2FdLWkqKHQubWluJTEpKSx0Lm1heCUxIT09MCYmZS5wdXNoKG5bcitzXStpKigxLXQubWF4JTEpKSxlfSxsYWJlbFRpY2tJbmRleDpmdW5jdGlvbihlKXt2YXIgdD1lLmluZGV4LGk9dGhpcy5yYW5nZUluZGljZXMoKTtyZXR1cm4gaS5taW4+MCYmKHQtPU90LmZsb29yKGkubWluKSksdH0sYXJyYW5nZUxhYmVsczpmdW5jdGlvbigpe2VpLmZuLmFycmFuZ2VMYWJlbHMuY2FsbCh0aGlzKSx0aGlzLmhpZGVPdXRPZlJhbmdlTGFiZWxzKCl9LGhpZGVPdXRPZlJhbmdlTGFiZWxzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5ib3gsdD10aGlzLmxhYmVscyxpPXRoaXMub3B0aW9ucy52ZXJ0aWNhbD95cjp2cixuPWVbaSsxXSxvPWVbaSsyXSxyPXRbMF0sYT1JaSh0KTt0Lmxlbmd0aCYmKChyLmJveFtpKzFdPm98fHIuYm94W2krMl08bikmJihyLm9wdGlvbnMudmlzaWJsZT0hMSksKGEuYm94W2krMV0+b3x8YS5ib3hbaSsyXTxuKSYmKGEub3B0aW9ucy52aXNpYmxlPSExKSl9LGdldE1ham9yVGlja1Bvc2l0aW9uczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRpY2tzKCkubWFqb3JUaWNrc30sZ2V0TWlub3JUaWNrUG9zaXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGlja3MoKS5taW5vclRpY2tzfSxnZXRUaWNrczpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcyxpPXQuX3RpY2tzLG49dC5vcHRpb25zLG89dC5yYW5nZUluZGljZXMoKSxyPW4ucmV2ZXJzZSxhPW4uanVzdGlmaWVkLHM9dC5saW5lQm94KCk7cmV0dXJuIGU9cy5nZXRIYXNoKCkrby5taW4rXCIsXCIrby5tYXgrcithLGkuX2hhc2ghPT1lJiYoaS5faGFzaD1lLGkubWFqb3JUaWNrcz10LmdldFRpY2tQb3NpdGlvbnMoMSksaS5taW5vclRpY2tzPXQuZ2V0VGlja1Bvc2l0aW9ucyguNSkpLGl9LGdldFNsb3Q6ZnVuY3Rpb24oZSx0LGkpe3ZhciBuLG8scj10aGlzLGE9ci5vcHRpb25zLHM9YS5yZXZlcnNlLGw9YS5qdXN0aWZpZWQsYz1hLnZlcnRpY2FsP3lyOnZyLGg9ci5saW5lQm94KCksdT1yLnJhbmdlSW5kaWNlcygpLHA9dS5taW4sZj10aGlzLmdldFNjYWxlKCksZD1oW2MrKHM/MjoxKV0sZz1oLmNsb25lKCksbT0hUmkodCk7cmV0dXJuIGU9TWkoZSwwKSx0PU1pKHQsZSksdD1PdC5tYXgodC0xLGUpLHQ9T3QubWF4KGUsdCksbj1kKyhlLXApKmYsbz1kKyh0KzEtcCkqZixtJiZsJiYobz1uKSxpJiYobj1WaShuLGhbYysxXSxoW2MrMl0pLG89VmkobyxoW2MrMV0saFtjKzJdKSksZ1tjKzFdPXM/bzpuLGdbYysyXT1zP246byxnfSxzbG90OmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmKGU9dGhpcy5jYXRlZ29yeUluZGV4KGUpKSxcInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9dGhpcy5jYXRlZ29yeUluZGV4KHQpKSxlaS5mbi5zbG90LmNhbGwodGhpcyxlLHQsaSl9LHBvaW50Q2F0ZWdvcnlJbmRleDpmdW5jdGlvbihlKXt2YXIgdCxpLG4sbz10aGlzLHI9by5vcHRpb25zLGE9ci5yZXZlcnNlLHM9ci5qdXN0aWZpZWQsbD1yLnZlcnRpY2FsP3lyOnZyLGM9by5saW5lQm94KCksaD1vLnJhbmdlSW5kaWNlcygpLHU9YT9oLm1heDpoLm1pbixwPXRoaXMuZ2V0U2NhbGUoKSxmPWNbbCsxXSxkPWNbbCsyXSxnPWVbbF07cmV0dXJuIGc8Znx8Zz5kP251bGw6KHQ9Zy1mLGk9dC9wLGk9dStpLG49aSUxLHM/aT1PdC5yb3VuZChpKTowPT09biYmaT4wJiZpLS0sT3QuZmxvb3IoaSkpfSxnZXRDYXRlZ29yeTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnBvaW50Q2F0ZWdvcnlJbmRleChlKTtyZXR1cm4gbnVsbD09PXQ/bnVsbDp0aGlzLm9wdGlvbnMuY2F0ZWdvcmllc1t0XX0sY2F0ZWdvcnlJbmRleDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLm9wdGlvbnMsaT1GKGUsdC5zcmNDYXRlZ29yaWVzfHx0LmNhdGVnb3JpZXMpO3JldHVybiBpLU90LmZsb29yKHQubWlufHwwKX0sdHJhbnNsYXRlUmFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXQub3B0aW9ucyxuPXQubGluZUJveCgpLG89aS52ZXJ0aWNhbD9uLmhlaWdodCgpOm4ud2lkdGgoKSxyPWkuY2F0ZWdvcmllcy5sZW5ndGgsYT1vL3Iscz1DaShlL2EsX24pO3JldHVybnttaW46cyxtYXg6citzfX0sem9vbVJhbmdlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudG90YWxSYW5nZUluZGljZXMoKSxpPXRoaXMudG90YWxSYW5nZSgpLG49aS5tYXgsbz1pLm1pbixyPVZpKHQubWluK2UsbyxuKSxhPVZpKHQubWF4LWUsbyxuKTtpZihhLXI+MClyZXR1cm57bWluOnIsbWF4OmF9fSxzY2FsZVJhbmdlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10Lm9wdGlvbnMsbj1pLmNhdGVnb3JpZXMubGVuZ3RoLG89ZSpuO3JldHVybnttaW46LW8sbWF4Om4rb319LGxhYmVsc0NvdW50OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sYWJlbHNSYW5nZSgpO3JldHVybiBlLm1heC1lLm1pbn0sbGFiZWxzUmFuZ2U6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMub3B0aW9ucyxpPXQubGFiZWxzLG49dC5qdXN0aWZpZWQsbz10aGlzLnRvdGFsUmFuZ2VJbmRpY2VzKCEwKSxyPW8ubWluLGE9by5tYXgscz1PdC5mbG9vcihyKTtyZXR1cm4gbj8ocj1PdC5jZWlsKHIpLGE9T3QuZmxvb3IoYSkpOihyPU90LmZsb29yKHIpLGE9T3QuY2VpbChhKSksZT1yPmkuc2tpcD9pLnNraXAraS5zdGVwKk90LmNlaWwoKHItaS5za2lwKS9pLnN0ZXApOmkuc2tpcCx7bWluOmUtcyxtYXg6KHQuY2F0ZWdvcmllcy5sZW5ndGg/YSsobj8xOjApOjApLXN9fSxjcmVhdGVBeGlzTGFiZWw6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLG49aS5vcHRpb25zLG89bi5kYXRhSXRlbXM/bi5kYXRhSXRlbXNbZV06bnVsbCxyPU1pKG4uY2F0ZWdvcmllc1tlXSxcIlwiKSxhPWkuYXhpc0xhYmVsVGV4dChyLG8sdCk7cmV0dXJuIG5ldyB0aShyLGEsZSxvLHQpfSxzaG91bGRSZW5kZXJOb3RlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub3B0aW9ucy5jYXRlZ29yaWVzO3JldHVybiB0Lmxlbmd0aCYmdC5sZW5ndGg+ZSYmZT49MH0scGFuOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudG90YWxSYW5nZUluZGljZXMoITApLGk9dGhpcy5nZXRTY2FsZSgpLG49Q2koZS9pLF9uKSxvPXRoaXMudG90YWxSYW5nZSgpLHI9dC5taW4rbixhPXQubWF4K247cmV0dXJuIHRoaXMubGltaXRSYW5nZShyLGEsMCxvLm1heCxuKX0scG9pbnRzUmFuZ2U6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLG49aS5vcHRpb25zLG89bi5yZXZlcnNlLHI9bi52ZXJ0aWNhbD95cjp2cixhPWkubGluZUJveCgpLHM9aS50b3RhbFJhbmdlSW5kaWNlcyghMCksbD10aGlzLmdldFNjYWxlKCksYz1hW3IrKG8/MjoxKV0saD1lW3JdLWMsdT10W3JdLWMscD1zLm1pbitoL2wsZj1zLm1pbit1L2wsZD1PdC5taW4ocCxmKSxnPU90Lm1heChwLGYpO2lmKGctZD49b28pcmV0dXJue21pbjpkLG1heDpnfX0sdmFsdWVSYW5nZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJhbmdlKCl9fSksaGU9Y2UuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUpe3ZhciB0LGksbj10aGlzO2U9ZXx8e30sZT1YdCh7cm91bmRUb0Jhc2VVbml0OiEwfSxlLHtjYXRlZ29yaWVzOmQoZS5jYXRlZ29yaWVzKSxtaW46ZChlLm1pbiksbWF4OmQoZS5tYXgpfSksZS51c2VyU2V0QmFzZVVuaXQ9ZS51c2VyU2V0QmFzZVVuaXR8fGUuYmFzZVVuaXQsZS51c2VyU2V0QmFzZVVuaXRTdGVwPWUudXNlclNldEJhc2VVbml0U3RlcHx8ZS5iYXNlVW5pdFN0ZXAsZS5jYXRlZ29yaWVzJiZlLmNhdGVnb3JpZXMubGVuZ3RoPjA/KHQ9KGUuYmFzZVVuaXR8fFwiXCIpLnRvTG93ZXJDYXNlKCksaT10IT09amkmJiFBaSh0LENyKSxpJiYoZS5iYXNlVW5pdD1uLmRlZmF1bHRCYXNlVW5pdChlKSksdCE9PWppJiZlLmJhc2VVbml0U3RlcCE9PU5pfHxuLmF1dG9CYXNlVW5pdChlKSx0aGlzLl9ncm91cHNTdGFydD1tKGUuY2F0ZWdvcmllc1swXSwwLGUuYmFzZVVuaXQsZS53ZWVrU3RhcnREYXkpLG4uZ3JvdXBDYXRlZ29yaWVzKGUpKTplLmJhc2VVbml0PWUuYmFzZVVuaXR8fHhuLHRoaXMuX2luaXRGaWVsZHMoKSxlaS5mbi5pbml0LmNhbGwobixlKX0sb3B0aW9uczp7dHlwZTptbixsYWJlbHM6e2RhdGVGb3JtYXRzOlRyfSxhdXRvQmFzZVVuaXRTdGVwczp7bWlsbGlzZWNvbmRzOlsxLDEwLDEwMF0sc2Vjb25kczpbMSwyLDUsMTUsMzBdLG1pbnV0ZXM6WzEsMiw1LDE1LDMwXSxob3VyczpbMSwyLDNdLGRheXM6WzEsMiwzXSx3ZWVrczpbMSwyXSxtb250aHM6WzEsMiwzLDZdLHllYXJzOlsxLDIsMyw1LDEwLDI1LDUwXX0sbWF4RGF0ZUdyb3VwczoxMH0sc2hvdWxkUmVuZGVyTm90ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dC5yYW5nZSgpLG49dC5vcHRpb25zLmNhdGVnb3JpZXN8fFtdO3JldHVybiBfaShlLGkubWluKT49MCYmX2koZSxpLm1heCk8PTAmJm4ubGVuZ3RofSxwYXJzZU5vdGVWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZChlKX0sdHJhbnNsYXRlUmFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuPXRoaXMsbz1uLm9wdGlvbnMscj1vLmJhc2VVbml0LGE9by53ZWVrU3RhcnREYXkscz1uLmxpbmVCb3goKSxsPW8udmVydGljYWw/cy5oZWlnaHQoKTpzLndpZHRoKCksYz1uLnJhbmdlKCksaD1sLyhjLm1heC1jLm1pbiksdT1DaShlL2gsX24pO3JldHVybiBjLm1pbiYmYy5tYXgmJih0PXcoby5taW58fGMubWluLHUpLGk9dyhvLm1heHx8Yy5tYXgsdSksYz17bWluOm0odCwwLHIsYSksbWF4Om0oaSwwLHIsYSl9KSxjfSxzY2FsZVJhbmdlOmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcyxuPU90LmFicyhlKSxvPWkucmFuZ2UoKSxyPW8ubWluLGE9by5tYXg7aWYoby5taW4mJm8ubWF4KXtmb3IoO24tLTspbz1fKHIsYSksdD1PdC5yb3VuZCguMSpvKSxlPDA/KHI9dyhyLHQpLGE9dyhhLC10KSk6KHI9dyhyLC10KSxhPXcoYSx0KSk7bz17bWluOnIsbWF4OmF9fXJldHVybiBvfSxkZWZhdWx0QmFzZVVuaXQ6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG8scixhPWUuY2F0ZWdvcmllcyxzPVJpKGEpP2EubGVuZ3RoOjAsbD1pbztmb3IodD0wO3Q8czt0KyspaT1hW3RdLGkmJm8mJihuPWIoaSxvKSxuPjAmJihsPU90Lm1pbihsLG4pLHI9bD49dHI/X3I6bD49ZXItMyokbz9zbzpsPj1Kbz9tcjpsPj0kbz94bjpsPj1Rbz9IbjpsPj1Lbz9hbzpFbykpLG89aTtyZXR1cm4gcnx8eG59LF9jYXRlZ29yeVJhbmdlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX3JhbmdlO3JldHVybiB0fHwodD1lLl9yYW5nZT1CaShlKSksdH0sdG90YWxSYW5nZTpmdW5jdGlvbigpe3JldHVybnttaW46MCxtYXg6dGhpcy5vcHRpb25zLmNhdGVnb3JpZXMubGVuZ3RofX0scmFuZ2VJbmRpY2VzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLHQ9ZS5iYXNlVW5pdCxpPWUuYmFzZVVuaXRTdGVwfHwxLG49ZS5jYXRlZ29yaWVzLG89dGhpcy5jYXRlZ29yaWVzUmFuZ2UoKSxyPWQoZS5taW58fG8ubWluKSxhPWQoZS5tYXh8fG8ubWF4KSxzPTAsbD0wO3JldHVybiBuLmxlbmd0aCYmKHM9ayhyLG5bMF0sdCxpKSxsPWsoYSxuWzBdLHQsaSksZS5yb3VuZFRvQmFzZVVuaXQmJihzPU90LmZsb29yKHMpLGw9ZS5qdXN0aWZpZWQ/T3QuZmxvb3IobCk6T3QuY2VpbChsKSkpLHttaW46cyxtYXg6bH19LGxhYmVsc1JhbmdlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLHQ9ZS5sYWJlbHMsaT10aGlzLnJhbmdlSW5kaWNlcygpLG49T3QuZmxvb3IoaS5taW4pLG89T3QuY2VpbChpLm1heCk7cmV0dXJue21pbjpuK3Quc2tpcCxtYXg6ZS5jYXRlZ29yaWVzLmxlbmd0aD9vKyhlLmp1c3RpZmllZD8xOjApOjB9fSxjYXRlZ29yaWVzUmFuZ2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMsdD10aGlzLl9jYXRlZ29yeVJhbmdlKGUuc3JjQ2F0ZWdvcmllc3x8ZS5jYXRlZ29yaWVzKSxpPWQodC5tYXgpO3JldHVybiFlLmp1c3RpZmllZCYmUihpLHRoaXMuX3JvdW5kVG9Ub3RhbFN0ZXAoaSxlLCExKSkmJihpPXRoaXMuX3JvdW5kVG9Ub3RhbFN0ZXAoaSxlLCEwLCEwKSkse21pbjpkKHQubWluKSxtYXg6aX19LGN1cnJlbnRSYW5nZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucyx0PWUucm91bmRUb0Jhc2VVbml0IT09ITEsaT10aGlzLmNhdGVnb3JpZXNSYW5nZSgpLG49ZS5taW4sbz1lLm1heDtyZXR1cm4gbnx8KG49dD90aGlzLl9yb3VuZFRvVG90YWxTdGVwKGkubWluLGUsITEpOmkubWluKSxvfHwobz10P3RoaXMuX3JvdW5kVG9Ub3RhbFN0ZXAoaS5tYXgsZSwhZS5qdXN0aWZpZWQpOmkubWF4KSx7bWluOm4sbWF4Om99fSxkYXRlc1JhbmdlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2F0ZWdvcnlSYW5nZSh0aGlzLm9wdGlvbnMuc3JjQ2F0ZWdvcmllc3x8dGhpcy5vcHRpb25zLmNhdGVnb3JpZXMpO3JldHVybnttaW46ZChlLm1pbiksbWF4OmQoZS5tYXgpfX0scGFuOmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvPXRoaXMscj1vLm9wdGlvbnMsYT1yLmJhc2VVbml0LHM9by5saW5lQm94KCksbD1yLnZlcnRpY2FsP3MuaGVpZ2h0KCk6cy53aWR0aCgpLGM9dGhpcy5jdXJyZW50UmFuZ2UoKSxoPXRoaXMudG90YWxMaW1pdHMoKSx1PWMubWluLHA9Yy5tYXgsZj1sLyhwLXUpLG09Q2koZS9mLF9uKTtpZihpPXcodSxtKSxuPXcocCxtKSx0PXRoaXMubGltaXRSYW5nZShnKGkpLGcobiksZyhoLm1pbiksZyhoLm1heCksbSkpcmV0dXJuIHQubWluPWQodC5taW4pLHQubWF4PWQodC5tYXgpLHQuYmFzZVVuaXQ9YSx0LmJhc2VVbml0U3RlcD1yLmJhc2VVbml0U3RlcHx8MSx0LnVzZXJTZXRCYXNlVW5pdD1yLnVzZXJTZXRCYXNlVW5pdCx0LnVzZXJTZXRCYXNlVW5pdFN0ZXA9ci51c2VyU2V0QmFzZVVuaXRTdGVwLHR9LHBvaW50c1JhbmdlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9Y2UuZm4ucG9pbnRzUmFuZ2UuY2FsbCh0aGlzLGUsdCksbj10aGlzLmN1cnJlbnRSYW5nZSgpLG89dGhpcy5yYW5nZUluZGljZXMoKSxyPV8obi5tYXgsbi5taW4pLyhvLm1heC1vLm1pbiksYT10aGlzLm9wdGlvbnMscz13KG4ubWluLGkubWluKnIpLGw9dyhuLm1pbixpLm1heCpyKTtyZXR1cm57bWluOnMsbWF4OmwsYmFzZVVuaXQ6YS51c2VyU2V0QmFzZVVuaXQsYmFzZVVuaXRTdGVwOmEudXNlclNldEJhc2VVbml0U3RlcH19LHpvb21SYW5nZTpmdW5jdGlvbihlKXt2YXIgdCxpLG4sbyxyLGEscyxsLGMsaD10aGlzLm9wdGlvbnMsdT10aGlzLnRvdGFsTGltaXRzKCkscD10aGlzLmN1cnJlbnRSYW5nZSgpLGY9aC5iYXNlVW5pdCxnPWguYmFzZVVuaXRTdGVwfHwxLHg9aC53ZWVrU3RhcnREYXksdj1wLm1heCx5PXAubWluLGI9bSh5LGUqZyxmLHgpLEE9bSh2LC1lKmcsZix4KTtpZihoLnVzZXJTZXRCYXNlVW5pdD09amkpaWYodD1oLmF1dG9CYXNlVW5pdFN0ZXBzLGk9aC5tYXhEYXRlR3JvdXBzLG49RihmLENyKSxyPV8oQSxiKSxhPUlpKHRbZl0pKmkqaXJbZl0scz1fKHYseSkscjxpcltmXSYmZiE9PURvKWY9Q3Jbbi0xXSxvPUlpKHRbZl0pLGw9KHMtKGktMSkqbyppcltmXSkvMixiPXcoeSxsKSxBPXcodiwtbCk7ZWxzZSBpZihyPmEmJmYhPT1fcil7Yz0wO2Rve24rKyxmPUNyW25dLGM9MCxsPTIqaXJbZl07ZG8gbz10W2ZdW2NdLGMrKzt3aGlsZShjPHRbZl0ubGVuZ3RoJiZsKm88cyl9d2hpbGUoZiE9PV9yJiZsKm88cyk7bD0obCpvLXMpLzIsbD4wJiYoYj13KHksLWwpLEE9dyh2LGwpLGI9dyhiLFZpKEEsdS5taW4sdS5tYXgpLUEpLEE9dyhBLFZpKGIsdS5taW4sdS5tYXgpLWIpKX1pZihiPWQoVmkoYix1Lm1pbix1Lm1heCkpLEE9ZChWaShBLHUubWluLHUubWF4KSksYiYmQSYmXyhBLGIpPjApcmV0dXJue21pbjpiLG1heDpBLGJhc2VVbml0OmgudXNlclNldEJhc2VVbml0LGJhc2VVbml0U3RlcDpoLnVzZXJTZXRCYXNlVW5pdFN0ZXB9fSx0b3RhbExpbWl0czpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucyx0PXRoaXMuZGF0ZXNSYW5nZSgpLGk9dGhpcy5fcm91bmRUb1RvdGFsU3RlcChkKHQubWluKSxlLCExKSxuPXQubWF4O3JldHVybiBlLmp1c3RpZmllZHx8KG49dGhpcy5fcm91bmRUb1RvdGFsU3RlcChuLGUsITAsUihuLHRoaXMuX3JvdW5kVG9Ub3RhbFN0ZXAobixlLCExKSkpKSx7bWluOmksbWF4Om59fSxyYW5nZTpmdW5jdGlvbihlKXtlPWV8fHRoaXMub3B0aW9uczt2YXIgdD1lLmNhdGVnb3JpZXMsaT1lLmJhc2VVbml0PT09amksbj1pP0NyWzBdOmUuYmFzZVVuaXQsbz1lLmJhc2VVbml0U3RlcHx8MSxyPXtiYXNlVW5pdDpuLGJhc2VVbml0U3RlcDpvLHdlZWtTdGFydERheTplLndlZWtTdGFydERheX0sYT10aGlzLl9jYXRlZ29yeVJhbmdlKHQpLHM9ZChlLm1pbnx8YS5taW4pLGw9ZChlLm1heHx8YS5tYXgpO3JldHVybnttaW46dGhpcy5fcm91bmRUb1RvdGFsU3RlcChzLHIsITEpLG1heDp0aGlzLl9yb3VuZFRvVG90YWxTdGVwKGwsciwhMCwhMCl9fSxhdXRvQmFzZVVuaXQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LGksbixvPXRoaXMscj10aGlzLl9jYXRlZ29yeVJhbmdlKGUuY2F0ZWdvcmllcyksYT1kKGUubWlufHxyLm1pbikscz1kKGUubWF4fHxyLm1heCksbD1lLmJhc2VVbml0PT09amksYz0wLGg9bD9DcltjKytdOmUuYmFzZVVuaXQsdT1zLWEscD11L2lyW2hdLGY9cCxnPWUubWF4RGF0ZUdyb3Vwc3x8by5vcHRpb25zLm1heERhdGVHcm91cHMsbT1YdCh7fSxvLm9wdGlvbnMuYXV0b0Jhc2VVbml0U3RlcHMsZS5hdXRvQmFzZVVuaXRTdGVwcyk7IWl8fHA+PWc7KWlmKHQ9dHx8bVtoXS5zbGljZSgwKSxuPXQuc2hpZnQoKSlpPW4scD1mL2k7ZWxzZXtpZihoPT09SWkoQ3IpKXtpPU90LmNlaWwoZi9nKTticmVha31pZighbCl7cD5nJiYoaT1PdC5jZWlsKGYvZykpO2JyZWFrfWg9Q3JbYysrXXx8SWkoQ3IpLGY9dS9pcltoXSx0PW51bGx9ZS5iYXNlVW5pdFN0ZXA9aSxlLmJhc2VVbml0PWh9LF90aW1lU2NhbGU6ZnVuY3Rpb24oKXt2YXIgZSx0LGksbj10aGlzLG89bi5yYW5nZSgpLHI9bi5vcHRpb25zLGE9bi5saW5lQm94KCkscz1yLnZlcnRpY2FsLGw9cz9hLmhlaWdodCgpOmEud2lkdGgoKTtyZXR1cm4gci5qdXN0aWZpZWQmJnIuX2NvbGxhcHNlIT09ITE/KHQ9dGhpcy5fY2F0ZWdvcnlSYW5nZShyLmNhdGVnb3JpZXMpLGk9Zyh0Lm1heCksZT1kKGkpLW8ubWluKTplPW8ubWF4LW8ubWluLGwvZX0sZ3JvdXBDYXRlZ29yaWVzOmZ1bmN0aW9uKGUpe3ZhciB0LGksbj10aGlzLG89ZS5jYXRlZ29yaWVzLHI9ZChFaShvKSksYT1lLmJhc2VVbml0LHM9ZS5iYXNlVW5pdFN0ZXB8fDEsbD1uLnJhbmdlKGUpLGM9bC5tYXgsaD1bXTtmb3IodD1sLm1pbjt0PGMmJihoLnB1c2godCksaT1tKHQscyxhLGUud2Vla1N0YXJ0RGF5KSwhKGk+cil8fGUubWF4KTt0PWkpO2Uuc3JjQ2F0ZWdvcmllcz1vLGUuY2F0ZWdvcmllcz1ofSxfcm91bmRUb1RvdGFsU3RlcDpmdW5jdGlvbihlLHQsaSxuKXt2YXIgbyxyLGEscyxsO3JldHVybiB0PXR8fHRoaXMub3B0aW9ucyxvPXQuYmFzZVVuaXQscj10LmJhc2VVbml0U3RlcHx8MSxhPXRoaXMuX2dyb3Vwc1N0YXJ0LGE/KHM9ayhlLGEsbyxyKSxsPWk/T3QuY2VpbChzKTpPdC5mbG9vcihzKSxuJiZsKyssbShhLGwqcixvLHQud2Vla1N0YXJ0RGF5KSk6bShlLGk/cjowLG8sdC53ZWVrU3RhcnREYXkpfSxjcmVhdGVBeGlzTGFiZWw6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuLG89dGhpcy5vcHRpb25zLHI9by5kYXRhSXRlbXM/by5kYXRhSXRlbXNbZV06bnVsbCxhPW8uY2F0ZWdvcmllc1tlXSxzPW8uYmFzZVVuaXQsbD0hMCxjPXQuZGF0ZUZvcm1hdHNbc107aWYoby5qdXN0aWZpZWQ/KGk9dihhLHMsby53ZWVrU3RhcnREYXkpLGw9UihpLGEpKTpvLnJvdW5kVG9CYXNlVW5pdHx8KGw9IVIodGhpcy5yYW5nZSgpLm1heCxhKSksbCYmKHQuZm9ybWF0PXQuZm9ybWF0fHxjLG49dGhpcy5heGlzTGFiZWxUZXh0KGEscix0KSkpcmV0dXJuIG5ldyB0aShhLG4sZSxyLHQpfSxjYXRlZ29yeUluZGV4OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10Lm9wdGlvbnMsbj1pLmNhdGVnb3JpZXMsbz0tMTtyZXR1cm4gbi5sZW5ndGgmJihvPU90LmZsb29yKGsoZChlKSxuWzBdLGkuYmFzZVVuaXQsaS5iYXNlVW5pdFN0ZXB8fDEpKSksb30sZ2V0U2xvdDpmdW5jdGlvbihlLHQsaSl7dmFyIG49dGhpcztyZXR1cm4gdHlwZW9mIGU9PT12byYmKGU9bi5jYXRlZ29yeUluZGV4KGUpKSx0eXBlb2YgdD09PXZvJiYodD1uLmNhdGVnb3J5SW5kZXgodCkpLGNlLmZuLmdldFNsb3QuY2FsbChuLGUsdCxpKX0sdmFsdWVSYW5nZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucyx0PXRoaXMuX2NhdGVnb3J5UmFuZ2UoZS5zcmNDYXRlZ29yaWVzfHxlLmNhdGVnb3JpZXMpO3JldHVybnttaW46ZCh0Lm1pbiksbWF4OmQodC5tYXgpfX19KSx1ZT1laS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0LGkpe3ZhciBuPXRoaXM7aT1pfHx7fSxYdChpLHttaW46ZChpLm1pbiksbWF4OmQoaS5tYXgpLGF4aXNDcm9zc2luZ1ZhbHVlOmQoaS5heGlzQ3Jvc3NpbmdWYWx1ZXN8fGkuYXhpc0Nyb3NzaW5nVmFsdWUpfSksdGhpcy5zZXJpZXNNaW49ZChlKSx0aGlzLnNlcmllc01heD1kKHQpLGk9bi5hcHBseURlZmF1bHRzKHRoaXMuc2VyaWVzTWluLHRoaXMuc2VyaWVzTWF4LGkpLGVpLmZuLmluaXQuY2FsbChuLGkpfSxvcHRpb25zOnt0eXBlOm1uLG1ham9yR3JpZExpbmVzOnt2aXNpYmxlOiEwLHdpZHRoOjEsY29sb3I6Wml9LGxhYmVsczp7ZGF0ZUZvcm1hdHM6VHJ9fSxhcHBseURlZmF1bHRzOmZ1bmN0aW9uKGUsaSxuKXt2YXIgbz10aGlzLHI9bi5taW58fGUsYT1uLm1heHx8aSxzPW4uYmFzZVVuaXR8fChhJiZyP28udGltZVVuaXRzKGIoYSxyKSk6SG4pLGw9aXJbc10sYz12KGcociktMSxzKXx8ZChhKSxoPXkoZyhhKSsxLHMpLHU9bi5tYWpvclVuaXQ/bi5tYWpvclVuaXQ6dCxwPXV8fEp0LmNlaWwoSnQuYXV0b01ham9yVW5pdChjLmdldFRpbWUoKSxoLmdldFRpbWUoKSksbCkvbCxmPUEoYyxoLHMpLHg9SnQuY2VpbChmLHApLF89eC1mLHc9T3QuZmxvb3IoXy8yKSxrPV8tdztyZXR1cm4gbi5iYXNlVW5pdHx8ZGVsZXRlIG4uYmFzZVVuaXQsbi5iYXNlVW5pdD1uLmJhc2VVbml0fHxzLG4ubWluPW4ubWlufHxtKGMsLXcscyksbi5tYXg9bi5tYXh8fG0oaCxrLHMpLG4ubWlub3JVbml0PW4ubWlub3JVbml0fHxwLzUsbi5tYWpvclVuaXQ9cCx0aGlzLnRvdGFsTWluPWcodihnKGUpLTEscykpLHRoaXMudG90YWxNYXg9Zyh5KGcoaSkrMSxzKSksbn0scmFuZ2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnM7cmV0dXJue21pbjplLm1pbixtYXg6ZS5tYXh9fSxnZXREaXZpc2lvbnM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5vcHRpb25zO3JldHVybiBPdC5mbG9vcihBKHQubWluLHQubWF4LHQuYmFzZVVuaXQpL2UrMSl9LGdldFRpY2tQb3NpdGlvbnM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG89dGhpcy5vcHRpb25zLHI9by52ZXJ0aWNhbCxhPW8ucmV2ZXJzZSxzPXRoaXMubGluZUJveCgpLGw9KHI/LTE6MSkqKGE/LTE6MSksYz0xPT09bD8xOjIsaD1zWyhyP3lyOnZyKStjXSx1PXRoaXMuZ2V0RGl2aXNpb25zKGUpLHA9XyhvLm1heCxvLm1pbiksZj1yP3MuaGVpZ2h0KCk6cy53aWR0aCgpLGQ9Zi9wLGc9W2hdO2Zvcih0PTE7dDx1O3QrKylpPW0oby5taW4sdCplLG8uYmFzZVVuaXQpLG49aCtfKGksby5taW4pKmQqbCxnLnB1c2goQ2kobix1bikpO3JldHVybiBnfSxnZXRNYWpvclRpY2tQb3NpdGlvbnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLmdldFRpY2tQb3NpdGlvbnMoZS5vcHRpb25zLm1ham9yVW5pdCl9LGdldE1pbm9yVGlja1Bvc2l0aW9uczpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuZ2V0VGlja1Bvc2l0aW9ucyhlLm9wdGlvbnMubWlub3JVbml0KX0sZ2V0U2xvdDpmdW5jdGlvbihlLHQsaSl7cmV0dXJuIGhpLmZuLmdldFNsb3QuY2FsbCh0aGlzLGQoZSksZCh0KSxpKX0sZ2V0VmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9aGkuZm4uZ2V0VmFsdWUuY2FsbCh0aGlzLGUpO3JldHVybiBudWxsIT09dD9kKHQpOm51bGx9LGxhYmVsc0NvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RGl2aXNpb25zKHRoaXMub3B0aW9ucy5tYWpvclVuaXQpfSxjcmVhdGVBeGlzTGFiZWw6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuLG89dGhpcy5vcHRpb25zLHI9ZSpvLm1ham9yVW5pdCxhPW8ubWluO3JldHVybiByPjAmJihhPW0oYSxyLG8uYmFzZVVuaXQpKSxpPXQuZGF0ZUZvcm1hdHNbby5iYXNlVW5pdF0sdC5mb3JtYXQ9dC5mb3JtYXR8fGksbj10aGlzLmF4aXNMYWJlbFRleHQoYSxudWxsLHQpLG5ldyB0aShhLG4sZSxudWxsLHQpfSx0aW1lVW5pdHM6ZnVuY3Rpb24oZSl7dmFyIHQ9SG47cmV0dXJuIGU+PXRyP3Q9X3I6ZT49ZXI/dD1zbzplPj1Kbz90PW1yOmU+PSRvJiYodD14biksdH0sdHJhbnNsYXRlUmFuZ2U6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLG49aS5vcHRpb25zLG89bi5iYXNlVW5pdCxyPW4ud2Vla1N0YXJ0RGF5LGE9aS5saW5lQm94KCkscz1uLnZlcnRpY2FsP2EuaGVpZ2h0KCk6YS53aWR0aCgpLGw9aS5yYW5nZSgpLGM9cy9fKGwubWF4LGwubWluKSxoPUNpKGUvYyxfbiksdT13KG4ubWluLGgpLHA9dyhuLm1heCxoKTtyZXR1cm4gdHx8KHU9bSh1LDAsbyxyKSxwPW0ocCwwLG8scikpLHttaW46dSxtYXg6cH19LHNjYWxlUmFuZ2U6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LGksbj10aGlzLG89bi5vcHRpb25zLHI9T3QuYWJzKGUpLGE9by5taW4scz1vLm1heDtyLS07KXQ9XyhhLHMpLGk9T3Qucm91bmQoLjEqdCksZTwwPyhhPXcoYSxpKSxzPXcocywtaSkpOihhPXcoYSwtaSkscz13KHMsaSkpO3JldHVybnttaW46YSxtYXg6c319LHNob3VsZFJlbmRlck5vdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5yYW5nZSgpO3JldHVybiBfaShlLHQubWluKT49MCYmX2koZSx0Lm1heCk8PTB9LHBhbjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRyYW5zbGF0ZVJhbmdlKGUsITApLGk9dGhpcy5saW1pdFJhbmdlKGcodC5taW4pLGcodC5tYXgpLHRoaXMudG90YWxNaW4sdGhpcy50b3RhbE1heCk7aWYoaSlyZXR1cm57bWluOmQoaS5taW4pLG1heDpkKGkubWF4KX19LHBvaW50c1JhbmdlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5nZXRWYWx1ZShlKSxuPXRoaXMuZ2V0VmFsdWUodCksbz1PdC5taW4oaSxuKSxyPU90Lm1heChpLG4pO3JldHVybnttaW46ZChvKSxtYXg6ZChyKX19LHpvb21SYW5nZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnNjYWxlUmFuZ2UoZSksaT1kKFZpKGcodC5taW4pLHRoaXMudG90YWxNaW4sdGhpcy50b3RhbE1heCkpLG49ZChWaShnKHQubWF4KSx0aGlzLnRvdGFsTWluLHRoaXMudG90YWxNYXgpKTtyZXR1cm57bWluOmksbWF4Om59fX0pLHBlPW9pLmV4dGVuZCh7b3B0aW9uczp7dmVydGljYWw6ITEsZ2FwOjAsc3BhY2luZzowfSxyZWZsb3c6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuPXRoaXMsbz1uLm9wdGlvbnMscj1vLnZlcnRpY2FsLGE9cj95cjp2cixzPW4uY2hpbGRyZW4sbD1vLmdhcCxjPW8uc3BhY2luZyxoPXMubGVuZ3RoLHU9aCtsK2MqKGgtMSkscD0ocj9lLmhlaWdodCgpOmUud2lkdGgoKSkvdSxmPWVbYSsxXStwKihsLzIpO2ZvcihpPTA7aTxoO2krKyl0PShzW2ldLmJveHx8ZSkuY2xvbmUoKSx0W2ErMV09Zix0W2ErMl09ZitwLHNbaV0ucmVmbG93KHQpLGk8aC0xJiYoZis9cCpjKSxmKz1wfX0pLGZlPW9pLmV4dGVuZCh7b3B0aW9uczp7dmVydGljYWw6ITB9LHJlZmxvdzpmdW5jdGlvbihlKXt2YXIgdCxpLG4sbz10aGlzLm9wdGlvbnMscj1vLnZlcnRpY2FsLGE9cj92cjp5cixzPXRoaXMuY2hpbGRyZW4sbD10aGlzLmJveD1uZXcgaWksYz1zLmxlbmd0aDtmb3IodD0wO3Q8Yzt0KyspaT1zW3RdLGkudmlzaWJsZSE9PSExJiYobj1pLmJveC5jbG9uZSgpLG4uc25hcFRvKGUsYSksMD09PXQmJihsPXRoaXMuYm94PW4uY2xvbmUoKSksaS5yZWZsb3cobiksbC53cmFwKG4pKX19KSxkZT17Y2xpY2s6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50cmlnZ2VyKEZvLHRoaXMuZXZlbnRBcmdzKHQpKX0saG92ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50cmlnZ2VyKFVvLHRoaXMuZXZlbnRBcmdzKHQpKX0sZXZlbnRBcmdzOmZ1bmN0aW9uKGUpe3JldHVybnt2YWx1ZTp0aGlzLnZhbHVlLHBlcmNlbnRhZ2U6dGhpcy5wZXJjZW50YWdlLHN0YWNrVmFsdWU6dGhpcy5zdGFja1ZhbHVlLGNhdGVnb3J5OnRoaXMuY2F0ZWdvcnksc2VyaWVzOnRoaXMuc2VyaWVzLGRhdGFJdGVtOnRoaXMuZGF0YUl0ZW0scnVubmluZ1RvdGFsOnRoaXMucnVubmluZ1RvdGFsLHRvdGFsOnRoaXMudG90YWwsZWxlbWVudDpiaShlKSxvcmlnaW5hbEV2ZW50OmUscG9pbnQ6dGhpc319fSxnZT17Y3JlYXRlTm90ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLm9wdGlvbnMubm90ZXMsaT1lLm5vdGVUZXh0fHx0LmxhYmVsLnRleHQ7dC52aXNpYmxlIT09ITEmJlJpKGkpJiZudWxsIT09aSYmKGUubm90ZT1uZXcgbGkoZS52YWx1ZSxpLGUuZGF0YUl0ZW0sZS5jYXRlZ29yeSxlLnNlcmllcyxlLm9wdGlvbnMubm90ZXMpLGUuYXBwZW5kKGUubm90ZSkpfX0sbWU9b2kuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcztvaS5mbi5pbml0LmNhbGwoaSksaS5vcHRpb25zPXQsaS5jb2xvcj10LmNvbG9yfHx4cixpLmFib3ZlQXhpcz1NaShpLm9wdGlvbnMuYWJvdmVBeGlzLCEwKSxpLnZhbHVlPWV9LGRlZmF1bHRzOntib3JkZXI6e3dpZHRoOjF9LHZlcnRpY2FsOiEwLG92ZXJsYXk6e2dyYWRpZW50Ok9ufSxsYWJlbHM6e3Zpc2libGU6ITEsZm9ybWF0OlwiezB9XCJ9LG9wYWNpdHk6MSxub3Rlczp7bGFiZWw6e319fSxyZW5kZXI6ZnVuY3Rpb24oKXt0aGlzLl9yZW5kZXJlZHx8KHRoaXMuX3JlbmRlcmVkPSEwLHRoaXMuY3JlYXRlTGFiZWwoKSx0aGlzLmNyZWF0ZU5vdGUoKSx0aGlzLmVycm9yQmFyJiZ0aGlzLmFwcGVuZCh0aGlzLmVycm9yQmFyKSl9LGNyZWF0ZUxhYmVsOmZ1bmN0aW9uKCl7dmFyIGUsdCxpPXRoaXMub3B0aW9ucyxuPWkubGFiZWxzO24udmlzaWJsZSYmKG4udGVtcGxhdGU/KHQ9S3Qobi50ZW1wbGF0ZSksZT10KHtkYXRhSXRlbTp0aGlzLmRhdGFJdGVtLGNhdGVnb3J5OnRoaXMuY2F0ZWdvcnksdmFsdWU6dGhpcy52YWx1ZSxwZXJjZW50YWdlOnRoaXMucGVyY2VudGFnZSxzdGFja1ZhbHVlOnRoaXMuc3RhY2tWYWx1ZSxydW5uaW5nVG90YWw6dGhpcy5ydW5uaW5nVG90YWwsdG90YWw6dGhpcy50b3RhbCxzZXJpZXM6dGhpcy5zZXJpZXN9KSk6ZT10aGlzLmZvcm1hdFZhbHVlKG4uZm9ybWF0KSx0aGlzLmxhYmVsPW5ldyByZShlLFh0KHt2ZXJ0aWNhbDppLnZlcnRpY2FsfSxpLmxhYmVscykpLHRoaXMuYXBwZW5kKHRoaXMubGFiZWwpKX0sZm9ybWF0VmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3duZXIuZm9ybWF0UG9pbnRWYWx1ZSh0aGlzLGUpfSxyZWZsb3c6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuO2lmKHRoaXMucmVuZGVyKCksdD10aGlzLGk9dC5sYWJlbCx0LmJveD1lLGkmJihpLm9wdGlvbnMuYWJvdmVBeGlzPXQuYWJvdmVBeGlzLGkucmVmbG93KGUpKSx0Lm5vdGUmJnQubm90ZS5yZWZsb3coZSksdC5lcnJvckJhcnMpZm9yKG49MDtuPHQuZXJyb3JCYXJzLmxlbmd0aDtuKyspdC5lcnJvckJhcnNbbl0ucmVmbG93KGUpfSxjcmVhdGVWaXN1YWw6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMsaT10LmJveCxuPXQub3B0aW9ucyxvPW4udmlzdWFsO3QudmlzaWJsZSE9PSExJiYob2kuZm4uY3JlYXRlVmlzdWFsLmNhbGwodCksbz8oZT10aGlzLnJlY3RWaXN1YWw9byh7Y2F0ZWdvcnk6dC5jYXRlZ29yeSxkYXRhSXRlbTp0LmRhdGFJdGVtLHZhbHVlOnQudmFsdWUsc2VuZGVyOnQuZ2V0Q2hhcnQoKSxzZXJpZXM6dC5zZXJpZXMscGVyY2VudGFnZTp0LnBlcmNlbnRhZ2Usc3RhY2tWYWx1ZTp0aGlzLnN0YWNrVmFsdWUscnVubmluZ1RvdGFsOnQucnVubmluZ1RvdGFsLHRvdGFsOnQudG90YWwscmVjdDppLnRvUmVjdCgpLGNyZWF0ZVZpc3VhbDpmdW5jdGlvbigpe3ZhciBlPW5ldyBPaS5Hcm91cDtyZXR1cm4gdC5jcmVhdGVSZWN0KGUpLGV9LG9wdGlvbnM6bn0pLGUmJnQudmlzdWFsLmFwcGVuZChlKSk6aS53aWR0aCgpPjAmJmkuaGVpZ2h0KCk+MCYmdC5jcmVhdGVSZWN0KHQudmlzdWFsKSl9LGNyZWF0ZVJlY3Q6ZnVuY3Rpb24oZSl7dmFyIGksbixvLHIsYT10aGlzLm9wdGlvbnMscz1hLmJvcmRlcixsPVJpKHMub3BhY2l0eSk/cy5vcGFjaXR5OmEub3BhY2l0eSxjPXRoaXMuYm94LnRvUmVjdCgpO2Muc2l6ZS53aWR0aD1NYXRoLnJvdW5kKGMuc2l6ZS53aWR0aCksaT10aGlzLnJlY3RWaXN1YWw9T2kuUGF0aC5mcm9tUmVjdChjLHtmaWxsOntjb2xvcjp0aGlzLmNvbG9yLG9wYWNpdHk6YS5vcGFjaXR5fSxzdHJva2U6e2NvbG9yOnRoaXMuZ2V0Qm9yZGVyQ29sb3IoKSx3aWR0aDpzLndpZHRoLG9wYWNpdHk6bCxkYXNoVHlwZTpzLmRhc2hUeXBlfX0pLG49dGhpcy5ib3gud2lkdGgoKSxvPXRoaXMuYm94LmhlaWdodCgpLHI9YS52ZXJ0aWNhbD9uOm8scj5ZaSYmKHZpKGkpLChuPDF8fG88MSkmJihpLm9wdGlvbnMuc3Ryb2tlLmxpbmVKb2luPVwicm91bmRcIikpLGUuYXBwZW5kKGkpLFkoYSkmJmUuYXBwZW5kKHRoaXMuY3JlYXRlR3JhZGllbnRPdmVybGF5KGkse2Jhc2VDb2xvcjp0aGlzLmNvbG9yfSxYdCh7ZW5kOmEudmVydGljYWw/dDpbMCwxXX0sYS5vdmVybGF5KSkpfSxjcmVhdGVIaWdobGlnaHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9T2kuUGF0aC5mcm9tUmVjdCh0aGlzLmJveC50b1JlY3QoKSxlKTtyZXR1cm4gdmkodCl9LGhpZ2hsaWdodFZpc3VhbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlY3RWaXN1YWx9LGhpZ2hsaWdodFZpc3VhbEFyZ3M6ZnVuY3Rpb24oKXtyZXR1cm57b3B0aW9uczp0aGlzLm9wdGlvbnMscmVjdDp0aGlzLmJveC50b1JlY3QoKSx2aXN1YWw6dGhpcy5yZWN0VmlzdWFsfX0sZ2V0Qm9yZGVyQ29sb3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5vcHRpb25zLGk9ZS5jb2xvcixuPXQuYm9yZGVyLG89bi5jb2xvcixyPW4uX2JyaWdodG5lc3N8fFhpO3JldHVybiBSaShvKXx8KG89bmV3IHJpKGkpLmJyaWdodG5lc3MocikudG9IZXgoKSksb30sdG9vbHRpcEFuY2hvcjpmdW5jdGlvbihlLHQpe3ZhciBpLG4sbyxyLGE9dGhpcyxzPWEub3B0aW9ucyxsPWEuYm94LGM9cy52ZXJ0aWNhbCxoPWEuYWJvdmVBeGlzLHU9YS5vd25lci5wYW5lLmNsaXBCb3goKXx8bDtyZXR1cm4gYz8oaT1PdC5taW4obC54Mix1LngyKSthcixuPWg/T3QubWF4KGwueTEsdS55MSk6T3QubWluKGwueTIsdS55MiktdCk6KG89T3QubWF4KGwueDEsdS54MSkscj1PdC5taW4obC54Mix1LngyKSxzLmlzU3RhY2tlZD8oaT1oP3ItZTpvLG49T3QubWF4KGwueTEsdS55MSktdC1hcik6KGk9aD9yK2FyOm8tZS1hcixuPU90Lm1heChsLnkxLHUueTEpKSksbmV3IHVpKGksbil9LG92ZXJsYXBzQm94OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmJveC5vdmVybGFwcyhlKX19KSxYdChtZS5mbixkZSksWHQobWUuZm4sZ2UpLHhlPU9pLkFuaW1hdGlvbi5leHRlbmQoe29wdGlvbnM6e2R1cmF0aW9uOk5uXG59LHNldHVwOmZ1bmN0aW9uKCl7dmFyIGUsdCxpPXRoaXMuZWxlbWVudCxuPXRoaXMub3B0aW9ucyxvPWkuYmJveCgpO28/KHRoaXMub3JpZ2luPW4ub3JpZ2luLGU9bi52ZXJ0aWNhbD95cjp2cix0PXRoaXMuZnJvbVNjYWxlPW5ldyB6aS5Qb2ludCgxLDEpLHRbZV09SG8saS50cmFuc2Zvcm0oemkudHJhbnNmb3JtKCkuc2NhbGUodC54LHQueSkpKTp0aGlzLmFib3J0KCl9LHN0ZXA6ZnVuY3Rpb24oZSl7dmFyIHQ9a2kodGhpcy5mcm9tU2NhbGUueCwxLGUpLGk9a2kodGhpcy5mcm9tU2NhbGUueSwxLGUpO3RoaXMuZWxlbWVudC50cmFuc2Zvcm0oemkudHJhbnNmb3JtKCkuc2NhbGUodCxpLHRoaXMub3JpZ2luKSl9LGFib3J0OmZ1bmN0aW9uKCl7T2kuQW5pbWF0aW9uLmZuLmFib3J0LmNhbGwodGhpcyksdGhpcy5lbGVtZW50LnRyYW5zZm9ybShudWxsKX19KSxPaS5BbmltYXRpb25GYWN0b3J5LmN1cnJlbnQucmVnaXN0ZXIocWkseGUpLHZlPU9pLkFuaW1hdGlvbi5leHRlbmQoe29wdGlvbnM6e2R1cmF0aW9uOjIwMCxlYXNpbmc6JG59LHNldHVwOmZ1bmN0aW9uKCl7dGhpcy5mYWRlVG89dGhpcy5lbGVtZW50Lm9wYWNpdHkoKSx0aGlzLmVsZW1lbnQub3BhY2l0eSgwKX0sc3RlcDpmdW5jdGlvbihlKXt0aGlzLmVsZW1lbnQub3BhY2l0eShlKnRoaXMuZmFkZVRvKX19KSxPaS5BbmltYXRpb25GYWN0b3J5LmN1cnJlbnQucmVnaXN0ZXIoRW4sdmUpLHllPWZ1bmN0aW9uKGUsdCxpKXt2YXIgbj10aGlzO24uaW5pdEdsb2JhbFJhbmdlcyhlLHQsaSl9LHllLnByb3RvdHlwZT15ZS5mbj17cGVyY2VudFJlZ2V4Oi9wZXJjZW50KD86XFx3KilcXCgoXFxkKylcXCkvLHN0YW5kYXJkRGV2aWF0aW9uUmVnZXg6UmVnRXhwKFwiXlwiK3FvK1wiKD86XFxcXCgoXFxcXGQrKD86XFxcXC5cXFxcZCspPylcXFxcKSk/JFwiKSxpbml0R2xvYmFsUmFuZ2VzOmZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvLHIsYSxzLGw9dGhpcyxjPXQuZGF0YSxoPWwuc3RhbmRhcmREZXZpYXRpb25SZWdleC5leGVjKGUpO2g/KGwudmFsdWVHZXR0ZXI9bC5jcmVhdGVWYWx1ZUdldHRlcih0LGkpLG49bC5nZXRBdmVyYWdlKGMpLG89bC5nZXRTdGFuZGFyZERldmlhdGlvbihjLG4sITEpLHI9aFsxXT9wYXJzZUZsb2F0KGhbMV0pOjEsYT17bG93Om4udmFsdWUtbypyLGhpZ2g6bi52YWx1ZStvKnJ9LGwuZ2xvYmFsUmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gYX0pOmUuaW5kZXhPZiYmZS5pbmRleE9mKEdvKT49MCYmKGwudmFsdWVHZXR0ZXI9bC5jcmVhdGVWYWx1ZUdldHRlcih0LGkpLHM9bC5nZXRTdGFuZGFyZEVycm9yKGMsbC5nZXRBdmVyYWdlKGMpKSxsLmdsb2JhbFJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybntsb3c6ZS1zLGhpZ2g6ZStzfX0pfSxjcmVhdGVWYWx1ZUdldHRlcjpmdW5jdGlvbihlLHQpe3ZhciBpLG4sbyxyPWUuZGF0YSxhPW9lLmN1cnJlbnQscz1hLnZhbHVlRmllbGRzKGUpLGw9UmkoclswXSk/clswXTp7fTtyZXR1cm4gRHQobCk/KGk9dD9GKHQscyk6MCxvPVd0KFwiW1wiK2krXCJdXCIpKTpCKGwpP289V3QoKTp0eXBlb2YgbD09PXZvJiYobj1hLnNvdXJjZUZpZWxkcyhlLHMpLG89V3QobltGKHQscyldKSksb30sZ2V0RXJyb3JSYW5nZTpmdW5jdGlvbihlLHQpe3ZhciBpLG4sbyxyLGE9dGhpcztpZihSaSh0KSl7aWYoYS5nbG9iYWxSYW5nZSlyZXR1cm4gYS5nbG9iYWxSYW5nZShlKTtpZihEdCh0KSlpPWUtdFswXSxuPWUrdFsxXTtlbHNlIGlmKEIobz1wYXJzZUZsb2F0KHQpKSlpPWUtbyxuPWUrbztlbHNle2lmKCEobz1hLnBlcmNlbnRSZWdleC5leGVjKHQpKSl0aHJvdyBFcnJvcihcIkludmFsaWQgRXJyb3JCYXIgdmFsdWU6IFwiK3QpO3I9ZSoocGFyc2VGbG9hdChvWzFdKS8xMDApLGk9ZS1PdC5hYnMociksbj1lK090LmFicyhyKX1yZXR1cm57bG93OmksaGlnaDpufX19LGdldFN0YW5kYXJkRXJyb3I6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5nZXRTdGFuZGFyZERldmlhdGlvbihlLHQsITApL090LnNxcnQodC5jb3VudCl9LGdldFN0YW5kYXJkRGV2aWF0aW9uOmZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvLHI9MCxhPWUubGVuZ3RoLHM9aT90LmNvdW50LTE6dC5jb3VudDtmb3Iobz0wO288YTtvKyspbj10aGlzLnZhbHVlR2V0dGVyKGVbb10pLEIobikmJihyKz1PdC5wb3cobi10LnZhbHVlLDIpKTtyZXR1cm4gT3Quc3FydChyL3MpfSxnZXRBdmVyYWdlOmZ1bmN0aW9uKGUpe3ZhciB0LGksbj0wLG89MCxyPWUubGVuZ3RoO2ZvcihpPTA7aTxyO2krKyl0PXRoaXMudmFsdWVHZXR0ZXIoZVtpXSksQih0KSYmKG4rPXQsbysrKTtyZXR1cm57dmFsdWU6bi9vLGNvdW50Om99fX0sX2U9b2kuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcztvaS5mbi5pbml0LmNhbGwoaSx0KSxpLnBsb3RBcmVhPWUsaS5jYXRlZ29yeUF4aXM9ZS5zZXJpZXNDYXRlZ29yeUF4aXModC5zZXJpZXNbMF0pLGkudmFsdWVBeGlzUmFuZ2VzPXt9LGkucG9pbnRzPVtdLGkuY2F0ZWdvcnlQb2ludHM9W10saS5zZXJpZXNQb2ludHM9W10saS5zZXJpZXNPcHRpb25zPVtdLGkuX2V2YWxTZXJpZXM9W10saS5yZW5kZXIoKX0sb3B0aW9uczp7c2VyaWVzOltdLGludmVydEF4ZXM6ITEsaXNTdGFja2VkOiExLGNsaXA6ITB9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS50cmF2ZXJzZURhdGFQb2ludHMoSHQoZS5hZGRWYWx1ZSxlKSl9LHBvaW50T3B0aW9uczpmdW5jdGlvbihlLHQpe3ZhciBpLG49dGhpcy5zZXJpZXNPcHRpb25zW3RdO3JldHVybiBufHwoaT10aGlzLnBvaW50VHlwZSgpLmZuLmRlZmF1bHRzLHRoaXMuc2VyaWVzT3B0aW9uc1t0XT1uPVh0KHt9LGkse3ZlcnRpY2FsOiF0aGlzLm9wdGlvbnMuaW52ZXJ0QXhlc30sZSkpLG59LHBsb3RWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxpLG4sbyxyLGEscyxsO2lmKCFlKXJldHVybiAwO2lmKHRoaXMub3B0aW9ucy5pc1N0YWNrZWQxMDAmJkIoZS52YWx1ZSkpe2Zvcih0PWUuY2F0ZWdvcnlJeCxpPXRoaXMuY2F0ZWdvcnlQb2ludHNbdF0sbj0wLG89W10scj0wO3I8aS5sZW5ndGg7cisrKWlmKGE9aVtyXSl7aWYocz1lLnNlcmllcy5zdGFjayxsPWEuc2VyaWVzLnN0YWNrLHMmJmwmJnMuZ3JvdXAhPT1sLmdyb3VwKWNvbnRpbnVlO0IoYS52YWx1ZSkmJihuKz1PdC5hYnMoYS52YWx1ZSksby5wdXNoKE90LmFicyhhLnZhbHVlKSkpfWlmKG4+MClyZXR1cm4gZS52YWx1ZS9ufXJldHVybiBlLnZhbHVlfSxwbG90UmFuZ2U6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuLG8scixhLHMsbCxjLGgsdSxwLGYsZD1lLmNhdGVnb3J5SXgsZz10aGlzLmNhdGVnb3J5UG9pbnRzW2RdO2lmKHRoaXMub3B0aW9ucy5pc1N0YWNrZWQpe2Zvcih0PXR8fDAsaT10aGlzLnBsb3RWYWx1ZShlKSxuPWk+PTAsbz10LHI9ITEsYT0wO2E8Zy5sZW5ndGgmJihzPWdbYV0sZSE9PXMpO2ErKyl7aWYobD1lLnNlcmllcy5zdGFjayxjPXMuc2VyaWVzLnN0YWNrLGwmJmMpe2lmKHR5cGVvZiBsPT09WW8mJmwhPT1jKWNvbnRpbnVlO2lmKGwuZ3JvdXAmJmwuZ3JvdXAhPT1jLmdyb3VwKWNvbnRpbnVlfWg9dGhpcy5wbG90VmFsdWUocyksKGg+PTAmJm58fGg8MCYmIW4pJiYobys9aCxpKz1oLHI9ITAsdGhpcy5vcHRpb25zLmlzU3RhY2tlZDEwMCYmKGk9T3QubWluKGksMSkpKX1yZXR1cm4gciYmKG8tPXQpLFtvLGldfXJldHVybiB1PWUuc2VyaWVzLHA9dGhpcy5zZXJpZXNWYWx1ZUF4aXModSksZj10aGlzLmNhdGVnb3J5QXhpc0Nyb3NzaW5nVmFsdWUocCksW2YsZS52YWx1ZXx8Zl19LHN0YWNrTGltaXRzOmZ1bmN0aW9uKGUsdCl7dmFyIGksbixvLHIsYSxzPWlvLGw9cm87Zm9yKGk9MDtpPHRoaXMuY2F0ZWdvcnlQb2ludHMubGVuZ3RoO2krKylpZihuPXRoaXMuY2F0ZWdvcnlQb2ludHNbaV0pZm9yKG89MDtvPG4ubGVuZ3RoO28rKylyPW5bb10sciYmKHIuc2VyaWVzLnN0YWNrIT09dCYmci5zZXJpZXMuYXhpcyE9PWV8fChhPXRoaXMucGxvdFJhbmdlKHIsMClbMV0sUmkoYSkmJmlzRmluaXRlKGEpJiYobD1PdC5tYXgobCxhKSxzPU90Lm1pbihzLGEpKSkpO3JldHVybnttaW46cyxtYXg6bH19LHVwZGF0ZVN0YWNrUmFuZ2U6ZnVuY3Rpb24oKXt2YXIgZSx0LGksbixvLHIsYT10aGlzLHM9YS5vcHRpb25zLnNlcmllcyxsPWEub3B0aW9ucy5pc1N0YWNrZWQsYz17fTtpZihsKWZvcih0PTA7dDxzLmxlbmd0aDt0KyspaT1zW3RdLG49aS5heGlzLG89bitpLnN0YWNrLGU9Y1tvXSxlfHwoZT1hLnN0YWNrTGltaXRzKG4saS5zdGFjaykscj1hLmVycm9yVG90YWxzLHImJihyLm5lZ2F0aXZlLmxlbmd0aCYmKGUubWluPU90Lm1pbihlLm1pbixMaShyLm5lZ2F0aXZlKSkpLHIucG9zaXRpdmUubGVuZ3RoJiYoZS5tYXg9T3QubWF4KGUubWF4LEVpKHIucG9zaXRpdmUpKSkpLGUubWluIT09aW98fGUubWF4IT09cm8/Y1tvXT1lOmU9bnVsbCksZSYmKGEudmFsdWVBeGlzUmFuZ2VzW25dPWUpfSxhZGRFcnJvckJhcjpmdW5jdGlvbihlLHQsaSl7dmFyIG4sbz10aGlzLHI9ZS52YWx1ZSxhPWUuc2VyaWVzLHM9ZS5zZXJpZXNJeCxsPWUub3B0aW9ucy5lcnJvckJhcnMsYz10LmZpZWxkc1tUbl0saD10LmZpZWxkc1tSbl07QihjKSYmQihoKT9uPXtsb3c6YyxoaWdoOmh9OmwmJlJpKGwudmFsdWUpJiYoby5zZXJpZXNFcnJvclJhbmdlcz1vLnNlcmllc0Vycm9yUmFuZ2VzfHxbXSxvLnNlcmllc0Vycm9yUmFuZ2VzW3NdPW8uc2VyaWVzRXJyb3JSYW5nZXNbc118fG5ldyB5ZShsLnZhbHVlLGEsaHIpLG49by5zZXJpZXNFcnJvclJhbmdlc1tzXS5nZXRFcnJvclJhbmdlKHIsbC52YWx1ZSkpLG4mJihlLmxvdz1uLmxvdyxlLmhpZ2g9bi5oaWdoLG8uYWRkUG9pbnRFcnJvckJhcihlLGkpKX0sYWRkUG9pbnRFcnJvckJhcjpmdW5jdGlvbihlLHQpe3ZhciBpLG4sbyxyPXRoaXMsYT1lLnNlcmllcyxzPWUubG93LGw9ZS5oaWdoLGM9IXIub3B0aW9ucy5pbnZlcnRBeGVzLGg9ZS5vcHRpb25zLmVycm9yQmFycztyLm9wdGlvbnMuaXNTdGFja2VkPyhuPXIuc3RhY2tlZEVycm9yUmFuZ2UoZSx0KSxzPW4ubG93LGw9bi5oaWdoKToobz17Y2F0ZWdvcnlJeDp0LHNlcmllczphfSxyLnVwZGF0ZVJhbmdlKHt2YWx1ZTpzfSxvKSxyLnVwZGF0ZVJhbmdlKHt2YWx1ZTpsfSxvKSksaT1uZXcgVGUocyxsLGMscixhLGgpLGUuZXJyb3JCYXJzPVtpXSxlLmFwcGVuZChpKX0sc3RhY2tlZEVycm9yUmFuZ2U6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLG49aS5wbG90UmFuZ2UoZSwwKVsxXS1lLnZhbHVlLG89ZS5sb3crbixyPWUuaGlnaCtuO3JldHVybiBpLmVycm9yVG90YWxzPWkuZXJyb3JUb3RhbHN8fHtwb3NpdGl2ZTpbXSxuZWdhdGl2ZTpbXX0sbzwwJiYoaS5lcnJvclRvdGFscy5uZWdhdGl2ZVt0XT1PdC5taW4oaS5lcnJvclRvdGFscy5uZWdhdGl2ZVt0XXx8MCxvKSkscj4wJiYoaS5lcnJvclRvdGFscy5wb3NpdGl2ZVt0XT1PdC5tYXgoaS5lcnJvclRvdGFscy5wb3NpdGl2ZVt0XXx8MCxyKSkse2xvdzpvLGhpZ2g6cn19LGFkZFZhbHVlOmZ1bmN0aW9uKHQsaSl7dmFyIG4sbyxyPXRoaXMsYT1pLmNhdGVnb3J5SXgscz1pLnNlcmllcyxsPWkuc2VyaWVzSXgsYz1yLmNhdGVnb3J5UG9pbnRzW2FdO2N8fChyLmNhdGVnb3J5UG9pbnRzW2FdPWM9W10pLG49ci5zZXJpZXNQb2ludHNbbF0sbnx8KHIuc2VyaWVzUG9pbnRzW2xdPW49W10pLG89ci5jcmVhdGVQb2ludCh0LGkpLG8mJihlLmV4dGVuZChvLGkpLG8ub3duZXI9cixvLmRhdGFJdGVtPXMuZGF0YVthXSxvLm5vdGVUZXh0PXQuZmllbGRzLm5vdGVUZXh0LHIuYWRkRXJyb3JCYXIobyx0LGEpKSxyLnBvaW50cy5wdXNoKG8pLG4ucHVzaChvKSxjLnB1c2gobyksci51cGRhdGVSYW5nZSh0LnZhbHVlRmllbGRzLGkpfSxldmFsUG9pbnRPcHRpb25zOmZ1bmN0aW9uKGUsdCxpLG4sbyxyKXt2YXIgYT17ZGVmYXVsdHM6by5fZGVmYXVsdHMsZXhjbHVkZWQ6W1wiZGF0YVwiLFwiYWdncmVnYXRlXCIsXCJfZXZlbnRzXCIsXCJ0b29sdGlwXCIsXCJ0ZW1wbGF0ZVwiLFwidmlzdWFsXCIsXCJ0b2dnbGVcIixcIl9vdXRPZlJhbmdlTWluUG9pbnRcIixcIl9vdXRPZlJhbmdlTWF4UG9pbnRcIl19LHM9dGhpcy5fZXZhbFNlcmllc1tyXTtyZXR1cm4gUmkocyl8fCh0aGlzLl9ldmFsU2VyaWVzW3JdPXM9TShlLHt9LGEsITApKSxzJiYoZT1YdCh7fSxlKSxNKGUse3ZhbHVlOnQsY2F0ZWdvcnk6aSxpbmRleDpuLHNlcmllczpvLGRhdGFJdGVtOm8uZGF0YVtuXX0sYSkpLGV9LHVwZGF0ZVJhbmdlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcyxuPXQuc2VyaWVzLmF4aXMsbz1lLnZhbHVlLHI9aS52YWx1ZUF4aXNSYW5nZXNbbl07aXNGaW5pdGUobykmJm51bGwhPT1vJiYocj1pLnZhbHVlQXhpc1Jhbmdlc1tuXT1yfHx7bWluOmlvLG1heDpyb30sci5taW49T3QubWluKHIubWluLG8pLHIubWF4PU90Lm1heChyLm1heCxvKSl9LHNlcmllc1ZhbHVlQXhpczpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnBsb3RBcmVhLGk9ZS5heGlzLG49aT90Lm5hbWVkVmFsdWVBeGVzW2ldOnQudmFsdWVBeGlzO2lmKCFuKXRocm93IEVycm9yKFwiVW5hYmxlIHRvIGxvY2F0ZSB2YWx1ZSBheGlzIHdpdGggbmFtZSBcIitpKTtyZXR1cm4gbn0scmVmbG93OmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvPXRoaXMscj0wLGE9by5jYXRlZ29yeVNsb3RzPVtdLHM9by5wb2ludHMsbD1vLmNhdGVnb3J5QXhpcztvLnRyYXZlcnNlRGF0YVBvaW50cyhmdW5jdGlvbihlLGMpe3ZhciBoLHUscCxmLGQ9Yy5jYXRlZ29yeUl4LGc9Yy5zZXJpZXM7dD1vLnBvaW50VmFsdWUoZSksaT1vLnNlcmllc1ZhbHVlQXhpcyhnKSxuPXNbcisrXSxoPWFbZF0saHx8KGFbZF09aD1vLmNhdGVnb3J5U2xvdChsLGQsaSkpLG4mJih1PW8ucGxvdFJhbmdlKG4saS5zdGFydFZhbHVlKCkpLHA9aS5nZXRTbG90KHVbMF0sdVsxXSwhby5vcHRpb25zLmNsaXApLHA/KGY9by5wb2ludFNsb3QoaCxwKSxuLmFib3ZlQXhpcz1vLmFib3ZlQXhpcyhuLGkpLG4uc3RhY2tWYWx1ZT11WzFdLG8ub3B0aW9ucy5pc1N0YWNrZWQxMDAmJihuLnBlcmNlbnRhZ2U9by5wbG90VmFsdWUobikpLG8ucmVmbG93UG9pbnQobixmKSk6bi52aXNpYmxlPSExKX0pLG8ucmVmbG93Q2F0ZWdvcmllcyhhKSxvLmJveD1lfSxhYm92ZUF4aXM6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLmNhdGVnb3J5QXhpc0Nyb3NzaW5nVmFsdWUodCksbj1lLnZhbHVlO3JldHVybiB0Lm9wdGlvbnMucmV2ZXJzZT9uPGk6bj49aX0sY2F0ZWdvcnlBeGlzQ3Jvc3NpbmdWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmNhdGVnb3J5QXhpcyxpPWUub3B0aW9ucyxuPVtdLmNvbmNhdChpLmF4aXNDcm9zc2luZ1ZhbHVlc3x8aS5heGlzQ3Jvc3NpbmdWYWx1ZSk7cmV0dXJuIG5bdC5heGlzSW5kZXh8fDBdfHwwfSxyZWZsb3dQb2ludDpmdW5jdGlvbihlLHQpe2UucmVmbG93KHQpfSxyZWZsb3dDYXRlZ29yaWVzOmZ1bmN0aW9uKCl7fSxwb2ludFNsb3Q6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLG49aS5vcHRpb25zLG89bi5pbnZlcnRBeGVzLHI9bz90OmUsYT1vP2U6dDtyZXR1cm4gbmV3IGlpKHIueDEsYS55MSxyLngyLGEueTIpfSxjYXRlZ29yeVNsb3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5nZXRTbG90KHQpfSx0cmF2ZXJzZURhdGFQb2ludHM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG8scixhPXRoaXMscz1hLm9wdGlvbnMsbD1zLnNlcmllcyxjPWEuY2F0ZWdvcnlBeGlzLm9wdGlvbnMuY2F0ZWdvcmllc3x8W10sdT1oKGwpLHA9bC5sZW5ndGg7Zm9yKGk9MDtpPHA7aSsrKXRoaXMuX291dE9mUmFuZ2VDYWxsYmFjayhsW2ldLFwiX291dE9mUmFuZ2VNaW5Qb2ludFwiLGksZSk7Zm9yKHQ9MDt0PHU7dCsrKWZvcihpPTA7aTxwO2krKylyPWxbaV0sbz1jW3RdLG49dGhpcy5fYmluZFBvaW50KHIsaSx0KSxlKG4se2NhdGVnb3J5Om8sY2F0ZWdvcnlJeDp0LHNlcmllczpyLHNlcmllc0l4Oml9KTtmb3IoaT0wO2k8cDtpKyspdGhpcy5fb3V0T2ZSYW5nZUNhbGxiYWNrKGxbaV0sXCJfb3V0T2ZSYW5nZU1heFBvaW50XCIsaSxlKX0sX291dE9mUmFuZ2VDYWxsYmFjazpmdW5jdGlvbihlLHQsaSxuKXt2YXIgbyxyLGE9ZVt0XTthJiYobz1hLmNhdGVnb3J5SXgscj10aGlzLl9iaW5kUG9pbnQoZSxpLG8sYS5pdGVtKSxuKHIse2NhdGVnb3J5OmEuY2F0ZWdvcnksY2F0ZWdvcnlJeDpvLHNlcmllczplLHNlcmllc0l4Oml9KSl9LF9iaW5kUG9pbnQ6ZnVuY3Rpb24oZSx0LGksbil7dmFyIG8scjtyZXR1cm4gdGhpcy5fYmluZENhY2hlfHwodGhpcy5fYmluZENhY2hlPVtdKSxvPXRoaXMuX2JpbmRDYWNoZVt0XSxvfHwobz10aGlzLl9iaW5kQ2FjaGVbdF09W10pLHI9b1tpXSxyfHwocj1vW2ldPW9lLmN1cnJlbnQuYmluZFBvaW50KGUsaSxuKSkscn0sZm9ybWF0UG9pbnRWYWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT09ZS52YWx1ZT9cIlwiOnlpKHQsZS52YWx1ZSl9LHBvaW50VmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVGaWVsZHMudmFsdWV9fSksYmU9X2UuZXh0ZW5kKHtvcHRpb25zOnthbmltYXRpb246e3R5cGU6cWl9fSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO19lLmZuLnJlbmRlci5hcHBseShlKSxlLnVwZGF0ZVN0YWNrUmFuZ2UoKX0scG9pbnRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIG1lfSxjbHVzdGVyVHlwZTpmdW5jdGlvbigpe3JldHVybiBwZX0sc3RhY2tUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIGZlfSxzdGFja0xpbWl0czpmdW5jdGlvbihlLHQpe3ZhciBpPV9lLmZuLnN0YWNrTGltaXRzLmNhbGwodGhpcyxlLHQpO3JldHVybiBpfSxjcmVhdGVQb2ludDpmdW5jdGlvbihlLHQpe3ZhciBpLG4sbyxyLGE9dGhpcyxzPXQuY2F0ZWdvcnlJeCxsPXQuY2F0ZWdvcnksYz10LnNlcmllcyxoPXQuc2VyaWVzSXgsdT1hLnBvaW50VmFsdWUoZSkscD1hLm9wdGlvbnMsZj1hLmNoaWxkcmVuLGQ9YS5vcHRpb25zLmlzU3RhY2tlZCxnPWEucG9pbnRUeXBlKCksbT1hLmNsdXN0ZXJUeXBlKCkseD10aGlzLnBvaW50T3B0aW9ucyhjLGgpLHY9eC5sYWJlbHM7cmV0dXJuIGQmJnYucG9zaXRpb249PV9vJiYodi5wb3NpdGlvbj1HbikseC5pc1N0YWNrZWQ9ZCxvPWUuZmllbGRzLmNvbG9yfHxjLmNvbG9yLHU8MCYmeC5uZWdhdGl2ZUNvbG9yJiYobz14Lm5lZ2F0aXZlQ29sb3IpLHg9YS5ldmFsUG9pbnRPcHRpb25zKHgsdSxsLHMsYyxoKSxOdC5pc0Z1bmN0aW9uKGMuY29sb3IpJiYobz14LmNvbG9yKSxpPW5ldyBnKHUseCksaS5jb2xvcj1vLG49ZltzXSxufHwobj1uZXcgbSh7dmVydGljYWw6cC5pbnZlcnRBeGVzLGdhcDpwLmdhcCxzcGFjaW5nOnAuc3BhY2luZ30pLGEuYXBwZW5kKG4pKSxkPyhyPWEuZ2V0U3RhY2tXcmFwKGMsbiksci5hcHBlbmQoaSkpOm4uYXBwZW5kKGkpLGl9LGdldFN0YWNrV3JhcDpmdW5jdGlvbihlLHQpe3ZhciBpLG4sbyxyPWUuc3RhY2ssYT1yP3IuZ3JvdXB8fHI6cixzPXQuY2hpbGRyZW47aWYodHlwZW9mIGE9PT1Zbyl7Zm9yKG49MDtuPHMubGVuZ3RoO24rKylpZihzW25dLl9zdGFja0dyb3VwPT09YSl7aT1zW25dO2JyZWFrfX1lbHNlIGk9c1swXTtyZXR1cm4gaXx8KG89dGhpcy5zdGFja1R5cGUoKSxpPW5ldyBvKHt2ZXJ0aWNhbDohdGhpcy5vcHRpb25zLmludmVydEF4ZXN9KSxpLl9zdGFja0dyb3VwPWEsdC5hcHBlbmQoaSkpLGl9LGNhdGVnb3J5U2xvdDpmdW5jdGlvbihlLHQsaSl7dmFyIG4sbyxyPXRoaXMsYT1yLm9wdGlvbnMscz1lLmdldFNsb3QodCksbD1pLnN0YXJ0VmFsdWUoKTtyZXR1cm4gYS5pc1N0YWNrZWQmJihvPWkuZ2V0U2xvdChsLGwsITApLG49YS5pbnZlcnRBeGVzP3ZyOnlyLHNbbisxXT1zW24rMl09b1tuKzFdKSxzfSxyZWZsb3dDYXRlZ29yaWVzOmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcyxuPWkuY2hpbGRyZW4sbz1uLmxlbmd0aDtmb3IodD0wO3Q8bzt0Kyspblt0XS5yZWZsb3coZVt0XSl9LGNyZWF0ZUFuaW1hdGlvbjpmdW5jdGlvbigpe3RoaXMuX3NldEFuaW1hdGlvbk9wdGlvbnMoKSxvaS5mbi5jcmVhdGVBbmltYXRpb24uY2FsbCh0aGlzKSxYKHRoaXMub3B0aW9ucy5zZXJpZXMpJiZ0aGlzLl9zZXRDaGlsZHJlbkFuaW1hdGlvbigpfSxfc2V0Q2hpbGRyZW5BbmltYXRpb246ZnVuY3Rpb24oKXt2YXIgZSx0LGksbj10aGlzLnBvaW50cztmb3IoaT0wO2k8bi5sZW5ndGg7aSsrKWU9bltpXSx0PWUudmlzdWFsLHQmJlJpKHQub3B0aW9ucy56SW5kZXgpJiYoZS5vcHRpb25zLmFuaW1hdGlvbj10aGlzLm9wdGlvbnMuYW5pbWF0aW9uLGUuY3JlYXRlQW5pbWF0aW9uKCkpfSxfc2V0QW5pbWF0aW9uT3B0aW9uczpmdW5jdGlvbigpe3ZhciBlLHQsaT10aGlzLm9wdGlvbnMsbj1pLmFuaW1hdGlvbnx8e307dGhpcy5vcHRpb25zLmlzU3RhY2tlZD8odD10aGlzLnNlcmllc1ZhbHVlQXhpcyhpLnNlcmllc1swXSksZT10LmdldFNsb3QodC5zdGFydFZhbHVlKCkpKTplPXRoaXMuY2F0ZWdvcnlBeGlzLmdldFNsb3QoMCksbi5vcmlnaW49bmV3IHppLlBvaW50KGUueDEsZS55MSksbi52ZXJ0aWNhbD0haS5pbnZlcnRBeGVzfX0pLHdlPW1lLmV4dGVuZCh7ZGVmYXVsdHM6e2xhYmVsczp7Zm9ybWF0OlwiezB9IC0gezF9XCJ9LHRvb2x0aXA6e2Zvcm1hdDpcInsxfVwifX0sY3JlYXRlTGFiZWw6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMubGFiZWxzLHQ9WHQoe30sZSxlLmZyb20pLGk9WHQoe30sZSxlLnRvKTt0LnZpc2libGUmJih0aGlzLmxhYmVsRnJvbT10aGlzLl9jcmVhdGVMYWJlbCh0KSx0aGlzLmFwcGVuZCh0aGlzLmxhYmVsRnJvbSkpLGkudmlzaWJsZSYmKHRoaXMubGFiZWxUbz10aGlzLl9jcmVhdGVMYWJlbChpKSx0aGlzLmFwcGVuZCh0aGlzLmxhYmVsVG8pKX0sX2NyZWF0ZUxhYmVsOmZ1bmN0aW9uKGUpe3ZhciB0LGk7cmV0dXJuIGUudGVtcGxhdGU/KGk9S3QoZS50ZW1wbGF0ZSksdD1pKHtkYXRhSXRlbTp0aGlzLmRhdGFJdGVtLGNhdGVnb3J5OnRoaXMuY2F0ZWdvcnksdmFsdWU6dGhpcy52YWx1ZSxwZXJjZW50YWdlOnRoaXMucGVyY2VudGFnZSxydW5uaW5nVG90YWw6dGhpcy5ydW5uaW5nVG90YWwsdG90YWw6dGhpcy50b3RhbCxzZXJpZXM6dGhpcy5zZXJpZXN9KSk6dD10aGlzLmZvcm1hdFZhbHVlKGUuZm9ybWF0KSxuZXcgcmUodCxYdCh7dmVydGljYWw6dGhpcy5vcHRpb25zLnZlcnRpY2FsfSxlKSl9LHJlZmxvdzpmdW5jdGlvbihlKXt0aGlzLnJlbmRlcigpO3ZhciB0PXRoaXMsaT10LmxhYmVsRnJvbSxuPXQubGFiZWxUbzt0LmJveD1lLGkmJihpLm9wdGlvbnMuYWJvdmVBeGlzPXQudmFsdWUuZnJvbT50LnZhbHVlLnRvLGkucmVmbG93KGUpKSxuJiYobi5vcHRpb25zLmFib3ZlQXhpcz10LnZhbHVlLnRvPnQudmFsdWUuZnJvbSxuLnJlZmxvdyhlKSksdC5ub3RlJiZ0Lm5vdGUucmVmbG93KGUpfX0pLEFlPWJlLmV4dGVuZCh7cG9pbnRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIHdlfSxwb2ludFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlRmllbGRzfSxmb3JtYXRQb2ludFZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PT1lLnZhbHVlLmZyb20mJm51bGw9PT1lLnZhbHVlLnRvP1wiXCI6eWkodCxlLnZhbHVlLmZyb20sZS52YWx1ZS50byl9LHBsb3RMaW1pdHM6X2UuZm4ucGxvdExpbWl0cyxwbG90UmFuZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/W2UudmFsdWUuZnJvbSxlLnZhbHVlLnRvXTowfSx1cGRhdGVSYW5nZTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMsbj10LnNlcmllcy5heGlzLG89ZS5mcm9tLHI9ZS50byxhPWkudmFsdWVBeGlzUmFuZ2VzW25dO251bGwhPT1lJiZCKG8pJiZCKHIpJiYoYT1pLnZhbHVlQXhpc1Jhbmdlc1tuXT1hfHx7bWluOmlvLG1heDpyb30sYS5taW49T3QubWluKGEubWluLG8pLGEubWF4PU90Lm1heChhLm1heCxvKSxhLm1pbj1PdC5taW4oYS5taW4sciksYS5tYXg9T3QubWF4KGEubWF4LHIpKX0sYWJvdmVBeGlzOmZ1bmN0aW9uKGUpe3ZhciB0PWUudmFsdWU7cmV0dXJuIHQuZnJvbTx0LnRvfX0pLGtlPV9lLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXM7aS53cmFwRGF0YSh0KSxfZS5mbi5pbml0LmNhbGwoaSxlLHQpfSxvcHRpb25zOnthbmltYXRpb246e3R5cGU6cWl9fSx3cmFwRGF0YTpmdW5jdGlvbihlKXt2YXIgdCxpLG4sbz1lLnNlcmllcztmb3IodD0wO3Q8by5sZW5ndGg7dCsrKW49b1t0XSxpPW4uZGF0YSxpJiYhRHQoaVswXSkmJnR5cGVvZiBpWzBdIT12byYmKG4uZGF0YT1baV0pfSxyZWZsb3dDYXRlZ29yaWVzOmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcyxuPWkuY2hpbGRyZW4sbz1uLmxlbmd0aDtmb3IodD0wO3Q8bzt0Kyspblt0XS5yZWZsb3coZVt0XSl9LHBsb3RSYW5nZTpmdW5jdGlvbihlKXt2YXIgdD1lLnNlcmllcyxpPXRoaXMuc2VyaWVzVmFsdWVBeGlzKHQpLG49dGhpcy5jYXRlZ29yeUF4aXNDcm9zc2luZ1ZhbHVlKGkpO3JldHVybltuLGUudmFsdWUuY3VycmVudHx8bl19LGNyZWF0ZVBvaW50OmZ1bmN0aW9uKGUsdCl7dmFyIGksbixvPXRoaXMscj10LmNhdGVnb3J5SXgsYT10LmNhdGVnb3J5LHM9dC5zZXJpZXMsbD10LnNlcmllc0l4LGM9ZS52YWx1ZUZpZWxkcyxoPW8ub3B0aW9ucyx1PW8uY2hpbGRyZW4scD1YdCh7dmVydGljYWw6IWguaW52ZXJ0QXhlcyxvdmVybGF5OnMub3ZlcmxheSxjYXRlZ29yeUl4OnIsaW52ZXJ0QXhlczpoLmludmVydEF4ZXN9LHMpLGY9ZS5maWVsZHMuY29sb3J8fHMuY29sb3I7cmV0dXJuIHA9by5ldmFsUG9pbnRPcHRpb25zKHAsYyxhLHIscyxsKSxOdC5pc0Z1bmN0aW9uKHMuY29sb3IpJiYoZj1wLmNvbG9yKSxpPW5ldyBTZShjLHApLGkuY29sb3I9ZixuPXVbcl0sbnx8KG49bmV3IHBlKHt2ZXJ0aWNhbDpoLmludmVydEF4ZXMsZ2FwOmguZ2FwLHNwYWNpbmc6aC5zcGFjaW5nfSksby5hcHBlbmQobikpLG4uYXBwZW5kKGkpLGl9LHVwZGF0ZVJhbmdlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcyxuPXQuc2VyaWVzLmF4aXMsbz1lLmN1cnJlbnQscj1lLnRhcmdldCxhPWkudmFsdWVBeGlzUmFuZ2VzW25dO1JpKG8pJiYhaXNOYU4obykmJlJpKHImJiFpc05hTihyKSkmJihhPWkudmFsdWVBeGlzUmFuZ2VzW25dPWF8fHttaW46aW8sbWF4OnJvfSxhLm1pbj1PdC5taW4uYXBwbHkoT3QsW2EubWluLG8scl0pLGEubWF4PU90Lm1heC5hcHBseShPdCxbYS5tYXgsbyxyXSkpfSxmb3JtYXRQb2ludFZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHlpKHQsZS52YWx1ZS5jdXJyZW50LGUudmFsdWUudGFyZ2V0KX0scG9pbnRWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZUZpZWxkcy5jdXJyZW50fSxhYm92ZUF4aXM6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS52YWx1ZS5jdXJyZW50O3JldHVybiB0PjB9LGNyZWF0ZUFuaW1hdGlvbjpmdW5jdGlvbigpe3ZhciBlLHQsaT10aGlzLnBvaW50cztmb3IodGhpcy5fc2V0QW5pbWF0aW9uT3B0aW9ucygpLHQ9MDt0PGkubGVuZ3RoO3QrKyllPWlbdF0sZS5vcHRpb25zLmFuaW1hdGlvbj10aGlzLm9wdGlvbnMuYW5pbWF0aW9uLGUuY3JlYXRlQW5pbWF0aW9uKCl9LF9zZXRBbmltYXRpb25PcHRpb25zOmJlLmZuLl9zZXRBbmltYXRpb25PcHRpb25zfSksU2U9b2kuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcztvaS5mbi5pbml0LmNhbGwoaSx0KSxpLmFib3ZlQXhpcz1pLm9wdGlvbnMuYWJvdmVBeGlzLGkuY29sb3I9dC5jb2xvcnx8eHIsaS52YWx1ZT1lfSxvcHRpb25zOntib3JkZXI6e3dpZHRoOjF9LHZlcnRpY2FsOiExLG9wYWNpdHk6MSx0YXJnZXQ6e3NoYXBlOlwiXCIsYm9yZGVyOnt3aWR0aDowLGNvbG9yOlwiZ3JlZW5cIn0sbGluZTp7d2lkdGg6Mn19LHRvb2x0aXA6e2Zvcm1hdDpcIkN1cnJlbnQ6IHswfTwvYnI+VGFyZ2V0OiB7MX1cIn19LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLm9wdGlvbnM7ZS5fcmVuZGVyZWR8fChlLl9yZW5kZXJlZD0hMCxSaShlLnZhbHVlLnRhcmdldCkmJihlLnRhcmdldD1uZXcgQ2Uoe3R5cGU6dC50YXJnZXQuc2hhcGUsYmFja2dyb3VuZDp0LnRhcmdldC5jb2xvcnx8ZS5jb2xvcixvcGFjaXR5OnQub3BhY2l0eSx6SW5kZXg6dC56SW5kZXgsYm9yZGVyOnQudGFyZ2V0LmJvcmRlcix2QWxpZ246b3IsYWxpZ246Um99KSxlLnRhcmdldC52YWx1ZT10aGlzLnZhbHVlLGUudGFyZ2V0LmRhdGFJdGVtPXRoaXMuZGF0YUl0ZW0sZS50YXJnZXQuc2VyaWVzPXRoaXMuc2VyaWVzLGUuYXBwZW5kKGUudGFyZ2V0KSksZS5jcmVhdGVOb3RlKCkpfSxyZWZsb3c6ZnVuY3Rpb24oZSl7dGhpcy5yZW5kZXIoKTt2YXIgdCxpPXRoaXMsbj1pLm9wdGlvbnMsbz1pLm93bmVyLHI9aS50YXJnZXQsYT1uLmludmVydEF4ZXMscz1vLnNlcmllc1ZhbHVlQXhpcyhpLm9wdGlvbnMpLGw9by5jYXRlZ29yeVNsb3Qoby5jYXRlZ29yeUF4aXMsbi5jYXRlZ29yeUl4LHMpLGM9cy5nZXRTbG90KGkudmFsdWUudGFyZ2V0KSxoPWE/YzpsLHU9YT9sOmM7ciYmKHQ9bmV3IGlpKGgueDEsdS55MSxoLngyLHUueTIpLHIub3B0aW9ucy5oZWlnaHQ9YT90LmhlaWdodCgpOm4udGFyZ2V0LmxpbmUud2lkdGgsci5vcHRpb25zLndpZHRoPWE/bi50YXJnZXQubGluZS53aWR0aDp0LndpZHRoKCksci5yZWZsb3codCkpLGkubm90ZSYmaS5ub3RlLnJlZmxvdyhlKSxpLmJveD1lfSxjcmVhdGVWaXN1YWw6ZnVuY3Rpb24oKXt2YXIgZSx0O29pLmZuLmNyZWF0ZVZpc3VhbC5jYWxsKHRoaXMpLGU9dGhpcy5vcHRpb25zLHQ9T2kuUGF0aC5mcm9tUmVjdCh0aGlzLmJveC50b1JlY3QoKSx7ZmlsbDp7Y29sb3I6dGhpcy5jb2xvcixvcGFjaXR5OmUub3BhY2l0eX0sc3Ryb2tlOm51bGx9KSxlLmJvcmRlci53aWR0aD4wJiZ0Lm9wdGlvbnMuc2V0KFwic3Ryb2tlXCIse2NvbG9yOmUuYm9yZGVyLmNvbG9yfHx0aGlzLmNvbG9yLHdpZHRoOmUuYm9yZGVyLndpZHRoLGRhc2hUeXBlOmUuYm9yZGVyLmRhc2hUeXBlLG9wYWNpdHk6TWkoZS5ib3JkZXIub3BhY2l0eSxlLm9wYWNpdHkpfSksdGhpcy5ib2R5VmlzdWFsPXQsdmkodCksdGhpcy52aXN1YWwuYXBwZW5kKHQpfSxjcmVhdGVBbmltYXRpb246ZnVuY3Rpb24oKXt0aGlzLmJvZHlWaXN1YWwmJih0aGlzLmFuaW1hdGlvbj1PaS5BbmltYXRpb24uY3JlYXRlKHRoaXMuYm9keVZpc3VhbCx0aGlzLm9wdGlvbnMuYW5pbWF0aW9uKSl9LHRvb2x0aXBBbmNob3I6bWUuZm4udG9vbHRpcEFuY2hvcixjcmVhdGVIaWdobGlnaHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE9pLlBhdGguZnJvbVJlY3QodGhpcy5ib3gudG9SZWN0KCksZSl9LGhpZ2hsaWdodFZpc3VhbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJvZHlWaXN1YWx9LGhpZ2hsaWdodFZpc3VhbEFyZ3M6ZnVuY3Rpb24oKXtyZXR1cm57cmVjdDp0aGlzLmJveC50b1JlY3QoKSx2aXN1YWw6dGhpcy5ib2R5VmlzdWFsLG9wdGlvbnM6dGhpcy5vcHRpb25zfX0sZm9ybWF0VmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdC5vd25lci5mb3JtYXRQb2ludFZhbHVlKHQsZSl9fSksWHQoU2UuZm4sZGUpLFh0KFNlLmZuLGdlKSxDZT1kaS5leHRlbmQoKSxYdChDZS5mbixkZSksUGU9b2kuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCxpLG4sbyxyKXt2YXIgYT10aGlzO2EubG93PWUsYS5oaWdoPXQsYS5pc1ZlcnRpY2FsPWksYS5jaGFydD1uLGEuc2VyaWVzPW8sb2kuZm4uaW5pdC5jYWxsKGEscil9LG9wdGlvbnM6e2FuaW1hdGlvbjp7dHlwZTpFbixkZWxheTpObn0sZW5kQ2FwczohMCxsaW5lOnt3aWR0aDoxfSx6SW5kZXg6MX0sZ2V0QXhpczpmdW5jdGlvbigpe30scmVmbG93OmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcyxuPWkub3B0aW9ucy5lbmRDYXBzLG89aS5pc1ZlcnRpY2FsLHI9aS5nZXRBeGlzKCksYT1yLmdldFNsb3QoaS5sb3csaS5oaWdoKSxzPWUuY2VudGVyKCksbD1pLmdldENhcHNXaWR0aChlLG8pLGM9bz9zLng6cy55LGg9Yy1sLHU9YytsO28/KHQ9W3VpKHMueCxhLnkxKSx1aShzLngsYS55MildLG4mJnQucHVzaCh1aShoLGEueTEpLHVpKHUsYS55MSksdWkoaCxhLnkyKSx1aSh1LGEueTIpKSxpLmJveD1paShoLGEueTEsdSxhLnkyKSk6KHQ9W3VpKGEueDEscy55KSx1aShhLngyLHMueSldLG4mJnQucHVzaCh1aShhLngxLGgpLHVpKGEueDEsdSksdWkoYS54MixoKSx1aShhLngyLHUpKSxpLmJveD1paShhLngxLGgsYS54Mix1KSksaS5saW5lUG9pbnRzPXR9LGdldENhcHNXaWR0aDpmdW5jdGlvbihlLHQpe3ZhciBpPXQ/ZS53aWR0aCgpOmUuaGVpZ2h0KCksbj1PdC5taW4oT3QuZmxvb3IoaS8yKSx3bil8fHduO3JldHVybiBufSxjcmVhdGVWaXN1YWw6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5vcHRpb25zLGk9dC52aXN1YWw7aT9lLnZpc3VhbD1pKHtsb3c6ZS5sb3csaGlnaDplLmhpZ2gscmVjdDplLmJveC50b1JlY3QoKSxzZW5kZXI6ZS5nZXRDaGFydCgpLG9wdGlvbnM6e2VuZENhcHM6dC5lbmRDYXBzLGNvbG9yOnQuY29sb3IsbGluZTp0LmxpbmV9LGNyZWF0ZVZpc3VhbDpmdW5jdGlvbigpe2UuY3JlYXRlRGVmYXVsdFZpc3VhbCgpO3ZhciB0PWUudmlzdWFsO3JldHVybiBkZWxldGUgZS52aXN1YWwsdH19KTplLmNyZWF0ZURlZmF1bHRWaXN1YWwoKX0sY3JlYXRlRGVmYXVsdFZpc3VhbDpmdW5jdGlvbigpe3ZhciBlLHQsaT10aGlzLG49aS5vcHRpb25zLG89e3N0cm9rZTp7Y29sb3I6bi5jb2xvcix3aWR0aDpuLmxpbmUud2lkdGgsZGFzaFR5cGU6bi5saW5lLmRhc2hUeXBlfX0scj1pLmxpbmVQb2ludHM7Zm9yKG9pLmZuLmNyZWF0ZVZpc3VhbC5jYWxsKHRoaXMpLGU9MDtlPHIubGVuZ3RoO2UrPTIpdD1uZXcgT2kuUGF0aChvKS5tb3ZlVG8ocltlXS54LHJbZV0ueSkubGluZVRvKHJbZSsxXS54LHJbZSsxXS55KSx0aGlzLnZpc3VhbC5hcHBlbmQodCl9fSksVGU9UGUuZXh0ZW5kKHtnZXRBeGlzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuY2hhcnQsaT1lLnNlcmllcyxuPXQuc2VyaWVzVmFsdWVBeGlzKGkpO3JldHVybiBufX0pLFJlPVBlLmV4dGVuZCh7Z2V0QXhpczpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLmNoYXJ0LGk9ZS5zZXJpZXMsbj10LnNlcmllc0F4ZXMoaSksbz1lLmlzVmVydGljYWw/bi55Om4ueDtyZXR1cm4gb319KSxJZT1vaS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzO29pLmZuLmluaXQuY2FsbChpKSxpLnZhbHVlPWUsaS5vcHRpb25zPXQsaS5hYm92ZUF4aXM9TWkoaS5vcHRpb25zLmFib3ZlQXhpcywhMCksaS50b29sdGlwVHJhY2tpbmc9ITB9LGRlZmF1bHRzOnt2ZXJ0aWNhbDohMCxtYXJrZXJzOnt2aXNpYmxlOiEwLGJhY2tncm91bmQ6eHIsc2l6ZTpRbix0eXBlOmFuLGJvcmRlcjp7d2lkdGg6Mn0sb3BhY2l0eToxfSxsYWJlbHM6e3Zpc2libGU6ITEscG9zaXRpb246VWksbWFyZ2luOndpKDMpLHBhZGRpbmc6d2koNCksYW5pbWF0aW9uOnt0eXBlOkVuLGRlbGF5Ok5ufX0sbm90ZXM6e2xhYmVsOnt9fSxoaWdobGlnaHQ6e21hcmtlcnM6e2JvcmRlcjp7fX19fSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMsaT10Lm9wdGlvbnMsbj1pLm1hcmtlcnMsbz1pLmxhYmVscyxyPXQudmFsdWU7dC5fcmVuZGVyZWR8fCh0Ll9yZW5kZXJlZD0hMCxuLnZpc2libGUmJm4uc2l6ZSYmKHQubWFya2VyPXQuY3JlYXRlTWFya2VyKCksdC5hcHBlbmQodC5tYXJrZXIpKSxvLnZpc2libGUmJihvLnRlbXBsYXRlPyhlPUt0KG8udGVtcGxhdGUpLHI9ZSh7ZGF0YUl0ZW06dC5kYXRhSXRlbSxjYXRlZ29yeTp0LmNhdGVnb3J5LHZhbHVlOnQudmFsdWUscGVyY2VudGFnZTp0LnBlcmNlbnRhZ2Usc3RhY2tWYWx1ZTp0aGlzLnN0YWNrVmFsdWUsc2VyaWVzOnQuc2VyaWVzfSkpOm8uZm9ybWF0JiYocj10LmZvcm1hdFZhbHVlKG8uZm9ybWF0KSksdC5sYWJlbD1uZXcgbWkocixYdCh7YWxpZ246b24sdkFsaWduOm9uLG1hcmdpbjp7bGVmdDo1LHJpZ2h0OjV9LHpJbmRleDpNaShvLnpJbmRleCx0aGlzLnNlcmllcy56SW5kZXgpfSxvKSksdC5hcHBlbmQodC5sYWJlbCkpLHQuY3JlYXRlTm90ZSgpLHQuZXJyb3JCYXImJnQuYXBwZW5kKHQuZXJyb3JCYXIpKX0sbWFya2VyQm9yZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLm1hcmtlcnMsdD1lLmJhY2tncm91bmQsaT1YdCh7Y29sb3I6dGhpcy5jb2xvcn0sZS5ib3JkZXIpO3JldHVybiBSaShpLmNvbG9yKXx8KGkuY29sb3I9bmV3IHJpKHQpLmJyaWdodG5lc3MoWGkpLnRvSGV4KCkpLGl9LGNyZWF0ZVZpc3VhbDpGdCxjcmVhdGVNYXJrZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMubWFya2Vycyx0PW5ldyBkaSh7dHlwZTplLnR5cGUsd2lkdGg6ZS5zaXplLGhlaWdodDplLnNpemUscm90YXRpb246ZS5yb3RhdGlvbixiYWNrZ3JvdW5kOmUuYmFja2dyb3VuZCxib3JkZXI6dGhpcy5tYXJrZXJCb3JkZXIoKSxvcGFjaXR5OmUub3BhY2l0eSx6SW5kZXg6TWkoZS56SW5kZXgsdGhpcy5zZXJpZXMuekluZGV4KSxhbmltYXRpb246ZS5hbmltYXRpb24sdmlzdWFsOmUudmlzdWFsfSx7ZGF0YUl0ZW06dGhpcy5kYXRhSXRlbSx2YWx1ZTp0aGlzLnZhbHVlLHNlcmllczp0aGlzLnNlcmllcyxjYXRlZ29yeTp0aGlzLmNhdGVnb3J5fSk7cmV0dXJuIHR9LG1hcmtlckJveDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcmtlcnx8KHRoaXMubWFya2VyPXRoaXMuY3JlYXRlTWFya2VyKCksdGhpcy5tYXJrZXIucmVmbG93KHRoaXMuX2NoaWxkQm94KSksdGhpcy5tYXJrZXIuYm94fSxyZWZsb3c6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG8scj10aGlzLGE9ci5vcHRpb25zLHM9YS52ZXJ0aWNhbCxsPXIuYWJvdmVBeGlzO2lmKHIucmVuZGVyKCksci5ib3g9ZSx0PWUuY2xvbmUoKSxzP2w/dC55MS09dC5oZWlnaHQoKTp0LnkyKz10LmhlaWdodCgpOmw/dC54MSs9dC53aWR0aCgpOnQueDItPXQud2lkdGgoKSxyLl9jaGlsZEJveD10LHIubWFya2VyJiZyLm1hcmtlci5yZWZsb3codCksci5yZWZsb3dMYWJlbCh0KSxyLmVycm9yQmFycylmb3Iobj0wO248ci5lcnJvckJhcnMubGVuZ3RoO24rKylyLmVycm9yQmFyc1tuXS5yZWZsb3codCk7ci5ub3RlJiYobz1yLm1hcmtlckJveCgpLGEubWFya2Vycy52aXNpYmxlJiZhLm1hcmtlcnMuc2l6ZXx8KGk9by5jZW50ZXIoKSxvPWlpKGkueCxpLnksaS54LGkueSkpLHIubm90ZS5yZWZsb3cobykpfSxyZWZsb3dMYWJlbDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dC5vcHRpb25zLG49dC5sYWJlbCxvPWkubGFiZWxzLnBvc2l0aW9uO24mJihvPW89PT1VaT9vcjpvLG89bz09PVdpP1FpOm8sbi5yZWZsb3coZSksbi5ib3guYWxpZ25Ubyh0Lm1hcmtlckJveCgpLG8pLG4ucmVmbG93KG4uYm94KSl9LGNyZWF0ZUhpZ2hsaWdodDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucy5oaWdobGlnaHQsdD1lLm1hcmtlcnMsaT10aGlzLm1hcmtlckJvcmRlcigpLmNvbG9yLG49dGhpcy5vcHRpb25zLm1hcmtlcnMsbz1uZXcgZGkoe3R5cGU6bi50eXBlLHdpZHRoOm4uc2l6ZSxoZWlnaHQ6bi5zaXplLHJvdGF0aW9uOm4ucm90YXRpb24sYmFja2dyb3VuZDp0LmNvbG9yfHxpLGJvcmRlcjp7Y29sb3I6dC5ib3JkZXIuY29sb3Isd2lkdGg6dC5ib3JkZXIud2lkdGgsb3BhY2l0eTpNaSh0LmJvcmRlci5vcGFjaXR5LDEpfSxvcGFjaXR5Ok1pKHQub3BhY2l0eSwxKX0pO3JldHVybiBvLnJlZmxvdyh0aGlzLl9jaGlsZEJveCksby5nZXRFbGVtZW50KCl9LGhpZ2hsaWdodFZpc3VhbDpmdW5jdGlvbigpe3JldHVybih0aGlzLm1hcmtlcnx8e30pLnZpc3VhbH0saGlnaGxpZ2h0VmlzdWFsQXJnczpmdW5jdGlvbigpe3ZhciBlLHQsaSxuLG8scj10aGlzLm1hcmtlcjtyZXR1cm4gcj8odD1yLnBhZGRpbmdCb3gudG9SZWN0KCksZT1yLnZpc3VhbCk6KGk9dGhpcy5vcHRpb25zLm1hcmtlcnMuc2l6ZSxuPWkvMixvPXRoaXMuYm94LmNlbnRlcigpLHQ9bmV3IHppLlJlY3QoW28ueC1uLG8ueS1uXSxbaSxpXSkpLHtvcHRpb25zOnRoaXMub3B0aW9ucyxyZWN0OnQsdmlzdWFsOmV9fSx0b29sdGlwQW5jaG9yOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcyxuPWkubWFya2VyQm94KCksbz1pLmFib3ZlQXhpcyxyPW4ueDIrYXIsYT1vP24ueTEtdDpuLnkyLHM9aS5vd25lci5wYW5lLmNsaXBCb3goKSxsPSFzfHxzLm92ZXJsYXBzKG4pO2lmKGwpcmV0dXJuIHVpKHIsYSl9LGZvcm1hdFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHQub3duZXIuZm9ybWF0UG9pbnRWYWx1ZSh0LGUpfSxvdmVybGFwc0JveDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLm1hcmtlckJveCgpO3JldHVybiB0Lm92ZXJsYXBzKGUpfX0pLFh0KEllLmZuLGRlKSxYdChJZS5mbixnZSksVmU9SWUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcztJZS5mbi5pbml0LmNhbGwoaSxlLHQpLGkuY2F0ZWdvcnk9ZS5jYXRlZ29yeX0sZGVmYXVsdHM6e2xhYmVsczp7cG9zaXRpb246b259LGhpZ2hsaWdodDp7b3BhY2l0eToxLGJvcmRlcjp7d2lkdGg6MSxvcGFjaXR5OjF9fX0sY3JlYXRlSGlnaGxpZ2h0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLmhpZ2hsaWdodCx0PWUuYm9yZGVyLGk9dGhpcy5vcHRpb25zLm1hcmtlcnMsbj10aGlzLmJveC5jZW50ZXIoKSxvPWkuc2l6ZS8yLXQud2lkdGgvMixyPW5ldyBPaS5DaXJjbGUobmV3IHppLkNpcmNsZShbbi54LG4ueV0sbykse3N0cm9rZTp7Y29sb3I6dC5jb2xvcnx8bmV3IHJpKGkuYmFja2dyb3VuZCkuYnJpZ2h0bmVzcyhYaSkudG9IZXgoKSx3aWR0aDp0LndpZHRoLG9wYWNpdHk6dC5vcGFjaXR5fSxmaWxsOntjb2xvcjppLmJhY2tncm91bmQsb3BhY2l0eTplLm9wYWNpdHl9fSk7cmV0dXJuIHJ9fSksQmU9b2kuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCxpKXt2YXIgbj10aGlzO29pLmZuLmluaXQuY2FsbChuKSxuLmxpbmVQb2ludHM9ZSxuLnNlcmllcz10LG4uc2VyaWVzSXg9aX0sb3B0aW9uczp7Y2xvc2VkOiExfSxwb2ludHM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuPXRoaXMsbz1uLmxpbmVQb2ludHMuY29uY2F0KGV8fFtdKSxyPVtdO2Zvcih0PTAsaT1vLmxlbmd0aDt0PGk7dCsrKW9bdF0udmlzaWJsZSE9PSExJiZyLnB1c2gob1t0XS5fY2hpbGRCb3gudG9SZWN0KCkuY2VudGVyKCkpO3JldHVybiByfSxjcmVhdGVWaXN1YWw6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMub3B0aW9ucyxpPXRoaXMuc2VyaWVzLG49aS5fZGVmYXVsdHMsbz1pLmNvbG9yO1p0KG8pJiZuJiYobz1uLmNvbG9yKSxlPU9pLlBhdGguZnJvbVBvaW50cyh0aGlzLnBvaW50cygpLHtzdHJva2U6e2NvbG9yOm8sd2lkdGg6aS53aWR0aCxvcGFjaXR5Omkub3BhY2l0eSxkYXNoVHlwZTppLmRhc2hUeXBlfSx6SW5kZXg6aS56SW5kZXh9KSx0LmNsb3NlZCYmZS5jbG9zZSgpLHRoaXMudmlzdWFsPWV9LGFsaWFzRm9yOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcyxuPWkuc2VyaWVzSXg7cmV0dXJuIGkucGFyZW50LmdldE5lYXJlc3RQb2ludCh0LngsdC55LG4pfX0pLExlPXtyZW5kZXJTZWdtZW50czpmdW5jdGlvbigpe3ZhciBlLHQsaSxuLG8scixhLHMsbD10aGlzLGM9bC5vcHRpb25zLGg9Yy5zZXJpZXMsdT1sLnNlcmllc1BvaW50cyxwPXUubGVuZ3RoO2Zvcih0aGlzLl9zZWdtZW50cz1bXSx0PTA7dDxwO3QrKyl7Zm9yKGU9aFt0XSxpPWwuc29ydFBvaW50cyh1W3RdKSxhPWkubGVuZ3RoLG49W10scj0wO3I8YTtyKyspbz1pW3JdLG8/bi5wdXNoKG8pOmwuc2VyaWVzTWlzc2luZ1ZhbHVlcyhlKSE9PXFuJiYobi5sZW5ndGg+MSYmKHM9bC5jcmVhdGVTZWdtZW50KG4sZSx0LHMpLHRoaXMuX2FkZFNlZ21lbnQocykpLG49W10pO24ubGVuZ3RoPjEmJihzPWwuY3JlYXRlU2VnbWVudChuLGUsdCxzKSx0aGlzLl9hZGRTZWdtZW50KHMpKX10aGlzLmNoaWxkcmVuLnVuc2hpZnQuYXBwbHkodGhpcy5jaGlsZHJlbix0aGlzLl9zZWdtZW50cyl9LF9hZGRTZWdtZW50OmZ1bmN0aW9uKGUpe3RoaXMuX3NlZ21lbnRzLnB1c2goZSksZS5wYXJlbnQ9dGhpc30sc29ydFBvaW50czpmdW5jdGlvbihlKXtyZXR1cm4gZX0sc2VyaWVzTWlzc2luZ1ZhbHVlczpmdW5jdGlvbihlKXt2YXIgdD1lLm1pc3NpbmdWYWx1ZXMsaT0hdCYmdGhpcy5vcHRpb25zLmlzU3RhY2tlZDtyZXR1cm4gaT9icjp0fHxxbn0sZ2V0TmVhcmVzdFBvaW50OmZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvLHIsYSxzLGw9bmV3IHVpKGUsdCksYz10aGlzLnNlcmllc1BvaW50c1tpXSxoPWlvO2ZvcihvPTA7bzxjLmxlbmd0aDtvKyspcj1jW29dLHImJlJpKHIudmFsdWUpJiZudWxsIT09ci52YWx1ZSYmci52aXNpYmxlIT09ITEmJihhPXIuYm94LHM9YS5jZW50ZXIoKS5kaXN0YW5jZVRvKGwpLHM8aCYmKG49cixoPXMpKTtyZXR1cm4gbn19LEVlPXtjcmVhdGVBbmltYXRpb246ZnVuY3Rpb24oKXt2YXIgZSx0LGk9dGhpcy5nZXRSb290KCk7aSYmKGkub3B0aW9uc3x8e30pLnRyYW5zaXRpb25zIT09ITEmJihlPWkuYm94LHQ9T2kuUGF0aC5mcm9tUmVjdChlLnRvUmVjdCgpKSx0aGlzLnZpc3VhbC5jbGlwKHQpLHRoaXMuYW5pbWF0aW9uPW5ldyBNZSh0LHtib3g6ZX0pLFgodGhpcy5vcHRpb25zLnNlcmllcykmJnRoaXMuX3NldENoaWxkcmVuQW5pbWF0aW9uKHQpKX0sX3NldENoaWxkcmVuQW5pbWF0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0LGksbj10aGlzLmFuaW1hdGlvblBvaW50cygpO2ZvcihpPTA7aTxuLmxlbmd0aDtpKyspdD1uW2ldLHQmJnQudmlzdWFsJiZSaSh0LnZpc3VhbC5vcHRpb25zLnpJbmRleCkmJnQudmlzdWFsLmNsaXAoZSl9fSxEZT1fZS5leHRlbmQoe3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7X2UuZm4ucmVuZGVyLmFwcGx5KGUpLGUudXBkYXRlU3RhY2tSYW5nZSgpLGUucmVuZGVyU2VnbWVudHMoKX0scG9pbnRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIEllfSxjcmVhdGVQb2ludDpmdW5jdGlvbihlLHQpe3ZhciBpLG4sbyxyPXRoaXMsYT10LmNhdGVnb3J5SXgscz10LmNhdGVnb3J5LGw9dC5zZXJpZXMsYz10LnNlcmllc0l4LGg9ZS52YWx1ZUZpZWxkcy52YWx1ZSx1PXIuc2VyaWVzTWlzc2luZ1ZhbHVlcyhsKTtpZighUmkoaCl8fG51bGw9PT1oKXtpZih1IT09YnIpcmV0dXJuIG51bGw7aD0wfXJldHVybiBuPXRoaXMucG9pbnRPcHRpb25zKGwsYyksbj1yLmV2YWxQb2ludE9wdGlvbnMobixoLHMsYSxsLGMpLG89ZS5maWVsZHMuY29sb3J8fGwuY29sb3IsTnQuaXNGdW5jdGlvbihsLmNvbG9yKSYmKG89bi5jb2xvciksaT1uZXcgSWUoaCxuKSxpLmNvbG9yPW8sci5hcHBlbmQoaSksaX0scGxvdFJhbmdlOmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHI9dGhpcy5wbG90VmFsdWUoZSk7aWYodGhpcy5vcHRpb25zLmlzU3RhY2tlZClmb3IodD1lLmNhdGVnb3J5SXgsaT10aGlzLmNhdGVnb3J5UG9pbnRzW3RdLG49MDtuPGkubGVuZ3RoJiYobz1pW25dLGUhPT1vKTtuKyspcis9dGhpcy5wbG90VmFsdWUobyksdGhpcy5vcHRpb25zLmlzU3RhY2tlZDEwMCYmKHI9T3QubWluKHIsMSkpO3JldHVybltyLHJdfSxjcmVhdGVTZWdtZW50OmZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvPXQuc3R5bGU7cmV0dXJuIG5ldyhuPW89PT1Obz96ZTpvPT09am8/T2U6QmUpKGUsdCxpKX0sYW5pbWF0aW9uUG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLnBvaW50cyxpPVtdO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaS5wdXNoKCh0W2VdfHx7fSkubWFya2VyKTtyZXR1cm4gaS5jb25jYXQodGhpcy5fc2VnbWVudHMpfX0pLFh0KERlLmZuLExlLEVlKSxNZT1PaS5BbmltYXRpb24uZXh0ZW5kKHtvcHRpb25zOntkdXJhdGlvbjpObn0sc2V0dXA6ZnVuY3Rpb24oKXt0aGlzLl9zZXRFbmQodGhpcy5vcHRpb25zLmJveC54MSl9LHN0ZXA6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5vcHRpb25zLmJveDt0aGlzLl9zZXRFbmQoa2kodC54MSx0LngyLGUpKX0sX3NldEVuZDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmVsZW1lbnQsaT10LnNlZ21lbnRzLG49aVsxXS5hbmNob3IoKSxvPWlbMl0uYW5jaG9yKCk7dC5zdXNwZW5kKCksbi5zZXRYKGUpLHQucmVzdW1lKCksby5zZXRYKGUpfX0pLE9pLkFuaW1hdGlvbkZhY3RvcnkuY3VycmVudC5yZWdpc3RlcihsbixNZSksemU9QmUuZXh0ZW5kKHtwb2ludHM6ZnVuY3Rpb24oZSl7dmFyIHQsaT10aGlzO3JldHVybiB0PWkuY2FsY3VsYXRlU3RlcFBvaW50cyhpLmxpbmVQb2ludHMpLGUmJmUubGVuZ3RoJiYodD10LmNvbmNhdChpLmNhbGN1bGF0ZVN0ZXBQb2ludHMoZSkucmV2ZXJzZSgpKSksdH0sY2FsY3VsYXRlU3RlcFBvaW50czpmdW5jdGlvbihlKXt2YXIgdCxpLG4sbyxyLGE9dGhpcyxzPWEucGFyZW50LGw9cy5wbG90QXJlYSxjPWwuc2VyaWVzQ2F0ZWdvcnlBeGlzKGEuc2VyaWVzKSxoPXMuc2VyaWVzTWlzc2luZ1ZhbHVlcyhhLnNlcmllcyk9PT1xbix1PWUubGVuZ3RoLHA9Yy5vcHRpb25zLnJldmVyc2UsZj1jLm9wdGlvbnMudmVydGljYWwsZD1wPzI6MSxnPXA/MToyLG09W107Zm9yKG49MTtuPHU7bisrKXQ9ZVtuLTFdLGk9ZVtuXSxvPXQubWFya2VyQm94KCkuY2VudGVyKCkscj1pLm1hcmtlckJveCgpLmNlbnRlcigpLGMub3B0aW9ucy5qdXN0aWZpZWQ/KG0ucHVzaChuZXcgemkuUG9pbnQoby54LG8ueSkpLG0ucHVzaChmP25ldyB6aS5Qb2ludChvLngsci55KTpuZXcgemkuUG9pbnQoci54LG8ueSkpLG0ucHVzaChuZXcgemkuUG9pbnQoci54LHIueSkpKTpmPyhtLnB1c2gobmV3IHppLlBvaW50KG8ueCx0LmJveFt5citkXSkpLG0ucHVzaChuZXcgemkuUG9pbnQoby54LHQuYm94W3lyK2ddKSksaCYmbS5wdXNoKG5ldyB6aS5Qb2ludChvLngsaS5ib3hbeXIrZF0pKSxtLnB1c2gobmV3IHppLlBvaW50KHIueCxpLmJveFt5citkXSkpLG0ucHVzaChuZXcgemkuUG9pbnQoci54LGkuYm94W3lyK2ddKSkpOihtLnB1c2gobmV3IHppLlBvaW50KHQuYm94W3ZyK2RdLG8ueSkpLG0ucHVzaChuZXcgemkuUG9pbnQodC5ib3hbdnIrZ10sby55KSksaCYmbS5wdXNoKG5ldyB6aS5Qb2ludChpLmJveFt2citkXSxvLnkpKSxtLnB1c2gobmV3IHppLlBvaW50KGkuYm94W3ZyK2RdLHIueSkpLG0ucHVzaChuZXcgemkuUG9pbnQoaS5ib3hbdnIrZ10sci55KSkpO3JldHVybiBtfHxbXX19KSxPZT1CZS5leHRlbmQoe2NyZWF0ZVZpc3VhbDpmdW5jdGlvbigpe3ZhciBlLHQsaSxuPXRoaXMuc2VyaWVzLG89bi5fZGVmYXVsdHMscj1uLmNvbG9yO1p0KHIpJiZvJiYocj1vLmNvbG9yKSxlPW5ldyBhaSh0aGlzLm9wdGlvbnMuY2xvc2VkKSx0PWUucHJvY2Vzcyh0aGlzLnBvaW50cygpKSxpPW5ldyBPaS5QYXRoKHtzdHJva2U6e2NvbG9yOnIsd2lkdGg6bi53aWR0aCxvcGFjaXR5Om4ub3BhY2l0eSxkYXNoVHlwZTpuLmRhc2hUeXBlfSx6SW5kZXg6bi56SW5kZXh9KSxpLnNlZ21lbnRzLnB1c2guYXBwbHkoaS5zZWdtZW50cyx0KSx0aGlzLnZpc3VhbD1pfX0pLEZlPXtwb2ludHM6ZnVuY3Rpb24oKXt2YXIgZSx0LGk9dGhpcyxuPWkucGFyZW50LG89bi5wbG90QXJlYSxyPW4ub3B0aW9ucy5pbnZlcnRBeGVzLGE9bi5zZXJpZXNWYWx1ZUF4aXMoaS5zZXJpZXMpLHM9YS5saW5lQm94KCksbD1vLnNlcmllc0NhdGVnb3J5QXhpcyhpLnNlcmllcyksYz1sLmxpbmVCb3goKSxoPXI/Yy54MTpjLnkxLHU9aS5zdGFja1BvaW50cyxwPWkuX2xpbmVQb2ludHModSksZj1yP3ZyOnlyO3JldHVybiBoPVZpKGgsc1tmKzFdLHNbZisyXSksIWkuc3RhY2tQb2ludHMmJnAubGVuZ3RoPjEmJihlPXBbMF0sdD1JaShwKSxyPyhwLnVuc2hpZnQobmV3IHppLlBvaW50KGgsZS55KSkscC5wdXNoKG5ldyB6aS5Qb2ludChoLHQueSkpKToocC51bnNoaWZ0KG5ldyB6aS5Qb2ludChlLngsaCkpLHAucHVzaChuZXcgemkuUG9pbnQodC54LGgpKSkpLHB9LGNyZWF0ZVZpc3VhbDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc2VyaWVzLHQ9ZS5fZGVmYXVsdHMsaT1lLmNvbG9yO1p0KGkpJiZ0JiYoaT10LmNvbG9yKSx0aGlzLnZpc3VhbD1uZXcgT2kuR3JvdXAoe3pJbmRleDplLnpJbmRleH0pLHRoaXMuY3JlYXRlQXJlYShpKSx0aGlzLmNyZWF0ZUxpbmUoaSl9LGNyZWF0ZUxpbmU6ZnVuY3Rpb24oZSl7dmFyIHQsaT10aGlzLnNlcmllcyxuPVh0KHtjb2xvcjplLG9wYWNpdHk6aS5vcGFjaXR5fSxpLmxpbmUpO24udmlzaWJsZSE9PSExJiZuLndpZHRoPjAmJih0PU9pLlBhdGguZnJvbVBvaW50cyh0aGlzLl9saW5lUG9pbnRzKCkse3N0cm9rZTp7Y29sb3I6bi5jb2xvcix3aWR0aDpuLndpZHRoLG9wYWNpdHk6bi5vcGFjaXR5LGRhc2hUeXBlOm4uZGFzaFR5cGUsbGluZUNhcDpcImJ1dHRcIn19KSx0aGlzLnZpc3VhbC5hcHBlbmQodCkpfSxjcmVhdGVBcmVhOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc2VyaWVzLGk9T2kuUGF0aC5mcm9tUG9pbnRzKHRoaXMucG9pbnRzKCkse2ZpbGw6e2NvbG9yOmUsb3BhY2l0eTp0Lm9wYWNpdHl9LHN0cm9rZTpudWxsfSk7dGhpcy52aXN1YWwuYXBwZW5kKGkpfX0sVWU9QmUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCxpLG4pe3ZhciBvPXRoaXM7by5zdGFja1BvaW50cz10LEJlLmZuLmluaXQuY2FsbChvLGUsaSxuKX0sX2xpbmVQb2ludHM6QmUuZm4ucG9pbnRzfSksWHQoVWUuZm4sRmUpLEhlPURlLmV4dGVuZCh7Y3JlYXRlU2VnbWVudDpmdW5jdGlvbihlLHQsaSxuKXt2YXIgbyxyLGEscz10aGlzLGw9cy5vcHRpb25zLGM9bC5pc1N0YWNrZWQsaD0odC5saW5lfHx7fSkuc3R5bGU7cmV0dXJuIGMmJmk+MCYmbiYmKGE9dGhpcy5zZXJpZXNNaXNzaW5nVmFsdWVzKHQpLG89XCJnYXBcIiE9YT9uLmxpbmVQb2ludHM6dGhpcy5fZ2FwU3RhY2tQb2ludHMoZSxpLGgpLGghPT1ObyYmKG89by5zbGljZSgwKS5yZXZlcnNlKCkpKSxoPT09am8/bmV3IE5lKGUsbixjLHQsaSk6bmV3KHI9aD09PU5vP2plOlVlKShlLG8sdCxpKX0scmVmbG93OmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvO2lmKERlLmZuLnJlZmxvdy5jYWxsKHRoaXMsZSksdD10aGlzLl9zdGFja1BvaW50cylmb3Iobz0wO288dC5sZW5ndGg7bysrKWk9dFtvXSxuPXRoaXMuY2F0ZWdvcnlBeGlzLmdldFNsb3QoaS5jYXRlZ29yeUl4KSxpLnJlZmxvdyhuKX0sX2dhcFN0YWNrUG9pbnRzOmZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvLHIsYSxzPXRoaXMuc2VyaWVzUG9pbnRzLGw9ZVswXS5jYXRlZ29yeUl4LGM9bCtlLmxlbmd0aCxoPVtdO2Zvcih0aGlzLl9zdGFja1BvaW50cz10aGlzLl9zdGFja1BvaW50c3x8W10sYT1sO2E8YzthKyspe249dDtkbyBuLS0sbz1zW25dW2FdO3doaWxlKG4+MCYmIW8pO28/KGkhPT1ObyYmYT5sJiYhc1tuXVthLTFdJiZoLnB1c2godGhpcy5fcHJldmlvdXNTZWdtZW50UG9pbnQoYSxhLTEsbikpLGgucHVzaChvKSxpIT09Tm8mJmErMTxjJiYhc1tuXVthKzFdJiZoLnB1c2godGhpcy5fcHJldmlvdXNTZWdtZW50UG9pbnQoYSxhKzEsbikpKToocj10aGlzLl9jcmVhdGVHYXBTdGFja1BvaW50KGEpLHRoaXMuX3N0YWNrUG9pbnRzLnB1c2gociksaC5wdXNoKHIpKX1yZXR1cm4gaH0sX3ByZXZpb3VzU2VnbWVudFBvaW50OmZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIG4sbz10aGlzLnNlcmllc1BvaW50cztpPjAmJiFuOylpLS0sbj1vW2ldW3RdO3JldHVybiBuP249b1tpXVtlXToobj10aGlzLl9jcmVhdGVHYXBTdGFja1BvaW50KGUpLHRoaXMuX3N0YWNrUG9pbnRzLnB1c2gobikpLG59LF9jcmVhdGVHYXBTdGFja1BvaW50OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucG9pbnRPcHRpb25zKHt9LDApLGk9bmV3IEllKDAsdCk7cmV0dXJuIGkuY2F0ZWdvcnlJeD1lLGkuc2VyaWVzPXt9LGl9LHNlcmllc01pc3NpbmdWYWx1ZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWlzc2luZ1ZhbHVlc3x8YnJ9fSksTmU9VWUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCxpLG4sbyl7dmFyIHI9dGhpcztyLnByZXZTZWdtZW50PXQsci5pc1N0YWNrZWQ9aSxCZS5mbi5pbml0LmNhbGwocixlLG4sbyl9LHN0cm9rZVNlZ21lbnRzOmZ1bmN0aW9uKCl7dmFyIGUsdCxpPXRoaXMuX3N0cm9rZVNlZ21lbnRzO3JldHVybiBpfHwoZT1uZXcgYWkodGhpcy5vcHRpb25zLmNsb3NlZCksdD1CZS5mbi5wb2ludHMuY2FsbCh0aGlzKSxpPXRoaXMuX3N0cm9rZVNlZ21lbnRzPWUucHJvY2Vzcyh0KSksaX0sY3JlYXRlVmlzdWFsOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zZXJpZXMsdD1lLl9kZWZhdWx0cyxpPWUuY29sb3I7WnQoaSkmJnQmJihpPXQuY29sb3IpLHRoaXMudmlzdWFsPW5ldyBPaS5Hcm91cCh7ekluZGV4OmUuekluZGV4fSksdGhpcy5jcmVhdGVGaWxsKHtmaWxsOntjb2xvcjppLG9wYWNpdHk6ZS5vcGFjaXR5fSxzdHJva2U6bnVsbH0pLHRoaXMuY3JlYXRlU3Ryb2tlKHtzdHJva2U6WHQoe2NvbG9yOmksb3BhY2l0eTplLm9wYWNpdHksbGluZUNhcDpcImJ1dHRcIn0sZS5saW5lKX0pfSxjcmVhdGVGaWxsOmZ1bmN0aW9uKHQpe3ZhciBpLG4sbyxyLGEscz10aGlzLnN0cm9rZVNlZ21lbnRzKCksbD1zLnNsaWNlKDApLGM9dGhpcy5wcmV2U2VnbWVudDt0aGlzLmlzU3RhY2tlZCYmYyYmKGk9Yy5zdHJva2VTZWdtZW50cygpLG49SWkoaSkuYW5jaG9yKCksbC5wdXNoKG5ldyBPaS5TZWdtZW50KG4sbixJaShzKS5hbmNob3IoKSkpLG89ZS5tYXAoaSxmdW5jdGlvbihlKXtyZXR1cm4gbmV3IE9pLlNlZ21lbnQoZS5hbmNob3IoKSxlLmNvbnRyb2xPdXQoKSxlLmNvbnRyb2xJbigpKX0pLnJldmVyc2UoKSxUaShsLG8pLHI9bFswXS5hbmNob3IoKSxsLnB1c2gobmV3IE9pLlNlZ21lbnQocixyLElpKG8pLmFuY2hvcigpKSkpLGE9bmV3IE9pLlBhdGgodCksYS5zZWdtZW50cy5wdXNoLmFwcGx5KGEuc2VnbWVudHMsbCksdGhpcy5jbG9zZUZpbGwoYSksdGhpcy52aXN1YWwuYXBwZW5kKGEpfSxjbG9zZUZpbGw6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXQucGFyZW50LG49dC5wcmV2U2VnbWVudCxvPWkucGxvdEFyZWEscj1pLm9wdGlvbnMuaW52ZXJ0QXhlcyxhPWkuc2VyaWVzVmFsdWVBeGlzKHQuc2VyaWVzKSxzPWEubGluZUJveCgpLGw9by5zZXJpZXNDYXRlZ29yeUF4aXModC5zZXJpZXMpLGM9bC5saW5lQm94KCksaD1yP2MueDE6Yy55MSx1PXI/dnI6eXIscD10LnN0cm9rZVNlZ21lbnRzKCksZj1wWzBdLmFuY2hvcigpLGQ9SWkocCkuYW5jaG9yKCk7aD1WaShoLHNbdSsxXSxzW3UrMl0pLGkub3B0aW9ucy5pc1N0YWNrZWQmJm58fCEocC5sZW5ndGg+MSl8fChyP2UubGluZVRvKGgsZC55KS5saW5lVG8oaCxmLnkpOmUubGluZVRvKGQueCxoKS5saW5lVG8oZi54LGgpKX0sY3JlYXRlU3Ryb2tlOmZ1bmN0aW9uKGUpe2lmKGUuc3Ryb2tlLndpZHRoPjApe3ZhciB0PW5ldyBPaS5QYXRoKGUpO3Quc2VnbWVudHMucHVzaC5hcHBseSh0LnNlZ21lbnRzLHRoaXMuc3Ryb2tlU2VnbWVudHMoKSksdGhpcy52aXN1YWwuYXBwZW5kKHQpfX19KSxqZT16ZS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0LGksbil7dmFyIG89dGhpcztvLnN0YWNrUG9pbnRzPXQsemUuZm4uaW5pdC5jYWxsKG8sZSxpLG4pfSxfbGluZVBvaW50czp6ZS5mbi5wb2ludHN9KSxYdChqZS5mbixGZSksR2U9b2kuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcztvaS5mbi5pbml0LmNhbGwoaSx0KSxpLnBsb3RBcmVhPWUsaS54QXhpc1Jhbmdlcz17fSxpLnlBeGlzUmFuZ2VzPXt9LGkucG9pbnRzPVtdLGkuc2VyaWVzUG9pbnRzPVtdLGkuc2VyaWVzT3B0aW9ucz1bXSxpLl9ldmFsU2VyaWVzPVtdLGkucmVuZGVyKCl9LG9wdGlvbnM6e3NlcmllczpbXSx0b29sdGlwOntmb3JtYXQ6XCJ7MH0sIHsxfVwifSxsYWJlbHM6e2Zvcm1hdDpcInswfSwgezF9XCJ9LGNsaXA6ITB9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS50cmF2ZXJzZURhdGFQb2ludHMoSHQoZS5hZGRWYWx1ZSxlKSl9LGFkZEVycm9yQmFyOmZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvPXRoaXMscj1lLnZhbHVlW3RdLGE9dCtcIlZhbHVlXCIscz10K1wiRXJyb3JMb3dcIixsPXQrXCJFcnJvckhpZ2hcIixjPWkuc2VyaWVzSXgsaD1pLnNlcmllcyx1PWUub3B0aW9ucy5lcnJvckJhcnMscD1pW3NdLGY9aVtsXTtCKHIpJiYoQihwKSYmQihmKSYmKG49e2xvdzpwLGhpZ2g6Zn0pLHUmJlJpKHVbYV0pJiYoby5zZXJpZXNFcnJvclJhbmdlcz1vLnNlcmllc0Vycm9yUmFuZ2VzfHx7eDpbXSx5OltdfSxvLnNlcmllc0Vycm9yUmFuZ2VzW3RdW2NdPW8uc2VyaWVzRXJyb3JSYW5nZXNbdF1bY118fG5ldyB5ZSh1W2FdLGgsdCksbj1vLnNlcmllc0Vycm9yUmFuZ2VzW3RdW2NdLmdldEVycm9yUmFuZ2Uocix1W2FdKSksbiYmby5hZGRQb2ludEVycm9yQmFyKG4sZSx0KSl9LGFkZFBvaW50RXJyb3JCYXI6ZnVuY3Rpb24oZSx0LGkpe3ZhciBuLG89dGhpcyxyPWUubG93LGE9ZS5oaWdoLHM9dC5zZXJpZXMsbD1pPT09eXIsYz10Lm9wdGlvbnMuZXJyb3JCYXJzLGg9e307dFtpK1wiTG93XCJdPXIsdFtpK1wiSGlnaFwiXT1hLHQuZXJyb3JCYXJzPXQuZXJyb3JCYXJzfHxbXSxuPW5ldyBSZShyLGEsbCxvLHMsYyksdC5lcnJvckJhcnMucHVzaChuKSx0LmFwcGVuZChuKSxoW2ldPXIsby51cGRhdGVSYW5nZShoLHMpLGhbaV09YSxvLnVwZGF0ZVJhbmdlKGgscyl9LGFkZFZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGksbj10aGlzLG89ZS54LHI9ZS55LGE9dC5zZXJpZXNJeCxzPXRoaXMub3B0aW9ucy5zZXJpZXNbYV0sbD10aGlzLnNlcmllc01pc3NpbmdWYWx1ZXMocyksYz1uLnNlcmllc1BvaW50c1thXTtLKG8pJiZLKHIpfHwoZT10aGlzLmNyZWF0ZU1pc3NpbmdWYWx1ZShlLGwpKSxlJiYoaT1uLmNyZWF0ZVBvaW50KGUsdCksaSYmKFV0KGksdCksbi5hZGRFcnJvckJhcihpLHZyLHQpLG4uYWRkRXJyb3JCYXIoaSx5cix0KSksbi51cGRhdGVSYW5nZShlLHQuc2VyaWVzKSksbi5wb2ludHMucHVzaChpKSxjLnB1c2goaSl9LHNlcmllc01pc3NpbmdWYWx1ZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWlzc2luZ1ZhbHVlc30sY3JlYXRlTWlzc2luZ1ZhbHVlOkZ0LHVwZGF0ZVJhbmdlOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcyxuPWUueCxvPWUueSxyPXQueEF4aXMsYT10LnlBeGlzLHM9aS54QXhpc1Jhbmdlc1tyXSxsPWkueUF4aXNSYW5nZXNbYV07SyhuKSYmKHM9aS54QXhpc1Jhbmdlc1tyXT1zfHx7bWluOmlvLG1heDpyb30sdHlwZW9mIG49PT1ZbyYmKG49ZChuKSkscy5taW49T3QubWluKHMubWluLG4pLHMubWF4PU90Lm1heChzLm1heCxuKSksSyhvKSYmKGw9aS55QXhpc1Jhbmdlc1thXT1sfHx7bWluOmlvLG1heDpyb30sdHlwZW9mIG89PT1ZbyYmKG89ZChvKSksbC5taW49T3QubWluKGwubWluLG8pLGwubWF4PU90Lm1heChsLm1heCxvKSl9LGV2YWxQb2ludE9wdGlvbnM6ZnVuY3Rpb24oZSx0LGkpe3ZhciBuPWkuc2VyaWVzLG89aS5zZXJpZXNJeCxyPXtkZWZhdWx0czpuLl9kZWZhdWx0cyxleGNsdWRlZDpbXCJkYXRhXCIsXCJ0b29sdGlwXCIsXCJ0ZW1wYXRlXCIsXCJ2aXN1YWxcIixcInRvZ2dsZVwiLFwiX291dE9mUmFuZ2VNaW5Qb2ludFwiLFwiX291dE9mUmFuZ2VNYXhQb2ludFwiXX0sYT10aGlzLl9ldmFsU2VyaWVzW29dO3JldHVybiBSaShhKXx8KHRoaXMuX2V2YWxTZXJpZXNbb109YT1NKGUse30sciwhMCkpLGEmJihlPVh0KHt9LGUpLE0oZSx7dmFsdWU6dCxzZXJpZXM6bixkYXRhSXRlbTppLmRhdGFJdGVtfSxyKSksZX0scG9pbnRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIEllfSxwb2ludE9wdGlvbnM6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuPXRoaXMuc2VyaWVzT3B0aW9uc1t0XTtyZXR1cm4gbnx8KGk9dGhpcy5wb2ludFR5cGUoKS5mbi5kZWZhdWx0cyx0aGlzLnNlcmllc09wdGlvbnNbdF09bj1YdCh7fSxpLHttYXJrZXJzOntvcGFjaXR5OmUub3BhY2l0eX0sdG9vbHRpcDp7Zm9ybWF0OnRoaXMub3B0aW9ucy50b29sdGlwLmZvcm1hdH0sbGFiZWxzOntmb3JtYXQ6dGhpcy5vcHRpb25zLmxhYmVscy5mb3JtYXR9fSxlKSksbn0sY3JlYXRlUG9pbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuPXRoaXMsbz10LnNlcmllcyxyPXRoaXMucG9pbnRPcHRpb25zKG8sdC5zZXJpZXNJeCksYT10LmNvbG9yfHxvLmNvbG9yO3JldHVybiByPW4uZXZhbFBvaW50T3B0aW9ucyhyLGUsdCksTnQuaXNGdW5jdGlvbihvLmNvbG9yKSYmKGE9ci5jb2xvciksaT1uZXcgSWUoZSxyKSxpLmNvbG9yPWEsbi5hcHBlbmQoaSksaX0sc2VyaWVzQXhlczpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnBsb3RBcmVhLGk9ZS54QXhpcyxuPWk/dC5uYW1lZFhBeGVzW2ldOnQuYXhpc1gsbz1lLnlBeGlzLHI9bz90Lm5hbWVkWUF4ZXNbb106dC5heGlzWTtpZighbil0aHJvdyBFcnJvcihcIlVuYWJsZSB0byBsb2NhdGUgWCBheGlzIHdpdGggbmFtZSBcIitpKTtpZighcil0aHJvdyBFcnJvcihcIlVuYWJsZSB0byBsb2NhdGUgWSBheGlzIHdpdGggbmFtZSBcIitvKTtcbiAgICByZXR1cm57eDpuLHk6cn19LHJlZmxvdzpmdW5jdGlvbihlKXt2YXIgdCxpLG49dGhpcyxvPW4ucG9pbnRzLHI9MCxhPSFuLm9wdGlvbnMuY2xpcDtuLnRyYXZlcnNlRGF0YVBvaW50cyhmdW5jdGlvbihlLHMpe3Q9b1tyKytdLGk9bi5zZXJpZXNBeGVzKHMuc2VyaWVzKTt2YXIgbCxjPWkueC5nZXRTbG90KGUueCxlLngsYSksaD1pLnkuZ2V0U2xvdChlLnksZS55LGEpO3QmJihjJiZoPyhsPW4ucG9pbnRTbG90KGMsaCksdC5yZWZsb3cobCkpOnQudmlzaWJsZT0hMSl9KSxuLmJveD1lfSxwb2ludFNsb3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IGlpKGUueDEsdC55MSxlLngyLHQueTIpfSx0cmF2ZXJzZURhdGFQb2ludHM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG8scixhLHMsbD10aGlzLGM9bC5vcHRpb25zLGg9Yy5zZXJpZXMsdT1sLnNlcmllc1BvaW50cztmb3IoaT0wO2k8aC5sZW5ndGg7aSsrKWZvcihuPWhbaV0sbz11W2ldLG98fCh1W2ldPVtdKSx0PTA7dDxuLmRhdGEubGVuZ3RoO3QrKylyPXRoaXMuX2JpbmRQb2ludChuLGksdCksYT1yLnZhbHVlRmllbGRzLHM9ci5maWVsZHMsZShhLFh0KHtwb2ludEl4OnQsc2VyaWVzOm4sc2VyaWVzSXg6aSxkYXRhSXRlbTpuLmRhdGFbdF0sb3duZXI6bH0scykpfSxfYmluZFBvaW50Ol9lLmZuLl9iaW5kUG9pbnQsZm9ybWF0UG9pbnRWYWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPWUudmFsdWU7cmV0dXJuIHlpKHQsaS54LGkueSl9LGFuaW1hdGlvblBvaW50czpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5wb2ludHMsaT1bXTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWkucHVzaCgodFtlXXx8e30pLm1hcmtlcik7cmV0dXJuIGl9fSksWHQoR2UuZm4sRWUpLHFlPUdlLmV4dGVuZCh7cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztHZS5mbi5yZW5kZXIuY2FsbChlKSxlLnJlbmRlclNlZ21lbnRzKCl9LGNyZWF0ZVNlZ21lbnQ6ZnVuY3Rpb24oZSx0LGkpe3ZhciBuLG89dC5zdHlsZTtyZXR1cm4gbmV3KG49bz09PWpvP09lOkJlKShlLHQsaSl9LGFuaW1hdGlvblBvaW50czpmdW5jdGlvbigpe3ZhciBlPUdlLmZuLmFuaW1hdGlvblBvaW50cy5jYWxsKHRoaXMpO3JldHVybiBlLmNvbmNhdCh0aGlzLl9zZWdtZW50cyl9LGNyZWF0ZU1pc3NpbmdWYWx1ZTpmdW5jdGlvbihlLHQpe2lmKHQ9PT1icil7dmFyIGk9e3g6ZS54LHk6ZS55fTtyZXR1cm4gSyhpLngpfHwoaS54PTApLEsoaS55KXx8KGkueT0wKSxpfX19KSxYdChxZS5mbixMZSksWWU9R2UuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCl7dGhpcy5fbWF4U2l6ZT1ybyxHZS5mbi5pbml0LmNhbGwodGhpcyxlLHQpfSxvcHRpb25zOnt0b29sdGlwOntmb3JtYXQ6XCJ7M31cIn0sbGFiZWxzOntmb3JtYXQ6XCJ7M31cIn19LGFkZFZhbHVlOmZ1bmN0aW9uKGUsdCl7bnVsbCE9PWUuc2l6ZSYmKGUuc2l6ZT4wfHxlLnNpemU8MCYmdC5zZXJpZXMubmVnYXRpdmVWYWx1ZXMudmlzaWJsZSk/KHRoaXMuX21heFNpemU9T3QubWF4KHRoaXMuX21heFNpemUsT3QuYWJzKGUuc2l6ZSkpLEdlLmZuLmFkZFZhbHVlLmNhbGwodGhpcyxlLHQpKToodGhpcy5wb2ludHMucHVzaChudWxsKSx0aGlzLnNlcmllc1BvaW50c1t0LnNlcmllc0l4XS5wdXNoKG51bGwpKX0scmVmbG93OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dC51cGRhdGVCdWJibGVzU2l6ZShlKSxHZS5mbi5yZWZsb3cuY2FsbCh0LGUpfSxwb2ludFR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gVmV9LGNyZWF0ZVBvaW50OmZ1bmN0aW9uKGUsdCl7dmFyIGksbixvPXRoaXMscj10LnNlcmllcyxhPXIuZGF0YS5sZW5ndGgscz10LnBvaW50SXgqKE5uL2EpLGw9e2RlbGF5OnMsZHVyYXRpb246Tm4tcyx0eXBlOkppfSxjPXQuY29sb3J8fHIuY29sb3I7cmV0dXJuIGUuc2l6ZTwwJiZyLm5lZ2F0aXZlVmFsdWVzLnZpc2libGUmJihjPU1pKHIubmVnYXRpdmVWYWx1ZXMuY29sb3IsYykpLG49WHQoe2xhYmVsczp7YW5pbWF0aW9uOntkZWxheTpzLGR1cmF0aW9uOk5uLXN9fX0sdGhpcy5wb2ludE9wdGlvbnMocix0LnNlcmllc0l4KSx7bWFya2Vyczp7dHlwZTphbixib3JkZXI6ci5ib3JkZXIsb3BhY2l0eTpyLm9wYWNpdHksYW5pbWF0aW9uOmx9fSksbj1vLmV2YWxQb2ludE9wdGlvbnMobixlLHQpLE50LmlzRnVuY3Rpb24oci5jb2xvcikmJihjPW4uY29sb3IpLG4ubWFya2Vycy5iYWNrZ3JvdW5kPWMsaT1uZXcgVmUoZSxuKSxpLmNvbG9yPWMsby5hcHBlbmQoaSksaX0sdXBkYXRlQnViYmxlc1NpemU6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG8scixhLHMsbCxjLGgsdSxwLGYsZCxnLG0seCx2PXRoaXMseT12Lm9wdGlvbnMsXz15LnNlcmllcyxiPU90Lm1pbihlLndpZHRoKCksZS5oZWlnaHQoKSk7Zm9yKHQ9MDt0PF8ubGVuZ3RoO3QrKylmb3Iobj1fW3RdLG89di5zZXJpZXNQb2ludHNbdF0scj1uLm1pblNpemV8fE90Lm1heCguMDIqYiwxMCksYT1uLm1heFNpemV8fC4yKmIscz1yLzIsbD1hLzIsYz1PdC5QSSpzKnMsaD1PdC5QSSpsKmwsdT1oLWMscD11L3YuX21heFNpemUsaT0wO2k8by5sZW5ndGg7aSsrKWY9b1tpXSxmJiYoZD1PdC5hYnMoZi52YWx1ZS5zaXplKSpwLGc9T3Quc3FydCgoYytkKS9PdC5QSSksbT1NaShmLm9wdGlvbnMuekluZGV4LDApLHg9bSsoMS1nL2wpLFh0KGYub3B0aW9ucyx7ekluZGV4OngsbWFya2Vyczp7c2l6ZToyKmcsekluZGV4Onh9LGxhYmVsczp7ekluZGV4OngrMX19KSl9LGZvcm1hdFBvaW50VmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1lLnZhbHVlO3JldHVybiB5aSh0LGkueCxpLnksaS5zaXplLGUuY2F0ZWdvcnkpfSxjcmVhdGVBbmltYXRpb246RnQsY3JlYXRlVmlzdWFsOkZ0fSksWGU9b2kuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCl7b2kuZm4uaW5pdC5jYWxsKHRoaXMsdCksdGhpcy52YWx1ZT1lfSxvcHRpb25zOnt2ZXJ0aWNhbDohMCxib3JkZXI6e19icmlnaHRuZXNzOi44fSxsaW5lOnt3aWR0aDoyfSxvdmVybGF5OntncmFkaWVudDpPbn0sdG9vbHRpcDp7Zm9ybWF0OlwiPHRhYmxlIHN0eWxlPSd0ZXh0LWFsaWduOiBsZWZ0Oyc+PHRoIGNvbHNwYW49JzInPns0OmR9PC90aD48dHI+PHRkPk9wZW46PC90ZD48dGQ+ezA6Q308L3RkPjwvdHI+PHRyPjx0ZD5IaWdoOjwvdGQ+PHRkPnsxOkN9PC90ZD48L3RyPjx0cj48dGQ+TG93OjwvdGQ+PHRkPnsyOkN9PC90ZD48L3RyPjx0cj48dGQ+Q2xvc2U6PC90ZD48dGQ+ezM6Q308L3RkPjwvdHI+PC90YWJsZT5cIn0saGlnaGxpZ2h0OntvcGFjaXR5OjEsYm9yZGVyOnt3aWR0aDoxLG9wYWNpdHk6MX0sbGluZTp7d2lkdGg6MSxvcGFjaXR5OjF9fSxub3Rlczp7dmlzaWJsZTohMCxsYWJlbDp7fX19LHJlZmxvdzpmdW5jdGlvbihlKXt2YXIgdCxpLG4sbz10aGlzLHI9by5vcHRpb25zLGE9by5vd25lcixzPW8udmFsdWUsbD1hLnNlcmllc1ZhbHVlQXhpcyhyKSxjPVtdO2k9bC5nZXRTbG90KHMub3BlbixzLmNsb3NlKSxuPWwuZ2V0U2xvdChzLmxvdyxzLmhpZ2gpLGkueDE9bi54MT1lLngxLGkueDI9bi54Mj1lLngyLG8ucmVhbEJvZHk9aSx0PW4uY2VudGVyKCkueCxjLnB1c2goW1t0LG4ueTFdLFt0LGkueTFdXSksYy5wdXNoKFtbdCxpLnkyXSxbdCxuLnkyXV0pLG8ubGluZXM9YyxvLmJveD1uLmNsb25lKCkud3JhcChpKSxvLl9yZW5kZXJlZHx8KG8uX3JlbmRlcmVkPSEwLG8uY3JlYXRlTm90ZSgpKSxvLnJlZmxvd05vdGUoKX0scmVmbG93Tm90ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5ub3RlJiZlLm5vdGUucmVmbG93KGUuYm94KX0sY3JlYXRlVmlzdWFsOmZ1bmN0aW9uKCl7b2kuZm4uY3JlYXRlVmlzdWFsLmNhbGwodGhpcyksdGhpcy5fbWFpblZpc3VhbD10aGlzLm1haW5WaXN1YWwodGhpcy5vcHRpb25zKSx0aGlzLnZpc3VhbC5hcHBlbmQodGhpcy5fbWFpblZpc3VhbCksdGhpcy5jcmVhdGVPdmVybGF5KCl9LG1haW5WaXN1YWw6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IE9pLkdyb3VwO3JldHVybiB0aGlzLmNyZWF0ZUJvZHkodCxlKSx0aGlzLmNyZWF0ZUxpbmVzKHQsZSksdH0sY3JlYXRlQm9keTpmdW5jdGlvbihlLGkpe3ZhciBuPU9pLlBhdGguZnJvbVJlY3QodGhpcy5yZWFsQm9keS50b1JlY3QoKSx7ZmlsbDp7Y29sb3I6dGhpcy5jb2xvcixvcGFjaXR5Omkub3BhY2l0eX0sc3Ryb2tlOm51bGx9KTtpLmJvcmRlci53aWR0aD4wJiZuLm9wdGlvbnMuc2V0KFwic3Ryb2tlXCIse2NvbG9yOnRoaXMuZ2V0Qm9yZGVyQ29sb3IoKSx3aWR0aDppLmJvcmRlci53aWR0aCxkYXNoVHlwZTppLmJvcmRlci5kYXNoVHlwZSxvcGFjaXR5Ok1pKGkuYm9yZGVyLm9wYWNpdHksaS5vcGFjaXR5KX0pLHZpKG4pLGUuYXBwZW5kKG4pLFkoaSkmJmUuYXBwZW5kKHRoaXMuY3JlYXRlR3JhZGllbnRPdmVybGF5KG4se2Jhc2VDb2xvcjp0aGlzLmNvbG9yfSxYdCh7ZW5kOmkudmVydGljYWw/dDpbMCwxXX0saS5vdmVybGF5KSkpfSxjcmVhdGVMaW5lczpmdW5jdGlvbihlLHQpe3RoaXMuZHJhd0xpbmVzKGUsdCx0aGlzLmxpbmVzLHQubGluZSl9LGRyYXdMaW5lczpmdW5jdGlvbihlLHQsaSxuKXt2YXIgbyxyLGE7aWYoaSlmb3Iobz17c3Ryb2tlOntjb2xvcjpuLmNvbG9yfHx0aGlzLmNvbG9yLG9wYWNpdHk6TWkobi5vcGFjaXR5LHQub3BhY2l0eSksd2lkdGg6bi53aWR0aCxkYXNoVHlwZTpuLmRhc2hUeXBlLGxpbmVDYXA6XCJidXR0XCJ9fSxyPTA7cjxpLmxlbmd0aDtyKyspYT1PaS5QYXRoLmZyb21Qb2ludHMoaVtyXSxvKSx2aShhKSxlLmFwcGVuZChhKX0sZ2V0Qm9yZGVyQ29sb3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5vcHRpb25zLGk9dC5ib3JkZXIsbj1pLmNvbG9yO3JldHVybiBSaShuKXx8KG49bmV3IHJpKGUuY29sb3IpLmJyaWdodG5lc3MoaS5fYnJpZ2h0bmVzcykudG9IZXgoKSksbn0sY3JlYXRlT3ZlcmxheTpmdW5jdGlvbigpe3ZhciBlPU9pLlBhdGguZnJvbVJlY3QodGhpcy5ib3gudG9SZWN0KCkse2ZpbGw6e2NvbG9yOnhyLG9wYWNpdHk6MH0sc3Ryb2tlOm51bGx9KTt0aGlzLnZpc3VhbC5hcHBlbmQoZSl9LGNyZWF0ZUhpZ2hsaWdodDpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5vcHRpb25zLmhpZ2hsaWdodCxpPXRoaXMuY29sb3I7cmV0dXJuIHRoaXMuY29sb3I9dC5jb2xvcnx8dGhpcy5jb2xvcixlPXRoaXMubWFpblZpc3VhbChYdCh7fSx0aGlzLm9wdGlvbnMse2xpbmU6e2NvbG9yOnRoaXMuZ2V0Qm9yZGVyQ29sb3IoKX19LHQpKSx0aGlzLmNvbG9yPWksZX0saGlnaGxpZ2h0VmlzdWFsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21haW5WaXN1YWx9LGhpZ2hsaWdodFZpc3VhbEFyZ3M6ZnVuY3Rpb24oKXtyZXR1cm57b3B0aW9uczp0aGlzLm9wdGlvbnMscmVjdDp0aGlzLmJveC50b1JlY3QoKSx2aXN1YWw6dGhpcy5fbWFpblZpc3VhbH19LHRvb2x0aXBBbmNob3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5ib3gsaT1lLm93bmVyLnBhbmUuY2xpcEJveCgpfHx0O3JldHVybiBuZXcgdWkodC54MithcixPdC5tYXgodC55MSxpLnkxKSthcil9LGZvcm1hdFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHQub3duZXIuZm9ybWF0UG9pbnRWYWx1ZSh0LGUpfSxvdmVybGFwc0JveDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5ib3gub3ZlcmxhcHMoZSl9fSksWHQoWGUuZm4sZGUpLFh0KFhlLmZuLGdlKSxXZT1fZS5leHRlbmQoe29wdGlvbnM6e30scmVmbG93Q2F0ZWdvcmllczpmdW5jdGlvbihlKXt2YXIgdCxpPXRoaXMsbj1pLmNoaWxkcmVuLG89bi5sZW5ndGg7Zm9yKHQ9MDt0PG87dCsrKW5bdF0ucmVmbG93KGVbdF0pfSxhZGRWYWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpLG4sbz10aGlzLHI9dC5jYXRlZ29yeUl4LGE9dC5jYXRlZ29yeSxzPXQuc2VyaWVzLGw9dC5zZXJpZXNJeCxjPW8ub3B0aW9ucyxoPWUudmFsdWVGaWVsZHMsdT1vLmNoaWxkcmVuLHA9by5zcGxpdFZhbHVlKGgpLGY9RShwKSxkPW8uY2F0ZWdvcnlQb2ludHNbcl0sZz1zLmRhdGFbcl07ZHx8KG8uY2F0ZWdvcnlQb2ludHNbcl09ZD1bXSksZiYmKGk9by5jcmVhdGVQb2ludChlLHQpKSxuPXVbcl0sbnx8KG49bmV3IHBlKHt2ZXJ0aWNhbDpjLmludmVydEF4ZXMsZ2FwOmMuZ2FwLHNwYWNpbmc6Yy5zcGFjaW5nfSksby5hcHBlbmQobikpLGkmJihvLnVwZGF0ZVJhbmdlKGgsdCksbi5hcHBlbmQoaSksaS5jYXRlZ29yeUl4PXIsaS5jYXRlZ29yeT1hLGkuc2VyaWVzPXMsaS5zZXJpZXNJeD1sLGkub3duZXI9byxpLmRhdGFJdGVtPWcsaS5ub3RlVGV4dD1lLmZpZWxkcy5ub3RlVGV4dCksby5wb2ludHMucHVzaChpKSxkLnB1c2goaSl9LHBvaW50VHlwZTpmdW5jdGlvbigpe3JldHVybiBYZX0sY3JlYXRlUG9pbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuPXRoaXMsbz10LmNhdGVnb3J5SXgscj10LmNhdGVnb3J5LGE9dC5zZXJpZXMscz10LnNlcmllc0l4LGw9ZS52YWx1ZUZpZWxkcyxjPVh0KHt9LGEpLGg9bi5wb2ludFR5cGUoKSx1PWUuZmllbGRzLmNvbG9yfHxhLmNvbG9yO3JldHVybiBjPW4uZXZhbFBvaW50T3B0aW9ucyhjLGwscixvLGEscyksYS50eXBlPT10biYmbC5vcGVuPmwuY2xvc2UmJih1PWUuZmllbGRzLmRvd25Db2xvcnx8YS5kb3duQ29sb3J8fGEuY29sb3IpLE50LmlzRnVuY3Rpb24oYS5jb2xvcikmJih1PWMuY29sb3IpLGMudmVydGljYWw9IW4ub3B0aW9ucy5pbnZlcnRBeGVzLGk9bmV3IGgobCxjKSxpLmNvbG9yPXUsaX0sc3BsaXRWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm5bZS5sb3csZS5vcGVuLGUuY2xvc2UsZS5oaWdoXX0sdXBkYXRlUmFuZ2U6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLG49dC5zZXJpZXMuYXhpcyxvPWkudmFsdWVBeGlzUmFuZ2VzW25dLHI9aS5zcGxpdFZhbHVlKGUpO289aS52YWx1ZUF4aXNSYW5nZXNbbl09b3x8e21pbjppbyxtYXg6cm99LG89aS52YWx1ZUF4aXNSYW5nZXNbbl09e21pbjpPdC5taW4uYXBwbHkoT3Qsci5jb25jYXQoW28ubWluXSkpLG1heDpPdC5tYXguYXBwbHkoT3Qsci5jb25jYXQoW28ubWF4XSkpfX0sZm9ybWF0UG9pbnRWYWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBpPWUudmFsdWU7cmV0dXJuIHlpKHQsaS5vcGVuLGkuaGlnaCxpLmxvdyxpLmNsb3NlLGUuY2F0ZWdvcnkpfSxhbmltYXRpb25Qb2ludHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb2ludHN9fSksWHQoV2UuZm4sRWUpLFplPVhlLmV4dGVuZCh7cmVmbG93OmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHI9dGhpcyxhPXIub3B0aW9ucyxzPXIub3duZXIsbD1yLnZhbHVlLGM9cy5zZXJpZXNWYWx1ZUF4aXMoYSksaD1bXSx1PVtdLHA9W107bz1jLmdldFNsb3QobC5sb3csbC5oaWdoKSxpPWMuZ2V0U2xvdChsLm9wZW4sbC5vcGVuKSxuPWMuZ2V0U2xvdChsLmNsb3NlLGwuY2xvc2UpLGkueDE9bi54MT1vLngxPWUueDEsaS54Mj1uLngyPW8ueDI9ZS54Mix0PW8uY2VudGVyKCkueCxoLnB1c2goW2kueDEsaS55MV0pLGgucHVzaChbdCxpLnkxXSksdS5wdXNoKFt0LG4ueTFdKSx1LnB1c2goW24ueDIsbi55MV0pLHAucHVzaChbdCxvLnkxXSkscC5wdXNoKFt0LG8ueTJdKSxyLmxpbmVzPVtoLHUscF0sci5ib3g9by5jbG9uZSgpLndyYXAoaS5jbG9uZSgpLndyYXAobikpLHIucmVmbG93Tm90ZSgpfSxjcmVhdGVCb2R5OmUubm9vcH0pLEtlPVdlLmV4dGVuZCh7cG9pbnRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIFplfX0pLFFlPVdlLmV4dGVuZCh7YWRkVmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuLG89dGhpcyxyPXQuY2F0ZWdvcnlJeCxhPXQuY2F0ZWdvcnkscz10LnNlcmllcyxsPXQuc2VyaWVzSXgsYz1vLm9wdGlvbnMsaD1vLmNoaWxkcmVuLHU9ZS52YWx1ZUZpZWxkcyxwPW8uc3BsaXRWYWx1ZSh1KSxmPUUocCksZD1vLmNhdGVnb3J5UG9pbnRzW3JdLGc9cy5kYXRhW3JdO2R8fChvLmNhdGVnb3J5UG9pbnRzW3JdPWQ9W10pLGYmJihpPW8uY3JlYXRlUG9pbnQoZSx0KSksbj1oW3JdLG58fChuPW5ldyBwZSh7dmVydGljYWw6Yy5pbnZlcnRBeGVzLGdhcDpjLmdhcCxzcGFjaW5nOmMuc3BhY2luZ30pLG8uYXBwZW5kKG4pKSxpJiYoby51cGRhdGVSYW5nZSh1LHQpLG4uYXBwZW5kKGkpLGkuY2F0ZWdvcnlJeD1yLGkuY2F0ZWdvcnk9YSxpLnNlcmllcz1zLGkuc2VyaWVzSXg9bCxpLm93bmVyPW8saS5kYXRhSXRlbT1nKSxvLnBvaW50cy5wdXNoKGkpLGQucHVzaChpKX0scG9pbnRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5pbnZlcnRBeGVzP0plOiRlfSxzcGxpdFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybltlLmxvd2VyLGUucTEsZS5tZWRpYW4sZS5xMyxlLnVwcGVyXX0sdXBkYXRlUmFuZ2U6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLG49dC5zZXJpZXMuYXhpcyxvPWkudmFsdWVBeGlzUmFuZ2VzW25dLHI9aS5zcGxpdFZhbHVlKGUpLmNvbmNhdChpLmZpbHRlck91dGxpZXJzKGUub3V0bGllcnMpKTtSaShlLm1lYW4pJiYocj1yLmNvbmNhdChlLm1lYW4pKSxvPWkudmFsdWVBeGlzUmFuZ2VzW25dPW98fHttaW46aW8sbWF4OnJvfSxvPWkudmFsdWVBeGlzUmFuZ2VzW25dPXttaW46T3QubWluLmFwcGx5KE90LHIuY29uY2F0KFtvLm1pbl0pKSxtYXg6T3QubWF4LmFwcGx5KE90LHIuY29uY2F0KFtvLm1heF0pKX19LGZvcm1hdFBvaW50VmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaT1lLnZhbHVlO3JldHVybiB5aSh0LGkubG93ZXIsaS5xMSxpLm1lZGlhbixpLnEzLGkudXBwZXIsaS5tZWFuLGUuY2F0ZWdvcnkpfSxmaWx0ZXJPdXRsaWVyczpmdW5jdGlvbihlKXt2YXIgdCxpLG49KGV8fFtdKS5sZW5ndGgsbz1bXTtmb3IodD0wO3Q8bjt0KyspaT1lW3RdLFJpKGkpJiZJKG8saSk7cmV0dXJuIG99fSksJGU9WGUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcztvaS5mbi5pbml0LmNhbGwoaSx0KSxpLnZhbHVlPWUsaS5jcmVhdGVOb3RlKCl9LG9wdGlvbnM6e2JvcmRlcjp7X2JyaWdodG5lc3M6Ljh9LGxpbmU6e3dpZHRoOjJ9LG1lYW46e3dpZHRoOjIsZGFzaFR5cGU6XCJkYXNoXCJ9LG92ZXJsYXk6e2dyYWRpZW50Ok9ufSx0b29sdGlwOntmb3JtYXQ6XCI8dGFibGUgc3R5bGU9J3RleHQtYWxpZ246IGxlZnQ7Jz48dGggY29sc3Bhbj0nMic+ezY6ZH08L3RoPjx0cj48dGQ+TG93ZXI6PC90ZD48dGQ+ezA6Q308L3RkPjwvdHI+PHRyPjx0ZD5RMTo8L3RkPjx0ZD57MTpDfTwvdGQ+PC90cj48dHI+PHRkPk1lZGlhbjo8L3RkPjx0ZD57MjpDfTwvdGQ+PC90cj48dHI+PHRkPk1lYW46PC90ZD48dGQ+ezU6Q308L3RkPjwvdHI+PHRyPjx0ZD5RMzo8L3RkPjx0ZD57MzpDfTwvdGQ+PC90cj48dHI+PHRkPlVwcGVyOjwvdGQ+PHRkPns0OkN9PC90ZD48L3RyPjwvdGFibGU+XCJ9LGhpZ2hsaWdodDp7b3BhY2l0eToxLGJvcmRlcjp7d2lkdGg6MSxvcGFjaXR5OjF9LGxpbmU6e3dpZHRoOjEsb3BhY2l0eToxfX0sbm90ZXM6e3Zpc2libGU6ITAsbGFiZWw6e319LG91dGxpZXJzOnt2aXNpYmxlOiEwLHNpemU6UW4sdHlwZTpwbixiYWNrZ3JvdW5kOnhyLGJvcmRlcjp7d2lkdGg6MixvcGFjaXR5OjF9LG9wYWNpdHk6MH0sZXh0cmVtZXM6e3Zpc2libGU6ITAsc2l6ZTpRbix0eXBlOmFuLGJhY2tncm91bmQ6eHIsYm9yZGVyOnt3aWR0aDoyLG9wYWNpdHk6MX0sb3BhY2l0eTowfX0scmVmbG93OmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHI9dGhpcyxhPXIub3B0aW9ucyxzPXIub3duZXIsbD1yLnZhbHVlLGM9cy5zZXJpZXNWYWx1ZUF4aXMoYSk7ci5ib3hTbG90PWk9Yy5nZXRTbG90KGwucTEsbC5xMyksci5yZWFsQm9keT1pLHIucmVmbG93Qm94U2xvdChlKSxyLndoaXNrZXJTbG90PXQ9Yy5nZXRTbG90KGwubG93ZXIsbC51cHBlciksci5yZWZsb3dXaGlza2VyU2xvdChlKSxuPWMuZ2V0U2xvdChsLm1lZGlhbiksbC5tZWFuJiYobz1jLmdldFNsb3QobC5tZWFuKSxyLm1lYW5Qb2ludHM9ci5jYWxjTWVhblBvaW50cyhlLG8pKSxyLndoaXNrZXJQb2ludHM9ci5jYWxjV2hpc2tlclBvaW50cyhpLHQpLHIubWVkaWFuUG9pbnRzPXIuY2FsY01lZGlhblBvaW50cyhlLG4pLHIuYm94PXQuY2xvbmUoKS53cmFwKGkpLHIucmVmbG93Tm90ZSgpfSxyZWZsb3dCb3hTbG90OmZ1bmN0aW9uKGUpe3RoaXMuYm94U2xvdC54MT1lLngxLHRoaXMuYm94U2xvdC54Mj1lLngyfSxyZWZsb3dXaGlza2VyU2xvdDpmdW5jdGlvbihlKXt0aGlzLndoaXNrZXJTbG90LngxPWUueDEsdGhpcy53aGlza2VyU2xvdC54Mj1lLngyfSxjYWxjTWVhblBvaW50czpmdW5jdGlvbihlLHQpe3JldHVybltbW2UueDEsdC55MV0sW2UueDIsdC55MV1dXX0sY2FsY1doaXNrZXJQb2ludHM6ZnVuY3Rpb24oZSx0KXt2YXIgaT10LmNlbnRlcigpLng7cmV0dXJuW1tbaS01LHQueTFdLFtpKzUsdC55MV0sW2ksdC55MV0sW2ksZS55MV1dLFtbaS01LHQueTJdLFtpKzUsdC55Ml0sW2ksdC55Ml0sW2ksZS55Ml1dXX0sY2FsY01lZGlhblBvaW50czpmdW5jdGlvbihlLHQpe3JldHVybltbW2UueDEsdC55MV0sW2UueDIsdC55MV1dXX0scmVuZGVyT3V0bGllcnM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG8scj10aGlzLGE9ZS5tYXJrZXJzfHx7fSxzPXIudmFsdWUsbD1zLm91dGxpZXJzfHxbXSxjPTMqT3QuYWJzKHMucTMtcy5xMSksaD1bXTtmb3Iobz0wO288bC5sZW5ndGg7bysrKW49bFtvXSxhPW48cy5xMytjJiZuPnMucTEtYz9lLm91dGxpZXJzOmUuZXh0cmVtZXMsdD1YdCh7fSxhLmJvcmRlciksUmkodC5jb2xvcil8fCh0LmNvbG9yPVJpKHIuY29sb3IpP3IuY29sb3I6bmV3IHJpKGEuYmFja2dyb3VuZCkuYnJpZ2h0bmVzcyhYaSkudG9IZXgoKSksaT1uZXcgZGkoe3R5cGU6YS50eXBlLHdpZHRoOmEuc2l6ZSxoZWlnaHQ6YS5zaXplLHJvdGF0aW9uOmEucm90YXRpb24sYmFja2dyb3VuZDphLmJhY2tncm91bmQsYm9yZGVyOnQsb3BhY2l0eTphLm9wYWNpdHl9KSxpLnZhbHVlPW4saC5wdXNoKGkpO3JldHVybiB0aGlzLnJlZmxvd091dGxpZXJzKGgpLGh9LHJlZmxvd091dGxpZXJzOmZ1bmN0aW9uKGUpe3ZhciBpLG4sbyxyPXRoaXMub3duZXIuc2VyaWVzVmFsdWVBeGlzKHRoaXMub3B0aW9ucyksYT10aGlzLmJveC5jZW50ZXIoKTtmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKW49ZVtpXS52YWx1ZSxvPXIuZ2V0U2xvdChuKSx0aGlzLm9wdGlvbnMudmVydGljYWw/by5tb3ZlKGEueCk6by5tb3ZlKHQsYS55KSx0aGlzLmJveD10aGlzLmJveC53cmFwKG8pLGVbaV0ucmVmbG93KG8pfSxtYWluVmlzdWFsOmZ1bmN0aW9uKGUpe3ZhciB0LGksbj1YZS5mbi5tYWluVmlzdWFsLmNhbGwodGhpcyxlKSxvPXRoaXMucmVuZGVyT3V0bGllcnMoZSk7Zm9yKHQ9MDt0PG8ubGVuZ3RoO3QrKylpPW9bdF0uZ2V0RWxlbWVudCgpLGkmJm4uYXBwZW5kKGkpO3JldHVybiBufSxjcmVhdGVMaW5lczpmdW5jdGlvbihlLHQpe3RoaXMuZHJhd0xpbmVzKGUsdCx0aGlzLndoaXNrZXJQb2ludHMsdC5saW5lKSx0aGlzLmRyYXdMaW5lcyhlLHQsdGhpcy5tZWRpYW5Qb2ludHMsdC5tZWRpYW4pLHRoaXMuZHJhd0xpbmVzKGUsdCx0aGlzLm1lYW5Qb2ludHMsdC5tZWFuKX0sZ2V0Qm9yZGVyQ29sb3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb2xvcj90aGlzLmNvbG9yOlhlLmdldEJvcmRlckNvbG9yLmNhbGwodGhpcyl9fSksWHQoJGUuZm4sZGUpLEplPSRlLmV4dGVuZCh7cmVmbG93Qm94U2xvdDpmdW5jdGlvbihlKXt0aGlzLmJveFNsb3QueTE9ZS55MSx0aGlzLmJveFNsb3QueTI9ZS55Mn0scmVmbG93V2hpc2tlclNsb3Q6ZnVuY3Rpb24oZSl7dGhpcy53aGlza2VyU2xvdC55MT1lLnkxLHRoaXMud2hpc2tlclNsb3QueTI9ZS55Mn0sY2FsY01lYW5Qb2ludHM6ZnVuY3Rpb24oZSx0KXtyZXR1cm5bW1t0LngxLGUueTFdLFt0LngxLGUueTJdXV19LGNhbGNXaGlza2VyUG9pbnRzOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dC5jZW50ZXIoKS55O3JldHVybltbW3QueDEsaS01XSxbdC54MSxpKzVdLFt0LngxLGldLFtlLngxLGldXSxbW3QueDIsaS01XSxbdC54MixpKzVdLFt0LngyLGldLFtlLngyLGldXV19LGNhbGNNZWRpYW5Qb2ludHM6ZnVuY3Rpb24oZSx0KXtyZXR1cm5bW1t0LngxLGUueTFdLFt0LngxLGUueTJdXV19fSksZXQ9b2kuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCxpKXt2YXIgbj10aGlzO24udmFsdWU9ZSxuLnNlY3Rvcj10LG9pLmZuLmluaXQuY2FsbChuLGkpfSxvcHRpb25zOntjb2xvcjp4cixvdmVybGF5OntncmFkaWVudDpJb30sYm9yZGVyOnt3aWR0aDouNX0sbGFiZWxzOnt2aXNpYmxlOiExLGRpc3RhbmNlOjM1LGZvbnQ6dm4sbWFyZ2luOndpKC41KSxhbGlnbjphbix6SW5kZXg6MSxwb3NpdGlvbjpfb30sYW5pbWF0aW9uOnt0eXBlOmJvfSxoaWdobGlnaHQ6e3Zpc2libGU6ITAsYm9yZGVyOnt3aWR0aDoxfX0sdmlzaWJsZTohMH0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLGk9dC5vcHRpb25zLG49aS5sYWJlbHMsbz10LnZhbHVlO3QuX3JlbmRlcmVkfHx0LnZpc2libGU9PT0hMXx8KHQuX3JlbmRlcmVkPSEwLG4udGVtcGxhdGU/KGU9S3Qobi50ZW1wbGF0ZSksbz1lKHtkYXRhSXRlbTp0LmRhdGFJdGVtLGNhdGVnb3J5OnQuY2F0ZWdvcnksdmFsdWU6dC52YWx1ZSxzZXJpZXM6dC5zZXJpZXMscGVyY2VudGFnZTp0LnBlcmNlbnRhZ2V9KSk6bi5mb3JtYXQmJihvPXlpKG4uZm9ybWF0LG8pKSxuLnZpc2libGUmJm8mJih0LmxhYmVsPW5ldyBtaShvLFh0KHt9LG4se2FsaWduOm9uLHZBbGlnbjpcIlwiLGFuaW1hdGlvbjp7dHlwZTpFbixkZWxheTp0LmFuaW1hdGlvbkRlbGF5fX0pKSx0LmFwcGVuZCh0LmxhYmVsKSkpfSxyZWZsb3c6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0LnJlbmRlcigpLHQuYm94PWUsdC5yZWZsb3dMYWJlbCgpfSxyZWZsb3dMYWJlbDpmdW5jdGlvbigpe3ZhciBlLHQsaSxuLG89dGhpcyxyPW8uc2VjdG9yLmNsb25lKCksYT1vLm9wdGlvbnMscz1vLmxhYmVsLGw9YS5sYWJlbHMsYz1sLmRpc3RhbmNlLGg9ci5taWRkbGUoKTtzJiYobj1zLmJveC5oZWlnaHQoKSxpPXMuYm94LndpZHRoKCksbC5wb3NpdGlvbj09b24/KHIucj1PdC5hYnMoKHIuci1uKS8yKStuLGU9ci5wb2ludChoKSxzLnJlZmxvdyhpaShlLngsZS55LW4vMixlLngsZS55KSkpOmwucG9zaXRpb249PUduPyhyLnI9ci5yLW4vMixlPXIucG9pbnQoaCkscy5yZWZsb3coaWkoZS54LGUueS1uLzIsZS54LGUueSkpKTooZT1yLmNsb25lKCkuZXhwYW5kKGMpLnBvaW50KGgpLGUueD49ci5jLng/KHQ9ZS54K2kscy5vcmllbnRhdGlvbj1Sbyk6KHQ9ZS54LWkscy5vcmllbnRhdGlvbj1Ybikscy5yZWZsb3coaWkodCxlLnktbixlLngsZS55KSkpKX0sY3JlYXRlVmlzdWFsOmZ1bmN0aW9uKCl7dmFyIGUsdCxpPXRoaXMsbj1pLnNlY3RvcixvPWkub3B0aW9ucztvaS5mbi5jcmVhdGVWaXN1YWwuY2FsbCh0aGlzKSxpLnZhbHVlJiYoby52aXN1YWw/KGU9KG4uc3RhcnRBbmdsZSsxODApJTM2MCx0PW8udmlzdWFsKHtjYXRlZ29yeTppLmNhdGVnb3J5LGRhdGFJdGVtOmkuZGF0YUl0ZW0sdmFsdWU6aS52YWx1ZSxzZXJpZXM6aS5zZXJpZXMscGVyY2VudGFnZTppLnBlcmNlbnRhZ2UsY2VudGVyOm5ldyB6aS5Qb2ludChuLmMueCxuLmMueSkscmFkaXVzOm4ucixpbm5lclJhZGl1czpuLmlyLHN0YXJ0QW5nbGU6ZSxlbmRBbmdsZTplK24uYW5nbGUsb3B0aW9uczpvLGNyZWF0ZVZpc3VhbDpmdW5jdGlvbigpe3ZhciBlPW5ldyBPaS5Hcm91cDtyZXR1cm4gaS5jcmVhdGVTZWdtZW50VmlzdWFsKGUpLGV9fSksdCYmaS52aXN1YWwuYXBwZW5kKHQpKTppLmNyZWF0ZVNlZ21lbnRWaXN1YWwoaS52aXN1YWwpKX0sY3JlYXRlU2VnbWVudFZpc3VhbDpmdW5jdGlvbihlKXt2YXIgdCxpPXRoaXMsbj1pLnNlY3RvcixvPWkub3B0aW9ucyxyPW8uYm9yZGVyfHx7fSxhPXIud2lkdGg+MD97c3Ryb2tlOntjb2xvcjpyLmNvbG9yLHdpZHRoOnIud2lkdGgsb3BhY2l0eTpyLm9wYWNpdHksZGFzaFR5cGU6ci5kYXNoVHlwZX19Ont9LHM9by5jb2xvcixsPXtjb2xvcjpzLG9wYWNpdHk6by5vcGFjaXR5fTt0PWkuY3JlYXRlU2VnbWVudChuLFh0KHtmaWxsOmwsc3Ryb2tlOntvcGFjaXR5Om8ub3BhY2l0eX0sekluZGV4Om8uekluZGV4fSxhKSksZS5hcHBlbmQodCksWShvKSYmZS5hcHBlbmQodGhpcy5jcmVhdGVHcmFkaWVudE92ZXJsYXkodCx7YmFzZUNvbG9yOnMsZmFsbGJhY2tGaWxsOmx9LFh0KHtjZW50ZXI6W24uYy54LG4uYy55XSxpbm5lclJhZGl1czpuLmlyLHJhZGl1czpuLnIsdXNlclNwYWNlOiEwfSxvLm92ZXJsYXkpKSl9LGNyZWF0ZVNlZ21lbnQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5zaW5nbGVTZWdtZW50P25ldyBPaS5DaXJjbGUobmV3IHppLkNpcmNsZShuZXcgemkuUG9pbnQoZS5jLngsZS5jLnkpLGUuciksdCk6Z2kuY3VycmVudC5jcmVhdGVSaW5nKGUsdCl9LGNyZWF0ZUFuaW1hdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucyx0PXRoaXMuc2VjdG9yLmM7WHQoZSx7YW5pbWF0aW9uOntjZW50ZXI6W3QueCx0LnldLGRlbGF5OnRoaXMuYW5pbWF0aW9uRGVsYXl9fSksb2kuZm4uY3JlYXRlQW5pbWF0aW9uLmNhbGwodGhpcyl9LGNyZWF0ZUhpZ2hsaWdodDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dC5vcHRpb25zLmhpZ2hsaWdodHx8e30sbj1pLmJvcmRlcnx8e307cmV0dXJuIHQuY3JlYXRlU2VnbWVudCh0LnNlY3RvcixYdCh7fSxlLHtmaWxsOntjb2xvcjppLmNvbG9yLG9wYWNpdHk6aS5vcGFjaXR5fSxzdHJva2U6e29wYWNpdHk6bi5vcGFjaXR5LHdpZHRoOm4ud2lkdGgsY29sb3I6bi5jb2xvcn19KSl9LGhpZ2hsaWdodFZpc3VhbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZpc3VhbC5jaGlsZHJlblswXX0saGlnaGxpZ2h0VmlzdWFsQXJnczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc2VjdG9yO3JldHVybntvcHRpb25zOnRoaXMub3B0aW9ucyxyYWRpdXM6ZS5yLGlubmVyUmFkaXVzOmUuaXIsY2VudGVyOm5ldyB6aS5Qb2ludChlLmMueCxlLmMueSksc3RhcnRBbmdsZTplLnN0YXJ0QW5nbGUsZW5kQW5nbGU6ZS5hbmdsZStlLnN0YXJ0QW5nbGUsdmlzdWFsOnRoaXMudmlzdWFsfX0sdG9vbHRpcEFuY2hvcjpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMsbj1pLnNlY3Rvci5hZGphY2VudEJveChhcixlLHQpO3JldHVybiBuZXcgdWkobi54MSxuLnkxKX0sZm9ybWF0VmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdC5vd25lci5mb3JtYXRQb2ludFZhbHVlKHQsZSl9fSksWHQoZXQuZm4sZGUpLHR0PXtjcmVhdGVMZWdlbmRJdGVtOmZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvLHIsYSxzLGw9dGhpcyxjPWwub3B0aW9ucy5sZWdlbmR8fHt9LGg9Yy5sYWJlbHN8fHt9LHU9Yy5pbmFjdGl2ZUl0ZW1zfHx7fSxwPXUubGFiZWxzfHx7fTtpJiZpLnZpc2libGVJbkxlZ2VuZCE9PSExJiYocz1pLnZpc2libGUhPT0hMSxuPWkuY2F0ZWdvcnl8fFwiXCIsbz1zP2gudGVtcGxhdGU6cC50ZW1wbGF0ZXx8aC50ZW1wbGF0ZSxvJiYobj1LdChvKSh7dGV4dDpuLHNlcmllczppLnNlcmllcyxkYXRhSXRlbTppLmRhdGFJdGVtLHBlcmNlbnRhZ2U6aS5wZXJjZW50YWdlLHZhbHVlOmV9KSkscz8oYT17fSxyPXQuY29sb3IpOihhPXtjb2xvcjpwLmNvbG9yLGZvbnQ6cC5mb250fSxyPSh1Lm1hcmtlcnN8fHt9KS5jb2xvciksbiYmbC5sZWdlbmRJdGVtcy5wdXNoKHtwb2ludEluZGV4OmkuaW5kZXgsdGV4dDpuLHNlcmllczppLnNlcmllcyxtYXJrZXJDb2xvcjpyLGxhYmVsczphfSkpfX0saXQ9b2kuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcztvaS5mbi5pbml0LmNhbGwoaSx0KSxpLnBsb3RBcmVhPWUsaS5wb2ludHM9W10saS5sZWdlbmRJdGVtcz1bXSxpLnJlbmRlcigpfSxvcHRpb25zOntzdGFydEFuZ2xlOjkwLGNvbm5lY3RvcnM6e3dpZHRoOjEsY29sb3I6XCIjOTM5MzkzXCIscGFkZGluZzo0fSxpbmFjdGl2ZUl0ZW1zOnttYXJrZXJzOnt9LGxhYmVsczp7fX19LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS50cmF2ZXJzZURhdGFQb2ludHMoSHQoZS5hZGRWYWx1ZSxlKSl9LHRyYXZlcnNlRGF0YVBvaW50czpmdW5jdGlvbihlKXt2YXIgdCxpLG4sbyxyLGEscyxsLGMsaCx1LHAsZixkPXRoaXMsZz1kLm9wdGlvbnMsbT1kLnBsb3RBcmVhLm9wdGlvbnMuc2VyaWVzQ29sb3JzfHxbXSx4PW0ubGVuZ3RoLHY9Zy5zZXJpZXMseT12Lmxlbmd0aCxfPTA7Zm9yKG89MDtvPHk7bysrKXtmb3IodD12W29dLGE9dC5kYXRhLHU9cSh0KSxzPTM2MC91LHA9UmkodC5zdGFydEFuZ2xlKT90LnN0YXJ0QW5nbGU6Zy5zdGFydEFuZ2xlLG8hPXktMSYmdC5sYWJlbHMucG9zaXRpb249PV9vJiYodC5sYWJlbHMucG9zaXRpb249b24pLGY9MDtmPGEubGVuZ3RoO2YrKylpPW9lLmN1cnJlbnQuYmluZFBvaW50KHQsZiksbD1pLnZhbHVlRmllbGRzLnZhbHVlLGM9T3QuYWJzKGwpLG49aS5maWVsZHMscj1jKnMsaD0xIT1hLmxlbmd0aCYmISFuLmV4cGxvZGUsWnQodC5jb2xvcil8fCh0LmNvbG9yPW4uY29sb3J8fG1bZiV4XSksZShsLG5ldyBmaShudWxsLDAsMCxwLHIpLHtvd25lcjpkLGNhdGVnb3J5Om4uY2F0ZWdvcnl8fFwiXCIsaW5kZXg6XyxzZXJpZXM6dCxzZXJpZXNJeDpvLGRhdGFJdGVtOmFbZl0scGVyY2VudGFnZTowIT09dT9jL3U6MCxleHBsb2RlOmgsdmlzaWJsZUluTGVnZW5kOm4udmlzaWJsZUluTGVnZW5kLHZpc2libGU6bi52aXNpYmxlLHpJbmRleDp5LW8sYW5pbWF0aW9uRGVsYXk6ZC5hbmltYXRpb25EZWxheShmLG8seSl9KSxpLmZpZWxkcy52aXNpYmxlIT09ITEmJihwKz1yKSxfKys7Xz0wfX0sZXZhbFNlZ21lbnRPcHRpb25zOmZ1bmN0aW9uKGUsdCxpKXt2YXIgbj1pLnNlcmllcztNKGUse3ZhbHVlOnQsc2VyaWVzOm4sZGF0YUl0ZW06aS5kYXRhSXRlbSxjYXRlZ29yeTppLmNhdGVnb3J5LHBlcmNlbnRhZ2U6aS5wZXJjZW50YWdlfSx7ZGVmYXVsdHM6bi5fZGVmYXVsdHMsZXhjbHVkZWQ6W1wiZGF0YVwiLFwidGVtcGxhdGVcIixcInZpc3VhbFwiLFwidG9nZ2xlXCJdfSl9LGFkZFZhbHVlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvPXRoaXMscj1YdCh7fSxpLnNlcmllcyx7aW5kZXg6aS5pbmRleH0pO28uZXZhbFNlZ21lbnRPcHRpb25zKHIsZSxpKSxvLmNyZWF0ZUxlZ2VuZEl0ZW0oZSxyLGkpLGkudmlzaWJsZSE9PSExJiYobj1uZXcgZXQoZSx0LHIpLFV0KG4saSksby5hcHBlbmQobiksby5wb2ludHMucHVzaChuKSl9LHJlZmxvdzpmdW5jdGlvbihlKXt2YXIgdCxpLG4sbyxyLGEscyxsLGM9dGhpcyxoPWMub3B0aW9ucyx1PWUuY2xvbmUoKSxwPTUsZj1PdC5taW4odS53aWR0aCgpLHUuaGVpZ2h0KCkpLGQ9Zi8yLGc9Zi0uODUqZixtPU1pKGgucGFkZGluZyxnKSx4PWlpKHUueDEsdS55MSx1LngxK2YsdS55MStmKSx2PXguY2VudGVyKCkseT1jLnNlcmllc0NvbmZpZ3N8fFtdLF89dS5jZW50ZXIoKSxiPWMucG9pbnRzLHc9Yi5sZW5ndGgsQT1oLnNlcmllcy5sZW5ndGgsaz1bXSxTPVtdO2ZvcihtPW0+ZC1wP2QtcDptLHgudHJhbnNsYXRlKF8ueC12LngsXy55LXYueSksYT1kLW0sbD11aShhK3gueDErbSxhK3gueTErbSkscz0wO3M8dztzKyspbz1iW3NdLHI9by5zZWN0b3Isci5yPWEsci5jPWwsaT1vLnNlcmllc0l4LHkubGVuZ3RoJiYodD15W2ldLHIuaXI9dC5pcixyLnI9dC5yKSxpPT1BLTEmJm8uZXhwbG9kZSYmKHIuYz1yLmNsb25lKCkucmFkaXVzKC4xNSpyLnIpLnBvaW50KHIubWlkZGxlKCkpKSxvLnJlZmxvdyh4KSxuPW8ubGFiZWwsbiYmbi5vcHRpb25zLnBvc2l0aW9uPT09X28mJmk9PUEtMSYmKG4ub3JpZW50YXRpb249PT1Sbz9TLnB1c2gobik6ay5wdXNoKG4pKTtrLmxlbmd0aD4wJiYoay5zb3J0KGMubGFiZWxDb21wYXJhdG9yKCEwKSksYy5sZWZ0TGFiZWxzUmVmbG93KGspKSxTLmxlbmd0aD4wJiYoUy5zb3J0KGMubGFiZWxDb21wYXJhdG9yKCExKSksYy5yaWdodExhYmVsc1JlZmxvdyhTKSksYy5ib3g9eH0sbGVmdExhYmVsc1JlZmxvdzpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dC5kaXN0YW5jZUJldHdlZW5MYWJlbHMoZSk7dC5kaXN0cmlidXRlTGFiZWxzKGksZSl9LHJpZ2h0TGFiZWxzUmVmbG93OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10LmRpc3RhbmNlQmV0d2VlbkxhYmVscyhlKTt0LmRpc3RyaWJ1dGVMYWJlbHMoaSxlKX0sZGlzdGFuY2VCZXR3ZWVuTGFiZWxzOmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvPXRoaXMscj1vLnBvaW50cyxhPXJbci5sZW5ndGgtMV0scz1hLnNlY3RvcixsPWVbMF0uYm94LGM9ZS5sZW5ndGgtMSxoPXMucithLm9wdGlvbnMubGFiZWxzLmRpc3RhbmNlLHU9W107Zm9yKGk9Q2kobC55MS0ocy5jLnktaC1sLmhlaWdodCgpLWwuaGVpZ2h0KCkvMikpLHUucHVzaChpKSxuPTA7bjxjO24rKylsPWVbbl0uYm94LHQ9ZVtuKzFdLmJveCxpPUNpKHQueTEtbC55MiksdS5wdXNoKGkpO3JldHVybiBpPUNpKHMuYy55K2gtZVtjXS5ib3gueTItZVtjXS5ib3guaGVpZ2h0KCkvMiksdS5wdXNoKGkpLHV9LGRpc3RyaWJ1dGVMYWJlbHM6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuLG8scixhPXRoaXMscz1lLmxlbmd0aDtmb3Iocj0wO3I8cztyKyspZm9yKG49bz1yLGk9LWVbcl07aT4wJiYobj49MHx8bzxzKTspaT1hLl90YWtlRGlzdGFuY2UoZSxyLC0tbixpKSxpPWEuX3Rha2VEaXN0YW5jZShlLHIsKytvLGkpO2EucmVmbG93TGFiZWxzKGUsdCl9LF90YWtlRGlzdGFuY2U6ZnVuY3Rpb24oZSx0LGksbil7aWYoZVtpXT4wKXt2YXIgbz1PdC5taW4oZVtpXSxuKTtuLT1vLGVbaV0tPW8sZVt0XSs9b31yZXR1cm4gbn0scmVmbG93TGFiZWxzOmZ1bmN0aW9uKGUsdCl7dmFyIGksbixvLHIsYT10aGlzLHM9YS5wb2ludHMsbD1zW3MubGVuZ3RoLTFdLGM9bC5zZWN0b3IsaD10Lmxlbmd0aCx1PWwub3B0aW9ucy5sYWJlbHMscD11LmRpc3RhbmNlLGY9Yy5jLnktKGMucitwKS10WzBdLmJveC5oZWlnaHQoKTtmb3IoZVswXSs9MixyPTA7cjxoO3IrKylpPXRbcl0sZis9ZVtyXSxvPWkuYm94LG49YS5oQWxpZ25MYWJlbChvLngyLGMuY2xvbmUoKS5leHBhbmQocCksZixmK28uaGVpZ2h0KCksaS5vcmllbnRhdGlvbj09Um8pLGkub3JpZW50YXRpb249PVJvPyh1LmFsaWduIT09YW4mJihuPWMucitjLmMueCtwKSxpLnJlZmxvdyhpaShuK28ud2lkdGgoKSxmLG4sZikpKToodS5hbGlnbiE9PWFuJiYobj1jLmMueC1jLnItcCksaS5yZWZsb3coaWkobi1vLndpZHRoKCksZixuLGYpKSksZis9by5oZWlnaHQoKX0sY3JlYXRlVmlzdWFsOmZ1bmN0aW9uKCl7dmFyIGUsdCxpLG4scixhLHMsbCxjLGgsdSxwLGYsZCxnLG09dGhpcyx4PW0ub3B0aW9ucyx2PXguY29ubmVjdG9ycyx5PW0ucG9pbnRzLF89eS5sZW5ndGgsYj00O2ZvcihvaS5mbi5jcmVhdGVWaXN1YWwuY2FsbCh0aGlzKSx0aGlzLl9jb25uZWN0b3JMaW5lcz1bXSxsPTA7bDxfO2wrKylyPXlbbF0saT1yLnNlY3RvcixuPWkubWlkZGxlKCkscz1yLmxhYmVsLGE9e3Nlcmllc0lkOnIuc2VyaWVzSXh9LHQ9KHIub3B0aW9ucy5jb25uZWN0b3JzfHx7fSkuY29sb3J8fHYuY29sb3IscyYmKGU9bmV3IE9pLlBhdGgoe3N0cm9rZTp7Y29sb3I6dCx3aWR0aDp2LndpZHRofSxhbmltYXRpb246e3R5cGU6RW4sZGVsYXk6ci5hbmltYXRpb25EZWxheX19KSxzLm9wdGlvbnMucG9zaXRpb249PT1fbyYmMCE9PXIudmFsdWUmJihjPXMuYm94LGg9aS5jLHU9aS5wb2ludChuKSxwPXVpKGMueDEsYy5jZW50ZXIoKS55KSx1PWkuY2xvbmUoKS5leHBhbmQodi5wYWRkaW5nKS5wb2ludChuKSxlLm1vdmVUbyh1LngsdS55KSxzLm9yaWVudGF0aW9uPT1Sbz8oZD11aShjLngxLXYucGFkZGluZyxjLmNlbnRlcigpLnkpLGc9byhoLHUscCxkKSxwPXVpKGQueC1iLGQueSksZz1nfHxwLGcueD1PdC5taW4oZy54LHAueCksbS5wb2ludEluQ2lyY2xlKGcsaS5jLGkucitiKXx8Zy54PGkuYy54PyhmPWkuYy54K2kucitiLHIub3B0aW9ucy5sYWJlbHMuYWxpZ24hPT1obj9mPHAueD9lLmxpbmVUbyhmLHUueSk6ZS5saW5lVG8odS54KzIqYix1LnkpOmUubGluZVRvKGYsdS55KSxlLmxpbmVUbyhwLngsZC55KSk6KGcueT1kLnksZS5saW5lVG8oZy54LGcueSkpKTooZD11aShjLngyK3YucGFkZGluZyxjLmNlbnRlcigpLnkpLGc9byhoLHUscCxkKSxwPXVpKGQueCtiLGQueSksZz1nfHxwLGcueD1PdC5tYXgoZy54LHAueCksbS5wb2ludEluQ2lyY2xlKGcsaS5jLGkucitiKXx8Zy54PmkuYy54PyhmPWkuYy54LWkuci1iLHIub3B0aW9ucy5sYWJlbHMuYWxpZ24hPT1obj9mPnAueD9lLmxpbmVUbyhmLHUueSk6ZS5saW5lVG8odS54LTIqYix1LnkpOmUubGluZVRvKGYsdS55KSxlLmxpbmVUbyhwLngsZC55KSk6KGcueT1kLnksZS5saW5lVG8oZy54LGcueSkpKSxlLmxpbmVUbyhkLngsZC55KSx0aGlzLl9jb25uZWN0b3JMaW5lcy5wdXNoKGUpLHRoaXMudmlzdWFsLmFwcGVuZChlKSkpfSxsYWJlbENvbXBhcmF0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZT8tMToxLGZ1bmN0aW9uKHQsaSl7cmV0dXJuIHQ9KHQucGFyZW50LnNlY3Rvci5taWRkbGUoKSsyNzApJTM2MCxpPShpLnBhcmVudC5zZWN0b3IubWlkZGxlKCkrMjcwKSUzNjAsKHQtaSkqZX19LGhBbGlnbkxhYmVsOmZ1bmN0aW9uKGUsdCxpLG4sbyl7dmFyIHI9dC5jLngsYT10LmMueSxzPXQucixsPU90Lm1pbihPdC5hYnMoYS1pKSxPdC5hYnMoYS1uKSk7cmV0dXJuIGw+cz9lOnIrT3Quc3FydChzKnMtbCpsKSoobz8xOi0xKX0scG9pbnRJbkNpcmNsZTpmdW5jdGlvbihlLHQsaSl7cmV0dXJuIHUodC54LWUueCkrdSh0LnktZS55KTx1KGkpfSxmb3JtYXRQb2ludFZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHlpKHQsZS52YWx1ZSl9LGFuaW1hdGlvbkRlbGF5OmZ1bmN0aW9uKGUpe3JldHVybiBlKndvfX0pLFh0KGl0LmZuLHR0KSxudD1ldC5leHRlbmQoe29wdGlvbnM6e292ZXJsYXk6e2dyYWRpZW50OlZvfSxsYWJlbHM6e3Bvc2l0aW9uOm9ufSxhbmltYXRpb246e3R5cGU6Ym99fSxyZWZsb3dMYWJlbDpmdW5jdGlvbigpe3ZhciBlLHQsaT10aGlzLG49aS5zZWN0b3IuY2xvbmUoKSxvPWkub3B0aW9ucyxyPWkubGFiZWwsYT1vLmxhYmVscyxzPW4ubWlkZGxlKCk7ciYmKHQ9ci5ib3guaGVpZ2h0KCksYS5wb3NpdGlvbj09b24/KG4uci09KG4uci1uLmlyKS8yLGU9bi5wb2ludChzKSxyLnJlZmxvdyhuZXcgaWkoZS54LGUueS10LzIsZS54LGUueSkpKTpldC5mbi5yZWZsb3dMYWJlbC5jYWxsKGkpKX0sY3JlYXRlU2VnbWVudDpmdW5jdGlvbihlLHQpe3JldHVybiBnaS5jdXJyZW50LmNyZWF0ZVJpbmcoZSx0KX19KSxYdChudC5mbixkZSksb3Q9aXQuZXh0ZW5kKHtvcHRpb25zOntzdGFydEFuZ2xlOjkwLGNvbm5lY3RvcnM6e3dpZHRoOjEsY29sb3I6XCIjOTM5MzkzXCIscGFkZGluZzo0fX0sYWRkVmFsdWU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBuLG89dGhpcyxyPVh0KHt9LGkuc2VyaWVzLHtpbmRleDppLmluZGV4fSk7by5ldmFsU2VnbWVudE9wdGlvbnMocixlLGkpLG8uY3JlYXRlTGVnZW5kSXRlbShlLHIsaSksZSYmaS52aXNpYmxlIT09ITEmJihuPW5ldyBudChlLHQsciksVXQobixpKSxvLmFwcGVuZChuKSxvLnBvaW50cy5wdXNoKG4pKX0scmVmbG93OmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHIsYSxzPXRoaXMsbD1zLm9wdGlvbnMsYz1lLmNsb25lKCksaD01LHU9T3QubWluKGMud2lkdGgoKSxjLmhlaWdodCgpKSxwPXUvMixmPXUtLjg1KnUsZD1NaShsLnBhZGRpbmcsZiksZz1sLnNlcmllcyxtPWcubGVuZ3RoLHg9MCx2PTAseT0wLF89MDtmb3Iocy5zZXJpZXNDb25maWdzPVtdLGQ9ZD5wLWg/cC1oOmQsbj1wLWQscj0wO3I8bTtyKyspdD1nW3JdLDA9PT1yJiZSaSh0LmhvbGVTaXplKSYmKGk9dC5ob2xlU2l6ZSxuLT10LmhvbGVTaXplKSxSaSh0LnNpemUpP24tPXQuc2l6ZTp4KyssUmkodC5tYXJnaW4pJiZyIT1tLTEmJihuLT10Lm1hcmdpbik7Zm9yKFJpKGkpfHwoXz0ocC1kKS8obSsuNzUpLGk9Ljc1Kl8sbi09aSkseT1pLHI9MDtyPG07cisrKXQ9Z1tyXSxvPU1pKHQuc2l6ZSxuL3gpLHkrPXYsYT15K28scy5zZXJpZXNDb25maWdzLnB1c2goe2lyOnkscjphfSksdj10Lm1hcmdpbnx8MCx5PWE7aXQuZm4ucmVmbG93LmNhbGwocyxlKX0sYW5pbWF0aW9uRGVsYXk6ZnVuY3Rpb24oZSx0LGkpe3JldHVybiBlKmtuK05uKih0KzEpLyhpKzEpfX0pLHJ0PWJlLmV4dGVuZCh7cmVuZGVyOmZ1bmN0aW9uKCl7YmUuZm4ucmVuZGVyLmNhbGwodGhpcyksdGhpcy5jcmVhdGVTZWdtZW50cygpfSx0cmF2ZXJzZURhdGFQb2ludHM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG8scixhLHMsbCxjLHUscD10aGlzLm9wdGlvbnMuc2VyaWVzLGY9dGhpcy5jYXRlZ29yeUF4aXMub3B0aW9ucy5jYXRlZ29yaWVzfHxbXSxkPWgocCksZz0hdGhpcy5vcHRpb25zLmludmVydEF4ZXM7Zm9yKHQ9MDt0PHAubGVuZ3RoO3QrKylmb3IoaT1wW3RdLG49MCxvPTAscj0wO3I8ZDtyKyspYT1vZS5jdXJyZW50LmJpbmRQb2ludChpLHIpLHM9YS52YWx1ZUZpZWxkcy52YWx1ZSxsPWEuZmllbGRzLnN1bW1hcnksYz1uLGw/XCJ0b3RhbFwiPT09bC50b0xvd2VyQ2FzZSgpPyhhLnZhbHVlRmllbGRzLnZhbHVlPW4sYz0wLHU9bik6KGEudmFsdWVGaWVsZHMudmFsdWU9byx1PWMtbyxvPTApOkIocykmJihvKz1zLG4rPXMsdT1uKSxlKGEse2NhdGVnb3J5OmZbcl0sY2F0ZWdvcnlJeDpyLHNlcmllczppLHNlcmllc0l4OnQsdG90YWw6bixydW5uaW5nVG90YWw6byxmcm9tOmMsdG86dSxpc1ZlcnRpY2FsOmd9KX0sdXBkYXRlUmFuZ2U6ZnVuY3Rpb24oZSx0KXtiZS5mbi51cGRhdGVSYW5nZS5jYWxsKHRoaXMse3ZhbHVlOnQudG99LHQpfSxhYm92ZUF4aXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWU+PTB9LHBsb3RSYW5nZTpmdW5jdGlvbihlKXtyZXR1cm5bZS5mcm9tLGUudG9dfSxjcmVhdGVTZWdtZW50czpmdW5jdGlvbigpe3ZhciBlLHQsaSxuLG8scixhLHM9dGhpcy5vcHRpb25zLnNlcmllcyxsPXRoaXMuc2VyaWVzUG9pbnRzLGM9dGhpcy5zZWdtZW50cz1bXTtmb3IoZT0wO2U8cy5sZW5ndGg7ZSsrKWlmKHQ9c1tlXSxpPWxbZV0pZm9yKG89MDtvPGkubGVuZ3RoO28rKylyPWlbb10sciYmbiYmKGE9bmV3IGF0KG4scix0KSxjLnB1c2goYSksdGhpcy5hcHBlbmQoYSkpLG49cn19KSxhdD1vaS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0LGkpe3ZhciBuPXRoaXM7b2kuZm4uaW5pdC5jYWxsKG4pLG4uZnJvbT1lLG4udG89dCxuLnNlcmllcz1pfSxvcHRpb25zOnthbmltYXRpb246e3R5cGU6RW4sZGVsYXk6Tm59fSxsaW5lUG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGUsdCxpPVtdLG49dGhpcy5mcm9tLG89bi5ib3gscj10aGlzLnRvLmJveDtyZXR1cm4gbi5pc1ZlcnRpY2FsPyhlPW4uYWJvdmVBeGlzP28ueTE6by55MixpLnB1c2goW28ueDEsZV0sW3IueDIsZV0pKToodD1uLmFib3ZlQXhpcz9vLngyOm8ueDEsaS5wdXNoKFt0LG8ueTFdLFt0LHIueTJdKSksaX0sY3JlYXRlVmlzdWFsOmZ1bmN0aW9uKCl7dmFyIGUsdDtvaS5mbi5jcmVhdGVWaXN1YWwuY2FsbCh0aGlzKSxlPXRoaXMuc2VyaWVzLmxpbmV8fHt9LHQ9T2kuUGF0aC5mcm9tUG9pbnRzKHRoaXMubGluZVBvaW50cygpLHtzdHJva2U6e2NvbG9yOmUuY29sb3Isd2lkdGg6ZS53aWR0aCxvcGFjaXR5OmUub3BhY2l0eSxkYXNoVHlwZTplLmRhc2hUeXBlfX0pLHZpKHQpLHRoaXMudmlzdWFsLmFwcGVuZCh0KX19KSxzdD1uaS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztuaS5mbi5pbml0LmNhbGwodCxlKSxlPXQub3B0aW9ucyx0LmlkPU50Lmd1aWQoKSx0LmNyZWF0ZVRpdGxlKCksdC5jb250ZW50PW5ldyBvaSx0LmNoYXJ0Q29udGFpbmVyPW5ldyBsdCh7fSx0KSx0LmFwcGVuZCh0LmNvbnRlbnQpLHQuYXhlcz1bXSx0LmNoYXJ0cz1bXX0sb3B0aW9uczp7ekluZGV4Oi0xLHNocmlua1RvRml0OiEwLHRpdGxlOnthbGlnbjpYbn0sdmlzaWJsZTohMH0sY3JlYXRlVGl0bGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5vcHRpb25zLnRpdGxlO3R5cGVvZiB0PT09dm8mJih0PVh0KHt9LHQse2FsaWduOnQucG9zaXRpb24scG9zaXRpb246b3J9KSksZS50aXRsZT14aS5idWlsZFRpdGxlKHQsZSxzdC5mbi5vcHRpb25zLnRpdGxlKX0sYXBwZW5kQXhpczpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3QuY29udGVudC5hcHBlbmQoZSksdC5heGVzLnB1c2goZSksZS5wYW5lPXR9LGFwcGVuZENoYXJ0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dC5jaGFydENvbnRhaW5lci5wYXJlbnQhPT10LmNvbnRlbnQmJnQuY29udGVudC5hcHBlbmQodC5jaGFydENvbnRhaW5lciksdC5jaGFydHMucHVzaChlKSx0LmNoYXJ0Q29udGFpbmVyLmFwcGVuZChlKSxlLnBhbmU9dH0sZW1wdHk6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMsaT10LnBhcmVudDtpZihpKXtmb3IoZT0wO2U8dC5heGVzLmxlbmd0aDtlKyspaS5yZW1vdmVBeGlzKHQuYXhlc1tlXSk7Zm9yKGU9MDtlPHQuY2hhcnRzLmxlbmd0aDtlKyspaS5yZW1vdmVDaGFydCh0LmNoYXJ0c1tlXSl9dC5heGVzPVtdLHQuY2hhcnRzPVtdLHQuY29udGVudC5kZXN0cm95KCksdC5jb250ZW50LmNoaWxkcmVuPVtdLHQuY2hhcnRDb250YWluZXIuY2hpbGRyZW49W119LHJlZmxvdzpmdW5jdGlvbihlKXt2YXIgdCxpPXRoaXM7SWkoaS5jaGlsZHJlbik9PT1pLmNvbnRlbnQmJih0PWkuY2hpbGRyZW4ucG9wKCkpLG5pLmZuLnJlZmxvdy5jYWxsKGksZSksdCYmaS5jaGlsZHJlbi5wdXNoKHQpLGkudGl0bGUmJihpLmNvbnRlbnRCb3gueTErPWkudGl0bGUuYm94LmhlaWdodCgpKX0sdmlzdWFsU3R5bGU6ZnVuY3Rpb24oKXt2YXIgZT1uaS5mbi52aXN1YWxTdHlsZS5jYWxsKHRoaXMpO3JldHVybiBlLnpJbmRleD0tMTAsZX0scmVuZGVyQ29tcGxldGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMudmlzaWJsZSYmdGhpcy5jcmVhdGVHcmlkTGluZXMoKX0sc3RhY2tSb290OmksY2xpcFJvb3Q6aSxjcmVhdGVHcmlkTGluZXM6ZnVuY3Rpb24oKXt2YXIgZSx0LGksbixvLHIsYT10aGlzLHM9YS5heGVzLGw9cy5jb25jYXQoYS5wYXJlbnQuYXhlcyksYz1bXSxoPVtdO2Zvcih0PTA7dDxzLmxlbmd0aDt0KyspZm9yKG49c1t0XSxvPW4ub3B0aW9ucy52ZXJ0aWNhbCxlPW8/YzpoLGk9MDtpPGwubGVuZ3RoO2krKykwPT09ZS5sZW5ndGgmJihyPWxbaV0sbyE9PXIub3B0aW9ucy52ZXJ0aWNhbCYmVGkoZSxuLmNyZWF0ZUdyaWRMaW5lcyhyKSkpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy52aXN1YWwuY2xlYXIoKSx0aGlzLmNvbnRlbnQucGFyZW50PW51bGwsdGhpcy5jb250ZW50LmNyZWF0ZUdyYWRpZW50PWUucHJveHkodGhpcy5jcmVhdGVHcmFkaWVudCx0aGlzKSx0aGlzLmNvbnRlbnQucmVuZGVyVmlzdWFsKCksdGhpcy5jb250ZW50LnBhcmVudD10aGlzLHRoaXMudGl0bGUmJnRoaXMudmlzdWFsLmFwcGVuZCh0aGlzLnRpdGxlLnZpc3VhbCksdGhpcy52aXN1YWwuYXBwZW5kKHRoaXMuY29udGVudC52aXN1YWwpLHRoaXMucmVuZGVyQ29tcGxldGUoKX0sY2hhcnRzQm94OmZ1bmN0aW9uKCl7dmFyIGUsdCxpLG4sbyxyPXRoaXMuYXhlcyxhPXIubGVuZ3RoLHM9bmV3IGlpO2ZvcihuPTA7bjxhO24rKylpPXJbbl0sZT1pLm9wdGlvbnMudmVydGljYWw/eXI6dnIsdD1pLmxpbmVCb3goKSxzW2UrMV09dFtlKzFdLHNbZSsyXT10W2UrMl07aWYoMD09PXMueDIpZm9yKG89dGhpcy5wYXJlbnQuYXhlcyxhPW8ubGVuZ3RoLG49MDtuPGE7bisrKWk9b1tuXSxpLm9wdGlvbnMudmVydGljYWx8fCh0PWkubGluZUJveCgpLHMueDE9dC54MSxzLngyPXQueDIpO3JldHVybiBzfSxjbGlwQm94OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hhcnRDb250YWluZXIuY2xpcEJveH19KSxsdD1vaS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzO29pLmZuLmluaXQuY2FsbChpLGUpLGkucGFuZT10fSxzaG91bGRDbGlwOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLGk9dC5jaGlsZHJlbixuPWkubGVuZ3RoO2ZvcihlPTA7ZTxuO2UrKylpZihpW2VdLm9wdGlvbnMuY2xpcD09PSEwKXJldHVybiEwO3JldHVybiExfSxfY2xpcEJveDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhbmUuY2hhcnRzQm94KCl9LGNyZWF0ZVZpc3VhbDpmdW5jdGlvbigpe3ZhciBlLHQsaTt0aGlzLnZpc3VhbD1uZXcgT2kuR3JvdXAoe3pJbmRleDowfSksdGhpcy5zaG91bGRDbGlwKCkmJihlPXRoaXMuY2xpcEJveD10aGlzLl9jbGlwQm94KCksdD1lLnRvUmVjdCgpLGk9T2kuUGF0aC5mcm9tUmVjdCh0KSx0aGlzLnZpc3VhbC5jbGlwKGkpLHRoaXMudW5jbGlwTGFiZWxzKCkpfSxzdGFja1Jvb3Q6aSx1bmNsaXBMYWJlbHM6ZnVuY3Rpb24oKXt2YXIgZSx0LGksbixvLHIsYSxzPXRoaXMsbD1zLmNoaWxkcmVuLGM9cy5jbGlwQm94O2ZvcihpPTA7aTxsLmxlbmd0aDtpKyspZm9yKGU9bFtpXS5wb2ludHN8fHt9LG89ZS5sZW5ndGgsbj0wO248bztuKyspdD1lW25dLHQmJnQub3ZlcmxhcHNCb3gmJnQub3ZlcmxhcHNCb3goYykmJihyPXQubGFiZWwsYT10Lm5vdGUsciYmci5vcHRpb25zLnZpc2libGUmJihyLmFsaWduVG9DbGlwQm94JiZyLmFsaWduVG9DbGlwQm94KGMpLHIub3B0aW9ucy5ub2NsaXA9ITApLGEmJmEub3B0aW9ucy52aXNpYmxlJiYoYS5vcHRpb25zLm5vY2xpcD0hMCkpfSxkZXN0cm95OmZ1bmN0aW9uKCl7b2kuZm4uZGVzdHJveS5jYWxsKHRoaXMpLGRlbGV0ZSB0aGlzLnBhcmVudH19KSxjdD1vaS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzO29pLmZuLmluaXQuY2FsbChpLHQpLGkuc2VyaWVzPWUsaS5pbml0U2VyaWVzKCksaS5jaGFydHM9W10saS5vcHRpb25zLmxlZ2VuZC5pdGVtcz1bXSxpLmF4ZXM9W10saS5jcm9zc2hhaXJzPVtdLGkuY3JlYXRlUGFuZXMoKSxpLnJlbmRlcigpLGkuY3JlYXRlQ3Jvc3NoYWlycygpfSxvcHRpb25zOntzZXJpZXM6W10scGxvdEFyZWE6e21hcmdpbjp7fX0sYmFja2dyb3VuZDpcIlwiLGJvcmRlcjp7Y29sb3I6Wmksd2lkdGg6MH0sbGVnZW5kOntpbmFjdGl2ZUl0ZW1zOntsYWJlbHM6e2NvbG9yOlwiIzkxOTE5MVwifSxtYXJrZXJzOntjb2xvcjpcIiM5MTkxOTFcIn19fX0saW5pdFNlcmllczpmdW5jdGlvbigpe3ZhciBlLHQsaT10aGlzLnNlcmllcztmb3IoZT0wO2U8aS5sZW5ndGg7ZSsrKXQ9aVtlXSx0LmluZGV4PWV9LGNyZWF0ZVBhbmVzOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe1wic3RyaW5nXCI9PXR5cGVvZiBlLnRpdGxlJiYoZS50aXRsZT17dGV4dDplLnRpdGxlfSksZS50aXRsZT1YdCh7fSx0LnRpdGxlLGUudGl0bGUpfXZhciB0LGksbixvPXRoaXMscj17dGl0bGU6e2NvbG9yOihvLm9wdGlvbnMudGl0bGV8fHt9KS5jb2xvcn19LGE9W10scz1vLm9wdGlvbnMucGFuZXN8fFtdLGw9T3QubWF4KHMubGVuZ3RoLDEpO2Zvcih0PTA7dDxsO3QrKyluPXNbdF18fHt9LGUobixyKSxpPW5ldyBzdChuKSxpLnBhbmVJbmRleD10LGEucHVzaChpKSxvLmFwcGVuZChpKTtvLnBhbmVzPWF9LGNyZWF0ZUNyb3NzaGFpcnM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG8scixhPXRoaXM7Zm9yKGU9ZXx8YS5wYW5lcyx0PTA7dDxlLmxlbmd0aDt0KyspZm9yKG49ZVt0XSxpPTA7aTxuLmF4ZXMubGVuZ3RoO2krKylvPW4uYXhlc1tpXSxvLm9wdGlvbnMuY3Jvc3NoYWlyJiZvLm9wdGlvbnMuY3Jvc3NoYWlyLnZpc2libGUmJihyPW5ldyB3dChvLG8ub3B0aW9ucy5jcm9zc2hhaXIpLGEuY3Jvc3NoYWlycy5wdXNoKHIpLG4uY29udGVudC5hcHBlbmQocikpfSxyZW1vdmVDcm9zc2hhaXJzOmZ1bmN0aW9uKGUpe3ZhciB0LGksbj10aGlzLG89bi5jcm9zc2hhaXJzLHI9ZS5heGVzO2Zvcih0PW8ubGVuZ3RoLTE7dD49MDt0LS0pZm9yKGk9MDtpPHIubGVuZ3RoO2krKylpZihvW3RdLmF4aXM9PT1yW2ldKXtvLnNwbGljZSh0LDEpO2JyZWFrfX0saGlkZUNyb3NzaGFpcnM6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuY3Jvc3NoYWlycztmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uaGlkZSgpfSxmaW5kUGFuZTpmdW5jdGlvbihlKXt2YXIgdCxpLG49dGhpcyxvPW4ucGFuZXM7Zm9yKHQ9MDt0PG8ubGVuZ3RoO3QrKylpZihvW3RdLm9wdGlvbnMubmFtZT09PWUpe2k9b1t0XTticmVha31yZXR1cm4gaXx8b1swXX0sZmluZFBvaW50UGFuZTpmdW5jdGlvbihlKXt2YXIgdCxpLG49dGhpcyxvPW4ucGFuZXM7Zm9yKHQ9MDt0PG8ubGVuZ3RoO3QrKylpZihvW3RdLmJveC5jb250YWluc1BvaW50KGUpKXtpPW9bdF07YnJlYWt9cmV0dXJuIGl9LGFwcGVuZEF4aXM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXQuZmluZFBhbmUoZS5vcHRpb25zLnBhbmUpO2kuYXBwZW5kQXhpcyhlKSx0LmF4ZXMucHVzaChlKSxlLnBsb3RBcmVhPXR9LHJlbW92ZUF4aXM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuPXRoaXMsbz1bXTtmb3IodD0wO3Q8bi5heGVzLmxlbmd0aDt0KyspaT1uLmF4ZXNbdF0sZSE9PWk/by5wdXNoKGkpOmkuZGVzdHJveSgpO24uYXhlcz1vfSxhcHBlbmRDaGFydDpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXM7aS5jaGFydHMucHVzaChlKSx0P3QuYXBwZW5kQ2hhcnQoZSk6aS5hcHBlbmQoZSl9LHJlbW92ZUNoYXJ0OmZ1bmN0aW9uKGUpe3ZhciB0LGksbj10aGlzLG89W107Zm9yKHQ9MDt0PG4uY2hhcnRzLmxlbmd0aDt0KyspaT1uLmNoYXJ0c1t0XSxpIT09ZT9vLnB1c2goaSk6aS5kZXN0cm95KCk7bi5jaGFydHM9b30sYWRkVG9MZWdlbmQ6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG8scixhLHMsbCxjLGg9ZS5sZW5ndGgsdT1bXSxwPXRoaXMub3B0aW9ucy5sZWdlbmQsZj1wLmxhYmVsc3x8e30sZD1wLmluYWN0aXZlSXRlbXN8fHt9LGc9ZC5sYWJlbHN8fHt9O2Zvcih0PTA7dDxoO3QrKylpPWVbdF0sbD1pLnZpc2libGUhPT0hMSxpLnZpc2libGVJbkxlZ2VuZCE9PSExJiYobj1pLm5hbWV8fFwiXCIsYz1sP2YudGVtcGxhdGU6Zy50ZW1wbGF0ZXx8Zi50ZW1wbGF0ZSxjJiYobj1LdChjKSh7dGV4dDpuLHNlcmllczppfSkpLG89aS5jb2xvcixzPWkuX2RlZmF1bHRzLFp0KG8pJiZzJiYobz1zLmNvbG9yKSxsPyhyPXt9LGE9byk6KHI9e2NvbG9yOmcuY29sb3IsZm9udDpnLmZvbnR9LGE9ZC5tYXJrZXJzLmNvbG9yKSxuJiZ1LnB1c2goe3RleHQ6bixsYWJlbHM6cixtYXJrZXJDb2xvcjphLHNlcmllczppLGFjdGl2ZTpsfSkpO1RpKHAuaXRlbXMsdSl9LGdyb3VwQXhlczpmdW5jdGlvbihlKXt2YXIgdCxpLG4sbyxyPVtdLGE9W107Zm9yKG49MDtuPGUubGVuZ3RoO24rKylmb3IodD1lW25dLmF4ZXMsbz0wO288dC5sZW5ndGg7bysrKWk9dFtvXSxpLm9wdGlvbnMudmVydGljYWw/YS5wdXNoKGkpOnIucHVzaChpKTtyZXR1cm57eDpyLHk6YSxhbnk6ci5jb25jYXQoYSl9fSxncm91cFNlcmllc0J5UGFuZTpmdW5jdGlvbigpe3ZhciBlLHQsaSxuPXRoaXMsbz1uLnNlcmllcyxyPXt9O2ZvcihlPTA7ZTxvLmxlbmd0aDtlKyspaT1vW2VdLHQ9bi5zZXJpZXNQYW5lTmFtZShpKSxyW3RdP3JbdF0ucHVzaChpKTpyW3RdPVtpXTtyZXR1cm4gcn0sZmlsdGVyVmlzaWJsZVNlcmllczpmdW5jdGlvbihlKXt2YXIgdCxpLG49W107Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKylpPWVbdF0saS52aXNpYmxlIT09ITEmJm4ucHVzaChpKTtyZXR1cm4gbn0scmVmbG93OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10Lm9wdGlvbnMucGxvdEFyZWEsbj10LnBhbmVzLG89d2koaS5tYXJnaW4pO3QuYm94PWUuY2xvbmUoKS51bnBhZChvKSx0LnJlZmxvd1BhbmVzKCksdC5yZWZsb3dBeGVzKG4pLHQucmVmbG93Q2hhcnRzKG4pfSxyZWRyYXc6ZnVuY3Rpb24oZSl7dmFyIHQsaT10aGlzO2ZvcihlPVtdLmNvbmNhdChlKSx0aGlzLmluaXRTZXJpZXMoKSx0PTA7dDxlLmxlbmd0aDt0KyspaS5yZW1vdmVDcm9zc2hhaXJzKGVbdF0pLGVbdF0uZW1wdHkoKTtmb3IoaS5yZW5kZXIoZSksaS5yZWZsb3dBeGVzKGkucGFuZXMpLGkucmVmbG93Q2hhcnRzKGUpLGkuY3JlYXRlQ3Jvc3NoYWlycyhlKSx0PTA7dDxlLmxlbmd0aDt0KyspZVt0XS5yZWZyZXNoKCl9LGF4aXNDcm9zc2luZ1ZhbHVlczpmdW5jdGlvbihlLHQpe3ZhciBpLG49ZS5vcHRpb25zLG89W10uY29uY2F0KG4uYXhpc0Nyb3NzaW5nVmFsdWVzfHxuLmF4aXNDcm9zc2luZ1ZhbHVlKSxyPXQubGVuZ3RoLW8ubGVuZ3RoLGE9b1swXXx8MDtmb3IoaT0wO2k8cjtpKyspby5wdXNoKGEpO3JldHVybiBvfSxhbGlnbkF4aXNUbzpmdW5jdGlvbihlLHQsaSxuKXt2YXIgbz1lLmdldFNsb3QoaSxpLCEwKSxyPWUub3B0aW9ucy5yZXZlcnNlPzI6MSxhPXQuZ2V0U2xvdChuLG4sITApLHM9dC5vcHRpb25zLnJldmVyc2U/MjoxLGw9ZS5ib3gudHJhbnNsYXRlKGFbdnIrc10tb1t2cityXSxhW3lyK3NdLW9beXIrcl0pO2UucGFuZSE9PXQucGFuZSYmbC50cmFuc2xhdGUoMCxlLnBhbmUuYm94LnkxLXQucGFuZS5ib3gueTEpLGUucmVmbG93KGwpfSxhbGlnbkF4ZXM6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuLG8scixhLHMsbD10aGlzLGM9ZVswXSxoPXRbMF0sdT1sLmF4aXNDcm9zc2luZ1ZhbHVlcyhjLHQpLHA9bC5heGlzQ3Jvc3NpbmdWYWx1ZXMoaCxlKSxmPXt9LGQ9e30sZz17fSxtPXt9O2ZvcihzPTA7czx0Lmxlbmd0aDtzKyspYT10W3NdLG89YS5wYW5lLHI9by5pZCxpPWllKGUsbyl8fGMsbj11LGkhPT1jJiYobj1sLmF4aXNDcm9zc2luZ1ZhbHVlcyhpLHQpKSxsLmFsaWduQXhpc1RvKGEsaSxwW3NdLG5bc10pLGEub3B0aW9ucy5fb3ZlcmxhcHx8KENpKGEubGluZUJveCgpLngxKT09PUNpKGkubGluZUJveCgpLngxKSYmKGZbcl0mJmEucmVmbG93KGEuYm94LmFsaWduVG8oZltyXS5ib3gsWG4pLnRyYW5zbGF0ZSgtYS5vcHRpb25zLm1hcmdpbiwwKSksZltyXT1hKSxDaShhLmxpbmVCb3goKS54Mik9PT1DaShpLmxpbmVCb3goKS54MikmJihhLl9taXJyb3JlZHx8KGEub3B0aW9ucy5sYWJlbHMubWlycm9yPSFhLm9wdGlvbnMubGFiZWxzLm1pcnJvcixhLl9taXJyb3JlZD0hMCksbC5hbGlnbkF4aXNUbyhhLGkscFtzXSxuW3NdKSxkW3JdJiZhLnJlZmxvdyhhLmJveC5hbGlnblRvKGRbcl0uYm94LFJvKS50cmFuc2xhdGUoYS5vcHRpb25zLm1hcmdpbiwwKSksZFtyXT1hKSwwIT09cyYmaC5wYW5lPT09YS5wYW5lJiYoYS5hbGlnblRvKGgpLGEucmVmbG93KGEuYm94KSkpO2ZvcihzPTA7czxlLmxlbmd0aDtzKyspYT1lW3NdLG89YS5wYW5lLHI9by5pZCxpPWllKHQsbyl8fGgsbj1wLGkhPT1oJiYobj1sLmF4aXNDcm9zc2luZ1ZhbHVlcyhpLGUpKSxsLmFsaWduQXhpc1RvKGEsaSx1W3NdLG5bc10pLGEub3B0aW9ucy5fb3ZlcmxhcHx8KENpKGEubGluZUJveCgpLnkxKT09PUNpKGkubGluZUJveCgpLnkxKSYmKGEuX21pcnJvcmVkfHwoYS5vcHRpb25zLmxhYmVscy5taXJyb3I9IWEub3B0aW9ucy5sYWJlbHMubWlycm9yLGEuX21pcnJvcmVkPSEwKSxsLmFsaWduQXhpc1RvKGEsaSx1W3NdLG5bc10pLGdbcl0mJmEucmVmbG93KGEuYm94LmFsaWduVG8oZ1tyXS5ib3gsb3IpLnRyYW5zbGF0ZSgwLC1hLm9wdGlvbnMubWFyZ2luKSksZ1tyXT1hKSxDaShhLmxpbmVCb3goKS55Mix1bik9PT1DaShpLmxpbmVCb3goKS55Mix1bikmJihtW3JdJiZhLnJlZmxvdyhhLmJveC5hbGlnblRvKG1bcl0uYm94LFFpKS50cmFuc2xhdGUoMCxhLm9wdGlvbnMubWFyZ2luKSksbVtyXT1hKSwwIT09cyYmKGEuYWxpZ25UbyhjKSxhLnJlZmxvdyhhLmJveCkpKX0sc2hyaW5rQXhpc1dpZHRoOmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvPXRoaXMscj1vLmdyb3VwQXhlcyhlKS5hbnksYT1QKHIpLHM9MDtmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWk9ZVt0XSxpLmF4ZXMubGVuZ3RoPjAmJihzPU90Lm1heChzLGEud2lkdGgoKS1pLmNvbnRlbnRCb3gud2lkdGgoKSkpO2lmKDAhPT1zKWZvcih0PTA7dDxyLmxlbmd0aDt0Kyspbj1yW3RdLG4ub3B0aW9ucy52ZXJ0aWNhbHx8bi5yZWZsb3cobi5ib3guc2hyaW5rKHMsMCkpfSxzaHJpbmtBeGlzSGVpZ2h0OmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHIsYSxzO2Zvcih0PTA7dDxlLmxlbmd0aDt0KyspaWYoaT1lW3RdLG49aS5heGVzLG89T3QubWF4KDAsUChuKS5oZWlnaHQoKS1pLmNvbnRlbnRCb3guaGVpZ2h0KCkpLDAhPT1vKXtmb3Iocj0wO3I8bi5sZW5ndGg7cisrKWE9bltyXSxhLm9wdGlvbnMudmVydGljYWwmJmEucmVmbG93KGEuYm94LnNocmluaygwLG8pKTtzPSEwfXJldHVybiBzfSxmaXRBeGVzOmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHIsYSxzLGwsYz10aGlzLGg9Yy5ncm91cEF4ZXMoZSkuYW55LHU9MDtmb3Iocz0wO3M8ZS5sZW5ndGg7cysrKWlmKHI9ZVtzXSxcbiAgICAgICAgdD1yLmF4ZXMsaT1yLmNvbnRlbnRCb3gsdC5sZW5ndGg+MClmb3Iobj1QKHQpLHU9T3QubWF4KHUsaS54MS1uLngxKSxvPU90Lm1heChpLnkxLW4ueTEsaS55Mi1uLnkyKSxsPTA7bDx0Lmxlbmd0aDtsKyspYT10W2xdLGEucmVmbG93KGEuYm94LnRyYW5zbGF0ZSgwLG8pKTtmb3Iocz0wO3M8aC5sZW5ndGg7cysrKWE9aFtzXSxhLnJlZmxvdyhhLmJveC50cmFuc2xhdGUodSwwKSl9LHJlZmxvd0F4ZXM6ZnVuY3Rpb24oZSl7dmFyIHQsaT10aGlzLG49aS5ncm91cEF4ZXMoZSk7Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKylpLnJlZmxvd1BhbmVBeGVzKGVbdF0pO24ueC5sZW5ndGg+MCYmbi55Lmxlbmd0aD4wJiYoaS5hbGlnbkF4ZXMobi54LG4ueSksaS5zaHJpbmtBeGlzV2lkdGgoZSksaS5hdXRvUm90YXRlQXhpc0xhYmVscyhuKSxpLmFsaWduQXhlcyhuLngsbi55KSxpLnNocmlua0F4aXNXaWR0aChlKSYmaS5hbGlnbkF4ZXMobi54LG4ueSksaS5zaHJpbmtBeGlzSGVpZ2h0KGUpLGkuYWxpZ25BeGVzKG4ueCxuLnkpLGkuc2hyaW5rQXhpc0hlaWdodChlKSYmaS5hbGlnbkF4ZXMobi54LG4ueSksaS5maXRBeGVzKGUpKX0sYXV0b1JvdGF0ZUF4aXNMYWJlbHM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG89dGhpcy5heGVzLHI9dGhpcy5wYW5lcztmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXQ9b1tpXSx0LmF1dG9Sb3RhdGVMYWJlbHMoKSYmKG49ITApO2lmKG4pe2ZvcihpPTA7aTxyLmxlbmd0aDtpKyspdGhpcy5yZWZsb3dQYW5lQXhlcyhyW2ldKTtlLngubGVuZ3RoPjAmJmUueS5sZW5ndGg+MCYmKHRoaXMuYWxpZ25BeGVzKGUueCxlLnkpLHRoaXMuc2hyaW5rQXhpc1dpZHRoKHIpKX19LHJlZmxvd1BhbmVBeGVzOmZ1bmN0aW9uKGUpe3ZhciB0LGk9ZS5heGVzLG49aS5sZW5ndGg7aWYobj4wKWZvcih0PTA7dDxuO3QrKylpW3RdLnJlZmxvdyhlLmNvbnRlbnRCb3gpfSxyZWZsb3dDaGFydHM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuPXRoaXMsbz1uLmNoYXJ0cyxyPW8ubGVuZ3RoLGE9bi5ib3g7Zm9yKGk9MDtpPHI7aSsrKXQ9b1tpXS5wYW5lLHQmJiFBaSh0LGUpfHxvW2ldLnJlZmxvdyhhKX0scmVmbG93UGFuZXM6ZnVuY3Rpb24oKXt2YXIgZSx0LGksbixvLHI9dGhpcyxhPXIuYm94LHM9ci5wYW5lcyxsPXMubGVuZ3RoLGM9YS5oZWlnaHQoKSxoPWwsdT0wLHA9YS55MTtmb3IoZT0wO2U8bDtlKyspdD1zW2VdLG49dC5vcHRpb25zLmhlaWdodCx0Lm9wdGlvbnMud2lkdGg9YS53aWR0aCgpLHQub3B0aW9ucy5oZWlnaHQ/KG4uaW5kZXhPZiYmbi5pbmRleE9mKFwiJVwiKSYmKG89cGFyc2VJbnQobiwxMCkvMTAwLHQub3B0aW9ucy5oZWlnaHQ9byphLmhlaWdodCgpKSx0LnJlZmxvdyhhLmNsb25lKCkpLGMtPXQub3B0aW9ucy5oZWlnaHQpOnUrKztmb3IoZT0wO2U8bDtlKyspdD1zW2VdLHQub3B0aW9ucy5oZWlnaHR8fCh0Lm9wdGlvbnMuaGVpZ2h0PWMvdSk7Zm9yKGU9MDtlPGw7ZSsrKXQ9c1tlXSxpPWEuY2xvbmUoKS5tb3ZlKGEueDEscCksdC5yZWZsb3coaSksaC0tLHArPXQub3B0aW9ucy5oZWlnaHR9LGJhY2tncm91bmRCb3g6ZnVuY3Rpb24oKXt2YXIgZSx0LGksbixvLHIsYT10aGlzLHM9YS5heGVzLGw9cy5sZW5ndGg7Zm9yKGk9MDtpPGw7aSsrKWZvcihvPXNbaV0sbj0wO248bDtuKyspcj1zW25dLG8ub3B0aW9ucy52ZXJ0aWNhbCE9PXIub3B0aW9ucy52ZXJ0aWNhbCYmKGU9by5saW5lQm94KCkuY2xvbmUoKS53cmFwKHIubGluZUJveCgpKSx0PXQ/dC53cmFwKGUpOmUpO3JldHVybiB0fHxhLmJveH0sY2hhcnRzQm94ZXM6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMucGFuZXMsaT1bXTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWkucHVzaCh0W2VdLmNoYXJ0c0JveCgpKTtyZXR1cm4gaX0sYWRkQmFja2dyb3VuZFBhdGhzOmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcy5jaGFydHNCb3hlcygpO2Zvcih0PTA7dDxpLmxlbmd0aDt0KyspZS5wYXRocy5wdXNoKE9pLlBhdGguZnJvbVJlY3QoaVt0XS50b1JlY3QoKSkpfSxiYWNrZ3JvdW5kQ29udGFpbnNQb2ludDpmdW5jdGlvbihlKXt2YXIgdCxpPXRoaXMuY2hhcnRzQm94ZXMoKTtmb3IodD0wO3Q8aS5sZW5ndGg7dCsrKWlmKGlbdF0uY29udGFpbnNQb2ludChlKSlyZXR1cm4hMH0sY3JlYXRlVmlzdWFsOmZ1bmN0aW9uKCl7dmFyIGUsdCxpLG4sbztvaS5mbi5jcmVhdGVWaXN1YWwuY2FsbCh0aGlzKSxlPXRoaXMub3B0aW9ucy5wbG90QXJlYSx0PWUuYm9yZGVyfHx7fSxpPWUuYmFja2dyb3VuZCxuPWUub3BhY2l0eSxQaS5pc1RyYW5zcGFyZW50KGkpJiYoaT14cixuPTApLG89dGhpcy5fYmdWaXN1YWw9bmV3IE9pLk11bHRpUGF0aCh7ZmlsbDp7Y29sb3I6aSxvcGFjaXR5Om59LHN0cm9rZTp7Y29sb3I6dC53aWR0aD90LmNvbG9yOlwiXCIsd2lkdGg6dC53aWR0aCxkYXNoVHlwZTp0LmRhc2hUeXBlfSx6SW5kZXg6LTF9KSx0aGlzLmFkZEJhY2tncm91bmRQYXRocyhvKSx0aGlzLmFwcGVuZFZpc3VhbChvKX0scG9pbnRzQnlDYXRlZ29yeUluZGV4OmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHIsYT10aGlzLmNoYXJ0cyxzPVtdO2lmKG51bGwhPT1lKWZvcih0PTA7dDxhLmxlbmd0aDt0KyspaWYocj1hW3RdLFwiX25hdmlnYXRvclwiIT09ci5wYW5lLm9wdGlvbnMubmFtZSYmKG49YVt0XS5jYXRlZ29yeVBvaW50c1tlXSxuJiZuLmxlbmd0aCkpZm9yKGk9MDtpPG4ubGVuZ3RoO2krKylvPW5baV0sbyYmUmkoby52YWx1ZSkmJm51bGwhPT1vLnZhbHVlJiZzLnB1c2gobyk7cmV0dXJuIHN9LHBvaW50c0J5U2VyaWVzSW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZmlsdGVyUG9pbnRzKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNlcmllcy5pbmRleD09PWV9KX0scG9pbnRzQnlTZXJpZXNOYW1lOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmZpbHRlclBvaW50cyhmdW5jdGlvbih0KXtyZXR1cm4gdC5zZXJpZXMubmFtZT09PWV9KX0sZmlsdGVyUG9pbnRzOmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHIsYT10aGlzLmNoYXJ0cyxzPVtdO2ZvcihuPTA7bjxhLmxlbmd0aDtuKyspZm9yKHI9YVtuXSx0PXIucG9pbnRzLG89MDtvPHQubGVuZ3RoO28rKylpPXRbb10saSYmZShpKSYmcy5wdXNoKGkpO3JldHVybiBzfSxmaW5kUG9pbnQ6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG8scixhPXRoaXMuY2hhcnRzO2ZvcihuPTA7bjxhLmxlbmd0aDtuKyspZm9yKHI9YVtuXSx0PXIucG9pbnRzLG89MDtvPHQubGVuZ3RoO28rKylpZihpPXRbb10saSYmZShpKSlyZXR1cm4gaX0scGFuZUJ5UG9pbnQ6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuPXRoaXMsbz1uLnBhbmVzO2ZvcihpPTA7aTxvLmxlbmd0aDtpKyspaWYodD1vW2ldLHQuYm94LmNvbnRhaW5zUG9pbnQoZSkpcmV0dXJuIHR9fSksaHQ9e2hvdmVyOmZ1bmN0aW9uKGUsdCl7dGhpcy5fZGlzcGF0Y2hFdmVudChlLHQsa28pfSxjbGljazpmdW5jdGlvbihlLHQpe3RoaXMuX2Rpc3BhdGNoRXZlbnQoZSx0LEFvKX19LHV0PWN0LmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLHQpe3ZhciBpLG4sbz10aGlzO2lmKG8ubmFtZWRDYXRlZ29yeUF4ZXM9e30sby5uYW1lZFZhbHVlQXhlcz17fSxvLnZhbHVlQXhpc1JhbmdlVHJhY2tlcj1uZXcgcHQsZS5sZW5ndGg+MClmb3Ioby5pbnZlcnRBeGVzPUFpKGVbMF0udHlwZSxbcWksZW4sZHIsdXIsQ28sVW4scHJdKSxpPTA7aTxlLmxlbmd0aDtpKyspaWYobj1lW2ldLnN0YWNrLG4mJlwiMTAwJVwiPT09bi50eXBlKXtvLnN0YWNrMTAwPSEwO2JyZWFrfWN0LmZuLmluaXQuY2FsbChvLGUsdCl9LG9wdGlvbnM6e2NhdGVnb3J5QXhpczp7Y2F0ZWdvcmllczpbXX0sdmFsdWVBeGlzOnt9fSxyZW5kZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztlPWV8fHQucGFuZXMsdC5jcmVhdGVDYXRlZ29yeUF4ZXMoZSksdC5hZ2dyZWdhdGVDYXRlZ29yaWVzKGUpLHQuY3JlYXRlQ2F0ZWdvcnlBeGVzTGFiZWxzKGUpLHQuY3JlYXRlQ2hhcnRzKGUpLHQuY3JlYXRlVmFsdWVBeGVzKGUpfSxyZW1vdmVBeGlzOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT1lLm9wdGlvbnMubmFtZTtjdC5mbi5yZW1vdmVBeGlzLmNhbGwodCxlKSxlIGluc3RhbmNlb2YgY2U/ZGVsZXRlIHQubmFtZWRDYXRlZ29yeUF4ZXNbaV06KHQudmFsdWVBeGlzUmFuZ2VUcmFja2VyLnJlc2V0KGkpLGRlbGV0ZSB0Lm5hbWVkVmFsdWVBeGVzW2ldKSxlPT09dC5jYXRlZ29yeUF4aXMmJmRlbGV0ZSB0LmNhdGVnb3J5QXhpcyxlPT09dC52YWx1ZUF4aXMmJmRlbGV0ZSB0LnZhbHVlQXhpc30sY3JlYXRlQ2hhcnRzOmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHIsYSxzPXRoaXMuZ3JvdXBTZXJpZXNCeVBhbmUoKTtmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKGk9ZVt0XSxuPXNbaS5vcHRpb25zLm5hbWV8fFwiZGVmYXVsdFwiXXx8W10sdGhpcy5hZGRUb0xlZ2VuZChuKSxvPXRoaXMuZmlsdGVyVmlzaWJsZVNlcmllcyhuKSlmb3Iocj10aGlzLmdyb3VwU2VyaWVzQnlDYXRlZ29yeUF4aXMobyksYT0wO2E8ci5sZW5ndGg7YSsrKXRoaXMuY3JlYXRlQ2hhcnRHcm91cChyW2FdLGkpfSxjcmVhdGVDaGFydEdyb3VwOmZ1bmN0aW9uKGUsdCl7dGhpcy5jcmVhdGVBcmVhQ2hhcnQoTyhlLFtIaSx1cl0pLHQpLHRoaXMuY3JlYXRlQmFyQ2hhcnQoTyhlLFtobixxaV0pLHQpLHRoaXMuY3JlYXRlUmFuZ2VCYXJDaGFydChPKGUsW1BvLENvXSksdCksdGhpcy5jcmVhdGVCdWxsZXRDaGFydChPKGUsW2VuLGZyXSksdCksdGhpcy5jcmVhdGVDYW5kbGVzdGlja0NoYXJ0KE8oZSx0biksdCksdGhpcy5jcmVhdGVCb3hQbG90Q2hhcnQoTyhlLFskaSxwcl0pLHQpLHRoaXMuY3JlYXRlT0hMQ0NoYXJ0KE8oZSx5byksdCksdGhpcy5jcmVhdGVXYXRlcmZhbGxDaGFydChPKGUsW2dyLFVuXSksdCksdGhpcy5jcmVhdGVMaW5lQ2hhcnQoTyhlLFtLbixkcl0pLHQpfSxhZ2dyZWdhdGVDYXRlZ29yaWVzOmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHIsYT10aGlzLHM9YS5zcmNTZXJpZXN8fGEuc2VyaWVzLGw9W107Zm9yKHQ9MDt0PHMubGVuZ3RoO3QrKylpPXNbdF0sbj1hLnNlcmllc0NhdGVnb3J5QXhpcyhpKSxvPWEuZmluZFBhbmUobi5vcHRpb25zLnBhbmUpLHI9VChuLm9wdGlvbnMudHlwZSxtbiksKHJ8fGkuY2F0ZWdvcnlGaWVsZCkmJkFpKG8sZSk/aT1hLmFnZ3JlZ2F0ZVNlcmllcyhpLG4pOihCKG4ub3B0aW9ucy5taW4pfHxCKG4ub3B0aW9ucy5tYXgpKSYmKGk9YS5maWx0ZXJTZXJpZXMoaSxuKSksbC5wdXNoKGkpO2Euc3JjU2VyaWVzPXMsYS5zZXJpZXM9bH0sZmlsdGVyU2VyaWVzOmZ1bmN0aW9uKGUsdCl7dmFyIGksbixvLHI9dC50b3RhbFJhbmdlSW5kaWNlcygpLGE9dC5vcHRpb25zLmp1c3RpZmllZCxzPUFpKGUudHlwZSxbS24sZHIsSGksdXJdKTtyZXR1cm4gci5taW49Qih0Lm9wdGlvbnMubWluKT9PdC5mbG9vcihyLm1pbik6MCxyLm1heD1CKHQub3B0aW9ucy5tYXgpP2E/T3QuZmxvb3Ioci5tYXgpKzE6T3QuY2VpbChyLm1heCk6ZS5kYXRhLmxlbmd0aCxlPVh0KHt9LGUpLHMmJihuPXIubWluLTEsbz10Lm9wdGlvbnMuc3JjQ2F0ZWdvcmllc3x8W10sbj49MCYmbjxlLmRhdGEubGVuZ3RoJiYoaT1uLGUuX291dE9mUmFuZ2VNaW5Qb2ludD17aXRlbTplLmRhdGFbaV0sY2F0ZWdvcnk6b1tpXSxjYXRlZ29yeUl4Oi0xfSksci5tYXg8ZS5kYXRhLmxlbmd0aCYmKGk9ci5tYXgsZS5fb3V0T2ZSYW5nZU1heFBvaW50PXtpdGVtOmUuZGF0YVtpXSxjYXRlZ29yeTpvW2ldLGNhdGVnb3J5SXg6ci5tYXgtci5taW59KSksdC5fc2VyaWVzTWF4PU90Lm1heCh0Ll9zZXJpZXNNYXh8fDAsZS5kYXRhLmxlbmd0aCksZS5kYXRhPShlLmRhdGF8fFtdKS5zbGljZShyLm1pbixyLm1heCksZX0sYWdncmVnYXRlU2VyaWVzOmZ1bmN0aW9uKGUsdCl7dmFyIGksbyxyLGEscyxsLGMsaD10Lm9wdGlvbnMsdT1UKHQub3B0aW9ucy50eXBlLG1uKSxkPWguY2F0ZWdvcmllcyxnPWguc3JjQ2F0ZWdvcmllc3x8ZCxtPWUuZGF0YSx4PVtdLHY9WHQoe30sZSkseT1YdCh7fSxlKSxfPWguZGF0YUl0ZW1zfHxbXSxiPXAsdz1QaS5NSU5fTlVNLEE9UGkuTUFYX05VTSxrPUFpKGUudHlwZSxbS24sZHIsSGksdXJdKTtmb3Iodi5kYXRhPWE9W10sdSYmKGI9ZiksaT0wO2k8bS5sZW5ndGg7aSsrKW89ZS5jYXRlZ29yeUZpZWxkP2IoZS5jYXRlZ29yeUZpZWxkLG1baV0pOmdbaV0sUmkobykmJihyPXQuY2F0ZWdvcnlJbmRleChvKSwwPD1yJiZyPGQubGVuZ3RoPyh4W3JdPXhbcl18fFtdLHhbcl0ucHVzaChpKSk6ayYmKHI8MD9yPT13P2wucG9pbnRzLnB1c2goaSk6cj53JiYodz1yLGw9e2NhdGVnb3J5Om8scG9pbnRzOltpXX0pOnI+PWQubGVuZ3RoJiYocj09QT9jLnBvaW50cy5wdXNoKGkpOnI8QSYmKEE9cixjPXtjYXRlZ29yeTpvLHBvaW50czpbaV19KSkpKTtmb3Iocz1uZXcgUnQoeSxvZS5jdXJyZW50LG4uY3VycmVudCksaT0wO2k8ZC5sZW5ndGg7aSsrKWFbaV09cy5hZ2dyZWdhdGVQb2ludHMoeFtpXSxkW2ldKSx4W2ldJiYoX1tpXT1hW2ldKTtyZXR1cm4gbCYmYS5sZW5ndGgmJih2Ll9vdXRPZlJhbmdlTWluUG9pbnQ9e2l0ZW06cy5hZ2dyZWdhdGVQb2ludHMobC5wb2ludHMsbC5jYXRlZ29yeSksY2F0ZWdvcnlJeDp3LGNhdGVnb3J5OmwuY2F0ZWdvcnl9KSxjJiZhLmxlbmd0aCYmKHYuX291dE9mUmFuZ2VNYXhQb2ludD17aXRlbTpzLmFnZ3JlZ2F0ZVBvaW50cyhjLnBvaW50cyxjLmNhdGVnb3J5KSxjYXRlZ29yeUl4OkEsY2F0ZWdvcnk6Yy5jYXRlZ29yeX0pLHQub3B0aW9ucy5kYXRhSXRlbXM9Xyx2fSxhcHBlbmRDaGFydDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgaT10aGlzLG49ZS5vcHRpb25zLnNlcmllcyxvPWkuc2VyaWVzQ2F0ZWdvcnlBeGlzKG5bMF0pLHI9by5vcHRpb25zLmNhdGVnb3JpZXMsYT1PdC5tYXgoMCxoKG4pLXIubGVuZ3RoKTthLS07KXIucHVzaChcIlwiKTtpLnZhbHVlQXhpc1JhbmdlVHJhY2tlci51cGRhdGUoZS52YWx1ZUF4aXNSYW5nZXMpLGN0LmZuLmFwcGVuZENoYXJ0LmNhbGwoaSxlLHQpfSxzZXJpZXNQYW5lTmFtZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLG49aS5vcHRpb25zLG89dC5heGlzLHI9W10uY29uY2F0KG4udmFsdWVBeGlzKSxhPWUuZ3JlcChyLGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWU9PT1vfSlbMF0scz1uLnBhbmVzfHxbe31dLGw9KHNbMF18fHt9KS5uYW1lfHxcImRlZmF1bHRcIixjPShhfHx7fSkucGFuZXx8bDtyZXR1cm4gY30sc2VyaWVzQ2F0ZWdvcnlBeGlzOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT1lLmNhdGVnb3J5QXhpcyxuPWk/dC5uYW1lZENhdGVnb3J5QXhlc1tpXTp0LmNhdGVnb3J5QXhpcztpZighbil0aHJvdyBFcnJvcihcIlVuYWJsZSB0byBsb2NhdGUgY2F0ZWdvcnkgYXhpcyB3aXRoIG5hbWUgXCIraSk7cmV0dXJuIG59LHN0YWNrYWJsZUNoYXJ0T3B0aW9uczpmdW5jdGlvbihlLHQpe3ZhciBpPWUuc3RhY2ssbj1pJiZcIjEwMCVcIj09PWkudHlwZSxvPXQub3B0aW9ucy5jbGlwO3JldHVybntpc1N0YWNrZWQ6aSxpc1N0YWNrZWQxMDA6bixjbGlwOm99fSxncm91cFNlcmllc0J5Q2F0ZWdvcnlBeGlzOmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGkoaSxuKXtyZXR1cm4gZS5ncmVwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1uJiYhZS5jYXRlZ29yeUF4aXN8fGUuY2F0ZWdvcnlBeGlzPT1pfSl9dmFyIG4sbyxyLGE9e30scz1lLm1hcCh0LGZ1bmN0aW9uKGUpe3ZhciB0PWUuY2F0ZWdvcnlBeGlzfHxcIiQkZGVmYXVsdCQkXCI7aWYoIWEuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIGFbdF09ITAsdH0pLGw9W107Zm9yKG49MDtuPHMubGVuZ3RoO24rKylvPXNbbl0scj1pKG8sbiksMCE9PXIubGVuZ3RoJiZsLnB1c2gocik7cmV0dXJuIGx9LGNyZWF0ZUJhckNoYXJ0OmZ1bmN0aW9uKGUsdCl7aWYoMCE9PWUubGVuZ3RoKXt2YXIgaT10aGlzLG49ZVswXSxvPW5ldyBiZShpLFV0KHtzZXJpZXM6ZSxpbnZlcnRBeGVzOmkuaW52ZXJ0QXhlcyxnYXA6bi5nYXAsc3BhY2luZzpuLnNwYWNpbmd9LGkuc3RhY2thYmxlQ2hhcnRPcHRpb25zKG4sdCkpKTtpLmFwcGVuZENoYXJ0KG8sdCl9fSxjcmVhdGVSYW5nZUJhckNoYXJ0OmZ1bmN0aW9uKGUsdCl7aWYoMCE9PWUubGVuZ3RoKXt2YXIgaT10aGlzLG49ZVswXSxvPW5ldyBBZShpLHtzZXJpZXM6ZSxpbnZlcnRBeGVzOmkuaW52ZXJ0QXhlcyxnYXA6bi5nYXAsc3BhY2luZzpuLnNwYWNpbmd9KTtpLmFwcGVuZENoYXJ0KG8sdCl9fSxjcmVhdGVCdWxsZXRDaGFydDpmdW5jdGlvbihlLHQpe2lmKDAhPT1lLmxlbmd0aCl7dmFyIGk9dGhpcyxuPWVbMF0sbz1uZXcga2UoaSx7c2VyaWVzOmUsaW52ZXJ0QXhlczppLmludmVydEF4ZXMsZ2FwOm4uZ2FwLHNwYWNpbmc6bi5zcGFjaW5nLGNsaXA6dC5vcHRpb25zLmNsaXB9KTtpLmFwcGVuZENoYXJ0KG8sdCl9fSxjcmVhdGVMaW5lQ2hhcnQ6ZnVuY3Rpb24oZSx0KXtpZigwIT09ZS5sZW5ndGgpe3ZhciBpPXRoaXMsbj1lWzBdLG89bmV3IERlKGksVXQoe2ludmVydEF4ZXM6aS5pbnZlcnRBeGVzLHNlcmllczplfSxpLnN0YWNrYWJsZUNoYXJ0T3B0aW9ucyhuLHQpKSk7aS5hcHBlbmRDaGFydChvLHQpfX0sY3JlYXRlQXJlYUNoYXJ0OmZ1bmN0aW9uKGUsdCl7aWYoMCE9PWUubGVuZ3RoKXt2YXIgaT10aGlzLG49ZVswXSxvPW5ldyBIZShpLFV0KHtpbnZlcnRBeGVzOmkuaW52ZXJ0QXhlcyxzZXJpZXM6ZX0saS5zdGFja2FibGVDaGFydE9wdGlvbnMobix0KSkpO2kuYXBwZW5kQ2hhcnQobyx0KX19LGNyZWF0ZU9ITENDaGFydDpmdW5jdGlvbihlLHQpe2lmKDAhPT1lLmxlbmd0aCl7dmFyIGk9dGhpcyxuPWVbMF0sbz1uZXcgS2UoaSx7aW52ZXJ0QXhlczppLmludmVydEF4ZXMsZ2FwOm4uZ2FwLHNlcmllczplLHNwYWNpbmc6bi5zcGFjaW5nLGNsaXA6dC5vcHRpb25zLmNsaXB9KTtpLmFwcGVuZENoYXJ0KG8sdCl9fSxjcmVhdGVDYW5kbGVzdGlja0NoYXJ0OmZ1bmN0aW9uKGUsdCl7aWYoMCE9PWUubGVuZ3RoKXt2YXIgaT10aGlzLG49ZVswXSxvPW5ldyBXZShpLHtpbnZlcnRBeGVzOmkuaW52ZXJ0QXhlcyxnYXA6bi5nYXAsc2VyaWVzOmUsc3BhY2luZzpuLnNwYWNpbmcsY2xpcDp0Lm9wdGlvbnMuY2xpcH0pO2kuYXBwZW5kQ2hhcnQobyx0KX19LGNyZWF0ZUJveFBsb3RDaGFydDpmdW5jdGlvbihlLHQpe2lmKDAhPT1lLmxlbmd0aCl7dmFyIGk9dGhpcyxuPWVbMF0sbz1uZXcgUWUoaSx7aW52ZXJ0QXhlczppLmludmVydEF4ZXMsZ2FwOm4uZ2FwLHNlcmllczplLHNwYWNpbmc6bi5zcGFjaW5nLGNsaXA6dC5vcHRpb25zLmNsaXB9KTtpLmFwcGVuZENoYXJ0KG8sdCl9fSxjcmVhdGVXYXRlcmZhbGxDaGFydDpmdW5jdGlvbihlLHQpe2lmKDAhPT1lLmxlbmd0aCl7dmFyIGk9dGhpcyxuPWVbMF0sbz1uZXcgcnQoaSx7c2VyaWVzOmUsaW52ZXJ0QXhlczppLmludmVydEF4ZXMsZ2FwOm4uZ2FwLHNwYWNpbmc6bi5zcGFjaW5nfSk7aS5hcHBlbmRDaGFydChvLHQpfX0sYXhpc1JlcXVpcmVzUm91bmRpbmc6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuLG8scixhPXRoaXMscz1PKGEuc2VyaWVzLFByKTtmb3IoaT0wO2k8YS5zZXJpZXMubGVuZ3RoO2krKylvPWEuc2VyaWVzW2ldLG8udHlwZSE9PUtuJiZvLnR5cGUhPT1IaXx8KHI9by5saW5lLHImJnIuc3R5bGU9PT1ObyYmcy5wdXNoKG8pKTtmb3IoaT0wO2k8cy5sZW5ndGg7aSsrKWlmKG49c1tpXS5jYXRlZ29yeUF4aXN8fFwiXCIsbj09PWV8fCFuJiYwPT09dClyZXR1cm4hMH0sYWdncmVnYXRlZEF4aXM6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuLG89dGhpcyxyPW8uc2VyaWVzO2ZvcihpPTA7aTxyLmxlbmd0aDtpKyspaWYobj1yW2ldLmNhdGVnb3J5QXhpc3x8XCJcIiwobj09PWV8fCFuJiYwPT09dCkmJnJbaV0uY2F0ZWdvcnlGaWVsZClyZXR1cm4hMH0sY3JlYXRlQ2F0ZWdvcnlBeGVzTGFiZWxzOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLmF4ZXM7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdaW5zdGFuY2VvZiBjZSYmdFtlXS5jcmVhdGVMYWJlbHMoKX0sY3JlYXRlQ2F0ZWdvcnlBeGVzOmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHIsYSxzLGwsYz10aGlzLGg9Yy5pbnZlcnRBeGVzLHU9W10uY29uY2F0KGMub3B0aW9ucy5jYXRlZ29yeUF4aXMpLHA9W107Zm9yKHQ9MDt0PHUubGVuZ3RoO3QrKylpZihpPXVbdF0sbj1jLmZpbmRQYW5lKGkucGFuZSksQWkobixlKSl7aWYoYT1pLm5hbWUsbz1pLmNhdGVnb3JpZXN8fFtdLHI9aS50eXBlfHxcIlwiLGk9WHQoe3ZlcnRpY2FsOmgsYXhpc0Nyb3NzaW5nVmFsdWU6aD9pbzowLF9kZWZlckxhYmVsczohMH0saSksUmkoaS5qdXN0aWZpZWQpfHwoaS5qdXN0aWZpZWQ9Yy5pc0p1c3RpZmllZCgpKSxjLmF4aXNSZXF1aXJlc1JvdW5kaW5nKGEsdCkmJihpLmp1c3RpZmllZD0hMSkscz1OKGksb1swXSk/bmV3IGhlKGkpOm5ldyBjZShpKSxhKXtpZihjLm5hbWVkQ2F0ZWdvcnlBeGVzW2FdKXRocm93IEVycm9yKFwiQ2F0ZWdvcnkgYXhpcyB3aXRoIG5hbWUgXCIrYStcIiBpcyBhbHJlYWR5IGRlZmluZWRcIik7Yy5uYW1lZENhdGVnb3J5QXhlc1thXT1zfXMuYXhpc0luZGV4PXQscC5wdXNoKHMpLGMuYXBwZW5kQXhpcyhzKX1sPWMuY2F0ZWdvcnlBeGlzfHxwWzBdLGMuY2F0ZWdvcnlBeGlzPWwsaD9jLmF4aXNZPWw6Yy5heGlzWD1sfSxpc0p1c3RpZmllZDpmdW5jdGlvbigpe3ZhciBlLHQsaT10aGlzLG49aS5zZXJpZXM7Zm9yKGU9MDtlPG4ubGVuZ3RoO2UrKylpZih0PW5bZV0sIUFpKHQudHlwZSxbSGksdXJdKSlyZXR1cm4hMTtyZXR1cm4hMH0sY3JlYXRlVmFsdWVBeGVzOmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHIsYSxzLGwsYyxoPXRoaXMsdT1oLnZhbHVlQXhpc1JhbmdlVHJhY2tlcixwPXUucXVlcnkoKSxmPVtdLmNvbmNhdChoLm9wdGlvbnMudmFsdWVBeGlzKSxkPWguaW52ZXJ0QXhlcyxnPXt2ZXJ0aWNhbDohZH0sbT1bXTtmb3IoaC5zdGFjazEwMCYmKGcucm91bmRUb01ham9yVW5pdD0hMSxnLmxhYmVscz17Zm9ybWF0OlwiUDBcIn0pLGM9MDtjPGYubGVuZ3RoO2MrKylpZih0PWZbY10saT1oLmZpbmRQYW5lKHQucGFuZSksQWkoaSxlKSl7aWYobD10Lm5hbWUscz1UKHQudHlwZSxKbik/e21pbjouMSxtYXg6MX06e21pbjowLG1heDoxfSxyPXUucXVlcnkobCl8fHB8fHMsMD09PWMmJnImJnAmJihyLm1pbj1PdC5taW4oci5taW4scC5taW4pLHIubWF4PU90Lm1heChyLm1heCxwLm1heCkpLGE9VCh0LnR5cGUsSm4pP2NpOmhpLG49bmV3IGEoci5taW4sci5tYXgsWHQoe30sZyx0KSksbCl7aWYoaC5uYW1lZFZhbHVlQXhlc1tsXSl0aHJvdyBFcnJvcihcIlZhbHVlIGF4aXMgd2l0aCBuYW1lIFwiK2wrXCIgaXMgYWxyZWFkeSBkZWZpbmVkXCIpO2gubmFtZWRWYWx1ZUF4ZXNbbF09bn1uLmF4aXNJbmRleD1jLG0ucHVzaChuKSxoLmFwcGVuZEF4aXMobil9bz1oLnZhbHVlQXhpc3x8bVswXSxoLnZhbHVlQXhpcz1vLGQ/aC5heGlzWD1vOmguYXhpc1k9b30sX2Rpc3BhdGNoRXZlbnQ6ZnVuY3Rpb24oZSx0LGkpe3ZhciBuLG8scixhPXRoaXMscz1lLl9ldmVudENvb3JkaW5hdGVzKHQpLGw9bmV3IHVpKHMueCxzLnkpLGM9YS5wb2ludFBhbmUobCksaD1bXSx1PVtdO2lmKGMpe2ZvcihuPWMuYXhlcyxvPTA7bzxuLmxlbmd0aDtvKyspcj1uW29dLHIuZ2V0VmFsdWU/SSh1LHIuZ2V0VmFsdWUobCkpOkkoaCxyLmdldENhdGVnb3J5KGwpKTswPT09aC5sZW5ndGgmJkkoaCxhLmNhdGVnb3J5QXhpcy5nZXRDYXRlZ29yeShsKSksaC5sZW5ndGg+MCYmdS5sZW5ndGg+MCYmZS50cmlnZ2VyKGkse2VsZW1lbnQ6YmkodCksb3JpZ2luYWxFdmVudDp0LGNhdGVnb3J5OkMoaCksdmFsdWU6Qyh1KX0pfX0scG9pbnRQYW5lOmZ1bmN0aW9uKGUpe3ZhciB0LGksbj10aGlzLG89bi5wYW5lcztmb3IoaT0wO2k8by5sZW5ndGg7aSsrKWlmKHQ9b1tpXSx0LmNvbnRlbnRCb3guY29udGFpbnNQb2ludChlKSlyZXR1cm4gdH0sdXBkYXRlQXhpc09wdGlvbnM6ZnVuY3Rpb24oZSx0KXt2YXIgaT1bXS5jb25jYXQoZSBpbnN0YW5jZW9mIGNlP3RoaXMub3B0aW9ucy5jYXRlZ29yeUF4aXM6dGhpcy5vcHRpb25zLnZhbHVlQXhpcyk7WHQoaVtlLmF4aXNJbmRleF0sdCl9fSksWHQodXQuZm4saHQpLHB0PWp0LmV4dGVuZCh7aW5pdDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5heGlzUmFuZ2VzPXt9fSx1cGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG89dGhpcyxyPW8uYXhpc1Jhbmdlcztmb3IobiBpbiBlKXQ9cltuXSxpPWVbbl0scltuXT10PXR8fHttaW46aW8sbWF4OnJvfSx0Lm1pbj1PdC5taW4odC5taW4saS5taW4pLHQubWF4PU90Lm1heCh0Lm1heCxpLm1heCl9LHJlc2V0OmZ1bmN0aW9uKGUpe3RoaXMuYXhpc1Jhbmdlc1tlXT10fSxxdWVyeTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5heGlzUmFuZ2VzW2VdfX0pLGZ0PWN0LmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXM7aS5uYW1lZFhBeGVzPXt9LGkubmFtZWRZQXhlcz17fSxpLnhBeGlzUmFuZ2VUcmFja2VyPW5ldyBwdCxpLnlBeGlzUmFuZ2VUcmFja2VyPW5ldyBwdCxjdC5mbi5pbml0LmNhbGwoaSxlLHQpfSxvcHRpb25zOnt4QXhpczp7fSx5QXhpczp7fX0scmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0LGksbixvLHI9dGhpcyxhPXIuZ3JvdXBTZXJpZXNCeVBhbmUoKTtmb3IoZT1lfHxyLnBhbmVzLHQ9MDt0PGUubGVuZ3RoO3QrKylpPWVbdF0sbj1hW2kub3B0aW9ucy5uYW1lfHxcImRlZmF1bHRcIl18fFtdLHIuYWRkVG9MZWdlbmQobiksbz1yLmZpbHRlclZpc2libGVTZXJpZXMobiksbyYmKHIuY3JlYXRlU2NhdHRlckNoYXJ0KE8obyxCbyksaSksci5jcmVhdGVTY2F0dGVyTGluZUNoYXJ0KE8obyxMbyksaSksci5jcmVhdGVCdWJibGVDaGFydChPKG8sSmkpLGkpKTtyLmNyZWF0ZUF4ZXMoZSl9LGFwcGVuZENoYXJ0OmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcztpLnhBeGlzUmFuZ2VUcmFja2VyLnVwZGF0ZShlLnhBeGlzUmFuZ2VzKSxpLnlBeGlzUmFuZ2VUcmFja2VyLnVwZGF0ZShlLnlBeGlzUmFuZ2VzKSxjdC5mbi5hcHBlbmRDaGFydC5jYWxsKGksZSx0KX0scmVtb3ZlQXhpczpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9ZS5vcHRpb25zLm5hbWU7Y3QuZm4ucmVtb3ZlQXhpcy5jYWxsKHQsZSksZS5vcHRpb25zLnZlcnRpY2FsPyh0LnlBeGlzUmFuZ2VUcmFja2VyLnJlc2V0KGkpLGRlbGV0ZSB0Lm5hbWVkWUF4ZXNbaV0pOih0LnhBeGlzUmFuZ2VUcmFja2VyLnJlc2V0KGkpLGRlbGV0ZSB0Lm5hbWVkWEF4ZXNbaV0pLGU9PT10LmF4aXNYJiZkZWxldGUgdC5heGlzWCxlPT09dC5heGlzWSYmZGVsZXRlIHQuYXhpc1l9LHNlcmllc1BhbmVOYW1lOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMsbj1pLm9wdGlvbnMsbz10LnhBeGlzLHI9W10uY29uY2F0KG4ueEF4aXMpLGE9ZS5ncmVwKHIsZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZT09PW99KVswXSxzPXQueUF4aXMsbD1bXS5jb25jYXQobi55QXhpcyksYz1lLmdyZXAobCxmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lPT09c30pWzBdLGg9bi5wYW5lc3x8W3t9XSx1PWhbMF0ubmFtZXx8XCJkZWZhdWx0XCIscD0oYXx8e30pLnBhbmV8fChjfHx7fSkucGFuZXx8dTtyZXR1cm4gcH0sY3JlYXRlU2NhdHRlckNoYXJ0OmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcztlLmxlbmd0aD4wJiZpLmFwcGVuZENoYXJ0KG5ldyBHZShpLHtzZXJpZXM6ZSxjbGlwOnQub3B0aW9ucy5jbGlwfSksdCl9LGNyZWF0ZVNjYXR0ZXJMaW5lQ2hhcnQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzO2UubGVuZ3RoPjAmJmkuYXBwZW5kQ2hhcnQobmV3IHFlKGkse3NlcmllczplLGNsaXA6dC5vcHRpb25zLmNsaXB9KSx0KX0sY3JlYXRlQnViYmxlQ2hhcnQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzO2UubGVuZ3RoPjAmJmkuYXBwZW5kQ2hhcnQobmV3IFllKGkse3NlcmllczplLGNsaXA6dC5vcHRpb25zLmNsaXB9KSx0KX0sY3JlYXRlWFlBeGlzOmZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvLHIsYSxzLGwsYyxoLHU9dGhpcyxwPWUubmFtZSxmPXQ/dS5uYW1lZFlBeGVzOnUubmFtZWRYQXhlcyxkPXQ/dS55QXhpc1JhbmdlVHJhY2tlcjp1LnhBeGlzUmFuZ2VUcmFja2VyLGc9WHQoe30sZSx7dmVydGljYWw6dH0pLG09VChnLnR5cGUsSm4pLHg9ZC5xdWVyeSgpLHY9bT97bWluOi4xLG1heDoxfTp7bWluOjAsbWF4OjF9LHk9ZC5xdWVyeShwKXx8eHx8dixfPXUuc2VyaWVzLGI9W2cubWluLGcubWF4XTtmb3Iocj0wO3I8Xy5sZW5ndGg7cisrKWlmKGE9X1tyXSxzPWFbdD9cInlBeGlzXCI6XCJ4QXhpc1wiXSxzPT1nLm5hbWV8fDA9PT1pJiYhcyl7bD1vZS5jdXJyZW50LmJpbmRQb2ludChhLDApLnZhbHVlRmllbGRzLGIucHVzaChsW3Q/XCJ5XCI6XCJ4XCJdKTticmVha31mb3IoMD09PWkmJngmJih5Lm1pbj1PdC5taW4oeS5taW4seC5taW4pLHkubWF4PU90Lm1heCh5Lm1heCx4Lm1heCkpLGg9MDtoPGIubGVuZ3RoO2grKylpZihiW2hdaW5zdGFuY2VvZiBEYXRlKXtjPSEwO2JyZWFrfWlmKG89VChnLnR5cGUsbW4pfHwhZy50eXBlJiZjP3VlOm0/Y2k6aGksbj1uZXcgbyh5Lm1pbix5Lm1heCxnKSxwKXtpZihmW3BdKXRocm93IEVycm9yKCh0P1wiWVwiOlwiWFwiKStcIiBheGlzIHdpdGggbmFtZSBcIitwK1wiIGlzIGFscmVhZHkgZGVmaW5lZFwiKTtmW3BdPW59cmV0dXJuIHUuYXBwZW5kQXhpcyhuKSxufSxjcmVhdGVBeGVzOmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcyxuPWkub3B0aW9ucyxvPVtdLmNvbmNhdChuLnhBeGlzKSxyPVtdLGE9W10uY29uY2F0KG4ueUF4aXMpLHM9W107RXQobyxmdW5jdGlvbihuKXt0PWkuZmluZFBhbmUodGhpcy5wYW5lKSxBaSh0LGUpJiZyLnB1c2goaS5jcmVhdGVYWUF4aXModGhpcywhMSxuKSl9KSxFdChhLGZ1bmN0aW9uKG4pe3Q9aS5maW5kUGFuZSh0aGlzLnBhbmUpLEFpKHQsZSkmJnMucHVzaChpLmNyZWF0ZVhZQXhpcyh0aGlzLCEwLG4pKX0pLGkuYXhpc1g9aS5heGlzWHx8clswXSxpLmF4aXNZPWkuYXhpc1l8fHNbMF19LF9kaXNwYXRjaEV2ZW50OmZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvLHIsYSxzPXRoaXMsbD1lLl9ldmVudENvb3JkaW5hdGVzKHQpLGM9bmV3IHVpKGwueCxsLnkpLGg9cy5heGVzLHU9aC5sZW5ndGgscD1bXSxmPVtdO2ZvcihuPTA7bjx1O24rKylvPWhbbl0sYT1vLm9wdGlvbnMudmVydGljYWw/ZjpwLHI9by5nZXRWYWx1ZShjKSxudWxsIT09ciYmYS5wdXNoKHIpO3AubGVuZ3RoPjAmJmYubGVuZ3RoPjAmJmUudHJpZ2dlcihpLHtlbGVtZW50OmJpKHQpLG9yaWdpbmFsRXZlbnQ6dCx4OkMocCkseTpDKGYpfSl9LHVwZGF0ZUF4aXNPcHRpb25zOmZ1bmN0aW9uKGUsdCl7dmFyIGk9ZS5vcHRpb25zLnZlcnRpY2FsLG49dGhpcy5ncm91cEF4ZXModGhpcy5wYW5lcyksbz1GKGUsaT9uLnk6bi54KSxyPVtdLmNvbmNhdChpP3RoaXMub3B0aW9ucy55QXhpczp0aGlzLm9wdGlvbnMueEF4aXMpW29dO1h0KHIsdCl9fSksWHQoZnQuZm4saHQpLGR0PWN0LmV4dGVuZCh7cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuc2VyaWVzO2UuY3JlYXRlUGllQ2hhcnQodCl9LGNyZWF0ZVBpZUNoYXJ0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT1lWzBdLG49bmV3IGl0KHQse3NlcmllczplLHBhZGRpbmc6aS5wYWRkaW5nLHN0YXJ0QW5nbGU6aS5zdGFydEFuZ2xlLGNvbm5lY3RvcnM6aS5jb25uZWN0b3JzLGxlZ2VuZDp0Lm9wdGlvbnMubGVnZW5kfSk7dC5hcHBlbmRDaGFydChuKX0sYXBwZW5kQ2hhcnQ6ZnVuY3Rpb24oZSx0KXtjdC5mbi5hcHBlbmRDaGFydC5jYWxsKHRoaXMsZSx0KSxUaSh0aGlzLm9wdGlvbnMubGVnZW5kLml0ZW1zLGUubGVnZW5kSXRlbXMpfX0pLGd0PWR0LmV4dGVuZCh7cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuc2VyaWVzO2UuY3JlYXRlRG9udXRDaGFydCh0KX0sY3JlYXRlRG9udXRDaGFydDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9ZVswXSxuPW5ldyBvdCh0LHtzZXJpZXM6ZSxwYWRkaW5nOmkucGFkZGluZyxjb25uZWN0b3JzOmkuY29ubmVjdG9ycyxsZWdlbmQ6dC5vcHRpb25zLmxlZ2VuZH0pO3QuYXBwZW5kQ2hhcnQobil9fSksbXQ9T2kuQW5pbWF0aW9uLmV4dGVuZCh7b3B0aW9uczp7ZWFzaW5nOlwiZWFzZU91dEVsYXN0aWNcIixkdXJhdGlvbjpObn0sc2V0dXA6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQudHJhbnNmb3JtKHppLnRyYW5zZm9ybSgpLnNjYWxlKEhvLEhvLHRoaXMub3B0aW9ucy5jZW50ZXIpKX0sc3RlcDpmdW5jdGlvbihlKXt0aGlzLmVsZW1lbnQudHJhbnNmb3JtKHppLnRyYW5zZm9ybSgpLnNjYWxlKGUsZSx0aGlzLm9wdGlvbnMuY2VudGVyKSl9fSksT2kuQW5pbWF0aW9uRmFjdG9yeS5jdXJyZW50LnJlZ2lzdGVyKGJvLG10KSx4dD1PaS5BbmltYXRpb24uZXh0ZW5kKHtvcHRpb25zOntlYXNpbmc6XCJlYXNlT3V0RWxhc3RpY1wifSxzZXR1cDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY2VudGVyPXRoaXMuZWxlbWVudC5iYm94KCkuY2VudGVyKCk7dGhpcy5lbGVtZW50LnRyYW5zZm9ybSh6aS50cmFuc2Zvcm0oKS5zY2FsZShIbyxIbyxlKSl9LHN0ZXA6ZnVuY3Rpb24oZSl7dGhpcy5lbGVtZW50LnRyYW5zZm9ybSh6aS50cmFuc2Zvcm0oKS5zY2FsZShlLGUsdGhpcy5jZW50ZXIpKX19KSxPaS5BbmltYXRpb25GYWN0b3J5LmN1cnJlbnQucmVnaXN0ZXIoSmkseHQpLHZ0PWp0LmV4dGVuZCh7aW5pdDpmdW5jdGlvbigpe3RoaXMuX3BvaW50cz1bXX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX3BvaW50cz1bXX0sc2hvdzpmdW5jdGlvbihlKXt2YXIgdCxpO2ZvcihlPVtdLmNvbmNhdChlKSx0aGlzLmhpZGUoKSx0PTA7dDxlLmxlbmd0aDt0KyspaT1lW3RdLGkmJmkudG9nZ2xlSGlnaGxpZ2h0JiZpLmhhc0hpZ2hsaWdodCgpJiYodGhpcy50b2dnbGVQb2ludEhpZ2hsaWdodChpLCEwKSx0aGlzLl9wb2ludHMucHVzaChpKSl9LHRvZ2dsZVBvaW50SGlnaGxpZ2h0OmZ1bmN0aW9uKGUsdCl7dmFyIGksbj0oZS5vcHRpb25zLmhpZ2hsaWdodHx8e30pLnRvZ2dsZTtuPyhpPXtjYXRlZ29yeTplLmNhdGVnb3J5LHNlcmllczplLnNlcmllcyxkYXRhSXRlbTplLmRhdGFJdGVtLHZhbHVlOmUudmFsdWUsc3RhY2tWYWx1ZTplLnN0YWNrVmFsdWUscHJldmVudERlZmF1bHQ6Vyx2aXN1YWw6ZS5oaWdobGlnaHRWaXN1YWwoKSxzaG93OnR9LG4oaSksaS5fZGVmYXVsdFByZXZlbnRlZHx8ZS50b2dnbGVIaWdobGlnaHQodCkpOmUudG9nZ2xlSGlnaGxpZ2h0KHQpfSxoaWRlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuX3BvaW50cztlLmxlbmd0aDspdGhpcy50b2dnbGVQb2ludEhpZ2hsaWdodChlLnBvcCgpLCExKX0saXNIaWdobGlnaHRlZDpmdW5jdGlvbihlKXt2YXIgdCxpLG49dGhpcy5fcG9pbnRzO2Zvcih0PTA7dDxuLmxlbmd0aDt0KyspaWYoaT1uW3RdLGU9PWkpcmV0dXJuITA7cmV0dXJuITF9fSkseXQ9R3QuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsaSl7dmFyIG4sbyxyPXRoaXM7R3QuZm4uaW5pdC5jYWxsKHIpLHIub3B0aW9ucz1YdCh7fSxyLm9wdGlvbnMsaSksci5jaGFydEVsZW1lbnQ9dCxyLnRlbXBsYXRlPXl0LnRlbXBsYXRlLHIudGVtcGxhdGV8fChyLnRlbXBsYXRlPXl0LnRlbXBsYXRlPURpKFwiPGRpdiBjbGFzcz0nXCIrZm4rXCJ0b29sdGlwIFwiK2ZuK1wiY2hhcnQtdG9vbHRpcCcgc3R5bGU9J2Rpc3BsYXk6bm9uZTsgcG9zaXRpb246IGFic29sdXRlOyBmb250OiAjPSBkLmZvbnQgIztib3JkZXI6ICM9IGQuYm9yZGVyLndpZHRoICNweCBzb2xpZDtvcGFjaXR5OiAjPSBkLm9wYWNpdHkgIzsgZmlsdGVyOiBhbHBoYShvcGFjaXR5PSM9IGQub3BhY2l0eSAqIDEwMCAjKTsnPjwvZGl2PlwiKSksbj13aShyLm9wdGlvbnMucGFkZGluZ3x8e30sXCJhdXRvXCIpLHIuZWxlbWVudD1lKHIudGVtcGxhdGUoci5vcHRpb25zKSkuY3NzKHtcInBhZGRpbmctdG9wXCI6bi50b3AsXCJwYWRkaW5nLXJpZ2h0XCI6bi5yaWdodCxcInBhZGRpbmctYm90dG9tXCI6bi5ib3R0b20sXCJwYWRkaW5nLWxlZnRcIjpuLmxlZnR9KSxyLm1vdmU9SHQoci5tb3ZlLHIpLHIuX21vdXNlbGVhdmU9SHQoci5fbW91c2VsZWF2ZSxyKSxvPU50LmZvcm1hdChcIlt7MH09J2NvbnRlbnQnXSxbezB9PSdzY3JvbGxlciddXCIsTnQuYXR0cihcInJvbGVcIikpLHIuX21vYmlsZVNjcm9sbGVyPXQuY2xvc2VzdChvKS5kYXRhKFwia2VuZG9Nb2JpbGVTY3JvbGxlclwiKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX2NsZWFyU2hvd1RpbWVvdXQoKSx0aGlzLmVsZW1lbnQmJih0aGlzLmVsZW1lbnQub2ZmKGxvKS5yZW1vdmUoKSx0aGlzLmVsZW1lbnQ9bnVsbCl9LG9wdGlvbnM6e2JvcmRlcjp7d2lkdGg6MX0sb3BhY2l0eToxLGFuaW1hdGlvbjp7ZHVyYXRpb246cnJ9fSxtb3ZlOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLGk9dC5vcHRpb25zLG49dC5lbGVtZW50O3QuYW5jaG9yJiZ0LmVsZW1lbnQmJihlPXQuX29mZnNldCgpLHQudmlzaWJsZXx8bi5jc3Moe3RvcDplLnRvcCxsZWZ0OmUubGVmdH0pLHQudmlzaWJsZT0hMCx0Ll9lbnN1cmVFbGVtZW50KGRvY3VtZW50LmJvZHkpLG4uc3RvcCghMCwhMCkuc2hvdygpLmFuaW1hdGUoe2xlZnQ6ZS5sZWZ0LHRvcDplLnRvcH0saS5hbmltYXRpb24uZHVyYXRpb24pKX0sX2NsZWFyU2hvd1RpbWVvdXQ6ZnVuY3Rpb24oKXt0aGlzLnNob3dUaW1lb3V0JiYoY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVvdXQpLHRoaXMuc2hvd1RpbWVvdXQ9bnVsbCl9LF9wYWRkaW5nOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX2NoYXJ0UGFkZGluZyl7dmFyIGU9dGhpcy5jaGFydEVsZW1lbnQ7dGhpcy5fY2hhcnRQYWRkaW5nPXt0b3A6cGFyc2VJbnQoZS5jc3MoXCJwYWRkaW5nVG9wXCIpLDEwKSxsZWZ0OnBhcnNlSW50KGUuY3NzKFwicGFkZGluZ0xlZnRcIiksMTApfX1yZXR1cm4gdGhpcy5fY2hhcnRQYWRkaW5nfSxfb2Zmc2V0OmZ1bmN0aW9uKCl7dmFyIHQsaSxuPXRoaXMsbz1uLl9tZWFzdXJlKCkscj1uLmFuY2hvcixhPW4uX3BhZGRpbmcoKSxzPW4uY2hhcnRFbGVtZW50Lm9mZnNldCgpLGw9Q2koci55K2EudG9wK3MudG9wKSxjPUNpKHIueCthLmxlZnQrcy5sZWZ0KSxoPU50LnN1cHBvcnQuem9vbUxldmVsKCksdT1lKHdpbmRvdykscD13aW5kb3cucGFnZVlPZmZzZXR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fDAsZj13aW5kb3cucGFnZVhPZmZzZXR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0fHwwLGQ9KHRoaXMuX21vYmlsZVNjcm9sbGVyfHx7fSkubW92YWJsZTtyZXR1cm4gZCYmMSE9PWQuc2NhbGU/KHQ9emkudHJhbnNmb3JtKCkuc2NhbGUoZC5zY2FsZSxkLnNjYWxlLFtkLngsZC55XSksaT1uZXcgemkuUG9pbnQoYyxsKS50cmFuc2Zvcm0odCksYz1pLngsbD1pLnkpOihsKz1uLl9maXQobC1wLG8uaGVpZ2h0LCR0KHUpL2gpLGMrPW4uX2ZpdChjLWYsby53aWR0aCxRdCh1KS9oKSkse3RvcDpsLGxlZnQ6Y319LHNldFN0eWxlOmZ1bmN0aW9uKGUsdCl7dmFyIGksbixvPWUuYmFja2dyb3VuZCxyPWUuYm9yZGVyLmNvbG9yO3QmJihpPXQuY29sb3J8fHQub3B0aW9ucy5jb2xvcixvPU1pKG8saSkscj1NaShyLGkpKSxSaShlLmNvbG9yKXx8KG49bmV3IHJpKG8pLnBlcmNCcmlnaHRuZXNzKCksdGhpcy5lbGVtZW50LnRvZ2dsZUNsYXNzKGZuK2NyLG4+MTgwKSksdGhpcy5lbGVtZW50LmNzcyh7YmFja2dyb3VuZENvbG9yOm8sYm9yZGVyQ29sb3I6cixmb250OmUuZm9udCxjb2xvcjplLmNvbG9yLG9wYWNpdHk6ZS5vcGFjaXR5LGJvcmRlcldpZHRoOmUuYm9yZGVyLndpZHRofSl9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLl9jbGVhclNob3dUaW1lb3V0KCksdGhpcy5zaG93VGltZW91dD1zZXRUaW1lb3V0KHRoaXMubW92ZSxzcil9LGhpZGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2NsZWFyVGltZW91dChlLnNob3dUaW1lb3V0KSxlLl9oaWRlRWxlbWVudCgpLGUudmlzaWJsZSYmKGUucG9pbnQ9bnVsbCxlLnZpc2libGU9ITEsZS5pbmRleD1udWxsKX0sX21lYXN1cmU6ZnVuY3Rpb24oKXt0aGlzLl9lbnN1cmVFbGVtZW50KCk7dmFyIGU9e3dpZHRoOlF0KHRoaXMuZWxlbWVudCksaGVpZ2h0OiR0KHRoaXMuZWxlbWVudCl9O3JldHVybiBlfSxfZW5zdXJlRWxlbWVudDpmdW5jdGlvbigpe3RoaXMuZWxlbWVudCYmdGhpcy5lbGVtZW50LmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpLm9uKGxvLHRoaXMuX21vdXNlbGVhdmUpfSxfbW91c2VsZWF2ZTpmdW5jdGlvbih0KXt2YXIgaT10LnJlbGF0ZWRUYXJnZXQsbj10aGlzLmNoYXJ0RWxlbWVudFswXTtpJiZpIT09biYmIWUuY29udGFpbnMobixpKSYmKHRoaXMudHJpZ2dlcihZbiksdGhpcy5oaWRlKCkpfSxfaGlkZUVsZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5lbGVtZW50O3QmJnQuZmFkZU91dCh7YWx3YXlzOmZ1bmN0aW9uKCl7ZS52aXNpYmxlfHx0Lm9mZihsbykucmVtb3ZlKCl9fSl9LF9wb2ludENvbnRlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuPXRoaXMsbz1YdCh7fSxuLm9wdGlvbnMsZS5vcHRpb25zLnRvb2x0aXApO3JldHVybiBSaShlLnZhbHVlKSYmKHQ9XCJcIitlLnZhbHVlKSxvLnRlbXBsYXRlPyhpPUt0KG8udGVtcGxhdGUpLHQ9aSh7dmFsdWU6ZS52YWx1ZSxjYXRlZ29yeTplLmNhdGVnb3J5LHNlcmllczplLnNlcmllcyxkYXRhSXRlbTplLmRhdGFJdGVtLHBlcmNlbnRhZ2U6ZS5wZXJjZW50YWdlLHJ1bm5pbmdUb3RhbDplLnJ1bm5pbmdUb3RhbCx0b3RhbDplLnRvdGFsLGxvdzplLmxvdyxoaWdoOmUuaGlnaCx4TG93OmUueExvdyx4SGlnaDplLnhIaWdoLHlMb3c6ZS55TG93LHlIaWdoOmUueUhpZ2h9KSk6by5mb3JtYXQmJih0PWUuZm9ybWF0VmFsdWUoby5mb3JtYXQpKSx0fSxfcG9pbnRBbmNob3I6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbWVhc3VyZSgpO3JldHVybiBlLnRvb2x0aXBBbmNob3IodC53aWR0aCx0LmhlaWdodCl9LF9maXQ6ZnVuY3Rpb24oZSx0LGkpe3ZhciBuPTA7cmV0dXJuIGUrdD5pJiYobj1pLShlK3QpKSxlPDAmJihuPS1lKSxufX0pLF90PXl0LmV4dGVuZCh7c2hvdzpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9WHQoe30sdC5vcHRpb25zLGUub3B0aW9ucy50b29sdGlwKTtlJiZlLnRvb2x0aXBBbmNob3ImJnQuZWxlbWVudCYmKHQuZWxlbWVudC5odG1sKHQuX3BvaW50Q29udGVudChlKSksdC5hbmNob3I9dC5fcG9pbnRBbmNob3IoZSksdC5hbmNob3I/KHQuc2V0U3R5bGUoaSxlKSx5dC5mbi5zaG93LmNhbGwodCxlKSk6dC5oaWRlKCkpfX0pLGJ0PXl0LmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLHQsaSl7dmFyIG49dGhpczt5dC5mbi5pbml0LmNhbGwobixlLGkpLG4ucGxvdEFyZWE9dH0sb3B0aW9uczp7c2hhcmVkVGVtcGxhdGU6XCI8dGFibGU+PHRoIGNvbHNwYW49JzInPiM9IGNhdGVnb3J5VGV4dCAjPC90aD4jIGZvcih2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHsgIyMgdmFyIHBvaW50ID0gcG9pbnRzW2ldOyAjPHRyPiMgaWYocG9pbnQuc2VyaWVzLm5hbWUpIHsgIyA8dGQ+ICM9IHBvaW50LnNlcmllcy5uYW1lICM6PC90ZD4jIH0gIzx0ZD4jPSBjb250ZW50KHBvaW50KSAjPC90ZD48L3RyPiMgfSAjPC90YWJsZT5cIixjYXRlZ29yeUZvcm1hdDpcInswOmR9XCJ9LHNob3dBdDpmdW5jdGlvbih0LGkpe3ZhciBuLG8scjt0PWUuZ3JlcCh0LGZ1bmN0aW9uKGUpe3ZhciB0PWUuc2VyaWVzLnRvb2x0aXAsaT10JiZ0LnZpc2libGU9PT0hMTtyZXR1cm4haX0pLHQubGVuZ3RoPjAmJihuPXRbMF0sbz10aGlzLnBsb3RBcmVhLmNhdGVnb3J5QXhpcy5nZXRTbG90KG4uY2F0ZWdvcnlJeCkscj10aGlzLl9jb250ZW50KHQsbi5jYXRlZ29yeSksdGhpcy5lbGVtZW50Lmh0bWwociksdGhpcy5hbmNob3I9aT90aGlzLl9zbG90QW5jaG9yKGksbyk6dGhpcy5fZGVmYXVsdEFuY2hvcihuLG8pLHRoaXMuc2V0U3R5bGUodGhpcy5vcHRpb25zLG4pLHl0LmZuLnNob3cuY2FsbCh0aGlzKSl9LF9zbG90QW5jaG9yOmZ1bmN0aW9uKGUsdCl7dmFyIGksbj10aGlzLG89bi5wbG90QXJlYSxyPW8uY2F0ZWdvcnlBeGlzLGE9dGhpcy5fbWVhc3VyZSgpLHM9ZS55LWEuaGVpZ2h0LzI7cmV0dXJuIGk9ci5vcHRpb25zLnZlcnRpY2FsP3VpKGUueCxzKTp1aSh0LmNlbnRlcigpLngscyl9LF9kZWZhdWx0QW5jaG9yOmZ1bmN0aW9uKGUsdCl7dmFyIGksbj1lLm93bmVyLnBhbmUuY2hhcnRzQm94KCksbz10aGlzLnBsb3RBcmVhLmNhdGVnb3J5QXhpcy5vcHRpb25zLnZlcnRpY2FsLHI9bi5jZW50ZXIoKSxhPXQuY2VudGVyKCkscz10aGlzLl9tZWFzdXJlKCk7cmV0dXJuIGk9bz9uZXcgdWkoci54LGEueSk6bmV3IHVpKGEueCxyLnkpLGkueC09cy53aWR0aC8yLGkueS09cy5oZWlnaHQvMixpfSxfY29udGVudDpmdW5jdGlvbihlLHQpe3ZhciBpLG4sbz10aGlzO3JldHVybiBpPU50LnRlbXBsYXRlKG8ub3B0aW9ucy5zaGFyZWRUZW1wbGF0ZSksbj1pKHtwb2ludHM6ZSxjYXRlZ29yeTp0LGNhdGVnb3J5VGV4dDp5aShvLm9wdGlvbnMuY2F0ZWdvcnlGb3JtYXQsdCksY29udGVudDpvLl9wb2ludENvbnRlbnR9KX19KSx3dD1vaS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXtvaS5mbi5pbml0LmNhbGwodGhpcyx0KSx0aGlzLmF4aXM9ZSx0aGlzLnN0aWNreU1vZGU9ZSBpbnN0YW5jZW9mIGNlfSxvcHRpb25zOntjb2xvcjpaaSx3aWR0aDoxLHpJbmRleDotMSx0b29sdGlwOnt2aXNpYmxlOiExfX0sc2hvd0F0OmZ1bmN0aW9uKGUpe3RoaXMucG9pbnQ9ZSx0aGlzLm1vdmVMaW5lKCksdGhpcy5saW5lLnZpc2libGUoITApO3ZhciB0PXRoaXMub3B0aW9ucy50b29sdGlwO3QudmlzaWJsZSYmKHRoaXMudG9vbHRpcHx8KHRoaXMudG9vbHRpcD1uZXcgQXQodGhpcyxYdCh7fSx0LHtzdGlja3lNb2RlOnRoaXMuc3RpY2t5TW9kZX0pKSksdGhpcy50b29sdGlwLnNob3dBdChlKSl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLmxpbmUudmlzaWJsZSghMSksdGhpcy50b29sdGlwJiZ0aGlzLnRvb2x0aXAuaGlkZSgpfSxtb3ZlTGluZTpmdW5jdGlvbigpe3ZhciBlLHQsaSxuPXRoaXMsbz1uLmF4aXMscj1vLm9wdGlvbnMudmVydGljYWwsYT1uLmdldEJveCgpLHM9bi5wb2ludCxsPXI/eXI6dnI7dD1uZXcgemkuUG9pbnQoYS54MSxhLnkxKSxpPXI/bmV3IHppLlBvaW50KGEueDIsYS55MSk6bmV3IHppLlBvaW50KGEueDEsYS55MikscyYmKG4uc3RpY2t5TW9kZT8oZT1vLmdldFNsb3Qoby5wb2ludENhdGVnb3J5SW5kZXgocykpLHRbbF09aVtsXT1lLmNlbnRlcigpW2xdKTp0W2xdPWlbbF09c1tsXSksbi5ib3g9YSx0aGlzLmxpbmUubW92ZVRvKHQpLmxpbmVUbyhpKX0sZ2V0Qm94OmZ1bmN0aW9uKCl7dmFyIGUsdCxpLG49dGhpcyxvPW4uYXhpcyxyPW8ucGFuZS5heGVzLGE9ci5sZW5ndGgscz1vLm9wdGlvbnMudmVydGljYWwsbD1vLmxpbmVCb3goKS5jbG9uZSgpLGM9cz92cjp5cjtmb3IoaT0wO2k8YTtpKyspdD1yW2ldLHQub3B0aW9ucy52ZXJ0aWNhbCE9cyYmKGU/ZS53cmFwKHQubGluZUJveCgpKTplPXQubGluZUJveCgpLmNsb25lKCkpO3JldHVybiBsW2MrMV09ZVtjKzFdLGxbYysyXT1lW2MrMl0sbH0sY3JlYXRlVmlzdWFsOmZ1bmN0aW9uKCl7b2kuZm4uY3JlYXRlVmlzdWFsLmNhbGwodGhpcyk7dmFyIGU9dGhpcy5vcHRpb25zO3RoaXMubGluZT1uZXcgT2kuUGF0aCh7c3Ryb2tlOntjb2xvcjplLmNvbG9yLHdpZHRoOmUud2lkdGgsb3BhY2l0eTplLm9wYWNpdHksZGFzaFR5cGU6ZS5kYXNoVHlwZX0sdmlzaWJsZTohMX0pLHRoaXMubW92ZUxpbmUoKSx0aGlzLnZpc3VhbC5hcHBlbmQodGhpcy5saW5lKX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS50b29sdGlwJiZlLnRvb2x0aXAuZGVzdHJveSgpLG9pLmZuLmRlc3Ryb3kuY2FsbChlKX19KSxBdD15dC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLG49ZS5heGlzLmdldFJvb3QoKS5jaGFydC5lbGVtZW50O2kuY3Jvc3NoYWlyPWUseXQuZm4uaW5pdC5jYWxsKGksbixYdCh7fSxpLm9wdGlvbnMse2JhY2tncm91bmQ6ZS5heGlzLnBsb3RBcmVhLm9wdGlvbnMuc2VyaWVzQ29sb3JzWzBdfSx0KSksaS5zZXRTdHlsZShpLm9wdGlvbnMpfSxvcHRpb25zOntwYWRkaW5nOjEwfSxzaG93QXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXQuZWxlbWVudDtpJiYodC5wb2ludD1lLHQuZWxlbWVudC5odG1sKHQuY29udGVudChlKSksdC5hbmNob3I9dC5nZXRBbmNob3IoKSx0Lm1vdmUoKSl9LG1vdmU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5lbGVtZW50LGk9ZS5fb2Zmc2V0KCk7ZS5fZW5zdXJlRWxlbWVudCgpLHQuY3NzKHt0b3A6aS50b3AsbGVmdDppLmxlZnR9KS5zaG93KCl9LGNvbnRlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG89dGhpcyxyPW8ub3B0aW9ucyxhPW8uY3Jvc3NoYWlyLmF4aXMscz1hLm9wdGlvbnM7cmV0dXJuIGk9dD1hW3Iuc3RpY2t5TW9kZT9cImdldENhdGVnb3J5XCI6XCJnZXRWYWx1ZVwiXShlKSxyLnRlbXBsYXRlPyhuPUt0KHIudGVtcGxhdGUpLHQ9bih7dmFsdWU6aX0pKTpyLmZvcm1hdD90PXlpKHIuZm9ybWF0LGkpOnMudHlwZT09PW1uJiYodD15aShzLmxhYmVscy5kYXRlRm9ybWF0c1tzLmJhc2VVbml0XSxpKSksdH0sZ2V0QW5jaG9yOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLGk9dC5vcHRpb25zLG49aS5wb3NpdGlvbixvPXRoaXMuY3Jvc3NoYWlyLHI9IW8uYXhpcy5vcHRpb25zLnZlcnRpY2FsLGE9by5saW5lLmJib3goKSxzPXRoaXMuX21lYXN1cmUoKSxsPXMud2lkdGgvMixjPXMuaGVpZ2h0LzIsaD1pLnBhZGRpbmc7cmV0dXJuIGU9cj9uPT09UWk/YS5ib3R0b21MZWZ0KCkudHJhbnNsYXRlKC1sLGgpOmEudG9wTGVmdCgpLnRyYW5zbGF0ZSgtbCwtcy5oZWlnaHQtaCk6bj09PVhuP2EudG9wTGVmdCgpLnRyYW5zbGF0ZSgtcy53aWR0aC1oLC1jKTphLnRvcFJpZ2h0KCkudHJhbnNsYXRlKGgsLWMpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmhpZGUoKSx0aGlzLnBvaW50PW51bGx9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt5dC5mbi5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5wb2ludD1udWxsfX0pLGt0PXttaW46ZnVuY3Rpb24oZSl7dmFyIHQsaSxuPWlvLG89ZS5sZW5ndGg7Zm9yKHQ9MDt0PG87dCsrKWk9ZVt0XSxCKGkpJiYobj1PdC5taW4obixpKSk7cmV0dXJuIG49PT1pbz9lWzBdOm59LG1heDpmdW5jdGlvbihlKXt2YXIgdCxpLG49cm8sbz1lLmxlbmd0aDtmb3IodD0wO3Q8bzt0KyspaT1lW3RdLEIoaSkmJihuPU90Lm1heChuLGkpKTtyZXR1cm4gbj09PXJvP2VbMF06bn0sc3VtOmZ1bmN0aW9uKGUpe3ZhciB0LGksbj1lLmxlbmd0aCxvPTA7Zm9yKHQ9MDt0PG47dCsrKWk9ZVt0XSxCKGkpJiYobys9aSk7cmV0dXJuIG99LHN1bU9yTnVsbDpmdW5jdGlvbihlKXt2YXIgdD1udWxsO3JldHVybiBMKGUpJiYodD1rdC5zdW0oZSkpLHR9LGNvdW50OmZ1bmN0aW9uKGUpe3ZhciB0LGksbj1lLmxlbmd0aCxvPTA7Zm9yKHQ9MDt0PG47dCsrKWk9ZVt0XSxudWxsIT09aSYmUmkoaSkmJm8rKztyZXR1cm4gb30sYXZnOmZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0saT1MKGUpO3JldHVybiBpPjAmJih0PWt0LnN1bShlKS9pKSx0fSxmaXJzdDpmdW5jdGlvbihlKXt2YXIgdCxpLG49ZS5sZW5ndGg7Zm9yKHQ9MDt0PG47dCsrKWlmKGk9ZVt0XSxudWxsIT09aSYmUmkoaSkpcmV0dXJuIGk7cmV0dXJuIGVbMF19fSxuLnByb3RvdHlwZT17cmVnaXN0ZXI6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl0aGlzLl9kZWZhdWx0c1tlW2ldXT10fSxxdWVyeTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fZGVmYXVsdHNbZV19fSxuLmN1cnJlbnQ9bmV3IG4sU3Q9R3QuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsaSxuKXt2YXIgbyxyLGE9dGhpcyxzPXQuZWxlbWVudCxsPWkubGluZUJveCgpLGM9YS5nZXRWYWx1ZUF4aXMoaSksaD1jLmxpbmVCb3goKSx1PVwiLlwiK2ZuO0d0LmZuLmluaXQuY2FsbChhKSxhLm9wdGlvbnM9WHQoe30sYS5vcHRpb25zLG4pLG49YS5vcHRpb25zLGEuY2hhcnQ9dCxhLmNoYXJ0RWxlbWVudD1zLGEuY2F0ZWdvcnlBeGlzPWksYS5fZGF0ZUF4aXM9YS5jYXRlZ29yeUF4aXMgaW5zdGFuY2VvZiBoZSxhLnZhbHVlQXhpcz1jLGEuX2RhdGVBeGlzJiZYdChuLHttaW46ZChuLm1pbiksbWF4OmQobi5tYXgpLGZyb206ZChuLmZyb20pLHRvOmQobi50byl9KSxhLnRlbXBsYXRlPVN0LnRlbXBsYXRlLGEudGVtcGxhdGV8fChhLnRlbXBsYXRlPVN0LnRlbXBsYXRlPURpKFwiPGRpdiBjbGFzcz0nXCIrZm4rXCJzZWxlY3Rvcicgc3R5bGU9J3dpZHRoOiAjPSBkLndpZHRoICNweDsgaGVpZ2h0OiAjPSBkLmhlaWdodCAjcHg7IHRvcDogIz0gZC5vZmZzZXQudG9wICNweDsgbGVmdDogIz0gZC5vZmZzZXQubGVmdCAjcHg7Jz48ZGl2IGNsYXNzPSdcIitmbitcIm1hc2snPjwvZGl2PjxkaXYgY2xhc3M9J1wiK2ZuK1wibWFzayc+PC9kaXY+PGRpdiBjbGFzcz0nXCIrZm4rXCJzZWxlY3Rpb24nPjxkaXYgY2xhc3M9J1wiK2ZuK1wic2VsZWN0aW9uLWJnJz48L2Rpdj48ZGl2IGNsYXNzPSdcIitmbitcImhhbmRsZSBcIitmbitcImxlZnRIYW5kbGUnPjxkaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0nXCIrZm4rXCJoYW5kbGUgXCIrZm4rXCJyaWdodEhhbmRsZSc+PGRpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj5cIikpLHI9e2xlZnQ6cGFyc2VJbnQocy5jc3MoXCJwYWRkaW5nTGVmdFwiKSwxMCkscmlnaHQ6cGFyc2VJbnQocy5jc3MoXCJwYWRkaW5nVG9wXCIpLDEwKX0sYS5vcHRpb25zPVh0KHt9LHt3aWR0aDpsLndpZHRoKCksaGVpZ2h0OmguaGVpZ2h0KCkscGFkZGluZzpyLG9mZnNldDp7bGVmdDpoLngyK3IubGVmdCx0b3A6aC55MStyLnJpZ2h0fSxmcm9tOm4ubWluLHRvOm4ubWF4fSxuKSxhLm9wdGlvbnMudmlzaWJsZSYmKGEud3JhcHBlcj1vPWUoYS50ZW1wbGF0ZShhLm9wdGlvbnMpKS5hcHBlbmRUbyhzKSxhLnNlbGVjdGlvbj1vLmZpbmQodStcInNlbGVjdGlvblwiKSxhLmxlZnRNYXNrPW8uZmluZCh1K1wibWFza1wiKS5maXJzdCgpLGEucmlnaHRNYXNrPW8uZmluZCh1K1wibWFza1wiKS5sYXN0KCksYS5sZWZ0SGFuZGxlPW8uZmluZCh1K1wibGVmdEhhbmRsZVwiKSxhLnJpZ2h0SGFuZGxlPW8uZmluZCh1K1wicmlnaHRIYW5kbGVcIiksYS5vcHRpb25zLnNlbGVjdGlvbj17Ym9yZGVyOntsZWZ0OnBhcnNlRmxvYXQoYS5zZWxlY3Rpb24uY3NzKFwiYm9yZGVyLWxlZnQtd2lkdGhcIiksMTApLHJpZ2h0OnBhcnNlRmxvYXQoYS5zZWxlY3Rpb24uY3NzKFwiYm9yZGVyLXJpZ2h0LXdpZHRoXCIpLDEwKX19LGEubGVmdEhhbmRsZS5jc3MoXCJ0b3BcIiwoYS5zZWxlY3Rpb24uaGVpZ2h0KCktYS5sZWZ0SGFuZGxlLmhlaWdodCgpKS8yKSxhLnJpZ2h0SGFuZGxlLmNzcyhcInRvcFwiLChhLnNlbGVjdGlvbi5oZWlnaHQoKS1hLnJpZ2h0SGFuZGxlLmhlaWdodCgpKS8yKSxhLnNldChhLl9pbmRleChuLmZyb20pLGEuX2luZGV4KG4udG8pKSxhLmJpbmQoYS5ldmVudHMsYS5vcHRpb25zKSxhLndyYXBwZXJbMF0uc3R5bGUuY3NzVGV4dD1hLndyYXBwZXJbMF0uc3R5bGUuY3NzVGV4dCxhLm9wdGlvbnMubW91c2V3aGVlbCE9PSExP2Eud3JhcHBlci5vbihmbyxIdChhLl9tb3VzZXdoZWVsLGEpKTphLndyYXBwZXIub24oZm8sZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX0pLE50LlVzZXJFdmVudHM/YS51c2VyRXZlbnRzPW5ldyBOdC5Vc2VyRXZlbnRzKGEud3JhcHBlcix7Z2xvYmFsOiEwLHN0b3BQcm9wYWdhdGlvbjohMCxtdWx0aVRvdWNoOiEwLGZhc3RUYXA6ITAscHJlc3M6SHQoYS5fcHJlc3MsYSksc3RhcnQ6SHQoYS5fc3RhcnQsYSksbW92ZTpIdChhLl9tb3ZlLGEpLGVuZDpIdChhLl9lbmQsYSksdGFwOkh0KGEuX3RhcCxhKSxnZXN0dXJlc3RhcnQ6SHQoYS5fZ2VzdHVyZWNoYW5nZSxhKSxnZXN0dXJlY2hhbmdlOkh0KGEuX2dlc3R1cmVjaGFuZ2UsYSl9KTphLmxlZnRIYW5kbGUuYWRkKGEucmlnaHRIYW5kbGUpLnJlbW92ZUNsYXNzKGZuK1wiaGFuZGxlXCIpKX0sZXZlbnRzOltNbyx6byxPb10sb3B0aW9uczp7dmlzaWJsZTohMCxtb3VzZXdoZWVsOnt6b29tOktpfSxtaW46cm8sbWF4OmlvfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUudXNlckV2ZW50czt0JiZ0LmRlc3Ryb3koKSxjbGVhclRpbWVvdXQoZS5fbXdUaW1lb3V0KSxlLl9zdGF0ZT1udWxsLGUud3JhcHBlciYmZS53cmFwcGVyLnJlbW92ZSgpfSxfcmFuZ2VFdmVudEFyZ3M6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm57YXhpczp0LmNhdGVnb3J5QXhpcy5vcHRpb25zLGZyb206dC5fdmFsdWUoZS5mcm9tKSx0bzp0Ll92YWx1ZShlLnRvKX19LF9zdGFydDpmdW5jdGlvbih0KXt2YXIgaSxuPXRoaXMsbz1uLm9wdGlvbnMscj1lKHQuZXZlbnQudGFyZ2V0KTshbi5fc3RhdGUmJnImJihuLmNoYXJ0Ll91bnNldEFjdGl2ZVBvaW50KCksbi5fc3RhdGU9e21vdmVUYXJnZXQ6ci5wYXJlbnRzKFwiLmstaGFuZGxlXCIpLmFkZChyKS5maXJzdCgpLHN0YXJ0TG9jYXRpb246dC54P3QueC5sb2NhdGlvbjowLHJhbmdlOntmcm9tOm4uX2luZGV4KG8uZnJvbSksdG86bi5faW5kZXgoby50byl9fSxpPW4uX3JhbmdlRXZlbnRBcmdzKHtmcm9tOm4uX2luZGV4KG8uZnJvbSksdG86bi5faW5kZXgoby50byl9KSxuLnRyaWdnZXIoTW8saSkmJihuLnVzZXJFdmVudHMuY2FuY2VsKCksbi5fc3RhdGU9bnVsbCkpfSxfcHJlc3M6ZnVuY3Rpb24odCl7dmFyIGksbjt0aGlzLl9zdGF0ZT9pPXRoaXMuX3N0YXRlLm1vdmVUYXJnZXQ6KG49ZSh0LmV2ZW50LnRhcmdldCksaT1uLnBhcmVudHMoXCIuay1oYW5kbGVcIikuYWRkKG4pLmZpcnN0KCkpLGkuYWRkQ2xhc3MoXCJrLWhhbmRsZS1hY3RpdmVcIil9LF9tb3ZlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuX3N0YXRlKXt2YXIgdD10aGlzLGk9dC5fc3RhdGUsbj10Lm9wdGlvbnMsbz10LmNhdGVnb3J5QXhpcy5vcHRpb25zLmNhdGVnb3JpZXMscj10Ll9pbmRleChuLmZyb20pLGE9dC5faW5kZXgobi50bykscz10Ll9pbmRleChuLm1pbiksbD10Ll9pbmRleChuLm1heCksYz1pLnN0YXJ0TG9jYXRpb24tZS54LmxvY2F0aW9uLGg9aS5yYW5nZSx1PXtmcm9tOmguZnJvbSx0bzpoLnRvfSxwPWgudG8taC5mcm9tLGY9aS5tb3ZlVGFyZ2V0LGQ9dC53cmFwcGVyLndpZHRoKCkvKG8ubGVuZ3RoLTEpLGc9T3Qucm91bmQoYy9kKTtmJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGYuaXMoXCIuay1zZWxlY3Rpb24sIC5rLXNlbGVjdGlvbi1iZ1wiKT8oaC5mcm9tPU90Lm1pbihPdC5tYXgocyxyLWcpLGwtcCksaC50bz1PdC5taW4oaC5mcm9tK3AsbCkpOmYuaXMoXCIuay1sZWZ0SGFuZGxlXCIpPyhoLmZyb209T3QubWluKE90Lm1heChzLHItZyksbC0xKSxoLnRvPU90Lm1heChoLmZyb20rMSxoLnRvKSk6Zi5pcyhcIi5rLXJpZ2h0SGFuZGxlXCIpJiYoaC50bz1PdC5taW4oT3QubWF4KHMrMSxhLWcpLGwpLGguZnJvbT1PdC5taW4oaC50by0xLGguZnJvbSkpLGguZnJvbT09PXUuZnJvbSYmaC50bz09PXUudG98fCh0Lm1vdmUoaC5mcm9tLGgudG8pLHQudHJpZ2dlcih6byx0Ll9yYW5nZUV2ZW50QXJncyhoKSkpKX19LF9lbmQ6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuX3N0YXRlLnJhbmdlO3RoaXMuX3N0YXRlJiYoZT10aGlzLl9zdGF0ZS5tb3ZlVGFyZ2V0LGUmJmUucmVtb3ZlQ2xhc3MoXCJrLWhhbmRsZS1hY3RpdmVcIiksZGVsZXRlIHRoaXMuX3N0YXRlKSx0aGlzLnNldCh0LmZyb20sdC50byksdGhpcy50cmlnZ2VyKE9vLHRoaXMuX3JhbmdlRXZlbnRBcmdzKHQpKX0sX2dlc3R1cmVjaGFuZ2U6ZnVuY3Rpb24oZSl7aWYodGhpcy5fc3RhdGUpe3ZhciB0PXRoaXMsaT10LmNoYXJ0LG49dC5fc3RhdGUsbz10Lm9wdGlvbnMscj10LmNhdGVnb3J5QXhpcyxhPW4ucmFuZ2Uscz1pLl90b01vZGVsQ29vcmRpbmF0ZXMoZS50b3VjaGVzWzBdLngubG9jYXRpb24pLngsbD1pLl90b01vZGVsQ29vcmRpbmF0ZXMoZS50b3VjaGVzWzFdLngubG9jYXRpb24pLngsYz1PdC5taW4ocyxsKSxoPU90Lm1heChzLGwpO2UucHJldmVudERlZmF1bHQoKSxuLm1vdmVUYXJnZXQ9bnVsbCxhLmZyb209ci5wb2ludENhdGVnb3J5SW5kZXgobmV3IEp0LlBvaW50MkQoYykpfHxvLm1pbixhLnRvPXIucG9pbnRDYXRlZ29yeUluZGV4KG5ldyBKdC5Qb2ludDJEKGgpKXx8by5tYXgsdC5tb3ZlKGEuZnJvbSxhLnRvKX19LF90YXA6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXQub3B0aW9ucyxuPXQuY2hhcnQuX2V2ZW50Q29vcmRpbmF0ZXMoZSksbz10LmNhdGVnb3J5QXhpcyxyPW8ucG9pbnRDYXRlZ29yeUluZGV4KG5ldyBKdC5Qb2ludDJEKG4ueCxvLmJveC55MSkpLGE9dC5faW5kZXgoaS5mcm9tKSxzPXQuX2luZGV4KGkudG8pLGw9dC5faW5kZXgoaS5taW4pLGM9dC5faW5kZXgoaS5tYXgpLGg9cy1hLHU9YStoLzIscD1PdC5yb3VuZCh1LXIpLGY9e30sZD0zPT09ZS5ldmVudC53aGljaDt0Ll9zdGF0ZXx8ZHx8KGUucHJldmVudERlZmF1bHQoKSx0LmNoYXJ0Ll91bnNldEFjdGl2ZVBvaW50KCksby5vcHRpb25zLmp1c3RpZmllZHx8cC0tLGYuZnJvbT1PdC5taW4oT3QubWF4KGwsYS1wKSxjLWgpLGYudG89T3QubWluKGYuZnJvbStoLGMpLHQuX3N0YXJ0KGUpLHQuX3N0YXRlJiYodC5fc3RhdGUucmFuZ2U9Zix0LnRyaWdnZXIoem8sdC5fcmFuZ2VFdmVudEFyZ3MoZikpLHQuX2VuZCgpKSl9LF9tb3VzZXdoZWVsOmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcyxuPWkub3B0aW9ucyxvPVNpKGUpO2kuX3N0YXJ0KHtldmVudDp7dGFyZ2V0Omkuc2VsZWN0aW9ufX0pLGkuX3N0YXRlJiYodD1pLl9zdGF0ZS5yYW5nZSxlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSxPdC5hYnMobyk+MSYmKG8qPXdyKSxuLm1vdXNld2hlZWwucmV2ZXJzZSYmKG8qPS0xKSxpLmV4cGFuZChvKSYmaS50cmlnZ2VyKHpvLHtheGlzOmkuY2F0ZWdvcnlBeGlzLm9wdGlvbnMsZGVsdGE6byxvcmlnaW5hbEV2ZW50OmUsZnJvbTppLl92YWx1ZSh0LmZyb20pLHRvOmkuX3ZhbHVlKHQudG8pfSksaS5fbXdUaW1lb3V0JiZjbGVhclRpbWVvdXQoaS5fbXdUaW1lb3V0KSxpLl9td1RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2kuX2VuZCgpfSxwbykpfSxfaW5kZXg6ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gZSBpbnN0YW5jZW9mIERhdGUmJih0PXRoaXMuY2F0ZWdvcnlBeGlzLmNhdGVnb3J5SW5kZXgoZSkpLHR9LF92YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmNhdGVnb3J5QXhpcy5vcHRpb25zLmNhdGVnb3JpZXMsaT1lO3JldHVybiB0aGlzLl9kYXRlQXhpcyYmKGk9ZT50Lmxlbmd0aC0xP3RoaXMub3B0aW9ucy5tYXg6dFtPdC5jZWlsKGUpXSksaX0sX3Nsb3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jYXRlZ29yeUF4aXMsaT10aGlzLl9pbmRleChlKTtyZXR1cm4gdC5nZXRTbG90KGksaSwhMCl9LG1vdmU6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuLG8scixhPXRoaXMscz1hLm9wdGlvbnMsbD1zLm9mZnNldCxjPXMucGFkZGluZyxoPXMuc2VsZWN0aW9uLmJvcmRlcjtvPWEuX3Nsb3QoZSksaT1DaShvLngxLWwubGVmdCtjLmxlZnQpLGEubGVmdE1hc2sud2lkdGgoaSksYS5zZWxlY3Rpb24uY3NzKFwibGVmdFwiLGkpLG89YS5fc2xvdCh0KSxuPUNpKHMud2lkdGgtKG8ueDEtbC5sZWZ0K2MubGVmdCkpLGEucmlnaHRNYXNrLndpZHRoKG4pLHI9cy53aWR0aC1uLHIhPXMud2lkdGgmJihyKz1oLnJpZ2h0KSxhLnJpZ2h0TWFzay5jc3MoXCJsZWZ0XCIsciksYS5zZWxlY3Rpb24ud2lkdGgoT3QubWF4KHMud2lkdGgtKGkrbiktaC5yaWdodCwwKSl9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMsbj1pLm9wdGlvbnMsbz1pLl9pbmRleChuLm1pbikscj1pLl9pbmRleChuLm1heCk7ZT1WaShpLl9pbmRleChlKSxvLHIpLHQ9VmkoaS5faW5kZXgodCksZSsxLHIpLG4udmlzaWJsZSYmaS5tb3ZlKGUsdCksbi5mcm9tPWkuX3ZhbHVlKGUpLG4udG89aS5fdmFsdWUodCl9LGV4cGFuZDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dC5vcHRpb25zLG49dC5faW5kZXgoaS5taW4pLG89dC5faW5kZXgoaS5tYXgpLHI9aS5tb3VzZXdoZWVsLnpvb20sYT10Ll9pbmRleChpLmZyb20pLHM9dC5faW5kZXgoaS50byksbD17ZnJvbTphLHRvOnN9LGM9WHQoe30sbCk7aWYodC5fc3RhdGUmJihsPXQuX3N0YXRlLnJhbmdlKSxyIT09Um8mJihsLmZyb209VmkoVmkoYS1lLDAscy0xKSxuLG8pKSxyIT09WG4mJihsLnRvPVZpKFZpKHMrZSxsLmZyb20rMSxvKSxuLG8pKSxsLmZyb20hPT1jLmZyb218fGwudG8hPT1jLnRvKXJldHVybiB0LnNldChsLmZyb20sbC50byksXG4gICAgITB9LGdldFZhbHVlQXhpczpmdW5jdGlvbihlKXt2YXIgdCxpLG49ZS5wYW5lLmF4ZXMsbz1uLmxlbmd0aDtmb3IodD0wO3Q8bzt0KyspaWYoaT1uW3RdLGkub3B0aW9ucy52ZXJ0aWNhbCE9PWUub3B0aW9ucy52ZXJ0aWNhbClyZXR1cm4gaX19KSxDdD1qdC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXt0aGlzLnBsb3RBcmVhPWUsdGhpcy5vcHRpb25zPVh0KHt9LHRoaXMub3B0aW9ucyx0KX0sb3B0aW9uczp7a2V5Olwibm9uZVwiLGxvY2s6XCJub25lXCJ9LHN0YXJ0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hY3RpdmU9JChlLmV2ZW50LHRoaXMub3B0aW9ucy5rZXkpfSxtb3ZlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuX2FjdGl2ZSl7dmFyIHQ9dGhpcy5heGlzUmFuZ2VzPXRoaXMuX3BhbkF4ZXMoZSx2cikuY29uY2F0KHRoaXMuX3BhbkF4ZXMoZSx5cikpO2lmKHQubGVuZ3RoKXJldHVybiB0aGlzLmF4aXNSYW5nZXM9dCxRKHQpfX0sZW5kOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fYWN0aXZlO3JldHVybiB0aGlzLl9hY3RpdmU9ITEsZX0scGFuOmZ1bmN0aW9uKCl7dmFyIGUsdCxpPXRoaXMucGxvdEFyZWEsbj10aGlzLmF4aXNSYW5nZXM7aWYobi5sZW5ndGgpe2Zvcih0PTA7dDxuLmxlbmd0aDt0KyspZT1uW3RdLGkudXBkYXRlQXhpc09wdGlvbnMoZS5heGlzLGUucmFuZ2UpO2kucmVkcmF3KGkucGFuZXMpfX0sZGVzdHJveTpmdW5jdGlvbigpe2RlbGV0ZSB0aGlzLnBsb3RBcmVhfSxfcGFuQXhlczpmdW5jdGlvbihlLHQpe3ZhciBpLG4sbyxyLGE9dGhpcy5wbG90QXJlYSxzPS1lW3RdLmRlbHRhLGw9KHRoaXMub3B0aW9ucy5sb2NrfHxcIlwiKS50b0xvd2VyQ2FzZSgpLGM9W107aWYoMCE9PXMmJihsfHxcIlwiKS50b0xvd2VyQ2FzZSgpIT10KWZvcihpPWEuYXhlcyxyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLCh0PT12ciYmIW4ub3B0aW9ucy52ZXJ0aWNhbHx8dD09eXImJm4ub3B0aW9ucy52ZXJ0aWNhbCkmJihvPW4ucGFuKHMpLG8mJihvLmxpbWl0UmFuZ2U9ITAsYy5wdXNoKHtheGlzOm4scmFuZ2U6b30pKSk7cmV0dXJuIGN9fSksUHQ9anQuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsaSl7dGhpcy5jaGFydD10LHRoaXMub3B0aW9ucz1YdCh7fSx0aGlzLm9wdGlvbnMsaSksdGhpcy5fbWFycXVlZT1lKFwiPGRpdiBjbGFzcz0nay1tYXJxdWVlJz48ZGl2IGNsYXNzPSdrLW1hcnF1ZWUtY29sb3InPjwvZGl2PjwvZGl2PlwiKX0sb3B0aW9uczp7a2V5Olwic2hpZnRcIixsb2NrOlwibm9uZVwifSxzdGFydDpmdW5jdGlvbihlKXt2YXIgdCxpLG4sbyxyO3JldHVybiEhKCQoZS5ldmVudCx0aGlzLm9wdGlvbnMua2V5KSYmKHQ9dGhpcy5jaGFydCxpPXQuX3RvTW9kZWxDb29yZGluYXRlcyhlLnguY2xpZW50LGUueS5jbGllbnQpLG49dGhpcy5fem9vbVBhbmU9dC5fcGxvdEFyZWEucGFuZUJ5UG9pbnQoaSksbiYmbi5jbGlwQm94KCkpKSYmKG89bi5jbGlwQm94KCkuY2xvbmUoKSxyPXRoaXMuX2VsZW1lbnRPZmZzZXQoKSxvLnRyYW5zbGF0ZShyLmxlZnQsci50b3ApLHRoaXMuX3pvb21QYW5lQ2xpcEJveD1vLHRoaXMuX21hcnF1ZWUuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSkuY3NzKHtsZWZ0OmUueC5jbGllbnQrMSx0b3A6ZS55LmNsaWVudCsxLHdpZHRoOjAsaGVpZ2h0OjB9KSwhMCl9LF9lbGVtZW50T2Zmc2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jaGFydC5lbGVtZW50LHQ9ZS5vZmZzZXQoKTtyZXR1cm57bGVmdDpwYXJzZUludChlLmNzcyhcInBhZGRpbmdUb3BcIiksMTApK3QubGVmdCx0b3A6cGFyc2VJbnQoZS5jc3MoXCJwYWRkaW5nTGVmdFwiKSwxMCkrdC50b3B9fSxtb3ZlOmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcy5fem9vbVBhbmU7aSYmKHQ9dGhpcy5fc2VsZWN0aW9uUG9zaXRpb24oZSksdGhpcy5fbWFycXVlZS5jc3ModCkpfSxlbmQ6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG8scj10aGlzLl96b29tUGFuZTtpZihyKXJldHVybiB0PXRoaXMuX2VsZW1lbnRPZmZzZXQoKSxpPXRoaXMuX3NlbGVjdGlvblBvc2l0aW9uKGUpLGkubGVmdC09dC5sZWZ0LGkudG9wLT10LnRvcCxuPXt4OmkubGVmdCx5OmkudG9wfSxvPXt4OmkubGVmdCtpLndpZHRoLHk6aS50b3AraS5oZWlnaHR9LHRoaXMuX3VwZGF0ZUF4aXNSYW5nZXMobixvKSx0aGlzLl9tYXJxdWVlLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLl96b29tUGFuZSxRKHRoaXMuYXhpc1Jhbmdlcyl9LHpvb206ZnVuY3Rpb24oKXt2YXIgZSx0LGksbj10aGlzLmF4aXNSYW5nZXM7aWYobiYmbi5sZW5ndGgpe2ZvcihlPXRoaXMuY2hhcnQuX3Bsb3RBcmVhLGk9MDtpPG4ubGVuZ3RoO2krKyl0PW5baV0sZS51cGRhdGVBeGlzT3B0aW9ucyh0LmF4aXMsdC5yYW5nZSk7ZS5yZWRyYXcoZS5wYW5lcyl9fSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fbWFycXVlZS5yZW1vdmUoKSxkZWxldGUgdGhpcy5fbWFycXVlZSxkZWxldGUgdGhpcy5jaGFydH0sX3VwZGF0ZUF4aXNSYW5nZXM6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuLG8scixhPSh0aGlzLm9wdGlvbnMubG9ja3x8XCJcIikudG9Mb3dlckNhc2UoKSxzPVtdLGw9dGhpcy5fem9vbVBhbmUuYXhlcztmb3Iobz0wO288bC5sZW5ndGg7bysrKWk9bFtvXSxuPWkub3B0aW9ucy52ZXJ0aWNhbCxhPT12ciYmIW58fGE9PT15ciYmbnx8KHI9aS5wb2ludHNSYW5nZShlLHQpLHImJnMucHVzaCh7YXhpczppLHJhbmdlOnJ9KSk7dGhpcy5heGlzUmFuZ2VzPXN9LF9zZWxlY3Rpb25Qb3NpdGlvbjpmdW5jdGlvbihlKXt2YXIgdD0odGhpcy5vcHRpb25zLmxvY2t8fFwiXCIpLnRvTG93ZXJDYXNlKCksaT1PdC5taW4oZS54LnN0YXJ0TG9jYXRpb24sZS54LmxvY2F0aW9uKSxuPU90Lm1pbihlLnkuc3RhcnRMb2NhdGlvbixlLnkubG9jYXRpb24pLG89T3QuYWJzKGUueC5pbml0aWFsRGVsdGEpLHI9T3QuYWJzKGUueS5pbml0aWFsRGVsdGEpLGE9dGhpcy5fem9vbVBhbmVDbGlwQm94O3JldHVybiB0PT12ciYmKGk9YS54MSxvPWEud2lkdGgoKSksdD09eXImJihuPWEueTEscj1hLmhlaWdodCgpKSxlLngubG9jYXRpb24+YS54MiYmKG89YS54Mi1lLnguc3RhcnRMb2NhdGlvbiksZS54LmxvY2F0aW9uPGEueDEmJihvPWUueC5zdGFydExvY2F0aW9uLWEueDEpLGUueS5sb2NhdGlvbj5hLnkyJiYocj1hLnkyLWUueS5zdGFydExvY2F0aW9uKSxlLnkubG9jYXRpb248YS55MSYmKHI9ZS55LnN0YXJ0TG9jYXRpb24tYS55MSkse2xlZnQ6T3QubWF4KGksYS54MSksdG9wOk90Lm1heChuLGEueTEpLHdpZHRoOm8saGVpZ2h0OnJ9fX0pLFR0PWp0LmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLHQpe3RoaXMuY2hhcnQ9ZSx0aGlzLm9wdGlvbnM9WHQoe30sdGhpcy5vcHRpb25zLHQpfSx1cGRhdGVSYW5nZXM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG8scj0odGhpcy5vcHRpb25zLmxvY2t8fFwiXCIpLnRvTG93ZXJDYXNlKCksYT1bXSxzPXRoaXMuY2hhcnQuX3Bsb3RBcmVhLmF4ZXM7Zm9yKG49MDtuPHMubGVuZ3RoO24rKyl0PXNbbl0saT10Lm9wdGlvbnMudmVydGljYWwscj09dnImJiFpfHxyPT09eXImJml8fChvPXQuem9vbVJhbmdlKC1lKSxvJiZhLnB1c2goe2F4aXM6dCxyYW5nZTpvfSkpO3JldHVybiB0aGlzLmF4aXNSYW5nZXM9YSxRKGEpfSx6b29tOmZ1bmN0aW9uKCl7dmFyIGUsdCxpLG49dGhpcy5heGlzUmFuZ2VzO2lmKG4mJm4ubGVuZ3RoKXtmb3IoZT10aGlzLmNoYXJ0Ll9wbG90QXJlYSxpPTA7aTxuLmxlbmd0aDtpKyspdD1uW2ldLGUudXBkYXRlQXhpc09wdGlvbnModC5heGlzLHQucmFuZ2UpO2UucmVkcmF3KGUucGFuZXMpfX0sZGVzdHJveTpmdW5jdGlvbigpe2RlbGV0ZSB0aGlzLmNoYXJ0fX0pLFJ0PWZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvLHIsYT10aGlzLHM9dC5jYW5vbmljYWxGaWVsZHMoZSksbD10LnZhbHVlRmllbGRzKGUpLGM9dC5zb3VyY2VGaWVsZHMoZSxzKSxoPWEuX3Nlcmllc0ZpZWxkcz1bXSx1PWkucXVlcnkoZS50eXBlKSxwPWUuYWdncmVnYXRlfHx1O2ZvcihhLl9zZXJpZXM9ZSxhLl9iaW5kZXI9dCxuPTA7bjxzLmxlbmd0aDtuKyspe2lmKG89c1tuXSx0eXBlb2YgcD09PXZvKXI9cFtvXTtlbHNle2lmKDAhPT1uJiYhQWkobyxsKSlicmVhaztyPXB9ciYmaC5wdXNoKHtjYW5vbmljYWxOYW1lOm8sbmFtZTpjW25dLHRyYW5zZm9ybTpadChyKT9yOmt0W3JdfSl9fSxSdC5wcm90b3R5cGU9e2FnZ3JlZ2F0ZVBvaW50czpmdW5jdGlvbihlLHQpe3ZhciBpLG4sbyxyLGEscz10aGlzLGw9cy5fYmluZFBvaW50cyhlfHxbXSksYz1zLl9zZXJpZXMsaD1zLl9zZXJpZXNGaWVsZHMsdT1sLmRhdGFJdGVtc1swXSxwPXt9O2ZvcighdXx8Qih1KXx8RHQodSl8fChhPWZ1bmN0aW9uKCl7fSxhLnByb3RvdHlwZT11LHA9bmV3IGEpLGk9MDtpPGgubGVuZ3RoO2krKyl7aWYobj1oW2ldLG89cy5fYmluZEZpZWxkKGwudmFsdWVzLG4uY2Fub25pY2FsTmFtZSkscj1uLnRyYW5zZm9ybShvLGMsbC5kYXRhSXRlbXMsdCksIShudWxsPT09cnx8dHlwZW9mIHIhPT12b3x8Umkoci5sZW5ndGgpfHxyIGluc3RhbmNlb2YgRGF0ZSkpe3A9cjticmVha31SaShyKSYmKEcobi5uYW1lLHApLE50LnNldHRlcihuLm5hbWUpKHAscikpfXJldHVybiBwfSxfYmluZFBvaW50czpmdW5jdGlvbihlKXt2YXIgdCxpLG49dGhpcyxvPW4uX2JpbmRlcixyPW4uX3NlcmllcyxhPVtdLHM9W107Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKylpPWVbdF0sYS5wdXNoKG8uYmluZFBvaW50KHIsaSkpLHMucHVzaChyLmRhdGFbaV0pO3JldHVybnt2YWx1ZXM6YSxkYXRhSXRlbXM6c319LF9iaW5kRmllbGQ6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuLG8scixhPVtdLHM9ZS5sZW5ndGg7Zm9yKGk9MDtpPHM7aSsrKW49ZVtpXSxyPW4udmFsdWVGaWVsZHMsbz1SaShyW3RdKT9yW3RdOm4uZmllbGRzW3RdLGEucHVzaChvKTtyZXR1cm4gYX19LEl0PWp0LmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlKXt0aGlzLl9wbG90QXJlYT1lLHRoaXMudmlzdWFsPWUudmlzdWFsLHRoaXMuYmFja2dyb3VuZFZpc3VhbD1lLl9iZ1Zpc3VhbH19KSxWdD1qdC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXt0aGlzLl9jaGFydD1lLHRoaXMuX3BhbmU9dCx0aGlzLnZpc3VhbD10LnZpc3VhbCx0aGlzLmNoYXJ0c1Zpc3VhbD10LmNoYXJ0Q29udGFpbmVyLnZpc3VhbCx0aGlzLm5hbWU9dC5vcHRpb25zLm5hbWV9LHNlcmllczpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5fY2hhcnQsaT10Ll9wbG90QXJlYS5ncm91cFNlcmllc0J5UGFuZSgpLG49aVt0aGlzLm5hbWV8fFwiZGVmYXVsdFwiXSxvPVtdO2lmKG4pZm9yKGU9MDtlPG4ubGVuZ3RoO2UrKylvLnB1c2gobmV3IEx0KHQsbltlXSkpO3JldHVybiBvfX0pLEJ0PWp0LmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlKXt0aGlzLl9heGlzPWUsdGhpcy5vcHRpb25zPWUub3B0aW9uc30sdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fYXhpcyxpPXQuZ2V0Q2F0ZWdvcnk/dC5nZXRDYXRlZ29yeShlKTp0LmdldFZhbHVlKGUpO3JldHVybiBpfSxzbG90OmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm4gUmkoaSl8fChpPSEwKSx0aGlzLl9heGlzLnNsb3QoZSx0LGkpfSxyYW5nZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9heGlzLnJhbmdlKCl9LHZhbHVlUmFuZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXhpcy52YWx1ZVJhbmdlKCl9fSksTHQ9anQuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCl7dGhpcy5fY2hhcnQ9ZSx0aGlzLl9vcHRpb25zPXR9LHBvaW50czpmdW5jdGlvbihlKXt2YXIgdCxpLG49dGhpcy5fcG9pbnRzO3JldHVybiBufHwodD10aGlzLl9zZXJpZXNPcHRpb25zKCksaT10aGlzLl9jaGFydC5fcGxvdEFyZWEsdGhpcy5fcG9pbnRzPW49aS5wb2ludHNCeVNlcmllc0luZGV4KHQuaW5kZXgpKSxOdC5pc0Z1bmN0aW9uKGUpJiYobj10aGlzLl9maWx0ZXJQb2ludHMobixlKSksbn0sZGF0YTpmdW5jdGlvbihlKXt2YXIgdCxpLG4sbyxyPXRoaXMuX3Nlcmllc09wdGlvbnMoKTtyZXR1cm4gZSYmKHQ9dGhpcy5fY2hhcnQsaT10Ll9wbG90QXJlYSxyLmRhdGE9ZSxyLmNhdGVnb3J5RmllbGQmJihuPWkuc2VyaWVzQ2F0ZWdvcnlBeGlzKHIpLG89W10uY29uY2F0KHQub3B0aW9ucy5jYXRlZ29yeUF4aXMpLHQuX2JpbmRDYXRlZ29yeUF4aXNGcm9tU2VyaWVzKG9bbi5heGlzSW5kZXhdLG4uYXhpc0luZGV4KSksdC5fbm9UcmFuc2l0aW9uc1JlZHJhdygpLHRoaXMuX2NsZWFyRmllbGRzKCkpLHIuZGF0YX0sZmluZFBvaW50OmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcy5wb2ludHMoKTtmb3IodD0wO3Q8aS5sZW5ndGg7dCsrKWlmKGUoaVt0XSkpcmV0dXJuIGlbdF19LHRvZ2dsZUhpZ2hsaWdodDpmdW5jdGlvbihlLHQpe3Q9dD9OdC5pc0Z1bmN0aW9uKHQpP3RoaXMucG9pbnRzKHQpOkR0KHQpP3Q6W3RdOnRoaXMucG9pbnRzKCksdGhpcy5fY2hhcnQuX3RvZ2dsZVBvaW50c0hpZ2hsaWdodChlLHQpfSx0b2dnbGVWaXNpYmlsaXR5OmZ1bmN0aW9uKGUsdCl7dmFyIGksbixvPXRoaXMuX2NoYXJ0LHI9dGhpcy5fc2VyaWVzT3B0aW9ucygpLGE9TnQuaXNGdW5jdGlvbih0KTtpZihhKWlmKEFpKHIudHlwZSxbYm8sQW4sem5dKSlmb3IoaT10aGlzLl9maWx0ZXJEYXRhKHQpLG49MDtuPGkubGVuZ3RoO24rKylpW25dLnZpc2libGU9ZTtlbHNlIHIudmlzaWJsZT1mdW5jdGlvbihpKXtyZXR1cm4hdChpLmRhdGFJdGVtKXx8ZX07ZWxzZSByLnZpc2libGU9ZSxvLl9zYXZlR3JvdXBWaXNpYmxlU3RhdGUocik7by5fbm9UcmFuc2l0aW9uc1JlZHJhdygpLHRoaXMuX2NsZWFyRmllbGRzKCl9LF9maWx0ZXJEYXRhOmZ1bmN0aW9uKGUpe3ZhciB0LGk9dGhpcy5fc2VyaWVzT3B0aW9ucygpLmRhdGEsbj1pLmxlbmd0aCxvPVtdO2Zvcih0PTA7dDxuO3QrKyllKGlbdF0pJiZvLnB1c2goaVt0XSk7cmV0dXJuIG99LF9maWx0ZXJQb2ludHM6ZnVuY3Rpb24oZSx0KXt2YXIgaSxuPVtdLG89ZS5sZW5ndGg7Zm9yKGk9MDtpPG87aSsrKXQoZVtpXSkmJm4ucHVzaChlW2ldKTtyZXR1cm4gbn0sX3Nlcmllc09wdGlvbnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9zZXJpZXM7cmV0dXJuIGV8fChlPXRoaXMuX3Nlcmllcz10aGlzLl9jaGFydC5fc2VyaWVzT3B0aW9ucyh0aGlzLl9vcHRpb25zKSksZX0sX2NsZWFyRmllbGRzOmZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuX3BvaW50cyxkZWxldGUgdGhpcy5fc2VyaWVzfX0pLFV0KGUuZWFzaW5nLHtlYXNlT3V0RWxhc3RpYzpmdW5jdGlvbihlLHQsaSxuKXt2YXIgbz0xLjcwMTU4LHI9MCxhPW47cmV0dXJuIDA9PT1lP2k6MT09PWU/aStuOihyfHwocj0uNSksYTxPdC5hYnMobik/KGE9bixvPXIvNCk6bz1yLygyKk90LlBJKSpPdC5hc2luKG4vYSksYSpPdC5wb3coMiwtMTAqZSkqT3Quc2luKCgxKmUtbykqKDEuMSpPdC5QSSkvcikrbitpKX19KSxKdC51aS5wbHVnaW4oUnIpLG5lLmN1cnJlbnQucmVnaXN0ZXIodXQsW3FpLGhuLEtuLGRyLEhpLHVyLHRuLHlvLGVuLGZyLCRpLHByLFBvLENvLGdyLFVuXSksbmUuY3VycmVudC5yZWdpc3RlcihmdCxbQm8sTG8sSmldKSxuZS5jdXJyZW50LnJlZ2lzdGVyKGR0LFtib10pLG5lLmN1cnJlbnQucmVnaXN0ZXIoZ3QsW0FuXSksb2UuY3VycmVudC5yZWdpc3RlcihbcWksaG4sS24sZHIsSGksdXJdLFtocl0sW25uLGNuLHhvLFRuLFJuXSksb2UuY3VycmVudC5yZWdpc3RlcihbUG8sQ29dLFtNbixucl0sW25uLGNuLHhvXSksb2UuY3VycmVudC5yZWdpc3RlcihbZ3IsVW5dLFtocl0sW25uLGNuLHhvLFhvXSksbi5jdXJyZW50LnJlZ2lzdGVyKFtxaSxobixLbixkcixIaSx1cixncixVbl0se3ZhbHVlOmVvLGNvbG9yOkRuLG5vdGVUZXh0OkRuLGVycm9yTG93Om5vLGVycm9ySGlnaDplb30pLG4uY3VycmVudC5yZWdpc3RlcihbUG8sQ29dLHtmcm9tOm5vLHRvOmVvLGNvbG9yOkRuLG5vdGVUZXh0OkRufSksb2UuY3VycmVudC5yZWdpc3RlcihbQm8sTG8sSmldLFt2cix5cl0sW2NuLHhvLEluLFZuLEJuLExuXSksb2UuY3VycmVudC5yZWdpc3RlcihbSmldLFt2cix5cixcInNpemVcIl0sW2NuLG5uLHhvXSksb2UuY3VycmVudC5yZWdpc3RlcihbdG4seW9dLFtcIm9wZW5cIixcImhpZ2hcIixcImxvd1wiLFwiY2xvc2VcIl0sW25uLGNuLFwiZG93bkNvbG9yXCIseG9dKSxuLmN1cnJlbnQucmVnaXN0ZXIoW3RuLHlvXSx7b3BlbjplbyxoaWdoOmVvLGxvdzpubyxjbG9zZTplbyxjb2xvcjpEbixkb3duQ29sb3I6RG4sbm90ZVRleHQ6RG59KSxvZS5jdXJyZW50LnJlZ2lzdGVyKFskaSxwcl0sW1wibG93ZXJcIixcInExXCIsXCJtZWRpYW5cIixcInEzXCIsXCJ1cHBlclwiLFwibWVhblwiLFwib3V0bGllcnNcIl0sW25uLGNuLHhvXSksbi5jdXJyZW50LnJlZ2lzdGVyKFskaSxwcl0se2xvd2VyOmVvLHExOmVvLG1lZGlhbjplbyxxMzplbyx1cHBlcjplbyxtZWFuOmVvLG91dGxpZXJzOkRuLGNvbG9yOkRuLG5vdGVUZXh0OkRufSksb2UuY3VycmVudC5yZWdpc3RlcihbZW4sZnJdLFtcImN1cnJlbnRcIixcInRhcmdldFwiXSxbbm4sY24sXCJ2aXNpYmxlSW5MZWdlbmRcIix4b10pLG4uY3VycmVudC5yZWdpc3RlcihbZW4sZnJdLHtjdXJyZW50OmVvLHRhcmdldDplbyxjb2xvcjpEbixub3RlVGV4dDpEbn0pLG9lLmN1cnJlbnQucmVnaXN0ZXIoW2JvLEFuXSxbaHJdLFtubixjbixcImV4cGxvZGVcIixcInZpc2libGVJbkxlZ2VuZFwiLFwidmlzaWJsZVwiXSksWHQoSnQse0VRVUFMTFlfU1BBQ0VEX1NFUklFUzpQcixBZ2dyZWdhdGVzOmt0LEFyZWFDaGFydDpIZSxBcmVhU2VnbWVudDpVZSxBeGlzR3JvdXBSYW5nZVRyYWNrZXI6cHQsQmFyOm1lLEJhckNoYXJ0OmJlLEJhckxhYmVsOnJlLEJ1YmJsZUNoYXJ0OlllLEJ1bGxldDpTZSxCdWxsZXRDaGFydDprZSxDYW5kbGVzdGlja0NoYXJ0OldlLENhbmRsZXN0aWNrOlhlLENhdGVnb3JpY2FsQ2hhcnQ6X2UsQ2F0ZWdvcmljYWxFcnJvckJhcjpUZSxDYXRlZ29yaWNhbFBsb3RBcmVhOnV0LENhdGVnb3J5QXhpczpjZSxDaGFydEF4aXM6QnQsQ2hhcnRDb250YWluZXI6bHQsQ2hhcnRQYW5lOlZ0LENoYXJ0UGxvdEFyZWE6SXQsQ2hhcnRTZXJpZXM6THQsQ2xpcEFuaW1hdGlvbjpNZSxDbHVzdGVyTGF5b3V0OnBlLENyb3NzaGFpcjp3dCxDcm9zc2hhaXJUb29sdGlwOkF0LERhdGVDYXRlZ29yeUF4aXM6aGUsRGF0ZVZhbHVlQXhpczp1ZSxEZWZhdWx0QWdncmVnYXRlczpuLERvbnV0Q2hhcnQ6b3QsRG9udXRQbG90QXJlYTpndCxEb251dFNlZ21lbnQ6bnQsRXJyb3JCYXJCYXNlOlBlLEVycm9yUmFuZ2VDYWxjdWxhdG9yOnllLEhpZ2hsaWdodDp2dCxTaGFyZWRUb29sdGlwOmJ0LExlZ2VuZDpsZSxMZWdlbmRJdGVtOmFlLExlZ2VuZExheW91dDpzZSxMaW5lQ2hhcnQ6RGUsTGluZVBvaW50OkllLExpbmVTZWdtZW50OkJlLFBhbmU6c3QsUGllQW5pbWF0aW9uOm10LFBpZUNoYXJ0Oml0LFBpZUNoYXJ0TWl4aW46dHQsUGllUGxvdEFyZWE6ZHQsUGllU2VnbWVudDpldCxQbG90QXJlYUJhc2U6Y3QsUGxvdEFyZWFFdmVudHNNaXhpbjpodCxQbG90QXJlYUZhY3Rvcnk6bmUsUG9pbnRFdmVudHNNaXhpbjpkZSxSYW5nZUJhcjp3ZSxSYW5nZUJhckNoYXJ0OkFlLFNjYXR0ZXJDaGFydDpHZSxTY2F0dGVyRXJyb3JCYXI6UmUsU2NhdHRlckxpbmVDaGFydDpxZSxTZWxlY3Rpb246U3QsU2VyaWVzQWdncmVnYXRvcjpSdCxTZXJpZXNCaW5kZXI6b2UsU2hhcGVFbGVtZW50OmRpLFNwbGluZVNlZ21lbnQ6T2UsU3BsaW5lQXJlYVNlZ21lbnQ6TmUsU3RhY2tXcmFwOmZlLFRvb2x0aXA6X3QsT0hMQ0NoYXJ0OktlLE9ITENQb2ludDpaZSxXYXRlcmZhbGxDaGFydDpydCxXYXRlcmZhbGxTZWdtZW50OmF0LFhZUGxvdEFyZWE6ZnQsTW91c2V3aGVlbFpvb206VHQsWm9vbVNlbGVjdGlvbjpQdCxQYW5uYWJsZTpDdCxhZGREdXJhdGlvbjptLGFyZU51bWJlcnM6RSxheGlzR3JvdXBCb3g6UCxjYXRlZ29yaWVzQ291bnQ6aCxjZWlsRGF0ZTp5LGNvdW50TnVtYmVyczpMLGR1cmF0aW9uOkEsZW5zdXJlVHJlZTpHLGluZGV4T2Y6Rixpc051bWJlcjpCLGZsb29yRGF0ZTp2LGZpbHRlclNlcmllc0J5VHlwZTpPLGhhc1ZhbHVlOkssbHRlRGF0ZUluZGV4OlYsZXZhbE9wdGlvbnM6TSxzZXJpZXNUb3RhbDpxLHNpbmdsZUl0ZW1PckFycmF5OkMsc29ydERhdGVzOlUsc3RhcnRPZldlZWs6eCx0cmFuc3Bvc2U6aix0b0RhdGU6ZCx0b1RpbWU6Zyx1bmlxdWVEYXRlczpIfSl9KHdpbmRvdy5rZW5kby5qUXVlcnkpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbihlLHQsaSl7KGl8fHQpKCl9KTs7IWZ1bmN0aW9uKGUsZGVmaW5lKXtkZWZpbmUoXCJ1dGlsL21haW4ubWluXCIsW1wia2VuZG8uY29yZS5taW5cIl0sZSl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gdHlwZW9mIGUhPT16fWZ1bmN0aW9uIG4oZSxuKXt2YXIgaT10KG4pO3JldHVybiBCLnJvdW5kKGUqaSkvaX1mdW5jdGlvbiB0KGUpe3JldHVybiBlP0IucG93KDEwLGUpOjF9ZnVuY3Rpb24gaShlLG4sdCl7cmV0dXJuIEIubWF4KEIubWluKGUsdCksbil9ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSpVfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGUvVX1mdW5jdGlvbiBhKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlJiYhaXNOYU4oZSl9ZnVuY3Rpb24gcyhuLHQpe3JldHVybiBlKG4pP246dH1mdW5jdGlvbiBsKGUpe3JldHVybiBlKmV9ZnVuY3Rpb24gdShlKXt2YXIgbix0PVtdO2ZvcihuIGluIGUpdC5wdXNoKG4rZVtuXSk7cmV0dXJuIHQuc29ydCgpLmpvaW4oXCJcIil9ZnVuY3Rpb24gYyhlKXt2YXIgbix0PTIxNjYxMzYyNjE7Zm9yKG49MDtuPGUubGVuZ3RoOysrbil0Kz0odDw8MSkrKHQ8PDQpKyh0PDw3KSsodDw8OCkrKHQ8PDI0KSx0Xj1lLmNoYXJDb2RlQXQobik7cmV0dXJuIHQ+Pj4wfWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGModShlKSl9ZnVuY3Rpb24gZChlKXt2YXIgbix0PWUubGVuZ3RoLGk9TyxyPU47Zm9yKG49MDtuPHQ7bisrKXI9Qi5tYXgocixlW25dKSxpPUIubWluKGksZVtuXSk7cmV0dXJue21pbjppLG1heDpyfX1mdW5jdGlvbiBmKGUpe3JldHVybiBkKGUpLm1pbn1mdW5jdGlvbiBwKGUpe3JldHVybiBkKGUpLm1heH1mdW5jdGlvbiBnKGUpe3JldHVybiB4KGUpLm1pbn1mdW5jdGlvbiBtKGUpe3JldHVybiB4KGUpLm1heH1mdW5jdGlvbiB4KGUpe3ZhciBuLHQsaSxyPU8sbz1OO2ZvcihuPTAsdD1lLmxlbmd0aDtuPHQ7bisrKWk9ZVtuXSxudWxsIT09aSYmaXNGaW5pdGUoaSkmJihyPUIubWluKHIsaSksbz1CLm1heChvLGkpKTtyZXR1cm57bWluOnI9PT1PP3ZvaWQgMDpyLG1heDpvPT09Tj92b2lkIDA6b319ZnVuY3Rpb24gdihlKXtpZihlKXJldHVybiBlW2UubGVuZ3RoLTFdfWZ1bmN0aW9uIEEoZSxuKXtyZXR1cm4gZS5wdXNoLmFwcGx5KGUsbiksZX1mdW5jdGlvbiB5KGUpe3JldHVybiBWLnRlbXBsYXRlKGUse3VzZVdpdGhCbG9jazohMSxwYXJhbU5hbWU6XCJkXCJ9KX1mdW5jdGlvbiB3KG4sdCl7cmV0dXJuIGUodCkmJm51bGwhPT10P1wiIFwiK24rXCI9J1wiK3QrXCInIFwiOlwiXCJ9ZnVuY3Rpb24gYihlKXt2YXIgbix0PVwiXCI7Zm9yKG49MDtuPGUubGVuZ3RoO24rKyl0Kz13KGVbbl1bMF0sZVtuXVsxXSk7cmV0dXJuIHR9ZnVuY3Rpb24gQyhuKXt2YXIgdCxpLHI9XCJcIjtmb3IodD0wO3Q8bi5sZW5ndGg7dCsrKWk9blt0XVsxXSxlKGkpJiYocis9blt0XVswXStcIjpcIitpK1wiO1wiKTtpZihcIlwiIT09cilyZXR1cm4gcn1mdW5jdGlvbiBMKGUpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiBlJiYoZSs9XCJweFwiKSxlfWZ1bmN0aW9uIFMoZSl7dmFyIG4sdCxpPVtdO2lmKGUpZm9yKG49Vi50b0h5cGhlbnMoZSkuc3BsaXQoXCItXCIpLHQ9MDt0PG4ubGVuZ3RoO3QrKylpLnB1c2goXCJrLXBvcy1cIituW3RdKTtyZXR1cm4gaS5qb2luKFwiIFwiKX1mdW5jdGlvbiBrKG4pe3JldHVyblwiXCI9PT1ufHxudWxsPT09bnx8XCJub25lXCI9PT1ufHxcInRyYW5zcGFyZW50XCI9PT1ufHwhZShuKX1mdW5jdGlvbiBfKGUpe2Zvcih2YXIgbj17MTpcImlcIiwxMDpcInhcIiwxMDA6XCJjXCIsMjpcImlpXCIsMjA6XCJ4eFwiLDIwMDpcImNjXCIsMzpcImlpaVwiLDMwOlwieHh4XCIsMzAwOlwiY2NjXCIsNDpcIml2XCIsNDA6XCJ4bFwiLDQwMDpcImNkXCIsNTpcInZcIiw1MDpcImxcIiw1MDA6XCJkXCIsNjpcInZpXCIsNjA6XCJseFwiLDYwMDpcImRjXCIsNzpcInZpaVwiLDcwOlwibHh4XCIsNzAwOlwiZGNjXCIsODpcInZpaWlcIiw4MDpcImx4eHhcIiw4MDA6XCJkY2NjXCIsOTpcIml4XCIsOTA6XCJ4Y1wiLDkwMDpcImNtXCIsMWUzOlwibVwifSx0PVsxZTMsOTAwLDgwMCw3MDAsNjAwLDUwMCw0MDAsMzAwLDIwMCwxMDAsOTAsODAsNzAsNjAsNTAsNDAsMzAsMjAsMTAsOSw4LDcsNiw1LDQsMywyLDFdLGk9XCJcIjtlPjA7KWU8dFswXT90LnNoaWZ0KCk6KGkrPW5bdFswXV0sZS09dFswXSk7cmV0dXJuIGl9ZnVuY3Rpb24gaihlKXt2YXIgbix0LGkscixvO2ZvcihlPWUudG9Mb3dlckNhc2UoKSxuPXtpOjEsdjo1LHg6MTAsbDo1MCxjOjEwMCxkOjUwMCxtOjFlM30sdD0wLGk9MCxyPTA7cjxlLmxlbmd0aDsrK3Ipe2lmKG89bltlLmNoYXJBdChyKV0sIW8pcmV0dXJuIG51bGw7dCs9byxvPmkmJih0LT0yKmkpLGk9b31yZXR1cm4gdH1mdW5jdGlvbiBHKGUpe3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQsaT1cIlwiO2Zvcih0PWFyZ3VtZW50cy5sZW5ndGg7LS10Pj0wOylpKz1cIjpcIithcmd1bWVudHNbdF07cmV0dXJuIGkgaW4gbj9uW2ldOm5baV09ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIFAoZSl7Zm9yKHZhciBuLHQsaT1bXSxyPTAsbz1lLmxlbmd0aDtyPG87KW49ZS5jaGFyQ29kZUF0KHIrKyksbj49NTUyOTYmJm48PTU2MzE5JiZyPG8/KHQ9ZS5jaGFyQ29kZUF0KHIrKyksNTYzMjA9PSg2NDUxMiZ0KT9pLnB1c2goKCgxMDIzJm4pPDwxMCkrKDEwMjMmdCkrNjU1MzYpOihpLnB1c2gobiksci0tKSk6aS5wdXNoKG4pO3JldHVybiBpfWZ1bmN0aW9uIE0oZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3ZhciBuPVwiXCI7cmV0dXJuIGU+NjU1MzUmJihlLT02NTUzNixuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGU+Pj4xMCYxMDIzfDU1Mjk2KSxlPTU2MzIwfDEwMjMmZSksbis9U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pLmpvaW4oXCJcIil9ZnVuY3Rpb24gVChlLG4pe2Z1bmN0aW9uIHQoZSx0KXtmb3IodmFyIGk9W10scj0wLG89MCxhPTA7cjxlLmxlbmd0aCYmbzx0Lmxlbmd0aDspbihlW3JdLHRbb10pPD0wP2lbYSsrXT1lW3IrK106aVthKytdPXRbbysrXTtyZXR1cm4gcjxlLmxlbmd0aCYmaS5wdXNoLmFwcGx5KGksZS5zbGljZShyKSksbzx0Lmxlbmd0aCYmaS5wdXNoLmFwcGx5KGksdC5zbGljZShvKSksaX1yZXR1cm4gZS5sZW5ndGg8Mj9lLnNsaWNlKCk6ZnVuY3Rpb24gaShlKXt2YXIgbixyLG87cmV0dXJuIGUubGVuZ3RoPD0xP2U6KG49TWF0aC5mbG9vcihlLmxlbmd0aC8yKSxyPWUuc2xpY2UoMCxuKSxvPWUuc2xpY2Uobikscj1pKHIpLG89aShvKSx0KHIsbykpfShlKX12YXIgQj1NYXRoLFY9d2luZG93LmtlbmRvLFI9Vi5kZWVwRXh0ZW5kLFU9Qi5QSS8xODAsTz1OdW1iZXIuTUFYX1ZBTFVFLE49LU51bWJlci5NQVhfVkFMVUUsej1cInVuZGVmaW5lZFwiLEk9RGF0ZS5ub3c7SXx8KEk9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0pLFIoVix7dXRpbDp7TUFYX05VTTpPLE1JTl9OVU06TixhcHBlbmQ6QSxhcnJheUxpbWl0czpkLGFycmF5TWluOmYsYXJyYXlNYXg6cCxkZWZpbmVkOmUsZGVnOm8saGFzaEtleTpjLGhhc2hPYmplY3Q6aCxpc051bWJlcjphLGlzVHJhbnNwYXJlbnQ6ayxsYXN0OnYsbGltaXRWYWx1ZTppLG5vdzpJLG9iamVjdEtleTp1LHJvdW5kOm4scmFkOnIscmVuZGVyQXR0cjp3LHJlbmRlckFsbEF0dHI6YixyZW5kZXJQb3M6UyxyZW5kZXJTaXplOkwscmVuZGVyU3R5bGU6QyxyZW5kZXJUZW1wbGF0ZTp5LHNwYXJzZUFycmF5TGltaXRzOngsc3BhcnNlQXJyYXlNaW46ZyxzcGFyc2VBcnJheU1heDptLHNxcjpsLHZhbHVlT3JEZWZhdWx0OnMscm9tYW5Ub0FyYWJpYzpqLGFyYWJpY1RvUm9tYW46XyxtZW1vaXplOkcsdWNzMmVuY29kZTpNLHVjczJkZWNvZGU6UCxtZXJnZVNvcnQ6VH19KSxWLmRyYXdpbmcudXRpbD1WLnV0aWwsVi5kYXRhdml6LnV0aWw9Vi51dGlsfSgpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbihlLG4sdCl7KHR8fG4pKCl9KSxmdW5jdGlvbihlLGRlZmluZSl7ZGVmaW5lKFwidXRpbC90ZXh0LW1ldHJpY3MubWluXCIsW1wia2VuZG8uY29yZS5taW5cIixcInV0aWwvbWFpbi5taW5cIl0sZSl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oKXtyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MCxiYXNlbGluZTowfX1mdW5jdGlvbiB0KGUsbix0KXtyZXR1cm4gaC5jdXJyZW50Lm1lYXN1cmUoZSxuLHQpfWZ1bmN0aW9uIGkoZSxuKXt2YXIgdD1bXTtpZihlLmxlbmd0aD4wJiZkb2N1bWVudC5mb250cyl7dHJ5e3Q9ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGRvY3VtZW50LmZvbnRzLmxvYWQoZSl9KX1jYXRjaChpKXtvLmxvZ1RvQ29uc29sZShpKX1Qcm9taXNlLmFsbCh0KS50aGVuKG4sbil9ZWxzZSBuKCl9dmFyIHI9ZG9jdW1lbnQsbz13aW5kb3cua2VuZG8sYT1vLkNsYXNzLHM9by51dGlsLGw9cy5kZWZpbmVkLHU9YS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSl7dGhpcy5fc2l6ZT1lLHRoaXMuX2xlbmd0aD0wLHRoaXMuX21hcD17fX0scHV0OmZ1bmN0aW9uKGUsbil7dmFyIHQ9dGhpcyxpPXQuX21hcCxyPXtrZXk6ZSx2YWx1ZTpufTtpW2VdPXIsdC5faGVhZD8odC5fdGFpbC5uZXdlcj1yLHIub2xkZXI9dC5fdGFpbCx0Ll90YWlsPXIpOnQuX2hlYWQ9dC5fdGFpbD1yLHQuX2xlbmd0aD49dC5fc2l6ZT8oaVt0Ll9oZWFkLmtleV09bnVsbCx0Ll9oZWFkPXQuX2hlYWQubmV3ZXIsdC5faGVhZC5vbGRlcj1udWxsKTp0Ll9sZW5ndGgrK30sZ2V0OmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMsdD1uLl9tYXBbZV07aWYodClyZXR1cm4gdD09PW4uX2hlYWQmJnQhPT1uLl90YWlsJiYobi5faGVhZD10Lm5ld2VyLG4uX2hlYWQub2xkZXI9bnVsbCksdCE9PW4uX3RhaWwmJih0Lm9sZGVyJiYodC5vbGRlci5uZXdlcj10Lm5ld2VyLHQubmV3ZXIub2xkZXI9dC5vbGRlciksdC5vbGRlcj1uLl90YWlsLHQubmV3ZXI9bnVsbCxuLl90YWlsLm5ld2VyPXQsbi5fdGFpbD10KSx0LnZhbHVlfX0pLGM9ZShcIjxkaXYgc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OyB0b3A6IC00MDAwcHggIWltcG9ydGFudDsgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7cGFkZGluZzogMCAhaW1wb3J0YW50OyBtYXJnaW46IDAgIWltcG9ydGFudDsgYm9yZGVyOiAwICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgd2hpdGUtc3BhY2U6IG5vd3JhcCFpbXBvcnRhbnQ7JyAvPlwiKVswXSxoPWEuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUpe3RoaXMuX2NhY2hlPW5ldyB1KDFlMyksdGhpcy5faW5pdE9wdGlvbnMoZSl9LG9wdGlvbnM6e2Jhc2VsaW5lTWFya2VyU2l6ZToxfSxtZWFzdXJlOmZ1bmN0aW9uKHQsaSxvKXt2YXIgYSx1LGgsZCxmLHAsZyxtO2lmKCF0KXJldHVybiBuKCk7aWYoYT1zLm9iamVjdEtleShpKSx1PXMuaGFzaEtleSh0K2EpLGg9dGhpcy5fY2FjaGUuZ2V0KHUpLGgpcmV0dXJuIGg7ZD1uKCksZj1vP286YyxwPXRoaXMuX2Jhc2VsaW5lTWFya2VyKCkuY2xvbmVOb2RlKCExKTtmb3IoZyBpbiBpKW09aVtnXSxsKG0pJiYoZi5zdHlsZVtnXT1tKTtyZXR1cm4gZShmKS50ZXh0KHQpLGYuYXBwZW5kQ2hpbGQocCksci5ib2R5LmFwcGVuZENoaWxkKGYpLCh0K1wiXCIpLmxlbmd0aCYmKGQud2lkdGg9Zi5vZmZzZXRXaWR0aC10aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplLGQuaGVpZ2h0PWYub2Zmc2V0SGVpZ2h0LGQuYmFzZWxpbmU9cC5vZmZzZXRUb3ArdGhpcy5vcHRpb25zLmJhc2VsaW5lTWFya2VyU2l6ZSksZC53aWR0aD4wJiZkLmhlaWdodD4wJiZ0aGlzLl9jYWNoZS5wdXQodSxkKSxmLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZiksZH0sX2Jhc2VsaW5lTWFya2VyOmZ1bmN0aW9uKCl7cmV0dXJuIGUoXCI8ZGl2IGNsYXNzPSdrLWJhc2VsaW5lLW1hcmtlcicgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO3dpZHRoOiBcIit0aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplK1wicHg7IGhlaWdodDogXCIrdGhpcy5vcHRpb25zLmJhc2VsaW5lTWFya2VyU2l6ZStcInB4O292ZXJmbG93OiBoaWRkZW47JyAvPlwiKVswXX19KTtoLmN1cnJlbnQ9bmV3IGgsby51dGlsLlRleHRNZXRyaWNzPWgsby51dGlsLkxSVUNhY2hlPXUsby51dGlsLmxvYWRGb250cz1pLG8udXRpbC5tZWFzdXJlVGV4dD10fSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbihlLG4sdCl7KHR8fG4pKCl9KSxmdW5jdGlvbihlLGRlZmluZSl7ZGVmaW5lKFwidXRpbC9iYXNlNjQubWluXCIsW1widXRpbC9tYWluLm1pblwiXSxlKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciB0LGkscixhLHMsbCx1LGM9XCJcIixoPTA7Zm9yKGU9bihlKTtoPGUubGVuZ3RoOyl0PWUuY2hhckNvZGVBdChoKyspLGk9ZS5jaGFyQ29kZUF0KGgrKykscj1lLmNoYXJDb2RlQXQoaCsrKSxhPXQ+PjIscz0oMyZ0KTw8NHxpPj40LGw9KDE1JmkpPDwyfHI+PjYsdT02MyZyLGlzTmFOKGkpP2w9dT02NDppc05hTihyKSYmKHU9NjQpLGM9YytvLmNoYXJBdChhKStvLmNoYXJBdChzKStvLmNoYXJBdChsKStvLmNoYXJBdCh1KTtyZXR1cm4gY31mdW5jdGlvbiBuKGUpe3ZhciBuLHQsaT1cIlwiO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspdD1lLmNoYXJDb2RlQXQobiksdDwxMjg/aSs9cih0KTp0PDIwNDg/KGkrPXIoMTkyfHQ+Pj42KSxpKz1yKDEyOHw2MyZ0KSk6dDw2NTUzNiYmKGkrPXIoMjI0fHQ+Pj4xMiksaSs9cigxMjh8dD4+PjYmNjMpLGkrPXIoMTI4fDYzJnQpKTtyZXR1cm4gaX12YXIgdD13aW5kb3cua2VuZG8saT10LmRlZXBFeHRlbmQscj1TdHJpbmcuZnJvbUNoYXJDb2RlLG89XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVwiO2kodC51dGlsLHtlbmNvZGVCYXNlNjQ6ZSxlbmNvZGVVVEY4Om59KX0oKSx3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSxuLHQpeyh0fHxuKSgpfSksZnVuY3Rpb24oZSxkZWZpbmUpe2RlZmluZShcIm1peGlucy9vYnNlcnZlcnMubWluXCIsW1wia2VuZG8uY29yZS5taW5cIl0sZSl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPU1hdGgsdD13aW5kb3cua2VuZG8saT10LmRlZXBFeHRlbmQscj1lLmluQXJyYXksbz17b2JzZXJ2ZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29ic2VydmVycz10aGlzLl9vYnNlcnZlcnN8fFtdfSxhZGRPYnNlcnZlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fb2JzZXJ2ZXJzP3RoaXMuX29ic2VydmVycy5wdXNoKGUpOnRoaXMuX29ic2VydmVycz1bZV0sdGhpc30scmVtb3ZlT2JzZXJ2ZXI6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5vYnNlcnZlcnMoKSx0PXIoZSxuKTtyZXR1cm4gdCE9LTEmJm4uc3BsaWNlKHQsMSksdGhpc30sdHJpZ2dlcjpmdW5jdGlvbihlLG4pe3ZhciB0LGkscj10aGlzLl9vYnNlcnZlcnM7aWYociYmIXRoaXMuX3N1c3BlbmRlZClmb3IoaT0wO2k8ci5sZW5ndGg7aSsrKXQ9cltpXSx0W2VdJiZ0W2VdKG4pO3JldHVybiB0aGlzfSxvcHRpb25zQ2hhbmdlOmZ1bmN0aW9uKGUpe2U9ZXx8e30sZS5lbGVtZW50PXRoaXMsdGhpcy50cmlnZ2VyKFwib3B0aW9uc0NoYW5nZVwiLGUpfSxnZW9tZXRyeUNoYW5nZTpmdW5jdGlvbigpe3RoaXMudHJpZ2dlcihcImdlb21ldHJ5Q2hhbmdlXCIse2VsZW1lbnQ6dGhpc30pfSxzdXNwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N1c3BlbmRlZD0odGhpcy5fc3VzcGVuZGVkfHwwKSsxLHRoaXN9LHJlc3VtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdXNwZW5kZWQ9bi5tYXgoKHRoaXMuX3N1c3BlbmRlZHx8MCktMSwwKSx0aGlzfSxfb2JzZXJ2ZXJGaWVsZDpmdW5jdGlvbihlLG4pe3RoaXNbZV0mJnRoaXNbZV0ucmVtb3ZlT2JzZXJ2ZXIodGhpcyksdGhpc1tlXT1uLG4uYWRkT2JzZXJ2ZXIodGhpcyl9fTtpKHQse21peGluczp7T2JzZXJ2ZXJzTWl4aW46b319KX0od2luZG93LmtlbmRvLmpRdWVyeSksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsbix0KXsodHx8bikoKX0pLGZ1bmN0aW9uKGUsZGVmaW5lKXtkZWZpbmUoXCJrZW5kby5kYXRhdml6LmNoYXJ0LnBvbGFyLm1pblwiLFtcImtlbmRvLmRhdGF2aXouY2hhcnQubWluXCIsXCJrZW5kby5kcmF3aW5nLm1pblwiXSxlKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtmdW5jdGlvbiB0KGUsbil7cmV0dXJuIGUudmFsdWUueC1uLnZhbHVlLnh9ZnVuY3Rpb24gaShlLG4pe3JldHVybiAxODAtTC5hYnMoTC5hYnMoZS1uKS0xODApfXZhciByLG8sYSxzLGwsdSxjLGgsZCxmLHAsZyxtLHgsdixBLHksdyxiLEMsTD1NYXRoLFM9d2luZG93LmtlbmRvLGs9Uy5kZWVwRXh0ZW5kLF89Uy51dGlsLGo9Xy5hcHBlbmQsRz1TLmRyYXdpbmcsUD1TLmdlb21ldHJ5LE09Uy5kYXRhdml6LFQ9TS5BcmVhU2VnbWVudCxCPU0uQXhpcyxWPU0uQXhpc0dyb3VwUmFuZ2VUcmFja2VyLFI9TS5CYXJDaGFydCxVPU0uQm94MkQsTz1NLkNhdGVnb3J5QXhpcyxOPU0uQ2F0ZWdvcmljYWxDaGFydCx6PU0uQ2F0ZWdvcmljYWxQbG90QXJlYSxJPU0uQ2hhcnRFbGVtZW50LEU9TS5DdXJ2ZVByb2Nlc3NvcixEPU0uRG9udXRTZWdtZW50LEY9TS5MaW5lQ2hhcnQsWD1NLkxpbmVTZWdtZW50LEs9TS5Mb2dhcml0aG1pY0F4aXMsWT1NLk51bWVyaWNBeGlzLHE9TS5QbG90QXJlYUJhc2UsUT1NLlBsb3RBcmVhRXZlbnRzTWl4aW4sSD1NLlBsb3RBcmVhRmFjdG9yeSxXPU0uUG9pbnQyRCxKPU0uUmluZyxaPU0uU2NhdHRlckNoYXJ0LCQ9TS5TY2F0dGVyTGluZUNoYXJ0LGVlPU0uU2VyaWVzQmluZGVyLG5lPU0uU2hhcGVCdWlsZGVyLHRlPU0uU3BsaW5lU2VnbWVudCxpZT1NLlNwbGluZUFyZWFTZWdtZW50LHJlPU0uZXZlbnRUYXJnZXRFbGVtZW50LG9lPU0uZ2V0U3BhY2luZyxhZT1NLmZpbHRlclNlcmllc0J5VHlwZSxzZT1fLmxpbWl0VmFsdWUsbGU9TS5yb3VuZCx1ZT1cImFyY1wiLGNlPVwiIzAwMFwiLGhlPU0uQ09PUkRfUFJFQ0lTSU9OLGRlPS4xNSxmZT1MLlBJLzE4MCxwZT1cImdhcFwiLGdlPVwiaW50ZXJwb2xhdGVcIixtZT1cImxvZ1wiLHhlPVwicG9sYXJBcmVhXCIsdmU9XCJwb2xhckxpbmVcIixBZT1cInBvbGFyU2NhdHRlclwiLHllPVwicmFkYXJBcmVhXCIsd2U9XCJyYWRhckNvbHVtblwiLGJlPVwicmFkYXJMaW5lXCIsQ2U9XCJzbW9vdGhcIixMZT1cInhcIixTZT1cInlcIixrZT1cInplcm9cIixfZT1beGUsdmUsQWVdLGplPVt5ZSx3ZSxiZV0sR2U9e2NyZWF0ZUdyaWRMaW5lczpmdW5jdGlvbihlKXt2YXIgbix0LGk9dGhpcyxyPWkub3B0aW9ucyxvPUwuYWJzKGkuYm94LmNlbnRlcigpLnktZS5saW5lQm94KCkueTEpLGE9ITEscz1bXTtyZXR1cm4gci5tYWpvckdyaWRMaW5lcy52aXNpYmxlJiYobj1pLm1ham9yR3JpZExpbmVBbmdsZXMoZSksYT0hMCxzPWkucmVuZGVyTWFqb3JHcmlkTGluZXMobixvLHIubWFqb3JHcmlkTGluZXMpKSxyLm1pbm9yR3JpZExpbmVzLnZpc2libGUmJih0PWkubWlub3JHcmlkTGluZUFuZ2xlcyhlLGEpLGoocyxpLnJlbmRlck1pbm9yR3JpZExpbmVzKHQsbyxyLm1pbm9yR3JpZExpbmVzLGUsYSkpKSxzfSxyZW5kZXJNYWpvckdyaWRMaW5lczpmdW5jdGlvbihlLG4sdCl7cmV0dXJuIHRoaXMucmVuZGVyR3JpZExpbmVzKGUsbix0KX0scmVuZGVyTWlub3JHcmlkTGluZXM6ZnVuY3Rpb24oZSxuLHQsaSxyKXt2YXIgbz10aGlzLnJhZGl1c0NhbGxiYWNrJiZ0aGlzLnJhZGl1c0NhbGxiYWNrKG4saSxyKTtyZXR1cm4gdGhpcy5yZW5kZXJHcmlkTGluZXMoZSxuLHQsbyl9LHJlbmRlckdyaWRMaW5lczpmdW5jdGlvbihlLG4sdCxpKXt2YXIgcixvLGE9e3N0cm9rZTp7d2lkdGg6dC53aWR0aCxjb2xvcjp0LmNvbG9yLGRhc2hUeXBlOnQuZGFzaFR5cGV9fSxzPXRoaXMuYm94LmNlbnRlcigpLGw9bmV3IFAuQ2lyY2xlKFtzLngscy55XSxuKSx1PXRoaXMuZ3JpZExpbmVzVmlzdWFsKCk7Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKylvPW5ldyBHLlBhdGgoYSksaSYmKGwucmFkaXVzPWkoZVtyXSkpLG8ubW92ZVRvKGwuY2VudGVyKS5saW5lVG8obC5wb2ludEF0KGVbcl0pKSx1LmFwcGVuZChvKTtyZXR1cm4gdS5jaGlsZHJlbn0sZ3JpZExpbmVBbmdsZXM6ZnVuY3Rpb24obix0LGkscixvKXt2YXIgYT10aGlzLHM9YS5pbnRlcnZhbHModCxpLHIsbyksbD1uLm9wdGlvbnMsdT1sLnZpc2libGUmJihsLmxpbmV8fHt9KS52aXNpYmxlIT09ITE7cmV0dXJuIGUubWFwKHMsZnVuY3Rpb24oZSl7dmFyIG49YS5pbnRlcnZhbEFuZ2xlKGUpO2lmKCF1fHw5MCE9PW4pcmV0dXJuIG59KX19LFBlPU8uZXh0ZW5kKHtvcHRpb25zOntzdGFydEFuZ2xlOjkwLGxhYmVsczp7bWFyZ2luOm9lKDEwKX0sbWFqb3JHcmlkTGluZXM6e3Zpc2libGU6ITB9LGp1c3RpZmllZDohMH0scmFuZ2U6ZnVuY3Rpb24oKXtyZXR1cm57bWluOjAsbWF4OnRoaXMub3B0aW9ucy5jYXRlZ29yaWVzLmxlbmd0aH19LHJlZmxvdzpmdW5jdGlvbihlKXt0aGlzLmJveD1lLHRoaXMucmVmbG93TGFiZWxzKCl9LGxpbmVCb3g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ib3h9LHJlZmxvd0xhYmVsczpmdW5jdGlvbigpe3ZhciBlLG4sdD10aGlzLGk9dC5vcHRpb25zLmxhYmVscyxyPWkuc2tpcHx8MCxvPWkuc3RlcHx8MSxhPW5ldyBVLHM9dC5sYWJlbHM7Zm9yKG49MDtuPHMubGVuZ3RoO24rKylzW25dLnJlZmxvdyhhKSxlPXNbbl0uYm94LHNbbl0ucmVmbG93KHQuZ2V0U2xvdChyK24qbykuYWRqYWNlbnRCb3goMCxlLndpZHRoKCksZS5oZWlnaHQoKSkpfSxpbnRlcnZhbHM6ZnVuY3Rpb24oZSxuLHQsaSl7dmFyIHIsbz10aGlzLGE9by5vcHRpb25zLHM9YS5jYXRlZ29yaWVzLmxlbmd0aCxsPTAsdT1zL2V8fDEsYz0zNjAvdSxoPVtdO2ZvcihuPW58fDAsdD10fHwxLHI9bjtyPHU7cis9dClsPWEucmV2ZXJzZT8zNjAtcipjOnIqYyxsPWxlKGwsaGUpJTM2MCxpJiZNLmluQXJyYXkobCxpKXx8aC5wdXNoKGwpO3JldHVybiBofSxtYWpvckludGVydmFsczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmludGVydmFscygxKX0sbWlub3JJbnRlcnZhbHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnRlcnZhbHMoLjUpfSxpbnRlcnZhbEFuZ2xlOmZ1bmN0aW9uKGUpe3JldHVybigzNjArZSt0aGlzLm9wdGlvbnMuc3RhcnRBbmdsZSklMzYwfSxtYWpvckFuZ2xlczpmdW5jdGlvbigpe3JldHVybiBlLm1hcCh0aGlzLm1ham9ySW50ZXJ2YWxzKCksZS5wcm94eSh0aGlzLmludGVydmFsQW5nbGUsdGhpcykpfSxjcmVhdGVMaW5lOmZ1bmN0aW9uKCl7cmV0dXJuW119LG1ham9yR3JpZExpbmVBbmdsZXM6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5vcHRpb25zLm1ham9yR3JpZExpbmVzO3JldHVybiB0aGlzLmdyaWRMaW5lQW5nbGVzKGUsMSxuLnNraXAsbi5zdGVwKX0sbWlub3JHcmlkTGluZUFuZ2xlczpmdW5jdGlvbihlLG4pe3ZhciB0PXRoaXMub3B0aW9ucyxpPXQubWlub3JHcmlkTGluZXMscj10Lm1ham9yR3JpZExpbmVzLG89bj90aGlzLmludGVydmFscygxLHIuc2tpcCxyLnN0ZXApOm51bGw7cmV0dXJuIHRoaXMuZ3JpZExpbmVBbmdsZXMoZSwuNSxpLnNraXAsaS5zdGVwLG8pfSxyYWRpdXNDYWxsYmFjazpmdW5jdGlvbihlLG4sdCl7dmFyIGkscixvLGE7aWYobi5vcHRpb25zLnR5cGUhPT11ZSlyZXR1cm4gaT0zNjAvKDIqdGhpcy5vcHRpb25zLmNhdGVnb3JpZXMubGVuZ3RoKSxyPUwuY29zKGkqZmUpKmUsbz10aGlzLm1ham9yQW5nbGVzKCksYT1mdW5jdGlvbihuKXtyZXR1cm4hdCYmTS5pbkFycmF5KG4sbyk/ZTpyfX0sY3JlYXRlUGxvdEJhbmRzOmZ1bmN0aW9uKCl7dmFyIGUsbix0LGkscixvLGEscz10aGlzLGw9cy5vcHRpb25zLHU9bC5wbG90QmFuZHN8fFtdLGM9dGhpcy5fcGxvdGJhbmRHcm91cD1uZXcgRy5Hcm91cCh7ekluZGV4Oi0xfSk7Zm9yKGU9MDtlPHUubGVuZ3RoO2UrKyluPXVbZV0sdD1zLnBsb3RCYW5kU2xvdChuKSxpPXMuZ2V0U2xvdChuLmZyb20pLHI9bi5mcm9tLUwuZmxvb3Iobi5mcm9tKSx0LnN0YXJ0QW5nbGUrPXIqaS5hbmdsZSxvPUwuY2VpbChuLnRvKS1uLnRvLHQuYW5nbGUtPShvK3IpKmkuYW5nbGUsYT1uZS5jdXJyZW50LmNyZWF0ZVJpbmcodCx7ZmlsbDp7Y29sb3I6bi5jb2xvcixvcGFjaXR5Om4ub3BhY2l0eX0sc3Ryb2tlOntvcGFjaXR5Om4ub3BhY2l0eX19KSxjLmFwcGVuZChhKTtzLmFwcGVuZFZpc3VhbChjKX0scGxvdEJhbmRTbG90OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdldFNsb3QoZS5mcm9tLGUudG8tMSl9LGdldFNsb3Q6ZnVuY3Rpb24oZSxuKXt2YXIgdCxpLHIsbz10aGlzLGE9by5vcHRpb25zLHM9YS5qdXN0aWZpZWQsbD1vLmJveCx1PW8ubWFqb3JBbmdsZXMoKSxjPXUubGVuZ3RoLGg9MzYwL2M7cmV0dXJuIGEucmV2ZXJzZSYmIXMmJihlPShlKzEpJWMpLGU9c2UoTC5mbG9vcihlKSwwLGMtMSksaT11W2VdLHMmJihpLT1oLzIsaTwwJiYoaSs9MzYwKSksbj1zZShMLmNlaWwobnx8ZSksZSxjLTEpLHQ9bi1lKzEscj1oKnQsbmV3IEoobC5jZW50ZXIoKSwwLGwuaGVpZ2h0KCkvMixpLHIpfSxzbG90OmZ1bmN0aW9uKGUsbil7dmFyIHQ9dGhpcy5nZXRTbG90KGUsbiksaT10LnN0YXJ0QW5nbGUrMTgwLHI9aSt0LmFuZ2xlO3JldHVybiBuZXcgUC5BcmMoW3QuYy54LHQuYy55XSx7c3RhcnRBbmdsZTppLGVuZEFuZ2xlOnIscmFkaXVzWDp0LnIscmFkaXVzWTp0LnJ9KX0scG9pbnRDYXRlZ29yeUluZGV4OmZ1bmN0aW9uKGUpe3ZhciBuLHQsaT10aGlzLHI9bnVsbCxvPWkub3B0aW9ucy5jYXRlZ29yaWVzLmxlbmd0aDtmb3Iobj0wO248bztuKyspaWYodD1pLmdldFNsb3QobiksdC5jb250YWluc1BvaW50KGUpKXtyPW47YnJlYWt9cmV0dXJuIHJ9fSk7ayhQZS5mbixHZSkscj17b3B0aW9uczp7bWFqb3JHcmlkTGluZXM6e3Zpc2libGU6ITB9fSxjcmVhdGVQbG90QmFuZHM6ZnVuY3Rpb24oKXt2YXIgZSxuLHQsaSxyLG8sYT10aGlzLHM9YS5vcHRpb25zLGw9cy5wbG90QmFuZHN8fFtdLHU9cy5tYWpvckdyaWRMaW5lcy50eXBlLGM9YS5wbG90QXJlYS5wb2xhckF4aXMsaD1jLm1ham9yQW5nbGVzKCksZD1jLmJveC5jZW50ZXIoKSxmPXRoaXMuX3Bsb3RiYW5kR3JvdXA9bmV3IEcuR3JvdXAoe3pJbmRleDotMX0pO2ZvcihlPTA7ZTxsLmxlbmd0aDtlKyspbj1sW2VdLHQ9e2ZpbGw6e2NvbG9yOm4uY29sb3Isb3BhY2l0eTpuLm9wYWNpdHl9LHN0cm9rZTp7b3BhY2l0eTpuLm9wYWNpdHl9fSxpPWEuZ2V0U2xvdChuLmZyb20sbi50bywhMCkscj1uZXcgSihkLGQueS1pLnkyLGQueS1pLnkxLDAsMzYwKSxvPXU9PT11ZT9uZS5jdXJyZW50LmNyZWF0ZVJpbmcocix0KTpHLlBhdGguZnJvbVBvaW50cyhhLnBsb3RCYW5kUG9pbnRzKHIsaCksdCkuY2xvc2UoKSxmLmFwcGVuZChvKTthLmFwcGVuZFZpc3VhbChmKX0scGxvdEJhbmRQb2ludHM6ZnVuY3Rpb24oZSxuKXt2YXIgdCxpPVtdLHI9W10sbz1bZS5jLngsZS5jLnldLGE9bmV3IFAuQ2lyY2xlKG8sZS5pcikscz1uZXcgUC5DaXJjbGUobyxlLnIpO2Zvcih0PTA7dDxuLmxlbmd0aDt0KyspaS5wdXNoKGEucG9pbnRBdChuW3RdKSksci5wdXNoKHMucG9pbnRBdChuW3RdKSk7cmV0dXJuIGkucmV2ZXJzZSgpLGkucHVzaChpWzBdKSxyLnB1c2goclswXSksci5jb25jYXQoaSl9LGNyZWF0ZUdyaWRMaW5lczpmdW5jdGlvbihlKXt2YXIgbix0PXRoaXMsaT10Lm9wdGlvbnMscj10LnJhZGFyTWFqb3JHcmlkTGluZVBvc2l0aW9ucygpLG89ZS5tYWpvckFuZ2xlcygpLGE9ZS5ib3guY2VudGVyKCkscz1bXTtyZXR1cm4gaS5tYWpvckdyaWRMaW5lcy52aXNpYmxlJiYocz10LnJlbmRlckdyaWRMaW5lcyhhLHIsbyxpLm1ham9yR3JpZExpbmVzKSksaS5taW5vckdyaWRMaW5lcy52aXNpYmxlJiYobj10LnJhZGFyTWlub3JHcmlkTGluZVBvc2l0aW9ucygpLGoocyx0LnJlbmRlckdyaWRMaW5lcyhhLG4sbyxpLm1pbm9yR3JpZExpbmVzKSkpLHN9LHJlbmRlckdyaWRMaW5lczpmdW5jdGlvbihlLG4sdCxpKXt2YXIgcixvLGEscyxsLHU9e3N0cm9rZTp7d2lkdGg6aS53aWR0aCxjb2xvcjppLmNvbG9yLGRhc2hUeXBlOmkuZGFzaFR5cGV9fSxjPWkuc2tpcHx8MCxoPWkuc3RlcHx8MSxkPXRoaXMuZ3JpZExpbmVzVmlzdWFsKCk7Zm9yKG89YztvPG4ubGVuZ3RoO28rPWgpaWYocj1lLnktbltvXSxyPjApaWYocz1uZXcgUC5DaXJjbGUoW2UueCxlLnldLHIpLGkudHlwZT09PXVlKWQuYXBwZW5kKG5ldyBHLkNpcmNsZShzLHUpKTtlbHNle2ZvcihsPW5ldyBHLlBhdGgodSksYT0wO2E8dC5sZW5ndGg7YSsrKWwubGluZVRvKHMucG9pbnRBdCh0W2FdKSk7bC5jbG9zZSgpLGQuYXBwZW5kKGwpfXJldHVybiBkLmNoaWxkcmVufSxnZXRWYWx1ZTpmdW5jdGlvbihlKXt2YXIgbix0LHIsbyxhLHMsbCx1PXRoaXMsYz11Lm9wdGlvbnMsaD11LmxpbmVCb3goKSxkPXUucGxvdEFyZWEucG9sYXJBeGlzLGY9ZC5tYWpvckFuZ2xlcygpLHA9ZC5ib3guY2VudGVyKCksZz1lLmRpc3RhbmNlVG8ocCksbT1nO3JldHVybiBjLm1ham9yR3JpZExpbmVzLnR5cGUhPT11ZSYmZi5sZW5ndGg+MSYmKG49ZS54LXAueCx0PWUueS1wLnkscj0oTC5hdGFuMih0LG4pL2ZlKzU0MCklMzYwLGYuc29ydChmdW5jdGlvbihlLG4pe3JldHVybiBpKGUsciktaShuLHIpfSksbz1pKGZbMF0sZlsxXSkvMixhPWkocixmWzBdKSxzPTkwLW8sbD0xODAtYS1zLG09ZyooTC5zaW4obCpmZSkvTC5zaW4ocypmZSkpKSx1LmF4aXNUeXBlKCkuZm4uZ2V0VmFsdWUuY2FsbCh1LG5ldyBXKGgueDEsaC55Mi1tKSl9fSxvPVkuZXh0ZW5kKHtyYWRhck1ham9yR3JpZExpbmVQb3NpdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaWNrUG9zaXRpb25zKHRoaXMub3B0aW9ucy5tYWpvclVuaXQpfSxyYWRhck1pbm9yR3JpZExpbmVQb3NpdGlvbnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49ZS5vcHRpb25zLHQ9MDtyZXR1cm4gbi5tYWpvckdyaWRMaW5lcy52aXNpYmxlJiYodD1uLm1ham9yVW5pdCksZS5nZXRUaWNrUG9zaXRpb25zKG4ubWlub3JVbml0LHQpfSxheGlzVHlwZTpmdW5jdGlvbigpe3JldHVybiBZfX0pLGsoby5mbixyKSxhPUsuZXh0ZW5kKHtyYWRhck1ham9yR3JpZExpbmVQb3NpdGlvbnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49W107cmV0dXJuIGUudHJhdmVyc2VNYWpvclRpY2tzUG9zaXRpb25zKGZ1bmN0aW9uKGUpe24ucHVzaChlKX0sZS5vcHRpb25zLm1ham9yR3JpZExpbmVzKSxufSxyYWRhck1pbm9yR3JpZExpbmVQb3NpdGlvbnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49W107cmV0dXJuIGUudHJhdmVyc2VNaW5vclRpY2tzUG9zaXRpb25zKGZ1bmN0aW9uKGUpe24ucHVzaChlKX0sZS5vcHRpb25zLm1pbm9yR3JpZExpbmVzKSxufSxheGlzVHlwZTpmdW5jdGlvbigpe3JldHVybiBLfX0pLGsoYS5mbixyKSxzPUIuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7Qi5mbi5pbml0LmNhbGwobixlKSxlPW4ub3B0aW9ucyxlLm1pbm9yVW5pdD1lLm1pbm9yVW5pdHx8bi5vcHRpb25zLm1ham9yVW5pdC8yfSxvcHRpb25zOnt0eXBlOlwicG9sYXJcIixzdGFydEFuZ2xlOjAscmV2ZXJzZTohMSxtYWpvclVuaXQ6NjAsbWluOjAsbWF4OjM2MCxsYWJlbHM6e21hcmdpbjpvZSgxMCl9LG1ham9yR3JpZExpbmVzOntjb2xvcjpjZSx2aXNpYmxlOiEwLHdpZHRoOjF9LG1pbm9yR3JpZExpbmVzOntjb2xvcjpcIiNhYWFcIn19LGdldERpdmlzaW9uczpmdW5jdGlvbihlKXtyZXR1cm4gWS5mbi5nZXREaXZpc2lvbnMuY2FsbCh0aGlzLGUpLTF9LHJlZmxvdzpmdW5jdGlvbihlKXt0aGlzLmJveD1lLHRoaXMucmVmbG93TGFiZWxzKCl9LHJlZmxvd0xhYmVsczpmdW5jdGlvbigpe3ZhciBlLG4sdD10aGlzLGk9dC5vcHRpb25zLHI9aS5sYWJlbHMsbz1yLnNraXB8fDAsYT1yLnN0ZXB8fDEscz1uZXcgVSxsPXQuaW50ZXJ2YWxzKGkubWFqb3JVbml0LG8sYSksdT10LmxhYmVscztmb3Iobj0wO248dS5sZW5ndGg7bisrKXVbbl0ucmVmbG93KHMpLGU9dVtuXS5ib3gsdVtuXS5yZWZsb3codC5nZXRTbG90KGxbbl0pLmFkamFjZW50Qm94KDAsZS53aWR0aCgpLGUuaGVpZ2h0KCkpKX0sbGluZUJveDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJveH0saW50ZXJ2YWxzOmZ1bmN0aW9uKGUsbix0LGkpe3ZhciByLG8sYT10aGlzLHM9YS5vcHRpb25zLGw9YS5nZXREaXZpc2lvbnMoZSksdT1zLm1pbixjPVtdO2ZvcihuPW58fDAsdD10fHwxLG89bjtvPGw7bys9dClyPSgzNjArdStvKmUpJTM2MCxpJiZNLmluQXJyYXkocixpKXx8Yy5wdXNoKHIpO3JldHVybiBjfSxtYWpvckludGVydmFsczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmludGVydmFscyh0aGlzLm9wdGlvbnMubWFqb3JVbml0KX0sbWlub3JJbnRlcnZhbHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnRlcnZhbHModGhpcy5vcHRpb25zLm1pbm9yVW5pdCl9LGludGVydmFsQW5nbGU6ZnVuY3Rpb24oZSl7cmV0dXJuKDU0MC1lLXRoaXMub3B0aW9ucy5zdGFydEFuZ2xlKSUzNjB9LG1ham9yQW5nbGVzOlBlLmZuLm1ham9yQW5nbGVzLGNyZWF0ZUxpbmU6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sbWFqb3JHcmlkTGluZUFuZ2xlczpmdW5jdGlvbihlKXt2YXIgbj10aGlzLm9wdGlvbnMubWFqb3JHcmlkTGluZXM7cmV0dXJuIHRoaXMuZ3JpZExpbmVBbmdsZXMoZSx0aGlzLm9wdGlvbnMubWFqb3JVbml0LG4uc2tpcCxuLnN0ZXApfSxtaW5vckdyaWRMaW5lQW5nbGVzOmZ1bmN0aW9uKGUsbil7dmFyIHQ9dGhpcy5vcHRpb25zLGk9dC5taW5vckdyaWRMaW5lcyxyPXQubWFqb3JHcmlkTGluZXMsbz1uP3RoaXMuaW50ZXJ2YWxzKHQubWFqb3JVbml0LHIuc2tpcCxyLnN0ZXApOm51bGw7cmV0dXJuIHRoaXMuZ3JpZExpbmVBbmdsZXMoZSx0aGlzLm9wdGlvbnMubWlub3JVbml0LGkuc2tpcCxpLnN0ZXAsbyl9LGNyZWF0ZVBsb3RCYW5kczpQZS5mbi5jcmVhdGVQbG90QmFuZHMscGxvdEJhbmRTbG90OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdldFNsb3QoZS5mcm9tLGUudG8pfSxnZXRTbG90OmZ1bmN0aW9uKGUsbil7dmFyIHQsaT10aGlzLHI9aS5vcHRpb25zLG89ci5zdGFydEFuZ2xlLGE9aS5ib3g7cmV0dXJuIGU9c2UoZSxyLm1pbixyLm1heCksbj1zZShufHxlLGUsci5tYXgpLHIucmV2ZXJzZSYmKGUqPS0xLG4qPS0xKSxlPSg1NDAtZS1vKSUzNjAsbj0oNTQwLW4tbyklMzYwLG48ZSYmKHQ9ZSxlPW4sbj10KSxuZXcgSihhLmNlbnRlcigpLDAsYS5oZWlnaHQoKS8yLGUsbi1lKX0sc2xvdDpmdW5jdGlvbihlLG4pe3ZhciB0LGkscixvLGE9dGhpcy5vcHRpb25zLHM9MzYwLWEuc3RhcnRBbmdsZSxsPXRoaXMuZ2V0U2xvdChlLG4pO3JldHVybiBNLnV0aWwuZGVmaW5lZChuKXx8KG49ZSkscj1MLm1pbihlLG4pLG89TC5tYXgoZSxuKSxhLnJldmVyc2U/KHQ9cixpPW8pOih0PTM2MC1vLGk9MzYwLXIpLHQ9KHQrcyklMzYwLGk9KGkrcyklMzYwLG5ldyBQLkFyYyhbbC5jLngsbC5jLnldLHtzdGFydEFuZ2xlOnQsZW5kQW5nbGU6aSxyYWRpdXNYOmwucixyYWRpdXNZOmwucn0pfSxnZXRWYWx1ZTpmdW5jdGlvbihlKXt2YXIgbj10aGlzLHQ9bi5vcHRpb25zLGk9bi5ib3guY2VudGVyKCkscj1lLngtaS54LG89ZS55LWkueSxhPUwucm91bmQoTC5hdGFuMihvLHIpL2ZlKSxzPXQuc3RhcnRBbmdsZTtyZXR1cm4gdC5yZXZlcnNlfHwoYSo9LTEscyo9LTEpLChhK3MrMzYwKSUzNjB9LHZhbHVlUmFuZ2U6ZnVuY3Rpb24oKXtyZXR1cm57bWluOjAsbWF4OjIqTC5QSX19LHJhbmdlOlkuZm4ucmFuZ2UsbGFiZWxzQ291bnQ6WS5mbi5sYWJlbHNDb3VudCxjcmVhdGVBeGlzTGFiZWw6WS5mbi5jcmVhdGVBeGlzTGFiZWx9KSxrKHMuZm4sR2UpLGw9SS5leHRlbmQoe29wdGlvbnM6e2dhcDoxLHNwYWNpbmc6MH0scmVmbG93OmZ1bmN0aW9uKGUpe3ZhciBuLHQsaT10aGlzLHI9aS5vcHRpb25zLG89aS5jaGlsZHJlbixhPXIuZ2FwLHM9ci5zcGFjaW5nLGw9by5sZW5ndGgsdT1sK2ErcyoobC0xKSxjPWUuYW5nbGUvdSxoPWUuc3RhcnRBbmdsZStjKihhLzIpO2Zvcih0PTA7dDxsO3QrKyluPWUuY2xvbmUoKSxuLnN0YXJ0QW5nbGU9aCxuLmFuZ2xlPWMsb1t0XS5zZWN0b3ImJihuLnI9b1t0XS5zZWN0b3Iuciksb1t0XS5yZWZsb3cobiksb1t0XS5zZWN0b3I9bixoKz1jK2Mqc319KSx1PUkuZXh0ZW5kKHtyZWZsb3c6ZnVuY3Rpb24oZSl7dmFyIG4sdCxpPXRoaXMscj1pLm9wdGlvbnMuaXNSZXZlcnNlZCxvPWkuY2hpbGRyZW4sYT1vLmxlbmd0aCxzPXI/YS0xOjAsbD1yPy0xOjE7Zm9yKGkuYm94PW5ldyBVLHQ9czt0Pj0wJiZ0PGE7dCs9bCluPW9bdF0uc2VjdG9yLG4uc3RhcnRBbmdsZT1lLnN0YXJ0QW5nbGUsbi5hbmdsZT1lLmFuZ2xlfX0pLGM9RC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSxuKXtELmZuLmluaXQuY2FsbCh0aGlzLGUsbnVsbCxuKX0sb3B0aW9uczp7b3ZlcmxheTp7Z3JhZGllbnQ6bnVsbH0sbGFiZWxzOntkaXN0YW5jZToxMH19fSksaD1SLmV4dGVuZCh7cG9pbnRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LGNsdXN0ZXJUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LHN0YWNrVHlwZTpmdW5jdGlvbigpe3JldHVybiB1fSxjYXRlZ29yeVNsb3Q6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5nZXRTbG90KG4pfSxwb2ludFNsb3Q6ZnVuY3Rpb24oZSxuKXt2YXIgdD1lLmNsb25lKCksaT1lLmMueTtyZXR1cm4gdC5yPWktbi55MSx0LmlyPWktbi55Mix0fSxyZWZsb3c6Ti5mbi5yZWZsb3cscmVmbG93UG9pbnQ6ZnVuY3Rpb24oZSxuKXtlLnNlY3Rvcj1uLGUucmVmbG93KCl9LG9wdGlvbnM6e2NsaXA6ITEsYW5pbWF0aW9uOnt0eXBlOlwicGllXCJ9fSxjcmVhdGVBbmltYXRpb246ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYW5pbWF0aW9uLmNlbnRlcj10aGlzLmJveC50b1JlY3QoKS5jZW50ZXIoKSxSLmZuLmNyZWF0ZUFuaW1hdGlvbi5jYWxsKHRoaXMpfX0pLGQ9Ri5leHRlbmQoe29wdGlvbnM6e2NsaXA6ITF9LHBvaW50U2xvdDpmdW5jdGlvbihlLG4pe3ZhciB0PWUuYy55LW4ueTEsaT1XLm9uQ2lyY2xlKGUuYyxlLm1pZGRsZSgpLHQpO3JldHVybiBuZXcgVShpLngsaS55LGkueCxpLnkpfSxjcmVhdGVTZWdtZW50OmZ1bmN0aW9uKGUsbix0KXt2YXIgaSxyLG89bi5zdHlsZTtyZXR1cm4gcj1vPT1DZT90ZTpYLGk9bmV3IHIoZSxuLHQpLGUubGVuZ3RoPT09bi5kYXRhLmxlbmd0aCYmKGkub3B0aW9ucy5jbG9zZWQ9ITApLGl9fSksZj1ULmV4dGVuZCh7cG9pbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIFguZm4ucG9pbnRzLmNhbGwodGhpcyx0aGlzLnN0YWNrUG9pbnRzKX19KSxwPWllLmV4dGVuZCh7Y2xvc2VGaWxsOmUubm9vcH0pLGc9ZC5leHRlbmQoe2NyZWF0ZVNlZ21lbnQ6ZnVuY3Rpb24oZSxuLHQsaSl7dmFyIHIsbyxhPXRoaXMscz1hLm9wdGlvbnMsbD1zLmlzU3RhY2tlZCx1PShuLmxpbmV8fHt9KS5zdHlsZTtyZXR1cm4gdT09PUNlPyhvPW5ldyBwKGUsaSxsLG4sdCksby5vcHRpb25zLmNsb3NlZD0hMCk6KGwmJnQ+MCYmaSYmKHI9aS5saW5lUG9pbnRzLnNsaWNlKDApLnJldmVyc2UoKSksZS5wdXNoKGVbMF0pLG89bmV3IGYoZSxyLG4sdCkpLG99LHNlcmllc01pc3NpbmdWYWx1ZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWlzc2luZ1ZhbHVlc3x8a2V9fSksbT1aLmV4dGVuZCh7cG9pbnRTbG90OmZ1bmN0aW9uKGUsbil7dmFyIHQ9ZS5jLnktbi55MSxpPVcub25DaXJjbGUoZS5jLGUuc3RhcnRBbmdsZSx0KTtyZXR1cm4gbmV3IFUoaS54LGkueSxpLngsaS55KX0sb3B0aW9uczp7Y2xpcDohMX19KSx4PSQuZXh0ZW5kKHtwb2ludFNsb3Q6bS5mbi5wb2ludFNsb3Qsb3B0aW9uczp7Y2xpcDohMX19KSx2PVQuZXh0ZW5kKHtwb2ludHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49ZS5wYXJlbnQsdD1uLnBsb3RBcmVhLGk9dC5wb2xhckF4aXMscj1pLmJveC5jZW50ZXIoKSxvPWUuc3RhY2tQb2ludHMsYT1YLmZuLnBvaW50cy5jYWxsKGUsbyk7cmV0dXJuIGEudW5zaGlmdChbci54LHIueV0pLGEucHVzaChbci54LHIueV0pLGF9fSksQT1pZS5leHRlbmQoe2Nsb3NlRmlsbDpmdW5jdGlvbihlKXt2YXIgbj10aGlzLl9wb2xhckF4aXNDZW50ZXIoKTtlLmxpbmVUbyhuLngsbi55KX0sX3BvbGFyQXhpc0NlbnRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMucGFyZW50LG49ZS5wbG90QXJlYSx0PW4ucG9sYXJBeGlzLGk9dC5ib3guY2VudGVyKCk7cmV0dXJuIGl9LHN0cm9rZVNlZ21lbnRzOmZ1bmN0aW9uKCl7dmFyIGUsbix0LGk9dGhpcy5fc3Ryb2tlU2VnbWVudHM7cmV0dXJuIGl8fChlPXRoaXMuX3BvbGFyQXhpc0NlbnRlcigpLG49bmV3IEUoKCExKSksdD1YLmZuLnBvaW50cy5jYWxsKHRoaXMpLHQucHVzaChlKSxpPXRoaXMuX3N0cm9rZVNlZ21lbnRzPW4ucHJvY2Vzcyh0KSxpLnBvcCgpKSxpfX0pLHk9eC5leHRlbmQoe2NyZWF0ZVNlZ21lbnQ6ZnVuY3Rpb24oZSxuLHQpe3ZhciBpLHI9KG4ubGluZXx8e30pLnN0eWxlO3JldHVybiBpPXI9PUNlP25ldyBBKGUsbnVsbCwoITEpLG4sdCk6bmV3IHYoZSxbXSxuLHQpfSxjcmVhdGVNaXNzaW5nVmFsdWU6ZnVuY3Rpb24oZSxuKXt2YXIgdDtyZXR1cm4gTS5oYXNWYWx1ZShlLngpJiZuIT1nZSYmKHQ9e3g6ZS54LHk6ZS55fSxuPT1rZSYmKHQueT0wKSksdH0sc2VyaWVzTWlzc2luZ1ZhbHVlczpmdW5jdGlvbihlKXtyZXR1cm4gZS5taXNzaW5nVmFsdWVzfHxrZX0sX2hhc01pc3NpbmdWYWx1ZXNHYXA6ZnVuY3Rpb24oKXt2YXIgZSxuPXRoaXMub3B0aW9ucy5zZXJpZXM7Zm9yKGU9MDtlPG4ubGVuZ3RoO2UrKylpZih0aGlzLnNlcmllc01pc3NpbmdWYWx1ZXMobltlXSk9PT1wZSlyZXR1cm4hMH0sc29ydFBvaW50czpmdW5jdGlvbihlKXt2YXIgbixpLHI7aWYoZS5zb3J0KHQpLHRoaXMuX2hhc01pc3NpbmdWYWx1ZXNHYXAoKSlmb3Iocj0wO3I8ZS5sZW5ndGg7cisrKWk9ZVtyXSxpJiYobj1pLnZhbHVlLE0uaGFzVmFsdWUobi55KXx8dGhpcy5zZXJpZXNNaXNzaW5nVmFsdWVzKGkuc2VyaWVzKSE9PXBlfHxkZWxldGUgZVtyXSk7cmV0dXJuIGV9fSksdz1xLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLG4pe3ZhciB0PXRoaXM7dC52YWx1ZUF4aXNSYW5nZVRyYWNrZXI9bmV3IFYscS5mbi5pbml0LmNhbGwodCxlLG4pfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuYWRkVG9MZWdlbmQoZS5zZXJpZXMpLGUuY3JlYXRlUG9sYXJBeGlzKCksZS5jcmVhdGVDaGFydHMoKSxlLmNyZWF0ZVZhbHVlQXhpcygpfSxhbGlnbkF4ZXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnZhbHVlQXhpcyxuPWUucmFuZ2UoKSx0PWUub3B0aW9ucy5yZXZlcnNlP24ubWF4Om4ubWluLGk9ZS5nZXRTbG90KHQpLHI9dGhpcy5wb2xhckF4aXMuZ2V0U2xvdCgwKS5jLG89ZS5ib3gudHJhbnNsYXRlKHIueC1pLngxLHIueS1pLnkxKTtlLnJlZmxvdyhvKX0sY3JlYXRlVmFsdWVBeGlzOmZ1bmN0aW9uKCl7dmFyIGUsbix0LGkscj10aGlzLHM9ci52YWx1ZUF4aXNSYW5nZVRyYWNrZXIsbD1zLnF1ZXJ5KCksdT1yLnZhbHVlQXhpc09wdGlvbnMoe3JvdW5kVG9NYWpvclVuaXQ6ITEsekluZGV4Oi0xfSk7dS50eXBlPT09bWU/KHQ9YSxpPXttaW46LjEsbWF4OjF9KToodD1vLGk9e21pbjowLG1heDoxfSksZT1zLnF1ZXJ5KG5hbWUpfHxsfHxpLGUmJmwmJihlLm1pbj1MLm1pbihlLm1pbixsLm1pbiksZS5tYXg9TC5tYXgoZS5tYXgsbC5tYXgpKSxuPW5ldyB0KGUubWluLGUubWF4LHUpLHIudmFsdWVBeGlzPW4sci5hcHBlbmRBeGlzKG4pfSxyZWZsb3dBeGVzOmZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzLHQ9bi5vcHRpb25zLnBsb3RBcmVhLGk9bi52YWx1ZUF4aXMscj1uLnBvbGFyQXhpcyxvPW4uYm94LGE9TC5taW4oby53aWR0aCgpLG8uaGVpZ2h0KCkpKmRlLHM9b2UodC5wYWRkaW5nfHx7fSxhKSxsPW8uY2xvbmUoKS51bnBhZChzKSx1PWwuY2xvbmUoKS5zaHJpbmsoMCxsLmhlaWdodCgpLzIpO3IucmVmbG93KGwpLGkucmVmbG93KHUpLGU9aS5saW5lQm94KCkuaGVpZ2h0KCktaS5ib3guaGVpZ2h0KCksaS5yZWZsb3coaS5ib3gudW5wYWQoe3RvcDplfSkpLG4uYXhpc0JveD1sLG4uYWxpZ25BeGVzKGwpfSxiYWNrZ3JvdW5kQm94OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYm94fX0pLGI9dy5leHRlbmQoe29wdGlvbnM6e2NhdGVnb3J5QXhpczp7Y2F0ZWdvcmllczpbXX0sdmFsdWVBeGlzOnt9fSxjcmVhdGVQb2xhckF4aXM6ZnVuY3Rpb24oKXt2YXIgZSxuPXRoaXM7ZT1uZXcgUGUobi5vcHRpb25zLmNhdGVnb3J5QXhpcyksbi5wb2xhckF4aXM9ZSxuLmNhdGVnb3J5QXhpcz1lLG4uYXBwZW5kQXhpcyhlKSxuLmFnZ3JlZ2F0ZUNhdGVnb3JpZXMoKX0sdmFsdWVBeGlzT3B0aW9uczpmdW5jdGlvbihlKXt2YXIgbj10aGlzO3JldHVybiBuLl9oYXNCYXJDaGFydHMmJmsoZSx7bWFqb3JHcmlkTGluZXM6e3R5cGU6dWV9LG1pbm9yR3JpZExpbmVzOnt0eXBlOnVlfX0pLG4uX2lzU3RhY2tlZDEwMCYmayhlLHtyb3VuZFRvTWFqb3JVbml0OiExLGxhYmVsczp7Zm9ybWF0OlwiUDBcIn19KSxrKGUsbi5vcHRpb25zLnZhbHVlQXhpcyl9LGFwcGVuZENoYXJ0OnouZm4uYXBwZW5kQ2hhcnQsYWdncmVnYXRlU2VyaWVzOnouZm4uYWdncmVnYXRlU2VyaWVzLGFnZ3JlZ2F0ZUNhdGVnb3JpZXM6ZnVuY3Rpb24oKXt6LmZuLmFnZ3JlZ2F0ZUNhdGVnb3JpZXMuY2FsbCh0aGlzLHRoaXMucGFuZXMpfSxmaWx0ZXJTZXJpZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGNyZWF0ZUNoYXJ0czpmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1lLmZpbHRlclZpc2libGVTZXJpZXMoZS5zZXJpZXMpLHQ9ZS5wYW5lc1swXTtlLmNyZWF0ZUFyZWFDaGFydChhZShuLFt5ZV0pLHQpLGUuY3JlYXRlTGluZUNoYXJ0KGFlKG4sW2JlXSksdCksZS5jcmVhdGVCYXJDaGFydChhZShuLFt3ZV0pLHQpfSxjaGFydE9wdGlvbnM6ZnVuY3Rpb24oZSl7dmFyIG4sdCxpPXtzZXJpZXM6ZX0scj1lWzBdO3JldHVybiByJiYobj10aGlzLmZpbHRlclZpc2libGVTZXJpZXMoZSksdD1yLnN0YWNrLGkuaXNTdGFja2VkPXQmJm4ubGVuZ3RoPjEsaS5pc1N0YWNrZWQxMDA9dCYmXCIxMDAlXCI9PT10LnR5cGUmJm4ubGVuZ3RoPjEsaS5pc1N0YWNrZWQxMDAmJih0aGlzLl9pc1N0YWNrZWQxMDA9ITApKSxpfSxjcmVhdGVBcmVhQ2hhcnQ6ZnVuY3Rpb24oZSxuKXtpZigwIT09ZS5sZW5ndGgpe3ZhciB0PW5ldyBnKHRoaXMsdGhpcy5jaGFydE9wdGlvbnMoZSkpO3RoaXMuYXBwZW5kQ2hhcnQodCxuKX19LGNyZWF0ZUxpbmVDaGFydDpmdW5jdGlvbihlLG4pe2lmKDAhPT1lLmxlbmd0aCl7dmFyIHQ9bmV3IGQodGhpcyx0aGlzLmNoYXJ0T3B0aW9ucyhlKSk7dGhpcy5hcHBlbmRDaGFydCh0LG4pfX0sY3JlYXRlQmFyQ2hhcnQ6ZnVuY3Rpb24oZSxuKXt2YXIgdCxpLHI7MCE9PWUubGVuZ3RoJiYodD1lWzBdLGk9dGhpcy5jaGFydE9wdGlvbnMoZSksaS5nYXA9dC5nYXAsaS5zcGFjaW5nPXQuc3BhY2luZyxyPW5ldyBoKHRoaXMsaSksdGhpcy5hcHBlbmRDaGFydChyLG4pLHRoaXMuX2hhc0JhckNoYXJ0cz0hMCl9LHNlcmllc0NhdGVnb3J5QXhpczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNhdGVnb3J5QXhpc30sX2Rpc3BhdGNoRXZlbnQ6ZnVuY3Rpb24oZSxuLHQpe3ZhciBpLHIsbz10aGlzLGE9ZS5fZXZlbnRDb29yZGluYXRlcyhuKSxzPW5ldyBXKGEueCxhLnkpO2k9by5jYXRlZ29yeUF4aXMuZ2V0Q2F0ZWdvcnkocykscj1vLnZhbHVlQXhpcy5nZXRWYWx1ZShzKSxudWxsIT09aSYmbnVsbCE9PXImJmUudHJpZ2dlcih0LHtlbGVtZW50OnJlKG4pLGNhdGVnb3J5OmksdmFsdWU6cn0pfSxjcmVhdGVDcm9zc2hhaXJzOmUubm9vcH0pLGsoYi5mbixRKSxDPXcuZXh0ZW5kKHtvcHRpb25zOnt4QXhpczp7fSx5QXhpczp7fX0sY3JlYXRlUG9sYXJBeGlzOmZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzO2U9bmV3IHMobi5vcHRpb25zLnhBeGlzKSxuLnBvbGFyQXhpcz1lLG4uYXhpc1g9ZSxuLmFwcGVuZEF4aXMoZSl9LHZhbHVlQXhpc09wdGlvbnM6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztyZXR1cm4gayhlLHttYWpvckdyaWRMaW5lczp7dHlwZTp1ZX0sbWlub3JHcmlkTGluZXM6e3R5cGU6dWV9fSxuLm9wdGlvbnMueUF4aXMpfSxjcmVhdGVWYWx1ZUF4aXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3cuZm4uY3JlYXRlVmFsdWVBeGlzLmNhbGwoZSksZS5heGlzWT1lLnZhbHVlQXhpc30sYXBwZW5kQ2hhcnQ6ZnVuY3Rpb24oZSxuKXt2YXIgdD10aGlzO3QudmFsdWVBeGlzUmFuZ2VUcmFja2VyLnVwZGF0ZShlLnlBeGlzUmFuZ2VzKSxxLmZuLmFwcGVuZENoYXJ0LmNhbGwodCxlLG4pfSxjcmVhdGVDaGFydHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49ZS5maWx0ZXJWaXNpYmxlU2VyaWVzKGUuc2VyaWVzKSx0PWUucGFuZXNbMF07ZS5jcmVhdGVMaW5lQ2hhcnQoYWUobixbdmVdKSx0KSxlLmNyZWF0ZVNjYXR0ZXJDaGFydChhZShuLFtBZV0pLHQpLGUuY3JlYXRlQXJlYUNoYXJ0KGFlKG4sW3hlXSksdCl9LGNyZWF0ZUxpbmVDaGFydDpmdW5jdGlvbihlLG4pe2lmKDAhPT1lLmxlbmd0aCl7dmFyIHQ9dGhpcyxpPW5ldyB4KHQse3NlcmllczplfSk7dC5hcHBlbmRDaGFydChpLG4pfX0sY3JlYXRlU2NhdHRlckNoYXJ0OmZ1bmN0aW9uKGUsbil7aWYoMCE9PWUubGVuZ3RoKXt2YXIgdD10aGlzLGk9bmV3IG0odCx7c2VyaWVzOmV9KTt0LmFwcGVuZENoYXJ0KGksbil9fSxjcmVhdGVBcmVhQ2hhcnQ6ZnVuY3Rpb24oZSxuKXtpZigwIT09ZS5sZW5ndGgpe3ZhciB0PXRoaXMsaT1uZXcgeSh0LHtzZXJpZXM6ZX0pO3QuYXBwZW5kQ2hhcnQoaSxuKX19LF9kaXNwYXRjaEV2ZW50OmZ1bmN0aW9uKGUsbix0KXt2YXIgaSxyLG89dGhpcyxhPWUuX2V2ZW50Q29vcmRpbmF0ZXMobikscz1uZXcgVyhhLngsYS55KTtpPW8uYXhpc1guZ2V0VmFsdWUocykscj1vLmF4aXNZLmdldFZhbHVlKHMpLG51bGwhPT1pJiZudWxsIT09ciYmZS50cmlnZ2VyKHQse2VsZW1lbnQ6cmUobikseDppLHk6cn0pfSxjcmVhdGVDcm9zc2hhaXJzOmUubm9vcH0pLGsoQy5mbixRKSxILmN1cnJlbnQucmVnaXN0ZXIoQyxfZSksSC5jdXJyZW50LnJlZ2lzdGVyKGIsamUpLGVlLmN1cnJlbnQucmVnaXN0ZXIoX2UsW0xlLFNlXSxbXCJjb2xvclwiXSksZWUuY3VycmVudC5yZWdpc3RlcihqZSxbXCJ2YWx1ZVwiXSxbXCJjb2xvclwiXSksTS5EZWZhdWx0QWdncmVnYXRlcy5jdXJyZW50LnJlZ2lzdGVyKGplLHt2YWx1ZTpcIm1heFwiLGNvbG9yOlwiZmlyc3RcIn0pLGsoTSx7UG9sYXJBcmVhQ2hhcnQ6eSxQb2xhckF4aXM6cyxQb2xhckxpbmVDaGFydDp4LFBvbGFyUGxvdEFyZWE6QyxSYWRhckFyZWFDaGFydDpnLFJhZGFyQmFyQ2hhcnQ6aCxSYWRhckNhdGVnb3J5QXhpczpQZSxSYWRhckNsdXN0ZXJMYXlvdXQ6bCxSYWRhckxpbmVDaGFydDpkLFJhZGFyTnVtZXJpY0F4aXM6byxSYWRhclBsb3RBcmVhOmIsU3BsaW5lUG9sYXJBcmVhU2VnbWVudDpBLFNwbGluZVJhZGFyQXJlYVNlZ21lbnQ6cCxSYWRhclN0YWNrTGF5b3V0OnV9KX0od2luZG93LmtlbmRvLmpRdWVyeSksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsbix0KXsodHx8bikoKX0pOzshZnVuY3Rpb24oZSxkZWZpbmUpe2RlZmluZShcInV0aWwvbWFpbi5taW5cIixbXCJrZW5kby5jb3JlLm1pblwiXSxlKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3JldHVybiB0eXBlb2YgZSE9PUV9ZnVuY3Rpb24gbihlLG4pe3ZhciBpPXQobik7cmV0dXJuIEYucm91bmQoZSppKS9pfWZ1bmN0aW9uIHQoZSl7cmV0dXJuIGU/Ri5wb3coMTAsZSk6MX1mdW5jdGlvbiBpKGUsbix0KXtyZXR1cm4gRi5tYXgoRi5taW4oZSx0KSxuKX1mdW5jdGlvbiByKGUpe3JldHVybiBlKlZ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZS9WfWZ1bmN0aW9uIGEoZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJiFpc05hTihlKX1mdW5jdGlvbiBzKG4sdCl7cmV0dXJuIGUobik/bjp0fWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGUqZX1mdW5jdGlvbiB1KGUpe3ZhciBuLHQ9W107Zm9yKG4gaW4gZSl0LnB1c2gobitlW25dKTtyZXR1cm4gdC5zb3J0KCkuam9pbihcIlwiKX1mdW5jdGlvbiBjKGUpe3ZhciBuLHQ9MjE2NjEzNjI2MTtmb3Iobj0wO248ZS5sZW5ndGg7KytuKXQrPSh0PDwxKSsodDw8NCkrKHQ8PDcpKyh0PDw4KSsodDw8MjQpLHRePWUuY2hhckNvZGVBdChuKTtyZXR1cm4gdD4+PjB9ZnVuY3Rpb24gaChlKXtyZXR1cm4gYyh1KGUpKX1mdW5jdGlvbiBkKGUpe3ZhciBuLHQ9ZS5sZW5ndGgsaT1qLHI9SDtmb3Iobj0wO248dDtuKyspcj1GLm1heChyLGVbbl0pLGk9Ri5taW4oaSxlW25dKTtyZXR1cm57bWluOmksbWF4OnJ9fWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGQoZSkubWlufWZ1bmN0aW9uIHAoZSl7cmV0dXJuIGQoZSkubWF4fWZ1bmN0aW9uIGcoZSl7cmV0dXJuIHYoZSkubWlufWZ1bmN0aW9uIG0oZSl7cmV0dXJuIHYoZSkubWF4fWZ1bmN0aW9uIHYoZSl7dmFyIG4sdCxpLHI9aixvPUg7Zm9yKG49MCx0PWUubGVuZ3RoO248dDtuKyspaT1lW25dLG51bGwhPT1pJiZpc0Zpbml0ZShpKSYmKHI9Ri5taW4ocixpKSxvPUYubWF4KG8saSkpO3JldHVybnttaW46cj09PWo/dm9pZCAwOnIsbWF4Om89PT1IP3ZvaWQgMDpvfX1mdW5jdGlvbiB5KGUpe2lmKGUpcmV0dXJuIGVbZS5sZW5ndGgtMV19ZnVuY3Rpb24gdyhlLG4pe3JldHVybiBlLnB1c2guYXBwbHkoZSxuKSxlfWZ1bmN0aW9uIHgoZSl7cmV0dXJuIEwudGVtcGxhdGUoZSx7dXNlV2l0aEJsb2NrOiExLHBhcmFtTmFtZTpcImRcIn0pfWZ1bmN0aW9uIGIobix0KXtyZXR1cm4gZSh0KSYmbnVsbCE9PXQ/XCIgXCIrbitcIj0nXCIrdCtcIicgXCI6XCJcIn1mdW5jdGlvbiBfKGUpe3ZhciBuLHQ9XCJcIjtmb3Iobj0wO248ZS5sZW5ndGg7bisrKXQrPWIoZVtuXVswXSxlW25dWzFdKTtyZXR1cm4gdH1mdW5jdGlvbiBrKG4pe3ZhciB0LGkscj1cIlwiO2Zvcih0PTA7dDxuLmxlbmd0aDt0KyspaT1uW3RdWzFdLGUoaSkmJihyKz1uW3RdWzBdK1wiOlwiK2krXCI7XCIpO2lmKFwiXCIhPT1yKXJldHVybiByfWZ1bmN0aW9uIEMoZSl7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIGUmJihlKz1cInB4XCIpLGV9ZnVuY3Rpb24gQShlKXt2YXIgbix0LGk9W107aWYoZSlmb3Iobj1MLnRvSHlwaGVucyhlKS5zcGxpdChcIi1cIiksdD0wO3Q8bi5sZW5ndGg7dCsrKWkucHVzaChcImstcG9zLVwiK25bdF0pO3JldHVybiBpLmpvaW4oXCIgXCIpfWZ1bmN0aW9uIFAobil7cmV0dXJuXCJcIj09PW58fG51bGw9PT1ufHxcIm5vbmVcIj09PW58fFwidHJhbnNwYXJlbnRcIj09PW58fCFlKG4pfWZ1bmN0aW9uIE0oZSl7Zm9yKHZhciBuPXsxOlwiaVwiLDEwOlwieFwiLDEwMDpcImNcIiwyOlwiaWlcIiwyMDpcInh4XCIsMjAwOlwiY2NcIiwzOlwiaWlpXCIsMzA6XCJ4eHhcIiwzMDA6XCJjY2NcIiw0OlwiaXZcIiw0MDpcInhsXCIsNDAwOlwiY2RcIiw1OlwidlwiLDUwOlwibFwiLDUwMDpcImRcIiw2OlwidmlcIiw2MDpcImx4XCIsNjAwOlwiZGNcIiw3OlwidmlpXCIsNzA6XCJseHhcIiw3MDA6XCJkY2NcIiw4OlwidmlpaVwiLDgwOlwibHh4eFwiLDgwMDpcImRjY2NcIiw5OlwiaXhcIiw5MDpcInhjXCIsOTAwOlwiY21cIiwxZTM6XCJtXCJ9LHQ9WzFlMyw5MDAsODAwLDcwMCw2MDAsNTAwLDQwMCwzMDAsMjAwLDEwMCw5MCw4MCw3MCw2MCw1MCw0MCwzMCwyMCwxMCw5LDgsNyw2LDUsNCwzLDIsMV0saT1cIlwiO2U+MDspZTx0WzBdP3Quc2hpZnQoKTooaSs9blt0WzBdXSxlLT10WzBdKTtyZXR1cm4gaX1mdW5jdGlvbiBTKGUpe3ZhciBuLHQsaSxyLG87Zm9yKGU9ZS50b0xvd2VyQ2FzZSgpLG49e2k6MSx2OjUseDoxMCxsOjUwLGM6MTAwLGQ6NTAwLG06MWUzfSx0PTAsaT0wLHI9MDtyPGUubGVuZ3RoOysrcil7aWYobz1uW2UuY2hhckF0KHIpXSwhbylyZXR1cm4gbnVsbDt0Kz1vLG8+aSYmKHQtPTIqaSksaT1vfXJldHVybiB0fWZ1bmN0aW9uIE8oZSl7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdCxpPVwiXCI7Zm9yKHQ9YXJndW1lbnRzLmxlbmd0aDstLXQ+PTA7KWkrPVwiOlwiK2FyZ3VtZW50c1t0XTtyZXR1cm4gaSBpbiBuP25baV06bltpXT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gSShlKXtmb3IodmFyIG4sdCxpPVtdLHI9MCxvPWUubGVuZ3RoO3I8bzspbj1lLmNoYXJDb2RlQXQocisrKSxuPj01NTI5NiYmbjw9NTYzMTkmJnI8bz8odD1lLmNoYXJDb2RlQXQocisrKSw1NjMyMD09KDY0NTEyJnQpP2kucHVzaCgoKDEwMjMmbik8PDEwKSsoMTAyMyZ0KSs2NTUzNik6KGkucHVzaChuKSxyLS0pKTppLnB1c2gobik7cmV0dXJuIGl9ZnVuY3Rpb24gTihlKXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7dmFyIG49XCJcIjtyZXR1cm4gZT42NTUzNSYmKGUtPTY1NTM2LG4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZT4+PjEwJjEwMjN8NTUyOTYpLGU9NTYzMjB8MTAyMyZlKSxuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSkuam9pbihcIlwiKX1mdW5jdGlvbiB6KGUsbil7ZnVuY3Rpb24gdChlLHQpe2Zvcih2YXIgaT1bXSxyPTAsbz0wLGE9MDtyPGUubGVuZ3RoJiZvPHQubGVuZ3RoOyluKGVbcl0sdFtvXSk8PTA/aVthKytdPWVbcisrXTppW2ErK109dFtvKytdO3JldHVybiByPGUubGVuZ3RoJiZpLnB1c2guYXBwbHkoaSxlLnNsaWNlKHIpKSxvPHQubGVuZ3RoJiZpLnB1c2guYXBwbHkoaSx0LnNsaWNlKG8pKSxpfXJldHVybiBlLmxlbmd0aDwyP2Uuc2xpY2UoKTpmdW5jdGlvbiBpKGUpe3ZhciBuLHIsbztyZXR1cm4gZS5sZW5ndGg8PTE/ZToobj1NYXRoLmZsb29yKGUubGVuZ3RoLzIpLHI9ZS5zbGljZSgwLG4pLG89ZS5zbGljZShuKSxyPWkociksbz1pKG8pLHQocixvKSl9KGUpfXZhciBGPU1hdGgsTD13aW5kb3cua2VuZG8sVD1MLmRlZXBFeHRlbmQsVj1GLlBJLzE4MCxqPU51bWJlci5NQVhfVkFMVUUsSD0tTnVtYmVyLk1BWF9WQUxVRSxFPVwidW5kZWZpbmVkXCIsUj1EYXRlLm5vdztSfHwoUj1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksVChMLHt1dGlsOntNQVhfTlVNOmosTUlOX05VTTpILGFwcGVuZDp3LGFycmF5TGltaXRzOmQsYXJyYXlNaW46ZixhcnJheU1heDpwLGRlZmluZWQ6ZSxkZWc6byxoYXNoS2V5OmMsaGFzaE9iamVjdDpoLGlzTnVtYmVyOmEsaXNUcmFuc3BhcmVudDpQLGxhc3Q6eSxsaW1pdFZhbHVlOmksbm93OlIsb2JqZWN0S2V5OnUscm91bmQ6bixyYWQ6cixyZW5kZXJBdHRyOmIscmVuZGVyQWxsQXR0cjpfLHJlbmRlclBvczpBLHJlbmRlclNpemU6QyxyZW5kZXJTdHlsZTprLHJlbmRlclRlbXBsYXRlOngsc3BhcnNlQXJyYXlMaW1pdHM6dixzcGFyc2VBcnJheU1pbjpnLHNwYXJzZUFycmF5TWF4Om0sc3FyOmwsdmFsdWVPckRlZmF1bHQ6cyxyb21hblRvQXJhYmljOlMsYXJhYmljVG9Sb21hbjpNLG1lbW9pemU6Tyx1Y3MyZW5jb2RlOk4sdWNzMmRlY29kZTpJLG1lcmdlU29ydDp6fX0pLEwuZHJhd2luZy51dGlsPUwudXRpbCxMLmRhdGF2aXoudXRpbD1MLnV0aWx9KCksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsbix0KXsodHx8bikoKX0pLGZ1bmN0aW9uKGUsZGVmaW5lKXtkZWZpbmUoXCJ1dGlsL3RleHQtbWV0cmljcy5taW5cIixbXCJrZW5kby5jb3JlLm1pblwiLFwidXRpbC9tYWluLm1pblwiXSxlKX0oZnVuY3Rpb24oKXshZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe3JldHVybnt3aWR0aDowLGhlaWdodDowLGJhc2VsaW5lOjB9fWZ1bmN0aW9uIHQoZSxuLHQpe3JldHVybiBoLmN1cnJlbnQubWVhc3VyZShlLG4sdCl9ZnVuY3Rpb24gaShlLG4pe3ZhciB0PVtdO2lmKGUubGVuZ3RoPjAmJmRvY3VtZW50LmZvbnRzKXt0cnl7dD1lLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZG9jdW1lbnQuZm9udHMubG9hZChlKX0pfWNhdGNoKGkpe28ubG9nVG9Db25zb2xlKGkpfVByb21pc2UuYWxsKHQpLnRoZW4obixuKX1lbHNlIG4oKX12YXIgcj1kb2N1bWVudCxvPXdpbmRvdy5rZW5kbyxhPW8uQ2xhc3Mscz1vLnV0aWwsbD1zLmRlZmluZWQsdT1hLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlKXt0aGlzLl9zaXplPWUsdGhpcy5fbGVuZ3RoPTAsdGhpcy5fbWFwPXt9fSxwdXQ6ZnVuY3Rpb24oZSxuKXt2YXIgdD10aGlzLGk9dC5fbWFwLHI9e2tleTplLHZhbHVlOm59O2lbZV09cix0Ll9oZWFkPyh0Ll90YWlsLm5ld2VyPXIsci5vbGRlcj10Ll90YWlsLHQuX3RhaWw9cik6dC5faGVhZD10Ll90YWlsPXIsdC5fbGVuZ3RoPj10Ll9zaXplPyhpW3QuX2hlYWQua2V5XT1udWxsLHQuX2hlYWQ9dC5faGVhZC5uZXdlcix0Ll9oZWFkLm9sZGVyPW51bGwpOnQuX2xlbmd0aCsrfSxnZXQ6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcyx0PW4uX21hcFtlXTtpZih0KXJldHVybiB0PT09bi5faGVhZCYmdCE9PW4uX3RhaWwmJihuLl9oZWFkPXQubmV3ZXIsbi5faGVhZC5vbGRlcj1udWxsKSx0IT09bi5fdGFpbCYmKHQub2xkZXImJih0Lm9sZGVyLm5ld2VyPXQubmV3ZXIsdC5uZXdlci5vbGRlcj10Lm9sZGVyKSx0Lm9sZGVyPW4uX3RhaWwsdC5uZXdlcj1udWxsLG4uX3RhaWwubmV3ZXI9dCxuLl90YWlsPXQpLHQudmFsdWV9fSksYz1lKFwiPGRpdiBzdHlsZT0ncG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7IHRvcDogLTQwMDBweCAhaW1wb3J0YW50OyB3aWR0aDogYXV0byAhaW1wb3J0YW50OyBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1wb3J0YW50OyBib3JkZXI6IDAgIWltcG9ydGFudDtsaW5lLWhlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OyB3aGl0ZS1zcGFjZTogbm93cmFwIWltcG9ydGFudDsnIC8+XCIpWzBdLGg9YS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSl7dGhpcy5fY2FjaGU9bmV3IHUoMWUzKSx0aGlzLl9pbml0T3B0aW9ucyhlKX0sb3B0aW9uczp7YmFzZWxpbmVNYXJrZXJTaXplOjF9LG1lYXN1cmU6ZnVuY3Rpb24odCxpLG8pe3ZhciBhLHUsaCxkLGYscCxnLG07aWYoIXQpcmV0dXJuIG4oKTtpZihhPXMub2JqZWN0S2V5KGkpLHU9cy5oYXNoS2V5KHQrYSksaD10aGlzLl9jYWNoZS5nZXQodSksaClyZXR1cm4gaDtkPW4oKSxmPW8/bzpjLHA9dGhpcy5fYmFzZWxpbmVNYXJrZXIoKS5jbG9uZU5vZGUoITEpO2ZvcihnIGluIGkpbT1pW2ddLGwobSkmJihmLnN0eWxlW2ddPW0pO3JldHVybiBlKGYpLnRleHQodCksZi5hcHBlbmRDaGlsZChwKSxyLmJvZHkuYXBwZW5kQ2hpbGQoZiksKHQrXCJcIikubGVuZ3RoJiYoZC53aWR0aD1mLm9mZnNldFdpZHRoLXRoaXMub3B0aW9ucy5iYXNlbGluZU1hcmtlclNpemUsZC5oZWlnaHQ9Zi5vZmZzZXRIZWlnaHQsZC5iYXNlbGluZT1wLm9mZnNldFRvcCt0aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplKSxkLndpZHRoPjAmJmQuaGVpZ2h0PjAmJnRoaXMuX2NhY2hlLnB1dCh1LGQpLGYucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmKSxkfSxfYmFzZWxpbmVNYXJrZXI6ZnVuY3Rpb24oKXtyZXR1cm4gZShcIjxkaXYgY2xhc3M9J2stYmFzZWxpbmUtbWFya2VyJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7d2lkdGg6IFwiK3RoaXMub3B0aW9ucy5iYXNlbGluZU1hcmtlclNpemUrXCJweDsgaGVpZ2h0OiBcIit0aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplK1wicHg7b3ZlcmZsb3c6IGhpZGRlbjsnIC8+XCIpWzBdfX0pO2guY3VycmVudD1uZXcgaCxvLnV0aWwuVGV4dE1ldHJpY3M9aCxvLnV0aWwuTFJVQ2FjaGU9dSxvLnV0aWwubG9hZEZvbnRzPWksby51dGlsLm1lYXN1cmVUZXh0PXR9KHdpbmRvdy5rZW5kby5qUXVlcnkpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsbix0KXsodHx8bikoKX0pLGZ1bmN0aW9uKGUsZGVmaW5lKXtkZWZpbmUoXCJ1dGlsL2Jhc2U2NC5taW5cIixbXCJ1dGlsL21haW4ubWluXCJdLGUpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQsaSxyLGEscyxsLHUsYz1cIlwiLGg9MDtmb3IoZT1uKGUpO2g8ZS5sZW5ndGg7KXQ9ZS5jaGFyQ29kZUF0KGgrKyksaT1lLmNoYXJDb2RlQXQoaCsrKSxyPWUuY2hhckNvZGVBdChoKyspLGE9dD4+MixzPSgzJnQpPDw0fGk+PjQsbD0oMTUmaSk8PDJ8cj4+Nix1PTYzJnIsaXNOYU4oaSk/bD11PTY0OmlzTmFOKHIpJiYodT02NCksYz1jK28uY2hhckF0KGEpK28uY2hhckF0KHMpK28uY2hhckF0KGwpK28uY2hhckF0KHUpO3JldHVybiBjfWZ1bmN0aW9uIG4oZSl7dmFyIG4sdCxpPVwiXCI7Zm9yKG49MDtuPGUubGVuZ3RoO24rKyl0PWUuY2hhckNvZGVBdChuKSx0PDEyOD9pKz1yKHQpOnQ8MjA0OD8oaSs9cigxOTJ8dD4+PjYpLGkrPXIoMTI4fDYzJnQpKTp0PDY1NTM2JiYoaSs9cigyMjR8dD4+PjEyKSxpKz1yKDEyOHx0Pj4+NiY2MyksaSs9cigxMjh8NjMmdCkpO3JldHVybiBpfXZhciB0PXdpbmRvdy5rZW5kbyxpPXQuZGVlcEV4dGVuZCxyPVN0cmluZy5mcm9tQ2hhckNvZGUsbz1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCI7aSh0LnV0aWwse2VuY29kZUJhc2U2NDplLGVuY29kZVVURjg6bn0pfSgpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbihlLG4sdCl7KHR8fG4pKCl9KSxmdW5jdGlvbihlLGRlZmluZSl7ZGVmaW5lKFwibWl4aW5zL29ic2VydmVycy5taW5cIixbXCJrZW5kby5jb3JlLm1pblwiXSxlKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49TWF0aCx0PXdpbmRvdy5rZW5kbyxpPXQuZGVlcEV4dGVuZCxyPWUuaW5BcnJheSxvPXtvYnNlcnZlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2JzZXJ2ZXJzPXRoaXMuX29ic2VydmVyc3x8W119LGFkZE9ic2VydmVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9vYnNlcnZlcnM/dGhpcy5fb2JzZXJ2ZXJzLnB1c2goZSk6dGhpcy5fb2JzZXJ2ZXJzPVtlXSx0aGlzfSxyZW1vdmVPYnNlcnZlcjpmdW5jdGlvbihlKXt2YXIgbj10aGlzLm9ic2VydmVycygpLHQ9cihlLG4pO3JldHVybiB0IT0tMSYmbi5zcGxpY2UodCwxKSx0aGlzfSx0cmlnZ2VyOmZ1bmN0aW9uKGUsbil7dmFyIHQsaSxyPXRoaXMuX29ic2VydmVycztpZihyJiYhdGhpcy5fc3VzcGVuZGVkKWZvcihpPTA7aTxyLmxlbmd0aDtpKyspdD1yW2ldLHRbZV0mJnRbZV0obik7cmV0dXJuIHRoaXN9LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24oZSl7ZT1lfHx7fSxlLmVsZW1lbnQ9dGhpcyx0aGlzLnRyaWdnZXIoXCJvcHRpb25zQ2hhbmdlXCIsZSl9LGdlb21ldHJ5Q2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyKFwiZ2VvbWV0cnlDaGFuZ2VcIix7ZWxlbWVudDp0aGlzfSl9LHN1c3BlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3VzcGVuZGVkPSh0aGlzLl9zdXNwZW5kZWR8fDApKzEsdGhpc30scmVzdW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N1c3BlbmRlZD1uLm1heCgodGhpcy5fc3VzcGVuZGVkfHwwKS0xLDApLHRoaXN9LF9vYnNlcnZlckZpZWxkOmZ1bmN0aW9uKGUsbil7dGhpc1tlXSYmdGhpc1tlXS5yZW1vdmVPYnNlcnZlcih0aGlzKSx0aGlzW2VdPW4sbi5hZGRPYnNlcnZlcih0aGlzKX19O2kodCx7bWl4aW5zOntPYnNlcnZlcnNNaXhpbjpvfX0pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KSx3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSxuLHQpeyh0fHxuKSgpfSksZnVuY3Rpb24oZSxkZWZpbmUpe2RlZmluZShcImtlbmRvLmRhdGF2aXouY2hhcnQuZnVubmVsLm1pblwiLFtcImtlbmRvLmRhdGF2aXouY2hhcnQubWluXCIsXCJrZW5kby5kcmF3aW5nLm1pblwiXSxlKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgdCxpPXdpbmRvdy5rZW5kbyxyPWkuZGVlcEV4dGVuZCxvPWUuZXh0ZW5kLGE9aS5pc0Z1bmN0aW9uLHM9aS50ZW1wbGF0ZSxsPWkudXRpbCx1PWwuYXBwZW5kLGM9aS5kcmF3aW5nLGg9aS5nZW9tZXRyeSxkPWkuZGF0YXZpeixmPWkuZHJhd2luZy5Db2xvcixwPWQuQ2hhcnRFbGVtZW50LGc9ZC5QaWVDaGFydE1peGluLG09ZC5QbG90QXJlYUJhc2Usdj1kLlBsb3RBcmVhRmFjdG9yeSx5PWQuUG9pbnQyRCx3PWQuQm94MkQseD1kLlNlcmllc0JpbmRlcixiPWQuVGV4dEJveCxfPWQuYXV0b0Zvcm1hdCxrPWQuZXZhbE9wdGlvbnMsQz1sLmxpbWl0VmFsdWUsQT1kLnNlcmllc1RvdGFsLFA9XCJjYXRlZ29yeVwiLE09XCJjb2xvclwiLFM9XCJmdW5uZWxcIixPPVwidmFsdWVcIixJPVwiYmxhY2tcIixOPVwid2hpdGVcIix6PW0uZXh0ZW5kKHtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49ZS5zZXJpZXM7ZS5jcmVhdGVGdW5uZWxDaGFydChuKX0sY3JlYXRlRnVubmVsQ2hhcnQ6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcyx0PWVbMF0saT1uZXcgRihuLHtzZXJpZXM6ZSxsZWdlbmQ6bi5vcHRpb25zLmxlZ2VuZCxuZWNrUmF0aW86dC5uZWNrUmF0aW8sZHluYW1pY0hlaWdodDp0LmR5bmFtaWNIZWlnaHQsZHluYW1pY1Nsb3BlOnQuZHluYW1pY1Nsb3BlLHNlZ21lbnRTcGFjaW5nOnQuc2VnbWVudFNwYWNpbmcsaGlnaGxpZ2h0OnQuaGlnaGxpZ2h0fSk7bi5hcHBlbmRDaGFydChpKX0sYXBwZW5kQ2hhcnQ6ZnVuY3Rpb24oZSxuKXttLmZuLmFwcGVuZENoYXJ0LmNhbGwodGhpcyxlLG4pLHUodGhpcy5vcHRpb25zLmxlZ2VuZC5pdGVtcyxlLmxlZ2VuZEl0ZW1zKX19KSxGPXAuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsbil7dmFyIHQ9dGhpcztwLmZuLmluaXQuY2FsbCh0LG4pLHQucGxvdEFyZWE9ZSx0LnBvaW50cz1bXSx0LmxhYmVscz1bXSx0LmxlZ2VuZEl0ZW1zPVtdLHQucmVuZGVyKCl9LG9wdGlvbnM6e25lY2tSYXRpbzouMyx3aWR0aDozMDAsZHluYW1pY1Nsb3BlOiExLGR5bmFtaWNIZWlnaHQ6ITAsc2VnbWVudFNwYWNpbmc6MCxsYWJlbHM6e3Zpc2libGU6ITEsYWxpZ246XCJjZW50ZXJcIixwb3NpdGlvbjpcImNlbnRlclwifX0sZm9ybWF0UG9pbnRWYWx1ZTpmdW5jdGlvbihlLG4pe3JldHVybiBfKG4sZS52YWx1ZSl9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlLHQsaSxvLHMsbCx1LGM9dGhpcyxoPWMub3B0aW9ucyxkPWMucGxvdEFyZWEub3B0aW9ucy5zZXJpZXNDb2xvcnN8fFtdLGY9ZC5sZW5ndGgscD1oLnNlcmllc1swXSxnPXAuZGF0YTtpZihnKWZvcihpPUEocCkscz0wO3M8Zy5sZW5ndGg7cysrKWU9eC5jdXJyZW50LmJpbmRQb2ludChwLHMpLG89ZS52YWx1ZUZpZWxkcy52YWx1ZSxudWxsIT09byYmbyE9PW4mJih0PWUuZmllbGRzLGEocC5jb2xvcil8fChwLmNvbG9yPXQuY29sb3J8fGRbcyVmXSksdD1yKHtpbmRleDpzLG93bmVyOmMsc2VyaWVzOnAsY2F0ZWdvcnk6dC5jYXRlZ29yeSxkYXRhSXRlbTpnW3NdLHBlcmNlbnRhZ2U6TWF0aC5hYnMobykvaSx2aXNpYmxlSW5MZWdlbmQ6dC52aXNpYmxlSW5MZWdlbmQsdmlzaWJsZTp0LnZpc2libGV9LHQpLGw9Yy5jcmVhdGVTZWdtZW50KG8sdCksdT1jLmNyZWF0ZUxhYmVsKG8sdCksbCYmdSYmbC5hcHBlbmQodSkpfSxldmFsU2VnbWVudE9wdGlvbnM6ZnVuY3Rpb24oZSxuLHQpe3ZhciBpPXQuc2VyaWVzO2soZSx7dmFsdWU6bixzZXJpZXM6aSxkYXRhSXRlbTp0LmRhdGFJdGVtLGluZGV4OnQuaW5kZXh9LHtkZWZhdWx0czppLl9kZWZhdWx0cyxleGNsdWRlZDpbXCJkYXRhXCIsXCJ0b2dnbGVcIixcInZpc3VhbFwiXX0pfSxjcmVhdGVTZWdtZW50OmZ1bmN0aW9uKGUsbil7dmFyIGksYT10aGlzLHM9cih7fSxuLnNlcmllcyk7aWYoYS5ldmFsU2VnbWVudE9wdGlvbnMocyxlLG4pLGEuY3JlYXRlTGVnZW5kSXRlbShlLHMsbiksbi52aXNpYmxlIT09ITEpcmV0dXJuIGk9bmV3IHQoZSxzLG4pLG8oaSxuKSxhLmFwcGVuZChpKSxhLnBvaW50cy5wdXNoKGkpLGl9LGNyZWF0ZUxhYmVsOmZ1bmN0aW9uKGUsbil7dmFyIHQsaSxvLGE9dGhpcyxsPW4uc2VyaWVzLHU9bi5kYXRhSXRlbSxjPXIoe30sYS5vcHRpb25zLmxhYmVscyxsLmxhYmVscyksaD1lO2lmKGMudmlzaWJsZSlyZXR1cm4gYy50ZW1wbGF0ZT8oaT1zKGMudGVtcGxhdGUpLGg9aSh7ZGF0YUl0ZW06dSx2YWx1ZTplLHBlcmNlbnRhZ2U6bi5wZXJjZW50YWdlLGNhdGVnb3J5Om4uY2F0ZWdvcnksc2VyaWVzOmx9KSk6Yy5mb3JtYXQmJihoPV8oYy5mb3JtYXQsaCkpLGMuY29sb3J8fFwiY2VudGVyXCIhPT1jLmFsaWdufHwobz1uZXcgZihsLmNvbG9yKS5wZXJjQnJpZ2h0bmVzcygpLGMuY29sb3I9bz4xODA/STpOKSxhLmV2YWxTZWdtZW50T3B0aW9ucyhjLGUsbiksdD1uZXcgYihoLHIoe3ZBbGlnbjpjLnBvc2l0aW9ufSxjKSksYS5sYWJlbHMucHVzaCh0KSx0fSxsYWJlbFBhZGRpbmc6ZnVuY3Rpb24oKXt2YXIgZSxuLHQsaSxyPXRoaXMubGFiZWxzLG89e2xlZnQ6MCxyaWdodDowfTtmb3IoaT0wO2k8ci5sZW5ndGg7aSsrKWU9cltpXSxuPWUub3B0aW9ucy5hbGlnbixcImNlbnRlclwiIT09biYmKHQ9cltpXS5ib3gud2lkdGgoKSxcImxlZnRcIj09PW4/by5sZWZ0PU1hdGgubWF4KG8ubGVmdCx0KTpvLnJpZ2h0PU1hdGgubWF4KG8ucmlnaHQsdCkpO3JldHVybiBvfSxyZWZsb3c6ZnVuY3Rpb24obil7dmFyIHQsaSxyLG8sYSxzLGwsdSxjLGQsZixwLGc9dGhpcyxtPWcub3B0aW9ucyx2PWcucG9pbnRzLHk9di5sZW5ndGgsdz1tLm5lY2tSYXRpbzw9MSx4PW4uY2xvbmUoKS51bnBhZChnLmxhYmVsUGFkZGluZygpKSxiPXgud2lkdGgoKSxfPTAsaz13PzA6KGItYi9tLm5lY2tSYXRpbykvMixBPW0uc2VnbWVudFNwYWNpbmcsUD1tLmR5bmFtaWNTbG9wZSxNPXguaGVpZ2h0KCktQSooeS0xKSxTPXc/bS5uZWNrUmF0aW8qYjpiO2lmKHkpe2lmKFApZm9yKGw9dlswXSx1PWwsZS5lYWNoKHYsZnVuY3Rpb24oZSxuKXtuLnBlcmNlbnRhZ2U+dS5wZXJjZW50YWdlJiYodT1uKX0pLHI9bC5wZXJjZW50YWdlL3UucGVyY2VudGFnZSpiLGs9KGItcikvMix0PTA7dDx5O3QrKylhPXZbdF0ucGVyY2VudGFnZSxjPXZbdCsxXSxkPWM/Yy5wZXJjZW50YWdlOmEsbz12W3RdLnBvaW50cz1bXSxpPW0uZHluYW1pY0hlaWdodD9NKmE6TS95LHM9YT8oYi1yKihkL2EpKS8yOmQ/MDpiLzIscz1DKHMsMCxiKSxvLnB1c2gobmV3IGguUG9pbnQoeC54MStrLHgueTErXykpLG8ucHVzaChuZXcgaC5Qb2ludCh4LngxK2Itayx4LnkxK18pKSxvLnB1c2gobmV3IGguUG9pbnQoeC54MStiLXMseC55MStpK18pKSxvLnB1c2gobmV3IGguUG9pbnQoeC54MStzLHgueTEraStfKSksaz1zLF8rPWkrQSxyPUMoYi0yKnMsMCxiKTtlbHNlIGZvcihmPXc/YjpiLTIqayxwPShmLVMpLzIsdD0wO3Q8eTt0Kyspbz12W3RdLnBvaW50cz1bXSxhPXZbdF0ucGVyY2VudGFnZSxzPW0uZHluYW1pY0hlaWdodD9wKmE6cC95LGk9bS5keW5hbWljSGVpZ2h0P00qYTpNL3ksby5wdXNoKG5ldyBoLlBvaW50KHgueDErayx4LnkxK18pKSxvLnB1c2gobmV3IGguUG9pbnQoeC54MStiLWsseC55MStfKSksby5wdXNoKG5ldyBoLlBvaW50KHgueDErYi1rLXMseC55MStpK18pKSxvLnB1c2gobmV3IGguUG9pbnQoeC54MStrK3MseC55MStpK18pKSxrKz1zLF8rPWkrQTtmb3IodD0wO3Q8eTt0Kyspdlt0XS5yZWZsb3cobil9fX0pO3IoRi5mbixnKSx0PXAuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsbix0KXt2YXIgaT10aGlzO3AuZm4uaW5pdC5jYWxsKGksbiksaS52YWx1ZT1lLGkub3B0aW9ucy5pbmRleD10LmluZGV4fSxvcHRpb25zOntjb2xvcjpOLGJvcmRlcjp7d2lkdGg6MX19LHJlZmxvdzpmdW5jdGlvbihlKXt2YXIgbj10aGlzLHQ9bi5wb2ludHMsaT1uLmNoaWxkcmVuWzBdO24uYm94PW5ldyB3KHRbMF0ueCx0WzBdLnksdFsxXS54LHRbMl0ueSksaSYmaS5yZWZsb3cobmV3IHcoZS54MSx0WzBdLnksZS54Mix0WzJdLnkpKX0sY3JlYXRlVmlzdWFsOmZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzLHQ9bi5vcHRpb25zO3AuZm4uY3JlYXRlVmlzdWFsLmNhbGwodGhpcyksZT10LnZpc3VhbD90LnZpc3VhbCh7Y2F0ZWdvcnk6bi5jYXRlZ29yeSxkYXRhSXRlbTpuLmRhdGFJdGVtLHZhbHVlOm4udmFsdWUsc2VyaWVzOm4uc2VyaWVzLHBlcmNlbnRhZ2U6bi5wZXJjZW50YWdlLHBvaW50czpuLnBvaW50cyxvcHRpb25zOnQsY3JlYXRlVmlzdWFsOmZ1bmN0aW9uKCl7cmV0dXJuIG4uY3JlYXRlUGF0aCgpfX0pOm4uY3JlYXRlUGF0aCgpLGUmJnRoaXMudmlzdWFsLmFwcGVuZChlKX0sY3JlYXRlUGF0aDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucyxuPWUuYm9yZGVyLHQ9Yy5QYXRoLmZyb21Qb2ludHModGhpcy5wb2ludHMse2ZpbGw6e2NvbG9yOmUuY29sb3Isb3BhY2l0eTplLm9wYWNpdHl9LHN0cm9rZTp7Y29sb3I6bi5jb2xvcixvcGFjaXR5Om4ub3BhY2l0eSx3aWR0aDpuLndpZHRofX0pLmNsb3NlKCk7cmV0dXJuIHR9LGNyZWF0ZUhpZ2hsaWdodDpmdW5jdGlvbihlKXtyZXR1cm4gYy5QYXRoLmZyb21Qb2ludHModGhpcy5wb2ludHMsZSl9LGhpZ2hsaWdodFZpc3VhbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZpc3VhbC5jaGlsZHJlblswXX0saGlnaGxpZ2h0VmlzdWFsQXJnczpmdW5jdGlvbigpe3ZhciBlPWMuUGF0aC5mcm9tUG9pbnRzKHRoaXMucG9pbnRzKS5jbG9zZSgpO3JldHVybntvcHRpb25zOnRoaXMub3B0aW9ucyxwYXRoOmV9fSxoaWdobGlnaHRPdmVybGF5OmZ1bmN0aW9uKGUsbil7dmFyIHQsaSxyLGE9dGhpcy5vcHRpb25zLHM9YS5oaWdobGlnaHR8fHt9O2lmKHMudmlzaWJsZSE9PSExKXJldHVybiB0PXMuYm9yZGVyfHx7fSxpPW8oe30sbix7ZmlsbDpzLmNvbG9yLHN0cm9rZTp0LmNvbG9yLHN0cm9rZU9wYWNpdHk6dC5vcGFjaXR5LHN0cm9rZVdpZHRoOnQud2lkdGgsZmlsbE9wYWNpdHk6cy5vcGFjaXR5fSkscj1lLmNyZWF0ZVBvbHlsaW5lKHRoaXMucG9pbnRzLCEwLGkpfSx0b29sdGlwQW5jaG9yOmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMuYm94O3JldHVybiBuZXcgeShuLmNlbnRlcigpLngtZS8yLG4ueTEpfSxmb3JtYXRWYWx1ZTpmdW5jdGlvbihlKXt2YXIgbj10aGlzO3JldHVybiBuLm93bmVyLmZvcm1hdFBvaW50VmFsdWUobixlKX19KSxyKHQuZm4sZC5Qb2ludEV2ZW50c01peGluKSx2LmN1cnJlbnQucmVnaXN0ZXIoeixbU10pLHguY3VycmVudC5yZWdpc3RlcihbU10sW09dLFtQLE0sXCJ2aXNpYmxlSW5MZWdlbmRcIixcInZpc2libGVcIl0pLHIoZCx7RnVubmVsQ2hhcnQ6RixGdW5uZWxTZWdtZW50OnR9KX0od2luZG93LmtlbmRvLmpRdWVyeSksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsbix0KXsodHx8bikoKX0pOzshZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcImtlbmRvLmZ4Lm1pblwiLFtcImtlbmRvLmNvcmUubWluXCJdLHQpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkodCl7cmV0dXJuIHBhcnNlSW50KHQsMTApfWZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gaSh0LmNzcyhlKSl9ZnVuY3Rpb24gbih0KXt2YXIgZSxpPVtdO2ZvcihlIGluIHQpaS5wdXNoKGUpO3JldHVybiBpfWZ1bmN0aW9uIHModCl7Zm9yKHZhciBlIGluIHQpTC5pbmRleE9mKGUpIT0tMSYmUS5pbmRleE9mKGUpPT0tMSYmZGVsZXRlIHRbZV07cmV0dXJuIHR9ZnVuY3Rpb24gbyh0LGUpe3ZhciBpLHIsbixzLG89W10sYT17fTtmb3IociBpbiBlKWk9ci50b0xvd2VyQ2FzZSgpLHM9SCYmTC5pbmRleE9mKGkpIT0tMSwhRS5oYXNIVzNEJiZzJiZRLmluZGV4T2YoaSk9PS0xP2RlbGV0ZSBlW3JdOihuPWVbcl0scz9vLnB1c2gocitcIihcIituK1wiKVwiKTphW3JdPW4pO3JldHVybiBvLmxlbmd0aCYmKGFbYXRdPW8uam9pbihcIiBcIikpLGF9ZnVuY3Rpb24gYSh0LGUpe3ZhciByLG4scztyZXR1cm4gSD8ocj10LmNzcyhhdCkscj09Sj9cInNjYWxlXCI9PWU/MTowOihuPXIubWF0Y2goUmVnRXhwKGUrXCJcXFxccypcXFxcKChbXFxcXGRcXFxcd1xcXFwuXSspXCIpKSxzPTAsbj9zPWkoblsxXSk6KG49ci5tYXRjaChTKXx8WzAsMCwwLDAsMF0sZT1lLnRvTG93ZXJDYXNlKCksVi50ZXN0KGUpP3M9cGFyc2VGbG9hdChuWzNdL25bMl0pOlwidHJhbnNsYXRleVwiPT1lP3M9cGFyc2VGbG9hdChuWzRdL25bMl0pOlwic2NhbGVcIj09ZT9zPXBhcnNlRmxvYXQoblsyXSk6XCJyb3RhdGVcIj09ZSYmKHM9cGFyc2VGbG9hdChNYXRoLmF0YW4yKG5bMl0sblsxXSkpKSkscykpOnBhcnNlRmxvYXQodC5jc3MoZSkpfWZ1bmN0aW9uIGModCl7cmV0dXJuIHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHJpbmcoMSl9ZnVuY3Rpb24gbCh0LGUpe3ZhciBpPWguZXh0ZW5kKGUpLHI9aS5wcm90b3R5cGUuZGlyZWN0aW9ucztUW2ModCldPWksVC5FbGVtZW50LnByb3RvdHlwZVt0XT1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gbmV3IGkodGhpcy5lbGVtZW50LHQsZSxyLG4pfSxOKHIsZnVuY3Rpb24oZSxyKXtULkVsZW1lbnQucHJvdG90eXBlW3QrYyhyKV09ZnVuY3Rpb24odCxlLG4pe3JldHVybiBuZXcgaSh0aGlzLmVsZW1lbnQscix0LGUsbil9fSl9ZnVuY3Rpb24gZCh0LGkscixuKXtsKHQse2RpcmVjdGlvbnM6dixzdGFydFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zdGFydFZhbHVlPXQsdGhpc30sZW5kVmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2VuZFZhbHVlPXQsdGhpc30sc2hvdWxkSGlkZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaG91bGRIaWRlfSxwcmVwYXJlOmZ1bmN0aW9uKHQscyl7dmFyIG8sYSxjPXRoaXMsbD1cIm91dFwiPT09dGhpcy5fZGlyZWN0aW9uLGQ9Yy5lbGVtZW50LmRhdGEoaSksdT0hKGlzTmFOKGQpfHxkPT1yKTtvPXU/ZDplIT09dGhpcy5fc3RhcnRWYWx1ZT90aGlzLl9zdGFydFZhbHVlOmw/cjpuLGE9ZSE9PXRoaXMuX2VuZFZhbHVlP3RoaXMuX2VuZFZhbHVlOmw/bjpyLHRoaXMuX3JldmVyc2U/KHRbaV09YSxzW2ldPW8pOih0W2ldPW8sc1tpXT1hKSxjLl9zaG91bGRIaWRlPXNbaV09PT1ufX0pfWZ1bmN0aW9uIHUodCxlKXt2YXIgaT1DLmRpcmVjdGlvbnNbZV0udmVydGljYWwscj10W2k/WTpYXSgpLzIrXCJweFwiO3JldHVybiBfW2VdLnJlcGxhY2UoXCIkc2l6ZVwiLHIpfXZhciBmLHAsaCxtLHYseCxfLGcseSxrLGIsdyxDPXdpbmRvdy5rZW5kbyxUPUMuZWZmZWN0cyxOPXQuZWFjaCxQPXQuZXh0ZW5kLHo9dC5wcm94eSxFPUMuc3VwcG9ydCxSPUUuYnJvd3NlcixIPUUudHJhbnNmb3JtcyxEPUUudHJhbnNpdGlvbnMsTz17c2NhbGU6MCxzY2FsZXg6MCxzY2FsZXk6MCxzY2FsZTNkOjB9LEY9e3RyYW5zbGF0ZTowLHRyYW5zbGF0ZXg6MCx0cmFuc2xhdGV5OjAsdHJhbnNsYXRlM2Q6MH0sST1lIT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnpvb20mJiFILFM9L21hdHJpeDM/ZD9cXHMqXFwoLiosXFxzKihbXFxkXFwuXFwtXSspXFx3Kj8sXFxzKihbXFxkXFwuXFwtXSspXFx3Kj8sXFxzKihbXFxkXFwuXFwtXSspXFx3Kj8sXFxzKihbXFxkXFwuXFwtXSspXFx3Kj8vaSxBPS9eKC0/W1xcZFxcLlxcLV0rKT9bXFx3XFxzXSosP1xccyooLT9bXFxkXFwuXFwtXSspP1tcXHdcXHNdKi9pLFY9L3RyYW5zbGF0ZXg/JC9pLHE9Lyh6b29tfGZhZGV8ZXhwYW5kKShcXHcrKS8sTT0vKHpvb218ZmFkZXxleHBhbmQpLywkPS9beHldJC9pLEw9W1wicGVyc3BlY3RpdmVcIixcInJvdGF0ZVwiLFwicm90YXRleFwiLFwicm90YXRleVwiLFwicm90YXRlelwiLFwicm90YXRlM2RcIixcInNjYWxlXCIsXCJzY2FsZXhcIixcInNjYWxleVwiLFwic2NhbGV6XCIsXCJzY2FsZTNkXCIsXCJza2V3XCIsXCJza2V3eFwiLFwic2tld3lcIixcInRyYW5zbGF0ZVwiLFwidHJhbnNsYXRleFwiLFwidHJhbnNsYXRleVwiLFwidHJhbnNsYXRlelwiLFwidHJhbnNsYXRlM2RcIixcIm1hdHJpeFwiLFwibWF0cml4M2RcIl0sUT1bXCJyb3RhdGVcIixcInNjYWxlXCIsXCJzY2FsZXhcIixcInNjYWxleVwiLFwic2tld1wiLFwic2tld3hcIixcInNrZXd5XCIsXCJ0cmFuc2xhdGVcIixcInRyYW5zbGF0ZXhcIixcInRyYW5zbGF0ZXlcIixcIm1hdHJpeFwiXSxXPXtyb3RhdGU6XCJkZWdcIixzY2FsZTpcIlwiLHNrZXc6XCJweFwiLHRyYW5zbGF0ZTpcInB4XCJ9LGo9SC5jc3MsQj1NYXRoLnJvdW5kLFU9XCJcIixHPVwicHhcIixKPVwibm9uZVwiLEs9XCJhdXRvXCIsWD1cIndpZHRoXCIsWT1cImhlaWdodFwiLFo9XCJoaWRkZW5cIix0dD1cIm9yaWdpblwiLGV0PVwiYWJvcnRJZFwiLGl0PVwib3ZlcmZsb3dcIixydD1cInRyYW5zbGF0ZVwiLG50PVwicG9zaXRpb25cIixzdD1cImNvbXBsZXRlQ2FsbGJhY2tcIixvdD1qK1widHJhbnNpdGlvblwiLGF0PWorXCJ0cmFuc2Zvcm1cIixjdD1qK1wiYmFja2ZhY2UtdmlzaWJpbGl0eVwiLGx0PWorXCJwZXJzcGVjdGl2ZVwiLGR0PVwiMTUwMHB4XCIsdXQ9XCJwZXJzcGVjdGl2ZShcIitkdCtcIilcIixmdD17bGVmdDp7cmV2ZXJzZTpcInJpZ2h0XCIscHJvcGVydHk6XCJsZWZ0XCIsdHJhbnNpdGlvbjpcInRyYW5zbGF0ZXhcIix2ZXJ0aWNhbDohMSxtb2RpZmllcjotMX0scmlnaHQ6e3JldmVyc2U6XCJsZWZ0XCIscHJvcGVydHk6XCJsZWZ0XCIsdHJhbnNpdGlvbjpcInRyYW5zbGF0ZXhcIix2ZXJ0aWNhbDohMSxtb2RpZmllcjoxfSxkb3duOntyZXZlcnNlOlwidXBcIixwcm9wZXJ0eTpcInRvcFwiLHRyYW5zaXRpb246XCJ0cmFuc2xhdGV5XCIsdmVydGljYWw6ITAsbW9kaWZpZXI6MX0sdXA6e3JldmVyc2U6XCJkb3duXCIscHJvcGVydHk6XCJ0b3BcIix0cmFuc2l0aW9uOlwidHJhbnNsYXRleVwiLHZlcnRpY2FsOiEwLG1vZGlmaWVyOi0xfSx0b3A6e3JldmVyc2U6XCJib3R0b21cIn0sYm90dG9tOntyZXZlcnNlOlwidG9wXCJ9LFwiaW5cIjp7cmV2ZXJzZTpcIm91dFwiLG1vZGlmaWVyOi0xfSxvdXQ6e3JldmVyc2U6XCJpblwiLG1vZGlmaWVyOjF9LHZlcnRpY2FsOntyZXZlcnNlOlwidmVydGljYWxcIn0saG9yaXpvbnRhbDp7cmV2ZXJzZTpcImhvcml6b250YWxcIn19O0MuZGlyZWN0aW9ucz1mdCxQKHQuZm4se2tlbmRvU3RvcDpmdW5jdGlvbih0LGUpe3JldHVybiBEP1Quc3RvcFF1ZXVlKHRoaXMsdHx8ITEsZXx8ITEpOnRoaXMuc3RvcCh0LGUpfX0pLEgmJiFEJiYoTihRLGZ1bmN0aW9uKGkscil7dC5mbltyXT1mdW5jdGlvbihpKXtpZihlPT09aSlyZXR1cm4gYSh0aGlzLHIpO3ZhciBuPXQodGhpcylbMF0scz1yK1wiKFwiK2krV1tyLnJlcGxhY2UoJCxcIlwiKV0rXCIpXCI7cmV0dXJuIG4uc3R5bGUuY3NzVGV4dC5pbmRleE9mKGF0KT09LTE/dCh0aGlzKS5jc3MoYXQscyk6bi5zdHlsZS5jc3NUZXh0PW4uc3R5bGUuY3NzVGV4dC5yZXBsYWNlKFJlZ0V4cChyK1wiXFxcXCguKj9cXFxcKVwiLFwiaVwiKSxzKSx0aGlzfSx0LmZ4LnN0ZXBbcl09ZnVuY3Rpb24oZSl7dChlLmVsZW0pW3JdKGUubm93KX19KSxmPXQuZngucHJvdG90eXBlLmN1cix0LmZ4LnByb3RvdHlwZS5jdXI9ZnVuY3Rpb24oKXtyZXR1cm4gUS5pbmRleE9mKHRoaXMucHJvcCkhPS0xP3BhcnNlRmxvYXQodCh0aGlzLmVsZW0pW3RoaXMucHJvcF0oKSk6Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxDLnRvZ2dsZUNsYXNzPWZ1bmN0aW9uKHQsZSxpLHIpe3JldHVybiBlJiYoZT1lLnNwbGl0KFwiIFwiKSxEJiYoaT1QKHtleGNsdXNpdmU6XCJhbGxcIixkdXJhdGlvbjo0MDAsZWFzZTpcImVhc2Utb3V0XCJ9LGkpLHQuY3NzKG90LGkuZXhjbHVzaXZlK1wiIFwiK2kuZHVyYXRpb24rXCJtcyBcIitpLmVhc2UpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LmNzcyhvdCxcIlwiKS5jc3MoWSl9LGkuZHVyYXRpb24pKSxOKGUsZnVuY3Rpb24oZSxpKXt0LnRvZ2dsZUNsYXNzKGkscil9KSksdH0sQy5wYXJzZUVmZmVjdHM9ZnVuY3Rpb24odCxlKXt2YXIgaT17fTtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD9OKHQuc3BsaXQoXCIgXCIpLGZ1bmN0aW9uKHQscil7dmFyIG49IU0udGVzdChyKSxzPXIucmVwbGFjZShxLGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZStcIjpcIitpLnRvTG93ZXJDYXNlKCl9KSxvPXMuc3BsaXQoXCI6XCIpLGE9b1sxXSxjPXt9O28ubGVuZ3RoPjEmJihjLmRpcmVjdGlvbj1lJiZuP2Z0W2FdLnJldmVyc2U6YSksaVtvWzBdXT1jfSk6Tih0LGZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuZGlyZWN0aW9uO3ImJmUmJiFNLnRlc3QodCkmJih0aGlzLmRpcmVjdGlvbj1mdFtyXS5yZXZlcnNlKSxpW3RdPXRoaXN9KSxpfSxEJiZQKFQse3RyYW5zaXRpb246ZnVuY3Rpb24oZSxpLHIpe3ZhciBzLGEsYyxsLGQ9MCx1PWUuZGF0YShcImtleXNcIil8fFtdO3I9UCh7ZHVyYXRpb246MjAwLGVhc2U6XCJlYXNlLW91dFwiLGNvbXBsZXRlOm51bGwsZXhjbHVzaXZlOlwiYWxsXCJ9LHIpLGM9ITEsbD1mdW5jdGlvbigpe2N8fChjPSEwLGEmJihjbGVhclRpbWVvdXQoYSksYT1udWxsKSxlLnJlbW92ZURhdGEoZXQpLmRlcXVldWUoKS5jc3Mob3QsXCJcIikuY3NzKG90KSxyLmNvbXBsZXRlLmNhbGwoZSkpfSxyLmR1cmF0aW9uPXQuZng/dC5meC5zcGVlZHNbci5kdXJhdGlvbl18fHIuZHVyYXRpb246ci5kdXJhdGlvbixzPW8oZSxpKSx0Lm1lcmdlKHUsbihzKSksZS5kYXRhKFwia2V5c1wiLHQudW5pcXVlKHUpKS5oZWlnaHQoKSxlLmNzcyhvdCxyLmV4Y2x1c2l2ZStcIiBcIityLmR1cmF0aW9uK1wibXMgXCIrci5lYXNlKS5jc3Mob3QpLGUuY3NzKHMpLmNzcyhhdCksRC5ldmVudCYmKGUub25lKEQuZXZlbnQsbCksMCE9PXIuZHVyYXRpb24mJihkPTUwMCkpLGE9c2V0VGltZW91dChsLHIuZHVyYXRpb24rZCksZS5kYXRhKGV0LGEpLGUuZGF0YShzdCxsKX0sc3RvcFF1ZXVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcixuPXQuZGF0YShcImtleXNcIikscz0haSYmbixvPXQuZGF0YShzdCk7cmV0dXJuIHMmJihyPUMuZ2V0Q29tcHV0ZWRTdHlsZXModFswXSxuKSksbyYmbygpLHMmJnQuY3NzKHIpLHQucmVtb3ZlRGF0YShcImtleXNcIikuc3RvcChlKX19KSxwPUMuQ2xhc3MuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcztpLmVsZW1lbnQ9dCxpLmVmZmVjdHM9W10saS5vcHRpb25zPWUsaS5yZXN0b3JlPVtdfSxydW46ZnVuY3Rpb24oZSl7dmFyIGkscixuLGEsYyxsLGQsdT10aGlzLGY9ZS5sZW5ndGgscD11LmVsZW1lbnQsaD11Lm9wdGlvbnMsbT10LkRlZmVycmVkKCksdj17fSx4PXt9O2Zvcih1LmVmZmVjdHM9ZSxtLnRoZW4odC5wcm94eSh1LFwiY29tcGxldGVcIikpLHAuZGF0YShcImFuaW1hdGluZ1wiLCEwKSxyPTA7cjxmO3IrKylmb3IoaT1lW3JdLGkuc2V0UmV2ZXJzZShoLnJldmVyc2UpLGkuc2V0T3B0aW9ucyhoKSx1LmFkZFJlc3RvcmVQcm9wZXJ0aWVzKGkucmVzdG9yZSksaS5wcmVwYXJlKHYseCksYz1pLmNoaWxkcmVuKCksbj0wLGw9Yy5sZW5ndGg7bjxsO24rKyljW25dLmR1cmF0aW9uKGguZHVyYXRpb24pLnJ1bigpO2ZvcihkIGluIGguZWZmZWN0cylQKHgsaC5lZmZlY3RzW2RdLnByb3BlcnRpZXMpO2ZvcihwLmlzKFwiOnZpc2libGVcIil8fFAodix7ZGlzcGxheTpwLmRhdGEoXCJvbGRkaXNwbGF5XCIpfHxcImJsb2NrXCJ9KSxIJiYhaC5yZXNldCYmKGE9cC5kYXRhKFwidGFyZ2V0VHJhbnNmb3JtXCIpLGEmJih2PVAoYSx2KSkpLHY9byhwLHYpLEgmJiFEJiYodj1zKHYpKSxwLmNzcyh2KS5jc3MoYXQpLHI9MDtyPGY7cisrKWVbcl0uc2V0dXAoKTtyZXR1cm4gaC5pbml0JiZoLmluaXQoKSxwLmRhdGEoXCJ0YXJnZXRUcmFuc2Zvcm1cIix4KSxULmFuaW1hdGUocCx4LFAoe30saCx7Y29tcGxldGU6bS5yZXNvbHZlfSkpLG0ucHJvbWlzZSgpfSxzdG9wOmZ1bmN0aW9uKCl7dCh0aGlzLmVsZW1lbnQpLmtlbmRvU3RvcCghMCwhMCl9LGFkZFJlc3RvcmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPXRoaXMuZWxlbWVudCxyPTAsbj10Lmxlbmd0aDtyPG47cisrKWU9dFtyXSx0aGlzLnJlc3RvcmUucHVzaChlKSxpLmRhdGEoZSl8fGkuZGF0YShlLGkuY3NzKGUpKX0scmVzdG9yZUNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLHI9dGhpcy5lbGVtZW50O2Zvcih0PTAsZT10aGlzLnJlc3RvcmUubGVuZ3RoO3Q8ZTt0KyspaT10aGlzLnJlc3RvcmVbdF0sci5jc3MoaSxyLmRhdGEoaSkpfSxjb21wbGV0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsaT0wLHI9ZS5lbGVtZW50LG49ZS5vcHRpb25zLHM9ZS5lZmZlY3RzLG89cy5sZW5ndGg7Zm9yKHIucmVtb3ZlRGF0YShcImFuaW1hdGluZ1wiKS5kZXF1ZXVlKCksbi5oaWRlJiZyLmRhdGEoXCJvbGRkaXNwbGF5XCIsci5jc3MoXCJkaXNwbGF5XCIpKS5oaWRlKCksdGhpcy5yZXN0b3JlQ2FsbGJhY2soKSxJJiYhSCYmc2V0VGltZW91dCh0LnByb3h5KHRoaXMsXCJyZXN0b3JlQ2FsbGJhY2tcIiksMCk7aTxvO2krKylzW2ldLnRlYXJkb3duKCk7bi5jb21wbGV0ZUNhbGxiYWNrJiZuLmNvbXBsZXRlQ2FsbGJhY2socil9fSksVC5wcm9taXNlPWZ1bmN0aW9uKHQsZSl7dmFyIGkscixuLHM9W10sbz1uZXcgcCh0LGUpLGE9Qy5wYXJzZUVmZmVjdHMoZS5lZmZlY3RzKTtlLmVmZmVjdHM9YTtmb3IobiBpbiBhKWk9VFtjKG4pXSxpJiYocj1uZXcgaSh0LGFbbl0uZGlyZWN0aW9uKSxzLnB1c2gocikpO3NbMF0/by5ydW4ocyk6KHQuaXMoXCI6dmlzaWJsZVwiKXx8dC5jc3Moe2Rpc3BsYXk6dC5kYXRhKFwib2xkZGlzcGxheVwiKXx8XCJibG9ja1wifSkuY3NzKFwiZGlzcGxheVwiKSxlLmluaXQmJmUuaW5pdCgpLHQuZGVxdWV1ZSgpLG8uY29tcGxldGUoKSl9LFAoVCx7YW5pbWF0ZTpmdW5jdGlvbihpLG4sbyl7dmFyIGE9by50cmFuc2l0aW9uIT09ITE7ZGVsZXRlIG8udHJhbnNpdGlvbixEJiZcInRyYW5zaXRpb25cImluIFQmJmE/VC50cmFuc2l0aW9uKGksbixvKTpIP2kuYW5pbWF0ZShzKG4pLHtxdWV1ZTohMSxzaG93OiExLGhpZGU6ITEsZHVyYXRpb246by5kdXJhdGlvbixjb21wbGV0ZTpvLmNvbXBsZXRlfSk6aS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9dCh0aGlzKSxzPXt9O04oTCxmdW5jdGlvbih0LG8pe3ZhciBhLGMsbCxkLHUsZixwLGg9bj9uW29dK1wiIFwiOm51bGw7aCYmKGM9bixvIGluIE8mJm5bb10hPT1lPyhhPWgubWF0Y2goQSksSCYmUChjLHtzY2FsZTorYVswXX0pKTpvIGluIEYmJm5bb10hPT1lJiYobD1pLmNzcyhudCksZD1cImFic29sdXRlXCI9PWx8fFwiZml4ZWRcIj09bCxpLmRhdGEocnQpfHwoZD9pLmRhdGEocnQse3RvcDpyKGksXCJ0b3BcIil8fDAsbGVmdDpyKGksXCJsZWZ0XCIpfHwwLGJvdHRvbTpyKGksXCJib3R0b21cIikscmlnaHQ6cihpLFwicmlnaHRcIil9KTppLmRhdGEocnQse3RvcDpyKGksXCJtYXJnaW5Ub3BcIil8fDAsbGVmdDpyKGksXCJtYXJnaW5MZWZ0XCIpfHwwfSkpLHU9aS5kYXRhKHJ0KSxhPWgubWF0Y2goQSksYSYmKGY9bz09cnQrXCJ5XCI/MDorYVsxXSxwPW89PXJ0K1wieVwiPythWzFdOithWzJdLGQ/KGlzTmFOKHUucmlnaHQpP2lzTmFOKGYpfHxQKGMse2xlZnQ6dS5sZWZ0K2Z9KTppc05hTihmKXx8UChjLHtyaWdodDp1LnJpZ2h0LWZ9KSxpc05hTih1LmJvdHRvbSk/aXNOYU4ocCl8fFAoYyx7dG9wOnUudG9wK3B9KTppc05hTihwKXx8UChjLHtib3R0b206dS5ib3R0b20tcH0pKTooaXNOYU4oZil8fFAoYyx7bWFyZ2luTGVmdDp1LmxlZnQrZn0pLGlzTmFOKHApfHxQKGMse21hcmdpblRvcDp1LnRvcCtwfSkpKSksIUgmJlwic2NhbGVcIiE9byYmbyBpbiBjJiZkZWxldGUgY1tvXSxjJiZQKHMsYykpfSksUi5tc2llJiZkZWxldGUgcy5zY2FsZSxpLmFuaW1hdGUocyx7cXVldWU6ITEsc2hvdzohMSxoaWRlOiExLGR1cmF0aW9uOm8uZHVyYXRpb24sY29tcGxldGU6by5jb21wbGV0ZX0pfSl9fSksVC5hbmltYXRlZFByb21pc2U9VC5wcm9taXNlLGg9Qy5DbGFzcy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO2kuZWxlbWVudD10LGkuX2RpcmVjdGlvbj1lLGkub3B0aW9ucz17fSxpLl9hZGRpdGlvbmFsRWZmZWN0cz1bXSxpLnJlc3RvcmV8fChpLnJlc3RvcmU9W10pfSxyZXZlcnNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JldmVyc2U9ITAsdGhpcy5ydW4oKX0scGxheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXZlcnNlPSExLHRoaXMucnVuKCl9LGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkaXRpb25hbEVmZmVjdHMucHVzaCh0KSx0aGlzfSxkaXJlY3Rpb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RpcmVjdGlvbj10LHRoaXN9LGR1cmF0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kdXJhdGlvbj10LHRoaXN9LGNvbXBvc2l0ZVJ1bjpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1uZXcgcCh0LmVsZW1lbnQse3JldmVyc2U6dC5fcmV2ZXJzZSxkdXJhdGlvbjp0Ll9kdXJhdGlvbn0pLGk9dC5fYWRkaXRpb25hbEVmZmVjdHMuY29uY2F0KFt0XSk7cmV0dXJuIGUucnVuKGkpfSxydW46ZnVuY3Rpb24oKXtpZih0aGlzLl9hZGRpdGlvbmFsRWZmZWN0cyYmdGhpcy5fYWRkaXRpb25hbEVmZmVjdHNbMF0pcmV0dXJuIHRoaXMuY29tcG9zaXRlUnVuKCk7dmFyIGUsaSxyPXRoaXMsbj1yLmVsZW1lbnQsYT0wLGM9ci5yZXN0b3JlLGw9Yy5sZW5ndGgsZD10LkRlZmVycmVkKCksdT17fSxmPXt9LHA9ci5jaGlsZHJlbigpLGg9cC5sZW5ndGg7Zm9yKGQudGhlbih0LnByb3h5KHIsXCJfY29tcGxldGVcIikpLG4uZGF0YShcImFuaW1hdGluZ1wiLCEwKSxhPTA7YTxsO2ErKyllPWNbYV0sbi5kYXRhKGUpfHxuLmRhdGEoZSxuLmNzcyhlKSk7Zm9yKGE9MDthPGg7YSsrKXBbYV0uZHVyYXRpb24oci5fZHVyYXRpb24pLnJ1bigpO3JldHVybiByLnByZXBhcmUodSxmKSxuLmlzKFwiOnZpc2libGVcIil8fFAodSx7ZGlzcGxheTpuLmRhdGEoXCJvbGRkaXNwbGF5XCIpfHxcImJsb2NrXCJ9KSxIJiYoaT1uLmRhdGEoXCJ0YXJnZXRUcmFuc2Zvcm1cIiksaSYmKHU9UChpLHUpKSksdT1vKG4sdSksSCYmIUQmJih1PXModSkpLG4uY3NzKHUpLmNzcyhhdCksci5zZXR1cCgpLG4uZGF0YShcInRhcmdldFRyYW5zZm9ybVwiLGYpLFQuYW5pbWF0ZShuLGYse2R1cmF0aW9uOnIuX2R1cmF0aW9uLGNvbXBsZXRlOmQucmVzb2x2ZX0pLGQucHJvbWlzZSgpfSxzdG9wOmZ1bmN0aW9uKCl7dmFyIGU9MCxpPXRoaXMuY2hpbGRyZW4oKSxyPWkubGVuZ3RoO2ZvcihlPTA7ZTxyO2UrKylpW2VdLnN0b3AoKTtyZXR1cm4gdCh0aGlzLmVsZW1lbnQpLmtlbmRvU3RvcCghMCwhMCksdGhpc30scmVzdG9yZUNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLHI9dGhpcy5lbGVtZW50O2Zvcih0PTAsZT10aGlzLnJlc3RvcmUubGVuZ3RoO3Q8ZTt0KyspaT10aGlzLnJlc3RvcmVbdF0sci5jc3MoaSxyLmRhdGEoaSkpfSxfY29tcGxldGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLGk9ZS5lbGVtZW50O2kucmVtb3ZlRGF0YShcImFuaW1hdGluZ1wiKS5kZXF1ZXVlKCksZS5yZXN0b3JlQ2FsbGJhY2soKSxlLnNob3VsZEhpZGUoKSYmaS5kYXRhKFwib2xkZGlzcGxheVwiLGkuY3NzKFwiZGlzcGxheVwiKSkuaGlkZSgpLEkmJiFIJiZzZXRUaW1lb3V0KHQucHJveHkoZSxcInJlc3RvcmVDYWxsYmFja1wiKSwwKSxlLnRlYXJkb3duKCl9LHNldE9wdGlvbnM6ZnVuY3Rpb24odCl7UCghMCx0aGlzLm9wdGlvbnMsdCl9LGNoaWxkcmVuOmZ1bmN0aW9uKCl7cmV0dXJuW119LHNob3VsZEhpZGU6dC5ub29wLHNldHVwOnQubm9vcCxwcmVwYXJlOnQubm9vcCx0ZWFyZG93bjp0Lm5vb3AsZGlyZWN0aW9uczpbXSxzZXRSZXZlcnNlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZXZlcnNlPXQsdGhpc319KSxtPVtcImxlZnRcIixcInJpZ2h0XCIsXCJ1cFwiLFwiZG93blwiXSx2PVtcImluXCIsXCJvdXRcIl0sbChcInNsaWRlSW5cIix7ZGlyZWN0aW9uczptLGRpdmlzb3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5kaXZpc29yPXQsdGhpc30scHJlcGFyZTpmdW5jdGlvbih0LGUpe3ZhciBpLHI9dGhpcyxuPXIuZWxlbWVudCxzPUMuX291dGVyV2lkdGgsbz1DLl9vdXRlckhlaWdodCxhPWZ0W3IuX2RpcmVjdGlvbl0sYz0tYS5tb2RpZmllciooYS52ZXJ0aWNhbD9vKG4pOnMobikpLGw9Yy8oci5vcHRpb25zJiZyLm9wdGlvbnMuZGl2aXNvcnx8MSkrRyxkPVwiMHB4XCI7ci5fcmV2ZXJzZSYmKGk9dCx0PWUsZT1pKSxIPyh0W2EudHJhbnNpdGlvbl09bCxlW2EudHJhbnNpdGlvbl09ZCk6KHRbYS5wcm9wZXJ0eV09bCxlW2EucHJvcGVydHldPWQpfX0pLGwoXCJ0aWxlXCIse2RpcmVjdGlvbnM6bSxpbml0OmZ1bmN0aW9uKHQsZSxpKXtoLnByb3RvdHlwZS5pbml0LmNhbGwodGhpcyx0LGUpLHRoaXMub3B0aW9ucz17cHJldmlvdXM6aX19LHByZXZpb3VzRGl2aXNvcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLnByZXZpb3VzRGl2aXNvcj10LHRoaXN9LGNoaWxkcmVuOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuX3JldmVyc2UsaT10Lm9wdGlvbnMucHJldmlvdXMscj10Lm9wdGlvbnMucHJldmlvdXNEaXZpc29yfHwxLG49dC5fZGlyZWN0aW9uLHM9W0MuZngodC5lbGVtZW50KS5zbGlkZUluKG4pLnNldFJldmVyc2UoZSldO3JldHVybiBpJiZzLnB1c2goQy5meChpKS5zbGlkZUluKGZ0W25dLnJldmVyc2UpLmRpdmlzb3Iocikuc2V0UmV2ZXJzZSghZSkpLHN9fSksZChcImZhZGVcIixcIm9wYWNpdHlcIiwxLDApLGQoXCJ6b29tXCIsXCJzY2FsZVwiLDEsLjAxKSxsKFwic2xpZGVNYXJnaW5cIix7cHJlcGFyZTpmdW5jdGlvbih0LGUpe3ZhciBpLHI9dGhpcyxuPXIuZWxlbWVudCxzPXIub3B0aW9ucyxvPW4uZGF0YSh0dCksYT1zLm9mZnNldCxjPXIuX3JldmVyc2U7Y3x8bnVsbCE9PW98fG4uZGF0YSh0dCxwYXJzZUZsb2F0KG4uY3NzKFwibWFyZ2luLVwiK3MuYXhpcykpKSxpPW4uZGF0YSh0dCl8fDAsZVtcIm1hcmdpbi1cIitzLmF4aXNdPWM/aTppK2F9fSksbChcInNsaWRlVG9cIix7cHJlcGFyZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMscj1pLmVsZW1lbnQsbj1pLm9wdGlvbnMscz1uLm9mZnNldC5zcGxpdChcIixcIiksbz1pLl9yZXZlcnNlO0g/KGUudHJhbnNsYXRleD1vPzA6c1swXSxlLnRyYW5zbGF0ZXk9bz8wOnNbMV0pOihlLmxlZnQ9bz8wOnNbMF0sZS50b3A9bz8wOnNbMV0pLHIuY3NzKFwibGVmdFwiKX19KSxsKFwiZXhwYW5kXCIse2RpcmVjdGlvbnM6W1wiaG9yaXpvbnRhbFwiLFwidmVydGljYWxcIl0scmVzdG9yZTpbaXRdLHByZXBhcmU6ZnVuY3Rpb24odCxpKXt2YXIgcj10aGlzLG49ci5lbGVtZW50LHM9ci5vcHRpb25zLG89ci5fcmV2ZXJzZSxhPVwidmVydGljYWxcIj09PXIuX2RpcmVjdGlvbj9ZOlgsYz1uWzBdLnN0eWxlW2FdLGw9bi5kYXRhKGEpLGQ9cGFyc2VGbG9hdChsfHxjKSx1PUIobi5jc3MoYSxLKVthXSgpKTt0Lm92ZXJmbG93PVosZD1zJiZzLnJlc2V0P3V8fGQ6ZHx8dSxpW2FdPShvPzA6ZCkrRyx0W2FdPShvP2Q6MCkrRyxsPT09ZSYmbi5kYXRhKGEsYyl9LHNob3VsZEhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmV2ZXJzZX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5lbGVtZW50LGk9XCJ2ZXJ0aWNhbFwiPT09dC5fZGlyZWN0aW9uP1k6WCxyPWUuZGF0YShpKTtyIT1LJiZyIT09VXx8c2V0VGltZW91dChmdW5jdGlvbigpe2UuY3NzKGksSykuY3NzKGkpfSwwKX19KSx4PXtwb3NpdGlvbjpcImFic29sdXRlXCIsbWFyZ2luTGVmdDowLG1hcmdpblRvcDowLHNjYWxlOjF9LGwoXCJ0cmFuc2ZlclwiLHtpbml0OmZ1bmN0aW9uKHQsZSl7dGhpcy5lbGVtZW50PXQsdGhpcy5vcHRpb25zPXt0YXJnZXQ6ZX0sdGhpcy5yZXN0b3JlPVtdfSxzZXR1cDpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KX0scHJlcGFyZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMscj1pLmVsZW1lbnQsbj1ULmJveChyKSxzPVQuYm94KGkub3B0aW9ucy50YXJnZXQpLG89YShyLFwic2NhbGVcIiksYz1ULmZpbGxTY2FsZShzLG4pLGw9VC50cmFuc2Zvcm1PcmlnaW4ocyxuKTtQKHQseCksZS5zY2FsZT0xLHIuY3NzKGF0LFwic2NhbGUoMSlcIikuY3NzKGF0KSxyLmNzcyhhdCxcInNjYWxlKFwiK28rXCIpXCIpLHQudG9wPW4udG9wLHQubGVmdD1uLmxlZnQsdC50cmFuc2Zvcm1PcmlnaW49bC54K0crXCIgXCIrbC55K0csaS5fcmV2ZXJzZT90LnNjYWxlPWM6ZS5zY2FsZT1jfX0pLF89e3RvcDpcInJlY3QoYXV0byBhdXRvICRzaXplIGF1dG8pXCIsYm90dG9tOlwicmVjdCgkc2l6ZSBhdXRvIGF1dG8gYXV0bylcIixsZWZ0OlwicmVjdChhdXRvICRzaXplIGF1dG8gYXV0bylcIixyaWdodDpcInJlY3QoYXV0byBhdXRvIGF1dG8gJHNpemUpXCJ9LGc9e3RvcDp7c3RhcnQ6XCJyb3RhdGV4KDBkZWcpXCIsZW5kOlwicm90YXRleCgxODBkZWcpXCJ9LGJvdHRvbTp7c3RhcnQ6XCJyb3RhdGV4KC0xODBkZWcpXCIsZW5kOlwicm90YXRleCgwZGVnKVwifSxsZWZ0OntzdGFydDpcInJvdGF0ZXkoMGRlZylcIixlbmQ6XCJyb3RhdGV5KC0xODBkZWcpXCJ9LHJpZ2h0OntzdGFydDpcInJvdGF0ZXkoMTgwZGVnKVwiLGVuZDpcInJvdGF0ZXkoMGRlZylcIn19LGwoXCJ0dXJuaW5nUGFnZVwiLHtkaXJlY3Rpb25zOm0saW5pdDpmdW5jdGlvbih0LGUsaSl7aC5wcm90b3R5cGUuaW5pdC5jYWxsKHRoaXMsdCxlKSx0aGlzLl9jb250YWluZXI9aX0scHJlcGFyZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMscj1pLl9yZXZlcnNlLG49cj9mdFtpLl9kaXJlY3Rpb25dLnJldmVyc2U6aS5fZGlyZWN0aW9uLHM9Z1tuXTt0LnpJbmRleD0xLGkuX2NsaXBJbkhhbGYmJih0LmNsaXA9dShpLl9jb250YWluZXIsQy5kaXJlY3Rpb25zW25dLnJldmVyc2UpKSx0W2N0XT1aLGVbYXRdPXV0KyhyP3Muc3RhcnQ6cy5lbmQpLHRbYXRdPXV0KyhyP3MuZW5kOnMuc3RhcnQpfSxzZXR1cDpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lci5hcHBlbmQodGhpcy5lbGVtZW50KX0sZmFjZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZmFjZT10LHRoaXN9LHNob3VsZEhpZGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5fcmV2ZXJzZSxpPXQuX2ZhY2U7cmV0dXJuIGUmJiFpfHwhZSYmaX0sY2xpcEluSGFsZjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY2xpcEluSGFsZj10LHRoaXN9LHRlbXBvcmFyeTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoXCJ0ZW1wLXBhZ2VcIiksdGhpc319KSxsKFwic3RhdGljUGFnZVwiLHtkaXJlY3Rpb25zOm0saW5pdDpmdW5jdGlvbih0LGUsaSl7aC5wcm90b3R5cGUuaW5pdC5jYWxsKHRoaXMsdCxlKSx0aGlzLl9jb250YWluZXI9aX0scmVzdG9yZTpbXCJjbGlwXCJdLHByZXBhcmU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLHI9aS5fcmV2ZXJzZT9mdFtpLl9kaXJlY3Rpb25dLnJldmVyc2U6aS5fZGlyZWN0aW9uO3QuY2xpcD11KGkuX2NvbnRhaW5lcixyKSx0Lm9wYWNpdHk9Ljk5OSxlLm9wYWNpdHk9MX0sc2hvdWxkSGlkZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10Ll9yZXZlcnNlLGk9dC5fZmFjZTtyZXR1cm4gZSYmIWl8fCFlJiZpfSxmYWNlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9mYWNlPXQsdGhpc319KSxsKFwicGFnZXR1cm5cIix7ZGlyZWN0aW9uczpbXCJob3Jpem9udGFsXCIsXCJ2ZXJ0aWNhbFwiXSxpbml0OmZ1bmN0aW9uKHQsZSxpLHIpe2gucHJvdG90eXBlLmluaXQuY2FsbCh0aGlzLHQsZSksdGhpcy5vcHRpb25zPXt9LHRoaXMub3B0aW9ucy5mYWNlPWksdGhpcy5vcHRpb25zLmJhY2s9cn0sY2hpbGRyZW46ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMsaT1lLm9wdGlvbnMscj1cImhvcml6b250YWxcIj09PWUuX2RpcmVjdGlvbj9cImxlZnRcIjpcInRvcFwiLG49Qy5kaXJlY3Rpb25zW3JdLnJldmVyc2Uscz1lLl9yZXZlcnNlLG89aS5mYWNlLmNsb25lKCEwKS5yZW1vdmVBdHRyKFwiaWRcIiksYT1pLmJhY2suY2xvbmUoITApLnJlbW92ZUF0dHIoXCJpZFwiKSxjPWUuZWxlbWVudDtyZXR1cm4gcyYmKHQ9cixyPW4sbj10KSxbQy5meChpLmZhY2UpLnN0YXRpY1BhZ2UocixjKS5mYWNlKCEwKS5zZXRSZXZlcnNlKHMpLEMuZngoaS5iYWNrKS5zdGF0aWNQYWdlKG4sYykuc2V0UmV2ZXJzZShzKSxDLmZ4KG8pLnR1cm5pbmdQYWdlKHIsYykuZmFjZSghMCkuY2xpcEluSGFsZighMCkudGVtcG9yYXJ5KCkuc2V0UmV2ZXJzZShzKSxDLmZ4KGEpLnR1cm5pbmdQYWdlKG4sYykuY2xpcEluSGFsZighMCkudGVtcG9yYXJ5KCkuc2V0UmV2ZXJzZShzKV19LHByZXBhcmU6ZnVuY3Rpb24odCxlKXt0W2x0XT1kdCx0LnRyYW5zZm9ybVN0eWxlPVwicHJlc2VydmUtM2RcIix0Lm9wYWNpdHk9Ljk5OSxlLm9wYWNpdHk9MX0sdGVhcmRvd246ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuZmluZChcIi50ZW1wLXBhZ2VcIikucmVtb3ZlKCl9fSksbChcImZsaXBcIix7ZGlyZWN0aW9uczpbXCJob3Jpem9udGFsXCIsXCJ2ZXJ0aWNhbFwiXSxpbml0OmZ1bmN0aW9uKHQsZSxpLHIpe2gucHJvdG90eXBlLmluaXQuY2FsbCh0aGlzLHQsZSksdGhpcy5vcHRpb25zPXt9LHRoaXMub3B0aW9ucy5mYWNlPWksdGhpcy5vcHRpb25zLmJhY2s9cn0sY2hpbGRyZW46ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMsaT1lLm9wdGlvbnMscj1cImhvcml6b250YWxcIj09PWUuX2RpcmVjdGlvbj9cImxlZnRcIjpcInRvcFwiLG49Qy5kaXJlY3Rpb25zW3JdLnJldmVyc2Uscz1lLl9yZXZlcnNlLG89ZS5lbGVtZW50O3JldHVybiBzJiYodD1yLHI9bixuPXQpLFtDLmZ4KGkuZmFjZSkudHVybmluZ1BhZ2UocixvKS5mYWNlKCEwKS5zZXRSZXZlcnNlKHMpLEMuZngoaS5iYWNrKS50dXJuaW5nUGFnZShuLG8pLnNldFJldmVyc2UocyldfSxwcmVwYXJlOmZ1bmN0aW9uKHQpe3RbbHRdPWR0LHQudHJhbnNmb3JtU3R5bGU9XCJwcmVzZXJ2ZS0zZFwifX0pLHk9IUUubW9iaWxlT1MuYW5kcm9pZCxrPVwiLmttLXRvdWNoLXNjcm9sbGJhciwgLmttLWFjdGlvbnNoZWV0LXdyYXBwZXJcIixsKFwicmVwbGFjZVwiLHtfYmVmb3JlOnQubm9vcCxfYWZ0ZXI6dC5ub29wLGluaXQ6ZnVuY3Rpb24oZSxpLHIpe2gucHJvdG90eXBlLmluaXQuY2FsbCh0aGlzLGUpLHRoaXMuX3ByZXZpb3VzPXQoaSksdGhpcy5fdHJhbnNpdGlvbkNsYXNzPXJ9LGR1cmF0aW9uOmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoXCJUaGUgcmVwbGFjZSBlZmZlY3QgZG9lcyBub3Qgc3VwcG9ydCBkdXJhdGlvbiBzZXR0aW5nOyB0aGUgZWZmZWN0IGR1cmF0aW9uIG1heSBiZSBjdXN0b21pemVkIHRocm91Z2ggdGhlIHRyYW5zaXRpb24gY2xhc3MgcnVsZVwiKX0sYmVmb3JlVHJhbnNpdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYmVmb3JlPXQsdGhpc30sYWZ0ZXJUcmFuc2l0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZnRlcj10LHRoaXN9LF9ib3RoOmZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5hZGQodGhpcy5fZWxlbWVudCkuYWRkKHRoaXMuX3ByZXZpb3VzKX0sX2NvbnRhaW5lckNsYXNzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGlyZWN0aW9uLGU9XCJrLWZ4IGstZngtc3RhcnQgay1meC1cIit0aGlzLl90cmFuc2l0aW9uQ2xhc3M7cmV0dXJuIHQmJihlKz1cIiBrLWZ4LVwiK3QpLHRoaXMuX3JldmVyc2UmJihlKz1cIiBrLWZ4LXJldmVyc2VcIiksZX0sY29tcGxldGU6ZnVuY3Rpb24oZSl7aWYoISghdGhpcy5kZWZlcnJlZHx8ZSYmdChlLnRhcmdldCkuaXMoaykpKXt2YXIgaT10aGlzLmNvbnRhaW5lcjtpLnJlbW92ZUNsYXNzKFwiay1meC1lbmRcIikucmVtb3ZlQ2xhc3ModGhpcy5fY29udGFpbmVyQ2xhc3MoKSkub2ZmKEQuZXZlbnQsdGhpcy5jb21wbGV0ZVByb3h5KSx0aGlzLl9wcmV2aW91cy5oaWRlKCkucmVtb3ZlQ2xhc3MoXCJrLWZ4LWN1cnJlbnRcIiksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKFwiay1meC1uZXh0XCIpLHkmJmkuY3NzKGl0LFwiXCIpLHRoaXMuaXNBYnNvbHV0ZXx8dGhpcy5fYm90aCgpLmNzcyhudCxcIlwiKSx0aGlzLmRlZmVycmVkLnJlc29sdmUoKSxkZWxldGUgdGhpcy5kZWZlcnJlZH19LHJ1bjpmdW5jdGlvbigpe2lmKHRoaXMuX2FkZGl0aW9uYWxFZmZlY3RzJiZ0aGlzLl9hZGRpdGlvbmFsRWZmZWN0c1swXSlyZXR1cm4gdGhpcy5jb21wb3NpdGVSdW4oKTt2YXIgZSxpPXRoaXMscj1pLmVsZW1lbnQsbj1pLl9wcmV2aW91cyxzPXIucGFyZW50cygpLmZpbHRlcihuLnBhcmVudHMoKSkuZmlyc3QoKSxvPWkuX2JvdGgoKSxhPXQuRGVmZXJyZWQoKSxjPXIuY3NzKG50KTtyZXR1cm4gcy5sZW5ndGh8fChzPXIucGFyZW50KCkpLHRoaXMuY29udGFpbmVyPXMsdGhpcy5kZWZlcnJlZD1hLHRoaXMuaXNBYnNvbHV0ZT1cImFic29sdXRlXCI9PWMsdGhpcy5pc0Fic29sdXRlfHxvLmNzcyhudCxcImFic29sdXRlXCIpLHkmJihlPXMuY3NzKGl0KSxzLmNzcyhpdCxcImhpZGRlblwiKSksRD8oci5hZGRDbGFzcyhcImstZngtaGlkZGVuXCIpLHMuYWRkQ2xhc3ModGhpcy5fY29udGFpbmVyQ2xhc3MoKSksdGhpcy5jb21wbGV0ZVByb3h5PXQucHJveHkodGhpcyxcImNvbXBsZXRlXCIpLHMub24oRC5ldmVudCx0aGlzLmNvbXBsZXRlUHJveHkpLEMuYW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtyLnJlbW92ZUNsYXNzKFwiay1meC1oaWRkZW5cIikuYWRkQ2xhc3MoXCJrLWZ4LW5leHRcIiksbi5jc3MoXCJkaXNwbGF5XCIsXCJcIikuYWRkQ2xhc3MoXCJrLWZ4LWN1cnJlbnRcIiksaS5fYmVmb3JlKG4sciksQy5hbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3MucmVtb3ZlQ2xhc3MoXCJrLWZ4LXN0YXJ0XCIpLmFkZENsYXNzKFwiay1meC1lbmRcIiksaS5fYWZ0ZXIobixyKX0pfSkpOnRoaXMuY29tcGxldGUoKSxhLnByb21pc2UoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuY29tcGxldGUoKX19KSxiPUMuQ2xhc3MuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Ll90aWNrUHJveHk9eih0Ll90aWNrLHQpLHQuX3N0YXJ0ZWQ9ITF9LHRpY2s6dC5ub29wLGRvbmU6dC5ub29wLG9uRW5kOnQubm9vcCxvbkNhbmNlbDp0Lm5vb3Asc3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQoKSYmKHRoaXMuZG9uZSgpP3RoaXMub25FbmQoKToodGhpcy5fc3RhcnRlZD0hMCxDLmFuaW1hdGlvbkZyYW1lKHRoaXMuX3RpY2tQcm94eSkpKX0sZW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiEwfSxjYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLl9zdGFydGVkPSExLHRoaXMub25DYW5jZWwoKX0sX3RpY2s6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QuX3N0YXJ0ZWQmJih0LnRpY2soKSx0LmRvbmUoKT8odC5fc3RhcnRlZD0hMSx0Lm9uRW5kKCkpOkMuYW5pbWF0aW9uRnJhbWUodC5fdGlja1Byb3h5KSl9fSksdz1iLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzO1AoZSx0KSxiLmZuLmluaXQuY2FsbChlKX0sZG9uZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRpbWVQYXNzZWQoKT49dGhpcy5kdXJhdGlvbn0sdGltZVBhc3NlZDpmdW5jdGlvbigpe3JldHVybiBNYXRoLm1pbih0aGlzLmR1cmF0aW9uLG5ldyBEYXRlLXRoaXMuc3RhcnREYXRlKX0sbW92ZVRvOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT1lLm1vdmFibGU7ZS5pbml0aWFsPWlbZS5heGlzXSxlLmRlbHRhPXQubG9jYXRpb24tZS5pbml0aWFsLGUuZHVyYXRpb249XCJudW1iZXJcIj09dHlwZW9mIHQuZHVyYXRpb24/dC5kdXJhdGlvbjozMDAsZS50aWNrPWUuX2Vhc2VQcm94eSh0LmVhc2UpLGUuc3RhcnREYXRlPW5ldyBEYXRlLGUuc3RhcnQoKX0sX2Vhc2VQcm94eTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBmdW5jdGlvbigpe2UubW92YWJsZS5tb3ZlQXhpcyhlLmF4aXMsdChlLnRpbWVQYXNzZWQoKSxlLmluaXRpYWwsZS5kZWx0YSxlLmR1cmF0aW9uKSl9fX0pLFAodyx7ZWFzZU91dEV4cG86ZnVuY3Rpb24odCxlLGkscil7cmV0dXJuIHQ9PXI/ZStpOmkqKC1NYXRoLnBvdygyLC0xMCp0L3IpKzEpK2V9LGVhc2VPdXRCYWNrOmZ1bmN0aW9uKHQsZSxpLHIsbil7cmV0dXJuIG49MS43MDE1OCxpKigodD10L3ItMSkqdCooKG4rMSkqdCtuKSsxKStlfX0pLFQuQW5pbWF0aW9uPWIsVC5UcmFuc2l0aW9uPXcsVC5jcmVhdGVFZmZlY3Q9bCxULmJveD1mdW5jdGlvbihlKXtlPXQoZSk7dmFyIGk9ZS5vZmZzZXQoKTtyZXR1cm4gaS53aWR0aD1DLl9vdXRlcldpZHRoKGUpLGkuaGVpZ2h0PUMuX291dGVySGVpZ2h0KGUpLGl9LFQudHJhbnNmb3JtT3JpZ2luPWZ1bmN0aW9uKHQsZSl7dmFyIGk9KHQubGVmdC1lLmxlZnQpKmUud2lkdGgvKGUud2lkdGgtdC53aWR0aCkscj0odC50b3AtZS50b3ApKmUuaGVpZ2h0LyhlLmhlaWdodC10LmhlaWdodCk7cmV0dXJue3g6aXNOYU4oaSk/MDppLHk6aXNOYU4ocik/MDpyfX0sVC5maWxsU2NhbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5taW4odC53aWR0aC9lLndpZHRoLHQuaGVpZ2h0L2UuaGVpZ2h0KX0sVC5maXRTY2FsZT1mdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LndpZHRoL2Uud2lkdGgsdC5oZWlnaHQvZS5oZWlnaHQpfX0od2luZG93LmtlbmRvLmpRdWVyeSksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKHQsZSxpKXsoaXx8ZSkoKX0pOzshZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcImtlbmRvLmRyYWdhbmRkcm9wLm1pblwiLFtcImtlbmRvLmNvcmUubWluXCIsXCJrZW5kby51c2VyZXZlbnRzLm1pblwiXSx0KX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKGUsbil7dHJ5e3JldHVybiB0LmNvbnRhaW5zKGUsbil8fGU9PW59Y2F0Y2gocil7cmV0dXJuITF9fWZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gcGFyc2VJbnQodC5jc3MoZSksMTApfHwwfWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgodCxlLm1pbiksZS5tYXgpfWZ1bmN0aW9uIG8odCxlKXt2YXIgbj1EKHQpLGk9Xy5fb3V0ZXJXaWR0aCxvPV8uX291dGVySGVpZ2h0LGE9bi5sZWZ0K3IodCxcImJvcmRlckxlZnRXaWR0aFwiKStyKHQsXCJwYWRkaW5nTGVmdFwiKSxzPW4udG9wK3IodCxcImJvcmRlclRvcFdpZHRoXCIpK3IodCxcInBhZGRpbmdUb3BcIiksbD1hK3Qud2lkdGgoKS1pKGUsITApLGM9cyt0LmhlaWdodCgpLW8oZSwhMCk7cmV0dXJue3g6e21pbjphLG1heDpsfSx5OnttaW46cyxtYXg6Y319fWZ1bmN0aW9uIGEobixyLGkpe2Zvcih2YXIgbyxhLHM9MCxsPXImJnIubGVuZ3RoLGM9aSYmaS5sZW5ndGg7biYmbi5wYXJlbnROb2RlOyl7Zm9yKHM9MDtzPGw7cysrKWlmKG89cltzXSxvLmVsZW1lbnRbMF09PT1uKXJldHVybnt0YXJnZXQ6byx0YXJnZXRFbGVtZW50Om59O2ZvcihzPTA7czxjO3MrKylpZihhPWlbc10sdC5jb250YWlucyhhLmVsZW1lbnRbMF0sbikmJngubWF0Y2hlc1NlbGVjdG9yLmNhbGwobixhLm9wdGlvbnMuZmlsdGVyKSlyZXR1cm57dGFyZ2V0OmEsdGFyZ2V0RWxlbWVudDpufTtuPW4ucGFyZW50Tm9kZX1yZXR1cm4gZX1mdW5jdGlvbiBzKHQsZSl7dmFyIG4scj1lLm9wdGlvbnMuZ3JvdXAsaT10W3JdO2lmKFQuZm4uZGVzdHJveS5jYWxsKGUpLGkubGVuZ3RoPjEpe2ZvcihuPTA7bjxpLmxlbmd0aDtuKyspaWYoaVtuXT09ZSl7aS5zcGxpY2UobiwxKTticmVha319ZWxzZSBpLmxlbmd0aD0wLGRlbGV0ZSB0W3JdfWZ1bmN0aW9uIGwodCl7dmFyIGUsbixyLGk9YygpWzBdO3JldHVybiB0WzBdPT09aT8obj1pLnNjcm9sbFRvcCxyPWkuc2Nyb2xsTGVmdCx7dG9wOm4sbGVmdDpyLGJvdHRvbTpuK2IuaGVpZ2h0KCkscmlnaHQ6citiLndpZHRoKCl9KTooZT10Lm9mZnNldCgpLGUuYm90dG9tPWUudG9wK3QuaGVpZ2h0KCksZS5yaWdodD1lLmxlZnQrdC53aWR0aCgpLGUpfWZ1bmN0aW9uIGMoKXtyZXR1cm4gdChfLnN1cHBvcnQuYnJvd3Nlci5jaHJvbWU/eS5ib2R5OnkuZG9jdW1lbnRFbGVtZW50KX1mdW5jdGlvbiB1KGUpe3ZhciBuLHI9YygpO2lmKCFlfHxlPT09eS5ib2R5fHxlPT09eS5kb2N1bWVudEVsZW1lbnQpcmV0dXJuIHI7Zm9yKG49dChlKVswXTtuJiYhXy5pc1Njcm9sbGFibGUobikmJm4hPT15LmJvZHk7KW49bi5wYXJlbnROb2RlO3JldHVybiBuPT09eS5ib2R5P3I6dChuKX1mdW5jdGlvbiBoKHQsZSxuKXt2YXIgcj17eDowLHk6MH0saT01MDtyZXR1cm4gdC1uLmxlZnQ8aT9yLng9LShpLSh0LW4ubGVmdCkpOm4ucmlnaHQtdDxpJiYoci54PWktKG4ucmlnaHQtdCkpLGUtbi50b3A8aT9yLnk9LShpLShlLW4udG9wKSk6bi5ib3R0b20tZTxpJiYoci55PWktKG4uYm90dG9tLWUpKSxyfXZhciBkLGYscCxnLHYsbSxfPXdpbmRvdy5rZW5kbyx4PV8uc3VwcG9ydCx5PXdpbmRvdy5kb2N1bWVudCxiPXQod2luZG93KSxFPV8uQ2xhc3MsVD1fLnVpLldpZGdldCxTPV8uT2JzZXJ2YWJsZSxNPV8uVXNlckV2ZW50cyx3PXQucHJveHksQz10LmV4dGVuZCxEPV8uZ2V0T2Zmc2V0LE89e30saz17fSxJPXt9LEg9Xy5lbGVtZW50VW5kZXJDdXJzb3IsVz1cImtleXVwXCIsej1cImNoYW5nZVwiLFA9XCJkcmFnc3RhcnRcIixVPVwiaG9sZFwiLEw9XCJkcmFnXCIsQT1cImRyYWdlbmRcIixOPVwiZHJhZ2NhbmNlbFwiLFY9XCJoaW50RGVzdHJveWVkXCIsQj1cImRyYWdlbnRlclwiLCQ9XCJkcmFnbGVhdmVcIixGPVwiZHJvcFwiLGo9Uy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSxuKXt2YXIgcj10aGlzLGk9ZVswXTtyLmNhcHR1cmU9ITEsaS5hZGRFdmVudExpc3RlbmVyPyh0LmVhY2goXy5ldmVudE1hcC5kb3duLnNwbGl0KFwiIFwiKSxmdW5jdGlvbigpe2kuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLHcoci5fcHJlc3MsciksITApfSksdC5lYWNoKF8uZXZlbnRNYXAudXAuc3BsaXQoXCIgXCIpLGZ1bmN0aW9uKCl7aS5hZGRFdmVudExpc3RlbmVyKHRoaXMsdyhyLl9yZWxlYXNlLHIpLCEwKX0pKToodC5lYWNoKF8uZXZlbnRNYXAuZG93bi5zcGxpdChcIiBcIiksZnVuY3Rpb24oKXtpLmF0dGFjaEV2ZW50KHRoaXMsdyhyLl9wcmVzcyxyKSl9KSx0LmVhY2goXy5ldmVudE1hcC51cC5zcGxpdChcIiBcIiksZnVuY3Rpb24oKXtpLmF0dGFjaEV2ZW50KHRoaXMsdyhyLl9yZWxlYXNlLHIpKX0pKSxTLmZuLmluaXQuY2FsbChyKSxyLmJpbmQoW1wicHJlc3NcIixcInJlbGVhc2VcIl0sbnx8e30pfSxjYXB0dXJlTmV4dDpmdW5jdGlvbigpe3RoaXMuY2FwdHVyZT0hMH0sY2FuY2VsQ2FwdHVyZTpmdW5jdGlvbigpe3RoaXMuY2FwdHVyZT0hMX0sX3ByZXNzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZS50cmlnZ2VyKFwicHJlc3NcIiksZS5jYXB0dXJlJiZ0LnByZXZlbnREZWZhdWx0KCl9LF9yZWxlYXNlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZS50cmlnZ2VyKFwicmVsZWFzZVwiKSxlLmNhcHR1cmUmJih0LnByZXZlbnREZWZhdWx0KCksZS5jYW5jZWxDYXB0dXJlKCkpfX0pLEc9Uy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztTLmZuLmluaXQuY2FsbChuKSxuLmZvcmNlZEVuYWJsZWQ9ITEsdC5leHRlbmQobixlKSxuLnNjYWxlPTEsbi5ob3Jpem9udGFsPyhuLm1lYXN1cmU9XCJvZmZzZXRXaWR0aFwiLG4uc2Nyb2xsU2l6ZT1cInNjcm9sbFdpZHRoXCIsbi5heGlzPVwieFwiKToobi5tZWFzdXJlPVwib2Zmc2V0SGVpZ2h0XCIsbi5zY3JvbGxTaXplPVwic2Nyb2xsSGVpZ2h0XCIsbi5heGlzPVwieVwiKX0sbWFrZVZpcnR1YWw6ZnVuY3Rpb24oKXt0LmV4dGVuZCh0aGlzLHt2aXJ0dWFsOiEwLGZvcmNlZEVuYWJsZWQ6ITAsX3ZpcnR1YWxNaW46MCxfdmlydHVhbE1heDowfSl9LHZpcnR1YWxTaXplOmZ1bmN0aW9uKHQsZSl7dGhpcy5fdmlydHVhbE1pbj09PXQmJnRoaXMuX3ZpcnR1YWxNYXg9PT1lfHwodGhpcy5fdmlydHVhbE1pbj10LHRoaXMuX3ZpcnR1YWxNYXg9ZSx0aGlzLnVwZGF0ZSgpKX0sb3V0T2ZCb3VuZHM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+dGhpcy5tYXh8fHQ8dGhpcy5taW59LGZvcmNlRW5hYmxlZDpmdW5jdGlvbigpe3RoaXMuZm9yY2VkRW5hYmxlZD0hMH0sZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRhaW5lclswXVt0aGlzLm1lYXN1cmVdfSxnZXRUb3RhbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnRbMF1bdGhpcy5zY3JvbGxTaXplXX0scmVzY2FsZTpmdW5jdGlvbih0KXt0aGlzLnNjYWxlPXR9LHVwZGF0ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZS52aXJ0dWFsP2UuX3ZpcnR1YWxNYXg6ZS5nZXRUb3RhbCgpLHI9biplLnNjYWxlLGk9ZS5nZXRTaXplKCk7KDAhPT1ufHxlLmZvcmNlZEVuYWJsZWQpJiYoZS5tYXg9ZS52aXJ0dWFsPy1lLl92aXJ0dWFsTWluOjAsZS5zaXplPWksZS50b3RhbD1yLGUubWluPU1hdGgubWluKGUubWF4LGktciksZS5taW5TY2FsZT1pL24sZS5jZW50ZXJPZmZzZXQ9KHItaSkvMixlLmVuYWJsZWQ9ZS5mb3JjZWRFbmFibGVkfHxyPmksdHx8ZS50cmlnZ2VyKHosZSkpfX0pLFE9Uy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztTLmZuLmluaXQuY2FsbChlKSxlLng9bmV3IEcoQyh7aG9yaXpvbnRhbDohMH0sdCkpLGUueT1uZXcgRyhDKHtob3Jpem9udGFsOiExfSx0KSksZS5jb250YWluZXI9dC5jb250YWluZXIsZS5mb3JjZWRNaW5TY2FsZT10Lm1pblNjYWxlLGUubWF4U2NhbGU9dC5tYXhTY2FsZXx8MTAwLGUuYmluZCh6LHQpfSxyZXNjYWxlOmZ1bmN0aW9uKHQpe3RoaXMueC5yZXNjYWxlKHQpLHRoaXMueS5yZXNjYWxlKHQpLHRoaXMucmVmcmVzaCgpfSxjZW50ZXJDb29yZGluYXRlczpmdW5jdGlvbigpe3JldHVybnt4Ok1hdGgubWluKDAsLXRoaXMueC5jZW50ZXJPZmZzZXQpLHk6TWF0aC5taW4oMCwtdGhpcy55LmNlbnRlck9mZnNldCl9fSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0LngudXBkYXRlKCksdC55LnVwZGF0ZSgpLHQuZW5hYmxlZD10LnguZW5hYmxlZHx8dC55LmVuYWJsZWQsdC5taW5TY2FsZT10LmZvcmNlZE1pblNjYWxlfHxNYXRoLm1pbih0LngubWluU2NhbGUsdC55Lm1pblNjYWxlKSx0LmZpdFNjYWxlPU1hdGgubWF4KHQueC5taW5TY2FsZSx0LnkubWluU2NhbGUpLHQudHJpZ2dlcih6KX19KSxxPVMuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7QyhlLHQpLFMuZm4uaW5pdC5jYWxsKGUpfSxvdXRPZkJvdW5kczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRpbWVuc2lvbi5vdXRPZkJvdW5kcyh0aGlzLm1vdmFibGVbdGhpcy5heGlzXSl9LGRyYWdNb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1lLmRpbWVuc2lvbixyPWUuYXhpcyxpPWUubW92YWJsZSxvPWlbcl0rdDtuLmVuYWJsZWQmJigobzxuLm1pbiYmdDwwfHxvPm4ubWF4JiZ0PjApJiYodCo9ZS5yZXNpc3RhbmNlKSxpLnRyYW5zbGF0ZUF4aXMocix0KSxlLnRyaWdnZXIoeixlKSl9fSksSj1FLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlKXt2YXIgbixyLGksbyxhPXRoaXM7QyhhLHtlbGFzdGljOiEwfSxlKSxpPWEuZWxhc3RpYz8uNTowLG89YS5tb3ZhYmxlLGEueD1uPW5ldyBxKHtheGlzOlwieFwiLGRpbWVuc2lvbjphLmRpbWVuc2lvbnMueCxyZXNpc3RhbmNlOmksbW92YWJsZTpvfSksYS55PXI9bmV3IHEoe2F4aXM6XCJ5XCIsZGltZW5zaW9uOmEuZGltZW5zaW9ucy55LHJlc2lzdGFuY2U6aSxtb3ZhYmxlOm99KSxhLnVzZXJFdmVudHMuYmluZChbXCJwcmVzc1wiLFwibW92ZVwiLFwiZW5kXCIsXCJnZXN0dXJlc3RhcnRcIixcImdlc3R1cmVjaGFuZ2VcIl0se2dlc3R1cmVzdGFydDpmdW5jdGlvbih0KXthLmdlc3R1cmU9dCxhLm9mZnNldD1hLmRpbWVuc2lvbnMuY29udGFpbmVyLm9mZnNldCgpfSxwcmVzczpmdW5jdGlvbihlKXt0KGUuZXZlbnQudGFyZ2V0KS5jbG9zZXN0KFwiYVwiKS5pcyhcIltkYXRhLW5hdmlnYXRlLW9uLXByZXNzPXRydWVdXCIpJiZlLnNlbmRlci5jYW5jZWwoKX0sZ2VzdHVyZWNoYW5nZTpmdW5jdGlvbih0KXt2YXIgZSxpLHMsbD1hLmdlc3R1cmUsYz1sLmNlbnRlcix1PXQuY2VudGVyLGg9dC5kaXN0YW5jZS9sLmRpc3RhbmNlLGQ9YS5kaW1lbnNpb25zLm1pblNjYWxlLGY9YS5kaW1lbnNpb25zLm1heFNjYWxlO28uc2NhbGU8PWQmJmg8MSYmKGgrPS44KigxLWgpKSxvLnNjYWxlKmg+PWYmJihoPWYvby5zY2FsZSksaT1vLngrYS5vZmZzZXQubGVmdCxzPW8ueSthLm9mZnNldC50b3AsZT17eDooaS1jLngpKmgrdS54LWkseToocy1jLnkpKmgrdS55LXN9LG8uc2NhbGVXaXRoKGgpLG4uZHJhZ01vdmUoZS54KSxyLmRyYWdNb3ZlKGUueSksYS5kaW1lbnNpb25zLnJlc2NhbGUoby5zY2FsZSksYS5nZXN0dXJlPXQsdC5wcmV2ZW50RGVmYXVsdCgpfSxtb3ZlOmZ1bmN0aW9uKHQpe3QuZXZlbnQudGFyZ2V0LnRhZ05hbWUubWF0Y2goL3RleHRhcmVhfGlucHV0L2kpfHwobi5kaW1lbnNpb24uZW5hYmxlZHx8ci5kaW1lbnNpb24uZW5hYmxlZD8obi5kcmFnTW92ZSh0LnguZGVsdGEpLHIuZHJhZ01vdmUodC55LmRlbHRhKSx0LnByZXZlbnREZWZhdWx0KCkpOnQudG91Y2guc2tpcCgpKX0sZW5kOmZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKX19KX19KSxLPXgudHJhbnNpdGlvbnMucHJlZml4K1wiVHJhbnNmb3JtXCI7Zj14Lmhhc0hXM0Q/ZnVuY3Rpb24odCxlLG4pe3JldHVyblwidHJhbnNsYXRlM2QoXCIrdCtcInB4LFwiK2UrXCJweCwwKSBzY2FsZShcIituK1wiKVwifTpmdW5jdGlvbih0LGUsbil7cmV0dXJuXCJ0cmFuc2xhdGUoXCIrdCtcInB4LFwiK2UrXCJweCkgc2NhbGUoXCIrbitcIilcIn0scD1TLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlKXt2YXIgbj10aGlzO1MuZm4uaW5pdC5jYWxsKG4pLG4uZWxlbWVudD10KGUpLG4uZWxlbWVudFswXS5zdHlsZS53ZWJraXRUcmFuc2Zvcm1PcmlnaW49XCJsZWZ0IHRvcFwiLG4ueD0wLG4ueT0wLG4uc2NhbGU9MSxuLl9zYXZlQ29vcmRpbmF0ZXMoZihuLngsbi55LG4uc2NhbGUpKX0sdHJhbnNsYXRlQXhpczpmdW5jdGlvbih0LGUpe3RoaXNbdF0rPWUsdGhpcy5yZWZyZXNoKCl9LHNjYWxlVG86ZnVuY3Rpb24odCl7dGhpcy5zY2FsZT10LHRoaXMucmVmcmVzaCgpfSxzY2FsZVdpdGg6ZnVuY3Rpb24odCl7dGhpcy5zY2FsZSo9dCx0aGlzLnJlZnJlc2goKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQpe3RoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXMucmVmcmVzaCgpfSxtb3ZlQXhpczpmdW5jdGlvbih0LGUpe3RoaXNbdF09ZSx0aGlzLnJlZnJlc2goKX0sbW92ZVRvOmZ1bmN0aW9uKHQpe0ModGhpcyx0KSx0aGlzLnJlZnJlc2goKX0scmVmcmVzaDpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcyxuPWUueCxyPWUueTtlLnJvdW5kJiYobj1NYXRoLnJvdW5kKG4pLHI9TWF0aC5yb3VuZChyKSksdD1mKG4scixlLnNjYWxlKSx0IT1lLmNvb3JkaW5hdGVzJiYoXy5zdXBwb3J0LmJyb3dzZXIubXNpZSYmXy5zdXBwb3J0LmJyb3dzZXIudmVyc2lvbjwxMD8oZS5lbGVtZW50WzBdLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixlLmVsZW1lbnRbMF0uc3R5bGUubGVmdD1lLngrXCJweFwiLGUuZWxlbWVudFswXS5zdHlsZS50b3A9ZS55K1wicHhcIik6ZS5lbGVtZW50WzBdLnN0eWxlW0tdPXQsZS5fc2F2ZUNvb3JkaW5hdGVzKHQpLGUudHJpZ2dlcih6KSl9LF9zYXZlQ29vcmRpbmF0ZXM6ZnVuY3Rpb24odCl7dGhpcy5jb29yZGluYXRlcz10fX0pLGc9VC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt2YXIgbixyPXRoaXM7VC5mbi5pbml0LmNhbGwocix0LGUpLG49ci5vcHRpb25zLmdyb3VwLG4gaW4gaz9rW25dLnB1c2gocik6a1tuXT1bcl19LGV2ZW50czpbQiwkLEZdLG9wdGlvbnM6e25hbWU6XCJEcm9wVGFyZ2V0XCIsZ3JvdXA6XCJkZWZhdWx0XCJ9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtzKGssdGhpcyl9LF90cmlnZ2VyOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxyPU9bbi5vcHRpb25zLmdyb3VwXTtpZihyKXJldHVybiBuLnRyaWdnZXIodCxDKHt9LGUuZXZlbnQse2RyYWdnYWJsZTpyLGRyb3BUYXJnZXQ6ZS5kcm9wVGFyZ2V0fSkpfSxfb3ZlcjpmdW5jdGlvbih0KXt0aGlzLl90cmlnZ2VyKEIsdCl9LF9vdXQ6ZnVuY3Rpb24odCl7dGhpcy5fdHJpZ2dlcigkLHQpfSxfZHJvcDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49T1tlLm9wdGlvbnMuZ3JvdXBdO24mJihuLmRyb3BwZWQ9IWUuX3RyaWdnZXIoRix0KSl9fSksZy5kZXN0cm95R3JvdXA9ZnVuY3Rpb24odCl7dmFyIGUsbj1rW3RdfHxJW3RdO2lmKG4pe2ZvcihlPTA7ZTxuLmxlbmd0aDtlKyspVC5mbi5kZXN0cm95LmNhbGwobltlXSk7bi5sZW5ndGg9MCxkZWxldGUga1t0XSxkZWxldGUgSVt0XX19LGcuX2NhY2hlPWssdj1nLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3ZhciBuLHI9dGhpcztULmZuLmluaXQuY2FsbChyLHQsZSksbj1yLm9wdGlvbnMuZ3JvdXAsbiBpbiBJP0lbbl0ucHVzaChyKTpJW25dPVtyXX0sZGVzdHJveTpmdW5jdGlvbigpe3MoSSx0aGlzKX0sb3B0aW9uczp7bmFtZTpcIkRyb3BUYXJnZXRBcmVhXCIsZ3JvdXA6XCJkZWZhdWx0XCIsZmlsdGVyOm51bGx9fSksbT1ULmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7VC5mbi5pbml0LmNhbGwobix0LGUpLG4uX2FjdGl2YXRlZD0hMSxuLnVzZXJFdmVudHM9bmV3IE0obi5lbGVtZW50LHtnbG9iYWw6ITAsYWxsb3dTZWxlY3Rpb246ITAsZmlsdGVyOm4ub3B0aW9ucy5maWx0ZXIsdGhyZXNob2xkOm4ub3B0aW9ucy5kaXN0YW5jZSxzdGFydDp3KG4uX3N0YXJ0LG4pLGhvbGQ6dyhuLl9ob2xkLG4pLG1vdmU6dyhuLl9kcmFnLG4pLGVuZDp3KG4uX2VuZCxuKSxjYW5jZWw6dyhuLl9jYW5jZWwsbiksc2VsZWN0Oncobi5fc2VsZWN0LG4pfSksbi5fYWZ0ZXJFbmRIYW5kbGVyPXcobi5fYWZ0ZXJFbmQsbiksbi5fY2FwdHVyZUVzY2FwZT13KG4uX2NhcHR1cmVFc2NhcGUsbil9LGV2ZW50czpbVSxQLEwsQSxOLFZdLG9wdGlvbnM6e25hbWU6XCJEcmFnZ2FibGVcIixkaXN0YW5jZTpfLnN1cHBvcnQudG91Y2g/MDo1LGdyb3VwOlwiZGVmYXVsdFwiLGN1cnNvck9mZnNldDpudWxsLGF4aXM6bnVsbCxjb250YWluZXI6bnVsbCxmaWx0ZXI6bnVsbCxpZ25vcmU6bnVsbCxob2xkVG9EcmFnOiExLGF1dG9TY3JvbGw6ITEsZHJvcHBlZDohMX0sY2FuY2VsSG9sZDpmdW5jdGlvbigpe3RoaXMuX2FjdGl2YXRlZD0hMX0sX2NhcHR1cmVFc2NhcGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LmtleUNvZGU9PT1fLmtleXMuRVNDJiYoZS5fdHJpZ2dlcihOLHtldmVudDp0fSksZS51c2VyRXZlbnRzLmNhbmNlbCgpKX0sX3VwZGF0ZUhpbnQ6ZnVuY3Rpb24oZSl7dmFyIG4scj10aGlzLG89ci5vcHRpb25zLGE9ci5ib3VuZGFyaWVzLHM9by5heGlzLGw9ci5vcHRpb25zLmN1cnNvck9mZnNldDtsP249e2xlZnQ6ZS54LmxvY2F0aW9uK2wubGVmdCx0b3A6ZS55LmxvY2F0aW9uK2wudG9wfTooci5oaW50T2Zmc2V0LmxlZnQrPWUueC5kZWx0YSxyLmhpbnRPZmZzZXQudG9wKz1lLnkuZGVsdGEsbj10LmV4dGVuZCh7fSxyLmhpbnRPZmZzZXQpKSxhJiYobi50b3A9aShuLnRvcCxhLnkpLG4ubGVmdD1pKG4ubGVmdCxhLngpKSxcInhcIj09PXM/ZGVsZXRlIG4udG9wOlwieVwiPT09cyYmZGVsZXRlIG4ubGVmdCxyLmhpbnQuY3NzKG4pfSxfc2hvdWxkSWdub3JlVGFyZ2V0OmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMub3B0aW9ucy5pZ25vcmU7cmV0dXJuIG4mJnQoZSkuaXMobil9LF9zZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5fc2hvdWxkSWdub3JlVGFyZ2V0KHQuZXZlbnQudGFyZ2V0KXx8dC5wcmV2ZW50RGVmYXVsdCgpfSxfc3RhcnQ6ZnVuY3Rpb24obil7dmFyIHIsaT10aGlzLGE9aS5vcHRpb25zLHM9YS5jb250YWluZXIsbD1hLmhpbnQ7cmV0dXJuIHRoaXMuX3Nob3VsZElnbm9yZVRhcmdldChuLnRvdWNoLmluaXRpYWxUb3VjaCl8fGEuaG9sZFRvRHJhZyYmIWkuX2FjdGl2YXRlZD8oaS51c2VyRXZlbnRzLmNhbmNlbCgpLGUpOihpLmN1cnJlbnRUYXJnZXQ9bi50YXJnZXQsaS5jdXJyZW50VGFyZ2V0T2Zmc2V0PUQoaS5jdXJyZW50VGFyZ2V0KSxsJiYoaS5oaW50JiZpLmhpbnQuc3RvcCghMCwhMCkucmVtb3ZlKCksaS5oaW50PV8uaXNGdW5jdGlvbihsKT90KGwuY2FsbChpLGkuY3VycmVudFRhcmdldCkpOmwscj1EKGkuY3VycmVudFRhcmdldCksaS5oaW50T2Zmc2V0PXIsaS5oaW50LmNzcyh7cG9zaXRpb246XCJhYnNvbHV0ZVwiLHpJbmRleDoyZTQsbGVmdDpyLmxlZnQsdG9wOnIudG9wfSkuYXBwZW5kVG8oeS5ib2R5KSxpLmFuZ3VsYXIoXCJjb21waWxlXCIsZnVuY3Rpb24oKXtpLmhpbnQucmVtb3ZlQXR0cihcIm5nLXJlcGVhdFwiKTtmb3IodmFyIGU9dChuLnRhcmdldCk7IWUuZGF0YShcIiQka2VuZG9TY29wZVwiKSYmZS5sZW5ndGg7KWU9ZS5wYXJlbnQoKTtyZXR1cm57ZWxlbWVudHM6aS5oaW50LmdldCgpLHNjb3BlRnJvbTplLmRhdGEoXCIkJGtlbmRvU2NvcGVcIil9fSkpLE9bYS5ncm91cF09aSxpLmRyb3BwZWQ9ITEscyYmKGkuYm91bmRhcmllcz1vKHMsaS5oaW50KSksdCh5KS5vbihXLGkuX2NhcHR1cmVFc2NhcGUpLGkuX3RyaWdnZXIoUCxuKSYmKGkudXNlckV2ZW50cy5jYW5jZWwoKSxpLl9hZnRlckVuZCgpKSxpLnVzZXJFdmVudHMuY2FwdHVyZSgpLGUpfSxfaG9sZDpmdW5jdGlvbih0KXt0aGlzLmN1cnJlbnRUYXJnZXQ9dC50YXJnZXQsdGhpcy5fdHJpZ2dlcihVLHQpP3RoaXMudXNlckV2ZW50cy5jYW5jZWwoKTp0aGlzLl9hY3RpdmF0ZWQ9ITB9LF9kcmFnOmZ1bmN0aW9uKGUpe3ZhciBuLHI7ZS5wcmV2ZW50RGVmYXVsdCgpLG49dGhpcy5fZWxlbWVudFVuZGVyQ3Vyc29yKGUpLHRoaXMub3B0aW9ucy5hdXRvU2Nyb2xsJiZ0aGlzLl9jdXJzb3JFbGVtZW50IT09biYmKHRoaXMuX3Njcm9sbGFibGVQYXJlbnQ9dShuKSx0aGlzLl9jdXJzb3JFbGVtZW50PW4pLHRoaXMuX2xhc3RFdmVudD1lLHRoaXMuX3Byb2Nlc3NNb3ZlbWVudChlLG4pLHRoaXMub3B0aW9ucy5hdXRvU2Nyb2xsJiZ0aGlzLl9zY3JvbGxhYmxlUGFyZW50WzBdJiYocj1oKGUueC5sb2NhdGlvbixlLnkubG9jYXRpb24sbCh0aGlzLl9zY3JvbGxhYmxlUGFyZW50KSksdGhpcy5fc2Nyb2xsQ29tcGVuc3RhdGlvbj10LmV4dGVuZCh7fSx0aGlzLmhpbnRPZmZzZXQpLHRoaXMuX3Njcm9sbFZlbG9jaXR5PXIsMD09PXIueSYmMD09PXIueD8oY2xlYXJJbnRlcnZhbCh0aGlzLl9zY3JvbGxJbnRlcnZhbCksdGhpcy5fc2Nyb2xsSW50ZXJ2YWw9bnVsbCk6dGhpcy5fc2Nyb2xsSW50ZXJ2YWx8fCh0aGlzLl9zY3JvbGxJbnRlcnZhbD1zZXRJbnRlcnZhbCh0LnByb3h5KHRoaXMsXCJfYXV0b1Njcm9sbFwiKSw1MCkpKSx0aGlzLmhpbnQmJnRoaXMuX3VwZGF0ZUhpbnQoZSl9LF9wcm9jZXNzTW92ZW1lbnQ6ZnVuY3Rpb24obixyKXt0aGlzLl93aXRoRHJvcFRhcmdldChyLGZ1bmN0aW9uKHIsaSl7aWYoIXIpcmV0dXJuIGQmJihkLl90cmlnZ2VyKCQsQyhuLHtkcm9wVGFyZ2V0OnQoZC50YXJnZXRFbGVtZW50KX0pKSxkPW51bGwpLGU7aWYoZCl7aWYoaT09PWQudGFyZ2V0RWxlbWVudClyZXR1cm47ZC5fdHJpZ2dlcigkLEMobix7ZHJvcFRhcmdldDp0KGQudGFyZ2V0RWxlbWVudCl9KSl9ci5fdHJpZ2dlcihCLEMobix7ZHJvcFRhcmdldDp0KGkpfSkpLGQ9QyhyLHt0YXJnZXRFbGVtZW50Oml9KX0pLHRoaXMuX3RyaWdnZXIoTCxDKG4se2Ryb3BUYXJnZXQ6ZCxlbGVtZW50VW5kZXJDdXJzb3I6cn0pKX0sX2F1dG9TY3JvbGw6ZnVuY3Rpb24oKXt2YXIgdCxlLG4scixpLG8sYSxzLGw9dGhpcy5fc2Nyb2xsYWJsZVBhcmVudFswXSx1PXRoaXMuX3Njcm9sbFZlbG9jaXR5LGg9dGhpcy5fc2Nyb2xsQ29tcGVuc3RhdGlvbjtsJiYodD10aGlzLl9lbGVtZW50VW5kZXJDdXJzb3IodGhpcy5fbGFzdEV2ZW50KSx0aGlzLl9wcm9jZXNzTW92ZW1lbnQodGhpcy5fbGFzdEV2ZW50LHQpLHI9bD09PWMoKVswXSxyPyhlPXkuYm9keS5zY3JvbGxIZWlnaHQ+Yi5oZWlnaHQoKSxuPXkuYm9keS5zY3JvbGxXaWR0aD5iLndpZHRoKCkpOihlPWwub2Zmc2V0SGVpZ2h0PD1sLnNjcm9sbEhlaWdodCxuPWwub2Zmc2V0V2lkdGg8PWwuc2Nyb2xsV2lkdGgpLGk9bC5zY3JvbGxUb3ArdS55LG89ZSYmaT4wJiZpPGwuc2Nyb2xsSGVpZ2h0LGE9bC5zY3JvbGxMZWZ0K3UueCxzPW4mJmE+MCYmYTxsLnNjcm9sbFdpZHRoLG8mJihsLnNjcm9sbFRvcCs9dS55KSxzJiYobC5zY3JvbGxMZWZ0Kz11LngpLHImJihzfHxvKSYmKG8mJihoLnRvcCs9dS55KSxzJiYoaC5sZWZ0Kz11LngpLHRoaXMuaGludC5jc3MoaCkpKX0sX2VuZDpmdW5jdGlvbihlKXt0aGlzLl93aXRoRHJvcFRhcmdldCh0aGlzLl9lbGVtZW50VW5kZXJDdXJzb3IoZSksZnVuY3Rpb24obixyKXtuJiYobi5fZHJvcChDKHt9LGUse2Ryb3BUYXJnZXQ6dChyKX0pKSxkPW51bGwpfSksdGhpcy5fY2FuY2VsKHRoaXMuX3RyaWdnZXIoQSxlKSl9LF9jYW5jZWw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztlLl9zY3JvbGxhYmxlUGFyZW50PW51bGwsdGhpcy5fY3Vyc29yRWxlbWVudD1udWxsLGNsZWFySW50ZXJ2YWwodGhpcy5fc2Nyb2xsSW50ZXJ2YWwpLGUuX2FjdGl2YXRlZD0hMSxlLmhpbnQmJiFlLmRyb3BwZWQ/c2V0VGltZW91dChmdW5jdGlvbigpe2UuaGludC5zdG9wKCEwLCEwKSx0P2UuX2FmdGVyRW5kSGFuZGxlcigpOmUuaGludC5hbmltYXRlKGUuY3VycmVudFRhcmdldE9mZnNldCxcImZhc3RcIixlLl9hZnRlckVuZEhhbmRsZXIpfSwwKTplLl9hZnRlckVuZCgpfSxfdHJpZ2dlcjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIG4udHJpZ2dlcih0LEMoe30sZS5ldmVudCx7eDplLngseTplLnksY3VycmVudFRhcmdldDpuLmN1cnJlbnRUYXJnZXQsaW5pdGlhbFRhcmdldDplLnRvdWNoP2UudG91Y2guaW5pdGlhbFRvdWNoOm51bGwsZHJvcFRhcmdldDplLmRyb3BUYXJnZXQsZWxlbWVudFVuZGVyQ3Vyc29yOmUuZWxlbWVudFVuZGVyQ3Vyc29yfSkpfSxfZWxlbWVudFVuZGVyQ3Vyc29yOmZ1bmN0aW9uKHQpe3ZhciBlPUgodCkscj10aGlzLmhpbnQ7cmV0dXJuIHImJm4oclswXSxlKSYmKHIuaGlkZSgpLGU9SCh0KSxlfHwoZT1IKHQpKSxyLnNob3coKSksZX0sX3dpdGhEcm9wVGFyZ2V0OmZ1bmN0aW9uKHQsZSl7dmFyIG4scj10aGlzLm9wdGlvbnMuZ3JvdXAsaT1rW3JdLG89SVtyXTsoaSYmaS5sZW5ndGh8fG8mJm8ubGVuZ3RoKSYmKG49YSh0LGksbyksbj9lKG4udGFyZ2V0LG4udGFyZ2V0RWxlbWVudCk6ZSgpKX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7VC5mbi5kZXN0cm95LmNhbGwodCksdC5fYWZ0ZXJFbmQoKSx0LnVzZXJFdmVudHMuZGVzdHJveSgpLHRoaXMuX3Njcm9sbGFibGVQYXJlbnQ9bnVsbCx0aGlzLl9jdXJzb3JFbGVtZW50PW51bGwsY2xlYXJJbnRlcnZhbCh0aGlzLl9zY3JvbGxJbnRlcnZhbCksdC5jdXJyZW50VGFyZ2V0PW51bGx9LF9hZnRlckVuZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5oaW50JiZlLmhpbnQucmVtb3ZlKCksZGVsZXRlIE9bZS5vcHRpb25zLmdyb3VwXSxlLnRyaWdnZXIoXCJkZXN0cm95XCIpLGUudHJpZ2dlcihWKSx0KHkpLm9mZihXLGUuX2NhcHR1cmVFc2NhcGUpfX0pLF8udWkucGx1Z2luKGcpLF8udWkucGx1Z2luKHYpLF8udWkucGx1Z2luKG0pLF8uVGFwQ2FwdHVyZT1qLF8uY29udGFpbmVyQm91bmRhcmllcz1vLEMoXy51aSx7UGFuZTpKLFBhbmVEaW1lbnNpb25zOlEsTW92YWJsZTpwfSksXy51aS5EcmFnZ2FibGUudXRpbHM9e2F1dG9TY3JvbGxWZWxvY2l0eTpoLHNjcm9sbGFibGVWaWV3UG9ydDpsLGZpbmRTY3JvbGxhYmxlUGFyZW50OnV9fSh3aW5kb3cua2VuZG8ualF1ZXJ5KSx3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlLG4peyhufHxlKSgpfSk7OyFmdW5jdGlvbihlLGRlZmluZSl7ZGVmaW5lKFwia2VuZG8ubW9iaWxlLnNjcm9sbGVyLm1pblwiLFtcImtlbmRvLmZ4Lm1pblwiLFwia2VuZG8uZHJhZ2FuZGRyb3AubWluXCJdLGUpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLGkpe3ZhciBuPXdpbmRvdy5rZW5kbyx0PW4ubW9iaWxlLHM9bi5lZmZlY3RzLG89dC51aSxsPWUucHJveHksYT1lLmV4dGVuZCxyPW8uV2lkZ2V0LGM9bi5DbGFzcyxoPW4udWkuTW92YWJsZSx1PW4udWkuUGFuZSxkPW4udWkuUGFuZURpbWVuc2lvbnMsbT1zLlRyYW5zaXRpb24sZj1zLkFuaW1hdGlvbixwPU1hdGguYWJzLHY9NTAwLGI9LjcseD0uOTYseT0xMCxUPTU1LHc9LjUsZz01LF89XCJrbS1zY3JvbGxlci1yZWxlYXNlXCIsRT1cImttLXNjcm9sbGVyLXJlZnJlc2hcIixDPVwicHVsbFwiLGs9XCJjaGFuZ2VcIixTPVwicmVzaXplXCIsej1cInNjcm9sbFwiLE09MixBPWYuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXM7Zi5mbi5pbml0LmNhbGwoaSksYShpLGUpLGkudXNlckV2ZW50cy5iaW5kKFwiZ2VzdHVyZWVuZFwiLGwoaS5zdGFydCxpKSksaS50YXBDYXB0dXJlLmJpbmQoXCJwcmVzc1wiLGwoaS5jYW5jZWwsaSkpfSxlbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubW92YWJsZS5zY2FsZTx0aGlzLmRpbWVuc2lvbnMubWluU2NhbGV9LGRvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaW1lbnNpb25zLm1pblNjYWxlLXRoaXMubW92YWJsZS5zY2FsZTwuMDF9LHRpY2s6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm1vdmFibGU7ZS5zY2FsZVdpdGgoMS4xKSx0aGlzLmRpbWVuc2lvbnMucmVzY2FsZShlLnNjYWxlKX0sb25FbmQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm1vdmFibGU7ZS5zY2FsZVRvKHRoaXMuZGltZW5zaW9ucy5taW5TY2FsZSksdGhpcy5kaW1lbnNpb25zLnJlc2NhbGUoZS5zY2FsZSl9fSksTz1mLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlKXt2YXIgaT10aGlzO2YuZm4uaW5pdC5jYWxsKGkpLGEoaSxlLHt0cmFuc2l0aW9uOm5ldyBtKHtheGlzOmUuYXhpcyxtb3ZhYmxlOmUubW92YWJsZSxvbkVuZDpmdW5jdGlvbigpe2kuX2VuZCgpfX0pfSksaS50YXBDYXB0dXJlLmJpbmQoXCJwcmVzc1wiLGZ1bmN0aW9uKCl7aS5jYW5jZWwoKX0pLGkudXNlckV2ZW50cy5iaW5kKFwiZW5kXCIsbChpLnN0YXJ0LGkpKSxpLnVzZXJFdmVudHMuYmluZChcImdlc3R1cmVlbmRcIixsKGkuc3RhcnQsaSkpLGkudXNlckV2ZW50cy5iaW5kKFwidGFwXCIsbChpLm9uRW5kLGkpKX0sb25DYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLnRyYW5zaXRpb24uY2FuY2VsKCl9LGZyZWV6ZTpmdW5jdGlvbihlKXt2YXIgaT10aGlzO2kuY2FuY2VsKCksaS5fbW92ZVRvKGUpfSxvbkVuZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5wYW5lQXhpcy5vdXRPZkJvdW5kcygpP2UuX3NuYXBCYWNrKCk6ZS5fZW5kKCl9LGRvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gcCh0aGlzLnZlbG9jaXR5KTwxfSxzdGFydDpmdW5jdGlvbihlKXt2YXIgaSxuPXRoaXM7bi5kaW1lbnNpb24uZW5hYmxlZCYmKG4ucGFuZUF4aXMub3V0T2ZCb3VuZHMoKT9uLl9zbmFwQmFjaygpOihpPWUudG91Y2guaWQ9PT1NPzA6ZS50b3VjaFtuLmF4aXNdLnZlbG9jaXR5LG4udmVsb2NpdHk9TWF0aC5tYXgoTWF0aC5taW4oaSpuLnZlbG9jaXR5TXVsdGlwbGllcixUKSwtVCksbi50YXBDYXB0dXJlLmNhcHR1cmVOZXh0KCksZi5mbi5zdGFydC5jYWxsKG4pKSl9LHRpY2s6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLGk9ZS5kaW1lbnNpb24sbj1lLnBhbmVBeGlzLm91dE9mQm91bmRzKCk/dzplLmZyaWN0aW9uLHQ9ZS52ZWxvY2l0eSo9bixzPWUubW92YWJsZVtlLmF4aXNdK3Q7IWUuZWxhc3RpYyYmaS5vdXRPZkJvdW5kcyhzKSYmKHM9TWF0aC5tYXgoTWF0aC5taW4ocyxpLm1heCksaS5taW4pLGUudmVsb2NpdHk9MCksZS5tb3ZhYmxlLm1vdmVBeGlzKGUuYXhpcyxzKX0sX2VuZDpmdW5jdGlvbigpe3RoaXMudGFwQ2FwdHVyZS5jYW5jZWxDYXB0dXJlKCksdGhpcy5lbmQoKX0sX3NuYXBCYWNrOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxpPWUuZGltZW5zaW9uLG49ZS5tb3ZhYmxlW2UuYXhpc10+aS5tYXg/aS5tYXg6aS5taW47ZS5fbW92ZVRvKG4pfSxfbW92ZVRvOmZ1bmN0aW9uKGUpe3RoaXMudHJhbnNpdGlvbi5tb3ZlVG8oe2xvY2F0aW9uOmUsZHVyYXRpb246dixlYXNlOm0uZWFzZU91dEV4cG99KX19KSxIPWYuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXM7bi5lZmZlY3RzLkFuaW1hdGlvbi5mbi5pbml0LmNhbGwodGhpcyksYShpLGUse29yaWdpbjp7fSxkZXN0aW5hdGlvbjp7fSxvZmZzZXQ6e319KX0sdGljazpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUNvb3JkaW5hdGVzKCksdGhpcy5tb3ZlVG8odGhpcy5vcmlnaW4pfSxkb25lOmZ1bmN0aW9uKCl7cmV0dXJuIHAodGhpcy5vZmZzZXQueSk8ZyYmcCh0aGlzLm9mZnNldC54KTxnfSxvbkVuZDpmdW5jdGlvbigpe3RoaXMubW92ZVRvKHRoaXMuZGVzdGluYXRpb24pLHRoaXMuY2FsbGJhY2smJnRoaXMuY2FsbGJhY2suY2FsbCgpfSxzZXRDb29yZGluYXRlczpmdW5jdGlvbihlLGkpe3RoaXMub2Zmc2V0PXt9LHRoaXMub3JpZ2luPWUsdGhpcy5kZXN0aW5hdGlvbj1pfSxzZXRDYWxsYmFjazpmdW5jdGlvbihlKXtlJiZuLmlzRnVuY3Rpb24oZSk/dGhpcy5jYWxsYmFjaz1lOmU9aX0sX3VwZGF0ZUNvb3JkaW5hdGVzOmZ1bmN0aW9uKCl7dGhpcy5vZmZzZXQ9e3g6KHRoaXMuZGVzdGluYXRpb24ueC10aGlzLm9yaWdpbi54KS80LHk6KHRoaXMuZGVzdGluYXRpb24ueS10aGlzLm9yaWdpbi55KS80fSx0aGlzLm9yaWdpbj17eTp0aGlzLm9yaWdpbi55K3RoaXMub2Zmc2V0LnkseDp0aGlzLm9yaWdpbi54K3RoaXMub2Zmc2V0Lnh9fX0pLEI9Yy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oaSl7dmFyIG49dGhpcyx0PVwieFwiPT09aS5heGlzLHM9ZSgnPGRpdiBjbGFzcz1cImttLXRvdWNoLXNjcm9sbGJhciBrbS0nKyh0P1wiaG9yaXpvbnRhbFwiOlwidmVydGljYWxcIikrJy1zY3JvbGxiYXJcIiAvPicpO2EobixpLHtlbGVtZW50OnMsZWxlbWVudFNpemU6MCxtb3ZhYmxlOm5ldyBoKHMpLHNjcm9sbE1vdmFibGU6aS5tb3ZhYmxlLGFsd2F5c1Zpc2libGU6aS5hbHdheXNWaXNpYmxlLHNpemU6dD9cIndpZHRoXCI6XCJoZWlnaHRcIn0pLG4uc2Nyb2xsTW92YWJsZS5iaW5kKGssbChuLnJlZnJlc2gsbikpLG4uY29udGFpbmVyLmFwcGVuZChzKSxpLmFsd2F5c1Zpc2libGUmJm4uc2hvdygpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxpPWUuYXhpcyxuPWUuZGltZW5zaW9uLHQ9bi5zaXplLHM9ZS5zY3JvbGxNb3ZhYmxlLG89dC9uLnRvdGFsLGw9TWF0aC5yb3VuZCgtc1tpXSpvKSxhPU1hdGgucm91bmQodCpvKTtvPj0xP3RoaXMuZWxlbWVudC5jc3MoXCJkaXNwbGF5XCIsXCJub25lXCIpOnRoaXMuZWxlbWVudC5jc3MoXCJkaXNwbGF5XCIsXCJcIiksbCthPnQ/YT10LWw6bDwwJiYoYSs9bCxsPTApLGUuZWxlbWVudFNpemUhPWEmJihlLmVsZW1lbnQuY3NzKGUuc2l6ZSxhK1wicHhcIiksZS5lbGVtZW50U2l6ZT1hKSxlLm1vdmFibGUubW92ZUF4aXMoaSxsKX0sc2hvdzpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5jc3Moe29wYWNpdHk6Yix2aXNpYmlsaXR5OlwidmlzaWJsZVwifSl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLmFsd2F5c1Zpc2libGV8fHRoaXMuZWxlbWVudC5jc3Moe29wYWNpdHk6MH0pfX0pLFI9ci5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxzKXt2YXIgbyxjLG0sZix2LGIseCx5LFQsdz10aGlzO3JldHVybiByLmZuLmluaXQuY2FsbCh3LHQscyksdD13LmVsZW1lbnQsKHcuX25hdGl2ZT13Lm9wdGlvbnMudXNlTmF0aXZlJiZuLnN1cHBvcnQuaGFzTmF0aXZlU2Nyb2xsaW5nKT8odC5hZGRDbGFzcyhcImttLW5hdGl2ZS1zY3JvbGxlclwiKS5wcmVwZW5kKCc8ZGl2IGNsYXNzPVwia20tc2Nyb2xsLWhlYWRlclwiLz4nKSxhKHcse3Njcm9sbEVsZW1lbnQ6dCxmaXhlZENvbnRhaW5lcjp0LmNoaWxkcmVuKCkuZmlyc3QoKX0pLGkpOih0LmNzcyhcIm92ZXJmbG93XCIsXCJoaWRkZW5cIikuYWRkQ2xhc3MoXCJrbS1zY3JvbGwtd3JhcHBlclwiKS53cmFwSW5uZXIoJzxkaXYgY2xhc3M9XCJrbS1zY3JvbGwtY29udGFpbmVyXCIvPicpLnByZXBlbmQoJzxkaXYgY2xhc3M9XCJrbS1zY3JvbGwtaGVhZGVyXCIvPicpLG89dC5jaGlsZHJlbigpLmVxKDEpLGM9bmV3IG4uVGFwQ2FwdHVyZSh0KSxtPW5ldyBoKG8pLGY9bmV3IGQoe2VsZW1lbnQ6byxjb250YWluZXI6dCxmb3JjZWRFbmFibGVkOncub3B0aW9ucy56b29tfSksdj10aGlzLm9wdGlvbnMuYXZvaWRTY3JvbGxpbmcsYj1uZXcgbi5Vc2VyRXZlbnRzKHQse3RvdWNoQWN0aW9uOlwicGFuLXlcIixmYXN0VGFwOiEwLGFsbG93U2VsZWN0aW9uOiEwLHByZXZlbnREcmFnRXZlbnQ6ITAsY2FwdHVyZVVwSWZNb3ZlZDohMCxtdWx0aVRvdWNoOncub3B0aW9ucy56b29tLHN0YXJ0OmZ1bmN0aW9uKGkpe2YucmVmcmVzaCgpO3ZhciBuPXAoaS54LnZlbG9jaXR5KSx0PXAoaS55LnZlbG9jaXR5KSxzPTIqbj49dCxvPWUuY29udGFpbnMody5maXhlZENvbnRhaW5lclswXSxpLmV2ZW50LnRhcmdldCksbD0yKnQ+PW47IW8mJiF2KGkpJiZ3LmVuYWJsZWQmJihmLnguZW5hYmxlZCYmc3x8Zi55LmVuYWJsZWQmJmwpP2IuY2FwdHVyZSgpOmIuY2FuY2VsKCl9fSkseD1uZXcgdSh7bW92YWJsZTptLGRpbWVuc2lvbnM6Zix1c2VyRXZlbnRzOmIsZWxhc3RpYzp3Lm9wdGlvbnMuZWxhc3RpY30pLHk9bmV3IEEoe21vdmFibGU6bSxkaW1lbnNpb25zOmYsdXNlckV2ZW50czpiLHRhcENhcHR1cmU6Y30pLFQ9bmV3IEgoe21vdmVUbzpmdW5jdGlvbihlKXt3LnNjcm9sbFRvKGUueCxlLnkpfX0pLG0uYmluZChrLGZ1bmN0aW9uKCl7dy5zY3JvbGxUb3A9LW0ueSx3LnNjcm9sbExlZnQ9LW0ueCx3LnRyaWdnZXIoeix7c2Nyb2xsVG9wOncuc2Nyb2xsVG9wLHNjcm9sbExlZnQ6dy5zY3JvbGxMZWZ0fSl9KSx3Lm9wdGlvbnMubW91c2V3aGVlbFNjcm9sbGluZyYmdC5vbihcIkRPTU1vdXNlU2Nyb2xsIG1vdXNld2hlZWxcIixsKHRoaXMsXCJfd2hlZWxTY3JvbGxcIikpLGEodyx7bW92YWJsZTptLGRpbWVuc2lvbnM6Zix6b29tU25hcEJhY2s6eSxhbmltYXRlZFNjcm9sbGVyOlQsdXNlckV2ZW50czpiLHBhbmU6eCx0YXBDYXB0dXJlOmMscHVsbGVkOiExLGVuYWJsZWQ6ITAsc2Nyb2xsRWxlbWVudDpvLHNjcm9sbFRvcDowLHNjcm9sbExlZnQ6MCxmaXhlZENvbnRhaW5lcjp0LmNoaWxkcmVuKCkuZmlyc3QoKX0pLHcuX2luaXRBeGlzKFwieFwiKSx3Ll9pbml0QXhpcyhcInlcIiksdy5fd2hlZWxFbmQ9ZnVuY3Rpb24oKXt3Ll93aGVlbD0hMSx3LnVzZXJFdmVudHMuZW5kKDAsdy5fd2hlZWxZKX0sZi5yZWZyZXNoKCksdy5vcHRpb25zLnB1bGxUb1JlZnJlc2gmJncuX2luaXRQdWxsVG9SZWZyZXNoKCksaSl9LF93aGVlbFNjcm9sbDpmdW5jdGlvbihlKXt0aGlzLl93aGVlbHx8KHRoaXMuX3doZWVsPSEwLHRoaXMuX3doZWVsWT0wLHRoaXMudXNlckV2ZW50cy5wcmVzcygwLHRoaXMuX3doZWVsWSkpLGNsZWFyVGltZW91dCh0aGlzLl93aGVlbFRpbWVvdXQpLHRoaXMuX3doZWVsVGltZW91dD1zZXRUaW1lb3V0KHRoaXMuX3doZWVsRW5kLDUwKTt2YXIgaT1uLndoZWVsRGVsdGFZKGUpO2kmJih0aGlzLl93aGVlbFkrPWksdGhpcy51c2VyRXZlbnRzLm1vdmUoMCx0aGlzLl93aGVlbFkpKSxlLnByZXZlbnREZWZhdWx0KCl9LG1ha2VWaXJ0dWFsOmZ1bmN0aW9uKCl7dGhpcy5kaW1lbnNpb25zLnkubWFrZVZpcnR1YWwoKX0sdmlydHVhbFNpemU6ZnVuY3Rpb24oZSxpKXt0aGlzLmRpbWVuc2lvbnMueS52aXJ0dWFsU2l6ZShlLGkpfSxoZWlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaW1lbnNpb25zLnkuc2l6ZX0sc2Nyb2xsSGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Nyb2xsRWxlbWVudFswXS5zY3JvbGxIZWlnaHR9LHNjcm9sbFdpZHRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Nyb2xsRWxlbWVudFswXS5zY3JvbGxXaWR0aH0sb3B0aW9uczp7bmFtZTpcIlNjcm9sbGVyXCIsem9vbTohMSxwdWxsT2Zmc2V0OjE0MCx2aXNpYmxlU2Nyb2xsSGludHM6ITEsZWxhc3RpYzohMCx1c2VOYXRpdmU6ITEsbW91c2V3aGVlbFNjcm9sbGluZzohMCxhdm9pZFNjcm9sbGluZzpmdW5jdGlvbigpe3JldHVybiExfSxwdWxsVG9SZWZyZXNoOiExLG1lc3NhZ2VzOntwdWxsVGVtcGxhdGU6XCJQdWxsIHRvIHJlZnJlc2hcIixyZWxlYXNlVGVtcGxhdGU6XCJSZWxlYXNlIHRvIHJlZnJlc2hcIixyZWZyZXNoVGVtcGxhdGU6XCJSZWZyZXNoaW5nXCJ9fSxldmVudHM6W0MseixTXSxfcmVzaXplOmZ1bmN0aW9uKCl7dGhpcy5fbmF0aXZlfHx0aGlzLmNvbnRlbnRSZXNpemVkKCl9LHNldE9wdGlvbnM6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcztyLmZuLnNldE9wdGlvbnMuY2FsbChpLGUpLGUucHVsbFRvUmVmcmVzaCYmaS5faW5pdFB1bGxUb1JlZnJlc2goKX0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9uYXRpdmU/dGhpcy5zY3JvbGxFbGVtZW50LnNjcm9sbFRvcCgwKToodGhpcy5tb3ZhYmxlLm1vdmVUbyh7eDowLHk6MH0pLHRoaXMuX3NjYWxlKDEpKX0sY29udGVudFJlc2l6ZWQ6ZnVuY3Rpb24oKXt0aGlzLmRpbWVuc2lvbnMucmVmcmVzaCgpLHRoaXMucGFuZS54Lm91dE9mQm91bmRzKCkmJnRoaXMubW92YWJsZS5tb3ZlQXhpcyhcInhcIix0aGlzLmRpbWVuc2lvbnMueC5taW4pLHRoaXMucGFuZS55Lm91dE9mQm91bmRzKCkmJnRoaXMubW92YWJsZS5tb3ZlQXhpcyhcInlcIix0aGlzLmRpbWVuc2lvbnMueS5taW4pfSx6b29tT3V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5kaW1lbnNpb25zO2UucmVmcmVzaCgpLHRoaXMuX3NjYWxlKGUuZml0U2NhbGUpLHRoaXMubW92YWJsZS5tb3ZlVG8oZS5jZW50ZXJDb29yZGluYXRlcygpKX0sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSEwfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSExfSxzY3JvbGxUbzpmdW5jdGlvbihlLGkpe3RoaXMuX25hdGl2ZT8odGhpcy5zY3JvbGxFbGVtZW50LnNjcm9sbExlZnQocChlKSksdGhpcy5zY3JvbGxFbGVtZW50LnNjcm9sbFRvcChwKGkpKSk6KHRoaXMuZGltZW5zaW9ucy5yZWZyZXNoKCksdGhpcy5tb3ZhYmxlLm1vdmVUbyh7eDplLHk6aX0pKX0sYW5pbWF0ZWRTY3JvbGxUbzpmdW5jdGlvbihlLGksbil7dmFyIHQsczt0aGlzLl9uYXRpdmU/dGhpcy5zY3JvbGxUbyhlLGkpOih0PXt4OnRoaXMubW92YWJsZS54LHk6dGhpcy5tb3ZhYmxlLnl9LHM9e3g6ZSx5Oml9LHRoaXMuYW5pbWF0ZWRTY3JvbGxlci5zZXRDb29yZGluYXRlcyh0LHMpLHRoaXMuYW5pbWF0ZWRTY3JvbGxlci5zZXRDYWxsYmFjayhuKSx0aGlzLmFuaW1hdGVkU2Nyb2xsZXIuc3RhcnQoKSl9LHB1bGxIYW5kbGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLnJlZnJlc2hIaW50LnJlbW92ZUNsYXNzKEUpLGUuaGludENvbnRhaW5lci5odG1sKGUucHVsbFRlbXBsYXRlKHt9KSksZS55aW5lcnRpYS5vbkVuZCgpLGUueGluZXJ0aWEub25FbmQoKSxlLnVzZXJFdmVudHMuY2FuY2VsKCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtyLmZuLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLnVzZXJFdmVudHMmJnRoaXMudXNlckV2ZW50cy5kZXN0cm95KCl9LF9zY2FsZTpmdW5jdGlvbihlKXt0aGlzLmRpbWVuc2lvbnMucmVzY2FsZShlKSx0aGlzLm1vdmFibGUuc2NhbGVUbyhlKX0sX2luaXRQdWxsVG9SZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLmRpbWVuc2lvbnMueS5mb3JjZUVuYWJsZWQoKSxlLnB1bGxUZW1wbGF0ZT1uLnRlbXBsYXRlKGUub3B0aW9ucy5tZXNzYWdlcy5wdWxsVGVtcGxhdGUpLGUucmVsZWFzZVRlbXBsYXRlPW4udGVtcGxhdGUoZS5vcHRpb25zLm1lc3NhZ2VzLnJlbGVhc2VUZW1wbGF0ZSksZS5yZWZyZXNoVGVtcGxhdGU9bi50ZW1wbGF0ZShlLm9wdGlvbnMubWVzc2FnZXMucmVmcmVzaFRlbXBsYXRlKSxlLnNjcm9sbEVsZW1lbnQucHJlcGVuZCgnPHNwYW4gY2xhc3M9XCJrbS1zY3JvbGxlci1wdWxsXCI+PHNwYW4gY2xhc3M9XCJrbS1pY29uXCI+PC9zcGFuPjxzcGFuIGNsYXNzPVwia20tbG9hZGluZy1sZWZ0XCI+PC9zcGFuPjxzcGFuIGNsYXNzPVwia20tbG9hZGluZy1yaWdodFwiPjwvc3Bhbj48c3BhbiBjbGFzcz1cImttLXRlbXBsYXRlXCI+JytlLnB1bGxUZW1wbGF0ZSh7fSkrXCI8L3NwYW4+PC9zcGFuPlwiKSxlLnJlZnJlc2hIaW50PWUuc2Nyb2xsRWxlbWVudC5jaGlsZHJlbigpLmZpcnN0KCksZS5oaW50Q29udGFpbmVyPWUucmVmcmVzaEhpbnQuY2hpbGRyZW4oXCIua20tdGVtcGxhdGVcIiksZS5wYW5lLnkuYmluZChcImNoYW5nZVwiLGwoZS5fcGFuZUNoYW5nZSxlKSksZS51c2VyRXZlbnRzLmJpbmQoXCJlbmRcIixsKGUuX2RyYWdFbmQsZSkpfSxfZHJhZ0VuZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5wdWxsZWQmJihlLnB1bGxlZD0hMSxlLnJlZnJlc2hIaW50LnJlbW92ZUNsYXNzKF8pLmFkZENsYXNzKEUpLGUuaGludENvbnRhaW5lci5odG1sKGUucmVmcmVzaFRlbXBsYXRlKHt9KSksZS55aW5lcnRpYS5mcmVlemUoZS5vcHRpb25zLnB1bGxPZmZzZXQvMiksZS50cmlnZ2VyKFwicHVsbFwiKSl9LF9wYW5lQ2hhbmdlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLm1vdmFibGUueS93PmUub3B0aW9ucy5wdWxsT2Zmc2V0P2UucHVsbGVkfHwoZS5wdWxsZWQ9ITAsZS5yZWZyZXNoSGludC5yZW1vdmVDbGFzcyhFKS5hZGRDbGFzcyhfKSxlLmhpbnRDb250YWluZXIuaHRtbChlLnJlbGVhc2VUZW1wbGF0ZSh7fSkpKTplLnB1bGxlZCYmKGUucHVsbGVkPSExLGUucmVmcmVzaEhpbnQucmVtb3ZlQ2xhc3MoXyksZS5oaW50Q29udGFpbmVyLmh0bWwoZS5wdWxsVGVtcGxhdGUoe30pKSl9LF9pbml0QXhpczpmdW5jdGlvbihlKXt2YXIgaT10aGlzLG49aS5tb3ZhYmxlLHQ9aS5kaW1lbnNpb25zW2VdLHM9aS50YXBDYXB0dXJlLG89aS5wYW5lW2VdLGw9bmV3IEIoe2F4aXM6ZSxtb3ZhYmxlOm4sZGltZW5zaW9uOnQsY29udGFpbmVyOmkuZWxlbWVudCxhbHdheXNWaXNpYmxlOmkub3B0aW9ucy52aXNpYmxlU2Nyb2xsSGludHN9KTt0LmJpbmQoayxmdW5jdGlvbigpe2wucmVmcmVzaCgpfSksby5iaW5kKGssZnVuY3Rpb24oKXtsLnNob3coKX0pLGlbZStcImluZXJ0aWFcIl09bmV3IE8oe2F4aXM6ZSxwYW5lQXhpczpvLG1vdmFibGU6bix0YXBDYXB0dXJlOnMsdXNlckV2ZW50czppLnVzZXJFdmVudHMsZGltZW5zaW9uOnQsZWxhc3RpYzppLm9wdGlvbnMuZWxhc3RpYyxmcmljdGlvbjppLm9wdGlvbnMuZnJpY3Rpb258fHgsdmVsb2NpdHlNdWx0aXBsaWVyOmkub3B0aW9ucy52ZWxvY2l0eU11bHRpcGxpZXJ8fHksZW5kOmZ1bmN0aW9uKCl7bC5oaWRlKCksaS50cmlnZ2VyKFwic2Nyb2xsRW5kXCIse2F4aXM6ZSxzY3JvbGxUb3A6aS5zY3JvbGxUb3Asc2Nyb2xsTGVmdDppLnNjcm9sbExlZnR9KX19KX19KTtvLnBsdWdpbihSKX0od2luZG93LmtlbmRvLmpRdWVyeSksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsaSxuKXsobnx8aSkoKX0pOzshZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcImtlbmRvLnRvb2xiYXIubWluXCIsW1wia2VuZG8uY29yZS5taW5cIixcImtlbmRvLnVzZXJldmVudHMubWluXCIsXCJrZW5kby5wb3B1cC5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbygpe3ZhciB0LGU9dGhpcy5vcHRpb25zLmFuY2hvcixvPUUoZSk7Xy53cmFwKHRoaXMuZWxlbWVudCkuYWRkQ2xhc3MoXCJrLXNwbGl0LXdyYXBwZXJcIiksdD1cImJvcmRlci1ib3hcIiE9PXRoaXMuZWxlbWVudC5jc3MoXCJib3gtc2l6aW5nXCIpP28tKEUodGhpcy5lbGVtZW50KS10aGlzLmVsZW1lbnQud2lkdGgoKSk6byx0aGlzLmVsZW1lbnQuY3NzKHtmb250RmFtaWx5OmUuY3NzKFwiZm9udC1mYW1pbHlcIiksXCJtaW4td2lkdGhcIjp0fSl9ZnVuY3Rpb24gaSh0KXt0LnRhcmdldC5pcyhcIi5rLXRvZ2dsZS1idXR0b25cIil8fHQudGFyZ2V0LnRvZ2dsZUNsYXNzKE0sXCJwcmVzc1wiPT10LnR5cGUpfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIGU9dChlKSxlLmhhc0NsYXNzKFwia20tYWN0aW9uc2hlZXRcIik/ZS5jbG9zZXN0KFwiLmttLXBvcHVwLXdyYXBwZXJcIik6ZS5hZGRDbGFzcyhcImttLXdpZGdldCBrbS1hY3Rpb25zaGVldFwiKS53cmFwKCc8ZGl2IGNsYXNzPVwia20tYWN0aW9uc2hlZXQtd3JhcHBlciBrbS1hY3Rpb25zaGVldC10YWJsZXQga20td2lkZ2V0IGttLXBvcHVwXCI+PC9kaXY+JykucGFyZW50KCkud3JhcCgnPGRpdiBjbGFzcz1cImttLXBvcHVwLXdyYXBwZXIgay1wb3B1cFwiPjwvZGl2PicpLnBhcmVudCgpfWZ1bmN0aW9uIHModCl7dC5wcmV2ZW50RGVmYXVsdCgpfWZ1bmN0aW9uIGwoZSxvKXt2YXIgaT1cIm5leHRcIj09PW8/dC5mbi5uZXh0OnQuZm4ucHJldixuPVwibmV4dFwiPT09bz90LmZuLmZpcnN0OnQuZm4ubGFzdCxzPWkuY2FsbChlKTtyZXR1cm4gcy5pcyhcIjprZW5kb0ZvY3VzYWJsZVwiKXx8IXMubGVuZ3RoP3M6cy5maW5kKFwiOmtlbmRvRm9jdXNhYmxlXCIpLmxlbmd0aD9uLmNhbGwocy5maW5kKFwiOmtlbmRvRm9jdXNhYmxlXCIpKTpsKHMsbyl9dmFyIGEscixkLHAsaCx1LGMsZixtLGIsdixnLHcsayxDLHksXz13aW5kb3cua2VuZG8sQT1fLkNsYXNzLHg9Xy51aS5XaWRnZXQsQj10LnByb3h5LFQ9Xy5pc0Z1bmN0aW9uLE89Xy5rZXlzLEU9Xy5fb3V0ZXJXaWR0aCxJPVwiay10b29sYmFyXCIsVT1cImstYnV0dG9uXCIsUD1cImstb3ZlcmZsb3ctYnV0dG9uXCIsej1cImstdG9nZ2xlLWJ1dHRvblwiLEc9XCJrLWJ1dHRvbi1ncm91cFwiLEY9XCJrLXNwbGl0LWJ1dHRvblwiLEg9XCJrLXNlcGFyYXRvclwiLEQ9XCJrLXBvcHVwXCIsUj1cImstdG9vbGJhci1yZXNpemFibGVcIixNPVwiay1zdGF0ZS1hY3RpdmVcIixTPVwiay1zdGF0ZS1kaXNhYmxlZFwiLFc9XCJrLXN0YXRlLWhpZGRlblwiLE49XCJrLWdyb3VwLXN0YXJ0XCIsSz1cImstZ3JvdXAtZW5kXCIsaj1cImstcHJpbWFyeVwiLFE9XCJrLWljb25cIixWPVwiay1pLVwiLHE9XCJrLWJ1dHRvbi1pY29uXCIsSj1cImstYnV0dG9uLWljb250ZXh0XCIsTD1cImstbGlzdC1jb250YWluZXIgay1zcGxpdC1jb250YWluZXJcIixYPVwiay1zcGxpdC1idXR0b24tYXJyb3dcIixZPVwiay1vdmVyZmxvdy1hbmNob3JcIixaPVwiay1vdmVyZmxvdy1jb250YWluZXJcIiwkPVwiay10b29sYmFyLWZpcnN0LXZpc2libGVcIix0dD1cImstdG9vbGJhci1sYXN0LXZpc2libGVcIixldD1cImNsaWNrXCIsb3Q9XCJ0b2dnbGVcIixpdD1cIm9wZW5cIixudD1cImNsb3NlXCIsc3Q9XCJvdmVyZmxvd09wZW5cIixsdD1cIm92ZXJmbG93Q2xvc2VcIixhdD1cIm5ldmVyXCIscnQ9XCJhdXRvXCIsZHQ9XCJhbHdheXNcIixwdD1cImstb3ZlcmZsb3ctaGlkZGVuXCIsaHQ9Xy5hdHRyKFwidWlkXCIpO18udG9vbGJhcj17fSxhPXtvdmVyZmxvd0FuY2hvcjonPGRpdiB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImstb3ZlcmZsb3ctYW5jaG9yXCI+PC9kaXY+JyxvdmVyZmxvd0NvbnRhaW5lcjonPHVsIGNsYXNzPVwiay1vdmVyZmxvdy1jb250YWluZXIgay1saXN0LWNvbnRhaW5lclwiPjwvdWw+J30sXy50b29sYmFyLnJlZ2lzdGVyQ29tcG9uZW50PWZ1bmN0aW9uKHQsZSxvKXthW3RdPXt0b29sYmFyOmUsb3ZlcmZsb3c6b319LHI9Xy5DbGFzcy5leHRlbmQoe2FkZE92ZXJmbG93QXR0cjpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5hdHRyKF8uYXR0cihcIm92ZXJmbG93XCIpLHRoaXMub3B0aW9ucy5vdmVyZmxvd3x8cnQpfSxhZGRVaWRBdHRyOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmF0dHIoaHQsdGhpcy5vcHRpb25zLnVpZCl9LGFkZElkQXR0cjpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5pZCYmdGhpcy5lbGVtZW50LmF0dHIoXCJpZFwiLHRoaXMub3B0aW9ucy5pZCl9LGFkZE92ZXJmbG93SWRBdHRyOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLmlkJiZ0aGlzLmVsZW1lbnQuYXR0cihcImlkXCIsdGhpcy5vcHRpb25zLmlkK1wiX292ZXJmbG93XCIpfSxhdHRyaWJ1dGVzOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLmF0dHJpYnV0ZXMmJnRoaXMuZWxlbWVudC5hdHRyKHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVzKX0sc2hvdzpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyhXKS5zaG93KCksdGhpcy5vcHRpb25zLmhpZGRlbj0hMX0saGlkZTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5hZGRDbGFzcyhXKS5oaWRlKCksdGhpcy5vcHRpb25zLmhpZGRlbj0hMH0scmVtb3ZlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZSgpfSxlbmFibGU6ZnVuY3Rpb24odCl7dD09PWUmJih0PSEwKSx0aGlzLmVsZW1lbnQudG9nZ2xlQ2xhc3MoUywhdCksdGhpcy5vcHRpb25zLmVuYWJsZT10fSx0d2luOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50LmF0dHIoaHQpO3JldHVybiB0aGlzLm92ZXJmbG93P3RoaXMudG9vbGJhci5lbGVtZW50LmZpbmQoXCJbXCIraHQrXCI9J1wiK3QrXCInXVwiKS5kYXRhKHRoaXMub3B0aW9ucy50eXBlKTp0aGlzLnRvb2xiYXIub3B0aW9ucy5yZXNpemFibGU/dGhpcy50b29sYmFyLnBvcHVwLmVsZW1lbnQuZmluZChcIltcIitodCtcIj0nXCIrdCtcIiddXCIpLmRhdGEodGhpcy5vcHRpb25zLnR5cGUpOmV9fSksXy50b29sYmFyLkl0ZW09cixkPXIuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKG8saSl7dmFyIG49dChvLnVzZUJ1dHRvblRhZz8nPGJ1dHRvbiB0YWJpbmRleD1cIjBcIj48L2J1dHRvbj4nOic8YSBocmVmIHRhYmluZGV4PVwiMFwiPjwvYT4nKTt0aGlzLmVsZW1lbnQ9bix0aGlzLm9wdGlvbnM9byx0aGlzLnRvb2xiYXI9aSx0aGlzLmF0dHJpYnV0ZXMoKSxvLnByaW1hcnkmJm4uYWRkQ2xhc3Moaiksby50b2dnbGFibGUmJihuLmFkZENsYXNzKHopLHRoaXMudG9nZ2xlKG8uc2VsZWN0ZWQpKSxvLnVybD09PWV8fG8udXNlQnV0dG9uVGFnfHwobi5hdHRyKFwiaHJlZlwiLG8udXJsKSxvLm1vYmlsZSYmbi5hdHRyKF8uYXR0cihcInJvbGVcIiksXCJidXR0b25cIikpLG8uZ3JvdXAmJihuLmF0dHIoXy5hdHRyKFwiZ3JvdXBcIiksby5ncm91cCksdGhpcy5ncm91cD10aGlzLnRvb2xiYXIuYWRkVG9Hcm91cCh0aGlzLG8uZ3JvdXApKSwhby50b2dnbGFibGUmJm8uY2xpY2smJlQoby5jbGljaykmJih0aGlzLmNsaWNrSGFuZGxlcj1vLmNsaWNrKSxvLnRvZ2dsYWJsZSYmby50b2dnbGUmJlQoby50b2dnbGUpJiYodGhpcy50b2dnbGVIYW5kbGVyPW8udG9nZ2xlKX0sdG9nZ2xlOmZ1bmN0aW9uKHQsZSl7dD0hIXQsdGhpcy5ncm91cCYmdD90aGlzLmdyb3VwLnNlbGVjdCh0aGlzKTp0aGlzLmdyb3VwfHx0aGlzLnNlbGVjdCh0KSxlJiZ0aGlzLnR3aW4oKSYmdGhpcy50d2luKCkudG9nZ2xlKHQpfSxnZXRQYXJlbnRHcm91cDpmdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5pc0NoaWxkKXJldHVybiB0aGlzLmVsZW1lbnQuY2xvc2VzdChcIi5cIitHKS5kYXRhKFwiYnV0dG9uR3JvdXBcIil9LF9hZGRHcmFwaGljczpmdW5jdGlvbigpe3ZhciBlLG8saSxuPXRoaXMuZWxlbWVudCxzPXRoaXMub3B0aW9ucy5pY29uLGw9dGhpcy5vcHRpb25zLnNwcml0ZUNzc0NsYXNzLGE9dGhpcy5vcHRpb25zLmltYWdlVXJsOyhsfHxhfHxzKSYmKGU9ITAsbi5jb250ZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiF0KHRoaXMpLmhhc0NsYXNzKFwiay1zcHJpdGVcIikmJiF0KHRoaXMpLmhhc0NsYXNzKFEpJiYhdCh0aGlzKS5oYXNDbGFzcyhcImstaW1hZ2VcIil9KS5lYWNoKGZ1bmN0aW9uKG8saSl7KDE9PWkubm9kZVR5cGV8fDM9PWkubm9kZVR5cGUmJnQudHJpbShpLm5vZGVWYWx1ZSkubGVuZ3RoPjApJiYoZT0hMSl9KSxuLmFkZENsYXNzKGU/cTpKKSkscz8obz1uLmNoaWxkcmVuKFwic3Bhbi5cIitRKS5maXJzdCgpLG9bMF18fChvPXQoJzxzcGFuIGNsYXNzPVwiJytRKydcIj48L3NwYW4+JykucHJlcGVuZFRvKG4pKSxvLmFkZENsYXNzKFYrcykpOmw/KG89bi5jaGlsZHJlbihcInNwYW4uay1zcHJpdGVcIikuZmlyc3QoKSxvWzBdfHwobz10KCc8c3BhbiBjbGFzcz1cImstc3ByaXRlXCI+PC9zcGFuPicpLnByZXBlbmRUbyhuKSksby5hZGRDbGFzcyhsKSk6YSYmKGk9bi5jaGlsZHJlbihcImltZy5rLWltYWdlXCIpLmZpcnN0KCksaVswXXx8KGk9dCgnPGltZyBhbHQ9XCJpY29uXCIgY2xhc3M9XCJrLWltYWdlXCIgLz4nKS5wcmVwZW5kVG8obikpLGkuYXR0cihcInNyY1wiLGEpKX19KSxfLnRvb2xiYXIuQnV0dG9uPWQscD1kLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe2QuZm4uaW5pdC5jYWxsKHRoaXMsdCxlKTt2YXIgbz10aGlzLmVsZW1lbnQ7by5hZGRDbGFzcyhVKSx0aGlzLmFkZElkQXR0cigpLHQuYWxpZ24mJm8uYWRkQ2xhc3MoXCJrLWFsaWduLVwiK3QuYWxpZ24pLFwib3ZlcmZsb3dcIiE9dC5zaG93VGV4dCYmdC50ZXh0JiZvLmh0bWwodC5tb2JpbGU/JzxzcGFuIGNsYXNzPVwia20tdGV4dFwiPicrdC50ZXh0K1wiPC9zcGFuPlwiOnQudGV4dCksdC5oYXNJY29uPVwib3ZlcmZsb3dcIiE9dC5zaG93SWNvbiYmKHQuaWNvbnx8dC5zcHJpdGVDc3NDbGFzc3x8dC5pbWFnZVVybCksdC5oYXNJY29uJiZ0aGlzLl9hZGRHcmFwaGljcygpLHRoaXMuYWRkVWlkQXR0cigpLHRoaXMuYWRkT3ZlcmZsb3dBdHRyKCksdGhpcy5lbmFibGUodC5lbmFibGUpLHQuaGlkZGVuJiZ0aGlzLmhpZGUoKSx0aGlzLmVsZW1lbnQuZGF0YSh7dHlwZTpcImJ1dHRvblwiLGJ1dHRvbjp0aGlzfSl9LHNlbGVjdDpmdW5jdGlvbih0KXt0PT09ZSYmKHQ9ITEpLHRoaXMuZWxlbWVudC50b2dnbGVDbGFzcyhNLHQpLHRoaXMub3B0aW9ucy5zZWxlY3RlZD10fX0pLF8udG9vbGJhci5Ub29sQmFyQnV0dG9uPXAsaD1kLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3RoaXMub3ZlcmZsb3c9ITAsZC5mbi5pbml0LmNhbGwodGhpcyx0LGUpO3ZhciBvPXRoaXMuZWxlbWVudDtcInRvb2xiYXJcIiE9dC5zaG93VGV4dCYmdC50ZXh0JiZvLmh0bWwodC5tb2JpbGU/JzxzcGFuIGNsYXNzPVwia20tdGV4dFwiPicrdC50ZXh0K1wiPC9zcGFuPlwiOic8c3BhbiBjbGFzcz1cImstdGV4dFwiPicrdC50ZXh0K1wiPC9zcGFuPlwiKSx0Lmhhc0ljb249XCJ0b29sYmFyXCIhPXQuc2hvd0ljb24mJih0Lmljb258fHQuc3ByaXRlQ3NzQ2xhc3N8fHQuaW1hZ2VVcmwpLHQuaGFzSWNvbiYmdGhpcy5fYWRkR3JhcGhpY3MoKSx0LmlzQ2hpbGR8fHRoaXMuX3dyYXAoKSx0aGlzLmFkZE92ZXJmbG93SWRBdHRyKCksdGhpcy5hdHRyaWJ1dGVzKCksdGhpcy5hZGRVaWRBdHRyKCksdGhpcy5hZGRPdmVyZmxvd0F0dHIoKSx0aGlzLmVuYWJsZSh0LmVuYWJsZSksby5hZGRDbGFzcyhQK1wiIFwiK1UpLHQuaGlkZGVuJiZ0aGlzLmhpZGUoKSx0aGlzLmVsZW1lbnQuZGF0YSh7dHlwZTpcImJ1dHRvblwiLGJ1dHRvbjp0aGlzfSl9LF93cmFwOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50PXRoaXMuZWxlbWVudC53cmFwKFwiPGxpPjwvbGk+XCIpLnBhcmVudCgpfSxvdmVyZmxvd0hpZGRlbjpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5hZGRDbGFzcyhwdCl9LHNlbGVjdDpmdW5jdGlvbih0KXt0PT09ZSYmKHQ9ITEpLHRoaXMub3B0aW9ucy5pc0NoaWxkP3RoaXMuZWxlbWVudC50b2dnbGVDbGFzcyhNLHQpOnRoaXMuZWxlbWVudC5maW5kKFwiLmstYnV0dG9uXCIpLnRvZ2dsZUNsYXNzKE0sdCksdGhpcy5vcHRpb25zLnNlbGVjdGVkPXR9fSksXy50b29sYmFyLk92ZXJmbG93QnV0dG9uPWgsXy50b29sYmFyLnJlZ2lzdGVyQ29tcG9uZW50KFwiYnV0dG9uXCIscCxoKSx1PXIuZXh0ZW5kKHtjcmVhdGVCdXR0b25zOmZ1bmN0aW9uKGUpe3ZhciBvLGksbj10aGlzLm9wdGlvbnMscz1uLmJ1dHRvbnN8fFtdO2ZvcihpPTA7aTxzLmxlbmd0aDtpKyspc1tpXS51aWR8fChzW2ldLnVpZD1fLmd1aWQoKSksbz1uZXcgZSh0LmV4dGVuZCh7bW9iaWxlOm4ubW9iaWxlLGlzQ2hpbGQ6ITAsdHlwZTpcImJ1dHRvblwifSxzW2ldKSx0aGlzLnRvb2xiYXIpLG8uZWxlbWVudC5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmNoaWxkcmVuKCkuZmlsdGVyKFwiOm5vdCgnLlwiK1crXCInKTpmaXJzdFwiKS5hZGRDbGFzcyhOKSx0aGlzLmVsZW1lbnQuY2hpbGRyZW4oKS5maWx0ZXIoXCI6bm90KCcuXCIrVytcIicpOmxhc3RcIikuYWRkQ2xhc3MoSyl9fSksXy50b29sYmFyLkJ1dHRvbkdyb3VwPXUsYz11LmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLG8pe3ZhciBpPXRoaXMuZWxlbWVudD10KFwiPGRpdj48L2Rpdj5cIik7dGhpcy5vcHRpb25zPWUsdGhpcy50b29sYmFyPW8sdGhpcy5hZGRJZEF0dHIoKSxlLmFsaWduJiZpLmFkZENsYXNzKFwiay1hbGlnbi1cIitlLmFsaWduKSx0aGlzLmNyZWF0ZUJ1dHRvbnMocCksdGhpcy5hdHRyaWJ1dGVzKCksdGhpcy5hZGRVaWRBdHRyKCksdGhpcy5hZGRPdmVyZmxvd0F0dHIoKSx0aGlzLnJlZnJlc2goKSxpLmFkZENsYXNzKEcpLHRoaXMuZWxlbWVudC5kYXRhKHt0eXBlOlwiYnV0dG9uR3JvdXBcIixidXR0b25Hcm91cDp0aGlzfSl9fSksXy50b29sYmFyLlRvb2xCYXJCdXR0b25Hcm91cD1jLGY9dS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSxvKXt2YXIgaT10aGlzLmVsZW1lbnQ9dChcIjxsaT48L2xpPlwiKTt0aGlzLm9wdGlvbnM9ZSx0aGlzLnRvb2xiYXI9byx0aGlzLm92ZXJmbG93PSEwLHRoaXMuYWRkT3ZlcmZsb3dJZEF0dHIoKSx0aGlzLmNyZWF0ZUJ1dHRvbnMoaCksdGhpcy5hdHRyaWJ1dGVzKCksdGhpcy5hZGRVaWRBdHRyKCksdGhpcy5hZGRPdmVyZmxvd0F0dHIoKSx0aGlzLnJlZnJlc2goKSxpLmFkZENsYXNzKChlLm1vYmlsZT9cIlwiOkcpK1wiIGstb3ZlcmZsb3ctZ3JvdXBcIiksdGhpcy5lbGVtZW50LmRhdGEoe3R5cGU6XCJidXR0b25Hcm91cFwiLGJ1dHRvbkdyb3VwOnRoaXN9KX0sb3ZlcmZsb3dIaWRkZW46ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuYWRkQ2xhc3MocHQpfX0pLF8udG9vbGJhci5PdmVyZmxvd0J1dHRvbkdyb3VwPWYsXy50b29sYmFyLnJlZ2lzdGVyQ29tcG9uZW50KFwiYnV0dG9uR3JvdXBcIixjLGYpLG09ci5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSxvKXt2YXIgaT10aGlzLmVsZW1lbnQ9dCgnPGRpdiBjbGFzcz1cIicrRisnXCIgdGFiaW5kZXg9XCIwXCI+PC9kaXY+Jyk7dGhpcy5vcHRpb25zPWUsdGhpcy50b29sYmFyPW8sdGhpcy5tYWluQnV0dG9uPW5ldyBwKHQuZXh0ZW5kKHt9LGUse2hpZGRlbjohMX0pLG8pLHRoaXMuYXJyb3dCdXR0b249dCgnPGEgY2xhc3M9XCInK1UrXCIgXCIrWCsnXCI+PHNwYW4gY2xhc3M9XCInKyhlLm1vYmlsZT9cImttLWljb24ga20tYXJyb3dkb3duXCI6XCJrLWljb24gay1pLWFycm93LXNcIikrJ1wiPjwvc3Bhbj48L2E+JyksdGhpcy5wb3B1cEVsZW1lbnQ9dCgnPHVsIGNsYXNzPVwiJytMKydcIj48L3VsPicpLHRoaXMubWFpbkJ1dHRvbi5lbGVtZW50LnJlbW92ZUF0dHIoXCJocmVmIHRhYmluZGV4XCIpLmFwcGVuZFRvKGkpLHRoaXMuYXJyb3dCdXR0b24uYXBwZW5kVG8oaSksdGhpcy5wb3B1cEVsZW1lbnQuYXBwZW5kVG8oaSksZS5hbGlnbiYmaS5hZGRDbGFzcyhcImstYWxpZ24tXCIrZS5hbGlnbiksZS5pZHx8KGUuaWQ9ZS51aWQpLGkuYXR0cihcImlkXCIsZS5pZCtcIl93cmFwcGVyXCIpLHRoaXMuYWRkT3ZlcmZsb3dBdHRyKCksdGhpcy5hZGRVaWRBdHRyKCksdGhpcy5jcmVhdGVNZW51QnV0dG9ucygpLHRoaXMuY3JlYXRlUG9wdXAoKSx0aGlzLl9uYXZpZ2F0YWJsZSgpLHRoaXMubWFpbkJ1dHRvbi5tYWluPSEwLHRoaXMuZW5hYmxlKGUuZW5hYmxlKSxlLmhpZGRlbiYmdGhpcy5oaWRlKCksaS5kYXRhKHt0eXBlOlwic3BsaXRCdXR0b25cIixzcGxpdEJ1dHRvbjp0aGlzLGtlbmRvUG9wdXA6dGhpcy5wb3B1cH0pfSxfbmF2aWdhdGFibGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UucG9wdXBFbGVtZW50Lm9uKFwia2V5ZG93blwiLFwiLlwiK1UsZnVuY3Rpb24obyl7dmFyIGk9dChvLnRhcmdldCkucGFyZW50KCk7by5wcmV2ZW50RGVmYXVsdCgpLG8ua2V5Q29kZT09PU8uRVNDfHxvLmtleUNvZGU9PT1PLlRBQnx8by5hbHRLZXkmJm8ua2V5Q29kZT09PU8uVVA/KGUudG9nZ2xlKCksZS5mb2N1cygpKTpvLmtleUNvZGU9PT1PLkRPV04/bChpLFwibmV4dFwiKS5mb2N1cygpOm8ua2V5Q29kZT09PU8uVVA/bChpLFwicHJldlwiKS5mb2N1cygpOm8ua2V5Q29kZSE9PU8uU1BBQ0VCQVImJm8ua2V5Q29kZSE9PU8uRU5URVJ8fGUudG9vbGJhci51c2VyRXZlbnRzLnRyaWdnZXIoXCJ0YXBcIix7dGFyZ2V0OnQoby50YXJnZXQpfSl9KX0sY3JlYXRlTWVudUJ1dHRvbnM6ZnVuY3Rpb24oKXt2YXIgZSxvLGk9dGhpcy5vcHRpb25zLG49aS5tZW51QnV0dG9ucztmb3Iobz0wO288bi5sZW5ndGg7bysrKWU9bmV3IHAodC5leHRlbmQoe21vYmlsZTppLm1vYmlsZSx0eXBlOlwiYnV0dG9uXCIsY2xpY2s6aS5jbGlja30sbltvXSksdGhpcy50b29sYmFyKSxlLmVsZW1lbnQud3JhcChcIjxsaT48L2xpPlwiKS5wYXJlbnQoKS5hcHBlbmRUbyh0aGlzLnBvcHVwRWxlbWVudCl9LGNyZWF0ZVBvcHVwOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLGk9dGhpcy5lbGVtZW50O3RoaXMucG9wdXBFbGVtZW50LmF0dHIoXCJpZFwiLGUuaWQrXCJfb3B0aW9ubGlzdFwiKS5hdHRyKGh0LGUucm9vdFVpZCksZS5tb2JpbGUmJih0aGlzLnBvcHVwRWxlbWVudD1uKHRoaXMucG9wdXBFbGVtZW50KSksdGhpcy5wb3B1cD10aGlzLnBvcHVwRWxlbWVudC5rZW5kb1BvcHVwKHthcHBlbmRUbzplLm1vYmlsZT90KGUubW9iaWxlKS5jaGlsZHJlbihcIi5rbS1wYW5lXCIpOm51bGwsYW5jaG9yOmksaXNSdGw6dGhpcy50b29sYmFyLl9pc1J0bCxjb3B5QW5jaG9yU3R5bGVzOiExLGFuaW1hdGlvbjplLmFuaW1hdGlvbixvcGVuOm8sYWN0aXZhdGU6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuZmluZChcIjprZW5kb0ZvY3VzYWJsZVwiKS5maXJzdCgpLmZvY3VzKCl9LGNsb3NlOmZ1bmN0aW9uKCl7aS5mb2N1cygpfX0pLmRhdGEoXCJrZW5kb1BvcHVwXCIpLHRoaXMucG9wdXAuZWxlbWVudC5vbihldCxcImEuay1idXR0b25cIixzKX0scmVtb3ZlOmZ1bmN0aW9uKCl7dGhpcy5wb3B1cC5lbGVtZW50Lm9mZihldCxcImEuay1idXR0b25cIiksdGhpcy5wb3B1cC5kZXN0cm95KCksdGhpcy5lbGVtZW50LnJlbW92ZSgpfSx0b2dnbGU6ZnVuY3Rpb24oKXt0aGlzLnBvcHVwLnRvZ2dsZSgpfSxlbmFibGU6ZnVuY3Rpb24odCl7dD09PWUmJih0PSEwKSx0aGlzLm1haW5CdXR0b24uZW5hYmxlKHQpLHRoaXMub3B0aW9ucy5lbmFibGU9dH0sZm9jdXM6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuZm9jdXMoKX0saGlkZTpmdW5jdGlvbigpe3RoaXMucG9wdXAmJnRoaXMucG9wdXAuY2xvc2UoKSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoVykuaGlkZSgpLHRoaXMub3B0aW9ucy5oaWRkZW49ITB9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoVykuaGlkZSgpLHRoaXMub3B0aW9ucy5oaWRkZW49ITF9fSksXy50b29sYmFyLlRvb2xCYXJTcGxpdEJ1dHRvbj1tLGI9ci5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSxvKXt2YXIgaSxuLHM9dGhpcy5lbGVtZW50PXQoJzxsaSBjbGFzcz1cIicrRisnXCI+PC9saT4nKSxsPWUubWVudUJ1dHRvbnM7Zm9yKHRoaXMub3B0aW9ucz1lLHRoaXMudG9vbGJhcj1vLHRoaXMub3ZlcmZsb3c9ITAsdGhpcy5tYWluQnV0dG9uPW5ldyBoKHQuZXh0ZW5kKHtpc0NoaWxkOiEwfSxlKSksdGhpcy5tYWluQnV0dG9uLmVsZW1lbnQuYXBwZW5kVG8ocyksbj0wO248bC5sZW5ndGg7bisrKWk9bmV3IGgodC5leHRlbmQoe21vYmlsZTplLm1vYmlsZSxpc0NoaWxkOiEwfSxsW25dKSx0aGlzLnRvb2xiYXIpLGkuZWxlbWVudC5hcHBlbmRUbyhzKTt0aGlzLmFkZFVpZEF0dHIoKSx0aGlzLmFkZE92ZXJmbG93QXR0cigpLHRoaXMubWFpbkJ1dHRvbi5tYWluPSEwLHMuZGF0YSh7dHlwZTpcInNwbGl0QnV0dG9uXCIsc3BsaXRCdXR0b246dGhpc30pfSxvdmVyZmxvd0hpZGRlbjpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5hZGRDbGFzcyhwdCl9fSksXy50b29sYmFyLk92ZXJmbG93U3BsaXRCdXR0b249YixfLnRvb2xiYXIucmVnaXN0ZXJDb21wb25lbnQoXCJzcGxpdEJ1dHRvblwiLG0sYiksdj1yLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLG8pe3ZhciBpPXRoaXMuZWxlbWVudD10KFwiPGRpdj4mbmJzcDs8L2Rpdj5cIik7dGhpcy5lbGVtZW50PWksdGhpcy5vcHRpb25zPWUsdGhpcy50b29sYmFyPW8sdGhpcy5hdHRyaWJ1dGVzKCksdGhpcy5hZGRJZEF0dHIoKSx0aGlzLmFkZFVpZEF0dHIoKSx0aGlzLmFkZE92ZXJmbG93QXR0cigpLGkuYWRkQ2xhc3MoSCksaS5kYXRhKHt0eXBlOlwic2VwYXJhdG9yXCIsc2VwYXJhdG9yOnRoaXN9KX19KSxnPXIuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsbyl7dmFyIGk9dGhpcy5lbGVtZW50PXQoXCI8bGk+Jm5ic3A7PC9saT5cIik7dGhpcy5lbGVtZW50PWksdGhpcy5vcHRpb25zPWUsdGhpcy50b29sYmFyPW8sdGhpcy5vdmVyZmxvdz0hMCx0aGlzLmF0dHJpYnV0ZXMoKSx0aGlzLmFkZFVpZEF0dHIoKSx0aGlzLmFkZE92ZXJmbG93SWRBdHRyKCksaS5hZGRDbGFzcyhIKSxpLmRhdGEoe3R5cGU6XCJzZXBhcmF0b3JcIixzZXBhcmF0b3I6dGhpc30pfSxvdmVyZmxvd0hpZGRlbjpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5hZGRDbGFzcyhwdCl9fSksXy50b29sYmFyLnJlZ2lzdGVyQ29tcG9uZW50KFwic2VwYXJhdG9yXCIsdixnKSx3PXIuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsbyxpKXt2YXIgbj1UKGUpP2Uobyk6ZTtuPW4gaW5zdGFuY2VvZiBqUXVlcnk/bi53cmFwKFwiPGRpdj48L2Rpdj5cIikucGFyZW50KCk6dChcIjxkaXY+PC9kaXY+XCIpLmh0bWwobiksdGhpcy5lbGVtZW50PW4sdGhpcy5vcHRpb25zPW8sdGhpcy5vcHRpb25zLnR5cGU9XCJ0ZW1wbGF0ZVwiLHRoaXMudG9vbGJhcj1pLHRoaXMuYXR0cmlidXRlcygpLHRoaXMuYWRkVWlkQXR0cigpLHRoaXMuYWRkSWRBdHRyKCksdGhpcy5hZGRPdmVyZmxvd0F0dHIoKSxuLmRhdGEoe3R5cGU6XCJ0ZW1wbGF0ZVwiLHRlbXBsYXRlOnRoaXN9KX19KSxfLnRvb2xiYXIuVGVtcGxhdGVJdGVtPXcsaz1yLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLG8saSl7dmFyIG49dChUKGUpP2Uobyk6ZSk7bj1uIGluc3RhbmNlb2YgalF1ZXJ5P24ud3JhcChcIjxsaT48L2xpPlwiKS5wYXJlbnQoKTp0KFwiPGxpPjwvbGk+XCIpLmh0bWwobiksdGhpcy5lbGVtZW50PW4sdGhpcy5vcHRpb25zPW8sdGhpcy5vcHRpb25zLnR5cGU9XCJ0ZW1wbGF0ZVwiLHRoaXMudG9vbGJhcj1pLHRoaXMub3ZlcmZsb3c9ITAsdGhpcy5hdHRyaWJ1dGVzKCksdGhpcy5hZGRVaWRBdHRyKCksdGhpcy5hZGRPdmVyZmxvd0lkQXR0cigpLHRoaXMuYWRkT3ZlcmZsb3dBdHRyKCksbi5kYXRhKHt0eXBlOlwidGVtcGxhdGVcIix0ZW1wbGF0ZTp0aGlzfSl9LG92ZXJmbG93SGlkZGVuOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmFkZENsYXNzKHB0KX19KSxfLnRvb2xiYXIuT3ZlcmZsb3dUZW1wbGF0ZUl0ZW09ayxDPUEuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMubmFtZT10LHRoaXMuYnV0dG9ucz1bXX0sYWRkOmZ1bmN0aW9uKHQpe3RoaXMuYnV0dG9uc1t0aGlzLmJ1dHRvbnMubGVuZ3RoXT10fSxyZW1vdmU6ZnVuY3Rpb24oZSl7dmFyIG89dC5pbkFycmF5KGUsdGhpcy5idXR0b25zKTt0aGlzLmJ1dHRvbnMuc3BsaWNlKG8sMSl9LHNlbGVjdDpmdW5jdGlvbih0KXt2YXIgZSxvO2ZvcihvPTA7bzx0aGlzLmJ1dHRvbnMubGVuZ3RoO28rKyllPXRoaXMuYnV0dG9uc1tvXSxlLnNlbGVjdCghMSk7dC5zZWxlY3QoITApLHQudHdpbigpJiZ0LnR3aW4oKS5zZWxlY3QoITApfX0pLHk9eC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSxvKXt2YXIgbixsPXRoaXM7aWYoeC5mbi5pbml0LmNhbGwobCxlLG8pLG89bC5vcHRpb25zLGU9bC53cmFwcGVyPWwuZWxlbWVudCxlLmFkZENsYXNzKEkrXCIgay13aWRnZXRcIiksdGhpcy51aWQ9Xy5ndWlkKCksdGhpcy5faXNSdGw9Xy5zdXBwb3J0LmlzUnRsKGUpLHRoaXMuX2dyb3Vwcz17fSxlLmF0dHIoaHQsdGhpcy51aWQpLGwuaXNNb2JpbGU9XCJib29sZWFuXCI9PXR5cGVvZiBvLm1vYmlsZT9vLm1vYmlsZTpsLmVsZW1lbnQuY2xvc2VzdChcIi5rbS1yb290XCIpWzBdLGwuYW5pbWF0aW9uPWwuaXNNb2JpbGU/e29wZW46e2VmZmVjdHM6XCJmYWRlXCJ9fTp7fSxsLmlzTW9iaWxlJiYoZS5hZGRDbGFzcyhcImttLXdpZGdldFwiKSxRPVwia20taWNvblwiLFY9XCJrbS1cIixVPVwia20tYnV0dG9uXCIsRz1cImttLWJ1dHRvbmdyb3VwIGttLXdpZGdldFwiLE09XCJrbS1zdGF0ZS1hY3RpdmVcIixTPVwia20tc3RhdGUtZGlzYWJsZWRcIiksby5yZXNpemFibGU/KGwuX3JlbmRlck92ZXJmbG93KCksZS5hZGRDbGFzcyhSKSxsLm92ZXJmbG93VXNlckV2ZW50cz1uZXcgXy5Vc2VyRXZlbnRzKGwuZWxlbWVudCx7dGhyZXNob2xkOjUsYWxsb3dTZWxlY3Rpb246ITAsZmlsdGVyOlwiLlwiK1ksdGFwOkIobC5fdG9nZ2xlT3ZlcmZsb3csbCl9KSxsLl9yZXNpemVIYW5kbGVyPV8ub25SZXNpemUoZnVuY3Rpb24oKXtsLnJlc2l6ZSgpfSkpOmwucG9wdXA9e2VsZW1lbnQ6dChbXSl9LG8uaXRlbXMmJm8uaXRlbXMubGVuZ3RoKWZvcihuPTA7bjxvLml0ZW1zLmxlbmd0aDtuKyspbC5hZGQoby5pdGVtc1tuXSk7bC51c2VyRXZlbnRzPW5ldyBfLlVzZXJFdmVudHMoZG9jdW1lbnQse3RocmVzaG9sZDo1LGFsbG93U2VsZWN0aW9uOiEwLGZpbHRlcjpcIltcIitodCtcIj1cIit0aGlzLnVpZCtcIl0gYS5cIitVK1wiLCBbXCIraHQrXCI9XCIrdGhpcy51aWQrXCJdIC5cIitQLHRhcDpCKGwuX2J1dHRvbkNsaWNrLGwpLHByZXNzOmkscmVsZWFzZTppfSksbC5lbGVtZW50Lm9uKGV0LFwiYS5rLWJ1dHRvblwiLHMpLGwuX25hdmlnYXRhYmxlKCksby5yZXNpemFibGUmJmwucG9wdXAuZWxlbWVudC5vbihldCxOYU4scyksby5yZXNpemFibGUmJnRoaXMuX3RvZ2dsZU92ZXJmbG93QW5jaG9yKCksXy5ub3RpZnkobCl9LGV2ZW50czpbZXQsb3QsaXQsbnQsc3QsbHRdLG9wdGlvbnM6e25hbWU6XCJUb29sQmFyXCIsaXRlbXM6W10scmVzaXphYmxlOiEwLG1vYmlsZTpudWxsfSxhZGRUb0dyb3VwOmZ1bmN0aW9uKHQsZSl7dmFyIG87cmV0dXJuIG89dGhpcy5fZ3JvdXBzW2VdP3RoaXMuX2dyb3Vwc1tlXTp0aGlzLl9ncm91cHNbZV09bmV3IEMsby5hZGQodCksb30sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5lbGVtZW50LmZpbmQoXCIuXCIrRikuZWFjaChmdW5jdGlvbihlLG8pe3QobykuZGF0YShcImtlbmRvUG9wdXBcIikuZGVzdHJveSgpfSksZS5lbGVtZW50Lm9mZihldCxcImEuay1idXR0b25cIiksZS51c2VyRXZlbnRzLmRlc3Ryb3koKSxlLm9wdGlvbnMucmVzaXphYmxlJiYoXy51bmJpbmRSZXNpemUoZS5fcmVzaXplSGFuZGxlciksZS5vdmVyZmxvd1VzZXJFdmVudHMuZGVzdHJveSgpLGUucG9wdXAuZWxlbWVudC5vZmYoZXQsXCJhLmstYnV0dG9uXCIpLGUucG9wdXAuZGVzdHJveSgpKSx4LmZuLmRlc3Ryb3kuY2FsbChlKX0sYWRkOmZ1bmN0aW9uKGUpe3ZhciBvLGksbixzPWFbZS50eXBlXSxsPWUudGVtcGxhdGUscj10aGlzLGQ9ci5pc01vYmlsZT9cIlwiOlwiay1pdGVtIGstc3RhdGUtZGVmYXVsdFwiLHA9ZS5vdmVyZmxvd1RlbXBsYXRlO2lmKHQuZXh0ZW5kKGUse3VpZDpfLmd1aWQoKSxhbmltYXRpb246ci5hbmltYXRpb24sbW9iaWxlOnIuaXNNb2JpbGUscm9vdFVpZDpyLnVpZH0pLGUubWVudUJ1dHRvbnMpZm9yKG49MDtuPGUubWVudUJ1dHRvbnMubGVuZ3RoO24rKyl0LmV4dGVuZChlLm1lbnVCdXR0b25zW25dLHt1aWQ6Xy5ndWlkKCl9KTtsJiYhcD9lLm92ZXJmbG93PWF0OmUub3ZlcmZsb3d8fChlLm92ZXJmbG93PXJ0KSxlLm92ZXJmbG93IT09YXQmJnIub3B0aW9ucy5yZXNpemFibGUmJihwP2k9bmV3IGsocCxlLHIpOnMmJihpPW5ldyBzLm92ZXJmbG93KGUsciksaS5lbGVtZW50LmFkZENsYXNzKGQpKSxpJiYoZS5vdmVyZmxvdz09PXJ0JiZpLm92ZXJmbG93SGlkZGVuKCksaS5lbGVtZW50LmFwcGVuZFRvKHIucG9wdXAuY29udGFpbmVyKSxyLmFuZ3VsYXIoXCJjb21waWxlXCIsZnVuY3Rpb24oKXtyZXR1cm57ZWxlbWVudHM6aS5lbGVtZW50LmdldCgpfX0pKSksZS5vdmVyZmxvdyE9PWR0JiYobD9vPW5ldyB3KGwsZSxyKTpzJiYobz1uZXcgcy50b29sYmFyKGUscikpLG8mJihyLm9wdGlvbnMucmVzaXphYmxlPyhvLmVsZW1lbnQuYXBwZW5kVG8oci5lbGVtZW50KS5jc3MoXCJ2aXNpYmlsaXR5XCIsXCJoaWRkZW5cIiksci5fc2hyaW5rKHIuZWxlbWVudC5pbm5lcldpZHRoKCkpLG8uZWxlbWVudC5jc3MoXCJ2aXNpYmlsaXR5XCIsXCJ2aXNpYmxlXCIpKTpvLmVsZW1lbnQuYXBwZW5kVG8oci5lbGVtZW50KSxyLmFuZ3VsYXIoXCJjb21waWxlXCIsZnVuY3Rpb24oKXtyZXR1cm57ZWxlbWVudHM6by5lbGVtZW50LmdldCgpfX0pKSl9LF9nZXRJdGVtOmZ1bmN0aW9uKGUpe3ZhciBvLGksbixzLGw9dGhpcy5vcHRpb25zLnJlc2l6YWJsZTtyZXR1cm4gbz10aGlzLmVsZW1lbnQuZmluZChlKSxvLmxlbmd0aHx8KG89dChcIi5rLXNwbGl0LWNvbnRhaW5lcltkYXRhLXVpZD1cIit0aGlzLnVpZCtcIl1cIikuZmluZChlKSkscz1vLmxlbmd0aD9vLmRhdGEoXCJ0eXBlXCIpOlwiXCIsaT1vLmRhdGEocyksaT8oaS5tYWluJiYobz1vLnBhcmVudChcIi5cIitGKSxzPVwic3BsaXRCdXR0b25cIixpPW8uZGF0YShzKSksbCYmKG49aS50d2luKCkpKTpsJiYobz10aGlzLnBvcHVwLmVsZW1lbnQuZmluZChlKSxzPW8ubGVuZ3RoP28uZGF0YShcInR5cGVcIik6XCJcIixuPW8uZGF0YShzKSxuJiZuLm1haW4mJihvPW8ucGFyZW50KFwiLlwiK0YpLHM9XCJzcGxpdEJ1dHRvblwiLG49by5kYXRhKHMpKSkse3R5cGU6cyx0b29sYmFyOmksb3ZlcmZsb3c6bn19LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXRJdGVtKHQpO2UudG9vbGJhciYmZS50b29sYmFyLnJlbW92ZSgpLGUub3ZlcmZsb3cmJmUub3ZlcmZsb3cucmVtb3ZlKCksdGhpcy5yZXNpemUoITApfSxoaWRlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2dldEl0ZW0odCk7ZS50b29sYmFyJiYoXCJidXR0b25cIj09PWUudG9vbGJhci5vcHRpb25zLnR5cGUmJmUudG9vbGJhci5vcHRpb25zLmlzQ2hpbGQ/KGUudG9vbGJhci5oaWRlKCksZS50b29sYmFyLmdldFBhcmVudEdyb3VwKCkucmVmcmVzaCgpKTplLnRvb2xiYXIub3B0aW9ucy5oaWRkZW58fGUudG9vbGJhci5oaWRlKCkpLGUub3ZlcmZsb3cmJihcImJ1dHRvblwiPT09ZS5vdmVyZmxvdy5vcHRpb25zLnR5cGUmJmUub3ZlcmZsb3cub3B0aW9ucy5pc0NoaWxkPyhlLm92ZXJmbG93LmhpZGUoKSxlLm92ZXJmbG93LmdldFBhcmVudEdyb3VwKCkucmVmcmVzaCgpKTplLm92ZXJmbG93Lm9wdGlvbnMuaGlkZGVufHxlLm92ZXJmbG93LmhpZGUoKSksdGhpcy5yZXNpemUoITApfSxzaG93OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2dldEl0ZW0odCk7ZS50b29sYmFyJiYoXCJidXR0b25cIj09PWUudG9vbGJhci5vcHRpb25zLnR5cGUmJmUudG9vbGJhci5vcHRpb25zLmlzQ2hpbGQ/KGUudG9vbGJhci5zaG93KCksZS50b29sYmFyLmdldFBhcmVudEdyb3VwKCkucmVmcmVzaCgpKTplLnRvb2xiYXIub3B0aW9ucy5oaWRkZW4mJmUudG9vbGJhci5zaG93KCkpLGUub3ZlcmZsb3cmJihcImJ1dHRvblwiPT09ZS5vdmVyZmxvdy5vcHRpb25zLnR5cGUmJmUub3ZlcmZsb3cub3B0aW9ucy5pc0NoaWxkPyhlLnRvb2xiYXIuc2hvdygpLGUub3ZlcmZsb3cuZ2V0UGFyZW50R3JvdXAoKS5yZWZyZXNoKCkpOmUub3ZlcmZsb3cub3B0aW9ucy5oaWRkZW4mJmUub3ZlcmZsb3cuc2hvdygpKSx0aGlzLnJlc2l6ZSghMCl9LGVuYWJsZTpmdW5jdGlvbih0LG8pe3ZhciBpPXRoaXMuX2dldEl0ZW0odCk7ZT09PW8mJihvPSEwKSxpLnRvb2xiYXImJmkudG9vbGJhci5lbmFibGUobyksaS5vdmVyZmxvdyYmaS5vdmVyZmxvdy5lbmFibGUobyl9LGdldFNlbGVjdGVkRnJvbUdyb3VwOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVsZW1lbnQuZmluZChcIi5cIit6K1wiW2RhdGEtZ3JvdXA9J1wiK3QrXCInXVwiKS5maWx0ZXIoXCIuXCIrTSl9LHRvZ2dsZTpmdW5jdGlvbihvLGkpe3ZhciBuPXQobykscz1uLmRhdGEoXCJidXR0b25cIik7cy5vcHRpb25zLnRvZ2dsYWJsZSYmKGk9PT1lJiYoaT0hMCkscy50b2dnbGUoaSwhMCkpfSxfcmVuZGVyT3ZlcmZsb3c6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG89YS5vdmVyZmxvd0NvbnRhaW5lcixpPWUuX2lzUnRsLHM9aT9cImxlZnRcIjpcInJpZ2h0XCI7ZS5vdmVyZmxvd0FuY2hvcj10KGEub3ZlcmZsb3dBbmNob3IpLmFkZENsYXNzKFUpLGUuZWxlbWVudC5hcHBlbmQoZS5vdmVyZmxvd0FuY2hvciksZS5pc01vYmlsZT8oZS5vdmVyZmxvd0FuY2hvci5hcHBlbmQoJzxzcGFuIGNsYXNzPVwia20taWNvbiBrbS1tb3JlXCI+PC9zcGFuPicpLG89bihvKSk6ZS5vdmVyZmxvd0FuY2hvci5hcHBlbmQoJzxzcGFuIGNsYXNzPVwiay1pY29uIGstaS1hcnJvdy1zXCI+PC9zcGFuPicpLGUucG9wdXA9bmV3IF8udWkuUG9wdXAobyx7b3JpZ2luOlwiYm90dG9tIFwiK3MscG9zaXRpb246XCJ0b3AgXCIrcyxhbmNob3I6ZS5vdmVyZmxvd0FuY2hvcixpc1J0bDppLGFuaW1hdGlvbjplLmFuaW1hdGlvbixhcHBlbmRUbzplLmlzTW9iaWxlP3QoZS5pc01vYmlsZSkuY2hpbGRyZW4oXCIua20tcGFuZVwiKTpudWxsLGNvcHlBbmNob3JTdHlsZXM6ITEsb3BlbjpmdW5jdGlvbihvKXt2YXIgbj1fLndyYXAoZS5wb3B1cC5lbGVtZW50KS5hZGRDbGFzcyhcImstb3ZlcmZsb3ctd3JhcHBlclwiKTtlLmlzTW9iaWxlP2UucG9wdXAuY29udGFpbmVyLmNzcyhcIm1heC1oZWlnaHRcIixwYXJzZUZsb2F0KHQoXCIua20tY29udGVudDp2aXNpYmxlXCIpLmlubmVySGVpZ2h0KCkpLTE1K1wicHhcIik6bi5jc3MoXCJtYXJnaW4tbGVmdFwiLChpPy0xOjEpKigoRShuKS1uLndpZHRoKCkpLzIrMSkpLGUudHJpZ2dlcihzdCkmJm8ucHJldmVudERlZmF1bHQoKX0sYWN0aXZhdGU6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuZmluZChcIjprZW5kb0ZvY3VzYWJsZVwiKS5maXJzdCgpLmZvY3VzKCl9LGNsb3NlOmZ1bmN0aW9uKHQpe2UudHJpZ2dlcihsdCkmJnQucHJldmVudERlZmF1bHQoKSx0aGlzLmVsZW1lbnQuZm9jdXMoKX19KSxlLnBvcHVwLmVsZW1lbnQub24oXCJrZXlkb3duXCIsXCIuXCIrVSxmdW5jdGlvbihvKXt2YXIgaSxuPXQoby50YXJnZXQpLHM9bi5wYXJlbnQoKSxhPXMuaXMoXCIuXCIrRyl8fHMuaXMoXCIuXCIrRik7by5wcmV2ZW50RGVmYXVsdCgpLG8ua2V5Q29kZT09PU8uRVNDfHxvLmtleUNvZGU9PT1PLlRBQnx8by5hbHRLZXkmJm8ua2V5Q29kZT09PU8uVVA/KGUuX3RvZ2dsZU92ZXJmbG93KCksZS5vdmVyZmxvd0FuY2hvci5mb2N1cygpKTpvLmtleUNvZGU9PT1PLkRPV04/KGk9IWF8fGEmJm4uaXMoXCI6bGFzdC1jaGlsZFwiKT9zOm4sbChpLFwibmV4dFwiKS5mb2N1cygpKTpvLmtleUNvZGU9PT1PLlVQPyhpPSFhfHxhJiZuLmlzKFwiOmZpcnN0LWNoaWxkXCIpP3M6bixsKGksXCJwcmV2XCIpLmZvY3VzKCkpOm8ua2V5Q29kZSE9PU8uU1BBQ0VCQVImJm8ua2V5Q29kZSE9PU8uRU5URVJ8fGUudXNlckV2ZW50cy50cmlnZ2VyKFwidGFwXCIse3RhcmdldDp0KG8udGFyZ2V0KX0pfSksZS5wb3B1cC5jb250YWluZXI9ZS5pc01vYmlsZT9lLnBvcHVwLmVsZW1lbnQuZmluZChcIi5cIitaKTplLnBvcHVwLmVsZW1lbnQsZS5wb3B1cC5jb250YWluZXIuYXR0cihodCx0aGlzLnVpZCl9LF90b2dnbGVPdmVyZmxvd0FuY2hvcjpmdW5jdGlvbigpe3ZhciB0PSExO3Q9dGhpcy5vcHRpb25zLm1vYmlsZT90aGlzLnBvcHVwLmVsZW1lbnQuZmluZChcIi5cIitaKS5jaGlsZHJlbihcIjpub3QoLlwiK3B0K1wiLCAuXCIrRCtcIilcIikubGVuZ3RoPjA6dGhpcy5wb3B1cC5lbGVtZW50LmNoaWxkcmVuKFwiOm5vdCguXCIrcHQrXCIsIC5cIitEK1wiKVwiKS5sZW5ndGg+MCx0aGlzLm92ZXJmbG93QW5jaG9yLmNzcyh0P3t2aXNpYmlsaXR5OlwidmlzaWJsZVwiLHdpZHRoOlwiXCJ9Ont2aXNpYmlsaXR5OlwiaGlkZGVuXCIsd2lkdGg6XCIxcHhcIn0pfSxfYnV0dG9uQ2xpY2s6ZnVuY3Rpb24obyl7dmFyIGksbixzLGwsYSxyLGQscD10aGlzLGg9by50YXJnZXQuY2xvc2VzdChcIi5cIitYKS5sZW5ndGg7cmV0dXJuIG8ucHJldmVudERlZmF1bHQoKSxoPyhwLl90b2dnbGUobyksZSk6KG49dChvLnRhcmdldCkuY2xvc2VzdChcIi5cIitVLHAuZWxlbWVudCksbi5oYXNDbGFzcyhZKXx8KHM9bi5kYXRhKFwiYnV0dG9uXCIpLCFzJiZwLnBvcHVwJiYobj10KG8udGFyZ2V0KS5jbG9zZXN0KFwiLlwiK1AscC5wb3B1cC5jb250YWluZXIpLHM9bi5wYXJlbnQoXCJsaVwiKS5kYXRhKFwiYnV0dG9uXCIpKSxzJiZzLm9wdGlvbnMuZW5hYmxlJiYocy5vcHRpb25zLnRvZ2dsYWJsZT8oYT1UKHMudG9nZ2xlSGFuZGxlcik/cy50b2dnbGVIYW5kbGVyOm51bGwscy50b2dnbGUoIXMub3B0aW9ucy5zZWxlY3RlZCwhMCkscj17dGFyZ2V0Om4sZ3JvdXA6cy5vcHRpb25zLmdyb3VwLGNoZWNrZWQ6cy5vcHRpb25zLnNlbGVjdGVkLGlkOnMub3B0aW9ucy5pZH0sYSYmYS5jYWxsKHAscikscC50cmlnZ2VyKG90LHIpKTooYT1UKHMuY2xpY2tIYW5kbGVyKT9zLmNsaWNrSGFuZGxlcjpudWxsLHI9e3NlbmRlcjpwLHRhcmdldDpuLGlkOnMub3B0aW9ucy5pZH0sYSYmYS5jYWxsKHAscikscC50cmlnZ2VyKGV0LHIpKSxzLm9wdGlvbnMudXJsJiYocy5vcHRpb25zLmF0dHJpYnV0ZXMmJnMub3B0aW9ucy5hdHRyaWJ1dGVzLnRhcmdldCYmKGQ9cy5vcHRpb25zLmF0dHJpYnV0ZXMudGFyZ2V0KSx3aW5kb3cub3BlbihzLm9wdGlvbnMudXJsLGR8fFwiX3NlbGZcIikpLG4uaGFzQ2xhc3MoUCkmJnAucG9wdXAuY2xvc2UoKSxsPW4uY2xvc2VzdChcIi5rLXNwbGl0LWNvbnRhaW5lclwiKSxsWzBdJiYoaT1sLmRhdGEoXCJrZW5kb1BvcHVwXCIpLChpP2k6bC5wYXJlbnRzKFwiLmttLXBvcHVwLXdyYXBwZXJcIikuZGF0YShcImtlbmRvUG9wdXBcIikpLmNsb3NlKCkpKSksZSl9LF9uYXZpZ2F0YWJsZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5lbGVtZW50LmF0dHIoXCJ0YWJpbmRleFwiLDApLmZvY3VzKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKS5maW5kKFwiOmtlbmRvRm9jdXNhYmxlOmZpcnN0XCIpO2UuaXMoXCIuXCIrWSkmJihlPWwoZSxcIm5leHRcIikpLGVbMF0uZm9jdXMoKX0pLm9uKFwia2V5ZG93blwiLEIoZS5fa2V5ZG93bixlKSl9LF9rZXlkb3duOmZ1bmN0aW9uKG8pe3ZhciBpLG4scyxsLGEscixkLHA9dChvLnRhcmdldCksaD1vLmtleUNvZGUsdT10aGlzLmVsZW1lbnQuY2hpbGRyZW4oXCI6bm90KC5rLXNlcGFyYXRvcik6dmlzaWJsZVwiKTtyZXR1cm4gaD09PU8uVEFCJiYoaT1wLnBhcmVudHNVbnRpbCh0aGlzLmVsZW1lbnQpLmxhc3QoKSxuPSExLHM9ITEsaS5sZW5ndGh8fChpPXApLGkuaXMoXCIuXCIrWSkmJihvLnNoaWZ0S2V5JiZvLnByZXZlbnREZWZhdWx0KCksdS5sYXN0KCkuaXMoXCI6a2VuZG9Gb2N1c2FibGVcIik/dS5sYXN0KCkuZm9jdXMoKTp1Lmxhc3QoKS5maW5kKFwiOmtlbmRvRm9jdXNhYmxlXCIpLmxhc3QoKS5mb2N1cygpKSxvLnNoaWZ0S2V5fHx1LmluZGV4KGkpIT09dS5sZW5ndGgtMXx8KG49IWkuaXMoXCIuXCIrRyl8fHAuaXMoXCI6bGFzdC1jaGlsZFwiKSksbD11LmluZGV4KGkpPT09dS5ub3QoXCIuay1vdmVyZmxvdy1hbmNob3JcIikuZmlyc3QoKS5pbmRleCgpLG8uc2hpZnRLZXkmJmwmJihzPSFpLmlzKFwiLlwiK0cpfHxwLmlzKFwiOmZpcnN0LWNoaWxkXCIpKSxuJiZ0aGlzLm92ZXJmbG93QW5jaG9yJiZcImhpZGRlblwiIT09dGhpcy5vdmVyZmxvd0FuY2hvci5jc3MoXCJ2aXNpYmlsaXR5XCIpJiYoby5wcmV2ZW50RGVmYXVsdCgpLHRoaXMub3ZlcmZsb3dBbmNob3IuZm9jdXMoKSkscyYmKG8ucHJldmVudERlZmF1bHQoKSxhPXRoaXMuX2dldFByZXZGb2N1c2FibGUodGhpcy53cmFwcGVyKSxhJiZhLmZvY3VzKCkpKSxvLmFsdEtleSYmaD09PU8uRE9XTj8ocj10KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpLmRhdGEoXCJzcGxpdEJ1dHRvblwiKSxkPXQoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkuaXMoXCIuXCIrWSkscj9yLnRvZ2dsZSgpOmQmJnRoaXMuX3RvZ2dsZU92ZXJmbG93KCksZSk6aCE9PU8uU1BBQ0VCQVImJmghPT1PLkVOVEVSfHxwLmlzKFwiaW5wdXQsIGNoZWNrYm94XCIpP2U6KG8ucHJldmVudERlZmF1bHQoKSxwLmlzKFwiLlwiK0YpJiYocD1wLmNoaWxkcmVuKCkuZmlyc3QoKSksdGhpcy51c2VyRXZlbnRzLnRyaWdnZXIoXCJ0YXBcIix7dGFyZ2V0OnB9KSxlKX0sX2dldFByZXZGb2N1c2FibGU6ZnVuY3Rpb24obyl7aWYoby5pcyhcImh0bWxcIikpcmV0dXJuIG87dmFyIGksbixzPW8ucHJldkFsbCgpO3JldHVybiBzLmVhY2goZnVuY3Rpb24oKXtyZXR1cm4gbj10KHRoaXMpLG4uaXMoXCI6a2VuZG9Gb2N1c2FibGVcIik/KGk9biwhMSk6bi5maW5kKFwiOmtlbmRvRm9jdXNhYmxlXCIpLmxlbmd0aD4wPyhpPW4uZmluZChcIjprZW5kb0ZvY3VzYWJsZVwiKS5sYXN0KCksITEpOmV9KSxpP2k6dGhpcy5fZ2V0UHJldkZvY3VzYWJsZShvLnBhcmVudCgpKX0sX3RvZ2dsZTpmdW5jdGlvbihlKXt2YXIgbyxpPXQoZS50YXJnZXQpLmNsb3Nlc3QoXCIuXCIrRikuZGF0YShcInNwbGl0QnV0dG9uXCIpO2UucHJldmVudERlZmF1bHQoKSxpLm9wdGlvbnMuZW5hYmxlJiYobz1pLnBvcHVwLmVsZW1lbnQuaXMoXCI6dmlzaWJsZVwiKT90aGlzLnRyaWdnZXIobnQse3RhcmdldDppLmVsZW1lbnR9KTp0aGlzLnRyaWdnZXIoaXQse3RhcmdldDppLmVsZW1lbnR9KSxvfHxpLnRvZ2dsZSgpKX0sX3RvZ2dsZU92ZXJmbG93OmZ1bmN0aW9uKCl7dGhpcy5wb3B1cC50b2dnbGUoKX0sX3Jlc2l6ZTpmdW5jdGlvbih0KXt2YXIgZT10LndpZHRoO3RoaXMub3B0aW9ucy5yZXNpemFibGUmJih0aGlzLnBvcHVwLmNsb3NlKCksdGhpcy5fc2hyaW5rKGUpLHRoaXMuX3N0cmV0Y2goZSksdGhpcy5fbWFya1Zpc2libGVzKCksdGhpcy5fdG9nZ2xlT3ZlcmZsb3dBbmNob3IoKSl9LF9jaGlsZHJlbldpZHRoOmZ1bmN0aW9uKCl7dmFyIGU9MDtyZXR1cm4gdGhpcy5lbGVtZW50LmNoaWxkcmVuKFwiOnZpc2libGU6bm90KCcuXCIrVytcIicpXCIpLmVhY2goZnVuY3Rpb24oKXtlKz1FKHQodGhpcyksITApfSksTWF0aC5jZWlsKGUpfSxfc2hyaW5rOmZ1bmN0aW9uKHQpe3ZhciBlLG8saTtpZih0PHRoaXMuX2NoaWxkcmVuV2lkdGgoKSlmb3Iobz10aGlzLmVsZW1lbnQuY2hpbGRyZW4oXCI6dmlzaWJsZTpub3QoW2RhdGEtb3ZlcmZsb3c9J25ldmVyJ10sIC5cIitZK1wiKVwiKSxpPW8ubGVuZ3RoLTE7aT49MCYmKGU9by5lcShpKSwhKHQ+dGhpcy5fY2hpbGRyZW5XaWR0aCgpKSk7aS0tKXRoaXMuX2hpZGVJdGVtKGUpfSxfc3RyZXRjaDpmdW5jdGlvbih0KXt2YXIgZSxvLGk7aWYodD50aGlzLl9jaGlsZHJlbldpZHRoKCkpZm9yKG89dGhpcy5lbGVtZW50LmNoaWxkcmVuKFwiOmhpZGRlbjpub3QoJy5cIitXK1wiJylcIiksaT0wO2k8by5sZW5ndGgmJihlPW8uZXEoaSksISh0PHRoaXMuX2NoaWxkcmVuV2lkdGgoKSkmJnRoaXMuX3Nob3dJdGVtKGUsdCkpO2krKyk7fSxfaGlkZUl0ZW06ZnVuY3Rpb24odCl7dC5oaWRlKCksdGhpcy5wb3B1cCYmdGhpcy5wb3B1cC5jb250YWluZXIuZmluZChcIj5saVtkYXRhLXVpZD0nXCIrdC5kYXRhKFwidWlkXCIpK1wiJ11cIikucmVtb3ZlQ2xhc3MocHQpfSxfc2hvd0l0ZW06ZnVuY3Rpb24odCxlKXtyZXR1cm4hISh0Lmxlbmd0aCYmZT50aGlzLl9jaGlsZHJlbldpZHRoKCkrRSh0LCEwKSkmJih0LnNob3coKSx0aGlzLnBvcHVwJiZ0aGlzLnBvcHVwLmNvbnRhaW5lci5maW5kKFwiPmxpW2RhdGEtdWlkPSdcIit0LmRhdGEoXCJ1aWRcIikrXCInXVwiKS5hZGRDbGFzcyhwdCksITApfSxfbWFya1Zpc2libGVzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wb3B1cC5jb250YWluZXIuY2hpbGRyZW4oKSxlPXRoaXMuZWxlbWVudC5jaGlsZHJlbihcIjpub3QoLmstb3ZlcmZsb3ctYW5jaG9yKVwiKSxvPXQuZmlsdGVyKFwiOm5vdCguay1vdmVyZmxvdy1oaWRkZW4pXCIpLGk9ZS5maWx0ZXIoXCI6dmlzaWJsZVwiKTt0LmFkZChlKS5yZW1vdmVDbGFzcygkK1wiIFwiK3R0KSxvLmZpcnN0KCkuYWRkKGkuZmlyc3QoKSkuYWRkQ2xhc3MoJCksby5sYXN0KCkuYWRkKGkubGFzdCgpKS5hZGRDbGFzcyh0dCl9fSksXy51aS5wbHVnaW4oeSl9KHdpbmRvdy5rZW5kby5qUXVlcnkpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsbyl7KG98fGUpKCl9KTs7IWZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJ1dGlsL21haW4ubWluXCIsW1wia2VuZG8uY29yZS5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtyZXR1cm4gdHlwZW9mIHQhPT1VfWZ1bmN0aW9uIGUodCxlKXt2YXIgbj1pKGUpO3JldHVybiB6LnJvdW5kKHQqbikvbn1mdW5jdGlvbiBpKHQpe3JldHVybiB0P3oucG93KDEwLHQpOjF9ZnVuY3Rpb24gbih0LGUsaSl7cmV0dXJuIHoubWF4KHoubWluKHQsaSksZSl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCpSfWZ1bmN0aW9uIHModCl7cmV0dXJuIHQvUn1mdW5jdGlvbiByKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0JiYhaXNOYU4odCl9ZnVuY3Rpb24gYShlLGkpe3JldHVybiB0KGUpP2U6aX1mdW5jdGlvbiBoKHQpe3JldHVybiB0KnR9ZnVuY3Rpb24gYyh0KXt2YXIgZSxpPVtdO2ZvcihlIGluIHQpaS5wdXNoKGUrdFtlXSk7cmV0dXJuIGkuc29ydCgpLmpvaW4oXCJcIil9ZnVuY3Rpb24gZCh0KXt2YXIgZSxpPTIxNjYxMzYyNjE7Zm9yKGU9MDtlPHQubGVuZ3RoOysrZSlpKz0oaTw8MSkrKGk8PDQpKyhpPDw3KSsoaTw8OCkrKGk8PDI0KSxpXj10LmNoYXJDb2RlQXQoZSk7cmV0dXJuIGk+Pj4wfWZ1bmN0aW9uIGwodCl7cmV0dXJuIGQoYyh0KSl9ZnVuY3Rpb24gdSh0KXt2YXIgZSxpPXQubGVuZ3RoLG49QSxvPU87Zm9yKGU9MDtlPGk7ZSsrKW89ei5tYXgobyx0W2VdKSxuPXoubWluKG4sdFtlXSk7cmV0dXJue21pbjpuLG1heDpvfX1mdW5jdGlvbiBmKHQpe3JldHVybiB1KHQpLm1pbn1mdW5jdGlvbiBwKHQpe3JldHVybiB1KHQpLm1heH1mdW5jdGlvbiBnKHQpe3JldHVybiBfKHQpLm1pbn1mdW5jdGlvbiBtKHQpe3JldHVybiBfKHQpLm1heH1mdW5jdGlvbiBfKHQpe3ZhciBlLGksbixvPUEscz1PO2ZvcihlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKW49dFtlXSxudWxsIT09biYmaXNGaW5pdGUobikmJihvPXoubWluKG8sbikscz16Lm1heChzLG4pKTtyZXR1cm57bWluOm89PT1BP3ZvaWQgMDpvLG1heDpzPT09Tz92b2lkIDA6c319ZnVuY3Rpb24gdih0KXtpZih0KXJldHVybiB0W3QubGVuZ3RoLTFdfWZ1bmN0aW9uIHkodCxlKXtyZXR1cm4gdC5wdXNoLmFwcGx5KHQsZSksdH1mdW5jdGlvbiB3KHQpe3JldHVybiBCLnRlbXBsYXRlKHQse3VzZVdpdGhCbG9jazohMSxwYXJhbU5hbWU6XCJkXCJ9KX1mdW5jdGlvbiB4KGUsaSl7cmV0dXJuIHQoaSkmJm51bGwhPT1pP1wiIFwiK2UrXCI9J1wiK2krXCInIFwiOlwiXCJ9ZnVuY3Rpb24gYih0KXt2YXIgZSxpPVwiXCI7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpKz14KHRbZV1bMF0sdFtlXVsxXSk7cmV0dXJuIGl9ZnVuY3Rpb24gQyhlKXt2YXIgaSxuLG89XCJcIjtmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKW49ZVtpXVsxXSx0KG4pJiYobys9ZVtpXVswXStcIjpcIituK1wiO1wiKTtpZihcIlwiIT09bylyZXR1cm4gb31mdW5jdGlvbiBTKHQpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0JiYodCs9XCJweFwiKSx0fWZ1bmN0aW9uIGsodCl7dmFyIGUsaSxuPVtdO2lmKHQpZm9yKGU9Qi50b0h5cGhlbnModCkuc3BsaXQoXCItXCIpLGk9MDtpPGUubGVuZ3RoO2krKyluLnB1c2goXCJrLXBvcy1cIitlW2ldKTtyZXR1cm4gbi5qb2luKFwiIFwiKX1mdW5jdGlvbiBUKGUpe3JldHVyblwiXCI9PT1lfHxudWxsPT09ZXx8XCJub25lXCI9PT1lfHxcInRyYW5zcGFyZW50XCI9PT1lfHwhdChlKX1mdW5jdGlvbiBNKHQpe2Zvcih2YXIgZT17MTpcImlcIiwxMDpcInhcIiwxMDA6XCJjXCIsMjpcImlpXCIsMjA6XCJ4eFwiLDIwMDpcImNjXCIsMzpcImlpaVwiLDMwOlwieHh4XCIsMzAwOlwiY2NjXCIsNDpcIml2XCIsNDA6XCJ4bFwiLDQwMDpcImNkXCIsNTpcInZcIiw1MDpcImxcIiw1MDA6XCJkXCIsNjpcInZpXCIsNjA6XCJseFwiLDYwMDpcImRjXCIsNzpcInZpaVwiLDcwOlwibHh4XCIsNzAwOlwiZGNjXCIsODpcInZpaWlcIiw4MDpcImx4eHhcIiw4MDA6XCJkY2NjXCIsOTpcIml4XCIsOTA6XCJ4Y1wiLDkwMDpcImNtXCIsMWUzOlwibVwifSxpPVsxZTMsOTAwLDgwMCw3MDAsNjAwLDUwMCw0MDAsMzAwLDIwMCwxMDAsOTAsODAsNzAsNjAsNTAsNDAsMzAsMjAsMTAsOSw4LDcsNiw1LDQsMywyLDFdLG49XCJcIjt0PjA7KXQ8aVswXT9pLnNoaWZ0KCk6KG4rPWVbaVswXV0sdC09aVswXSk7cmV0dXJuIG59ZnVuY3Rpb24gRCh0KXt2YXIgZSxpLG4sbyxzO2Zvcih0PXQudG9Mb3dlckNhc2UoKSxlPXtpOjEsdjo1LHg6MTAsbDo1MCxjOjEwMCxkOjUwMCxtOjFlM30saT0wLG49MCxvPTA7bzx0Lmxlbmd0aDsrK28pe2lmKHM9ZVt0LmNoYXJBdChvKV0sIXMpcmV0dXJuIG51bGw7aSs9cyxzPm4mJihpLT0yKm4pLG49c31yZXR1cm4gaX1mdW5jdGlvbiBJKHQpe3ZhciBlPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGksbj1cIlwiO2ZvcihpPWFyZ3VtZW50cy5sZW5ndGg7LS1pPj0wOyluKz1cIjpcIithcmd1bWVudHNbaV07cmV0dXJuIG4gaW4gZT9lW25dOmVbbl09dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIFAodCl7Zm9yKHZhciBlLGksbj1bXSxvPTAscz10Lmxlbmd0aDtvPHM7KWU9dC5jaGFyQ29kZUF0KG8rKyksZT49NTUyOTYmJmU8PTU2MzE5JiZvPHM/KGk9dC5jaGFyQ29kZUF0KG8rKyksNTYzMjA9PSg2NDUxMiZpKT9uLnB1c2goKCgxMDIzJmUpPDwxMCkrKDEwMjMmaSkrNjU1MzYpOihuLnB1c2goZSksby0tKSk6bi5wdXNoKGUpO3JldHVybiBufWZ1bmN0aW9uIEwodCl7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKHQpe3ZhciBlPVwiXCI7cmV0dXJuIHQ+NjU1MzUmJih0LT02NTUzNixlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQ+Pj4xMCYxMDIzfDU1Mjk2KSx0PTU2MzIwfDEwMjMmdCksZSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KX0pLmpvaW4oXCJcIil9ZnVuY3Rpb24gRSh0LGUpe2Z1bmN0aW9uIGkodCxpKXtmb3IodmFyIG49W10sbz0wLHM9MCxyPTA7bzx0Lmxlbmd0aCYmczxpLmxlbmd0aDspZSh0W29dLGlbc10pPD0wP25bcisrXT10W28rK106bltyKytdPWlbcysrXTtyZXR1cm4gbzx0Lmxlbmd0aCYmbi5wdXNoLmFwcGx5KG4sdC5zbGljZShvKSksczxpLmxlbmd0aCYmbi5wdXNoLmFwcGx5KG4saS5zbGljZShzKSksbn1yZXR1cm4gdC5sZW5ndGg8Mj90LnNsaWNlKCk6ZnVuY3Rpb24gbih0KXt2YXIgZSxvLHM7cmV0dXJuIHQubGVuZ3RoPD0xP3Q6KGU9TWF0aC5mbG9vcih0Lmxlbmd0aC8yKSxvPXQuc2xpY2UoMCxlKSxzPXQuc2xpY2UoZSksbz1uKG8pLHM9bihzKSxpKG8scykpfSh0KX12YXIgej1NYXRoLEI9d2luZG93LmtlbmRvLE49Qi5kZWVwRXh0ZW5kLFI9ei5QSS8xODAsQT1OdW1iZXIuTUFYX1ZBTFVFLE89LU51bWJlci5NQVhfVkFMVUUsVT1cInVuZGVmaW5lZFwiLFY9RGF0ZS5ub3c7Vnx8KFY9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0pLE4oQix7dXRpbDp7TUFYX05VTTpBLE1JTl9OVU06TyxhcHBlbmQ6eSxhcnJheUxpbWl0czp1LGFycmF5TWluOmYsYXJyYXlNYXg6cCxkZWZpbmVkOnQsZGVnOnMsaGFzaEtleTpkLGhhc2hPYmplY3Q6bCxpc051bWJlcjpyLGlzVHJhbnNwYXJlbnQ6VCxsYXN0OnYsbGltaXRWYWx1ZTpuLG5vdzpWLG9iamVjdEtleTpjLHJvdW5kOmUscmFkOm8scmVuZGVyQXR0cjp4LHJlbmRlckFsbEF0dHI6YixyZW5kZXJQb3M6ayxyZW5kZXJTaXplOlMscmVuZGVyU3R5bGU6QyxyZW5kZXJUZW1wbGF0ZTp3LHNwYXJzZUFycmF5TGltaXRzOl8sc3BhcnNlQXJyYXlNaW46ZyxzcGFyc2VBcnJheU1heDptLHNxcjpoLHZhbHVlT3JEZWZhdWx0OmEscm9tYW5Ub0FyYWJpYzpELGFyYWJpY1RvUm9tYW46TSxtZW1vaXplOkksdWNzMmVuY29kZTpMLHVjczJkZWNvZGU6UCxtZXJnZVNvcnQ6RX19KSxCLmRyYXdpbmcudXRpbD1CLnV0aWwsQi5kYXRhdml6LnV0aWw9Qi51dGlsfSgpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsaSl7KGl8fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwidXRpbC90ZXh0LW1ldHJpY3MubWluXCIsW1wia2VuZG8uY29yZS5taW5cIixcInV0aWwvbWFpbi5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MCxiYXNlbGluZTowfX1mdW5jdGlvbiBpKHQsZSxpKXtyZXR1cm4gbC5jdXJyZW50Lm1lYXN1cmUodCxlLGkpfWZ1bmN0aW9uIG4odCxlKXt2YXIgaT1bXTtpZih0Lmxlbmd0aD4wJiZkb2N1bWVudC5mb250cyl7dHJ5e2k9dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmZvbnRzLmxvYWQodCl9KX1jYXRjaChuKXtzLmxvZ1RvQ29uc29sZShuKX1Qcm9taXNlLmFsbChpKS50aGVuKGUsZSl9ZWxzZSBlKCl9dmFyIG89ZG9jdW1lbnQscz13aW5kb3cua2VuZG8scj1zLkNsYXNzLGE9cy51dGlsLGg9YS5kZWZpbmVkLGM9ci5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dGhpcy5fc2l6ZT10LHRoaXMuX2xlbmd0aD0wLHRoaXMuX21hcD17fX0scHV0OmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxuPWkuX21hcCxvPXtrZXk6dCx2YWx1ZTplfTtuW3RdPW8saS5faGVhZD8oaS5fdGFpbC5uZXdlcj1vLG8ub2xkZXI9aS5fdGFpbCxpLl90YWlsPW8pOmkuX2hlYWQ9aS5fdGFpbD1vLGkuX2xlbmd0aD49aS5fc2l6ZT8obltpLl9oZWFkLmtleV09bnVsbCxpLl9oZWFkPWkuX2hlYWQubmV3ZXIsaS5faGVhZC5vbGRlcj1udWxsKTppLl9sZW5ndGgrK30sZ2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT1lLl9tYXBbdF07aWYoaSlyZXR1cm4gaT09PWUuX2hlYWQmJmkhPT1lLl90YWlsJiYoZS5faGVhZD1pLm5ld2VyLGUuX2hlYWQub2xkZXI9bnVsbCksaSE9PWUuX3RhaWwmJihpLm9sZGVyJiYoaS5vbGRlci5uZXdlcj1pLm5ld2VyLGkubmV3ZXIub2xkZXI9aS5vbGRlciksaS5vbGRlcj1lLl90YWlsLGkubmV3ZXI9bnVsbCxlLl90YWlsLm5ld2VyPWksZS5fdGFpbD1pKSxpLnZhbHVlfX0pLGQ9dChcIjxkaXYgc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OyB0b3A6IC00MDAwcHggIWltcG9ydGFudDsgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7cGFkZGluZzogMCAhaW1wb3J0YW50OyBtYXJnaW46IDAgIWltcG9ydGFudDsgYm9yZGVyOiAwICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgd2hpdGUtc3BhY2U6IG5vd3JhcCFpbXBvcnRhbnQ7JyAvPlwiKVswXSxsPXIuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMuX2NhY2hlPW5ldyBjKDFlMyksdGhpcy5faW5pdE9wdGlvbnModCl9LG9wdGlvbnM6e2Jhc2VsaW5lTWFya2VyU2l6ZToxfSxtZWFzdXJlOmZ1bmN0aW9uKGksbixzKXt2YXIgcixjLGwsdSxmLHAsZyxtO2lmKCFpKXJldHVybiBlKCk7aWYocj1hLm9iamVjdEtleShuKSxjPWEuaGFzaEtleShpK3IpLGw9dGhpcy5fY2FjaGUuZ2V0KGMpLGwpcmV0dXJuIGw7dT1lKCksZj1zP3M6ZCxwPXRoaXMuX2Jhc2VsaW5lTWFya2VyKCkuY2xvbmVOb2RlKCExKTtmb3IoZyBpbiBuKW09bltnXSxoKG0pJiYoZi5zdHlsZVtnXT1tKTtyZXR1cm4gdChmKS50ZXh0KGkpLGYuYXBwZW5kQ2hpbGQocCksby5ib2R5LmFwcGVuZENoaWxkKGYpLChpK1wiXCIpLmxlbmd0aCYmKHUud2lkdGg9Zi5vZmZzZXRXaWR0aC10aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplLHUuaGVpZ2h0PWYub2Zmc2V0SGVpZ2h0LHUuYmFzZWxpbmU9cC5vZmZzZXRUb3ArdGhpcy5vcHRpb25zLmJhc2VsaW5lTWFya2VyU2l6ZSksdS53aWR0aD4wJiZ1LmhlaWdodD4wJiZ0aGlzLl9jYWNoZS5wdXQoYyx1KSxmLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZiksdX0sX2Jhc2VsaW5lTWFya2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHQoXCI8ZGl2IGNsYXNzPSdrLWJhc2VsaW5lLW1hcmtlcicgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO3dpZHRoOiBcIit0aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplK1wicHg7IGhlaWdodDogXCIrdGhpcy5vcHRpb25zLmJhc2VsaW5lTWFya2VyU2l6ZStcInB4O292ZXJmbG93OiBoaWRkZW47JyAvPlwiKVswXX19KTtsLmN1cnJlbnQ9bmV3IGwscy51dGlsLlRleHRNZXRyaWNzPWwscy51dGlsLkxSVUNhY2hlPWMscy51dGlsLmxvYWRGb250cz1uLHMudXRpbC5tZWFzdXJlVGV4dD1pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsaSl7KGl8fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwidXRpbC9iYXNlNjQubWluXCIsW1widXRpbC9tYWluLm1pblwiXSx0KX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBpLG4sbyxyLGEsaCxjLGQ9XCJcIixsPTA7Zm9yKHQ9ZSh0KTtsPHQubGVuZ3RoOylpPXQuY2hhckNvZGVBdChsKyspLG49dC5jaGFyQ29kZUF0KGwrKyksbz10LmNoYXJDb2RlQXQobCsrKSxyPWk+PjIsYT0oMyZpKTw8NHxuPj40LGg9KDE1Jm4pPDwyfG8+PjYsYz02MyZvLGlzTmFOKG4pP2g9Yz02NDppc05hTihvKSYmKGM9NjQpLGQ9ZCtzLmNoYXJBdChyKStzLmNoYXJBdChhKStzLmNoYXJBdChoKStzLmNoYXJBdChjKTtyZXR1cm4gZH1mdW5jdGlvbiBlKHQpe3ZhciBlLGksbj1cIlwiO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaT10LmNoYXJDb2RlQXQoZSksaTwxMjg/bis9byhpKTppPDIwNDg/KG4rPW8oMTkyfGk+Pj42KSxuKz1vKDEyOHw2MyZpKSk6aTw2NTUzNiYmKG4rPW8oMjI0fGk+Pj4xMiksbis9bygxMjh8aT4+PjYmNjMpLG4rPW8oMTI4fDYzJmkpKTtyZXR1cm4gbn12YXIgaT13aW5kb3cua2VuZG8sbj1pLmRlZXBFeHRlbmQsbz1TdHJpbmcuZnJvbUNoYXJDb2RlLHM9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVwiO24oaS51dGlsLHtlbmNvZGVCYXNlNjQ6dCxlbmNvZGVVVEY4OmV9KX0oKSx3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlLGkpeyhpfHxlKSgpfSksZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcIm1peGlucy9vYnNlcnZlcnMubWluXCIsW1wia2VuZG8uY29yZS5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgsaT13aW5kb3cua2VuZG8sbj1pLmRlZXBFeHRlbmQsbz10LmluQXJyYXkscz17b2JzZXJ2ZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29ic2VydmVycz10aGlzLl9vYnNlcnZlcnN8fFtdfSxhZGRPYnNlcnZlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb2JzZXJ2ZXJzP3RoaXMuX29ic2VydmVycy5wdXNoKHQpOnRoaXMuX29ic2VydmVycz1bdF0sdGhpc30scmVtb3ZlT2JzZXJ2ZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vYnNlcnZlcnMoKSxpPW8odCxlKTtyZXR1cm4gaSE9LTEmJmUuc3BsaWNlKGksMSksdGhpc30sdHJpZ2dlcjpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbz10aGlzLl9vYnNlcnZlcnM7aWYobyYmIXRoaXMuX3N1c3BlbmRlZClmb3Iobj0wO248by5sZW5ndGg7bisrKWk9b1tuXSxpW3RdJiZpW3RdKGUpO3JldHVybiB0aGlzfSxvcHRpb25zQ2hhbmdlOmZ1bmN0aW9uKHQpe3Q9dHx8e30sdC5lbGVtZW50PXRoaXMsdGhpcy50cmlnZ2VyKFwib3B0aW9uc0NoYW5nZVwiLHQpfSxnZW9tZXRyeUNoYW5nZTpmdW5jdGlvbigpe3RoaXMudHJpZ2dlcihcImdlb21ldHJ5Q2hhbmdlXCIse2VsZW1lbnQ6dGhpc30pfSxzdXNwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N1c3BlbmRlZD0odGhpcy5fc3VzcGVuZGVkfHwwKSsxLHRoaXN9LHJlc3VtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdXNwZW5kZWQ9ZS5tYXgoKHRoaXMuX3N1c3BlbmRlZHx8MCktMSwwKSx0aGlzfSxfb2JzZXJ2ZXJGaWVsZDpmdW5jdGlvbih0LGUpe3RoaXNbdF0mJnRoaXNbdF0ucmVtb3ZlT2JzZXJ2ZXIodGhpcyksdGhpc1t0XT1lLGUuYWRkT2JzZXJ2ZXIodGhpcyl9fTtuKGkse21peGluczp7T2JzZXJ2ZXJzTWl4aW46c319KX0od2luZG93LmtlbmRvLmpRdWVyeSksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKHQsZSxpKXsoaXx8ZSkoKX0pLGZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJkYXRhdml6L2RpYWdyYW0vdXRpbHMubWluXCIsW1wia2VuZG8uY29yZS5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSh0LGksbil7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGU9MTt0KmUlMTspZSo9MTA7cmV0dXJuIGV9dmFyIHMscixhLGg7aWYoZT09PXR8fGU9PT1pKXJldHVybltdO2lmKG4mJmwuc2lnbihpLXQpIT1sLnNpZ24obikpdGhyb3dcIlRoZSBzaWduIG9mIHRoZSBpbmNyZW1lbnQgc2hvdWxkIGFsbG93IHRvIHJlYWNoIHRoZSBzdG9wLXZhbHVlLlwiO2lmKG49bnx8MSx0PXR8fDAsaT1pfHx0LChpLXQpL249PT0xLzApdGhyb3dcIkluZmluaXRlIHJhbmdlIGRlZmluZWQuXCI7aWYocz1bXSxyPS0xLGg9byhNYXRoLmFicyhuKSksdCo9aCxpKj1oLG4qPWgsdD5pJiZuPjAmJihuPS1uKSxuPDApZm9yKDsoYT10K24qKytyKT49aTspcy5wdXNoKGEvaCk7ZWxzZSBmb3IoOyhhPXQrbiorK3IpPD1pOylzLnB1c2goYS9oKTtyZXR1cm4gc31mdW5jdGlvbiBuKHQsZSl7aWYodD09ZSlyZXR1cm4gMDt2YXIgaT1lLngtdC54LG49dC55LWUueSxvPU1hdGguYXRhbihpL24pO3JldHVybiBuPj0wP2k8MD9vKzIqTWF0aC5QSTpvOm8rTWF0aC5QSX12YXIgbyxzLHI9d2luZG93LmtlbmRvLGE9ci5kYXRhdml6LmRpYWdyYW09e30saD1yLmRlZXBFeHRlbmQsYz10LmlzQXJyYXksZD0xZS02LGw9e307aChsLHtpc05lYXJaZXJvOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmFicyh0KTxkfSxpc0RlZmluZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIGUhPT10fSxpc1VuZGVmaW5lZDpmdW5jdGlvbih0KXtyZXR1cm4gZT09PXR8fG51bGw9PT10fSxpc09iamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gdD09PU9iamVjdCh0KX0saGFzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9LGlzU3RyaW5nOmZ1bmN0aW9uKHQpe3JldHVyblwiW29iamVjdCBTdHJpbmddXCI9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0saXNCb29sZWFuOmZ1bmN0aW9uKHQpe3JldHVyblwiW29iamVjdCBCb29sZWFuXVwiPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9LGlzVHlwZTpmdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk9PVwiW29iamVjdCBcIitlK1wiXVwifSxpc051bWJlcjpmdW5jdGlvbih0KXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdCh0KSkmJmlzRmluaXRlKHQpfSxpc0VtcHR5OmZ1bmN0aW9uKHQpe2lmKG51bGw9PT10KXJldHVybiEwO2lmKGModCl8fGwuaXNTdHJpbmcodCkpcmV0dXJuIDA9PT10Lmxlbmd0aDtmb3IodmFyIGUgaW4gdClpZihsLmhhcyh0LGUpKXJldHVybiExO3JldHVybiEwfSxzaW1wbGVFeHRlbmQ6ZnVuY3Rpb24odCxlKXtpZihsLmlzT2JqZWN0KGUpKWZvcih2YXIgaSBpbiBlKXRbaV09ZVtpXX0saW5pdEFycmF5OmZ1bmN0aW9uKHQsZSl7dmFyIGksbj1bXTtmb3IoaT0wO2k8dDsrK2kpbltpXT1lO3JldHVybiBufSxzZXJpYWxpemVQb2ludHM6ZnVuY3Rpb24odCl7dmFyIGUsaSxuPVtdO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaT10W2VdLG4ucHVzaChpLngrXCI7XCIraS55KTtyZXR1cm4gbi5qb2luKFwiO1wiKX0sZGVzZXJpYWxpemVQb2ludHM6ZnVuY3Rpb24odCl7dmFyIGUsaT10LnNwbGl0KFwiO1wiKSxuPVtdO2lmKGkubGVuZ3RoJTIhPT0wKXRocm93XCJOb3QgYW4gYXJyYXkgb2YgcG9pbnRzLlwiO2ZvcihlPTA7ZTxpLmxlbmd0aDtlKz0yKW4ucHVzaChuZXcgYS5Qb2ludChwYXJzZUludChpW2VdLDEwKSxwYXJzZUludChpW2UrMV0sMTApKSk7cmV0dXJuIG59LHJhbmRvbUludGVnZXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gcGFyc2VJbnQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmUpK3QsMTApfSxERlQ6ZnVuY3Rpb24odCxlKXt2YXIgaSxuO2lmKGUodCksdC5jaGlsZE5vZGVzKWZvcihpPTA7aTx0LmNoaWxkTm9kZXMubGVuZ3RoO2krKyluPXQuY2hpbGROb2Rlc1tpXSx0aGlzLkRGVChuLGUpfSxnZXRNYXRyaXhBbmdsZTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXR8fDA9PT10LmQ/MDoxODAqTWF0aC5hdGFuMih0LmIsdC5kKS9NYXRoLlBJfSxnZXRNYXRyaXhTY2FsaW5nOmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGguc3FydCh0LmEqdC5hK3QuYyp0LmMpLGk9TWF0aC5zcXJ0KHQuYip0LmIrdC5kKnQuZCk7cmV0dXJuW2UsaV19fSksbC5zaWduPWZ1bmN0aW9uKHQpe3JldHVybiB0P3Q8MD8tMToxOjB9LGwuZmluZEFuZ2xlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIDE4MCpuKHQsZSkvTWF0aC5QSX0sbC5mb3JFYWNoPWZ1bmN0aW9uKHQsZSxpKXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyllLmNhbGwoaSx0W25dLG4sdCl9LGwuYW55PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDsrK2kpaWYoZSh0W2ldKSlyZXR1cm4gdFtpXTtyZXR1cm4gbnVsbH0sbC5yZW1vdmU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk7KGk9bC5pbmRleE9mKHQsZSkpIT09LTE7KXQuc3BsaWNlKGksMSk7cmV0dXJuIHR9LGwuY29udGFpbnM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbC5pbmRleE9mKHQsZSkhPT0tMX0sbC5pbmRleE9mPWZ1bmN0aW9uKGUsaSl7cmV0dXJuIHQuaW5BcnJheShpLGUpfSxsLmZvbGQ9ZnVuY3Rpb24odCxlLGksbil7dmFyIG8scyxyPWFyZ3VtZW50cy5sZW5ndGg+Mjtmb3Iobz0wO288dC5sZW5ndGg7bysrKXM9dFtvXSxyP2k9ZS5jYWxsKG4saSxzLG8sdCk6KGk9cyxyPSEwKTtpZighcil0aHJvd1wiUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZVwiO3JldHVybiBpfSxsLmZpbmQ9ZnVuY3Rpb24odCxlLGkpe3ZhciBuO3JldHVybiBsLmFueSh0LGZ1bmN0aW9uKHQsbyxzKXtyZXR1cm4hIWUuY2FsbChpLHQsbyxzKSYmKG49dCwhMCl9KSxufSxsLmZpcnN0PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gMD09PXQubGVuZ3RoP251bGw6bC5pc1VuZGVmaW5lZChlKT90WzBdOmwuZmluZCh0LGUsaSl9LGwuaW5zZXJ0PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdC5zcGxpY2UoaSwwLGUpLHR9LGwuYWxsPWZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvLHM9ITA7Zm9yKG89MDtvPHQubGVuZ3RoJiYobj10W29dLHM9cyYmZS5jYWxsKGksbixvLHQpLHMpO28rKyk7cmV0dXJuIHN9LGwuY2xlYXI9ZnVuY3Rpb24odCl7dC5zcGxpY2UoMCx0Lmxlbmd0aCl9LGwuYmlzb3J0PWZ1bmN0aW9uKHQsZSxpKXtpZihsLmlzVW5kZWZpbmVkKHQpKXRocm93XCJGaXJzdCBhcnJheSBpcyBub3Qgc3BlY2lmaWVkLlwiO2lmKGwuaXNVbmRlZmluZWQoZSkpdGhyb3dcIlNlY29uZCBhcnJheSBpcyBub3Qgc3BlY2lmaWVkLlwiO2lmKHQubGVuZ3RoIT1lLmxlbmd0aCl0aHJvd1wiVGhlIHR3byBhcnJheXMgc2hvdWxkIGhhdmUgZXF1YWwgbGVuZ3RoXCI7dmFyIG4sbz1bXTtmb3Iobj0wO248dC5sZW5ndGg7bisrKW8ucHVzaCh7eDp0W25dLHk6ZVtuXX0pO2ZvcihvLnNvcnQobC5pc1VuZGVmaW5lZChpKT9mdW5jdGlvbih0LGUpe3JldHVybiB0LngtZS54fTpmdW5jdGlvbih0LGUpe3JldHVybiBpKHQueCxlLngpfSksbC5jbGVhcih0KSxsLmNsZWFyKGUpLG49MDtuPG8ubGVuZ3RoO24rKyl0LnB1c2gob1tuXS54KSxlLnB1c2gob1tuXS55KX0sbC5hZGRSYW5nZT1mdW5jdGlvbih0LGUpe3QucHVzaC5hcHBseSh0LGUpfSxvPXtlYXNlSW5PdXQ6ZnVuY3Rpb24odCl7cmV0dXJuLU1hdGguY29zKHQqTWF0aC5QSSkvMisuNX19LHM9ci5DbGFzcy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oKXt0aGlzLmFkYXB0ZXJzPVtdLHRoaXMudGFyZ2V0PTAsdGhpcy50aWNrPTAsdGhpcy5pbnRlcnZhbD0yMCx0aGlzLmR1cmF0aW9uPTgwMCx0aGlzLmxhc3RUaW1lPW51bGwsdGhpcy5oYW5kbGVycz1bXTt2YXIgdD10aGlzO3RoaXMudHJhbnNpdGlvbj1vLmVhc2VJbk91dCx0aGlzLnRpbWVyRGVsZWdhdGU9ZnVuY3Rpb24oKXt0Lm9uVGltZXJFdmVudCgpfX0sYWRkQWRhcHRlcjpmdW5jdGlvbih0KXt0aGlzLmFkYXB0ZXJzLnB1c2godCl9LG9uQ29tcGxldGU6ZnVuY3Rpb24odCl7dGhpcy5oYW5kbGVycy5wdXNoKHQpfSxyZW1vdmVIYW5kbGVyOmZ1bmN0aW9uKGUpe3RoaXMuaGFuZGxlcnM9dC5ncmVwKHRoaXMuaGFuZGxlcnMsZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1lfSl9LHRyaWdnZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuaGFuZGxlcnMmJmwuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKGUpe3JldHVybiBlLmNhbGwobnVsbCE9PXQuY2FsbGVyP3QuY2FsbGVyOnQpfSl9LG9uU3RlcDpmdW5jdGlvbigpe30sc2Vla1RvOmZ1bmN0aW9uKHQpe3RoaXMuc2Vla0Zyb21Ubyh0aGlzLnRpY2ssdCl9LHNlZWtGcm9tVG86ZnVuY3Rpb24odCxlKXt0aGlzLnRhcmdldD1NYXRoLm1heCgwLE1hdGgubWluKDEsZSkpLHRoaXMudGljaz1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLHRoaXMubGFzdFRpbWU9KG5ldyBEYXRlKS5nZXRUaW1lKCksdGhpcy5pbnRlcnZhbElkfHwodGhpcy5pbnRlcnZhbElkPXdpbmRvdy5zZXRJbnRlcnZhbCh0aGlzLnRpbWVyRGVsZWdhdGUsdGhpcy5pbnRlcnZhbCkpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5pbnRlcnZhbElkJiYod2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKSx0aGlzLmludGVydmFsSWQ9bnVsbCx0aGlzLnRyaWdnZXIoKSl9LHBsYXk6ZnVuY3Rpb24odCl7MCE9PXRoaXMuYWRhcHRlcnMubGVuZ3RoJiYobnVsbCE9PXQmJih0aGlzLmNhbGxlcj10KSx0aGlzLmluaXRTdGF0ZSgpLHRoaXMuc2Vla0Zyb21UbygwLDEpKX0scmV2ZXJzZTpmdW5jdGlvbigpe3RoaXMuc2Vla0Zyb21UbygxLDApfSxpbml0U3RhdGU6ZnVuY3Rpb24oKXtpZigwIT09dGhpcy5hZGFwdGVycy5sZW5ndGgpZm9yKHZhciB0PTA7dDx0aGlzLmFkYXB0ZXJzLmxlbmd0aDt0KyspdGhpcy5hZGFwdGVyc1t0XS5pbml0U3RhdGUoKX0scHJvcGFnYXRlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnRyYW5zaXRpb24odGhpcy50aWNrKTtmb3IodD0wO3Q8dGhpcy5hZGFwdGVycy5sZW5ndGg7dCsrKXRoaXMuYWRhcHRlcnNbdF0udXBkYXRlKGUpfSxvblRpbWVyRXZlbnQ6ZnVuY3Rpb24oKXt2YXIgdCxlPShuZXcgRGF0ZSkuZ2V0VGltZSgpLGk9ZS10aGlzLmxhc3RUaW1lO3RoaXMubGFzdFRpbWU9ZSx0PWkvdGhpcy5kdXJhdGlvbioodGhpcy50aWNrPHRoaXMudGFyZ2V0PzE6LTEpLE1hdGguYWJzKHQpPj1NYXRoLmFicyh0aGlzLnRpY2stdGhpcy50YXJnZXQpP3RoaXMudGljaz10aGlzLnRhcmdldDp0aGlzLnRpY2srPXQ7dHJ5e3RoaXMucHJvcGFnYXRlKCl9ZmluYWxseXt0aGlzLm9uU3RlcC5jYWxsKHRoaXMpLHRoaXMudGFyZ2V0PT10aGlzLnRpY2smJnRoaXMuc3RvcCgpfX19KSxyLmRlZXBFeHRlbmQoYSx7aW5pdDpmdW5jdGlvbih0KXtyLmluaXQodCxhLnVpKX0sVXRpbHM6bCxSYW5nZTppLFRpY2tlcjpzfSl9KHdpbmRvdy5rZW5kby5qUXVlcnkpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKHQsZSxpKXsoaXx8ZSkoKX0pLGZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJkYXRhdml6L2RpYWdyYW0vbWF0aC5taW5cIixbXCJkYXRhdml6L2RpYWdyYW0vdXRpbHMubWluXCIsXCJrZW5kby5kYXRhdml6LmNvcmUubWluXCJdLHQpfShmdW5jdGlvbigpeyFmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkodCl7cmV0dXJuIE1hdGguYWJzKHQpPHp9ZnVuY3Rpb24gbih0LGUsbixvLHMpe3ZhciByLGEsaCxjLGQ9KGUueC10LngpKihvLnktbi55KS0oZS55LXQueSkqKG8ueC1uLngpO2lmKCFpKGQpJiYocj0odC55LW4ueSkqKG8ueC1uLngpLSh0Lngtbi54KSooby55LW4ueSksYT0odC55LW4ueSkqKGUueC10LngpLSh0Lngtbi54KSooZS55LXQueSksaD1yL2QsYz1hL2QsIXN8fCEoaDwwfHxoPjF8fGM8MHx8Yz4xKSkpcmV0dXJuIG5ldyBEKHQueCtoKihlLngtdC54KSx0LnkraCooZS55LXQueSkpfWZ1bmN0aW9uIG8odCxlKXt2YXIgaSxuLG87ZG8gaT0yKk1hdGgucmFuZG9tKCktMSxuPTIqTWF0aC5yYW5kb20oKS0xLG89aSppK24qbjt3aGlsZSghb3x8bz4xKTtyZXR1cm4gdCtlKmkqTWF0aC5zcXJ0KC0yKk1hdGgubG9nKG8pL28pfWZ1bmN0aW9uIHModCl7dmFyIGUsaSxuO2ZvcihNLmlzVW5kZWZpbmVkKHQpJiYodD0xMCksZT1cIlwiLGk9XCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWlwiLG49dDtuPjA7LS1uKWUrPWkuY2hhckF0KE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSooaS5sZW5ndGgtMSkpKTtyZXR1cm4gZX12YXIgcixhLGgsYyxkLGwsdSxmLHAsZyxtLF8sdix5LHcseCxiPXdpbmRvdy5rZW5kbyxDPWIuZGF0YXZpei5kaWFncmFtLFM9Yi5DbGFzcyxrPWIuZGVlcEV4dGVuZCxUPWIuZGF0YXZpeixNPUMuVXRpbHMsRD1ULlBvaW50MkQsST1iLmlzRnVuY3Rpb24sUD1NLmNvbnRhaW5zLEw9dC5tYXAsRT0zLHo9MWUtNjtrKEQuZm4se3BsdXM6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEKHRoaXMueCt0LngsdGhpcy55K3QueSl9LG1pbnVzOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRCh0aGlzLngtdC54LHRoaXMueS10LnkpfSxvZmZzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEKHRoaXMueC10LHRoaXMueS10KX0sdGltZXM6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEKHRoaXMueCp0LHRoaXMueSp0KX0sbm9ybWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmxlbmd0aCgpP25ldyBEOnRoaXMudGltZXMoMS90aGlzLmxlbmd0aCgpKX0sbGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVyblwiKFwiK3RoaXMueCtcIixcIit0aGlzLnkrXCIpXCJ9LGxlbmd0aFNxdWFyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55fSxtaWRkbGVPZjpmdW5jdGlvbih0LGUpe3JldHVybiBuZXcgRChlLngtdC54LGUueS10LnkpLnRpbWVzKC41KS5wbHVzKHQpfSx0b1BvbGFyOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvPTE7aWYodCYmKG89MTgwL01hdGguUEkpLGU9TWF0aC5hdGFuMihNYXRoLmFicyh0aGlzLnkpLE1hdGguYWJzKHRoaXMueCkpLGk9TWF0aC5QSS8yLG49dGhpcy5sZW5ndGgoKSwwPT09dGhpcy54KXtpZigwPT09dGhpcy55KXJldHVybiBuZXcgbCgwLDApO2lmKHRoaXMueT4wKXJldHVybiBuZXcgbChuLG8qaSk7aWYodGhpcy55PDApcmV0dXJuIG5ldyBsKG4sMypvKmkpfWVsc2UgaWYodGhpcy54PjApe2lmKDA9PT10aGlzLnkpcmV0dXJuIG5ldyBsKG4sMCk7aWYodGhpcy55PjApcmV0dXJuIG5ldyBsKG4sbyplKTtpZih0aGlzLnk8MClyZXR1cm4gbmV3IGwobixvKig0KmktZSkpfWVsc2V7aWYoMD09PXRoaXMueSlyZXR1cm4gbmV3IGwobiwyKmkpO2lmKHRoaXMueT4wKXJldHVybiBuZXcgbChuLG8qKDIqaS1lKSk7aWYodGhpcy55PDApcmV0dXJuIG5ldyBsKG4sbyooMippK2UpKX19LGlzT25MaW5lOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixvLHMscjtyZXR1cm4gdC54PmUueCYmKGk9ZSxlPXQsdD1pKSxuPW5ldyBhKHQueCx0LnkpLmluZmxhdGUoRSxFKSxvPW5ldyBhKGUueCxlLnkpLmluZmxhdGUoRSxFKSwhIW4udW5pb24obykuY29udGFpbnModGhpcykmJih0Lng9PT1lLnh8fHQueT09PWUueXx8KHQueTxlLnk/KHM9bi54KyhvLngtbi54KSoodGhpcy55LShuLnkrbi5oZWlnaHQpKS8oby55K28uaGVpZ2h0LShuLnkrbi5oZWlnaHQpKSxyPW4ueCtuLndpZHRoKyhvLngrby53aWR0aC0obi54K24ud2lkdGgpKSoodGhpcy55LW4ueSkvKG8ueS1uLnkpKToocz1uLngrKG8ueC1uLngpKih0aGlzLnktbi55KS8oby55LW4ueSkscj1uLngrbi53aWR0aCsoby54K28ud2lkdGgtKG4ueCtuLndpZHRoKSkqKHRoaXMueS0obi55K24uaGVpZ2h0KSkvKG8ueStvLmhlaWdodC0obi55K24uaGVpZ2h0KSkpLHRoaXMueD5zJiZ0aGlzLng8cikpfX0pLGsoRCx7cGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dC5zbGljZSgxLHQubGVuZ3RoLTEpLGk9ZS5zcGxpdChcIixcIiksbj1wYXJzZUludChpWzBdLDEwKSxvPXBhcnNlSW50KGlbMV0sMTApO2lmKCFpc05hTihuKSYmIWlzTmFOKG8pKXJldHVybiBuZXcgRChuLG8pfX0pLHI9Uy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlLGkpe3RoaXMucG9pbnQ9dCx0aGlzLmxlZnQ9ZSx0aGlzLnJpZ2h0PWl9fSksYT1TLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUsaSxuKXt0aGlzLng9dHx8MCx0aGlzLnk9ZXx8MCx0aGlzLndpZHRoPWl8fDAsdGhpcy5oZWlnaHQ9bnx8MH0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHQueD49dGhpcy54JiZ0Lng8PXRoaXMueCt0aGlzLndpZHRoJiZ0Lnk+PXRoaXMueSYmdC55PD10aGlzLnkrdGhpcy5oZWlnaHR9LGluZmxhdGU6ZnVuY3Rpb24odCxpKXtyZXR1cm4gaT09PWUmJihpPXQpLHRoaXMueC09dCx0aGlzLnktPWksdGhpcy53aWR0aCs9Mip0KzEsdGhpcy5oZWlnaHQrPTIqaSsxLHRoaXN9LG9mZnNldDpmdW5jdGlvbih0LGUpe3ZhciBpPXQsbj1lO3JldHVybiB0IGluc3RhbmNlb2YgRCYmKGk9dC54LG49dC55KSx0aGlzLngrPWksdGhpcy55Kz1uLHRoaXN9LHVuaW9uOmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgubWluKHRoaXMueCx0LngpLGk9TWF0aC5taW4odGhpcy55LHQueSksbj1NYXRoLm1heCh0aGlzLngrdGhpcy53aWR0aCx0LngrdC53aWR0aCksbz1NYXRoLm1heCh0aGlzLnkrdGhpcy5oZWlnaHQsdC55K3QuaGVpZ2h0KTtyZXR1cm4gbmV3IGEoZSxpLG4tZSxvLWkpfSxjZW50ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEQodGhpcy54K3RoaXMud2lkdGgvMix0aGlzLnkrdGhpcy5oZWlnaHQvMil9LHRvcDpmdW5jdGlvbigpe3JldHVybiBuZXcgRCh0aGlzLngrdGhpcy53aWR0aC8yLHRoaXMueSl9LHJpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEKHRoaXMueCt0aGlzLndpZHRoLHRoaXMueSt0aGlzLmhlaWdodC8yKX0sYm90dG9tOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEKHRoaXMueCt0aGlzLndpZHRoLzIsdGhpcy55K3RoaXMuaGVpZ2h0KX0sbGVmdDpmdW5jdGlvbigpe3JldHVybiBuZXcgRCh0aGlzLngsdGhpcy55K3RoaXMuaGVpZ2h0LzIpfSx0b3BMZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEKHRoaXMueCx0aGlzLnkpfSx0b3BSaWdodDpmdW5jdGlvbigpe3JldHVybiBuZXcgRCh0aGlzLngrdGhpcy53aWR0aCx0aGlzLnkpfSxib3R0b21MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEKHRoaXMueCx0aGlzLnkrdGhpcy5oZWlnaHQpfSxib3R0b21SaWdodDpmdW5jdGlvbigpe3JldHVybiBuZXcgRCh0aGlzLngrdGhpcy53aWR0aCx0aGlzLnkrdGhpcy5oZWlnaHQpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgYSh0aGlzLngsdGhpcy55LHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpfSxpc0VtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMud2lkdGgmJiF0aGlzLmhlaWdodH0sZXF1YWxzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLng9PT10LngmJnRoaXMueT09PXQueSYmdGhpcy53aWR0aD09PXQud2lkdGgmJnRoaXMuaGVpZ2h0PT09dC5oZWlnaHR9LHJvdGF0ZWRCb3VuZHM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jbG9uZSgpLGk9dGhpcy5yb3RhdGVkUG9pbnRzKHQpLG49aVswXSxvPWlbMV0scz1pWzJdLHI9aVszXTtyZXR1cm4gZS54PU1hdGgubWluKHMueCxuLngsby54LHIueCksZS55PU1hdGgubWluKHMueSxuLnksby55LHIueSksZS53aWR0aD1NYXRoLm1heChzLngsbi54LG8ueCxyLngpLWUueCxlLmhlaWdodD1NYXRoLm1heChzLnksbi55LG8ueSxyLnkpLWUueSxlfSxyb3RhdGVkUG9pbnRzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT1lLmNlbnRlcigpLG49ZS5ib3R0b21SaWdodCgpLnJvdGF0ZShpLDM2MC10KSxvPWUudG9wTGVmdCgpLnJvdGF0ZShpLDM2MC10KSxzPWUudG9wUmlnaHQoKS5yb3RhdGUoaSwzNjAtdCkscj1lLmJvdHRvbUxlZnQoKS5yb3RhdGUoaSwzNjAtdCk7cmV0dXJuW28scyxuLHJdfSx0b1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4gdD10fHxcIiBcIix0aGlzLngrdCt0aGlzLnkrdCt0aGlzLndpZHRoK3QrdGhpcy5oZWlnaHR9LHNjYWxlOmZ1bmN0aW9uKHQsZSxpLG4sbyl7dmFyIHMscixhLGg9dGhpcy50b3BMZWZ0KCksYz10aGlzLmNlbnRlcigpO2gucm90YXRlKGMsMzYwLW8pLnJvdGF0ZShuLG8pLHM9aS5taW51cyhoKSxyPW5ldyBEKHMueCp0LHMueSplKSxhPXMubWludXMociksaD1oLnBsdXMoYSksaC5yb3RhdGUobiwzNjAtbykucm90YXRlKGMsbyksdGhpcy54PWgueCx0aGlzLnk9aC55LHRoaXMud2lkdGgqPXQsdGhpcy5oZWlnaHQqPWV9LHpvb206ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpcy53aWR0aCo9dCx0aGlzLmhlaWdodCo9dCx0aGlzfSxvdmVybGFwczpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmJvdHRvbVJpZ2h0KCksaT10LmJvdHRvbVJpZ2h0KCksbj0hKGUueDx0Lnh8fGUueTx0Lnl8fGkueDx0aGlzLnh8fGkueTx0aGlzLnkpO3JldHVybiBufX0pLGg9Uy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZX19KSxoLnByb3RvdHlwZS5FbXB0eT1uZXcgaCgwLDApLGEudG9SZWN0PWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgYXx8KHQ9bmV3IGEodC54LHQueSx0LndpZHRoLHQuaGVpZ2h0KSksdH0sYS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBuZXcgYSgwLDAsMCwwKX0sYS5mcm9tUG9pbnRzPWZ1bmN0aW9uKHQsZSl7aWYoaXNOYU4odC54KXx8aXNOYU4odC55KXx8aXNOYU4oZS54KXx8aXNOYU4oZS55KSl0aHJvd1wiU29tZSB2YWx1ZXMgYXJlIE5hTi5cIjtyZXR1cm4gbmV3IGEoTWF0aC5taW4odC54LGUueCksTWF0aC5taW4odC55LGUueSksTWF0aC5hYnModC54LWUueCksTWF0aC5hYnModC55LWUueSkpfSxjPXtsaW5lczpmdW5jdGlvbih0LGUsaSxvKXtyZXR1cm4gbih0LGUsaSxvKX0sc2VnbWVudHM6ZnVuY3Rpb24odCxlLGksbyl7cmV0dXJuIG4odCxlLGksbywhMCl9LHJlY3RXaXRoTGluZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGMuc2VnbWVudHMoZSxpLHQudG9wTGVmdCgpLHQudG9wUmlnaHQoKSl8fGMuc2VnbWVudHMoZSxpLHQudG9wUmlnaHQoKSx0LmJvdHRvbVJpZ2h0KCkpfHxjLnNlZ21lbnRzKGUsaSx0LmJvdHRvbUxlZnQoKSx0LmJvdHRvbVJpZ2h0KCkpfHxjLnNlZ21lbnRzKGUsaSx0LnRvcExlZnQoKSx0LmJvdHRvbUxlZnQoKSl9LHJlY3RzOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvLHM9ZS50b3BMZWZ0KCkscj1lLnRvcFJpZ2h0KCksYT1lLmJvdHRvbUxlZnQoKSxoPWUuYm90dG9tUmlnaHQoKSxkPWUuY2VudGVyKCk7cmV0dXJuIGkmJihzPXMucm90YXRlKGQsaSkscj1yLnJvdGF0ZShkLGkpLGE9YS5yb3RhdGUoZCxpKSxoPWgucm90YXRlKGQsaSkpLG49dC5jb250YWlucyhzKXx8dC5jb250YWlucyhyKXx8dC5jb250YWlucyhhKXx8dC5jb250YWlucyhoKXx8Yy5yZWN0V2l0aExpbmUodCxzLHIpfHxjLnJlY3RXaXRoTGluZSh0LHMsYSl8fGMucmVjdFdpdGhMaW5lKHQscixoKXx8Yy5yZWN0V2l0aExpbmUodCxhLGgpLG58fChzPXQudG9wTGVmdCgpLHI9dC50b3BSaWdodCgpLGE9dC5ib3R0b21MZWZ0KCksaD10LmJvdHRvbVJpZ2h0KCksaSYmKG89MzYwLWkscz1zLnJvdGF0ZShkLG8pLHI9ci5yb3RhdGUoZCxvKSxhPWEucm90YXRlKGQsbyksaD1oLnJvdGF0ZShkLG8pKSxuPWUuY29udGFpbnMocyl8fGUuY29udGFpbnMocil8fGUuY29udGFpbnMoYSl8fGUuY29udGFpbnMoaCkpLG59fSxkPVMuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMuY29udGFpbmVyPWEudG9SZWN0KHQpfSxhbGlnbjpmdW5jdGlvbih0LGUpe3ZhciBpLG49ZS50b0xvd2VyQ2FzZSgpLnNwbGl0KFwiIFwiKTtmb3IoaT0wO2k8bi5sZW5ndGg7aSsrKXQ9dGhpcy5fc2luZ2xlQWxpZ24odCxuW2ldKTtyZXR1cm4gdH0sX3NpbmdsZUFsaWduOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEkodGhpc1tlXSk/dGhpc1tlXSh0KTp0fSxsZWZ0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hbGlnbih0LHRoaXMuX2xlZnQpfSxjZW50ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FsaWduKHQsdGhpcy5fY2VudGVyKX0scmlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FsaWduKHQsdGhpcy5fcmlnaHQpfSxzdHJldGNoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hbGlnbih0LHRoaXMuX3N0cmV0Y2gpfSx0b3A6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FsaWduKHQsdGhpcy5fdG9wKX0sbWlkZGxlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hbGlnbih0LHRoaXMuX21pZGRsZSl9LGJvdHRvbTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWxpZ24odCx0aGlzLl9ib3R0b20pfSxfbGVmdDpmdW5jdGlvbih0LGUpe2UueD10Lnh9LF9jZW50ZXI6ZnVuY3Rpb24odCxlKXtlLng9KHQud2lkdGgtZS53aWR0aCkvMnx8MH0sX3JpZ2h0OmZ1bmN0aW9uKHQsZSl7ZS54PXQud2lkdGgtZS53aWR0aH0sX3RvcDpmdW5jdGlvbih0LGUpe2UueT10Lnl9LF9taWRkbGU6ZnVuY3Rpb24odCxlKXtlLnk9KHQuaGVpZ2h0LWUuaGVpZ2h0KS8yfHwwfSxfYm90dG9tOmZ1bmN0aW9uKHQsZSl7ZS55PXQuaGVpZ2h0LWUuaGVpZ2h0fSxfc3RyZXRjaDpmdW5jdGlvbih0LGUpe2UueD0wLGUueT0wLGUuaGVpZ2h0PXQuaGVpZ2h0LGUud2lkdGg9dC53aWR0aH0sX2FsaWduOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9YS50b1JlY3QodCksZSh0aGlzLmNvbnRhaW5lcix0KSx0fX0pLGw9Uy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0aGlzLnI9dCx0aGlzLmFuZ2xlPWV9fSksdT1TLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUsaSxuLG8scyl7dGhpcy5hPXR8fDAsdGhpcy5iPWV8fDAsdGhpcy5jPWl8fDAsdGhpcy5kPW58fDAsdGhpcy5lPW98fDAsdGhpcy5mPXN8fDB9LHBsdXM6ZnVuY3Rpb24odCl7dGhpcy5hKz10LmEsdGhpcy5iKz10LmIsdGhpcy5jKz10LmMsdGhpcy5kKz10LmQsdGhpcy5lKz10LmUsdGhpcy5mKz10LmZ9LG1pbnVzOmZ1bmN0aW9uKHQpe3RoaXMuYS09dC5hLHRoaXMuYi09dC5iLHRoaXMuYy09dC5jLHRoaXMuZC09dC5kLHRoaXMuZS09dC5lLHRoaXMuZi09dC5mfSx0aW1lczpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IHUodGhpcy5hKnQuYSt0aGlzLmMqdC5iLHRoaXMuYip0LmErdGhpcy5kKnQuYix0aGlzLmEqdC5jK3RoaXMuYyp0LmQsdGhpcy5iKnQuYyt0aGlzLmQqdC5kLHRoaXMuYSp0LmUrdGhpcy5jKnQuZit0aGlzLmUsdGhpcy5iKnQuZSt0aGlzLmQqdC5mK3RoaXMuZil9LGFwcGx5OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRCh0aGlzLmEqdC54K3RoaXMuYyp0LnkrdGhpcy5lLHRoaXMuYip0LngrdGhpcy5kKnQueSt0aGlzLmYpfSxhcHBseVJlY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIGEuZnJvbVBvaW50cyh0aGlzLmFwcGx5KHQudG9wTGVmdCgpKSx0aGlzLmFwcGx5KHQuYm90dG9tUmlnaHQoKSkpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVyblwibWF0cml4KFwiK3RoaXMuYStcIiBcIit0aGlzLmIrXCIgXCIrdGhpcy5jK1wiIFwiK3RoaXMuZCtcIiBcIit0aGlzLmUrXCIgXCIrdGhpcy5mK1wiKVwifX0pLGsodSx7ZnJvbVNWR01hdHJpeDpmdW5jdGlvbih0KXt2YXIgZT1uZXcgdTtyZXR1cm4gZS5hPXQuYSxlLmI9dC5iLGUuYz10LmMsZS5kPXQuZCxlLmU9dC5lLGUuZj10LmYsZX0sZnJvbU1hdHJpeFZlY3RvcjpmdW5jdGlvbih0KXt2YXIgZT1uZXcgdTtyZXR1cm4gZS5hPXQuYSxlLmI9dC5iLGUuYz10LmMsZS5kPXQuZCxlLmU9dC5lLGUuZj10LmYsZX0sZnJvbUxpc3Q6ZnVuY3Rpb24odCl7aWYoNiE9PXQubGVuZ3RoKXRocm93XCJUaGUgZ2l2ZW4gbGlzdCBzaG91bGQgY29uc2lzdCBvZiBzaXggZWxlbWVudHMuXCI7dmFyIGU9bmV3IHU7cmV0dXJuIGUuYT10WzBdLGUuYj10WzFdLGUuYz10WzJdLGUuZD10WzNdLGUuZT10WzRdLGUuZj10WzVdLGV9LHRyYW5zbGF0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIGk9bmV3IHU7cmV0dXJuIGkuYT0xLGkuYj0wLGkuYz0wLGkuZD0xLGkuZT10LGkuZj1lLGl9LHVuaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHUoMSwwLDAsMSwwLDApfSxyb3RhdGlvbjpmdW5jdGlvbih0LGUsaSl7dmFyIG49bmV3IHU7cmV0dXJuIG4uYT1NYXRoLmNvcyh0Kk1hdGguUEkvMTgwKSxuLmI9TWF0aC5zaW4odCpNYXRoLlBJLzE4MCksbi5jPS1uLmIsbi5kPW4uYSxuLmU9ZS1lKm4uYStpKm4uYnx8MCxuLmY9aS1pKm4uYS1lKm4uYnx8MCxufSxzY2FsaW5nOmZ1bmN0aW9uKHQsZSl7dmFyIGk9bmV3IHU7cmV0dXJuIGkuYT10LGkuYj0wLGkuYz0wLGkuZD1lLGkuZT0wLGkuZj0wLGl9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlLGk7aWYodCl7aWYodD10LnRyaW0oKSxcIm1hdHJpeFwiPT09dC5zbGljZSgwLDYpLnRvTG93ZXJDYXNlKCkpe2lmKGk9dC5zbGljZSg3LHQubGVuZ3RoLTEpLnRyaW0oKSxlPWkuc3BsaXQoXCIsXCIpLDY9PT1lLmxlbmd0aClyZXR1cm4gdS5mcm9tTGlzdChMKGUsZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodCl9KSk7aWYoZT1pLnNwbGl0KFwiIFwiKSw2PT09ZS5sZW5ndGgpcmV0dXJuIHUuZnJvbUxpc3QoTChlLGZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQpfSkpfWlmKFwiKFwiPT09dC5zbGljZSgwLDEpJiZcIilcIj09PXQuc2xpY2UodC5sZW5ndGgtMSkmJih0PXQuc3Vic3RyKDEsdC5sZW5ndGgtMSkpLHQuaW5kZXhPZihcIixcIik+MCYmKGU9dC5zcGxpdChcIixcIiksNj09PWUubGVuZ3RoKSlyZXR1cm4gdS5mcm9tTGlzdChMKGUsZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodCl9KSk7aWYodC5pbmRleE9mKFwiIFwiKT4wJiYoZT10LnNwbGl0KFwiIFwiKSw2PT09ZS5sZW5ndGgpKXJldHVybiB1LmZyb21MaXN0KEwoZSxmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdCh0KX0pKX1yZXR1cm4gZX19KSxmPVMuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSxpLG4sbyxzKXt0aGlzLmE9dHx8MCx0aGlzLmI9ZXx8MCx0aGlzLmM9aXx8MCx0aGlzLmQ9bnx8MCx0aGlzLmU9b3x8MCx0aGlzLmY9c3x8MH0sZnJvbU1hdHJpeDpmdW5jdGlvbih0KXt2YXIgZT1uZXcgZjtyZXR1cm4gZS5hPXQuYSxlLmI9dC5iLGUuYz10LmMsZS5kPXQuZCxlLmU9dC5lLGUuZj10LmYsZX19KSxwPXtfZGlzdGFuY2VUb0xpbmVTcXVhcmVkOmZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuKHQueC1lLngpKih0LngtZS54KSsodC55LWUueSkqKHQueS1lLnkpfWlmKGU9PT1pKXJldHVybiBuKHQsZSk7dmFyIG89aS54LWUueCxzPWkueS1lLnkscj0odC54LWUueCkqbysodC55LWUueSkqcztyZXR1cm4gcjwwP24oZSx0KToocj0oaS54LXQueCkqbysoaS55LXQueSkqcyxyPDA/bihpLHQpOihyPShpLngtdC54KSpzLShpLnktdC55KSpvLHIqci8obypvK3MqcykpKX0sZGlzdGFuY2VUb0xpbmU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiBNYXRoLnNxcnQodGhpcy5fZGlzdGFuY2VUb0xpbmVTcXVhcmVkKHQsZSxpKSl9LGRpc3RhbmNlVG9Qb2x5bGluZTpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbyxzLHI9TnVtYmVyLk1BWF9WQUxVRTtpZihNLmlzVW5kZWZpbmVkKGUpfHwwPT09ZS5sZW5ndGgpcmV0dXJuIE51bWJlci5NQVhfVkFMVUU7Zm9yKGk9MDtpPGUubGVuZ3RoLTE7aSsrKW49ZVtpXSxvPWVbaSsxXSxzPXRoaXMuX2Rpc3RhbmNlVG9MaW5lU3F1YXJlZCh0LG4sbyksczxyJiYocj1zKTtyZXR1cm4gTWF0aC5zcXJ0KHIpfX0sZz1iLkNsYXNzLmV4dGVuZCh7aW5pdDpmdW5jdGlvbigpe3RoaXMuX2J1Y2tldHM9W10sdGhpcy5sZW5ndGg9MH0sYWRkOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fY3JlYXRlR2V0QnVja2V0KHQpO3JldHVybiBNLmlzRGVmaW5lZChlKSYmKGkudmFsdWU9ZSksaX0sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9idWNrZXRFeGlzdHModCk/dGhpcy5fY3JlYXRlR2V0QnVja2V0KHQpOm51bGx9LHNldDpmdW5jdGlvbih0LGUpe3RoaXMuYWRkKHQsZSl9LGNvbnRhaW5zS2V5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9idWNrZXRFeGlzdHModCl9LHJlbW92ZTpmdW5jdGlvbih0KXtpZih0aGlzLl9idWNrZXRFeGlzdHModCkpe3ZhciBlPXRoaXMuX2hhc2godCk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9idWNrZXRzW2VdLHRoaXMubGVuZ3RoLS0sdH19LGZvckVhY2g6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG8scz10aGlzLl9oYXNoZXMoKTtmb3IoZT0wLGk9cy5sZW5ndGg7ZTxpO2UrKyluPXNbZV0sbz10aGlzLl9idWNrZXRzW25dLE0uaXNVbmRlZmluZWQobyl8fHQobyl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4sbz1uZXcgZyxzPXRoaXMuX2hhc2hlcygpO2Zvcih0PTAsZT1zLmxlbmd0aDt0PGU7dCsrKWk9c1t0XSxuPXRoaXMuX2J1Y2tldHNbaV0sTS5pc1VuZGVmaW5lZChuKXx8by5hZGQobi5rZXksbi52YWx1ZSk7cmV0dXJuIG99LF9oYXNoZXM6ZnVuY3Rpb24oKXt2YXIgdCxlPVtdO2Zvcih0IGluIHRoaXMuX2J1Y2tldHMpdGhpcy5fYnVja2V0cy5oYXNPd25Qcm9wZXJ0eSh0KSYmZS5wdXNoKHQpO3JldHVybiBlfSxfYnVja2V0RXhpc3RzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2hhc2godCk7cmV0dXJuIE0uaXNEZWZpbmVkKHRoaXMuX2J1Y2tldHNbZV0pfSxfY3JlYXRlR2V0QnVja2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2hhc2godCksaT10aGlzLl9idWNrZXRzW2VdO3JldHVybiBNLmlzVW5kZWZpbmVkKGkpJiYoaT17a2V5OnR9LHRoaXMuX2J1Y2tldHNbZV09aSx0aGlzLmxlbmd0aCsrKSxpfSxfaGFzaDpmdW5jdGlvbih0KXtpZihNLmlzTnVtYmVyKHQpKXJldHVybiB0O2lmKE0uaXNTdHJpbmcodCkpcmV0dXJuIHRoaXMuX2hhc2hTdHJpbmcodCk7aWYoTS5pc09iamVjdCh0KSlyZXR1cm4gdGhpcy5fb2JqZWN0SGFzaElkKHQpO3Rocm93XCJVbnN1cHBvcnRlZCBrZXkgdHlwZS5cIn0sX2hhc2hTdHJpbmc6ZnVuY3Rpb24odCl7dmFyIGUsaSxuPTA7aWYoMD09PXQubGVuZ3RoKXJldHVybiBuO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaT10LmNoYXJDb2RlQXQoZSksbj0zMipuLW4raTtyZXR1cm4gbn0sX29iamVjdEhhc2hJZDpmdW5jdGlvbih0KXt2YXIgZT10Ll9oYXNoSWQ7cmV0dXJuIE0uaXNVbmRlZmluZWQoZSkmJihlPXMoKSx0Ll9oYXNoSWQ9ZSksZX19KSxtPWIuT2JzZXJ2YWJsZS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSl7dmFyIGksbj10aGlzO2lmKGIuT2JzZXJ2YWJsZS5mbi5pbml0LmNhbGwobiksdGhpcy5faGFzaFRhYmxlPW5ldyBnLHRoaXMubGVuZ3RoPTAsTS5pc0RlZmluZWQoZSkpaWYodC5pc0FycmF5KGUpKWZvcihpPTA7aTxlLmxlbmd0aDtpKyspdGhpcy5hZGQoZVtpXSk7ZWxzZSBlLmZvckVhY2goZnVuY3Rpb24odCxlKXt0aGlzLmFkZCh0LGUpfSx0aGlzKX0sYWRkOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5faGFzaFRhYmxlLmdldCh0KTtpfHwoaT10aGlzLl9oYXNoVGFibGUuYWRkKHQpLHRoaXMubGVuZ3RoKyssdGhpcy50cmlnZ2VyKFwiY2hhbmdlZFwiKSksaS52YWx1ZT1lfSxzZXQ6ZnVuY3Rpb24odCxlKXt0aGlzLmFkZCh0LGUpfSxnZXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faGFzaFRhYmxlLmdldCh0KTtpZihlKXJldHVybiBlLnZhbHVlO3Rocm93IEVycm9yKFwiQ2Fubm90IGZpbmQga2V5IFwiK3QpfSxjb250YWluc0tleTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faGFzaFRhYmxlLmNvbnRhaW5zS2V5KHQpfSxyZW1vdmU6ZnVuY3Rpb24odCl7aWYodGhpcy5jb250YWluc0tleSh0KSlyZXR1cm4gdGhpcy50cmlnZ2VyKFwiY2hhbmdlZFwiKSx0aGlzLmxlbmd0aC0tLHRoaXMuX2hhc2hUYWJsZS5yZW1vdmUodCl9LGZvckVhY2g6ZnVuY3Rpb24odCxlKXt0aGlzLl9oYXNoVGFibGUuZm9yRWFjaChmdW5jdGlvbihpKXt0LmNhbGwoZSxpLmtleSxpLnZhbHVlKX0pfSxmb3JFYWNoVmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLl9oYXNoVGFibGUuZm9yRWFjaChmdW5jdGlvbihpKXt0LmNhbGwoZSxpLnZhbHVlKX0pfSxmb3JFYWNoS2V5OmZ1bmN0aW9uKHQsZSl7dGhpcy5faGFzaFRhYmxlLmZvckVhY2goZnVuY3Rpb24oaSl7dC5jYWxsKGUsaS5rZXkpfSl9LGtleXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoS2V5KGZ1bmN0aW9uKGUpe3QucHVzaChlKX0pLHR9fSksXz1iLkNsYXNzLmV4dGVuZCh7aW5pdDpmdW5jdGlvbigpe3RoaXMuX3RhaWw9bnVsbCx0aGlzLl9oZWFkPW51bGwsdGhpcy5sZW5ndGg9MH0sZW5xdWV1ZTpmdW5jdGlvbih0KXt2YXIgZT17dmFsdWU6dCxuZXh0Om51bGx9O3RoaXMuX2hlYWQ/KHRoaXMuX3RhaWwubmV4dD1lLHRoaXMuX3RhaWw9dGhpcy5fdGFpbC5uZXh0KToodGhpcy5faGVhZD1lLHRoaXMuX3RhaWw9dGhpcy5faGVhZCksdGhpcy5sZW5ndGgrK30sZGVxdWV1ZTpmdW5jdGlvbigpe2lmKHRoaXMubGVuZ3RoPDEpdGhyb3cgRXJyb3IoXCJUaGUgcXVldWUgaXMgZW1wdHkuXCIpO3ZhciB0PXRoaXMuX2hlYWQudmFsdWU7cmV0dXJuIHRoaXMuX2hlYWQ9dGhpcy5faGVhZC5uZXh0LHRoaXMubGVuZ3RoLS0sdH0sY29udGFpbnM6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2hlYWQ7ZTspe2lmKGUudmFsdWU9PT10KXJldHVybiEwO2U9ZS5uZXh0fXJldHVybiExfX0pLHY9Yi5PYnNlcnZhYmxlLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2IuT2JzZXJ2YWJsZS5mbi5pbml0LmNhbGwoZSksdGhpcy5faGFzaFRhYmxlPW5ldyBnLHRoaXMubGVuZ3RoPTAsTS5pc0RlZmluZWQodCkmJih0IGluc3RhbmNlb2YgZz90LmZvckVhY2goZnVuY3Rpb24odCl7dGhpcy5hZGQodCl9KTp0IGluc3RhbmNlb2YgbSYmdC5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7dGhpcy5hZGQoe2tleTp0LHZhbHVlOmV9KX0sdGhpcykpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faGFzaFRhYmxlLmNvbnRhaW5zS2V5KHQpfSxhZGQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faGFzaFRhYmxlLmdldCh0KTtlfHwodGhpcy5faGFzaFRhYmxlLmFkZCh0LHQpLHRoaXMubGVuZ3RoKyssdGhpcy50cmlnZ2VyKFwiY2hhbmdlZFwiKSl9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jb250YWlucyh0KT90aGlzLl9oYXNoVGFibGUuZ2V0KHQpLnZhbHVlOm51bGx9LGhhc2g6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2hhc2hUYWJsZS5faGFzaCh0KX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3RoaXMuY29udGFpbnModCkmJih0aGlzLl9oYXNoVGFibGUucmVtb3ZlKHQpLHRoaXMubGVuZ3RoLS0sdGhpcy50cmlnZ2VyKFwiY2hhbmdlZFwiKSl9LGZvckVhY2g6ZnVuY3Rpb24odCxlKXt0aGlzLl9oYXNoVGFibGUuZm9yRWFjaChmdW5jdGlvbihlKXt0KGUudmFsdWUpfSxlKX0sdG9BcnJheTpmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24oZSl7dC5wdXNoKGUpfSksdH19KSx5PWIuQ2xhc3MuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7aWYodGhpcy5saW5rcz1bXSx0aGlzLm91dGdvaW5nPVtdLHRoaXMuaW5jb21pbmc9W10sdGhpcy53ZWlnaHQ9MSx0aGlzLmlkPU0uaXNEZWZpbmVkKHQpP3Q6cygpLE0uaXNEZWZpbmVkKGUpKXt0aGlzLmFzc29jaWF0ZWRTaGFwZT1lO3ZhciBpPWUuYm91bmRzKCk7dGhpcy53aWR0aD1pLndpZHRoLHRoaXMuaGVpZ2h0PWkuaGVpZ2h0LHRoaXMueD1pLngsdGhpcy55PWkueX1lbHNlIHRoaXMuYXNzb2NpYXRlZFNoYXBlPW51bGw7dGhpcy5kYXRhPW51bGwsdGhpcy50eXBlPVwiTm9kZVwiLHRoaXMuc2hvcnRGb3JtPVwiTm9kZSAnXCIrdGhpcy5pZCtcIidcIix0aGlzLmlzVmlydHVhbD0hMX0saXNJc29sYXRlZDpmdW5jdGlvbigpe3JldHVybiBNLmlzRW1wdHkodGhpcy5saW5rcyl9LGJvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gTS5pc0RlZmluZWQodCk/KHRoaXMueD10LngsdGhpcy55PXQueSx0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsZSk6bmV3IEMuUmVjdCh0aGlzLngsdGhpcy55LHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpfSxpc0xpbmtlZFRvOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIE0uYW55KGUubGlua3MsZnVuY3Rpb24oaSl7cmV0dXJuIGkuZ2V0Q29tcGxlbWVudChlKT09PXR9KX0sZ2V0Q2hpbGRyZW46ZnVuY3Rpb24oKXt2YXIgdCxlLGksbjtpZigwPT09dGhpcy5vdXRnb2luZy5sZW5ndGgpcmV0dXJuW107Zm9yKHQ9W10sZT0wLGk9dGhpcy5vdXRnb2luZy5sZW5ndGg7ZTxpO2UrKyluPXRoaXMub3V0Z29pbmdbZV0sdC5wdXNoKG4uZ2V0Q29tcGxlbWVudCh0aGlzKSk7cmV0dXJuIHR9LGdldFBhcmVudHM6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbjtpZigwPT09dGhpcy5pbmNvbWluZy5sZW5ndGgpcmV0dXJuW107Zm9yKHQ9W10sZT0wLGk9dGhpcy5pbmNvbWluZy5sZW5ndGg7ZTxpO2UrKyluPXRoaXMuaW5jb21pbmdbZV0sdC5wdXNoKG4uZ2V0Q29tcGxlbWVudCh0aGlzKSk7cmV0dXJuIHR9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHk7cmV0dXJuIE0uaXNEZWZpbmVkKHRoaXMud2VpZ2h0KSYmKHQud2VpZ2h0PXRoaXMud2VpZ2h0KSxNLmlzRGVmaW5lZCh0aGlzLmJhbGFuY2UpJiYodC5iYWxhbmNlPXRoaXMuYmFsYW5jZSksTS5pc0RlZmluZWQodGhpcy5vd25lcikmJih0Lm93bmVyPXRoaXMub3duZXIpLHQuYXNzb2NpYXRlZFNoYXBlPXRoaXMuYXNzb2NpYXRlZFNoYXBlLHQueD10aGlzLngsdC55PXRoaXMueSx0LndpZHRoPXRoaXMud2lkdGgsdC5oZWlnaHQ9dGhpcy5oZWlnaHQsdH0sYWRqYWNlbnRUbzpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXRoaXMuaXNMaW5rZWRUbyh0KX0scmVtb3ZlTGluazpmdW5jdGlvbih0KXt0LnNvdXJjZT09PXRoaXMmJihNLnJlbW92ZSh0aGlzLmxpbmtzLHQpLE0ucmVtb3ZlKHRoaXMub3V0Z29pbmcsdCksdC5zb3VyY2U9bnVsbCksdC50YXJnZXQ9PT10aGlzJiYoTS5yZW1vdmUodGhpcy5saW5rcyx0KSxNLnJlbW92ZSh0aGlzLmluY29taW5nLHQpLHQudGFyZ2V0PW51bGwpfSxoYXNMaW5rVG86ZnVuY3Rpb24odCl7cmV0dXJuIE0uYW55KHRoaXMub3V0Z29pbmcsZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFyZ2V0PT09dH0pfSxkZWdyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saW5rcy5sZW5ndGh9LGluY2lkZW50V2l0aDpmdW5jdGlvbih0KXtyZXR1cm4gUCh0aGlzLmxpbmtzLHQpfSxnZXRMaW5rc1dpdGg6ZnVuY3Rpb24odCl7cmV0dXJuIE0uYWxsKHRoaXMubGlua3MsZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0Q29tcGxlbWVudCh0aGlzKT09PXR9LHRoaXMpfSxnZXROZWlnaGJvcnM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gTS5mb3JFYWNoKHRoaXMuaW5jb21pbmcsZnVuY3Rpb24oZSl7dC5wdXNoKGUuZ2V0Q29tcGxlbWVudCh0aGlzKSl9LHRoaXMpLE0uZm9yRWFjaCh0aGlzLm91dGdvaW5nLGZ1bmN0aW9uKGUpe3QucHVzaChlLmdldENvbXBsZW1lbnQodGhpcykpfSx0aGlzKSx0fX0pLHc9Yi5DbGFzcy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlLGksbil7aWYoTS5pc1VuZGVmaW5lZCh0KSl0aHJvd1wiVGhlIHNvdXJjZSBvZiB0aGUgbmV3IGxpbmsgaXMgbm90IHNldC5cIjtpZihNLmlzVW5kZWZpbmVkKGUpKXRocm93XCJUaGUgdGFyZ2V0IG9mIHRoZSBuZXcgbGluayBpcyBub3Qgc2V0LlwiO3ZhciBvLHI7bz1NLmlzU3RyaW5nKHQpP25ldyB5KHQpOnQscj1NLmlzU3RyaW5nKGUpP25ldyB5KGUpOmUsdGhpcy5zb3VyY2U9byx0aGlzLnRhcmdldD1yLHRoaXMuc291cmNlLmxpbmtzLnB1c2godGhpcyksdGhpcy50YXJnZXQubGlua3MucHVzaCh0aGlzKSx0aGlzLnNvdXJjZS5vdXRnb2luZy5wdXNoKHRoaXMpLHRoaXMudGFyZ2V0LmluY29taW5nLnB1c2godGhpcyksdGhpcy5pZD1NLmlzRGVmaW5lZChpKT9pOnMoKSx0aGlzLmFzc29jaWF0ZWRDb25uZWN0aW9uPU0uaXNEZWZpbmVkKG4pP246bnVsbCx0aGlzLnR5cGU9XCJMaW5rXCIsdGhpcy5zaG9ydEZvcm09XCJMaW5rICdcIit0aGlzLnNvdXJjZS5pZCtcIi0+XCIrdGhpcy50YXJnZXQuaWQrXCInXCJ9LGdldENvbXBsZW1lbnQ6ZnVuY3Rpb24odCl7aWYodGhpcy5zb3VyY2UhPT10JiZ0aGlzLnRhcmdldCE9PXQpdGhyb3dcIlRoZSBnaXZlbiBub2RlIGlzIG5vdCBpbmNpZGVudCB3aXRoIHRoaXMgbGluay5cIjtyZXR1cm4gdGhpcy5zb3VyY2U9PT10P3RoaXMudGFyZ2V0OnRoaXMuc291cmNlfSxnZXRDb21tb25Ob2RlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNvdXJjZT09PXQuc291cmNlfHx0aGlzLnNvdXJjZT09PXQudGFyZ2V0P3RoaXMuc291cmNlOnRoaXMudGFyZ2V0PT09dC5zb3VyY2V8fHRoaXMudGFyZ2V0PT09dC50YXJnZXQ/dGhpcy50YXJnZXQ6bnVsbH0saXNCcmlkZ2luZzpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnNvdXJjZT09PXQmJnRoaXMudGFyZ2V0PT09ZXx8dGhpcy5zb3VyY2U9PT1lJiZ0aGlzLnRhcmdldD09PXR9LGdldE5vZGVzOmZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMuc291cmNlLHRoaXMudGFyZ2V0XX0saW5jaWRlbnRXaXRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNvdXJjZT09PXR8fHRoaXMudGFyZ2V0PT09dH0sYWRqYWNlbnRUbzpmdW5jdGlvbih0KXtyZXR1cm4gUCh0aGlzLnNvdXJjZS5saW5rcyx0KXx8UCh0aGlzLnRhcmdldC5saW5rcyx0KX0sY2hhbmdlU291cmNlOmZ1bmN0aW9uKHQpe00ucmVtb3ZlKHRoaXMuc291cmNlLmxpbmtzLHRoaXMpLE0ucmVtb3ZlKHRoaXMuc291cmNlLm91dGdvaW5nLHRoaXMpLHQubGlua3MucHVzaCh0aGlzKSx0Lm91dGdvaW5nLnB1c2godGhpcyksdGhpcy5zb3VyY2U9dH0sY2hhbmdlVGFyZ2V0OmZ1bmN0aW9uKHQpe00ucmVtb3ZlKHRoaXMudGFyZ2V0LmxpbmtzLHRoaXMpLE0ucmVtb3ZlKHRoaXMudGFyZ2V0LmluY29taW5nLHRoaXMpLHQubGlua3MucHVzaCh0aGlzKSx0LmluY29taW5nLnB1c2godGhpcyksdGhpcy50YXJnZXQ9dH0sY2hhbmdlc05vZGVzOmZ1bmN0aW9uKHQsZSl7dGhpcy5zb3VyY2U9PT10P3RoaXMuY2hhbmdlU291cmNlKGUpOnRoaXMudGFyZ2V0PT09dCYmdGhpcy5jaGFuZ2VUYXJnZXQoZSl9LHJldmVyc2U6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNvdXJjZSxlPXRoaXMudGFyZ2V0O3JldHVybiB0aGlzLnNvdXJjZT1lLE0ucmVtb3ZlKHQub3V0Z29pbmcsdGhpcyksdGhpcy5zb3VyY2Uub3V0Z29pbmcucHVzaCh0aGlzKSx0aGlzLnRhcmdldD10LE0ucmVtb3ZlKGUuaW5jb21pbmcsdGhpcyksdGhpcy50YXJnZXQuaW5jb21pbmcucHVzaCh0aGlzKSx0aGlzfSxkaXJlY3RUbzpmdW5jdGlvbih0KXtpZih0aGlzLnNvdXJjZSE9PXQmJnRoaXMudGFyZ2V0IT09dCl0aHJvd1wiVGhlIGdpdmVuIG5vZGUgaXMgbm90IGluY2lkZW50IHdpdGggdGhpcyBsaW5rLlwiO3RoaXMudGFyZ2V0IT09dCYmdGhpcy5yZXZlcnNlKCl9LGNyZWF0ZVJldmVyc2VFZGdlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jbG9uZSgpO3JldHVybiB0LnJldmVyc2UoKSx0LnJldmVyc2VkPSEwLHR9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHcodGhpcy5zb3VyY2UsdGhpcy50YXJnZXQpO3JldHVybiB0fX0pLHg9Yi5DbGFzcy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dGhpcy5saW5rcz1bXSx0aGlzLm5vZGVzPVtdLHRoaXMuX25vZGVNYXA9bmV3IG0sdGhpcy5kaWFncmFtPW51bGwsdGhpcy5fcm9vdD1udWxsLE0uaXNEZWZpbmVkKHQpP00uaXNTdHJpbmcodCk/dGhpcy5pZD10Oih0aGlzLmRpYWdyYW09dCx0aGlzLmlkPXQuaWQpOnRoaXMuaWQ9cygpLHRoaXMuYm91bmRzPW5ldyBhLHRoaXMuX2hhc0NhY2hlZFJlbGF0aW9uc2hpcHM9ITEsdGhpcy50eXBlPVwiR3JhcGhcIn0sY2FjaGVSZWxhdGlvbnNoaXBzOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpZihNLmlzVW5kZWZpbmVkKHQpJiYodD0hMSksXG4gICAgIXRoaXMuX2hhc0NhY2hlZFJlbGF0aW9uc2hpcHN8fHQpe2ZvcihlPTAsaT10aGlzLm5vZGVzLmxlbmd0aDtlPGk7ZSsrKW49dGhpcy5ub2Rlc1tlXSxuLmNoaWxkcmVuPXRoaXMuZ2V0Q2hpbGRyZW4obiksbi5wYXJlbnRzPXRoaXMuZ2V0UGFyZW50cyhuKTt0aGlzLl9oYXNDYWNoZWRSZWxhdGlvbnNoaXBzPSEwfX0sYXNzaWduTGV2ZWxzOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvLHMscjtpZighdCl0aHJvd1wiU3RhcnQgbm9kZSBub3Qgc3BlY2lmaWVkLlwiO2ZvcihNLmlzVW5kZWZpbmVkKGUpJiYoZT0wKSx0aGlzLmNhY2hlUmVsYXRpb25zaGlwcygpLE0uaXNVbmRlZmluZWQoaSkmJihpPW5ldyBtLE0uZm9yRWFjaCh0aGlzLm5vZGVzLGZ1bmN0aW9uKHQpe2kuYWRkKHQsITEpfSkpLGkuc2V0KHQsITApLHQubGV2ZWw9ZSxuPXQuY2hpbGRyZW4sbz0wLHM9bi5sZW5ndGg7bzxzO28rKylyPW5bb10sciYmIWkuZ2V0KHIpJiZ0aGlzLmFzc2lnbkxldmVscyhyLGUrMSxpKX0scm9vdDpmdW5jdGlvbih0KXtpZihNLmlzVW5kZWZpbmVkKHQpKXtpZih0aGlzLl9yb290KXJldHVybiB0aGlzLl9yb290O3ZhciBlPU0uZmlyc3QodGhpcy5ub2RlcyxmdW5jdGlvbih0KXtyZXR1cm4gMD09PXQuaW5jb21pbmcubGVuZ3RofSk7cmV0dXJuIGU/ZTpNLmZpcnN0KHRoaXMubm9kZXMpfXRoaXMuX3Jvb3Q9dH0sZ2V0Q29ubmVjdGVkQ29tcG9uZW50czpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLG87Zm9yKHRoaXMuY29tcG9uZW50SW5kZXg9MCx0aGlzLnNldEl0ZW1JbmRpY2VzKCksdD1NLmluaXRBcnJheSh0aGlzLm5vZGVzLmxlbmd0aCwtMSksZT0wO2U8dGhpcy5ub2Rlcy5sZW5ndGg7ZSsrKXRbZV09PT0tMSYmKHRoaXMuX2NvbGxlY3RDb25uZWN0ZWROb2Rlcyh0LGUpLHRoaXMuY29tcG9uZW50SW5kZXgrKyk7Zm9yKGk9W10sbj0wO248dGhpcy5jb21wb25lbnRJbmRleDsrK24paVtuXT1uZXcgeDtmb3Iobj0wO248dC5sZW5ndGg7KytuKW89aVt0W25dXSxvLmFkZE5vZGVBbmRPdXRnb2luZ3ModGhpcy5ub2Rlc1tuXSk7cmV0dXJuIGkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBlLm5vZGVzLmxlbmd0aC10Lm5vZGVzLmxlbmd0aH0pLGl9LF9jb2xsZWN0Q29ubmVjdGVkTm9kZXM6ZnVuY3Rpb24odCxlKXt0W2VdPXRoaXMuY29tcG9uZW50SW5kZXg7dmFyIGk9dGhpcy5ub2Rlc1tlXTtNLmZvckVhY2goaS5saW5rcyxmdW5jdGlvbihlKXt2YXIgbj1lLmdldENvbXBsZW1lbnQoaSksbz1uLmluZGV4O3Rbb109PT0tMSYmdGhpcy5fY29sbGVjdENvbm5lY3RlZE5vZGVzKHQsbyl9LHRoaXMpfSxjYWxjQm91bmRzOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG47aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuIHRoaXMuYm91bmRzPW5ldyBhO2Zvcih0PW51bGwsZT0wLGk9dGhpcy5ub2Rlcy5sZW5ndGg7ZTxpO2UrKyluPXRoaXMubm9kZXNbZV0sdD10P3QudW5pb24obi5ib3VuZHMoKSk6bi5ib3VuZHMoKTtyZXR1cm4gdGhpcy5ib3VuZHM9dH0sZ2V0U3Bhbm5pbmdUcmVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvLHMscixhLGgsYyxkLGwsdSxmPW5ldyB4LHA9bmV3IG07Zm9yKGYucm9vdD10LmNsb25lKCksZi5yb290LmxldmVsPTAsZi5yb290LmlkPXQuaWQscC5hZGQodCxmLnJvb3QpLHQubGV2ZWw9MCxuPVtdLG89W10sZi5fYWRkTm9kZShmLnJvb3QpLG4ucHVzaCh0KSxvLnB1c2godCkscz0xO28ubGVuZ3RoPjA7KWZvcihyPW8ucG9wKCksYT0wO2E8ci5saW5rcy5sZW5ndGg7YSsrKWg9ci5saW5rc1thXSxjPWguZ2V0Q29tcGxlbWVudChyKSxQKG4sYyl8fChjLmxldmVsPXIubGV2ZWwrMSxzPGMubGV2ZWwrMSYmKHM9Yy5sZXZlbCsxKSxQKG8sYyl8fG8ucHVzaChjKSxQKG4sYyl8fG4ucHVzaChjKSxwLmNvbnRhaW5zS2V5KHIpP2U9cC5nZXQocik6KGU9ci5jbG9uZSgpLGUubGV2ZWw9ci5sZXZlbCxlLmlkPXIuaWQscC5hZGQocixlKSkscC5jb250YWluc0tleShjKT9pPXAuZ2V0KGMpOihpPWMuY2xvbmUoKSxpLmxldmVsPWMubGV2ZWwsaS5pZD1jLmlkLHAuYWRkKGMsaSkpLGQ9bmV3IHcoZSxpKSxmLmFkZExpbmsoZCkpO2ZvcihsPVtdLHU9MDt1PHM7dSsrKWwucHVzaChbXSk7cmV0dXJuIE0uZm9yRWFjaChmLm5vZGVzLGZ1bmN0aW9uKHQpe2xbdC5sZXZlbF0ucHVzaCh0KX0pLGYudHJlZUxldmVscz1sLGYuY2FjaGVSZWxhdGlvbnNoaXBzKCksZn0sdGFrZVJhbmRvbU5vZGU6ZnVuY3Rpb24oZSxpKXtpZihNLmlzVW5kZWZpbmVkKGUpJiYoZT1bXSksTS5pc1VuZGVmaW5lZChpKSYmKGk9NCksMD09PXRoaXMubm9kZXMubGVuZ3RoKXJldHVybiBudWxsO2lmKDE9PT10aGlzLm5vZGVzLmxlbmd0aClyZXR1cm4gUChlLHRoaXMubm9kZXNbMF0pP251bGw6dGhpcy5ub2Rlc1swXTt2YXIgbj10LmdyZXAodGhpcy5ub2RlcyxmdW5jdGlvbih0KXtyZXR1cm4hUChlLHQpJiZ0LmRlZ3JlZSgpPD1pfSk7cmV0dXJuIE0uaXNFbXB0eShuKT9udWxsOm5bTS5yYW5kb21JbnRlZ2VyKDAsbi5sZW5ndGgpXX0saXNFbXB0eTpmdW5jdGlvbigpe3JldHVybiBNLmlzRW1wdHkodGhpcy5ub2Rlcyl9LGlzSGVhbHRoeTpmdW5jdGlvbigpe3JldHVybiBNLmFsbCh0aGlzLmxpbmtzLGZ1bmN0aW9uKHQpe3JldHVybiBQKHRoaXMubm9kZXMsdC5zb3VyY2UpJiZQKHRoaXMubm9kZXMsdC50YXJnZXQpfSx0aGlzKX0sZ2V0UGFyZW50czpmdW5jdGlvbih0KXtpZighdGhpcy5oYXNOb2RlKHQpKXRocm93XCJUaGUgZ2l2ZW4gbm9kZSBpcyBub3QgcGFydCBvZiB0aGlzIGdyYXBoLlwiO3JldHVybiB0LmdldFBhcmVudHMoKX0sZ2V0Q2hpbGRyZW46ZnVuY3Rpb24odCl7aWYoIXRoaXMuaGFzTm9kZSh0KSl0aHJvd1wiVGhlIGdpdmVuIG5vZGUgaXMgbm90IHBhcnQgb2YgdGhpcyBncmFwaC5cIjtyZXR1cm4gdC5nZXRDaGlsZHJlbigpfSxhZGRMaW5rOmZ1bmN0aW9uKHQsaSxuKXt2YXIgbyxzLHI7aWYoTS5pc1VuZGVmaW5lZCh0KSl0aHJvd1wiVGhlIHNvdXJjZSBvZiB0aGUgbGluayBpcyBub3QgZGVmaW5lZC5cIjtpZihNLmlzVW5kZWZpbmVkKGkpKXtpZihNLmlzRGVmaW5lZCh0LnR5cGUpJiZcIkxpbmtcIj09PXQudHlwZSlyZXR1cm4gdGhpcy5hZGRFeGlzdGluZ0xpbmsodCksZTt0aHJvd1wiVGhlIHRhcmdldCBvZiB0aGUgbGluayBpcyBub3QgZGVmaW5lZC5cIn1yZXR1cm4gbz10aGlzLmdldE5vZGUodCksTS5pc1VuZGVmaW5lZChvKSYmKG89dGhpcy5hZGROb2RlKHQpKSxzPXRoaXMuZ2V0Tm9kZShpKSxNLmlzVW5kZWZpbmVkKHMpJiYocz10aGlzLmFkZE5vZGUoaSkpLHI9bmV3IHcobyxzKSxNLmlzRGVmaW5lZChuKSYmKHIub3duZXI9biksdGhpcy5saW5rcy5wdXNoKHIpLHJ9LHJlbW92ZUFsbExpbmtzOmZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxpbmtzLmxlbmd0aD4wOyl7dmFyIHQ9dGhpcy5saW5rc1swXTt0aGlzLnJlbW92ZUxpbmsodCl9fSxhZGRFeGlzdGluZ0xpbms6ZnVuY3Rpb24odCl7dmFyIGUsaTt0aGlzLmhhc0xpbmsodCl8fCh0aGlzLmxpbmtzLnB1c2godCksdGhpcy5oYXNOb2RlKHQuc291cmNlLmlkKT8oZT10aGlzLmdldE5vZGUodC5zb3VyY2UuaWQpLHQuY2hhbmdlU291cmNlKGUpKTp0aGlzLmFkZE5vZGUodC5zb3VyY2UpLHRoaXMuaGFzTm9kZSh0LnRhcmdldC5pZCk/KGk9dGhpcy5nZXROb2RlKHQudGFyZ2V0LmlkKSx0LmNoYW5nZVRhcmdldChpKSk6dGhpcy5hZGROb2RlKHQudGFyZ2V0KSl9LGhhc0xpbms6ZnVuY3Rpb24odCl7aWYoTS5pc1N0cmluZyh0KSlyZXR1cm4gTS5hbnkodGhpcy5saW5rcyxmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXR9KTtpZihcIkxpbmtcIj09PXQudHlwZSlyZXR1cm4gUCh0aGlzLmxpbmtzLHQpO3Rocm93XCJUaGUgZ2l2ZW4gb2JqZWN0IGlzIG5laXRoZXIgYW4gaWRlbnRpZmllciBub3IgYSBMaW5rLlwifSxnZXROb2RlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaWR8fHQ7aWYodGhpcy5fbm9kZU1hcC5jb250YWluc0tleShlKSlyZXR1cm4gdGhpcy5fbm9kZU1hcC5nZXQoZSl9LGhhc05vZGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pZHx8dDtyZXR1cm4gdGhpcy5fbm9kZU1hcC5jb250YWluc0tleShlKX0sX2FkZE5vZGU6ZnVuY3Rpb24odCl7dGhpcy5ub2Rlcy5wdXNoKHQpLHRoaXMuX25vZGVNYXAuYWRkKHQuaWQsdCl9LF9yZW1vdmVOb2RlOmZ1bmN0aW9uKHQpe00ucmVtb3ZlKHRoaXMubm9kZXMsdCksdGhpcy5fbm9kZU1hcC5yZW1vdmUodC5pZCl9LHJlbW92ZU5vZGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG8scz10O2lmKE0uaXNTdHJpbmcodCkmJihzPXRoaXMuZ2V0Tm9kZSh0KSksIU0uaXNEZWZpbmVkKHMpKXRocm93XCJUaGUgaWRlbnRpZmllciBzaG91bGQgYmUgYSBOb2RlIG9yIHRoZSBJZCAoc3RyaW5nKSBvZiBhIG5vZGUuXCI7Zm9yKGU9cy5saW5rcyxzLmxpbmtzPVtdLGk9MCxuPWUubGVuZ3RoO2k8bjtpKyspbz1lW2ldLHRoaXMucmVtb3ZlTGluayhvKTt0aGlzLl9yZW1vdmVOb2RlKHMpfSxhcmVDb25uZWN0ZWQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTS5hbnkodGhpcy5saW5rcyxmdW5jdGlvbihpKXtyZXR1cm4gaS5zb3VyY2U9PXQmJmkudGFyZ2V0PT1lfHxpLnNvdXJjZT09ZSYmaS50YXJnZXQ9PXR9KX0scmVtb3ZlTGluazpmdW5jdGlvbih0KXtNLnJlbW92ZSh0aGlzLmxpbmtzLHQpLE0ucmVtb3ZlKHQuc291cmNlLm91dGdvaW5nLHQpLE0ucmVtb3ZlKHQuc291cmNlLmxpbmtzLHQpLE0ucmVtb3ZlKHQudGFyZ2V0LmluY29taW5nLHQpLE0ucmVtb3ZlKHQudGFyZ2V0LmxpbmtzLHQpfSxhZGROb2RlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj1udWxsO2lmKCFNLmlzRGVmaW5lZCh0KSl0aHJvd1wiTm8gTm9kZSBvciBpZGVudGlmaWVyIGZvciBhIG5ldyBOb2RlIGlzIGdpdmVuLlwiO2lmKE0uaXNTdHJpbmcodCkpe2lmKHRoaXMuaGFzTm9kZSh0KSlyZXR1cm4gdGhpcy5nZXROb2RlKHQpO249bmV3IHkodCl9ZWxzZXtpZih0aGlzLmhhc05vZGUodCkpcmV0dXJuIHRoaXMuZ2V0Tm9kZSh0KTtuPXR9cmV0dXJuIE0uaXNEZWZpbmVkKGUpJiZuLmJvdW5kcyhlKSxNLmlzRGVmaW5lZChpKSYmKG4ub3duZXI9aSksdGhpcy5fYWRkTm9kZShuKSxufSxhZGROb2RlQW5kT3V0Z29pbmdzOmZ1bmN0aW9uKHQpe3RoaXMuaGFzTm9kZSh0KXx8dGhpcy5fYWRkTm9kZSh0KTt2YXIgZT10Lm91dGdvaW5nO3Qub3V0Z29pbmc9W10sTS5mb3JFYWNoKGUsZnVuY3Rpb24odCl7dGhpcy5hZGRFeGlzdGluZ0xpbmsodCl9LHRoaXMpfSxzZXRJdGVtSW5kaWNlczpmdW5jdGlvbigpe3ZhciB0O2Zvcih0PTA7dDx0aGlzLm5vZGVzLmxlbmd0aDsrK3QpdGhpcy5ub2Rlc1t0XS5pbmRleD10O2Zvcih0PTA7dDx0aGlzLmxpbmtzLmxlbmd0aDsrK3QpdGhpcy5saW5rc1t0XS5pbmRleD10fSxjbG9uZTpmdW5jdGlvbih0KXt2YXIgZSxpPW5ldyB4LG49TS5pc0RlZmluZWQodCkmJnQ9PT0hMDtyZXR1cm4gbiYmKGkubm9kZU1hcD1uZXcgbSxpLmxpbmtNYXA9bmV3IG0pLGU9bmV3IG0sTS5mb3JFYWNoKHRoaXMubm9kZXMsZnVuY3Rpb24odCl7dmFyIG89dC5jbG9uZSgpO2Uuc2V0KHQsbyksaS5fYWRkTm9kZShvKSxuJiZpLm5vZGVNYXAuc2V0KG8sdCl9KSxNLmZvckVhY2godGhpcy5saW5rcyxmdW5jdGlvbih0KXtpZihlLmNvbnRhaW5zS2V5KHQuc291cmNlKSYmZS5jb250YWluc0tleSh0LnRhcmdldCkpe3ZhciBvPWkuYWRkTGluayhlLmdldCh0LnNvdXJjZSksZS5nZXQodC50YXJnZXQpKTtuJiZpLmxpbmtNYXAuc2V0KG8sdCl9fSksaX0sbGluZWFyaXplOmZ1bmN0aW9uKHQpe3JldHVybiB4LlV0aWxzLmxpbmVhcml6ZSh0aGlzLHQpfSxkZXB0aEZpcnN0VHJhdmVyc2FsOmZ1bmN0aW9uKHQsZSl7dmFyIGksbjtpZihNLmlzVW5kZWZpbmVkKHQpKXRocm93XCJZb3UgbmVlZCB0byBzdXBwbHkgYSBzdGFydGluZyBub2RlLlwiO2lmKE0uaXNVbmRlZmluZWQoZSkpdGhyb3dcIllvdSBuZWVkIHRvIHN1cHBseSBhbiBhY3Rpb24uXCI7aWYoIXRoaXMuaGFzTm9kZSh0KSl0aHJvd1wiVGhlIGdpdmVuIHN0YXJ0LW5vZGUgaXMgbm90IHBhcnQgb2YgdGhpcyBncmFwaFwiO2k9dGhpcy5nZXROb2RlKHQpLG49W10sdGhpcy5fZGZ0SXRlcmF0b3IoaSxlLG4pfSxfZGZ0SXRlcmF0b3I6ZnVuY3Rpb24odCxlLGkpe3ZhciBuLG8scyxyO2ZvcihlKHQpLGkucHVzaCh0KSxuPXQuZ2V0Q2hpbGRyZW4oKSxvPTAscz1uLmxlbmd0aDtvPHM7bysrKXI9bltvXSxQKGkscil8fHRoaXMuX2RmdEl0ZXJhdG9yKHIsZSxpKX0sYnJlYWR0aEZpcnN0VHJhdmVyc2FsOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixvLHMscixhLGgsYztpZihNLmlzVW5kZWZpbmVkKHQpKXRocm93XCJZb3UgbmVlZCB0byBzdXBwbHkgYSBzdGFydGluZyBub2RlLlwiO2lmKE0uaXNVbmRlZmluZWQoZSkpdGhyb3dcIllvdSBuZWVkIHRvIHN1cHBseSBhbiBhY3Rpb24uXCI7aWYoIXRoaXMuaGFzTm9kZSh0KSl0aHJvd1wiVGhlIGdpdmVuIHN0YXJ0LW5vZGUgaXMgbm90IHBhcnQgb2YgdGhpcyBncmFwaFwiO2ZvcihpPXRoaXMuZ2V0Tm9kZSh0KSxuPW5ldyBfLG89W10sbi5lbnF1ZXVlKGkpO24ubGVuZ3RoPjA7KWZvcihzPW4uZGVxdWV1ZSgpLGUocyksby5wdXNoKHMpLHI9cy5nZXRDaGlsZHJlbigpLGE9MCxoPXIubGVuZ3RoO2E8aDthKyspYz1yW2FdLFAobyxjKXx8UChuLGMpfHxuLmVucXVldWUoYyl9LF9zdHJvbmdseUNvbm5lY3RlZENvbXBvbmVudHM6ZnVuY3Rpb24odCxlLGksbixvLHMscil7dmFyIGEsaCxjLGQsbDtmb3IoaS5hZGQoZSxyKSxuLmFkZChlLHIpLHIrKyxzLnB1c2goZSksYT1lLmdldENoaWxkcmVuKCksYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyloPWFbY10saS5jb250YWluc0tleShoKT9QKHMsaCkmJm4uYWRkKGUsTWF0aC5taW4obi5nZXQoZSksaS5nZXQoaCkpKToodGhpcy5fc3Ryb25nbHlDb25uZWN0ZWRDb21wb25lbnRzKHQsaCxpLG4sbyxzLHIpLG4uYWRkKGUsTWF0aC5taW4obi5nZXQoZSksbi5nZXQoaCkpKSk7aWYobi5nZXQoZSk9PT1pLmdldChlKSl7bD1bXTtkbyBoPXMucG9wKCksbC5wdXNoKGgpO3doaWxlKGghPT1lKTsoIXR8fGwubGVuZ3RoPjEpJiZvLnB1c2gobCl9fSxmaW5kQ3ljbGVzOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvLHMscixhO2ZvcihNLmlzVW5kZWZpbmVkKHQpJiYodD0hMCksZT1uZXcgbSxpPW5ldyBtLG49W10sbz1bXSxzPTAscj10aGlzLm5vZGVzLmxlbmd0aDtzPHI7cysrKWE9dGhpcy5ub2Rlc1tzXSxlLmNvbnRhaW5zS2V5KGEpfHx0aGlzLl9zdHJvbmdseUNvbm5lY3RlZENvbXBvbmVudHModCxhLGUsaSxuLG8sMCk7cmV0dXJuIG59LGlzQWN5Y2xpYzpmdW5jdGlvbigpe3JldHVybiBNLmlzRW1wdHkodGhpcy5maW5kQ3ljbGVzKCkpfSxpc1N1YkdyYXBoOmZ1bmN0aW9uKHQpe3ZhciBlPXQubGluZWFyaXplKCksaT10aGlzLmxpbmVhcml6ZSgpO3JldHVybiBNLmFsbChlLGZ1bmN0aW9uKHQpe3JldHVybiBQKGksdCl9KX0sbWFrZUFjeWNsaWM6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixvLHMscixhLGgsYyxkLGwsdSxmLHAsZyxfLHYseSx3LHgsYixDLFMsayxULEQsSSxQLEwsRSx6O2lmKHRoaXMuaXNFbXB0eSgpfHx0aGlzLm5vZGVzLmxlbmd0aDw9MXx8dGhpcy5saW5rcy5sZW5ndGg8PTEpcmV0dXJuW107aWYoMj09dGhpcy5ub2Rlcy5sZW5ndGgpe2lmKHQ9W10sdGhpcy5saW5rcy5sZW5ndGg+MSlmb3IoZT10aGlzLmxpbmtzWzBdLGk9ZS5zb3VyY2Usbj0wLG89dGhpcy5saW5rcy5sZW5ndGg7bjxvO24rKylzPXRoaXMubGlua3Nbbl0scy5zb3VyY2UhPWkmJihyPXMucmV2ZXJzZSgpLHQucHVzaChyKSk7cmV0dXJuIHR9Zm9yKGE9dGhpcy5jbG9uZSghMCksaD10aGlzLm5vZGVzLmxlbmd0aCxjPW5ldyBtLGQ9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10Lm91dGdvaW5nLmxlbmd0aD8yLWg6MD09PXQuaW5jb21pbmcubGVuZ3RoP2gtMjp0Lm91dGdvaW5nLmxlbmd0aC10LmluY29taW5nLmxlbmd0aH0sbD1mdW5jdGlvbih0LGUpe3ZhciBpPWQodCxoKTtlLmNvbnRhaW5zS2V5KGkpfHxlLnNldChpLFtdKSxlLmdldChpKS5wdXNoKHQpfSxNLmZvckVhY2goYS5ub2RlcyxmdW5jdGlvbih0KXtsKHQsYyl9KSx1PVtdLGY9W107YS5ub2Rlcy5sZW5ndGg+MDspe2lmKGMuY29udGFpbnNLZXkoMi1oKSlmb3Iodj1jLmdldCgyLWgpO3YubGVuZ3RoPjA7KXtmb3IoZz12LnBvcCgpLHk9MDt5PGcubGlua3MubGVuZ3RoO3krKyl3PWcubGlua3NbeV0scD13LmdldENvbXBsZW1lbnQoZyksXz1kKHAsaCksTS5yZW1vdmUoYy5nZXQoXykscCkscC5yZW1vdmVMaW5rKHcpLGwocCxjKTthLl9yZW1vdmVOb2RlKGcpLGYudW5zaGlmdChnKX1pZihjLmNvbnRhaW5zS2V5KGgtMikpZm9yKHg9Yy5nZXQoaC0yKTt4Lmxlbmd0aD4wOyl7Zm9yKHA9eC5wb3AoKSxiPTA7YjxwLmxpbmtzLmxlbmd0aDtiKyspQz1wLmxpbmtzW2JdLGc9Qy5nZXRDb21wbGVtZW50KHApLF89ZChnLGgpLE0ucmVtb3ZlKGMuZ2V0KF8pLGcpLGcucmVtb3ZlTGluayhDKSxsKGcsYyk7dS5wdXNoKHApLGEuX3JlbW92ZU5vZGUocCl9aWYoYS5ub2Rlcy5sZW5ndGg+MClmb3IoUz1oLTM7Uz4yLWg7Uy0tKWlmKGMuY29udGFpbnNLZXkoUykmJmMuZ2V0KFMpLmxlbmd0aD4wKXtmb3Ioaz1jLmdldChTKSxUPWsucG9wKCksRD0wO0Q8VC5saW5rcy5sZW5ndGg7RCsrKUk9VC5saW5rc1tEXSxQPUkuZ2V0Q29tcGxlbWVudChUKSxfPWQoUCxoKSxNLnJlbW92ZShjLmdldChfKSxQKSxQLnJlbW92ZUxpbmsoSSksbChQLGMpO3UucHVzaChUKSxhLl9yZW1vdmVOb2RlKFQpO2JyZWFrfX1mb3IodT11LmNvbmNhdChmKSxMPW5ldyBtLEU9MDtFPHRoaXMubm9kZXMubGVuZ3RoO0UrKylMLnNldChhLm5vZGVNYXAuZ2V0KHVbRV0pLEUpO3JldHVybiB6PVtdLE0uZm9yRWFjaCh0aGlzLmxpbmtzLGZ1bmN0aW9uKHQpe0wuZ2V0KHQuc291cmNlKT5MLmdldCh0LnRhcmdldCkmJih0LnJldmVyc2UoKSx6LnB1c2godCkpfSksen19KSx4LlByZWRlZmluZWQ9e0VpZ2h0R3JhcGg6ZnVuY3Rpb24oKXtyZXR1cm4geC5VdGlscy5wYXJzZShbXCIxLT4yXCIsXCIyLT4zXCIsXCIzLT40XCIsXCI0LT4xXCIsXCIzLT41XCIsXCI1LT42XCIsXCI2LT43XCIsXCI3LT4zXCJdKX0sTWluZG1hcDpmdW5jdGlvbigpe3JldHVybiB4LlV0aWxzLnBhcnNlKFtcIjAtPjFcIixcIjAtPjJcIixcIjAtPjNcIixcIjAtPjRcIixcIjAtPjVcIixcIjEtPjZcIixcIjEtPjdcIixcIjctPjhcIixcIjItPjlcIixcIjktPjEwXCIsXCI5LT4xMVwiLFwiMy0+MTJcIixcIjEyLT4xM1wiLFwiMTMtPjE0XCIsXCI0LT4xNVwiLFwiNC0+MTZcIixcIjE1LT4xN1wiLFwiMTUtPjE4XCIsXCIxOC0+MTlcIixcIjE4LT4yMFwiLFwiMTQtPjIxXCIsXCIxNC0+MjJcIixcIjUtPjIzXCIsXCIyMy0+MjRcIixcIjIzLT4yNVwiLFwiNi0+MjZcIl0pfSxUaHJlZUdyYXBoOmZ1bmN0aW9uKCl7cmV0dXJuIHguVXRpbHMucGFyc2UoW1wiMS0+MlwiLFwiMi0+M1wiLFwiMy0+MVwiXSl9LEJpbmFyeVRyZWU6ZnVuY3Rpb24odCl7cmV0dXJuIE0uaXNVbmRlZmluZWQodCkmJih0PTUpLHguVXRpbHMuY3JlYXRlQmFsYW5jZWRUcmVlKHQsMil9LExpbmVhcjpmdW5jdGlvbih0KXtyZXR1cm4gTS5pc1VuZGVmaW5lZCh0KSYmKHQ9MTApLHguVXRpbHMuY3JlYXRlQmFsYW5jZWRUcmVlKHQsMSl9LFRyZWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4geC5VdGlscy5jcmVhdGVCYWxhbmNlZFRyZWUodCxlKX0sRm9yZXN0OmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4geC5VdGlscy5jcmVhdGVCYWxhbmNlZEZvcmVzdCh0LGUsaSl9LFdvcmtmbG93OmZ1bmN0aW9uKCl7cmV0dXJuIHguVXRpbHMucGFyc2UoW1wiMC0+MVwiLFwiMS0+MlwiLFwiMi0+M1wiLFwiMS0+NFwiLFwiNC0+M1wiLFwiMy0+NVwiLFwiNS0+NlwiLFwiNi0+M1wiLFwiNi0+N1wiLFwiNS0+NFwiXSl9LEdyaWQ6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scyxyLGE9bmV3IEMuR3JhcGg7aWYodDw9MCYmZTw9MClyZXR1cm4gYTtmb3IoaT0wO2k8dCsxO2krKylmb3Iobj1udWxsLG89MDtvPGUrMTtvKyspcz1uZXcgeShcIlwiK2krXCIuXCIrbyksYS5hZGROb2RlKHMpLG4mJmEuYWRkTGluayhuLHMpLGk+MCYmKHI9YS5nZXROb2RlKFwiXCIrKGktMSkrXCIuXCIrbyksYS5hZGRMaW5rKHIscykpLG49cztyZXR1cm4gYX19LHguVXRpbHM9e3BhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvLHMscj1uZXcgQy5HcmFwaCxhPXQuc2xpY2UoKTtmb3IoaT0wLG49YS5sZW5ndGg7aTxuO2krKyl7aWYobz1hW2ldLE0uaXNTdHJpbmcobykpe2lmKG8uaW5kZXhPZihcIi0+XCIpPDApdGhyb3dcIlRoZSBsaW5rIHNob3VsZCBiZSBzcGVjaWZpZWQgYXMgJ2EtPmInLlwiO2lmKHM9by5zcGxpdChcIi0+XCIpLDIhPXMubGVuZ3RoKXRocm93XCJUaGUgbGluayBzaG91bGQgYmUgc3BlY2lmaWVkIGFzICdhLT5iJy5cIjtlPW5ldyB3KHNbMF0sc1sxXSksci5hZGRMaW5rKGUpfWlmKE0uaXNPYmplY3Qobykpe2lmKCFlKXRocm93XCJTcGVjaWZpY2F0aW9uIGZvdW5kIGJlZm9yZSBMaW5rIGRlZmluaXRpb24uXCI7Yi5kZWVwRXh0ZW5kKGUsbyl9fXJldHVybiByfSxsaW5lYXJpemU6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scztpZihNLmlzVW5kZWZpbmVkKHQpKXRocm93XCJFeHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhIEdyYXBoIG9iamVjdCBpbiBzbG90IG9uZS5cIjtmb3IoTS5pc1VuZGVmaW5lZChlKSYmKGU9ITEpLGk9W10sbj0wLG89dC5saW5rcy5sZW5ndGg7bjxvO24rKylzPXQubGlua3Nbbl0saS5wdXNoKHMuc291cmNlLmlkK1wiLT5cIitzLnRhcmdldC5pZCksZSYmaS5wdXNoKHtpZDpzLmlkfSk7cmV0dXJuIGl9LF9hZGRTaGFwZTpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gTS5pc1VuZGVmaW5lZChlKSYmKGU9bmV3IEMuUG9pbnQoMCwwKSksTS5pc1VuZGVmaW5lZChpKSYmKGk9cygpKSxuPWIuZGVlcEV4dGVuZCh7d2lkdGg6MjAsaGVpZ2h0OjIwLGlkOmkscmFkaXVzOjEwLGZpbGw6XCIjNzc4ODk5XCIsZGF0YTpcImNpcmNsZVwiLHVuZG9hYmxlOiExLHg6ZS54LHk6ZS55fSxuKSx0LmFkZFNoYXBlKG4pfSxfYWRkQ29ubmVjdGlvbjpmdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdC5jb25uZWN0KGUsaSxuKX0sY3JlYXRlRGlhZ3JhbUZyb21HcmFwaDpmdW5jdGlvbih0LGUsaSxuKXt2YXIgbyxzLHIsaCxjLGQsbCx1LGYscCxnLG0sXyx2LHksdztpZihNLmlzVW5kZWZpbmVkKHQpKXRocm93XCJUaGUgZGlhZ3JhbSBzdXJmYWNlIGlzIHVuZGVmaW5lZC5cIjtpZihNLmlzVW5kZWZpbmVkKGUpKXRocm93XCJObyBncmFwaCBzcGVjaWZpY2F0aW9uIGRlZmluZWQuXCI7Zm9yKE0uaXNVbmRlZmluZWQoaSkmJihpPSEwKSxNLmlzVW5kZWZpbmVkKG4pJiYobj0hMSksbz10LmVsZW1lbnQuY2xpZW50V2lkdGh8fDIwMCxzPXQuZWxlbWVudC5jbGllbnRIZWlnaHR8fDIwMCxyPVtdLGQ9MCxsPWUubm9kZXMubGVuZ3RoO2Q8bDtkKyspaD1lLm5vZGVzW2RdLHU9aC5wb3NpdGlvbixNLmlzVW5kZWZpbmVkKHUpJiYodT1NLmlzRGVmaW5lZChoLngpJiZNLmlzRGVmaW5lZChoLnkpP25ldyBEKGgueCxoLnkpOm5ldyBEKE0ucmFuZG9tSW50ZWdlcigxMCxvLTIwKSxNLnJhbmRvbUludGVnZXIoMTAscy0yMCkpKSxmPXt9LFwiMFwiPT09aC5pZHx8biYmYi5kZWVwRXh0ZW5kKGYse3dpZHRoOjE1MCpNYXRoLnJhbmRvbSgpKzIwLGhlaWdodDo4MCpNYXRoLnJhbmRvbSgpKzUwLGRhdGE6XCJyZWN0YW5nbGVcIixmaWxsOntjb2xvcjpcIiM3Nzg4OTlcIn19KSxjPXRoaXMuX2FkZFNoYXBlKHQsdSxoLmlkLGYpLHA9Yy5ib3VuZHMoKSxNLmlzRGVmaW5lZChwKSYmKGgueD1wLngsaC55PXAueSxoLndpZHRoPXAud2lkdGgsaC5oZWlnaHQ9cC5oZWlnaHQpLHJbaC5pZF09Yztmb3IoZz0wO2c8ZS5saW5rcy5sZW5ndGg7ZysrKW09ZS5saW5rc1tnXSxfPXJbbS5zb3VyY2UuaWRdLE0uaXNVbmRlZmluZWQoXyl8fCh2PXJbbS50YXJnZXQuaWRdLE0uaXNVbmRlZmluZWQodil8fHRoaXMuX2FkZENvbm5lY3Rpb24odCxfLHYse2lkOm0uaWR9KSk7aWYoaSlmb3IoeT1uZXcgdC5TcHJpbmdMYXlvdXQodCkseS5sYXlvdXRHcmFwaChlLHtsaW1pdFRvVmlldzohMX0pLHc9MDt3PGUubm9kZXMubGVuZ3RoO3crKyloPWUubm9kZXNbd10sYz1yW2guaWRdLGMuYm91bmRzKG5ldyBhKGgueCxoLnksaC53aWR0aCxoLmhlaWdodCkpfSxjcmVhdGVCYWxhbmNlZFRyZWU6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scyxyLGEsaCxjLGQsbDtpZihNLmlzVW5kZWZpbmVkKHQpJiYodD0zKSxNLmlzVW5kZWZpbmVkKGUpJiYoZT0zKSxpPW5ldyBDLkdyYXBoLG49LTEsbz1bXSx0PD0wfHxlPD0wKXJldHVybiBpO2ZvcihyPW5ldyB5KFwiXCIrICsrbiksaS5hZGROb2RlKHIpLGkucm9vdD1yLG8ucHVzaChyKSxhPTA7YTx0O2ErKyl7Zm9yKHM9W10saD0wO2g8by5sZW5ndGg7aCsrKWZvcihjPW9baF0sZD0wO2Q8ZTtkKyspbD1uZXcgeShcIlwiKyArK24pLGkuYWRkTGluayhjLGwpLHMucHVzaChsKTtvPXN9cmV0dXJuIGl9LGNyZWF0ZUJhbGFuY2VkRm9yZXN0OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvLHMscixhLGgsYyxkLGwsdSxmO2lmKE0uaXNVbmRlZmluZWQodCkmJih0PTMpLE0uaXNVbmRlZmluZWQoZSkmJihlPTMpLE0uaXNVbmRlZmluZWQoaSkmJihpPTUpLG49bmV3IEMuR3JhcGgsbz0tMSxzPVtdLHQ8PTB8fGU8PTB8fGk8PTApcmV0dXJuIG47Zm9yKGE9MDthPGk7YSsrKWZvcihoPW5ldyB5KFwiXCIrICsrbyksbi5hZGROb2RlKGgpLHM9W2hdLGM9MDtjPHQ7YysrKXtmb3Iocj1bXSxkPTA7ZDxzLmxlbmd0aDtkKyspZm9yKGw9c1tkXSx1PTA7dTxlO3UrKylmPW5ldyB5KFwiXCIrICsrbyksbi5hZGRMaW5rKGwsZiksci5wdXNoKGYpO3M9cn1yZXR1cm4gbn0sY3JlYXRlUmFuZG9tQ29ubmVjdGVkR3JhcGg6ZnVuY3Rpb24odCxlLGkpe3ZhciBuLG8scyxyLGEsaCxjLGQsbCx1O2lmKE0uaXNVbmRlZmluZWQodCkmJih0PTQwKSxNLmlzVW5kZWZpbmVkKGUpJiYoZT00KSxNLmlzVW5kZWZpbmVkKGkpJiYoaT0hMSksbj1uZXcgQy5HcmFwaCxvPS0xLHQ8PTApcmV0dXJuIG47aWYocz1uZXcgeShcIlwiKyArK28pLG4uYWRkTm9kZShzKSwxPT09dClyZXR1cm4gbjtpZih0PjEpe2ZvcihyPTE7cjx0JiYoYT1uLnRha2VSYW5kb21Ob2RlKFtdLGUpLGEpO3IrKyloPW4uYWRkTm9kZShcIlwiK3IpLG4uYWRkTGluayhhLGgpO2lmKCFpJiZ0PjEpZm9yKGM9TS5yYW5kb21JbnRlZ2VyKDEsdCksZD0wO2Q8YztkKyspbD1uLnRha2VSYW5kb21Ob2RlKFtdLGUpLHU9bi50YWtlUmFuZG9tTm9kZShbXSxlKSxsJiZ1JiYhbi5hcmVDb25uZWN0ZWQobCx1KSYmbi5hZGRMaW5rKGwsdSk7cmV0dXJuIG59fSxyYW5kb21EaWFncmFtOmZ1bmN0aW9uKHQsZSxpLG4sbyl7dmFyIHM9Yi5kYXRhdml6LmRpYWdyYW0uR3JhcGguVXRpbHMuY3JlYXRlUmFuZG9tQ29ubmVjdGVkR3JhcGgoZSxpLG4pO3guVXRpbHMuY3JlYXRlRGlhZ3JhbUZyb21HcmFwaCh0LHMsITEsbyl9fSxiLmRlZXBFeHRlbmQoQyx7aW5pdDpmdW5jdGlvbih0KXtiLmluaXQodCxDLnVpKX0sUG9pbnQ6RCxJbnRlcnNlY3Q6YyxHZW9tZXRyeTpwLFJlY3Q6YSxTaXplOmgsUmVjdEFsaWduOmQsTWF0cml4OnUsTWF0cml4VmVjdG9yOmYsbm9ybWFsVmFyaWFibGU6byxyYW5kb21JZDpzLERpY3Rpb25hcnk6bSxIYXNoVGFibGU6ZyxRdWV1ZTpfLFNldDp2LE5vZGU6eSxMaW5rOncsR3JhcGg6eCxQYXRoRGVmaW5lcjpyfSl9KHdpbmRvdy5rZW5kby5qUXVlcnkpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKHQsZSxpKXsoaXx8ZSkoKX0pLGZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJkYXRhdml6L2RpYWdyYW0vc3ZnLm1pblwiLFtcImtlbmRvLmRyYXdpbmcubWluXCIsXCJkYXRhdml6L2RpYWdyYW0vbWF0aC5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSh0LGUpe3ZhciBpLG4sbyxzPXRoaXMub3B0aW9ucyxyPSExO2ZvcihvPTA7bzxlLmxlbmd0aDtvKyspbj1lW29dLGk9dFtuXSxPKGkpJiZzW25dIT09aSYmKHNbbl09aSxyPSEwKTtyZXR1cm4gcn1mdW5jdGlvbiBuKHQpe3JldHVybnt4OnQueHx8MCx5OnQueXx8MCx3aWR0aDp0LndpZHRofHwwLGhlaWdodDp0LmhlaWdodHx8MH19ZnVuY3Rpb24gbyh0KXtpZih0KXt2YXIgZT10O3JldHVybiBVKGUpJiYoZT17Y29sb3I6ZX0pLGUuY29sb3ImJihlLmNvbG9yPXMoZS5jb2xvcikpLGV9fWZ1bmN0aW9uIHModCl7dmFyIGU7cmV0dXJuIGU9dCE9Sz9uZXcgRi5Db2xvcih0KS50b0hleCgpOnR9ZnVuY3Rpb24gcih0LGUpe3ZhciBpPWUueC10Lngsbj1lLnktdC55LG89UC51dGlsLmRlZyhNYXRoLmF0YW4yKG4saSkpO3JldHVybiBvfWZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gbmV3IEYuU2VnbWVudChuZXcgSC5Qb2ludCh0LGUpKX1mdW5jdGlvbiBoKHQpe2lmKHQpcmV0dXJuIG5ldyBILlJlY3QoW3QueCx0LnldLFt0LndpZHRoLHQuaGVpZ2h0XSl9dmFyIGMsZCxsLHUsZixwLGcsbSxfLHYseSx3LHgsYixDLFMsayxULE0sRCxJLFA9d2luZG93LmtlbmRvLEw9UC5kYXRhdml6LmRpYWdyYW0sRT1QLkNsYXNzLHo9UC5kZWVwRXh0ZW5kLEI9TC5Qb2ludCxOPUwuUmVjdCxSPUwuTWF0cml4LEE9TC5VdGlscyxPPUEuaXNOdW1iZXIsVT1BLmlzU3RyaW5nLFY9TC5NYXRyaXhWZWN0b3IsSD1QLmdlb21ldHJ5LEY9UC5kcmF3aW5nLEc9UC51dGlsLmRlZmluZWQscT10LmluQXJyYXksSz1cInRyYW5zcGFyZW50XCIsVz17bm9uZTpcIm5vbmVcIixhcnJvd1N0YXJ0OlwiQXJyb3dTdGFydFwiLGZpbGxlZENpcmNsZTpcIkZpbGxlZENpcmNsZVwiLGFycm93RW5kOlwiQXJyb3dFbmRcIn0sWD0zNjAsaj1cInN0YXJ0XCIsWT1cImVuZFwiLFE9XCJ3aWR0aFwiLEo9XCJoZWlnaHRcIixaPVwieFwiLCQ9XCJ5XCI7TC5NYXJrZXJzPVcsYz1FLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3RoaXMueD10LHRoaXMueT1lfSx0b01hdHJpeDpmdW5jdGlvbigpe3JldHVybiBSLnNjYWxpbmcodGhpcy54LHRoaXMueSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIFAuZm9ybWF0KFwic2NhbGUoezB9LHsxfSlcIix0aGlzLngsdGhpcy55KX0saW52ZXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBjKDEvdGhpcy54LDEvdGhpcy55KX19KSxkPUUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dGhpcy54PXQsdGhpcy55PWV9LHRvTWF0cml4VmVjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBWKDAsMCwwLDAsdGhpcy54LHRoaXMueSl9LHRvTWF0cml4OmZ1bmN0aW9uKCl7cmV0dXJuIFIudHJhbnNsYXRpb24odGhpcy54LHRoaXMueSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIFAuZm9ybWF0KFwidHJhbnNsYXRlKHswfSx7MX0pXCIsdGhpcy54LHRoaXMueSl9LHBsdXM6ZnVuY3Rpb24odCl7dGhpcy54Kz10LngsdGhpcy55Kz10Lnl9LHRpbWVzOmZ1bmN0aW9uKHQpe3RoaXMueCo9dCx0aGlzLnkqPXR9LGxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55KX0sbm9ybWFsaXplOmZ1bmN0aW9uKCl7MCE9PXRoaXMuTGVuZ3RoJiZ0aGlzLnRpbWVzKDEvdGhpcy5sZW5ndGgoKSl9LGludmVydDpmdW5jdGlvbigpe3JldHVybiBuZXcgZCgoLXRoaXMueCksKC10aGlzLnkpKX19KSxsPUUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSxpKXt0aGlzLng9ZXx8MCx0aGlzLnk9aXx8MCx0aGlzLmFuZ2xlPXR9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueCYmdGhpcy55P1AuZm9ybWF0KFwicm90YXRlKHswfSx7MX0sezJ9KVwiLHRoaXMuYW5nbGUsdGhpcy54LHRoaXMueSk6UC5mb3JtYXQoXCJyb3RhdGUoezB9KVwiLHRoaXMuYW5nbGUpfSx0b01hdHJpeDpmdW5jdGlvbigpe3JldHVybiBSLnJvdGF0aW9uKHRoaXMuYW5nbGUsdGhpcy54LHRoaXMueSl9LGNlbnRlcjpmdW5jdGlvbigpe3JldHVybiBuZXcgQih0aGlzLngsdGhpcy55KX0saW52ZXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsKFgtdGhpcy5hbmdsZSx0aGlzLngsdGhpcy55KX19KSxsLlpFUk89bmV3IGwoMCksbC5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsKHQuYW5nbGUsdC54LHQueSl9LGwucGFyc2U9ZnVuY3Rpb24odCl7dmFyIGU9dC5zbGljZSgxLHQubGVuZ3RoLTEpLnNwbGl0KFwiLFwiKSxpPWVbMF0sbj1lWzFdLG89ZVsyXSxzPW5ldyBsKGksbixvKTtyZXR1cm4gc30sdT1FLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGksbixvLHMscil7dGhpcy50cmFuc2xhdGU9bmV3IGQodCxpKSxuIT09ZSYmbyE9PWUmJih0aGlzLnNjYWxlPW5ldyBjKG4sbykpLHMhPT1lJiYodGhpcy5yb3RhdGU9cj9uZXcgbChzLHIueCxyLnkpOm5ldyBsKHMpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0KXtyZXR1cm4gdD9cIlwiK3Q6XCJcIn07cmV0dXJuIHQodGhpcy50cmFuc2xhdGUpK3QodGhpcy5yb3RhdGUpK3QodGhpcy5zY2FsZSl9LHJlbmRlcjpmdW5jdGlvbih0KXt0Ll90cmFuc2Zvcm09dGhpcyx0Ll9yZW5kZXJUcmFuc2Zvcm0oKX0sdG9NYXRyaXg6ZnVuY3Rpb24oKXt2YXIgdD1SLnVuaXQoKTtyZXR1cm4gdGhpcy50cmFuc2xhdGUmJih0PXQudGltZXModGhpcy50cmFuc2xhdGUudG9NYXRyaXgoKSkpLHRoaXMucm90YXRlJiYodD10LnRpbWVzKHRoaXMucm90YXRlLnRvTWF0cml4KCkpKSx0aGlzLnNjYWxlJiYodD10LnRpbWVzKHRoaXMuc2NhbGUudG9NYXRyaXgoKSkpLHR9LGludmVydDpmdW5jdGlvbigpe3ZhciB0LGksbj10aGlzLnJvdGF0ZT90aGlzLnJvdGF0ZS5pbnZlcnQoKTplLG89bj9uLnRvTWF0cml4KCk6Ui51bml0KCkscz10aGlzLnNjYWxlP3RoaXMuc2NhbGUuaW52ZXJ0KCk6ZSxyPXM/cy50b01hdHJpeCgpOlIudW5pdCgpLGE9bmV3IEIoKC10aGlzLnRyYW5zbGF0ZS54KSwoLXRoaXMudHJhbnNsYXRlLnkpKTtyZXR1cm4gYT1vLnRpbWVzKHIpLmFwcGx5KGEpLHQ9bmV3IGQoYS54LGEueSksaT1uZXcgdSxpLnRyYW5zbGF0ZT10LGkucm90YXRlPW4saS5zY2FsZT1zLGl9fSksZj17X3NldFNjYWxlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLGU9dGhpcy5fb3JpZ2luV2lkdGgsaT10aGlzLl9vcmlnaW5IZWlnaHQsbj10LndpZHRoL2Usbz10LmhlaWdodC9pO08obil8fChuPTEpLE8obyl8fChvPTEpLHRoaXMuX3RyYW5zZm9ybS5zY2FsZT1uZXcgYyhuLG8pfSxfc2V0VHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLGU9dC54fHwwLGk9dC55fHwwO3RoaXMuX3RyYW5zZm9ybS50cmFuc2xhdGU9bmV3IGQoZSxpKX0sX2luaXRTaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLGU9ITE7dC5hdXRvU2l6ZSE9PSExJiYoRyh0LndpZHRoKXx8Ryh0LmhlaWdodCkpJiYodGhpcy5fbWVhc3VyZSghMCksdGhpcy5fc2V0U2NhbGUoKSxlPSEwKSwoRyh0LngpfHxHKHQueSkpJiYodGhpcy5fc2V0VHJhbnNsYXRlKCksZT0hMCksZSYmdGhpcy5fcmVuZGVyVHJhbnNmb3JtKCl9LF91cGRhdGVTaXplOmZ1bmN0aW9uKHQpe3ZhciBlPSExO3JldHVybiB0aGlzLm9wdGlvbnMuYXV0b1NpemUhPT0hMSYmdGhpcy5fZGlmZk51bWVyaWNPcHRpb25zKHQsW1EsSl0pJiYoZT0hMCx0aGlzLl9tZWFzdXJlKCEwKSx0aGlzLl9zZXRTY2FsZSgpKSx0aGlzLl9kaWZmTnVtZXJpY09wdGlvbnModCxbWiwkXSkmJihlPSEwLHRoaXMuX3NldFRyYW5zbGF0ZSgpKSxlJiZ0aGlzLl9yZW5kZXJUcmFuc2Zvcm0oKSxlfX0scD1FLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2Uub3B0aW9ucz16KHt9LGUub3B0aW9ucyx0KSxlLmlkPWUub3B0aW9ucy5pZCxlLl9vcmlnaW5TaXplPU4uZW1wdHkoKSxlLl90cmFuc2Zvcm09bmV3IHV9LHZpc2libGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZHJhd2luZ0NvbnRhaW5lcigpLnZpc2libGUodCl9LHJlZHJhdzpmdW5jdGlvbih0KXt0JiZ0LmlkJiYodGhpcy5pZD10LmlkKX0scG9zaXRpb246ZnVuY3Rpb24odCxpKXt2YXIgbj10aGlzLm9wdGlvbnM7cmV0dXJuIEcodCk/KEcoaSk/KG4ueD10LG4ueT1pKTp0IGluc3RhbmNlb2YgQiYmKG4ueD10Lngsbi55PXQueSksdGhpcy5fdHJhbnNmb3JtLnRyYW5zbGF0ZT1uZXcgZChuLngsbi55KSx0aGlzLl9yZW5kZXJUcmFuc2Zvcm0oKSxlKTpuZXcgQihuLngsbi55KX0scm90YXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEcodCkmJih0aGlzLl90cmFuc2Zvcm0ucm90YXRlPW5ldyBsKHQsZS54LGUueSksdGhpcy5fcmVuZGVyVHJhbnNmb3JtKCkpLHRoaXMuX3RyYW5zZm9ybS5yb3RhdGV8fGwuWkVST30sZHJhd2luZ0NvbnRhaW5lcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRyYXdpbmdFbGVtZW50fSxfcmVuZGVyVHJhbnNmb3JtOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdHJhbnNmb3JtLnRvTWF0cml4KCk7dGhpcy5kcmF3aW5nQ29udGFpbmVyKCkudHJhbnNmb3JtKG5ldyBILk1hdHJpeCh0LmEsdC5iLHQuYyx0LmQsdC5lLHQuZikpfSxfaG92ZXI6ZnVuY3Rpb24oKXt9LF9kaWZmTnVtZXJpY09wdGlvbnM6aSxfbWVhc3VyZTpmdW5jdGlvbih0KXt2YXIgZSxpLG47cmV0dXJuIXRoaXMuX21lYXN1cmVkfHx0PyhpPXRoaXMuX2JvdW5kaW5nQm94KCl8fG5ldyBILlJlY3Qsbj1pLnRvcExlZnQoKSxlPW5ldyBOKG4ueCxuLnksaS53aWR0aCgpLGkuaGVpZ2h0KCkpLHRoaXMuX29yaWdpblNpemU9ZSx0aGlzLl9vcmlnaW5XaWR0aD1lLndpZHRoLHRoaXMuX29yaWdpbkhlaWdodD1lLmhlaWdodCx0aGlzLl9tZWFzdXJlZD0hMCk6ZT10aGlzLl9vcmlnaW5TaXplLGV9LF9ib3VuZGluZ0JveDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRyYXdpbmdFbGVtZW50LnJhd0JCb3goKX19KSxnPXAuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3AuZm4uaW5pdC5jYWxsKHRoaXMsdCksdD10aGlzLm9wdGlvbnMsdC5maWxsPW8odC5maWxsKSx0LnN0cm9rZT1vKHQuc3Ryb2tlKX0sb3B0aW9uczp7c3Ryb2tlOntjb2xvcjpcImdyYXlcIix3aWR0aDoxfSxmaWxsOntjb2xvcjpLfX0sZmlsbDpmdW5jdGlvbih0LGUpe3RoaXMuX2ZpbGwoe2NvbG9yOnModCksb3BhY2l0eTplfSl9LHN0cm9rZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5fc3Ryb2tlKHtjb2xvcjpzKHQpLHdpZHRoOmUsb3BhY2l0eTppfSl9LHJlZHJhdzpmdW5jdGlvbih0KXt2YXIgZSxpO3QmJihlPXQuc3Ryb2tlLGk9dC5maWxsLGUmJnRoaXMuX3N0cm9rZShvKGUpKSxpJiZ0aGlzLl9maWxsKG8oaSkpLHAuZm4ucmVkcmF3LmNhbGwodGhpcyx0KSl9LF9ob3ZlcjpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMuZHJhd2luZ0VsZW1lbnQsbj10aGlzLm9wdGlvbnMscz1uLmhvdmVyO3MmJnMuZmlsbCYmKGU9dD9vKHMuZmlsbCk6bi5maWxsLGkuZmlsbChlLmNvbG9yLGUub3BhY2l0eSkpfSxfc3Ryb2tlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy5vcHRpb25zO3ooaSx7c3Ryb2tlOnR9KSx0PWkuc3Ryb2tlLGU9bnVsbCx0LndpZHRoPjAmJihlPXtjb2xvcjp0LmNvbG9yLHdpZHRoOnQud2lkdGgsb3BhY2l0eTp0Lm9wYWNpdHksZGFzaFR5cGU6dC5kYXNoVHlwZX0pLHRoaXMuZHJhd2luZ0VsZW1lbnQub3B0aW9ucy5zZXQoXCJzdHJva2VcIixlKX0sX2ZpbGw6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG89dGhpcy5vcHRpb25zO3oobyx7ZmlsbDp0fHx7fX0pLGU9by5maWxsLGUuZ3JhZGllbnQ/KGk9ZS5ncmFkaWVudCxuPVwicmFkaWFsXCI9PT1pLnR5cGU/Ri5SYWRpYWxHcmFkaWVudDpGLkxpbmVhckdyYWRpZW50LHRoaXMuZHJhd2luZ0VsZW1lbnQuZmlsbChuZXcgbihpKSkpOnRoaXMuZHJhd2luZ0VsZW1lbnQuZmlsbChlLmNvbG9yLGUub3BhY2l0eSl9fSksbT1nLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt0PXRoaXMuX3RleHRDb2xvcih0KSxnLmZuLmluaXQuY2FsbCh0aGlzLHQpLHRoaXMuX2ZvbnQoKSx0aGlzLl9pbml0VGV4dCgpLHRoaXMuX2luaXRTaXplKCl9LG9wdGlvbnM6e2ZvbnRTaXplOjE1LGZvbnRGYW1pbHk6XCJzYW5zLXNlcmlmXCIsc3Ryb2tlOnt3aWR0aDowfSxmaWxsOntjb2xvcjpcImJsYWNrXCJ9LGF1dG9TaXplOiEwfSxfaW5pdFRleHQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnM7dGhpcy5kcmF3aW5nRWxlbWVudD1uZXcgRi5UZXh0KEcodC50ZXh0KT90LnRleHQ6XCJcIixuZXcgSC5Qb2ludCx7Zm9udDp0LmZvbnR9KSx0aGlzLl9maWxsKCksdGhpcy5fc3Ryb2tlKCl9LF90ZXh0Q29sb3I6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuY29sb3ImJih0PXooe30sdCx7ZmlsbDp7Y29sb3I6dC5jb2xvcn19KSksdH0sX2ZvbnQ6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMub3B0aW9ucztlLmZvbnRGYW1pbHkmJkcoZS5mb250U2l6ZSk/KHQ9W10sZS5mb250U3R5bGUmJnQucHVzaChlLmZvbnRTdHlsZSksZS5mb250V2VpZ2h0JiZ0LnB1c2goZS5mb250V2VpZ2h0KSx0LnB1c2goZS5mb250U2l6ZSsoTyhlLmZvbnRTaXplKT9cInB4XCI6XCJcIikpLHQucHVzaChlLmZvbnRGYW1pbHkpLGUuZm9udD10LmpvaW4oXCIgXCIpKTpkZWxldGUgZS5mb250fSxjb250ZW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRyYXdpbmdFbGVtZW50LmNvbnRlbnQodCl9LHJlZHJhdzpmdW5jdGlvbih0KXt2YXIgZSxpO3QmJihlPSExLGk9dGhpcy5vcHRpb25zLHQ9dGhpcy5fdGV4dENvbG9yKHQpLGcuZm4ucmVkcmF3LmNhbGwodGhpcyx0KSwodC5mb250RmFtaWx5fHxHKHQuZm9udFNpemUpfHx0LmZvbnRTdHlsZXx8dC5mb250V2VpZ2h0KSYmKHooaSx7Zm9udEZhbWlseTp0LmZvbnRGYW1pbHksZm9udFNpemU6dC5mb250U2l6ZSxmb250U3R5bGU6dC5mb250U3R5bGUsZm9udFdlaWdodDp0LmZvbnRXZWlnaHR9KSx0aGlzLl9mb250KCksdGhpcy5kcmF3aW5nRWxlbWVudC5vcHRpb25zLnNldChcImZvbnRcIixpLmZvbnQpLGU9ITApLHQudGV4dCYmKHRoaXMuY29udGVudCh0LnRleHQpLGU9ITApLCF0aGlzLl91cGRhdGVTaXplKHQpJiZlJiZ0aGlzLl9pbml0U2l6ZSgpKX19KSx6KG0uZm4sZiksXz1nLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXtnLmZuLmluaXQuY2FsbCh0aGlzLHQpLHRoaXMuX2luaXRQYXRoKCksdGhpcy5fc2V0UG9zaXRpb24oKX0sX3NldFBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLGU9dC54LGk9dC55OyhHKGUpfHxHKGkpKSYmdGhpcy5wb3NpdGlvbihlfHwwLGl8fDApfSxyZWRyYXc6ZnVuY3Rpb24odCl7dCYmKGcuZm4ucmVkcmF3LmNhbGwodGhpcyx0KSx0aGlzLl9kaWZmTnVtZXJpY09wdGlvbnModCxbUSxKXSkmJnRoaXMuX2RyYXdQYXRoKCksdGhpcy5fZGlmZk51bWVyaWNPcHRpb25zKHQsW1osJF0pJiZ0aGlzLl9zZXRQb3NpdGlvbigpKX0sX2luaXRQYXRoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3RoaXMuZHJhd2luZ0VsZW1lbnQ9bmV3IEYuUGF0aCh7c3Ryb2tlOnQuc3Ryb2tlLGNsb3NlZDohMH0pLHRoaXMuX2ZpbGwoKSx0aGlzLl9kcmF3UGF0aCgpfSxfZHJhd1BhdGg6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRyYXdpbmdFbGVtZW50LGU9bih0aGlzLm9wdGlvbnMpLGk9ZS53aWR0aCxvPWUuaGVpZ2h0O3Quc2VnbWVudHMuZWxlbWVudHMoW2EoMCwwKSxhKGksMCksYShpLG8pLGEoMCxvKV0pfX0pLHY9Zy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7Zy5mbi5pbml0LmNhbGwodGhpcyx0KTt2YXIgZT10aGlzLm9wdGlvbnMuYW5jaG9yO3RoaXMuYW5jaG9yPW5ldyBILlBvaW50KGUueCxlLnkpLHRoaXMuY3JlYXRlRWxlbWVudCgpfSxvcHRpb25zOntzdHJva2U6e2NvbG9yOkssd2lkdGg6MH0sZmlsbDp7Y29sb3I6XCJibGFja1wifX0sX3RyYW5zZm9ybVRvUGF0aDpmdW5jdGlvbih0LGUpe3ZhciBpPWUudHJhbnNmb3JtKCk7cmV0dXJuIHQmJmkmJih0PXQudHJhbnNmb3JtQ29weShpKSksdH0scmVkcmF3OmZ1bmN0aW9uKHQpe3QmJih0LnBvc2l0aW9uJiYodGhpcy5vcHRpb25zLnBvc2l0aW9uPXQucG9zaXRpb24pLGcuZm4ucmVkcmF3LmNhbGwodGhpcyx0KSl9fSkseT12LmV4dGVuZCh7b3B0aW9uczp7cmFkaXVzOjQsYW5jaG9yOnt4OjAseTowfX0sY3JlYXRlRWxlbWVudDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9uczt0aGlzLmRyYXdpbmdFbGVtZW50PW5ldyBGLkNpcmNsZShuZXcgSC5DaXJjbGUodGhpcy5hbmNob3IsdC5yYWRpdXMpLHtmaWxsOnQuZmlsbCxzdHJva2U6dC5zdHJva2V9KX0scG9zaXRpb25NYXJrZXI6ZnVuY3Rpb24odCl7dmFyIGUsaSxuPXRoaXMub3B0aW9ucyxvPW4ucG9zaXRpb24scz10LnNlZ21lbnRzO2U9bz09aj9zWzBdOnNbcy5sZW5ndGgtMV0sZSYmKGk9dGhpcy5fdHJhbnNmb3JtVG9QYXRoKGUuYW5jaG9yKCksdCksdGhpcy5kcmF3aW5nRWxlbWVudC50cmFuc2Zvcm0oSC50cmFuc2Zvcm0oKS50cmFuc2xhdGUoaS54LGkueSkpKX19KSx3PXYuZXh0ZW5kKHtvcHRpb25zOntwYXRoOlwiTSAwIDAgTCAxMCA1IEwgMCAxMCBMIDMgNSB6XCIsYW5jaG9yOnt4OjEwLHk6NX19LGNyZWF0ZUVsZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnM7dGhpcy5kcmF3aW5nRWxlbWVudD1GLlBhdGgucGFyc2UodC5wYXRoLHtmaWxsOnQuZmlsbCxzdHJva2U6dC5zdHJva2V9KX0scG9zaXRpb25NYXJrZXI6ZnVuY3Rpb24odCl7dmFyIGUsaSxuPXRoaXMuX2xpbmVQb2ludHModCksbz1uLnN0YXJ0LHM9bi5lbmQsYT1ILnRyYW5zZm9ybSgpO28mJmEucm90YXRlKHIobyxzKSxzKSxzJiYoZT10aGlzLmFuY2hvcixpPXMuY2xvbmUoKS50cmFuc2xhdGUoLWUueCwtZS55KSxhLnRyYW5zbGF0ZShpLngsaS55KSksdGhpcy5kcmF3aW5nRWxlbWVudC50cmFuc2Zvcm0oYSl9LF9saW5lUG9pbnRzOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvLHMscj10aGlzLm9wdGlvbnMsYT10LnNlZ21lbnRzO2lmKHIucG9zaXRpb249PWo/KG49YVswXSxuJiYoaT1uLmFuY2hvcigpLGU9bi5jb250cm9sT3V0KCksbz1hWzFdLCFlJiZvJiYoZT1vLmFuY2hvcigpKSkpOihuPWFbYS5sZW5ndGgtMV0sbiYmKGk9bi5hbmNob3IoKSxlPW4uY29udHJvbEluKCkscz1hW2EubGVuZ3RoLTJdLCFlJiZzJiYoZT1zLmFuY2hvcigpKSkpLGkpcmV0dXJue3N0YXJ0OnRoaXMuX3RyYW5zZm9ybVRvUGF0aChlLHQpLGVuZDp0aGlzLl90cmFuc2Zvcm1Ub1BhdGgoaSx0KX19fSkseD17X2dldFBhdGg6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kcmF3aW5nRWxlbWVudDtpZihlIGluc3RhbmNlb2YgRi5NdWx0aVBhdGgmJihlPXQ9PWo/ZS5wYXRoc1swXTplLnBhdGhzW2UucGF0aHMubGVuZ3RoLTFdKSxlJiZlLnNlZ21lbnRzLmxlbmd0aClyZXR1cm4gZX0sX25vcm1hbGl6ZU1hcmtlck9wdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGU9dC5zdGFydENhcCxpPXQuZW5kQ2FwO1UoZSkmJih0LnN0YXJ0Q2FwPXt0eXBlOmV9KSxVKGkpJiYodC5lbmRDYXA9e3R5cGU6aX0pfSxfcmVtb3ZlTWFya2VyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcmtlcnNbdF07ZSYmKHRoaXMuZHJhd2luZ0NvbnRhaW5lcigpLnJlbW92ZShlLmRyYXdpbmdFbGVtZW50KSxkZWxldGUgdGhpcy5fbWFya2Vyc1t0XSl9LF9jcmVhdGVNYXJrZXJzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3RoaXMuX25vcm1hbGl6ZU1hcmtlck9wdGlvbnModCksdGhpcy5fbWFya2Vycz17fSx0aGlzLl9tYXJrZXJzW2pdPXRoaXMuX2NyZWF0ZU1hcmtlcih0LnN0YXJ0Q2FwLGopLHRoaXMuX21hcmtlcnNbWV09dGhpcy5fY3JlYXRlTWFya2VyKHQuZW5kQ2FwLFkpfSxfY3JlYXRlTWFya2VyOmZ1bmN0aW9uKHQsaSl7dmFyIG4sbyxzPSh0fHx7fSkudHlwZSxyPXRoaXMuX2dldFBhdGgoaSk7cmV0dXJuIHI/KHM9PVcuZmlsbGVkQ2lyY2xlP249eTpzPT1XLmFycm93U3RhcnR8fHM9PVcuYXJyb3dFbmQ/bj13OnRoaXMuX3JlbW92ZU1hcmtlcihpKSxuPyhvPW5ldyBuKHooe30sdCx7cG9zaXRpb246aX0pKSxvLnBvc2l0aW9uTWFya2VyKHIpLHRoaXMuZHJhd2luZ0NvbnRhaW5lcigpLmFwcGVuZChvLmRyYXdpbmdFbGVtZW50KSxvKTplKToodGhpcy5fcmVtb3ZlTWFya2VyKGkpLGUpfSxfcG9zaXRpb25NYXJrZXI6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLl9tYXJrZXJzW3RdO2kmJihlPXRoaXMuX2dldFBhdGgodCksZT9pLnBvc2l0aW9uTWFya2VyKGUpOnRoaXMuX3JlbW92ZU1hcmtlcih0KSl9LF9jYXBNYXA6e3N0YXJ0Olwic3RhcnRDYXBcIixlbmQ6XCJlbmRDYXBcIn0sX3JlZHJhd01hcmtlcjpmdW5jdGlvbih0LGUsaSl7dmFyIG4sbyxzLHIsYTtyZXR1cm4gdGhpcy5fbm9ybWFsaXplTWFya2VyT3B0aW9ucyhpKSxuPXRoaXMub3B0aW9ucyxvPXRoaXMuX2NhcE1hcFtlXSxzPShuW29dfHx7fSkudHlwZSxyPWlbb10sYT0hMSxyPyhuW29dPXooe30sbltvXSxyKSxyLnR5cGUmJnMhPXIudHlwZT8odGhpcy5fcmVtb3ZlTWFya2VyKGUpLHRoaXMuX21hcmtlcnNbZV09dGhpcy5fY3JlYXRlTWFya2VyKG5bb10sZSksYT0hMCk6dGhpcy5fbWFya2Vyc1tlXSYmdGhpcy5fbWFya2Vyc1tlXS5yZWRyYXcocikpOnQmJiF0aGlzLl9tYXJrZXJzW2VdJiZuW29dJiYodGhpcy5fbWFya2Vyc1tlXT10aGlzLl9jcmVhdGVNYXJrZXIobltvXSxlKSxhPSEwKSxhfSxfcmVkcmF3TWFya2VyczpmdW5jdGlvbih0LGUpeyF0aGlzLl9yZWRyYXdNYXJrZXIodCxqLGUpJiZ0JiZ0aGlzLl9wb3NpdGlvbk1hcmtlcihqKSwhdGhpcy5fcmVkcmF3TWFya2VyKHQsWSxlKSYmdCYmdGhpcy5fcG9zaXRpb25NYXJrZXIoWSl9fSxiPWcuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe2cuZm4uaW5pdC5jYWxsKHRoaXMsdCksdGhpcy5jb250YWluZXI9bmV3IEYuR3JvdXAsdGhpcy5fY3JlYXRlRWxlbWVudHMoKSx0aGlzLl9pbml0U2l6ZSgpfSxvcHRpb25zOnthdXRvU2l6ZTohMH0sZHJhd2luZ0NvbnRhaW5lcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRhaW5lcn0sZGF0YTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0dXJuIHQ/KGkuZGF0YSE9dCYmKGkuZGF0YT10LHRoaXMuX3NldERhdGEodCksdGhpcy5faW5pdFNpemUoKSx0aGlzLl9yZWRyYXdNYXJrZXJzKCEwLHt9KSksZSk6aS5kYXRhfSxyZWRyYXc6ZnVuY3Rpb24odCl7dmFyIGUsaTt0JiYoZy5mbi5yZWRyYXcuY2FsbCh0aGlzLHQpLGU9dGhpcy5vcHRpb25zLGk9dC5kYXRhLEcoaSkmJmUuZGF0YSE9aT8oZS5kYXRhPWksdGhpcy5fc2V0RGF0YShpKSx0aGlzLl91cGRhdGVTaXplKHQpfHx0aGlzLl9pbml0U2l6ZSgpLHRoaXMuX3JlZHJhd01hcmtlcnMoITAsdCkpOih0aGlzLl91cGRhdGVTaXplKHQpLHRoaXMuX3JlZHJhd01hcmtlcnMoITEsdCkpKX0sX2NyZWF0ZUVsZW1lbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3RoaXMuZHJhd2luZ0VsZW1lbnQ9Ri5QYXRoLnBhcnNlKHQuZGF0YXx8XCJcIix7c3Ryb2tlOnQuc3Ryb2tlfSksdGhpcy5fZmlsbCgpLHRoaXMuY29udGFpbmVyLmFwcGVuZCh0aGlzLmRyYXdpbmdFbGVtZW50KSx0aGlzLl9jcmVhdGVNYXJrZXJzKCl9LF9zZXREYXRhOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZHJhd2luZ0VsZW1lbnQsaT1GLlBhdGgucGFyc2UodHx8XCJcIiksbj1pLnBhdGhzLnNsaWNlKDApO2kucGF0aHMuZWxlbWVudHMoW10pLGUucGF0aHMuZWxlbWVudHMobil9fSkseihiLmZuLGYpLHooYi5mbix4KSxDPWcuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe2cuZm4uaW5pdC5jYWxsKHRoaXMsdCksdGhpcy5jb250YWluZXI9bmV3IEYuR3JvdXAsdGhpcy5faW5pdFBhdGgoKSx0aGlzLl9jcmVhdGVNYXJrZXJzKCl9LGRyYXdpbmdDb250YWluZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250YWluZXJ9LHJlZHJhdzpmdW5jdGlvbih0KXt2YXIgZSxpO3QmJih0PXR8fHt9LGU9dC5mcm9tLGk9dC50byxlJiYodGhpcy5vcHRpb25zLmZyb209ZSksaSYmKHRoaXMub3B0aW9ucy50bz1pKSxlfHxpPyh0aGlzLl9kcmF3UGF0aCgpLHRoaXMuX3JlZHJhd01hcmtlcnMoITAsdCkpOnRoaXMuX3JlZHJhd01hcmtlcnMoITEsdCksZy5mbi5yZWRyYXcuY2FsbCh0aGlzLHQpKX0sX2luaXRQYXRoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLGU9dGhpcy5kcmF3aW5nRWxlbWVudD1uZXcgRi5QYXRoKHtzdHJva2U6dC5zdHJva2V9KTt0aGlzLl9maWxsKCksdGhpcy5fZHJhd1BhdGgoKSx0aGlzLmNvbnRhaW5lci5hcHBlbmQoZSl9LF9kcmF3UGF0aDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucyxlPXRoaXMuZHJhd2luZ0VsZW1lbnQsaT10LmZyb218fG5ldyBCLG49dC50b3x8bmV3IEI7ZS5zZWdtZW50cy5lbGVtZW50cyhbYShpLngsaS55KSxhKG4ueCxuLnkpXSl9fSkseihDLmZuLHgpLFM9Zy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7Zy5mbi5pbml0LmNhbGwodGhpcyx0KSx0aGlzLmNvbnRhaW5lcj1uZXcgRi5Hcm91cCx0aGlzLl9pbml0UGF0aCgpLHRoaXMuX2NyZWF0ZU1hcmtlcnMoKX0sZHJhd2luZ0NvbnRhaW5lcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRhaW5lcn0scG9pbnRzOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMub3B0aW9ucztyZXR1cm4gdD8oaS5wb2ludHM9dCx0aGlzLl91cGRhdGVQYXRoKCksZSk6aS5wb2ludHN9LHJlZHJhdzpmdW5jdGlvbih0KXtpZih0KXt2YXIgZT10LnBvaW50cztnLmZuLnJlZHJhdy5jYWxsKHRoaXMsdCksZSYmdGhpcy5fcG9pbnRzRGlmZmVyKGUpPyh0aGlzLnBvaW50cyhlKSx0aGlzLl9yZWRyYXdNYXJrZXJzKCEwLHQpKTp0aGlzLl9yZWRyYXdNYXJrZXJzKCExLHQpfX0sX2luaXRQYXRoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3RoaXMuZHJhd2luZ0VsZW1lbnQ9bmV3IEYuUGF0aCh7c3Ryb2tlOnQuc3Ryb2tlfSksdGhpcy5fZmlsbCgpLHRoaXMuY29udGFpbmVyLmFwcGVuZCh0aGlzLmRyYXdpbmdFbGVtZW50KSx0LnBvaW50cyYmdGhpcy5fdXBkYXRlUGF0aCgpfSxfcG9pbnRzRGlmZmVyOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy5vcHRpb25zLnBvaW50cyxuPWkubGVuZ3RoIT09dC5sZW5ndGg7aWYoIW4pZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpZihpW2VdLnghPT10W2VdLnh8fGlbZV0ueSE9PXRbZV0ueSl7bj0hMDticmVha31yZXR1cm4gbn0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24oKXt2YXIgdCxlLGk9dGhpcy5kcmF3aW5nRWxlbWVudCxuPXRoaXMub3B0aW9ucyxvPW4ucG9pbnRzLHM9W107Zm9yKGU9MDtlPG8ubGVuZ3RoO2UrKyl0PW9bZV0scy5wdXNoKGEodC54LHQueSkpO2kuc2VnbWVudHMuZWxlbWVudHMocyl9LG9wdGlvbnM6e3BvaW50czpbXX19KSx6KFMuZm4seCksaz1wLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXtwLmZuLmluaXQuY2FsbCh0aGlzLHQpLHRoaXMuX2luaXRJbWFnZSgpfSxyZWRyYXc6ZnVuY3Rpb24odCl7dCYmKHQuc291cmNlJiZ0aGlzLmRyYXdpbmdFbGVtZW50LnNyYyh0LnNvdXJjZSksdGhpcy5fZGlmZk51bWVyaWNPcHRpb25zKHQsW1EsSixaLCRdKSYmdGhpcy5kcmF3aW5nRWxlbWVudC5yZWN0KHRoaXMuX3JlY3QoKSkscC5mbi5yZWRyYXcuY2FsbCh0aGlzLHQpKX0sX2luaXRJbWFnZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucyxlPXRoaXMuX3JlY3QoKTt0aGlzLmRyYXdpbmdFbGVtZW50PW5ldyBGLkltYWdlKHQuc291cmNlLGUse30pfSxfcmVjdDpmdW5jdGlvbigpe3ZhciB0PW4odGhpcy5vcHRpb25zKSxlPW5ldyBILlBvaW50KHQueCx0LnkpLGk9bmV3IEguU2l6ZSh0LndpZHRoLHQuaGVpZ2h0KTtyZXR1cm4gbmV3IEguUmVjdChlLGkpfX0pLFQ9cC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dGhpcy5jaGlsZHJlbj1bXSxwLmZuLmluaXQuY2FsbCh0aGlzLHQpLHRoaXMuZHJhd2luZ0VsZW1lbnQ9bmV3IEYuR3JvdXAsdGhpcy5faW5pdFNpemUoKX0sb3B0aW9uczp7YXV0b1NpemU6ITF9LGFwcGVuZDpmdW5jdGlvbih0KXt0aGlzLmRyYXdpbmdFbGVtZW50LmFwcGVuZCh0LmRyYXdpbmdDb250YWluZXIoKSksdGhpcy5jaGlsZHJlbi5wdXNoKHQpLHRoaXMuX2NoaWxkcmVuQ2hhbmdlPSEwfSxyZW1vdmU6ZnVuY3Rpb24odCl7dGhpcy5fcmVtb3ZlKHQpJiYodGhpcy5fY2hpbGRyZW5DaGFuZ2U9ITApfSxfcmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXEodCx0aGlzLmNoaWxkcmVuKTtpZihlPj0wKXJldHVybiB0aGlzLmRyYXdpbmdFbGVtZW50LnJlbW92ZUF0KGUpLHRoaXMuY2hpbGRyZW4uc3BsaWNlKGUsMSksITB9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5kcmF3aW5nRWxlbWVudC5jbGVhcigpLHRoaXMuY2hpbGRyZW49W10sdGhpcy5fY2hpbGRyZW5DaGFuZ2U9ITB9LHRvRnJvbnQ6ZnVuY3Rpb24odCl7dmFyIGUsaTtmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKWU9dFtpXSx0aGlzLl9yZW1vdmUoZSkmJnRoaXMuYXBwZW5kKGUpfSx0b0JhY2s6ZnVuY3Rpb24odCl7dGhpcy5fcmVvcmRlckNoaWxkcmVuKHQsMCl9LHRvSW5kZXg6ZnVuY3Rpb24odCxlKXt0aGlzLl9yZW9yZGVyQ2hpbGRyZW4odCxlKX0sX3Jlb3JkZXJDaGlsZHJlbjpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbyxzLHIsYT10aGlzLmRyYXdpbmdFbGVtZW50LGg9YS5jaGlsZHJlbi5zbGljZSgwKSxjPXRoaXMuY2hpbGRyZW4sZD1PKGUpO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspcj10W2ldLHM9ci5kcmF3aW5nQ29udGFpbmVyKCksbj1xKHIsYyksbj49MCYmKGguc3BsaWNlKG4sMSksYy5zcGxpY2UobiwxKSxvPWQ/ZTplW2ldLGguc3BsaWNlKG8sMCxzKSxjLnNwbGljZShvLDAscikpO2EuY2xlYXIoKSxhLmFwcGVuZC5hcHBseShhLGgpfSxyZWRyYXc6ZnVuY3Rpb24odCl7dCYmKHRoaXMuX2NoaWxkcmVuQ2hhbmdlPyh0aGlzLl9jaGlsZHJlbkNoYW5nZT0hMSx0aGlzLl91cGRhdGVTaXplKHQpfHx0aGlzLl9pbml0U2l6ZSgpKTp0aGlzLl91cGRhdGVTaXplKHQpLHAuZm4ucmVkcmF3LmNhbGwodGhpcyx0KSl9LF9ib3VuZGluZ0JveDpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLG89dGhpcy5jaGlsZHJlbjtmb3Iobj0wO248by5sZW5ndGg7bisrKWU9b1tuXSxlLnZpc2libGUoKSYmZS5faW5jbHVkZUluQkJveCE9PSExJiYoaT1lLmRyYXdpbmdDb250YWluZXIoKS5jbGlwcGVkQkJveChudWxsKSxpJiYodD10P0guUmVjdC51bmlvbih0LGkpOmkpKTtyZXR1cm4gdH19KSx6KFQuZm4sZiksTT1ULmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3RoaXMuY2hpbGRyZW49W10scC5mbi5pbml0LmNhbGwodGhpcyxlKSx0aGlzLmRyYXdpbmdFbGVtZW50PW5ldyBGLkxheW91dChoKHQpLGUpLHRoaXMuX2luaXRTaXplKCl9LHJlY3Q6ZnVuY3Rpb24odCl7aWYodCl0aGlzLmRyYXdpbmdFbGVtZW50LnJlY3QoaCh0KSk7ZWxzZXt2YXIgZT10aGlzLmRyYXdpbmdFbGVtZW50LnJlY3QoKTtpZihlKXJldHVybiBuZXcgTihlLm9yaWdpbi54LGUub3JpZ2luLnksZS5zaXplLndpZHRoLGUuc2l6ZS5oZWlnaHQpfX0scmVmbG93OmZ1bmN0aW9uKCl7dGhpcy5kcmF3aW5nRWxlbWVudC5yZWZsb3coKX0scmVkcmF3OmZ1bmN0aW9uKHQpe1AuZGVlcEV4dGVuZCh0aGlzLmRyYXdpbmdFbGVtZW50Lm9wdGlvbnMsdCksVC5mbi5yZWRyYXcuY2FsbCh0aGlzLHQpfX0pLEQ9Zy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7Zy5mbi5pbml0LmNhbGwodGhpcyx0KSx0aGlzLl9pbml0Q2lyY2xlKCksdGhpcy5faW5pdFNpemUoKX0scmVkcmF3OmZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPXRoaXMub3B0aW9uczt0LmNlbnRlciYmKHooZSx7Y2VudGVyOnQuY2VudGVyfSksdGhpcy5fY2VudGVyLm1vdmUoZS5jZW50ZXIueCxlLmNlbnRlci55KSksdGhpcy5fZGlmZk51bWVyaWNPcHRpb25zKHQsW1wicmFkaXVzXCJdKSYmdGhpcy5fY2lyY2xlLnNldFJhZGl1cyhlLnJhZGl1cyksdGhpcy5fdXBkYXRlU2l6ZSh0KSxnLmZuLnJlZHJhdy5jYWxsKHRoaXMsdCl9fSxfaW5pdENpcmNsZTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5vcHRpb25zLGk9ZS53aWR0aCxuPWUuaGVpZ2h0LG89ZS5yYWRpdXM7RyhvKXx8KEcoaSl8fChpPW4pLEcobil8fChuPWkpLGUucmFkaXVzPW89TWF0aC5taW4oaSxuKS8yKSx0PWUuY2VudGVyfHx7eDpvLHk6b30sdGhpcy5fY2VudGVyPW5ldyBILlBvaW50KHQueCx0LnkpLHRoaXMuX2NpcmNsZT1uZXcgSC5DaXJjbGUodGhpcy5fY2VudGVyLG8pLHRoaXMuZHJhd2luZ0VsZW1lbnQ9bmV3IEYuQ2lyY2xlKHRoaXMuX2NpcmNsZSx7c3Ryb2tlOmUuc3Ryb2tlfSksdGhpcy5fZmlsbCgpfX0pLHooRC5mbixmKSxJPUUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7ZT1lfHx7fSx0aGlzLmVsZW1lbnQ9dCx0aGlzLnN1cmZhY2U9Ri5TdXJmYWNlLmNyZWF0ZSh0LGUpLFAuaXNGdW5jdGlvbih0aGlzLnN1cmZhY2UudHJhbnNsYXRlKSYmKHRoaXMudHJhbnNsYXRlPXRoaXMuX3RyYW5zbGF0ZSksdGhpcy5kcmF3aW5nRWxlbWVudD1uZXcgRi5Hcm91cCx0aGlzLl92aWV3Qm94PW5ldyBOKDAsMCxlLndpZHRoLGUuaGVpZ2h0KSx0aGlzLnNpemUodGhpcy5fdmlld0JveCl9LGJvdW5kczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZHJhd2luZ0VsZW1lbnQuY2xpcHBlZEJCb3goKTtyZXR1cm4gbmV3IE4oMCwwLHQud2lkdGgoKSx0LmhlaWdodCgpKX0sc2l6ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl92aWV3Qm94O3JldHVybiBHKHQpJiYoZS53aWR0aD10LndpZHRoLGUuaGVpZ2h0PXQuaGVpZ2h0LHRoaXMuc3VyZmFjZS5zZXRTaXplKHQpKSx7d2lkdGg6ZS53aWR0aCxoZWlnaHQ6ZS5oZWlnaHR9fSxfdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fdmlld0JveDtyZXR1cm4gRyh0KSYmRyhlKSYmKGkueD10LGkueT1lLHRoaXMuc3VyZmFjZS50cmFuc2xhdGUoe3g6dCx5OmV9KSkse3g6aS54LHk6aS55fX0sZHJhdzpmdW5jdGlvbigpe3RoaXMuc3VyZmFjZS5kcmF3KHRoaXMuZHJhd2luZ0VsZW1lbnQpfSxhcHBlbmQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZHJhd2luZ0VsZW1lbnQuYXBwZW5kKHQuZHJhd2luZ0NvbnRhaW5lcigpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dGhpcy5kcmF3aW5nRWxlbWVudC5yZW1vdmUodC5kcmF3aW5nQ29udGFpbmVyKCkpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24oKXt9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5kcmF3aW5nRWxlbWVudC5jbGVhcigpfSxkZXN0cm95OmZ1bmN0aW9uKGUpe3RoaXMuc3VyZmFjZS5kZXN0cm95KCksZSYmdCh0aGlzLmVsZW1lbnQpLnJlbW92ZSgpfX0pLFAuZGVlcEV4dGVuZChMLHtpbml0OmZ1bmN0aW9uKHQpe1AuaW5pdCh0LEwudWkpfSxkaWZmTnVtZXJpY09wdGlvbnM6aSxFbGVtZW50OnAsU2NhbGU6YyxUcmFuc2xhdGlvbjpkLFJvdGF0aW9uOmwsQ2lyY2xlOkQsR3JvdXA6VCxSZWN0YW5nbGU6XyxDYW52YXM6SSxQYXRoOmIsTGF5b3V0Ok0sTGluZTpDLE1hcmtlckJhc2U6dixBcnJvd01hcmtlcjp3LENpcmNsZU1hcmtlcjp5LFBvbHlsaW5lOlMsQ29tcG9zaXRlVHJhbnNmb3JtOnUsVGV4dEJsb2NrOm0sSW1hZ2U6ayxWaXN1YWxCYXNlOmd9KX0od2luZG93LmtlbmRvLmpRdWVyeSl9LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlLGkpeyhpfHxlKSgpfSksZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcImRhdGF2aXovZGlhZ3JhbS9zZXJ2aWNlcy5taW5cIixbXCJrZW5kby5kcmF3aW5nLm1pblwiLFwiZGF0YXZpei9kaWFncmFtL3N2Zy5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSh0LGUpe3JldHVybiBlLmNoYXJDb2RlQXQoMCk9PXR8fGUudG9VcHBlckNhc2UoKS5jaGFyQ29kZUF0KDApPT10fWZ1bmN0aW9uIG4odCxlKXt2YXIgaTtyZXR1cm4gdC54PT0tMSYmdC55PT0tMT9pPWUuYm90dG9tUmlnaHQoKToxPT10LngmJjE9PXQueT9pPWUudG9wTGVmdCgpOnQueD09LTEmJjE9PXQueT9pPWUudG9wUmlnaHQoKToxPT10LngmJnQueT09LTE/aT1lLmJvdHRvbUxlZnQoKTowPT09dC54JiZ0Lnk9PS0xP2k9ZS5ib3R0b20oKTowPT09dC54JiYxPT10Lnk/aT1lLnRvcCgpOjE9PXQueCYmMD09PXQueT9pPWUubGVmdCgpOnQueD09LTEmJjA9PT10LnkmJihpPWUucmlnaHQoKSksaX1mdW5jdGlvbiBvKHQpe3ZhciBlPXQub3B0aW9ucy5lZGl0YWJsZTtyZXR1cm4gZSYmZS5kcmFnIT09ITF9ZnVuY3Rpb24gcyh0LGUpe3ZhciBpLG4sbyxzO2ZvcihzPTA7czx0LmNvbm5lY3RvcnMubGVuZ3RoO3MrKylpZihpPXQuY29ubmVjdG9yc1tzXSxuPWkucG9zaXRpb24oKSxvPW5ldyBxKG4ueCxuLnkpLG8uaW5mbGF0ZShvdCxvdCksby5jb250YWlucyhlKSlyZXR1cm4gaX1mdW5jdGlvbiByKHQpe3JldHVybiB0LmN0cmxLZXk9PT0hMSYmdC5hbHRLZXk9PT0hMSYmdC5zaGlmdEtleT09PSExO1xufXZhciBhLGgsYyxkLGwsdSxmLHAsZyxtLF8sdix5LHcseCxiLEMsUyxrLFQsTSxELEksUCxMLEUseixCLE4sUixBLE8sVT13aW5kb3cua2VuZG8sVj1VLmRhdGF2aXosSD1WLmRpYWdyYW0sRj1VLkNsYXNzLEc9SC5Hcm91cCxxPUguUmVjdCxLPUguUmVjdGFuZ2xlLFc9SC5VdGlscyxYPVcuaXNVbmRlZmluZWQsaj1ILlBvaW50LFk9SC5DaXJjbGUsUT1ILlRpY2tlcixKPVUuZGVlcEV4dGVuZCxaPVUudWkuTW92YWJsZSwkPVUuc3VwcG9ydC5icm93c2VyLHR0PVUudXRpbC5kZWZpbmVkLGV0PXQuaW5BcnJheSxpdD10LnByb3h5LG50PXthcnJvdzpcImRlZmF1bHRcIixncmlwOlwicG9pbnRlclwiLGNyb3NzOlwicG9pbnRlclwiLGFkZDpcInBvaW50ZXJcIixtb3ZlOlwibW92ZVwiLHNlbGVjdDpcInBvaW50ZXJcIixzb3V0aDpcInMtcmVzaXplXCIsZWFzdDpcImUtcmVzaXplXCIsd2VzdDpcInctcmVzaXplXCIsbm9ydGg6XCJuLXJlc2l6ZVwiLHJvd3Jlc2l6ZTpcInJvdy1yZXNpemVcIixjb2xyZXNpemU6XCJjb2wtcmVzaXplXCJ9LG90PTEwLHN0PVwiQXV0b1wiLHJ0PVwiVG9wXCIsYXQ9XCJSaWdodFwiLGh0PVwiTGVmdFwiLGN0PVwiQm90dG9tXCIsZHQ9MTAsbHQ9MTAsdXQ9XCJkcmFnU3RhcnRcIixmdD1cImRyYWdcIixwdD1cImRyYWdFbmRcIixndD1cIml0ZW1Sb3RhdGVcIixtdD1cIml0ZW1Cb3VuZHNDaGFuZ2VcIixfdD01LHZ0PTUseXQ9XCJtb3VzZUVudGVyXCIsd3Q9XCJtb3VzZUxlYXZlXCIseHQ9XCJ6b29tU3RhcnRcIixidD1cInpvb21FbmRcIixDdD0tMmU0LFN0PTJlNCxrdD0uOSxUdD0uOTMsTXQ9NSxEdD1cInRyYW5zcGFyZW50XCIsSXQ9XCJwYW5cIixQdD1cInJvdGF0ZWRcIixMdD1cInNvdXJjZVwiLEV0PVwidGFyZ2V0XCIsenQ9e1wiLTFcIjpMdCwxOkV0fTtILkN1cnNvcnM9bnQsYT1VLkNsYXNzLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt0aGlzLmxheW91dFN0YXRlPXQsdGhpcy5kaWFncmFtPXQuZGlhZ3JhbX0saW5pdFN0YXRlOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZhciBpPXRoaXMuZGlhZ3JhbS5nZXRTaGFwZUJ5SWQodCk7aSYmKHRoaXMuc3ViamVjdHMucHVzaChpKSx0aGlzLmZyb21zLnB1c2goaS5ib3VuZHMoKS50b3BMZWZ0KCkpLHRoaXMudG9zLnB1c2goZS50b3BMZWZ0KCkpKX10aGlzLmZyb21zPVtdLHRoaXMudG9zPVtdLHRoaXMuc3ViamVjdHM9W10sdGhpcy5sYXlvdXRTdGF0ZS5ub2RlTWFwLmZvckVhY2godCx0aGlzKX0sdXBkYXRlOmZ1bmN0aW9uKHQpe2lmKCEodGhpcy5zdWJqZWN0cy5sZW5ndGg8PTApKWZvcih2YXIgZT0wO2U8dGhpcy5zdWJqZWN0cy5sZW5ndGg7ZSsrKXRoaXMuc3ViamVjdHNbZV0ucG9zaXRpb24obmV3IGoodGhpcy5mcm9tc1tlXS54Kyh0aGlzLnRvc1tlXS54LXRoaXMuZnJvbXNbZV0ueCkqdCx0aGlzLmZyb21zW2VdLnkrKHRoaXMudG9zW2VdLnktdGhpcy5mcm9tc1tlXS55KSp0KSl9fSksaD1GLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUsaSl7dGhpcy5hbmltYXRlPSFYKGkpJiZpLHRoaXMuX2luaXRpYWxTdGF0ZT10LHRoaXMuX2ZpbmFsU3RhdGU9ZSx0aGlzLnRpdGxlPVwiRGlhZ3JhbSBsYXlvdXRcIn0sdW5kbzpmdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUodGhpcy5faW5pdGlhbFN0YXRlKX0scmVkbzpmdW5jdGlvbigpe3RoaXMuc2V0U3RhdGUodGhpcy5fZmluYWxTdGF0ZSl9LHNldFN0YXRlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5kaWFncmFtO3RoaXMuYW5pbWF0ZT8odC5saW5rTWFwLmZvckVhY2goZnVuY3Rpb24odCxlKXt2YXIgbj1pLmdldFNoYXBlQnlJZCh0KTtuLnZpc2libGUoITEpLG4mJm4ucG9pbnRzKGUpfSksZT1uZXcgUSxlLmFkZEFkYXB0ZXIobmV3IGEodCkpLGUub25Db21wbGV0ZShmdW5jdGlvbigpe3QubGlua01hcC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWkuZ2V0U2hhcGVCeUlkKHQpO2UudmlzaWJsZSghMCl9KX0pLGUucGxheSgpKToodC5ub2RlTWFwLmZvckVhY2goZnVuY3Rpb24odCxlKXt2YXIgbj1pLmdldFNoYXBlQnlJZCh0KTtuJiZuLnBvc2l0aW9uKGUudG9wTGVmdCgpKX0pLHQubGlua01hcC5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7dmFyIG49aS5nZXRTaGFwZUJ5SWQodCk7biYmbi5wb2ludHMoZSl9KSl9fSksYz1GLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt0aGlzLnVuaXRzPVtdLHRoaXMudGl0bGU9XCJDb21wb3NpdGUgdW5pdFwiLHQhPT1lJiZ0aGlzLnVuaXRzLnB1c2godCl9LGFkZDpmdW5jdGlvbih0KXt0aGlzLnVuaXRzLnB1c2godCl9LHVuZG86ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudW5pdHMubGVuZ3RoO3QrKyl0aGlzLnVuaXRzW3RdLnVuZG8oKX0scmVkbzpmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8dGhpcy51bml0cy5sZW5ndGg7dCsrKXRoaXMudW5pdHNbdF0ucmVkbygpfX0pLGQ9Ri5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlLGkpe3RoaXMuaXRlbT10LHRoaXMuX3JlZG9Tb3VyY2U9ZSx0aGlzLl9yZWRvVGFyZ2V0PWksdHQoZSkmJih0aGlzLl91bmRvU291cmNlPXQuc291cmNlKCkpLHR0KGkpJiYodGhpcy5fdW5kb1RhcmdldD10LnRhcmdldCgpKSx0aGlzLnRpdGxlPVwiQ29ubmVjdGlvbiBFZGl0aW5nXCJ9LHVuZG86ZnVuY3Rpb24oKXt0aGlzLl91bmRvU291cmNlIT09ZSYmdGhpcy5pdGVtLl91cGRhdGVDb25uZWN0b3IodGhpcy5fdW5kb1NvdXJjZSxcInNvdXJjZVwiKSx0aGlzLl91bmRvVGFyZ2V0IT09ZSYmdGhpcy5pdGVtLl91cGRhdGVDb25uZWN0b3IodGhpcy5fdW5kb1RhcmdldCxcInRhcmdldFwiKSx0aGlzLml0ZW0udXBkYXRlTW9kZWwoKX0scmVkbzpmdW5jdGlvbigpe3RoaXMuX3JlZG9Tb3VyY2UhPT1lJiZ0aGlzLml0ZW0uX3VwZGF0ZUNvbm5lY3Rvcih0aGlzLl9yZWRvU291cmNlLFwic291cmNlXCIpLHRoaXMuX3JlZG9UYXJnZXQhPT1lJiZ0aGlzLml0ZW0uX3VwZGF0ZUNvbm5lY3Rvcih0aGlzLl9yZWRvVGFyZ2V0LFwidGFyZ2V0XCIpLHRoaXMuaXRlbS51cGRhdGVNb2RlbCgpfX0pLGw9Ri5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlLGkpe3RoaXMuaXRlbT10LHRoaXMuX3VuZG9Tb3VyY2U9ZSx0aGlzLl91bmRvVGFyZ2V0PWksdGhpcy5fcmVkb1NvdXJjZT10LnNvdXJjZSgpLHRoaXMuX3JlZG9UYXJnZXQ9dC50YXJnZXQoKSx0aGlzLnRpdGxlPVwiQ29ubmVjdGlvbiBFZGl0aW5nXCJ9LHVuZG86ZnVuY3Rpb24oKXt0aGlzLml0ZW0uX3VwZGF0ZUNvbm5lY3Rvcih0aGlzLl91bmRvU291cmNlLFwic291cmNlXCIpLHRoaXMuaXRlbS5fdXBkYXRlQ29ubmVjdG9yKHRoaXMuX3VuZG9UYXJnZXQsXCJ0YXJnZXRcIiksdGhpcy5pdGVtLnVwZGF0ZU1vZGVsKCl9LHJlZG86ZnVuY3Rpb24oKXt0aGlzLml0ZW0uX3VwZGF0ZUNvbm5lY3Rvcih0aGlzLl9yZWRvU291cmNlLFwic291cmNlXCIpLHRoaXMuaXRlbS5fdXBkYXRlQ29ubmVjdG9yKHRoaXMuX3JlZG9UYXJnZXQsXCJ0YXJnZXRcIiksdGhpcy5pdGVtLnVwZGF0ZU1vZGVsKCl9fSksdT1GLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt0aGlzLmNvbm5lY3Rpb249dCx0aGlzLmRpYWdyYW09dC5kaWFncmFtLHRoaXMudGFyZ2V0Q29ubmVjdG9yPXQudGFyZ2V0Q29ubmVjdG9yLHRoaXMudGl0bGU9XCJEZWxldGUgY29ubmVjdGlvblwifSx1bmRvOmZ1bmN0aW9uKCl7dGhpcy5kaWFncmFtLl9hZGRDb25uZWN0aW9uKHRoaXMuY29ubmVjdGlvbiwhMSl9LHJlZG86ZnVuY3Rpb24oKXt0aGlzLmRpYWdyYW0ucmVtb3ZlKHRoaXMuY29ubmVjdGlvbiwhMSl9fSksZj1GLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt0aGlzLnNoYXBlPXQsdGhpcy5kaWFncmFtPXQuZGlhZ3JhbSx0aGlzLnRpdGxlPVwiRGVsZXRpb25cIn0sdW5kbzpmdW5jdGlvbigpe3RoaXMuZGlhZ3JhbS5fYWRkU2hhcGUodGhpcy5zaGFwZSwhMSksdGhpcy5zaGFwZS5zZWxlY3QoITEpfSxyZWRvOmZ1bmN0aW9uKCl7dGhpcy5zaGFwZS5zZWxlY3QoITEpLHRoaXMuZGlhZ3JhbS5yZW1vdmUodGhpcy5zaGFwZSwhMSl9fSkscD1GLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUsaSl7dmFyIG4sbztmb3IodGhpcy5zaGFwZXM9dCx0aGlzLnVuZG9TdGF0ZXM9ZSx0aGlzLnRpdGxlPVwiVHJhbnNmb3JtYXRpb25cIix0aGlzLnJlZG9TdGF0ZXM9W10sdGhpcy5hZG9ybmVyPWksbj0wO248dGhpcy5zaGFwZXMubGVuZ3RoO24rKylvPXRoaXMuc2hhcGVzW25dLHRoaXMucmVkb1N0YXRlcy5wdXNoKG8uYm91bmRzKCkpfSx1bmRvOmZ1bmN0aW9uKCl7dmFyIHQsZTtmb3IodD0wO3Q8dGhpcy5zaGFwZXMubGVuZ3RoO3QrKyllPXRoaXMuc2hhcGVzW3RdLGUuYm91bmRzKHRoaXMudW5kb1N0YXRlc1t0XSksZS5oYXNPd25Qcm9wZXJ0eShcImxheW91dFwiKSYmZS5sYXlvdXQoZSx0aGlzLnJlZG9TdGF0ZXNbdF0sdGhpcy51bmRvU3RhdGVzW3RdKSxlLnVwZGF0ZU1vZGVsKCk7dGhpcy5hZG9ybmVyJiYodGhpcy5hZG9ybmVyLnJlZnJlc2hCb3VuZHMoKSx0aGlzLmFkb3JuZXIucmVmcmVzaCgpKX0scmVkbzpmdW5jdGlvbigpe3ZhciB0LGU7Zm9yKHQ9MDt0PHRoaXMuc2hhcGVzLmxlbmd0aDt0KyspZT10aGlzLnNoYXBlc1t0XSxlLmJvdW5kcyh0aGlzLnJlZG9TdGF0ZXNbdF0pLGUuaGFzT3duUHJvcGVydHkoXCJsYXlvdXRcIikmJmUubGF5b3V0KGUsdGhpcy51bmRvU3RhdGVzW3RdLHRoaXMucmVkb1N0YXRlc1t0XSksZS51cGRhdGVNb2RlbCgpO3RoaXMuYWRvcm5lciYmKHRoaXMuYWRvcm5lci5yZWZyZXNoQm91bmRzKCksdGhpcy5hZG9ybmVyLnJlZnJlc2goKSl9fSksZz1GLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3RoaXMuY29ubmVjdGlvbj10LHRoaXMuZGlhZ3JhbT1lLHRoaXMudGl0bGU9XCJOZXcgY29ubmVjdGlvblwifSx1bmRvOmZ1bmN0aW9uKCl7dGhpcy5kaWFncmFtLnJlbW92ZSh0aGlzLmNvbm5lY3Rpb24sITEpfSxyZWRvOmZ1bmN0aW9uKCl7dGhpcy5kaWFncmFtLl9hZGRDb25uZWN0aW9uKHRoaXMuY29ubmVjdGlvbiwhMSl9fSksbT1GLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3RoaXMuc2hhcGU9dCx0aGlzLmRpYWdyYW09ZSx0aGlzLnRpdGxlPVwiTmV3IHNoYXBlXCJ9LHVuZG86ZnVuY3Rpb24oKXt0aGlzLmRpYWdyYW0uZGVzZWxlY3QoKSx0aGlzLmRpYWdyYW0ucmVtb3ZlKHRoaXMuc2hhcGUsITEpfSxyZWRvOmZ1bmN0aW9uKCl7dGhpcy5kaWFncmFtLl9hZGRTaGFwZSh0aGlzLnNoYXBlLCExKX19KSxfPUYuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmluaXRpYWw9dCx0aGlzLmZpbmFsUG9zPWUsdGhpcy5kaWFncmFtPWksdGhpcy50aXRsZT1cIlBhbiBVbml0XCJ9LHVuZG86ZnVuY3Rpb24oKXt0aGlzLmRpYWdyYW0ucGFuKHRoaXMuaW5pdGlhbCl9LHJlZG86ZnVuY3Rpb24oKXt0aGlzLmRpYWdyYW0ucGFuKHRoaXMuZmluYWxQb3MpfX0pLHY9Ri5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlLGkpe3ZhciBuLG87Zm9yKHRoaXMuc2hhcGVzPWUsdGhpcy51bmRvUm90YXRlcz1pLHRoaXMudGl0bGU9XCJSb3RhdGlvblwiLHRoaXMucmVkb1JvdGF0ZXM9W10sdGhpcy5yZWRvQW5nbGU9dC5fYW5nbGUsdGhpcy5hZG9ybmVyPXQsdGhpcy5jZW50ZXI9dC5faW5uZXJCb3VuZHMuY2VudGVyKCksbj0wO248dGhpcy5zaGFwZXMubGVuZ3RoO24rKylvPXRoaXMuc2hhcGVzW25dLHRoaXMucmVkb1JvdGF0ZXMucHVzaChvLnJvdGF0ZSgpLmFuZ2xlKX0sdW5kbzpmdW5jdGlvbigpe3ZhciB0LGU7Zm9yKHQ9MDt0PHRoaXMuc2hhcGVzLmxlbmd0aDt0KyspZT10aGlzLnNoYXBlc1t0XSxlLnJvdGF0ZSh0aGlzLnVuZG9Sb3RhdGVzW3RdLHRoaXMuY2VudGVyLCExKSxlLmhhc093blByb3BlcnR5KFwibGF5b3V0XCIpJiZlLmxheW91dChlKSxlLnVwZGF0ZU1vZGVsKCk7dGhpcy5hZG9ybmVyJiYodGhpcy5hZG9ybmVyLl9pbml0aWFsaXplKCksdGhpcy5hZG9ybmVyLnJlZnJlc2goKSl9LHJlZG86ZnVuY3Rpb24oKXt2YXIgdCxlO2Zvcih0PTA7dDx0aGlzLnNoYXBlcy5sZW5ndGg7dCsrKWU9dGhpcy5zaGFwZXNbdF0sZS5yb3RhdGUodGhpcy5yZWRvUm90YXRlc1t0XSx0aGlzLmNlbnRlciwhMSksZS5oYXNPd25Qcm9wZXJ0eShcImxheW91dFwiKSYmZS5sYXlvdXQoZSksZS51cGRhdGVNb2RlbCgpO3RoaXMuYWRvcm5lciYmKHRoaXMuYWRvcm5lci5faW5pdGlhbGl6ZSgpLHRoaXMuYWRvcm5lci5yZWZyZXNoKCkpfX0pLHk9Ri5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlLGkpe3RoaXMuZGlhZ3JhbT10LHRoaXMuaW5kaWNlcz1pLHRoaXMuaXRlbXM9ZSx0aGlzLnRpdGxlPVwiUm90YXRlIFVuaXRcIn0sdW5kbzpmdW5jdGlvbigpe3RoaXMuZGlhZ3JhbS5fdG9JbmRleCh0aGlzLml0ZW1zLHRoaXMuaW5kaWNlcyl9LHJlZG86ZnVuY3Rpb24oKXt0aGlzLmRpYWdyYW0udG9Gcm9udCh0aGlzLml0ZW1zLCExKX19KSx3PUYuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmRpYWdyYW09dCx0aGlzLmluZGljZXM9aSx0aGlzLml0ZW1zPWUsdGhpcy50aXRsZT1cIlJvdGF0ZSBVbml0XCJ9LHVuZG86ZnVuY3Rpb24oKXt0aGlzLmRpYWdyYW0uX3RvSW5kZXgodGhpcy5pdGVtcyx0aGlzLmluZGljZXMpfSxyZWRvOmZ1bmN0aW9uKCl7dGhpcy5kaWFncmFtLnRvQmFjayh0aGlzLml0ZW1zLCExKX19KSx4PVUuT2JzZXJ2YWJsZS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7VS5PYnNlcnZhYmxlLmZuLmluaXQuY2FsbCh0aGlzLHQpLHRoaXMuYmluZCh0aGlzLmV2ZW50cyx0KSx0aGlzLnN0YWNrPVtdLHRoaXMuaW5kZXg9MCx0aGlzLmNhcGFjaXR5PTEwMH0sZXZlbnRzOltcInVuZG9uZVwiLFwicmVkb25lXCJdLGJlZ2luOmZ1bmN0aW9uKCl7dGhpcy5jb21wb3NpdGU9bmV3IGN9LGNhbmNlbDpmdW5jdGlvbigpe3RoaXMuY29tcG9zaXRlPWV9LGNvbW1pdDpmdW5jdGlvbih0KXt0aGlzLmNvbXBvc2l0ZS51bml0cy5sZW5ndGg+MCYmdGhpcy5fcmVzdGFydCh0aGlzLmNvbXBvc2l0ZSx0KSx0aGlzLmNvbXBvc2l0ZT1lfSxhZGRDb21wb3NpdGVJdGVtOmZ1bmN0aW9uKHQpe3RoaXMuY29tcG9zaXRlP3RoaXMuY29tcG9zaXRlLmFkZCh0KTp0aGlzLmFkZCh0KX0sYWRkOmZ1bmN0aW9uKHQsZSl7dGhpcy5fcmVzdGFydCh0LGUpfSxwb3A6ZnVuY3Rpb24oKXt0aGlzLmluZGV4PjAmJih0aGlzLnN0YWNrLnBvcCgpLHRoaXMuaW5kZXgtLSl9LGNvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhY2subGVuZ3RofSx1bmRvOmZ1bmN0aW9uKCl7dGhpcy5pbmRleD4wJiYodGhpcy5pbmRleC0tLHRoaXMuc3RhY2tbdGhpcy5pbmRleF0udW5kbygpLHRoaXMudHJpZ2dlcihcInVuZG9uZVwiKSl9LHJlZG86ZnVuY3Rpb24oKXt0aGlzLnN0YWNrLmxlbmd0aD4wJiZ0aGlzLmluZGV4PHRoaXMuc3RhY2subGVuZ3RoJiYodGhpcy5zdGFja1t0aGlzLmluZGV4XS5yZWRvKCksdGhpcy5pbmRleCsrLHRoaXMudHJpZ2dlcihcInJlZG9uZVwiKSl9LF9yZXN0YXJ0OmZ1bmN0aW9uKHQsZSl7dGhpcy5zdGFjay5zcGxpY2UodGhpcy5pbmRleCx0aGlzLnN0YWNrLmxlbmd0aC10aGlzLmluZGV4KSx0aGlzLnN0YWNrLnB1c2godCksZSE9PSExP3RoaXMucmVkbygpOnRoaXMuaW5kZXgrKyx0aGlzLnN0YWNrLmxlbmd0aD50aGlzLmNhcGFjaXR5JiYodGhpcy5zdGFjay5zcGxpY2UoMCx0aGlzLnN0YWNrLmxlbmd0aC10aGlzLmNhcGFjaXR5KSx0aGlzLmluZGV4PXRoaXMuY2FwYWNpdHkpfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuc3RhY2s9W10sdGhpcy5pbmRleD0wfX0pLGI9Ri5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dGhpcy50b29sU2VydmljZT10fSxzdGFydDpmdW5jdGlvbigpe30sbW92ZTpmdW5jdGlvbigpe30sZW5kOmZ1bmN0aW9uKCl7fSx0cnlBY3RpdmF0ZTpmdW5jdGlvbigpe3JldHVybiExfSxnZXRDdXJzb3I6ZnVuY3Rpb24oKXtyZXR1cm4gbnQuYXJyb3d9fSksQz1iLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlKXt2YXIgaSxuLG8scyxyPXRoaXMsYT1VLnN1cHBvcnQubW9iaWxlT1M/VHQ6a3Q7Yi5mbi5pbml0LmNhbGwocixlKSxpPXIudG9vbFNlcnZpY2UuZGlhZ3JhbSxuPWkuY2FudmFzLG89aS5zY3JvbGxlcj1yLnNjcm9sbGVyPXQoaS5zY3JvbGxhYmxlKS5rZW5kb01vYmlsZVNjcm9sbGVyKHtmcmljdGlvbjphLHZlbG9jaXR5TXVsdGlwbGllcjpNdCxtb3VzZXdoZWVsU2Nyb2xsaW5nOiExLHpvb206ITEsc2Nyb2xsOml0KHIuX21vdmUscil9KS5kYXRhKFwia2VuZG9Nb2JpbGVTY3JvbGxlclwiKSxuLnRyYW5zbGF0ZSYmKHIubW92YWJsZUNhbnZhcz1uZXcgWihuLmVsZW1lbnQpKSxzPWZ1bmN0aW9uKHQsZSxpKXt0Lm1ha2VWaXJ0dWFsKCksdC52aXJ0dWFsU2l6ZShlfHxDdCxpfHxTdCl9LHMoby5kaW1lbnNpb25zLngpLHMoby5kaW1lbnNpb25zLnkpLG8uZGlzYWJsZSgpfSx0cnlBY3RpdmF0ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudG9vbFNlcnZpY2Usbj1pLmRpYWdyYW0ub3B0aW9ucy5wYW5uYWJsZSxvPWUuY3RybEtleTtyZXR1cm4gdHQobi5rZXkpJiYobz1uLmtleSYmXCJub25lXCIhPW4ua2V5P2Vbbi5rZXkrXCJLZXlcIl06cihlKSYmIXR0KGkuaG92ZXJlZEl0ZW0pKSxuIT09ITEmJm8mJiF0dChpLmhvdmVyZWRBZG9ybmVyKSYmIXR0KGkuX2hvdmVyZWRDb25uZWN0b3IpfSxzdGFydDpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsZXIuZW5hYmxlKCl9LG1vdmU6ZnVuY3Rpb24oKXt9LF9tb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT1lLnRvb2xTZXJ2aWNlLmRpYWdyYW0sbj1pLmNhbnZhcyxvPW5ldyBqKHQuc2Nyb2xsTGVmdCx0LnNjcm9sbFRvcCk7bi50cmFuc2xhdGU/KGkuX3N0b3JlUGFuKG8udGltZXMoLTEpKSxlLm1vdmFibGVDYW52YXMubW92ZVRvKG8pLG4udHJhbnNsYXRlKG8ueCxvLnkpKTpvPW8ucGx1cyhpLl9wYW4udGltZXMoLTEpKSxpLnRyaWdnZXIoSXQse3BhbjpvfSl9LGVuZDpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsZXIuZGlzYWJsZSgpfSxnZXRDdXJzb3I6ZnVuY3Rpb24oKXtyZXR1cm4gbnQubW92ZX19KSxTPUYuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMudG9vbFNlcnZpY2U9dH0sdHJ5QWN0aXZhdGU6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sc3RhcnQ6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnRvb2xTZXJ2aWNlLG49aS5kaWFncmFtLG89aS5ob3ZlcmVkSXRlbTtvJiYoaS5zZWxlY3RTaW5nbGUobyxlKSxvLmFkb3JuZXImJih0aGlzLmFkb3JuZXI9by5hZG9ybmVyLHRoaXMuaGFuZGxlPXRoaXMuYWRvcm5lci5faGl0VGVzdCh0KSkpLHRoaXMuaGFuZGxlfHwodGhpcy5oYW5kbGU9bi5fcmVzaXppbmdBZG9ybmVyLl9oaXRUZXN0KHQpLHRoaXMuaGFuZGxlJiYodGhpcy5hZG9ybmVyPW4uX3Jlc2l6aW5nQWRvcm5lcikpLHRoaXMuYWRvcm5lciYmKHRoaXMuYWRvcm5lci5pc0RyYWdIYW5kbGUodGhpcy5oYW5kbGUpJiZuLnRyaWdnZXIodXQse3NoYXBlczp0aGlzLmFkb3JuZXIuc2hhcGVzLGNvbm5lY3Rpb25zOltdfSk/KGkuc3RhcnRQb2ludD10LGkuZW5kKHQpKTp0aGlzLmFkb3JuZXIuc3RhcnQodCkpfSxtb3ZlOmZ1bmN0aW9uKHQpe3RoaXMuYWRvcm5lciYmKHRoaXMuYWRvcm5lci5tb3ZlKHRoaXMuaGFuZGxlLHQpLHRoaXMuYWRvcm5lci5pc0RyYWdIYW5kbGUodGhpcy5oYW5kbGUpJiZ0aGlzLnRvb2xTZXJ2aWNlLmRpYWdyYW0udHJpZ2dlcihmdCx7c2hhcGVzOnRoaXMuYWRvcm5lci5zaGFwZXMsY29ubmVjdGlvbnM6W119KSl9LGVuZDpmdW5jdGlvbigpe3ZhciB0LGk9dGhpcy50b29sU2VydmljZS5kaWFncmFtLG49dGhpcy5hZG9ybmVyO24mJihuLmlzRHJhZ0hhbmRsZSh0aGlzLmhhbmRsZSkmJmkudHJpZ2dlcihwdCx7c2hhcGVzOm4uc2hhcGVzLGNvbm5lY3Rpb25zOltdfSk/bi5jYW5jZWwoKToodD1uLnN0b3AoKSx0JiZpLnVuZG9SZWRvU2VydmljZS5hZGQodCwhMSkpKSx0aGlzLmFkb3JuZXI9ZSx0aGlzLmhhbmRsZT1lfSxnZXRDdXJzb3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudG9vbFNlcnZpY2UuaG92ZXJlZEl0ZW0/dGhpcy50b29sU2VydmljZS5ob3ZlcmVkSXRlbS5fZ2V0Q3Vyc29yKHQpOm50LmFycm93fX0pLGs9Ri5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dGhpcy50b29sU2VydmljZT10fSx0cnlBY3RpdmF0ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudG9vbFNlcnZpY2Usbj1pLmRpYWdyYW0ub3B0aW9ucy5zZWxlY3RhYmxlLG89biYmbi5tdWx0aXBsZSE9PSExO3JldHVybiBvJiYobz1uLmtleSYmXCJub25lXCIhPW4ua2V5P2Vbbi5rZXkrXCJLZXlcIl06cihlKSksbyYmIXR0KGkuaG92ZXJlZEl0ZW0pJiYhdHQoaS5ob3ZlcmVkQWRvcm5lcil9LHN0YXJ0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudG9vbFNlcnZpY2UuZGlhZ3JhbTtlLmRlc2VsZWN0KCksZS5zZWxlY3Rvci5zdGFydCh0KX0sbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnRvb2xTZXJ2aWNlLmRpYWdyYW07ZS5zZWxlY3Rvci5tb3ZlKHQpfSxlbmQ6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnRvb2xTZXJ2aWNlLmRpYWdyYW0sbj10aGlzLnRvb2xTZXJ2aWNlLmhvdmVyZWRJdGVtLG89aS5zZWxlY3Rvci5ib3VuZHMoKTtuJiZuLmlzU2VsZWN0ZWR8fGUuY3RybEtleXx8aS5kZXNlbGVjdCgpLG8uaXNFbXB0eSgpfHxpLnNlbGVjdEFyZWEobyksaS5zZWxlY3Rvci5lbmQoKX0sZ2V0Q3Vyc29yOmZ1bmN0aW9uKCl7cmV0dXJuIG50LmFycm93fX0pLFQ9Ri5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dGhpcy50b29sU2VydmljZT10LHRoaXMudHlwZT1cIkNvbm5lY3Rpb25Ub29sXCJ9LHRyeUFjdGl2YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9vbFNlcnZpY2UuX2hvdmVyZWRDb25uZWN0b3J9LHN0YXJ0OmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy50b29sU2VydmljZSxuPWkuZGlhZ3JhbSxzPWkuX2hvdmVyZWRDb25uZWN0b3Iscj1uLl9jcmVhdGVDb25uZWN0aW9uKHt9LHMuX2MsdCk7byhyKSYmIW4udHJpZ2dlcih1dCx7c2hhcGVzOltdLGNvbm5lY3Rpb25zOltyXSxjb25uZWN0aW9uSGFuZGxlOkV0fSkmJm4uX2FkZENvbm5lY3Rpb24ocik/KGkuX2Nvbm5lY3Rpb25NYW5pcHVsYXRpb24ocixzLl9jLnNoYXBlLCEwKSxpLl9yZW1vdmVIb3ZlcigpLGkuc2VsZWN0U2luZ2xlKGkuYWN0aXZlQ29ubmVjdGlvbixlKSxcInRvdWNobW92ZVwiPT1lLnR5cGUmJihuLl9jYWNoZWRUb3VjaFRhcmdldD1zLnZpc3VhbCkpOihyLnNvdXJjZShudWxsKSxpLmVuZCh0KSl9LG1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy50b29sU2VydmljZSxpPWUuYWN0aXZlQ29ubmVjdGlvbjtyZXR1cm4gaS50YXJnZXQodCksZS5kaWFncmFtLnRyaWdnZXIoZnQse3NoYXBlczpbXSxjb25uZWN0aW9uczpbaV0sY29ubmVjdGlvbkhhbmRsZTpFdH0pLCEwfSxlbmQ6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLnRvb2xTZXJ2aWNlLG49aS5kaWFncmFtLG89aS5hY3RpdmVDb25uZWN0aW9uLHM9aS5ob3ZlcmVkSXRlbSxyPWkuX2hvdmVyZWRDb25uZWN0b3IsYT1uLl9jYWNoZWRUb3VjaFRhcmdldDtvJiYoZT1yJiZyLl9jIT1vLnNvdXJjZUNvbm5lY3Rvcj9yLl9jOnMmJnMgaW5zdGFuY2VvZiBILlNoYXBlP3MuZ2V0Q29ubmVjdG9yKHN0KXx8cy5nZXRDb25uZWN0b3IodCk6dCxvLnRhcmdldChlKSxuLnRyaWdnZXIocHQse3NoYXBlczpbXSxjb25uZWN0aW9uczpbb10sY29ubmVjdGlvbkhhbmRsZTpFdH0pPyhuLnJlbW92ZShvLCExKSxuLnVuZG9SZWRvU2VydmljZS5wb3AoKSk6KG8udXBkYXRlTW9kZWwoKSxuLl9zeW5jQ29ubmVjdGlvbkNoYW5nZXMoKSksaS5fY29ubmVjdGlvbk1hbmlwdWxhdGlvbigpLGEmJihuLl9jb25uZWN0b3JzQWRvcm5lci52aXN1YWwucmVtb3ZlKGEpLG4uX2NhY2hlZFRvdWNoVGFyZ2V0PW51bGwpKX0sZ2V0Q3Vyc29yOmZ1bmN0aW9uKCl7cmV0dXJuIG50LmFycm93fX0pLE09Ri5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dGhpcy50b29sU2VydmljZT10LHRoaXMudHlwZT1cIkNvbm5lY3Rpb25Ub29sXCJ9LHRyeUFjdGl2YXRlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy50b29sU2VydmljZSxuPWkuZGlhZ3JhbSxvPW4ub3B0aW9ucy5zZWxlY3RhYmxlLHM9aS5ob3ZlcmVkSXRlbSxyPW8hPT0hMSYmcyYmcy5wYXRoJiYhKHMuaXNTZWxlY3RlZCYmZS5jdHJsS2V5KTtyZXR1cm4gciYmKHRoaXMuX2M9cykscn0sc3RhcnQ6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLHMscj10aGlzLnRvb2xTZXJ2aWNlLGE9dGhpcy5fYztyLnNlbGVjdFNpbmdsZShhLGUpLGk9YS5hZG9ybmVyLGkmJihuPWkuX2hpdFRlc3QodCkscz16dFtuXSksbyhhKSYmaSYmIXIuZGlhZ3JhbS50cmlnZ2VyKHV0LHtzaGFwZXM6W10sY29ubmVjdGlvbnM6W2FdLGNvbm5lY3Rpb25IYW5kbGU6c30pPyh0aGlzLmhhbmRsZT1uLHRoaXMuaGFuZGxlTmFtZT1zLGkuc3RhcnQodCkpOihyLnN0YXJ0UG9pbnQ9dCxyLmVuZCh0KSl9LG1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fYy5hZG9ybmVyO2lmKG8odGhpcy5fYykmJmUpcmV0dXJuIGUubW92ZSh0aGlzLmhhbmRsZSx0KSx0aGlzLnRvb2xTZXJ2aWNlLmRpYWdyYW0udHJpZ2dlcihmdCx7c2hhcGVzOltdLGNvbm5lY3Rpb25zOlt0aGlzLl9jXSxjb25uZWN0aW9uSGFuZGxlOnRoaXMuaGFuZGxlTmFtZX0pLCEwfSxlbmQ6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLl9jLG49aS5hZG9ybmVyLHM9dGhpcy50b29sU2VydmljZSxyPXMuZGlhZ3JhbTtuJiZvKGkpJiYoZT1uLnN0b3AodCksci50cmlnZ2VyKHB0LHtzaGFwZXM6W10sY29ubmVjdGlvbnM6W2ldLGNvbm5lY3Rpb25IYW5kbGU6dGhpcy5oYW5kbGVOYW1lfSk/ZS51bmRvKCk6KHIudW5kb1JlZG9TZXJ2aWNlLmFkZChlLCExKSxpLnVwZGF0ZU1vZGVsKCksci5fc3luY0Nvbm5lY3Rpb25DaGFuZ2VzKCkpKX0sZ2V0Q3Vyc29yOmZ1bmN0aW9uKCl7cmV0dXJuIG50Lm1vdmV9fSksRD1GLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt0aGlzLmRpYWdyYW09dCx0aGlzLnRvb2xzPVtuZXcgQyh0aGlzKSxuZXcgTSh0aGlzKSxuZXcgVCh0aGlzKSxuZXcgayh0aGlzKSxuZXcgUyh0aGlzKV0sdGhpcy5hY3RpdmVUb29sPWV9LHN0YXJ0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9Sih7fSxlKSx0aGlzLmFjdGl2ZVRvb2wmJnRoaXMuYWN0aXZlVG9vbC5lbmQodCxlKSx0aGlzLl91cGRhdGVIb3ZlcmVkSXRlbSh0KSx0aGlzLl9hY3RpdmF0ZVRvb2wodCxlKSx0aGlzLmFjdGl2ZVRvb2wuc3RhcnQodCxlKSx0aGlzLl91cGRhdGVDdXJzb3IodCksdGhpcy5kaWFncmFtLmZvY3VzKCksdGhpcy5kaWFncmFtLmNhbnZhcy5zdXJmYWNlLnN1c3BlbmRUcmFja2luZygpLHRoaXMuc3RhcnRQb2ludD10LCEwfSxtb3ZlOmZ1bmN0aW9uKHQsZSl7ZT1KKHt9LGUpO3ZhciBpPSEwO3JldHVybiB0aGlzLmFjdGl2ZVRvb2wmJihpPXRoaXMuYWN0aXZlVG9vbC5tb3ZlKHQsZSkpLGkmJnRoaXMuX3VwZGF0ZUhvdmVyZWRJdGVtKHQpLHRoaXMuX3VwZGF0ZUN1cnNvcih0KSwhMH0sZW5kOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIGk9Sih7fSxpKSx0aGlzLmFjdGl2ZVRvb2wmJnRoaXMuYWN0aXZlVG9vbC5lbmQodCxpKSx0aGlzLmRpYWdyYW0uY2FudmFzLnN1cmZhY2UucmVzdW1lVHJhY2tpbmcoKSx0aGlzLmFjdGl2ZVRvb2w9ZSx0aGlzLl91cGRhdGVDdXJzb3IodCksITB9LGtleURvd246ZnVuY3Rpb24odCxlKXt2YXIgbixvPXRoaXMuZGlhZ3JhbTtpZihlPUooe2N0cmxLZXk6ITEsbWV0YUtleTohMSxhbHRLZXk6ITF9LGUpLCFlLmN0cmxLZXkmJiFlLm1ldGFLZXl8fGUuYWx0S2V5KXtpZig0Nj09PXR8fDg9PT10KXJldHVybiBuPXRoaXMuZGlhZ3JhbS5fdHJpZ2dlclJlbW92ZShvLnNlbGVjdCgpKSxuLmxlbmd0aCYmKHRoaXMuZGlhZ3JhbS5yZW1vdmUobiwhMCksdGhpcy5kaWFncmFtLl9zeW5jQ2hhbmdlcygpLHRoaXMuZGlhZ3JhbS5fZGVzdHJveVRvb2xCYXIoKSksITA7aWYoMjc9PT10KXJldHVybiB0aGlzLl9kaXNjYXJkTmV3Q29ubmVjdGlvbigpLG8uZGVzZWxlY3QoKSxvLl9kZXN0cm95VG9vbEJhcigpLCEwfWVsc2V7aWYoaSh0LFwiYVwiKSlyZXR1cm4gby5zZWxlY3RBbGwoKSxvLl9kZXN0cm95VG9vbEJhcigpLCEwO2lmKGkodCxcInpcIikpcmV0dXJuIG8udW5kbygpLG8uX2Rlc3Ryb3lUb29sQmFyKCksITA7aWYoaSh0LFwieVwiKSlyZXR1cm4gby5yZWRvKCksby5fZGVzdHJveVRvb2xCYXIoKSwhMDtpKHQsXCJjXCIpPyhvLmNvcHkoKSxvLl9kZXN0cm95VG9vbEJhcigpKTppKHQsXCJ4XCIpPyhvLmN1dCgpLG8uX2Rlc3Ryb3lUb29sQmFyKCkpOmkodCxcInZcIik/KG8ucGFzdGUoKSxvLl9kZXN0cm95VG9vbEJhcigpKTppKHQsXCJsXCIpPyhvLmxheW91dCgpLG8uX2Rlc3Ryb3lUb29sQmFyKCkpOmkodCxcImRcIikmJihvLl9kZXN0cm95VG9vbEJhcigpLG8uY29weSgpLG8ucGFzdGUoKSl9fSx3aGVlbDpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZGlhZ3JhbSxuPWUuZGVsdGEsbz1pLnpvb20oKSxzPWkub3B0aW9ucyxyPXMuem9vbVJhdGUsYT17cG9pbnQ6dCxtZXRhOmUsem9vbTpvfTtpZighaS50cmlnZ2VyKHh0LGEpKXJldHVybiBuPDA/bys9cjpvLT1yLG89VS5kYXRhdml6LnJvdW5kKE1hdGgubWF4KHMuem9vbU1pbixNYXRoLm1pbihzLnpvb21NYXgsbykpLDIpLGEuem9vbT1vLGkuem9vbShvLGEpLGkudHJpZ2dlcihidCxhKSwhMH0sc2V0VG9vbDpmdW5jdGlvbih0LGUpe3QudG9vbFNlcnZpY2U9dGhpcyx0aGlzLnRvb2xzW2VdPXR9LHNlbGVjdFNpbmdsZTpmdW5jdGlvbih0LGUpe3ZhciBpLG49dGhpcy5kaWFncmFtLG89bi5vcHRpb25zLnNlbGVjdGFibGU7byYmIXQuaXNTZWxlY3RlZCYmdC5vcHRpb25zLnNlbGVjdGFibGUhPT0hMSYmKGk9ZS5jdHJsS2V5JiZvLm11bHRpcGxlIT09ITEsbi5zZWxlY3QodCx7YWRkVG9TZWxlY3Rpb246aX0pKX0sX2Rpc2NhcmROZXdDb25uZWN0aW9uOmZ1bmN0aW9uKCl7dGhpcy5uZXdDb25uZWN0aW9uJiYodGhpcy5kaWFncmFtLnJlbW92ZSh0aGlzLm5ld0Nvbm5lY3Rpb24pLHRoaXMubmV3Q29ubmVjdGlvbj1lKX0sX2FjdGl2YXRlVG9vbDpmdW5jdGlvbih0LGUpe3ZhciBpLG47Zm9yKGk9MDtpPHRoaXMudG9vbHMubGVuZ3RoO2krKylpZihuPXRoaXMudG9vbHNbaV0sbi50cnlBY3RpdmF0ZSh0LGUpKXt0aGlzLmFjdGl2ZVRvb2w9bjticmVha319LF91cGRhdGVDdXJzb3I6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kaWFncmFtLmVsZW1lbnQsaT10aGlzLmFjdGl2ZVRvb2w/dGhpcy5hY3RpdmVUb29sLmdldEN1cnNvcih0KTp0aGlzLmhvdmVyZWRBZG9ybmVyP3RoaXMuaG92ZXJlZEFkb3JuZXIuX2dldEN1cnNvcih0KTp0aGlzLmhvdmVyZWRJdGVtP3RoaXMuaG92ZXJlZEl0ZW0uX2dldEN1cnNvcih0KTpudC5hcnJvdztlLmNzcyh7Y3Vyc29yOml9KSwkLm1zaWUmJjc9PSQudmVyc2lvbiYmKGVbMF0uc3R5bGUuY3NzVGV4dD1lWzBdLnN0eWxlLmNzc1RleHQpfSxfY29ubmVjdGlvbk1hbmlwdWxhdGlvbjpmdW5jdGlvbih0LGksbil7dGhpcy5hY3RpdmVDb25uZWN0aW9uPXQsdGhpcy5kaXNhYmxlZFNoYXBlPWksdGhpcy5uZXdDb25uZWN0aW9uPW4/dGhpcy5hY3RpdmVDb25uZWN0aW9uOmV9LF91cGRhdGVIb3ZlcmVkSXRlbTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9oaXRUZXN0KHQpLG49dGhpcy5kaWFncmFtO2k9PXRoaXMuaG92ZXJlZEl0ZW18fHRoaXMuZGlzYWJsZWRTaGFwZSYmaT09dGhpcy5kaXNhYmxlZFNoYXBlfHwodGhpcy5ob3ZlcmVkSXRlbSYmKG4udHJpZ2dlcih3dCx7aXRlbTp0aGlzLmhvdmVyZWRJdGVtfSksdGhpcy5ob3ZlcmVkSXRlbS5faG92ZXIoITEpKSxpJiZpLm9wdGlvbnMuZW5hYmxlPyhuLnRyaWdnZXIoeXQse2l0ZW06aX0pLHRoaXMuaG92ZXJlZEl0ZW09aSx0aGlzLmhvdmVyZWRJdGVtLl9ob3ZlcighMCkpOnRoaXMuaG92ZXJlZEl0ZW09ZSl9LF9yZW1vdmVIb3ZlcjpmdW5jdGlvbigpe3RoaXMuaG92ZXJlZEl0ZW0mJih0aGlzLmhvdmVyZWRJdGVtLl9ob3ZlcighMSksdGhpcy5ob3ZlcmVkSXRlbT1lKX0sX2hpdFRlc3Q6ZnVuY3Rpb24odCl7dmFyIGksbixvLHMscj10aGlzLmRpYWdyYW07aWYodGhpcy5faG92ZXJlZENvbm5lY3RvciYmKHRoaXMuX2hvdmVyZWRDb25uZWN0b3IuX2hvdmVyKCExKSx0aGlzLl9ob3ZlcmVkQ29ubmVjdG9yPWUpLHIuX2Nvbm5lY3RvcnNBZG9ybmVyLl92aXNpYmxlJiYoaT1yLl9jb25uZWN0b3JzQWRvcm5lci5faGl0VGVzdCh0KSkpcmV0dXJuIGk7aWYoaT10aGlzLmRpYWdyYW0uX3Jlc2l6aW5nQWRvcm5lci5faGl0VGVzdCh0KSl7aWYodGhpcy5ob3ZlcmVkQWRvcm5lcj1yLl9yZXNpemluZ0Fkb3JuZXIsMCE9PWkueHx8MCE9PWkueSlyZXR1cm47aT1lfWVsc2UgdGhpcy5ob3ZlcmVkQWRvcm5lcj1lO2lmKCF0aGlzLmFjdGl2ZVRvb2x8fFwiQ29ubmVjdGlvblRvb2xcIiE9PXRoaXMuYWN0aXZlVG9vbC50eXBlKXtmb3Iocz1bXSxvPTA7bzxyLl9zZWxlY3RlZEl0ZW1zLmxlbmd0aDtvKyspbj1yLl9zZWxlY3RlZEl0ZW1zW29dLG4gaW5zdGFuY2VvZiBILkNvbm5lY3Rpb24mJnMucHVzaChuKTtpPXRoaXMuX2hpdFRlc3RJdGVtcyhzLHQpfXJldHVybiBpfHx0aGlzLl9oaXRUZXN0RWxlbWVudHModCl9LF9oaXRUZXN0RWxlbWVudHM6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG8scj10aGlzLmRpYWdyYW0sYT10aGlzLl9oaXRUZXN0SXRlbXMoci5zaGFwZXMsdCksaD10aGlzLl9oaXRUZXN0SXRlbXMoci5jb25uZWN0aW9ucyx0KTtyZXR1cm4gdGhpcy5hY3RpdmVUb29sJiZcIkNvbm5lY3Rpb25Ub29sXCI9PXRoaXMuYWN0aXZlVG9vbC50eXBlfHwhYXx8IWh8fHMoYSx0KXx8KGk9ci5tYWluTGF5ZXIsbj1ldChhLnZpc3VhbCxpLmNoaWxkcmVuKSxvPWV0KGgudmlzdWFsLGkuY2hpbGRyZW4pLGU9bj5vP2E6aCksZXx8YXx8aH0sX2hpdFRlc3RJdGVtczpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbztmb3IoaT10Lmxlbmd0aC0xO2k+PTA7aS0tKWlmKG49dFtpXSxvPW4uX2hpdFRlc3QoZSkpcmV0dXJuIG99fSksST1VLkNsYXNzLmV4dGVuZCh7aW5pdDpmdW5jdGlvbigpe319KSxQPUkuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7SS5mbi5pbml0LmNhbGwoZSksdGhpcy5jb25uZWN0aW9uPXR9LGhpdFRlc3Q6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRCb3VuZHMoKS5pbmZsYXRlKG90KTtyZXR1cm4hIWUuY29udGFpbnModCkmJkguR2VvbWV0cnkuZGlzdGFuY2VUb1BvbHlsaW5lKHQsdGhpcy5jb25uZWN0aW9uLmFsbFBvaW50cygpKTxvdH0sZ2V0Qm91bmRzOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLmNvbm5lY3Rpb24uYWxsUG9pbnRzKCksaT1lWzBdLG49ZVtlLmxlbmd0aC0xXSxvPU1hdGgubWF4KGkueCxuLngpLHM9TWF0aC5taW4oaS54LG4ueCkscj1NYXRoLm1pbihpLnksbi55KSxhPU1hdGgubWF4KGkueSxuLnkpO2Zvcih0PTE7dDxlLmxlbmd0aC0xOysrdClvPU1hdGgubWF4KG8sZVt0XS54KSxzPU1hdGgubWluKHMsZVt0XS54KSxyPU1hdGgubWluKHIsZVt0XS55KSxhPU1hdGgubWF4KGEsZVt0XS55KTtyZXR1cm4gbmV3IHEocyxyLG8tcyxhLXIpfX0pLEw9UC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztQLmZuLmluaXQuY2FsbChlKSx0aGlzLmNvbm5lY3Rpb249dH0scm91dGU6ZnVuY3Rpb24oKXt9fSksRT1QLmV4dGVuZCh7U0FNRV9TSURFX0RJU1RBTkNFX1JBVElPOjUsaW5pdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzO1AuZm4uaW5pdC5jYWxsKGUpLHRoaXMuY29ubmVjdGlvbj10fSxyb3V0ZVBvaW50czpmdW5jdGlvbih0LGUsaSxuKXt2YXIgbztyZXR1cm4gbz1pJiZuP3RoaXMuX2Nvbm5lY3RvclBvaW50cyh0LGUsaSxuKTp0aGlzLl9mbG9hdGluZ1BvaW50cyh0LGUsaSl9LHJvdXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb25uZWN0aW9uLl9yZXNvbHZlZFNvdXJjZUNvbm5lY3RvcixlPXRoaXMuY29ubmVjdGlvbi5fcmVzb2x2ZWRUYXJnZXRDb25uZWN0b3IsaT10aGlzLmNvbm5lY3Rpb24uc291cmNlUG9pbnQoKSxuPXRoaXMuY29ubmVjdGlvbi50YXJnZXRQb2ludCgpLG89dGhpcy5yb3V0ZVBvaW50cyhpLG4sdCxlKTt0aGlzLmNvbm5lY3Rpb24ucG9pbnRzKG8pfSxfY29ubmVjdG9yU2lkZXM6W3tuYW1lOlwiVG9wXCIsYXhpczpcInlcIixib3VuZHNQb2ludDpcInRvcExlZnRcIixzZWNvbmRhcnlTaWduOjF9LHtuYW1lOlwiTGVmdFwiLGF4aXM6XCJ4XCIsYm91bmRzUG9pbnQ6XCJ0b3BMZWZ0XCIsc2Vjb25kYXJ5U2lnbjoxfSx7bmFtZTpcIkJvdHRvbVwiLGF4aXM6XCJ5XCIsYm91bmRzUG9pbnQ6XCJib3R0b21SaWdodFwiLHNlY29uZGFyeVNpZ246LTF9LHtuYW1lOlwiUmlnaHRcIixheGlzOlwieFwiLGJvdW5kc1BvaW50OlwiYm90dG9tUmlnaHRcIixzZWNvbmRhcnlTaWduOi0xfV0sX2Nvbm5lY3RvclNpZGU6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scyxyLGE9dC5wb3NpdGlvbigpLGg9dC5zaGFwZS5ib3VuZHMoUHQpLGM9e3RvcExlZnQ6aC50b3BMZWZ0KCksYm90dG9tUmlnaHQ6aC5ib3R0b21SaWdodCgpfSxkPXRoaXMuX2Nvbm5lY3RvclNpZGVzLGw9VS51dGlsLk1BWF9OVU07Zm9yKHI9MDtyPGQubGVuZ3RoO3IrKylzPWRbcl0sbz1zLmF4aXMsaT1NYXRoLnJvdW5kKE1hdGguYWJzKGFbb10tY1tzLmJvdW5kc1BvaW50XVtvXSkpLGk8bD8obD1pLG49cyk6aT09PWwmJihhW29dLWVbb10pKnMuc2Vjb25kYXJ5U2lnbj4oYVtuLmF4aXNdLWVbbi5heGlzXSkqbi5zZWNvbmRhcnlTaWduJiYobj1zKTtyZXR1cm4gbi5uYW1lfSxfc2FtZVNpZGVEaXN0YW5jZTpmdW5jdGlvbih0KXt2YXIgZT10LnNoYXBlLmJvdW5kcyhQdCk7cmV0dXJuIE1hdGgubWluKGUud2lkdGgsZS5oZWlnaHQpL3RoaXMuU0FNRV9TSURFX0RJU1RBTkNFX1JBVElPfSxfY29ubmVjdG9yUG9pbnRzOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBvLHMscj10aGlzLl9jb25uZWN0b3JTaWRlKGksZSksYT10aGlzLl9jb25uZWN0b3JTaWRlKG4sdCksaD1lLngtdC54LGM9ZS55LXQueSxkPXRoaXMuX3NhbWVTaWRlRGlzdGFuY2UoaSksbD1bXTtyZXR1cm4gcj09PXJ0fHxyPT1jdD9hPT1ydHx8YT09Y3Q/cj09YT8ocz1yPT1ydD9NYXRoLm1pbih0LnksZS55KS1kOk1hdGgubWF4KHQueSxlLnkpK2QsbD1bbmV3IGoodC54LHMpLG5ldyBqKGUueCxzKV0pOmw9W25ldyBqKHQueCx0LnkrYy8yKSxuZXcgaihlLngsdC55K2MvMildOmw9W25ldyBqKHQueCxlLnkpXTphPT1odHx8YT09YXQ/cj09YT8obz1yPT1odD9NYXRoLm1pbih0LngsZS54KS1kOk1hdGgubWF4KHQueCxlLngpK2QsbD1bbmV3IGoobyx0LnkpLG5ldyBqKG8sZS55KV0pOmw9W25ldyBqKHQueCtoLzIsdC55KSxuZXcgaih0LngraC8yLHQueStjKV06bD1bbmV3IGooZS54LHQueSldLGx9LF9mbG9hdGluZ1BvaW50czpmdW5jdGlvbih0LGUsaSl7dmFyIG4sbyxzLHI9aT90aGlzLl9jb25uZWN0b3JTaWRlKGksZSk6bnVsbCxhPXRoaXMuX3N0YXJ0SG9yaXpvbnRhbCh0LGUsciksaD1bdCx0LGUsZV0sYz1lLngtdC54LGQ9ZS55LXQueSxsPWgubGVuZ3RoO2ZvcihzPTE7czxsLTE7KytzKWE/cyUyIT09MD8obj1jLyhsLzIpLG89MCk6KG49MCxvPWQvKChsLTEpLzIpKTpzJTIhPT0wPyhuPTAsbz1kLyhsLzIpKToobj1jLygobC0xKS8yKSxvPTApLGhbc109bmV3IGooaFtzLTFdLngrbixoW3MtMV0ueStvKTtyZXR1cm4gcy0tLGhbbC0yXT1hJiZzJTIhPT0wfHwhYSYmcyUyPT09MD9uZXcgaihoW2wtMV0ueCxoW2wtMl0ueSk6bmV3IGooaFtsLTJdLngsaFtsLTFdLnkpLFtoWzFdLGhbMl1dfSxfc3RhcnRIb3Jpem9udGFsOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbjtyZXR1cm4gbj1udWxsIT09aSYmKGk9PT1hdHx8aT09PWh0KXx8TWF0aC5hYnModC54LWUueCk+TWF0aC5hYnModC55LWUueSl9fSksej1GLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7aS5kaWFncmFtPXQsaS5vcHRpb25zPUooe30saS5vcHRpb25zLGUpLGkudmlzdWFsPW5ldyBHLGkuZGlhZ3JhbS5fYWRvcm5lcnMucHVzaChpKX0scmVmcmVzaDpmdW5jdGlvbigpe319KSxCPXouZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dmFyIGksbixvLHM9dGhpcztzLmNvbm5lY3Rpb249dCxpPXMuY29ubmVjdGlvbi5kaWFncmFtLHMuX3RzPWkudG9vbFNlcnZpY2Usei5mbi5pbml0LmNhbGwocyxpLGUpLG49cy5jb25uZWN0aW9uLnNvdXJjZVBvaW50KCksbz1zLmNvbm5lY3Rpb24udGFyZ2V0UG9pbnQoKSxzLnNwVmlzdWFsPW5ldyBZKEoocy5vcHRpb25zLmhhbmRsZXMse2NlbnRlcjpufSkpLHMuZXBWaXN1YWw9bmV3IFkoSihzLm9wdGlvbnMuaGFuZGxlcyx7Y2VudGVyOm99KSkscy52aXN1YWwuYXBwZW5kKHMuc3BWaXN1YWwpLHMudmlzdWFsLmFwcGVuZChzLmVwVmlzdWFsKX0sb3B0aW9uczp7aGFuZGxlczp7fX0sX2dldEN1cnNvcjpmdW5jdGlvbigpe3JldHVybiBudC5tb3ZlfSxzdGFydDpmdW5jdGlvbih0KXtzd2l0Y2godGhpcy5oYW5kbGU9dGhpcy5faGl0VGVzdCh0KSx0aGlzLnN0YXJ0UG9pbnQ9dCx0aGlzLl9pbml0aWFsU291cmNlPXRoaXMuY29ubmVjdGlvbi5zb3VyY2UoKSx0aGlzLl9pbml0aWFsVGFyZ2V0PXRoaXMuY29ubmVjdGlvbi50YXJnZXQoKSx0aGlzLmhhbmRsZSl7Y2FzZS0xOnRoaXMuY29ubmVjdGlvbi50YXJnZXRDb25uZWN0b3ImJnRoaXMuX3RzLl9jb25uZWN0aW9uTWFuaXB1bGF0aW9uKHRoaXMuY29ubmVjdGlvbix0aGlzLmNvbm5lY3Rpb24udGFyZ2V0Q29ubmVjdG9yLnNoYXBlKTticmVhaztjYXNlIDE6dGhpcy5jb25uZWN0aW9uLnNvdXJjZUNvbm5lY3RvciYmdGhpcy5fdHMuX2Nvbm5lY3Rpb25NYW5pcHVsYXRpb24odGhpcy5jb25uZWN0aW9uLHRoaXMuY29ubmVjdGlvbi5zb3VyY2VDb25uZWN0b3Iuc2hhcGUpfX0sbW92ZTpmdW5jdGlvbih0LGUpe3N3aXRjaCh0KXtjYXNlLTE6dGhpcy5jb25uZWN0aW9uLnNvdXJjZShlKTticmVhaztjYXNlIDE6dGhpcy5jb25uZWN0aW9uLnRhcmdldChlKTticmVhaztkZWZhdWx0OnZhciBpPWUubWludXModGhpcy5zdGFydFBvaW50KTt0aGlzLnN0YXJ0UG9pbnQ9ZSx0aGlzLmNvbm5lY3Rpb24uc291cmNlQ29ubmVjdG9yfHx0aGlzLmNvbm5lY3Rpb24uc291cmNlKHRoaXMuY29ubmVjdGlvbi5zb3VyY2VQb2ludCgpLnBsdXMoaSkpLHRoaXMuY29ubmVjdGlvbi50YXJnZXRDb25uZWN0b3J8fHRoaXMuY29ubmVjdGlvbi50YXJnZXQodGhpcy5jb25uZWN0aW9uLnRhcmdldFBvaW50KCkucGx1cyhpKSl9cmV0dXJuIHRoaXMucmVmcmVzaCgpLCEwfSxzdG9wOmZ1bmN0aW9uKHQpe3ZhciBpLG49dGhpcy5kaWFncmFtLnRvb2xTZXJ2aWNlLG89bi5ob3ZlcmVkSXRlbTtyZXR1cm4gaT1uLl9ob3ZlcmVkQ29ubmVjdG9yP24uX2hvdmVyZWRDb25uZWN0b3IuX2M6byYmbyBpbnN0YW5jZW9mIEguU2hhcGU/by5nZXRDb25uZWN0b3Ioc3QpfHxvLmdldENvbm5lY3Rvcih0KTp0LHRoaXMuaGFuZGxlPT09LTE/dGhpcy5jb25uZWN0aW9uLnNvdXJjZShpKToxPT09dGhpcy5oYW5kbGUmJnRoaXMuY29ubmVjdGlvbi50YXJnZXQoaSksdGhpcy5oYW5kbGU9ZSx0aGlzLl90cy5fY29ubmVjdGlvbk1hbmlwdWxhdGlvbigpLG5ldyBsKHRoaXMuY29ubmVjdGlvbix0aGlzLl9pbml0aWFsU291cmNlLHRoaXMuX2luaXRpYWxUYXJnZXQpfSxfaGl0VGVzdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmNvbm5lY3Rpb24uc291cmNlUG9pbnQoKSxpPXRoaXMuY29ubmVjdGlvbi50YXJnZXRQb2ludCgpLG49dGhpcy5vcHRpb25zLmhhbmRsZXMud2lkdGgvMitvdCxvPXRoaXMub3B0aW9ucy5oYW5kbGVzLmhlaWdodC8yK290LHM9ZS5kaXN0YW5jZVRvKHQpLHI9aS5kaXN0YW5jZVRvKHQpLGE9bmV3IHEoZS54LGUueSkuaW5mbGF0ZShuLG8pLmNvbnRhaW5zKHQpLGg9bmV3IHEoaS54LGkueSkuaW5mbGF0ZShuLG8pLmNvbnRhaW5zKHQpLGM9MDtyZXR1cm4gYSYmKCFofHxzPHIpP2M9LTE6aCYmKCFhfHxyPHMpJiYoYz0xKSxjfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5zcFZpc3VhbC5yZWRyYXcoe2NlbnRlcjp0aGlzLmRpYWdyYW0ubW9kZWxUb0xheWVyKHRoaXMuY29ubmVjdGlvbi5zb3VyY2VQb2ludCgpKX0pLHRoaXMuZXBWaXN1YWwucmVkcmF3KHtjZW50ZXI6dGhpcy5kaWFncmFtLm1vZGVsVG9MYXllcih0aGlzLmNvbm5lY3Rpb24udGFyZ2V0UG9pbnQoKSl9KX19KSxOPXouZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpczt6LmZuLmluaXQuY2FsbChpLHQsZSksaS5fcmVmcmVzaEhhbmRsZXI9ZnVuY3Rpb24odCl7dC5pdGVtPT1pLnNoYXBlJiZpLnJlZnJlc2goKX19LHNob3c6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG89dGhpcztmb3Ioby5fdmlzaWJsZT0hMCxvLnNoYXBlPXQsby5kaWFncmFtLmJpbmQobXQsby5fcmVmcmVzaEhhbmRsZXIpLGU9dC5jb25uZWN0b3JzLmxlbmd0aCxvLmNvbm5lY3RvcnM9W10sby5fY2xlYXJWaXN1YWwoKSxpPTA7aTxlO2krKyluPW5ldyBPKHQuY29ubmVjdG9yc1tpXSksby5jb25uZWN0b3JzLnB1c2gobiksby52aXN1YWwuYXBwZW5kKG4udmlzdWFsKTtvLnZpc3VhbC52aXNpYmxlKCEwKSxvLnJlZnJlc2goKX0sX2NsZWFyVmlzdWFsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0LmRpYWdyYW0uX2NhY2hlZFRvdWNoVGFyZ2V0P3QuX2tlZXBDYWNoZWRUb3VjaFRhcmdldCgpOnQudmlzdWFsLmNsZWFyKCl9LF9rZWVwQ2FjaGVkVG91Y2hUYXJnZXQ6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMsaT1lLnZpc3VhbC5jaGlsZHJlbixuPWkubGVuZ3RoLG89ZXQoZS5kaWFncmFtLl9jYWNoZWRUb3VjaFRhcmdldCxpKTtmb3IodD1uLTE7dD49MDt0LS0pdCE9byYmZS52aXN1YWwucmVtb3ZlKGlbdF0pfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0LmRpYWdyYW0udW5iaW5kKG10LHQuX3JlZnJlc2hIYW5kbGVyKSx0LnNoYXBlPWUsdC5fdmlzaWJsZT1lLHQudmlzdWFsLnZpc2libGUoITEpfSxfaGl0VGVzdDpmdW5jdGlvbih0KXt2YXIgZSxpO2ZvcihpPTA7aTx0aGlzLmNvbm5lY3RvcnMubGVuZ3RoO2krKylpZihlPXRoaXMuY29ubmVjdG9yc1tpXSxlLl9oaXRUZXN0KHQpKXtlLl9ob3ZlcighMCksdGhpcy5kaWFncmFtLnRvb2xTZXJ2aWNlLl9ob3ZlcmVkQ29ubmVjdG9yPWU7YnJlYWt9fSxyZWZyZXNoOmZ1bmN0aW9uKCl7aWYodGhpcy5zaGFwZSl7dmFyIGU9dGhpcy5zaGFwZS5ib3VuZHMoKTtlPXRoaXMuZGlhZ3JhbS5tb2RlbFRvTGF5ZXIoZSksdGhpcy52aXN1YWwucG9zaXRpb24oZS50b3BMZWZ0KCkpLHQuZWFjaCh0aGlzLmNvbm5lY3RvcnMsZnVuY3Rpb24oKXt0aGlzLnJlZnJlc2goKX0pfX19KSxSPXouZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpczt6LmZuLmluaXQuY2FsbChpLHQsZSksaS5fbWFuaXB1bGF0aW5nPSExLGkubWFwPVtdLGkuc2hhcGVzPVtdLGkuX2luaXRTZWxlY3Rpb24oKSxpLl9jcmVhdGVIYW5kbGVzKCksaS5yZWRyYXcoKSxpLmRpYWdyYW0uYmluZChcInNlbGVjdFwiLGZ1bmN0aW9uKHQpe2kuX2luaXRpYWxpemUodC5zZWxlY3RlZCl9KSxpLl9yZWZyZXNoSGFuZGxlcj1mdW5jdGlvbigpe2kuX2ludGVybmFsQ2hhbmdlfHwoaS5yZWZyZXNoQm91bmRzKCksaS5yZWZyZXNoKCkpfSxpLl9yb3RhdGVkSGFuZGxlcj1mdW5jdGlvbigpezE9PWkuc2hhcGVzLmxlbmd0aCYmKGkuX2FuZ2xlPWkuc2hhcGVzWzBdLnJvdGF0ZSgpLmFuZ2xlKSxpLl9yZWZyZXNoSGFuZGxlcigpfSxpLmRpYWdyYW0uYmluZChtdCxpLl9yZWZyZXNoSGFuZGxlcikuYmluZChndCxpLl9yb3RhdGVkSGFuZGxlciksaS5yZWZyZXNoQm91bmRzKCksaS5yZWZyZXNoKCl9LG9wdGlvbnM6e2hhbmRsZXM6e2ZpbGw6e2NvbG9yOlwiI2ZmZlwifSxzdHJva2U6e2NvbG9yOlwiIzI4MjgyOFwifSxoZWlnaHQ6Nyx3aWR0aDo3LGhvdmVyOntmaWxsOntjb2xvcjpcIiMyODI4MjhcIn0sc3Ryb2tlOntjb2xvcjpcIiMyODI4MjhcIn19fSxzZWxlY3RhYmxlOntzdHJva2U6e2NvbG9yOlwiIzc3ODg5OVwiLHdpZHRoOjEsZGFzaFR5cGU6XCJkYXNoXCJ9LGZpbGw6e2NvbG9yOkR0fX0sb2Zmc2V0OjEwfSxfaW5pdFNlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LmRpYWdyYW0saT1lLm9wdGlvbnMuc2VsZWN0YWJsZSxuPUooe30sdC5vcHRpb25zLnNlbGVjdGFibGUsaSk7dC5yZWN0PW5ldyBLKG4pLHQudmlzdWFsLmFwcGVuZCh0LnJlY3QpfSxfcmVzaXphYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5lZGl0YWJsZSYmdGhpcy5vcHRpb25zLmVkaXRhYmxlLnJlc2l6ZSE9PSExfSxfaGFuZGxlT3B0aW9uczpmdW5jdGlvbigpe3JldHVybih0aGlzLm9wdGlvbnMuZWRpdGFibGUucmVzaXplfHx7fSkuaGFuZGxlc3x8dGhpcy5vcHRpb25zLmhhbmRsZXN9LF9jcmVhdGVIYW5kbGVzOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG47aWYodGhpcy5fcmVzaXphYmxlKCkpZm9yKHQ9dGhpcy5faGFuZGxlT3B0aW9ucygpLG49LTE7bjw9MTtuKyspZm9yKGk9LTE7aTw9MTtpKyspMD09PW4mJjA9PT1pfHwoZT1uZXcgSyh0KSxlLmRyYXdpbmdFbGVtZW50Ll9ob3Zlcj1pdCh0aGlzLl9ob3Zlcix0aGlzKSx0aGlzLm1hcC5wdXNoKHt4Om4seTppLHZpc3VhbDplfSksdGhpcy52aXN1YWwuYXBwZW5kKGUpKX0sYm91bmRzOmZ1bmN0aW9uKHQpe3JldHVybiB0Pyh0aGlzLl9pbm5lckJvdW5kcz10LmNsb25lKCksdGhpcy5fYm91bmRzPXRoaXMuZGlhZ3JhbS5tb2RlbFRvTGF5ZXIodCkuaW5mbGF0ZSh0aGlzLm9wdGlvbnMub2Zmc2V0LHRoaXMub3B0aW9ucy5vZmZzZXQpLGUpOnRoaXMuX2JvdW5kc30sX2hpdFRlc3Q6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG8scz10aGlzLmRpYWdyYW0ubW9kZWxUb0xheWVyKHQpLHI9dGhpcy5tYXAubGVuZ3RoO2lmKHRoaXMuX2FuZ2xlJiYocz1zLmNsb25lKCkucm90YXRlKHRoaXMuX2JvdW5kcy5jZW50ZXIoKSx0aGlzLl9hbmdsZSkpLHRoaXMuX3Jlc2l6YWJsZSgpKWZvcihlPTA7ZTxyO2UrKylpZihvPXRoaXMubWFwW2VdLGk9bmV3IGooby54LG8ueSksbj10aGlzLl9nZXRIYW5kbGVCb3VuZHMoaSksbi5vZmZzZXQodGhpcy5fYm91bmRzLngsdGhpcy5fYm91bmRzLnkpLG4uY29udGFpbnMocykpcmV0dXJuIGk7aWYodGhpcy5fYm91bmRzLmNvbnRhaW5zKHMpKXJldHVybiBuZXcgaigwLDApfSxfZ2V0SGFuZGxlQm91bmRzOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX3Jlc2l6YWJsZSgpKXt2YXIgZT10aGlzLl9oYW5kbGVPcHRpb25zKCksaT1lLndpZHRoLG49ZS5oZWlnaHQsbz1uZXcgcSgwLDAsaSxuKTtyZXR1cm4gdC54PDA/by54PS1pLzI6MD09PXQueD9vLng9TWF0aC5mbG9vcih0aGlzLl9ib3VuZHMud2lkdGgvMiktaS8yOnQueD4wJiYoby54PXRoaXMuX2JvdW5kcy53aWR0aCsxLWkvMiksdC55PDA/by55PS1uLzI6MD09PXQueT9vLnk9TWF0aC5mbG9vcih0aGlzLl9ib3VuZHMuaGVpZ2h0LzIpLW4vMjp0Lnk+MCYmKG8ueT10aGlzLl9ib3VuZHMuaGVpZ2h0KzEtbi8yKSxvfX0sX2dldEN1cnNvcjpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMuX2hpdFRlc3QodCk7aWYoaSYmaS54Pj0tMSYmaS54PD0xJiZpLnk+PS0xJiZpLnk8PTEmJnRoaXMuX3Jlc2l6YWJsZSgpKXtpZihlPXRoaXMuX2FuZ2xlLGUmJihlPTM2MC1lLGkucm90YXRlKG5ldyBqKDAsMCksZSksaT1uZXcgaihNYXRoLnJvdW5kKGkueCksTWF0aC5yb3VuZChpLnkpKSksaS54PT0tMSYmaS55PT0tMSlyZXR1cm5cIm53LXJlc2l6ZVwiO2lmKDE9PWkueCYmMT09aS55KXJldHVyblwic2UtcmVzaXplXCI7aWYoaS54PT0tMSYmMT09aS55KXJldHVyblwic3ctcmVzaXplXCI7aWYoMT09aS54JiZpLnk9PS0xKXJldHVyblwibmUtcmVzaXplXCI7aWYoMD09PWkueCYmaS55PT0tMSlyZXR1cm5cIm4tcmVzaXplXCI7aWYoMD09PWkueCYmMT09aS55KXJldHVyblwicy1yZXNpemVcIjtpZigxPT1pLngmJjA9PT1pLnkpcmV0dXJuXCJlLXJlc2l6ZVwiO2lmKGkueD09LTEmJjA9PT1pLnkpcmV0dXJuXCJ3LXJlc2l6ZVwifXJldHVybiB0aGlzLl9tYW5pcHVsYXRpbmc/bnQubW92ZTpudC5zZWxlY3R9LF9pbml0aWFsaXplOmZ1bmN0aW9uKCl7dmFyIHQsZSxpPXRoaXMsbj1pLmRpYWdyYW0uc2VsZWN0KCk7Zm9yKGkuc2hhcGVzPVtdLHQ9MDt0PG4ubGVuZ3RoO3QrKyllPW5bdF0sZSBpbnN0YW5jZW9mIEguU2hhcGUmJihpLnNoYXBlcy5wdXNoKGUpLGUuX3JvdGF0aW9uT2Zmc2V0PW5ldyBqKTtpLl9hbmdsZT0xPT1pLnNoYXBlcy5sZW5ndGg/aS5zaGFwZXNbMF0ucm90YXRlKCkuYW5nbGU6MCxpLl9zdGFydEFuZ2xlPWkuX2FuZ2xlLGkuX3JvdGF0ZXMoKSxpLl9wb3NpdGlvbnMoKSxpLnJlZnJlc2hCb3VuZHMoKSxpLnJlZnJlc2goKSxpLnJlZHJhdygpfSxfcm90YXRlczpmdW5jdGlvbigpe3ZhciB0LGUsaT10aGlzO2ZvcihpLmluaXRpYWxSb3RhdGVzPVtdLHQ9MDt0PGkuc2hhcGVzLmxlbmd0aDt0KyspZT1pLnNoYXBlc1t0XSxpLmluaXRpYWxSb3RhdGVzLnB1c2goZS5yb3RhdGUoKS5hbmdsZSl9LF9wb3NpdGlvbnM6ZnVuY3Rpb24oKXt2YXIgdCxlLGk9dGhpcztmb3IoaS5pbml0aWFsU3RhdGVzPVtdLHQ9MDt0PGkuc2hhcGVzLmxlbmd0aDt0KyspZT1pLnNoYXBlc1t0XSxpLmluaXRpYWxTdGF0ZXMucHVzaChlLmJvdW5kcygpKX0sX2hvdmVyOmZ1bmN0aW9uKHQsZSl7aWYodGhpcy5fcmVzaXphYmxlKCkpe3ZhciBpPXRoaXMuX2hhbmRsZU9wdGlvbnMoKSxuPWkuaG92ZXIsbz1pLnN0cm9rZSxzPWkuZmlsbDt0JiZXLmlzRGVmaW5lZChuLnN0cm9rZSkmJihvPUooe30sbyxuLnN0cm9rZSkpLHQmJlcuaXNEZWZpbmVkKG4uZmlsbCkmJihzPW4uZmlsbCksZS5zdHJva2Uoby5jb2xvcixvLndpZHRoLG8ub3BhY2l0eSksZS5maWxsKHMuY29sb3Iscy5vcGFjaXR5KX19LHN0YXJ0OmZ1bmN0aW9uKHQpe3ZhciBlLGk7Zm9yKHRoaXMuX3NwPXQsdGhpcy5fY3A9dCx0aGlzLl9scD10LHRoaXMuX21hbmlwdWxhdGluZz0hMCx0aGlzLl9pbnRlcm5hbENoYW5nZT0hMCx0aGlzLnNoYXBlU3RhdGVzPVtdLGU9MDtlPHRoaXMuc2hhcGVzLmxlbmd0aDtlKyspaT10aGlzLnNoYXBlc1tlXSx0aGlzLnNoYXBlU3RhdGVzLnB1c2goaS5ib3VuZHMoKSl9LHJlZHJhdzpmdW5jdGlvbigpe3ZhciB0LGUsaT10aGlzLl9yZXNpemFibGUoKTtmb3IodD0wO3Q8dGhpcy5tYXAubGVuZ3RoO3QrKyllPXRoaXMubWFwW3RdLGUudmlzdWFsLnZpc2libGUoaSl9LGFuZ2xlOmZ1bmN0aW9uKHQpe3JldHVybiB0dCh0KSYmKHRoaXMuX2FuZ2xlPXQpLHRoaXMuX2FuZ2xlfSxyb3RhdGU6ZnVuY3Rpb24oKXt2YXIgdCxlLGk9dGhpcy5faW5uZXJCb3VuZHMuY2VudGVyKCksbj10aGlzLmFuZ2xlKCk7Zm9yKHRoaXMuX2ludGVybmFsQ2hhbmdlPSEwLHQ9MDt0PHRoaXMuc2hhcGVzLmxlbmd0aDt0KyspZT10aGlzLnNoYXBlc1t0XSxuPShuK3RoaXMuaW5pdGlhbFJvdGF0ZXNbdF0tdGhpcy5fc3RhcnRBbmdsZSklMzYwLGUucm90YXRlKG4saSk7dGhpcy5yZWZyZXNoKCl9LG1vdmU6ZnVuY3Rpb24odCxpKXt2YXIgcyxyLGEsaCxjLGQsbCx1LGYscCxnLG0sXyx2LHk9bmV3IGosdz1uZXcgaix4PTA7aWYodC55PT09LTImJnQueD09PS0xKXtmb3IoaD10aGlzLl9pbm5lckJvdW5kcy5jZW50ZXIoKSx0aGlzLl9hbmdsZT10aGlzLl90cnVuY2F0ZUFuZ2xlKFcuZmluZEFuZ2xlKGgsaSkpLGQ9MDtkPHRoaXMuc2hhcGVzLmxlbmd0aDtkKyspYz10aGlzLnNoYXBlc1tkXSxsPSh0aGlzLl9hbmdsZSt0aGlzLmluaXRpYWxSb3RhdGVzW2RdLXRoaXMuX3N0YXJ0QW5nbGUpJTM2MCxjLnJvdGF0ZShsLGgpLGMuaGFzT3duUHJvcGVydHkoXCJsYXlvdXRcIikmJmMubGF5b3V0KGMpLHRoaXMuX3JvdGF0aW5nPSEwO3RoaXMucmVmcmVzaCgpfWVsc2V7aWYodGhpcy5zaG91bGRTbmFwKCkpe2lmKG09dGhpcy5fdHJ1bmNhdGVEaXN0YW5jZShpLm1pbnVzKHRoaXMuX2xwKSksMD09PW0ueCYmMD09PW0ueSlyZXR1cm4gdGhpcy5fY3A9aSxlO3M9bSx0aGlzLl9scD1uZXcgaih0aGlzLl9scC54K20ueCx0aGlzLl9scC55K20ueSl9ZWxzZSBzPWkubWludXModGhpcy5fY3ApO2Zvcih0aGlzLmlzRHJhZ0hhbmRsZSh0KT8odz15PXMscj0hMCk6KHRoaXMuX2FuZ2xlJiZzLnJvdGF0ZShuZXcgaigwLDApLHRoaXMuX2FuZ2xlKSx0Lng9PS0xP3kueD1zLng6MT09dC54JiYody54PXMueCksdC55PT0tMT95Lnk9cy55OjE9PXQueSYmKHcueT1zLnkpKSxyfHwoZj1uKHQsdGhpcy5faW5uZXJCb3VuZHMpLHA9KHRoaXMuX2lubmVyQm91bmRzLndpZHRoK3MueCp0LngpL3RoaXMuX2lubmVyQm91bmRzLndpZHRoLGc9KHRoaXMuX2lubmVyQm91bmRzLmhlaWdodCtzLnkqdC55KS90aGlzLl9pbm5lckJvdW5kcy5oZWlnaHQpLGQ9MDtkPHRoaXMuc2hhcGVzLmxlbmd0aDtkKyspe2lmKGM9dGhpcy5zaGFwZXNbZF0sYT1jLmJvdW5kcygpLHIpe2lmKCFvKGMpKWNvbnRpbnVlO3U9dGhpcy5fZGlzcGxhY2VCb3VuZHMoYSx5LHcscil9ZWxzZSB1PWEuY2xvbmUoKSx1LnNjYWxlKHAsZyxmLHRoaXMuX2lubmVyQm91bmRzLmNlbnRlcigpLGMucm90YXRlKCkuYW5nbGUpLF89dS5jZW50ZXIoKSxfLnJvdGF0ZShhLmNlbnRlcigpLC10aGlzLl9hbmdsZSksdT1uZXcgcShfLngtdS53aWR0aC8yLF8ueS11LmhlaWdodC8yLHUud2lkdGgsdS5oZWlnaHQpO3Uud2lkdGg+PWMub3B0aW9ucy5taW5XaWR0aCYmdS5oZWlnaHQ+PWMub3B0aW9ucy5taW5IZWlnaHQmJih2PWEsYy5ib3VuZHModSksYy5oYXNPd25Qcm9wZXJ0eShcImxheW91dFwiKSYmYy5sYXlvdXQoYyx2LHUpLHYud2lkdGg9PT11LndpZHRoJiZ2LmhlaWdodD09PXUuaGVpZ2h0fHxjLnJvdGF0ZShjLnJvdGF0ZSgpLmFuZ2xlKSx4Kz0xKX14JiYoeD09ZD8odT10aGlzLl9kaXNwbGFjZUJvdW5kcyh0aGlzLl9pbm5lckJvdW5kcyx5LHcsciksdGhpcy5ib3VuZHModSkpOnRoaXMucmVmcmVzaEJvdW5kcygpLHRoaXMucmVmcmVzaCgpKSx0aGlzLl9wb3NpdGlvbnMoKX10aGlzLl9jcD1pfSxpc0RyYWdIYW5kbGU6ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10LngmJjA9PT10Lnl9LGNhbmNlbDpmdW5jdGlvbigpe3ZhciB0LGk9dGhpcy5zaGFwZXMsbj10aGlzLnNoYXBlU3RhdGVzO2Zvcih0PTA7dDxpLmxlbmd0aDt0KyspaVt0XS5ib3VuZHMoblt0XSk7dGhpcy5yZWZyZXNoQm91bmRzKCksdGhpcy5yZWZyZXNoKCksdGhpcy5fbWFuaXB1bGF0aW5nPWUsdGhpcy5faW50ZXJuYWxDaGFuZ2U9ZSx0aGlzLl9yb3RhdGluZz1lfSxfdHJ1bmNhdGVQb3NpdGlvblRvR3VpZGVzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRpYWdyYW0ucnVsZXI/dGhpcy5kaWFncmFtLnJ1bGVyLnRydW5jYXRlUG9zaXRpb25Ub0d1aWRlcyh0KTp0fSxfdHJ1bmNhdGVTaXplVG9HdWlkZXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGlhZ3JhbS5ydWxlcj90aGlzLmRpYWdyYW0ucnVsZXIudHJ1bmNhdGVTaXplVG9HdWlkZXModCk6dH0sX3RydW5jYXRlQW5nbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zbmFwT3B0aW9ucygpLGk9TWF0aC5tYXgoZS5hbmdsZXx8bHQsdnQpO3JldHVybiBlP01hdGguZmxvb3IodCUzNjAvaSkqaTp0JTM2MH0sX3RydW5jYXRlRGlzdGFuY2U6ZnVuY3Rpb24odCl7dmFyIGUsaTtyZXR1cm4gdCBpbnN0YW5jZW9mIEguUG9pbnQ/bmV3IEguUG9pbnQodGhpcy5fdHJ1bmNhdGVEaXN0YW5jZSh0LngpLHRoaXMuX3RydW5jYXRlRGlzdGFuY2UodC55KSk6KGU9dGhpcy5zbmFwT3B0aW9ucygpfHx7fSxpPU1hdGgubWF4KGUuc2l6ZXx8ZHQsX3QpLGU/TWF0aC5mbG9vcih0L2kpKmk6dCl9LHNuYXBPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kaWFncmFtLm9wdGlvbnMuZWRpdGFibGUsZT0oKHR8fHt9KS5kcmFnfHx7fSkuc25hcHx8e307cmV0dXJuIGV9LHNob3VsZFNuYXA6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRpYWdyYW0ub3B0aW9ucy5lZGl0YWJsZSxlPSh0fHx7fSkuZHJhZyxpPShlfHx7fSkuc25hcDtyZXR1cm4gdCE9PSExJiZlIT09ITEmJmkhPT0hMX0sX2Rpc3BsYWNlQm91bmRzOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBvLHM9dC50b3BMZWZ0KCkucGx1cyhlKSxyPXQuYm90dG9tUmlnaHQoKS5wbHVzKGkpLGE9cS5mcm9tUG9pbnRzKHMscik7cmV0dXJuIG58fChvPWEuY2VudGVyKCksby5yb3RhdGUodC5jZW50ZXIoKSwtdGhpcy5fYW5nbGUpLGE9bmV3IHEoby54LWEud2lkdGgvMixvLnktYS5oZWlnaHQvMixhLndpZHRoLGEuaGVpZ2h0KSksYX0sc3RvcDpmdW5jdGlvbigpe3ZhciB0LGksbixvO2lmKHRoaXMuX2NwIT10aGlzLl9zcClpZih0aGlzLl9yb3RhdGluZyl0PW5ldyB2KHRoaXMsdGhpcy5zaGFwZXMsdGhpcy5pbml0aWFsUm90YXRlcyksdGhpcy5fcm90YXRpbmc9ITE7ZWxzZSBpZih0aGlzLl9kaWZmU3RhdGVzKCkpe2lmKHRoaXMuZGlhZ3JhbS5ydWxlcilmb3IoaT0wO2k8dGhpcy5zaGFwZXMubGVuZ3RoO2krKyluPXRoaXMuc2hhcGVzW2ldLG89bi5ib3VuZHMoKSxvPXRoaXMuX3RydW5jYXRlU2l6ZVRvR3VpZGVzKHRoaXMuX3RydW5jYXRlUG9zaXRpb25Ub0d1aWRlcyhvKSksbi5ib3VuZHMobyksdGhpcy5yZWZyZXNoQm91bmRzKCksdGhpcy5yZWZyZXNoKCk7Zm9yKGk9MDtpPHRoaXMuc2hhcGVzLmxlbmd0aDtpKyspbj10aGlzLnNoYXBlc1tpXSxuLnVwZGF0ZU1vZGVsKCk7dD1uZXcgcCh0aGlzLnNoYXBlcyx0aGlzLnNoYXBlU3RhdGVzLHRoaXMpLHRoaXMuZGlhZ3JhbS5fc3luY1NoYXBlQ2hhbmdlcygpfXJldHVybiB0aGlzLl9tYW5pcHVsYXRpbmc9ZSx0aGlzLl9pbnRlcm5hbENoYW5nZT1lLHRoaXMuX3JvdGF0aW5nPWUsdH0sX2RpZmZTdGF0ZXM6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuc2hhcGVzLGk9dGhpcy5zaGFwZVN0YXRlcztmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKCFlW3RdLmJvdW5kcygpLmVxdWFscyhpW3RdKSlyZXR1cm4hMDtyZXR1cm4hMX0scmVmcmVzaEJvdW5kczpmdW5jdGlvbigpe3ZhciB0PTE9PXRoaXMuc2hhcGVzLmxlbmd0aD90aGlzLnNoYXBlc1swXS5ib3VuZHMoKS5jbG9uZSgpOnRoaXMuZGlhZ3JhbS5ib3VuZGluZ0JveCh0aGlzLnNoYXBlcywhMCk7dGhpcy5ib3VuZHModCl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgZSxpLG4sbyxzPXRoaXM7dGhpcy5zaGFwZXMubGVuZ3RoPjA/KGk9dGhpcy5ib3VuZHMoKSx0aGlzLnZpc3VhbC52aXNpYmxlKCEwKSx0aGlzLnZpc3VhbC5wb3NpdGlvbihpLnRvcExlZnQoKSksdC5lYWNoKHRoaXMubWFwLGZ1bmN0aW9uKCl7ZT1zLl9nZXRIYW5kbGVCb3VuZHMobmV3IGoodGhpcy54LHRoaXMueSkpLHRoaXMudmlzdWFsLnBvc2l0aW9uKGUudG9wTGVmdCgpKX0pLHRoaXMudmlzdWFsLnBvc2l0aW9uKGkudG9wTGVmdCgpKSxuPW5ldyBqKGkud2lkdGgvMixpLmhlaWdodC8yKSx0aGlzLnZpc3VhbC5yb3RhdGUodGhpcy5fYW5nbGUsbiksdGhpcy5yZWN0LnJlZHJhdyh7d2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9KSx0aGlzLnJvdGF0aW9uVGh1bWImJihvPXRoaXMub3B0aW9ucy5lZGl0YWJsZS5yb3RhdGUudGh1bWIsdGhpcy5fcm90YXRpb25UaHVtYkJvdW5kcz1uZXcgcShpLmNlbnRlcigpLngsaS55K28ueSwwLDApLmluZmxhdGUoby53aWR0aCksdGhpcy5yb3RhdGlvblRodW1iLnJlZHJhdyh7eDppLndpZHRoLzItby53aWR0aC8yfSkpKTp0aGlzLnZpc3VhbC52aXNpYmxlKCExKX19KSxBPUYuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3ZhciBlPXQub3B0aW9ucy5zZWxlY3RhYmxlO3RoaXMub3B0aW9ucz1KKHt9LHRoaXMub3B0aW9ucyxlKSx0aGlzLnZpc3VhbD1uZXcgSyh0aGlzLm9wdGlvbnMpLHRoaXMuZGlhZ3JhbT10fSxvcHRpb25zOntzdHJva2U6e2NvbG9yOlwiIzc3ODg5OVwiLHdpZHRoOjEsZGFzaFR5cGU6XCJkYXNoXCJ9LGZpbGw6e2NvbG9yOkR0fX0sc3RhcnQ6ZnVuY3Rpb24odCl7dGhpcy5fc3A9dGhpcy5fZXA9dCx0aGlzLnJlZnJlc2goKSx0aGlzLmRpYWdyYW0uX2Fkb3JuKHRoaXMsITApfSxlbmQ6ZnVuY3Rpb24oKXt0aGlzLl9zcD10aGlzLl9lcD1lLHRoaXMuZGlhZ3JhbS5fYWRvcm4odGhpcywhMSl9LGJvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gdCYmKHRoaXMuX2JvdW5kcz10KSx0aGlzLl9ib3VuZHN9LG1vdmU6ZnVuY3Rpb24odCl7dGhpcy5fZXA9dCx0aGlzLnJlZnJlc2goKX0scmVmcmVzaDpmdW5jdGlvbigpe2lmKHRoaXMuX3NwKXt2YXIgdD1xLmZyb21Qb2ludHModGhpcy5kaWFncmFtLm1vZGVsVG9MYXllcih0aGlzLl9zcCksdGhpcy5kaWFncmFtLm1vZGVsVG9MYXllcih0aGlzLl9lcCkpO3RoaXMuYm91bmRzKHEuZnJvbVBvaW50cyh0aGlzLl9zcCx0aGlzLl9lcCkpLFxuICAgIHRoaXMudmlzdWFsLnBvc2l0aW9uKHQudG9wTGVmdCgpKSx0aGlzLnZpc3VhbC5yZWRyYXcoe2hlaWdodDp0LmhlaWdodCsxLHdpZHRoOnQud2lkdGgrMX0pfX19KSxPPUYuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz1KKHt9LHQub3B0aW9ucyksdGhpcy5fYz10LHRoaXMudmlzdWFsPW5ldyBZKHRoaXMub3B0aW9ucyksdGhpcy5yZWZyZXNoKCl9LF9ob3ZlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMsaT1lLmhvdmVyLG49ZS5zdHJva2Usbz1lLmZpbGw7dCYmVy5pc0RlZmluZWQoaS5zdHJva2UpJiYobj1KKHt9LG4saS5zdHJva2UpKSx0JiZXLmlzRGVmaW5lZChpLmZpbGwpJiYobz1pLmZpbGwpLHRoaXMudmlzdWFsLnJlZHJhdyh7c3Ryb2tlOm4sZmlsbDpvfSl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jLnNoYXBlLmRpYWdyYW0ubW9kZWxUb1ZpZXcodGhpcy5fYy5wb3NpdGlvbigpKSxlPXQubWludXModGhpcy5fYy5zaGFwZS5ib3VuZHMoXCJ0cmFuc2Zvcm1lZFwiKS50b3BMZWZ0KCkpLGk9bmV3IHEodC54LHQueSwwLDApO2kuaW5mbGF0ZSh0aGlzLm9wdGlvbnMud2lkdGgvMix0aGlzLm9wdGlvbnMuaGVpZ2h0LzIpLHRoaXMuX3Zpc3VhbEJvdW5kcz1pLHRoaXMudmlzdWFsLnJlZHJhdyh7Y2VudGVyOm5ldyBqKGUueCxlLnkpfSl9LF9oaXRUZXN0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2Muc2hhcGUuZGlhZ3JhbS5tb2RlbFRvVmlldyh0KTtyZXR1cm4gdGhpcy5fdmlzdWFsQm91bmRzLmNvbnRhaW5zKGUpfX0pLEooSCx7Q29tcG9zaXRlVW5pdDpjLFRyYW5zZm9ybVVuaXQ6cCxQYW5VbmRvVW5pdDpfLEFkZFNoYXBlVW5pdDptLEFkZENvbm5lY3Rpb25Vbml0OmcsRGVsZXRlU2hhcGVVbml0OmYsRGVsZXRlQ29ubmVjdGlvblVuaXQ6dSxDb25uZWN0aW9uRWRpdEFkb3JuZXI6QixDb25uZWN0aW9uVG9vbDpULENvbm5lY3RvclZpc3VhbDpPLFVuZG9SZWRvU2VydmljZTp4LFJlc2l6aW5nQWRvcm5lcjpSLFNlbGVjdG9yOkEsVG9vbFNlcnZpY2U6RCxDb25uZWN0b3JzQWRvcm5lcjpOLExheW91dFVuZG9Vbml0OmgsQ29ubmVjdGlvbkVkaXRVbml0OmQsVG9Gcm9udFVuaXQ6eSxUb0JhY2tVbml0OncsQ29ubmVjdGlvblJvdXRlckJhc2U6SSxQb2x5bGluZVJvdXRlcjpMLENhc2NhZGluZ1JvdXRlcjpFLFNlbGVjdGlvblRvb2w6ayxTY3JvbGxlclRvb2w6QyxQb2ludGVyVG9vbDpTLENvbm5lY3Rpb25FZGl0VG9vbDpNLFJvdGF0ZVVuaXQ6dn0pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsaSl7KGl8fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwiZGF0YXZpei9kaWFncmFtL2xheW91dC5taW5cIixbXCJkYXRhdml6L2RpYWdyYW0vbWF0aC5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQsZSl7dmFyIGk9d2luZG93LmtlbmRvLG49aS5kYXRhdml6LmRpYWdyYW0sbz1uLkdyYXBoLHM9bi5Ob2RlLHI9bi5MaW5rLGE9aS5kZWVwRXh0ZW5kLGg9bi5TaXplLGM9bi5SZWN0LGQ9bi5EaWN0aW9uYXJ5LGw9bi5TZXQsdT1uLkdyYXBoLGY9bi5VdGlscyxwPW4uUG9pbnQsZz0xZS02LG09TWF0aC5QSS8xODAsXz1mLmNvbnRhaW5zLHY9dC5ncmVwLHk9aS5DbGFzcy5leHRlbmQoe2RlZmF1bHRPcHRpb25zOnt0eXBlOlwiVHJlZVwiLHN1YnR5cGU6XCJEb3duXCIscm9vdHM6bnVsbCxhbmltYXRlOiExLGxpbWl0VG9WaWV3OiExLGZyaWN0aW9uOi45LG5vZGVEaXN0YW5jZTo1MCxpdGVyYXRpb25zOjMwMCxob3Jpem9udGFsU2VwYXJhdGlvbjo5MCx2ZXJ0aWNhbFNlcGFyYXRpb246NTAsdW5kZXJuZWF0aFZlcnRpY2FsVG9wT2Zmc2V0OjE1LHVuZGVybmVhdGhIb3Jpem9udGFsT2Zmc2V0OjE1LHVuZGVybmVhdGhWZXJ0aWNhbFNlcGFyYXRpb246MTUsZ3JpZDp7d2lkdGg6MTUwMCxvZmZzZXRYOjUwLG9mZnNldFk6NTAsY29tcG9uZW50U3BhY2luZ1g6MjAsY29tcG9uZW50U3BhY2luZ1k6MjB9LGxheWVyU2VwYXJhdGlvbjo1MCxsYXllcmVkSXRlcmF0aW9uczoyLHN0YXJ0UmFkaWFsQW5nbGU6MCxlbmRSYWRpYWxBbmdsZTozNjAscmFkaWFsU2VwYXJhdGlvbjoxNTAscmFkaWFsRmlyc3RMZXZlbFNlcGFyYXRpb246MjAwLGtlZXBDb21wb25lbnRzSW5PbmVSYWRpYWxMYXlvdXQ6ITEsaWdub3JlQ29udGFpbmVyczohMCxsYXlvdXRDb250YWluZXJDaGlsZHJlbjohMSxpZ25vcmVJbnZpc2libGU6ITAsYW5pbWF0ZVRyYW5zaXRpb25zOiExfSxpbml0OmZ1bmN0aW9uKCl7fSxncmlkTGF5b3V0Q29tcG9uZW50czpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbyxzLHIsYSxoLGMsZCxsLHUsZyxtLF87aWYoIXQpdGhyb3dcIk5vIGNvbXBvbmVudHMgc3VwcGxpZWQuXCI7Zm9yKGYuZm9yRWFjaCh0LGZ1bmN0aW9uKHQpe3QuY2FsY0JvdW5kcygpfSksdC5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuYm91bmRzLndpZHRoLXQuYm91bmRzLndpZHRofSksZT10aGlzLm9wdGlvbnMuZ3JpZC53aWR0aCxpPXRoaXMub3B0aW9ucy5ncmlkLmNvbXBvbmVudFNwYWNpbmdYLG49dGhpcy5vcHRpb25zLmdyaWQuY29tcG9uZW50U3BhY2luZ1ksbz0wLHM9dGhpcy5vcHRpb25zLmdyaWQub2Zmc2V0WCxyPXRoaXMub3B0aW9ucy5ncmlkLm9mZnNldFksYT1zLGg9cixkPVtdLGw9W107dC5sZW5ndGg+MDspe2ZvcihhPj1lJiYoYT1zLGgrPW8rbixvPTApLHU9dC5wb3AoKSx0aGlzLm1vdmVUb09mZnNldCh1LG5ldyBwKGEsaCkpLGM9MDtjPHUubm9kZXMubGVuZ3RoO2MrKylsLnB1c2godS5ub2Rlc1tjXSk7Zm9yKGM9MDtjPHUubGlua3MubGVuZ3RoO2MrKylkLnB1c2godS5saW5rc1tjXSk7Zz11LmJvdW5kcyxtPWcuaGVpZ2h0LChtPD0wfHxpc05hTihtKSkmJihtPTApLF89Zy53aWR0aCwoXzw9MHx8aXNOYU4oXykpJiYoXz0wKSxtPj1vJiYobz1tKSxhKz1fK2l9cmV0dXJue25vZGVzOmwsbGlua3M6ZH19LG1vdmVUb09mZnNldDpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbyxzLHIsYSxoLGQsbD10LmJvdW5kcyx1PWUueC1sLngsZj1lLnktbC55O2ZvcihpPTA7aTx0Lm5vZGVzLmxlbmd0aDtpKyspbz10Lm5vZGVzW2ldLHM9by5ib3VuZHMoKSwwPT09cy53aWR0aCYmMD09PXMuaGVpZ2h0JiYwPT09cy54JiYwPT09cy55JiYocz1uZXcgYygwLDAsMCwwKSkscy54Kz11LHMueSs9ZixvLmJvdW5kcyhzKTtmb3IoaT0wO2k8dC5saW5rcy5sZW5ndGg7aSsrKWlmKHI9dC5saW5rc1tpXSxyLnBvaW50cyl7Zm9yKGE9W10saD1yLnBvaW50cyxuPTA7bjxoLmxlbmd0aDtuKyspZD1oW25dLGQueCs9dSxkLnkrPWYsYS5wdXNoKGQpO3IucG9pbnRzPWF9cmV0dXJuIHRoaXMuY3VycmVudEhvcml6b250YWxPZmZzZXQrPWwud2lkdGgrdGhpcy5vcHRpb25zLmdyaWQub2Zmc2V0WCxuZXcgcCh1LGYpfSx0cmFuc2Zlck9wdGlvbnM6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPWkuZGVlcEV4dGVuZCh7fSx0aGlzLmRlZmF1bHRPcHRpb25zKSxmLmlzVW5kZWZpbmVkKHQpfHwodGhpcy5vcHRpb25zPWkuZGVlcEV4dGVuZCh0aGlzLm9wdGlvbnMsdHx8e30pKX19KSx3PWkuQ2xhc3MuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMubm9kZU1hcD1uZXcgZCx0aGlzLnNoYXBlTWFwPW5ldyBkLHRoaXMubm9kZXM9W10sdGhpcy5lZGdlcz1bXSx0aGlzLmVkZ2VNYXA9bmV3IGQsdGhpcy5maW5hbE5vZGVzPVtdLHRoaXMuZmluYWxMaW5rcz1bXSx0aGlzLmlnbm9yZWRDb25uZWN0aW9ucz1bXSx0aGlzLmlnbm9yZWRTaGFwZXM9W10sdGhpcy5oeXBlck1hcD1uZXcgZCx0aGlzLmh5cGVyVHJlZT1uZXcgbyx0aGlzLmZpbmFsR3JhcGg9bnVsbCx0aGlzLmRpYWdyYW09dH0sY29udmVydDpmdW5jdGlvbih0KXtpZihmLmlzVW5kZWZpbmVkKHRoaXMuZGlhZ3JhbSkpdGhyb3dcIk5vIGRpYWdyYW0gdG8gY29udmVydC5cIjtyZXR1cm4gdGhpcy5vcHRpb25zPWkuZGVlcEV4dGVuZCh7aWdub3JlSW52aXNpYmxlOiEwLGlnbm9yZUNvbnRhaW5lcnM6ITAsbGF5b3V0Q29udGFpbmVyQ2hpbGRyZW46ITF9LHR8fHt9KSx0aGlzLmNsZWFyKCksdGhpcy5fcmVub3JtYWxpemVTaGFwZXMoKSx0aGlzLl9yZW5vcm1hbGl6ZUNvbm5lY3Rpb25zKCksdGhpcy5maW5hbE5vZGVzPW5ldyBkKHRoaXMubm9kZXMpLHRoaXMuZmluYWxMaW5rcz1uZXcgZCh0aGlzLmVkZ2VzKSx0aGlzLmZpbmFsR3JhcGg9bmV3IG8sdGhpcy5maW5hbE5vZGVzLmZvckVhY2goZnVuY3Rpb24odCl7dGhpcy5maW5hbEdyYXBoLmFkZE5vZGUodCl9LHRoaXMpLHRoaXMuZmluYWxMaW5rcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXMuZmluYWxHcmFwaC5hZGRFeGlzdGluZ0xpbmsodCl9LHRoaXMpLHRoaXMuZmluYWxHcmFwaH0sbWFwQ29ubmVjdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lZGdlTWFwLmdldCh0LmlkKX0sbWFwU2hhcGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubm9kZU1hcC5nZXQodC5pZCl9LGdldEVkZ2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZi5maXJzdCh0LmxpbmtzLGZ1bmN0aW9uKGkpe3JldHVybiBpLmdldENvbXBsZW1lbnQodCk9PT1lfSl9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5maW5hbEdyYXBoPW51bGwsdGhpcy5oeXBlclRyZWU9IXRoaXMub3B0aW9ucy5pZ25vcmVDb250YWluZXJzJiZ0aGlzLm9wdGlvbnMubGF5b3V0Q29udGFpbmVyQ2hpbGRyZW4/bmV3IHU6bnVsbCx0aGlzLmh5cGVyTWFwPSF0aGlzLm9wdGlvbnMuaWdub3JlQ29udGFpbmVycyYmdGhpcy5vcHRpb25zLmxheW91dENvbnRhaW5lckNoaWxkcmVuP25ldyBkOm51bGwsdGhpcy5ub2RlTWFwPW5ldyBkLHRoaXMuc2hhcGVNYXA9bmV3IGQsdGhpcy5ub2Rlcz1bXSx0aGlzLmVkZ2VzPVtdLHRoaXMuZWRnZU1hcD1uZXcgZCx0aGlzLmlnbm9yZWRDb25uZWN0aW9ucz1bXSx0aGlzLmlnbm9yZWRTaGFwZXM9W10sdGhpcy5maW5hbE5vZGVzPVtdLHRoaXMuZmluYWxMaW5rcz1bXX0sbGlzdFRvUm9vdDpmdW5jdGlvbih0KXt2YXIgZT1bXSxpPXQuY29udGFpbmVyO2lmKCFpKXJldHVybiBlO2ZvcihlLnB1c2goaSk7aS5wYXJlbnRDb250YWluZXI7KWk9aS5wYXJlbnRDb250YWluZXIsZS5wdXNoKGkpO3JldHVybiBlLnJldmVyc2UoKSxlfSxmaXJzdE5vbklnbm9yYWJsZUNvbnRhaW5lcjpmdW5jdGlvbih0KXtyZXR1cm4gdC5pc0NvbnRhaW5lciYmIXRoaXMuX2lzSWdub3JhYmxlSXRlbSh0KT90OnQucGFyZW50Q29udGFpbmVyP3RoaXMuZmlyc3ROb25JZ25vcmFibGVDb250YWluZXIodC5wYXJlbnRDb250YWluZXIpOm51bGx9LGlzQ29udGFpbmVyQ29ubmVjdGlvbjpmdW5jdGlvbih0LGUpe3JldHVybiEoIXQuaXNDb250YWluZXJ8fCF0aGlzLmlzRGVzY2VuZGFudE9mKHQsZSkpfHxlLmlzQ29udGFpbmVyJiZ0aGlzLmlzRGVzY2VuZGFudE9mKGUsdCl9LGlzRGVzY2VuZGFudE9mOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixvLHM7aWYoIXQuaXNDb250YWluZXIpdGhyb3dcIkV4cGVjdGluZyBhIGNvbnRhaW5lci5cIjtpZih0PT09ZSlyZXR1cm4hMTtpZihfKHQuY2hpbGRyZW4sZSkpcmV0dXJuITA7Zm9yKGk9W10sbj0wLG89dC5jaGlsZHJlbi5sZW5ndGg7bjxvO24rKylzPXQuY2hpbGRyZW5bbl0scy5pc0NvbnRhaW5lciYmdGhpcy5pc0Rlc2NlbmRhbnRPZihzLGUpJiZpLnB1c2gocyk7cmV0dXJuIGkubGVuZ3RoPjB9LGlzSWdub3JhYmxlSXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLmlnbm9yZUludmlzaWJsZT8oIXQuaXNDb2xsYXBzZWR8fCF0aGlzLl9pc1Zpc2libGUodCkpJiYhKCF0LmlzQ29sbGFwc2VkJiZ0aGlzLl9pc1Zpc2libGUodCkpOnQuaXNDb2xsYXBzZWQmJiF0aGlzLl9pc1RvcCh0KX0saXNTaGFwZU1hcHBlZDpmdW5jdGlvbih0KXtyZXR1cm4gdC5pc0NvbGxhcHNlZCYmIXRoaXMuX2lzVmlzaWJsZSh0KSYmIXRoaXMuX2lzVG9wKHQpfSxsZWFzdENvbW1vbkFuY2VzdG9yOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixvLHMscixhO2lmKCF0KXRocm93XCJQYXJhbWV0ZXIgc2hvdWxkIG5vdCBiZSBudWxsLlwiO2lmKCFlKXRocm93XCJQYXJhbWV0ZXIgc2hvdWxkIG5vdCBiZSBudWxsLlwiO2lmKCF0aGlzLmh5cGVyVHJlZSl0aHJvd1wiTm8gaHlwZXJ0cmVlIGF2YWlsYWJsZS5cIjtpZihpPXRoaXMubGlzdFRvUm9vdCh0KSxuPXRoaXMubGlzdFRvUm9vdChlKSxvPW51bGwsZi5pc0VtcHR5KGkpfHxmLmlzRW1wdHkobikpcmV0dXJuIHRoaXMuaHlwZXJUcmVlLnJvb3QuZGF0YTtmb3Iocz1pWzBdLHI9blswXSxhPTA7cz09PXImJihvPWlbYV0sYSsrLCEoYT49aS5sZW5ndGh8fGE+PW4ubGVuZ3RoKSk7KXM9aVthXSxyPW5bYV07cmV0dXJuIG8/dih0aGlzLmh5cGVyVHJlZS5ub2RlcyxmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhLmNvbnRhaW5lcj09PW99KTp0aGlzLmh5cGVyVHJlZS5yb290LmRhdGF9LF9pc1RvcDpmdW5jdGlvbih0KXtyZXR1cm4hdC5wYXJlbnRDb250YWluZXJ9LF9pc1Zpc2libGU6ZnVuY3Rpb24odCl7cmV0dXJuISF0LnZpc2libGUoKSYmKHQucGFyZW50Q29udGFpbmVyP3RoaXMuX2lzVmlzaWJsZSh0LnBhcmVudENvbnRhaW5lcik6dC52aXNpYmxlKCkpfSxfaXNDb2xsYXBzZWQ6ZnVuY3Rpb24odCl7cmV0dXJuISghdC5pc0NvbnRhaW5lcnx8IXQuaXNDb2xsYXBzZWQpfHx0LnBhcmVudENvbnRhaW5lciYmdGhpcy5faXNDb2xsYXBzZWQodC5wYXJlbnRDb250YWluZXIpfSxfcmVub3JtYWxpemVTaGFwZXM6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbjtpZighdGhpcy5vcHRpb25zLmlnbm9yZUNvbnRhaW5lcnMpdGhyb3dcIkNvbnRhaW5lcnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LCBidXQgc3RheSB0dW5lZC5cIjtmb3IodD0wLGU9dGhpcy5kaWFncmFtLnNoYXBlcy5sZW5ndGg7dDxlO3QrKylpPXRoaXMuZGlhZ3JhbS5zaGFwZXNbdF0sdGhpcy5vcHRpb25zLmlnbm9yZUludmlzaWJsZSYmIXRoaXMuX2lzVmlzaWJsZShpKXx8aS5pc0NvbnRhaW5lcj90aGlzLmlnbm9yZWRTaGFwZXMucHVzaChpKToobj1uZXcgcyhpLmlkLGkpLG4uaXNWaXJ0dWFsPSExLHRoaXMubm9kZU1hcC5hZGQoaS5pZCxuKSx0aGlzLm5vZGVzLnB1c2gobikpfSxfcmVub3JtYWxpemVDb25uZWN0aW9uczpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLG8scyxhLGg7aWYoMCE9PXRoaXMuZGlhZ3JhbS5jb25uZWN0aW9ucy5sZW5ndGgpZm9yKHQ9MCxlPXRoaXMuZGlhZ3JhbS5jb25uZWN0aW9ucy5sZW5ndGg7dDxlO3QrKylpZihpPXRoaXMuZGlhZ3JhbS5jb25uZWN0aW9uc1t0XSx0aGlzLmlzSWdub3JhYmxlSXRlbShpKSl0aGlzLmlnbm9yZWRDb25uZWN0aW9ucy5wdXNoKGkpO2Vsc2UgaWYobj1pLnNvdXJjZUNvbm5lY3Rvcj9pLnNvdXJjZUNvbm5lY3Rvci5zaGFwZTpudWxsLG89aS50YXJnZXRDb25uZWN0b3I/aS50YXJnZXRDb25uZWN0b3Iuc2hhcGU6bnVsbCxuJiZvKWlmKCFfKHRoaXMuaWdub3JlZFNoYXBlcyxuKXx8dGhpcy5zaGFwZU1hcC5jb250YWluc0tleShuKSlpZighXyh0aGlzLmlnbm9yZWRTaGFwZXMsbyl8fHRoaXMuc2hhcGVNYXAuY29udGFpbnNLZXkobykpaWYodGhpcy5zaGFwZU1hcC5jb250YWluc0tleShuKSYmKG49dGhpcy5zaGFwZU1hcFtuXSksdGhpcy5zaGFwZU1hcC5jb250YWluc0tleShvKSYmKG89dGhpcy5zaGFwZU1hcFtvXSkscz10aGlzLm1hcFNoYXBlKG4pLGE9dGhpcy5tYXBTaGFwZShvKSxzPT09YXx8dGhpcy5hcmVDb25uZWN0ZWRBbHJlYWR5KHMsYSkpdGhpcy5pZ25vcmVkQ29ubmVjdGlvbnMucHVzaChpKTtlbHNle2lmKG51bGw9PT1zfHxudWxsPT09YSl0aHJvd1wiQSBzaGFwZSB3YXMgbm90IG1hcHBlZCB0byBhIG5vZGUuXCI7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVDb250YWluZXJzKXRocm93XCJDb250YWluZXJzIGFyZSBub3Qgc3VwcG9ydGVkIHlldCwgYnV0IHN0YXkgdHVuZWQuXCI7cy5pc1ZpcnR1YWx8fGEuaXNWaXJ0dWFsP3RoaXMuaWdub3JlZENvbm5lY3Rpb25zLnB1c2goaSk6KGg9bmV3IHIocyxhLGkuaWQsaSksdGhpcy5lZGdlTWFwLmFkZChpLmlkLGgpLHRoaXMuZWRnZXMucHVzaChoKSl9ZWxzZSB0aGlzLmlnbm9yZWRDb25uZWN0aW9ucy5wdXNoKGkpO2Vsc2UgdGhpcy5pZ25vcmVkQ29ubmVjdGlvbnMucHVzaChpKTtlbHNlIHRoaXMuaWdub3JlZENvbm5lY3Rpb25zLnB1c2goaSl9LGFyZUNvbm5lY3RlZEFscmVhZHk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZi5hbnkodGhpcy5lZGdlcyxmdW5jdGlvbihpKXtyZXR1cm4gaS5zb3VyY2U9PT10JiZpLnRhcmdldD09PWV8fGkuc291cmNlPT09ZSYmaS50YXJnZXQ9PT10fSl9fSkseD15LmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHkuZm4uaW5pdC5jYWxsKGUpLGYuaXNVbmRlZmluZWQodCkpdGhyb3dcIkRpYWdyYW0gaXMgbm90IHNwZWNpZmllZC5cIjt0aGlzLmRpYWdyYW09dH0sbGF5b3V0OmZ1bmN0aW9uKHQpe3ZhciBlLGksbyxzLHIsYTtpZih0aGlzLnRyYW5zZmVyT3B0aW9ucyh0KSxlPW5ldyB3KHRoaXMuZGlhZ3JhbSksaT1lLmNvbnZlcnQodCksIWkuaXNFbXB0eSgpJiYobz1pLmdldENvbm5lY3RlZENvbXBvbmVudHMoKSwhZi5pc0VtcHR5KG8pKSl7Zm9yKHM9MDtzPG8ubGVuZ3RoO3MrKylyPW9bc10sdGhpcy5sYXlvdXRHcmFwaChyLHQpO3JldHVybiBhPXRoaXMuZ3JpZExheW91dENvbXBvbmVudHMobyksbmV3IG4uTGF5b3V0U3RhdGUodGhpcy5kaWFncmFtLGEpfX0sbGF5b3V0R3JhcGg6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG87Zm9yKGYuaXNEZWZpbmVkKGUpJiZ0aGlzLnRyYW5zZmVyT3B0aW9ucyhlKSx0aGlzLmdyYXBoPXQsaT05KnRoaXMub3B0aW9ucy5ub2RlRGlzdGFuY2UsdGhpcy50ZW1wZXJhdHVyZT1pLG49dGhpcy5fZXhwZWN0ZWRCb3VuZHMoKSx0aGlzLndpZHRoPW4ud2lkdGgsdGhpcy5oZWlnaHQ9bi5oZWlnaHQsbz0wO288dGhpcy5vcHRpb25zLml0ZXJhdGlvbnM7bysrKXRoaXMucmVmaW5lU3RhZ2U9bz49NSp0aGlzLm9wdGlvbnMuaXRlcmF0aW9ucy82LHRoaXMudGljaygpLHRoaXMudGVtcGVyYXR1cmU9dGhpcy5yZWZpbmVTdGFnZT9pLzMwOmkqKDEtby8oMip0aGlzLm9wdGlvbnMuaXRlcmF0aW9ucykpfSx0aWNrOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO2Zvcih0PTA7dDx0aGlzLmdyYXBoLm5vZGVzLmxlbmd0aDt0KyspdGhpcy5fcmVwdWxzaW9uKHRoaXMuZ3JhcGgubm9kZXNbdF0pO2Zvcih0PTA7dDx0aGlzLmdyYXBoLmxpbmtzLmxlbmd0aDt0KyspdGhpcy5fYXR0cmFjdGlvbih0aGlzLmdyYXBoLmxpbmtzW3RdKTtmb3IodD0wO3Q8dGhpcy5ncmFwaC5ub2Rlcy5sZW5ndGg7dCsrKXtpZihlPXRoaXMuZ3JhcGgubm9kZXNbdF0saT1NYXRoLnNxcnQoZS5keCplLmR4K2UuZHkqZS5keSksMD09PWkpcmV0dXJuO2UueCs9TWF0aC5taW4oaSx0aGlzLnRlbXBlcmF0dXJlKSplLmR4L2ksZS55Kz1NYXRoLm1pbihpLHRoaXMudGVtcGVyYXR1cmUpKmUuZHkvaSx0aGlzLm9wdGlvbnMubGltaXRUb1ZpZXcmJihlLng9TWF0aC5taW4odGhpcy53aWR0aCxNYXRoLm1heChlLndpZHRoLzIsZS54KSksZS55PU1hdGgubWluKHRoaXMuaGVpZ2h0LE1hdGgubWF4KGUuaGVpZ2h0LzIsZS55KSkpfX0sX3NoYWtlOmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgucmFuZG9tKCkqdGhpcy5vcHRpb25zLm5vZGVEaXN0YW5jZS80LGk9MipNYXRoLnJhbmRvbSgpKk1hdGguUEk7dC54Kz1lKk1hdGguY29zKGkpLHQueS09ZSpNYXRoLnNpbihpKX0sX0ludmVyc2VTcXVhcmVGb3JjZTpmdW5jdGlvbih0LGUsaSl7dmFyIG4sbyxzLHIsYSxoLGM7cmV0dXJuIHRoaXMucmVmaW5lU3RhZ2U/KG89ZS54LWkueCxzPWUueS1pLnkscj1lLndpZHRoLzIsYT1lLmhlaWdodC8yLGg9aS53aWR0aC8yLGM9aS5oZWlnaHQvMixuPU1hdGgucG93KG8sMikvTWF0aC5wb3cocitoK3RoaXMub3B0aW9ucy5ub2RlRGlzdGFuY2UsMikrTWF0aC5wb3cocywyKS9NYXRoLnBvdyhhK2MrdGhpcy5vcHRpb25zLm5vZGVEaXN0YW5jZSwyKSk6bj1NYXRoLnBvdyh0LDIpL01hdGgucG93KHRoaXMub3B0aW9ucy5ub2RlRGlzdGFuY2UsMiksNCpuLzN9LF9TcXVhcmVGb3JjZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIDEvdGhpcy5fSW52ZXJzZVNxdWFyZUZvcmNlKHQsZSxpKX0sX3JlcHVsc2lvbjpmdW5jdGlvbih0KXt0LmR4PTAsdC5keT0wLGYuZm9yRWFjaCh0aGlzLmdyYXBoLm5vZGVzLGZ1bmN0aW9uKGUpe3ZhciBpLG4sbyxzO2lmKGUhPT10KXtmb3IoO3QueD09PWUueCYmdC55PT09ZS55Oyl0aGlzLl9zaGFrZShlKTtpPXQueC1lLngsbj10LnktZS55LG89TWF0aC5zcXJ0KGkqaStuKm4pLHM9Mip0aGlzLl9TcXVhcmVGb3JjZShvLHQsZSksdC5keCs9aS9vKnMsdC5keSs9bi9vKnN9fSx0aGlzKX0sX2F0dHJhY3Rpb246ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG8scyxyLGE9dC50YXJnZXQsaD10LnNvdXJjZTtpZihoIT09YSl7Zm9yKDtoLng9PT1hLngmJmgueT09PWEueTspdGhpcy5fc2hha2UoYSk7ZT1oLngtYS54LGk9aC55LWEueSxuPU1hdGguc3FydChlKmUraSppKSxvPTUqdGhpcy5fSW52ZXJzZVNxdWFyZUZvcmNlKG4saCxhKSxzPWUvbipvLHI9aS9uKm8sYS5keCs9cyxhLmR5Kz1yLGguZHgtPXMsaC5keS09cn19LF9leHBlY3RlZEJvdW5kczpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLG8scz10aGlzLmdyYXBoLm5vZGVzLmxlbmd0aCxyPTEuNSxhPTQ7cmV0dXJuIDA9PT1zP3Q6KHQ9Zi5mb2xkKHRoaXMuZ3JhcGgubm9kZXMsZnVuY3Rpb24odCxlKXt2YXIgaT1lLndpZHRoKmUuaGVpZ2h0O3JldHVybiBpPjA/dCs9TWF0aC5zcXJ0KGkpOjB9LDAsdGhpcyksZT10L3MsaT1lKk1hdGguY2VpbChNYXRoLnNxcnQocykpLG49aSpNYXRoLnNxcnQociksbz1pL01hdGguc3FydChyKSx7d2lkdGg6biphLGhlaWdodDpvKmF9KX19KSxiPWkuQ2xhc3MuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMuY2VudGVyPW51bGwsdGhpcy5vcHRpb25zPXR9LGxheW91dDpmdW5jdGlvbih0LGUpe2lmKHRoaXMuZ3JhcGg9dCx0aGlzLmdyYXBoLm5vZGVzJiYwIT09dGhpcy5ncmFwaC5ub2Rlcy5sZW5ndGgpe2lmKCFfKHRoaXMuZ3JhcGgubm9kZXMsZSkpdGhyb3dcIlRoZSBnaXZlbiByb290IGlzIG5vdCBpbiB0aGUgZ3JhcGguXCI7dGhpcy5jZW50ZXI9ZSx0aGlzLmdyYXBoLmNhY2hlUmVsYXRpb25zaGlwcygpLHRoaXMubGF5b3V0U3dpdGNoKCl9fSxsYXlvdXRMZWZ0OmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvLHMscixhLGM7Zm9yKHRoaXMuc2V0Q2hpbGRyZW5EaXJlY3Rpb24odGhpcy5jZW50ZXIsXCJMZWZ0XCIsITEpLHRoaXMuc2V0Q2hpbGRyZW5MYXlvdXQodGhpcy5jZW50ZXIsXCJEZWZhdWx0XCIsITEpLGU9MCxpPTAsbz0wO288dC5sZW5ndGg7bysrKXM9dFtvXSxzLlRyZWVEaXJlY3Rpb249XCJMZWZ0XCIscj10aGlzLm1lYXN1cmUocyxoLkVtcHR5KSxpPU1hdGgubWF4KGksci5XaWR0aCksZSs9ci5oZWlnaHQrdGhpcy5vcHRpb25zLnZlcnRpY2FsU2VwYXJhdGlvbjtmb3IoZS09dGhpcy5vcHRpb25zLnZlcnRpY2FsU2VwYXJhdGlvbixhPXRoaXMuY2VudGVyLngtdGhpcy5vcHRpb25zLmhvcml6b250YWxTZXBhcmF0aW9uLG49dGhpcy5jZW50ZXIueSsodGhpcy5jZW50ZXIuaGVpZ2h0LWUpLzIsbz0wO288dC5sZW5ndGg7bysrKXM9dFtvXSxjPW5ldyBwKGEtcy5TaXplLndpZHRoLG4pLHRoaXMuYXJyYW5nZShzLGMpLG4rPXMuU2l6ZS5oZWlnaHQrdGhpcy5vcHRpb25zLnZlcnRpY2FsU2VwYXJhdGlvbn0sbGF5b3V0UmlnaHQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG8scyxyLGEsYztmb3IodGhpcy5zZXRDaGlsZHJlbkRpcmVjdGlvbih0aGlzLmNlbnRlcixcIlJpZ2h0XCIsITEpLHRoaXMuc2V0Q2hpbGRyZW5MYXlvdXQodGhpcy5jZW50ZXIsXCJEZWZhdWx0XCIsITEpLGU9MCxpPTAsbz0wO288dC5sZW5ndGg7bysrKXM9dFtvXSxzLlRyZWVEaXJlY3Rpb249XCJSaWdodFwiLHI9dGhpcy5tZWFzdXJlKHMsaC5FbXB0eSksaT1NYXRoLm1heChpLHIuV2lkdGgpLGUrPXIuaGVpZ2h0K3RoaXMub3B0aW9ucy52ZXJ0aWNhbFNlcGFyYXRpb247Zm9yKGUtPXRoaXMub3B0aW9ucy52ZXJ0aWNhbFNlcGFyYXRpb24sYT10aGlzLmNlbnRlci54K3RoaXMub3B0aW9ucy5ob3Jpem9udGFsU2VwYXJhdGlvbit0aGlzLmNlbnRlci53aWR0aCxuPXRoaXMuY2VudGVyLnkrKHRoaXMuY2VudGVyLmhlaWdodC1lKS8yLG89MDtvPHQubGVuZ3RoO28rKylzPXRbb10sYz1uZXcgcChhLG4pLHRoaXMuYXJyYW5nZShzLGMpLG4rPXMuU2l6ZS5oZWlnaHQrdGhpcy5vcHRpb25zLnZlcnRpY2FsU2VwYXJhdGlvbn0sbGF5b3V0VXA6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG8scyxyLGE7Zm9yKHRoaXMuc2V0Q2hpbGRyZW5EaXJlY3Rpb24odGhpcy5jZW50ZXIsXCJVcFwiLCExKSx0aGlzLnNldENoaWxkcmVuTGF5b3V0KHRoaXMuY2VudGVyLFwiRGVmYXVsdFwiLCExKSxlPTAsbz0wO288dC5sZW5ndGg7bysrKW49dFtvXSxuLlRyZWVEaXJlY3Rpb249XCJVcFwiLHM9dGhpcy5tZWFzdXJlKG4saC5FbXB0eSksZSs9cy53aWR0aCt0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbFNlcGFyYXRpb247Zm9yKGUtPXRoaXMub3B0aW9ucy5ob3Jpem9udGFsU2VwYXJhdGlvbixyPXRoaXMuY2VudGVyLngrdGhpcy5jZW50ZXIud2lkdGgvMi1lLzIsbz0wO288dC5sZW5ndGg7bysrKW49dFtvXSxpPXRoaXMuY2VudGVyLnktdGhpcy5vcHRpb25zLnZlcnRpY2FsU2VwYXJhdGlvbi1uLlNpemUuaGVpZ2h0LGE9bmV3IHAocixpKSx0aGlzLmFycmFuZ2UobixhKSxyKz1uLlNpemUud2lkdGgrdGhpcy5vcHRpb25zLmhvcml6b250YWxTZXBhcmF0aW9ufSxsYXlvdXREb3duOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvLHMscixhO2Zvcih0aGlzLnNldENoaWxkcmVuRGlyZWN0aW9uKHRoaXMuY2VudGVyLFwiRG93blwiLCExKSx0aGlzLnNldENoaWxkcmVuTGF5b3V0KHRoaXMuY2VudGVyLFwiRGVmYXVsdFwiLCExKSxuPTAsaT0wO2k8dC5sZW5ndGg7aSsrKWU9dFtpXSxlLnRyZWVEaXJlY3Rpb249XCJEb3duXCIscz10aGlzLm1lYXN1cmUoZSxoLkVtcHR5KSxuKz1zLndpZHRoK3RoaXMub3B0aW9ucy5ob3Jpem9udGFsU2VwYXJhdGlvbjtmb3Iobi09dGhpcy5vcHRpb25zLmhvcml6b250YWxTZXBhcmF0aW9uLHI9dGhpcy5jZW50ZXIueCt0aGlzLmNlbnRlci53aWR0aC8yLW4vMixvPXRoaXMuY2VudGVyLnkrdGhpcy5vcHRpb25zLnZlcnRpY2FsU2VwYXJhdGlvbit0aGlzLmNlbnRlci5oZWlnaHQsaT0wO2k8dC5sZW5ndGg7aSsrKWU9dFtpXSxhPW5ldyBwKHIsbyksdGhpcy5hcnJhbmdlKGUsYSkscis9ZS5TaXplLndpZHRoK3RoaXMub3B0aW9ucy5ob3Jpem9udGFsU2VwYXJhdGlvbn0sbGF5b3V0UmFkaWFsVHJlZTpmdW5jdGlvbigpe3ZhciB0LGU7aWYodGhpcy5zZXRDaGlsZHJlbkRpcmVjdGlvbih0aGlzLmNlbnRlcixcIlJhZGlhbFwiLCExKSx0aGlzLnNldENoaWxkcmVuTGF5b3V0KHRoaXMuY2VudGVyLFwiRGVmYXVsdFwiLCExKSx0aGlzLnByZXZpb3VzUm9vdD1udWxsLHQ9dGhpcy5vcHRpb25zLnN0YXJ0UmFkaWFsQW5nbGUqbSxlPXRoaXMub3B0aW9ucy5lbmRSYWRpYWxBbmdsZSptLGU8PXQpdGhyb3dcIkZpbmFsIGFuZ2xlIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHRoZSBzdGFydCBhbmdsZS5cIjt0aGlzLm1heERlcHRoPTAsdGhpcy5vcmlnaW49bmV3IHAodGhpcy5jZW50ZXIueCx0aGlzLmNlbnRlci55KSx0aGlzLmNhbGN1bGF0ZUFuZ3VsYXJXaWR0aCh0aGlzLmNlbnRlciwwKSx0aGlzLm1heERlcHRoPjAmJnRoaXMucmFkaWFsTGF5b3V0KHRoaXMuY2VudGVyLHRoaXMub3B0aW9ucy5yYWRpYWxGaXJzdExldmVsU2VwYXJhdGlvbix0LGUpLHRoaXMuY2VudGVyLkFuZ2xlPWUtdH0sdGlwT3ZlclRyZWU6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scyxyLGEsYztmb3IoZi5pc1VuZGVmaW5lZChlKSYmKGU9MCksdGhpcy5zZXRDaGlsZHJlbkRpcmVjdGlvbih0aGlzLmNlbnRlcixcIkRvd25cIiwhMSksdGhpcy5zZXRDaGlsZHJlbkxheW91dCh0aGlzLmNlbnRlcixcIkRlZmF1bHRcIiwhMSksdGhpcy5zZXRDaGlsZHJlbkxheW91dCh0aGlzLmNlbnRlcixcIlVuZGVybmVhdGhcIiwhMSxlKSxpPTAscz0wO3M8dC5sZW5ndGg7cysrKW89dFtzXSxvLlRyZWVEaXJlY3Rpb249XCJEb3duXCIscj10aGlzLm1lYXN1cmUobyxoLkVtcHR5KSxpKz1yLndpZHRoK3RoaXMub3B0aW9ucy5ob3Jpem9udGFsU2VwYXJhdGlvbjtmb3IoaS09dGhpcy5vcHRpb25zLmhvcml6b250YWxTZXBhcmF0aW9uLGktPXRbdC5sZW5ndGgtMV0ud2lkdGgsaSs9dFt0Lmxlbmd0aC0xXS5hc3NvY2lhdGVkU2hhcGUuYm91bmRzKCkud2lkdGgsYT10aGlzLmNlbnRlci54K3RoaXMuY2VudGVyLndpZHRoLzItaS8yLG49dGhpcy5jZW50ZXIueSt0aGlzLm9wdGlvbnMudmVydGljYWxTZXBhcmF0aW9uK3RoaXMuY2VudGVyLmhlaWdodCxzPTA7czx0Lmxlbmd0aDtzKyspbz10W3NdLGM9bmV3IHAoYSxuKSx0aGlzLmFycmFuZ2UobyxjKSxhKz1vLlNpemUud2lkdGgrdGhpcy5vcHRpb25zLmhvcml6b250YWxTZXBhcmF0aW9ufSxjYWxjdWxhdGVBbmd1bGFyV2lkdGg6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scyxyLGEsaDtpZihlPnRoaXMubWF4RGVwdGgmJih0aGlzLm1heERlcHRoPWUpLGk9MCxuPTFlMyxvPTFlMyxzPTA9PT1lPzA6TWF0aC5zcXJ0KG4qbitvKm8pL2UsdC5jaGlsZHJlbi5sZW5ndGg+MCl7Zm9yKHI9MCxhPXQuY2hpbGRyZW4ubGVuZ3RoO3I8YTtyKyspaD10LmNoaWxkcmVuW3JdLGkrPXRoaXMuY2FsY3VsYXRlQW5ndWxhcldpZHRoKGgsZSsxKTtpPU1hdGgubWF4KHMsaSl9ZWxzZSBpPXM7cmV0dXJuIHQuc2VjdG9yQW5nbGU9aSxpfSxzb3J0Q2hpbGRyZW46ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG8scyxyLGEsaCxjLGQsbCx1PTA7aWYodC5wYXJlbnRzLmxlbmd0aD4xKXRocm93XCJOb2RlIGlzIG5vdCBwYXJ0IG9mIGEgdHJlZS5cIjtpZihpPXQucGFyZW50c1swXSxpJiYobj1uZXcgcChpLngsaS55KSxvPW5ldyBwKHQueCx0LnkpLHU9dGhpcy5ub3JtYWxpemVBbmdsZShNYXRoLmF0YW4yKG4ueS1vLnksbi54LW8ueCkpKSxzPXQuY2hpbGRyZW4ubGVuZ3RoLDA9PT1zKXJldHVybiBudWxsO2ZvcihyPVtdLGE9W10sZT0wO2U8czsrK2UpaD10LmNoaWxkcmVuW2VdLGM9bmV3IHAoaC54LGgueSksYVtlXT1lLHJbZV09dGhpcy5ub3JtYWxpemVBbmdsZSgtdStNYXRoLmF0YW4yKGMueS1jLnksYy54LWMueCkpO2ZvcihmLmJpc29ydChyLGEpLGQ9W10sbD10LmNoaWxkcmVuLGU9MDtlPHM7KytlKWQucHVzaChsW2FbZV1dKTtyZXR1cm4gZH0sbm9ybWFsaXplQW5nbGU6ZnVuY3Rpb24odCl7Zm9yKDt0PjIqTWF0aC5QSTspdC09MipNYXRoLlBJO2Zvcig7dDwwOyl0Kz0yKk1hdGguUEk7cmV0dXJuIHR9LHJhZGlhbExheW91dDpmdW5jdGlvbih0LGUsaSxuKXt2YXIgbyxzLHIsYSxoLGM9bi1pLGQ9Yy8yLGw9dC5zZWN0b3JBbmdsZSx1PTAsZj10aGlzLnNvcnRDaGlsZHJlbih0KTtmb3Iobz0wLHM9Zi5sZW5ndGg7bzxzO28rKylyPWZbb10sYT1yLGg9YS5zZWN0b3JBbmdsZS9sLHIuY2hpbGRyZW4ubGVuZ3RoPjAmJnRoaXMucmFkaWFsTGF5b3V0KHIsZSt0aGlzLm9wdGlvbnMucmFkaWFsU2VwYXJhdGlvbixpK3UqYyxpKyh1K2gpKmMpLHRoaXMuc2V0UG9sYXJMb2NhdGlvbihyLGUsaSt1KmMraCpkKSxhLmFuZ2xlPWgqYyx1Kz1ofSxzZXRQb2xhckxvY2F0aW9uOmZ1bmN0aW9uKHQsZSxpKXt0Lng9dGhpcy5vcmlnaW4ueCtlKk1hdGguY29zKGkpLHQueT10aGlzLm9yaWdpbi55K2UqTWF0aC5zaW4oaSksdC5Cb3VuZGluZ1JlY3RhbmdsZT1uZXcgYyh0LngsdC55LHQud2lkdGgsdC5oZWlnaHQpfSxzZXRDaGlsZHJlbkRpcmVjdGlvbjpmdW5jdGlvbih0LGUsaSl7dmFyIG49dC50cmVlRGlyZWN0aW9uO3RoaXMuZ3JhcGguZGVwdGhGaXJzdFRyYXZlcnNhbCh0LGZ1bmN0aW9uKHQpe3QudHJlZURpcmVjdGlvbj1lfSksaXx8KHQudHJlZURpcmVjdGlvbj1uKX0sc2V0Q2hpbGRyZW5MYXlvdXQ6ZnVuY3Rpb24odCxlLGksbil7Zi5pc1VuZGVmaW5lZChuKSYmKG49MCk7dmFyIG89dC5jaGlsZHJlbkxheW91dDtuPjA/KHRoaXMuZ3JhcGguYXNzaWduTGV2ZWxzKHQpLHRoaXMuZ3JhcGguZGVwdGhGaXJzdFRyYXZlcnNhbCh0LGZ1bmN0aW9uKHQpe3QubGV2ZWw+PW4rMSYmKHQuY2hpbGRyZW5MYXlvdXQ9ZSl9KSk6KHRoaXMuZ3JhcGguZGVwdGhGaXJzdFRyYXZlcnNhbCh0LGZ1bmN0aW9uKHQpe3QuY2hpbGRyZW5MYXlvdXQ9ZX0pLGl8fCh0LmNoaWxkcmVuTGF5b3V0PW8pKX0sbWVhc3VyZTpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbyxzLHIsYSxjLGQ9MCxsPTAsdT1uZXcgaCgwLDApO2lmKCF0KXRocm93XCJcIjtpZihuPXQuYXNzb2NpYXRlZFNoYXBlLmJvdW5kcygpLG89bi53aWR0aCxzPW4uaGVpZ2h0LDEhPT10LnBhcmVudHMubGVuZ3RoKXRocm93XCJOb2RlIG5vdCBpbiBhIHNwYW5uaW5nIHRyZWUuXCI7aWYocj10LnBhcmVudHNbMF0sXCJVbmRlZmluZWRcIj09PXQudHJlZURpcmVjdGlvbiYmKHQudHJlZURpcmVjdGlvbj1yLnRyZWVEaXJlY3Rpb24pLGYuaXNFbXB0eSh0LmNoaWxkcmVuKSl1PW5ldyBoKE1hdGguYWJzKG8pPGc/NTA6byxNYXRoLmFicyhzKTxnPzI1OnMpO2Vsc2UgaWYoMT09PXQuY2hpbGRyZW4ubGVuZ3RoKXtzd2l0Y2godC50cmVlRGlyZWN0aW9uKXtjYXNlXCJSYWRpYWxcIjppPXRoaXMubWVhc3VyZSh0LmNoaWxkcmVuWzBdLGUpLGQ9byt0aGlzLm9wdGlvbnMucmFkaWFsU2VwYXJhdGlvbipNYXRoLmNvcyh0LkFuZ2xlVG9QYXJlbnQpK2kud2lkdGgsbD1zK01hdGguYWJzKHRoaXMub3B0aW9ucy5yYWRpYWxTZXBhcmF0aW9uKk1hdGguc2luKHQuQW5nbGVUb1BhcmVudCkpK2kuaGVpZ2h0O2JyZWFrO2Nhc2VcIkxlZnRcIjpjYXNlXCJSaWdodFwiOnN3aXRjaCh0LmNoaWxkcmVuTGF5b3V0KXtjYXNlXCJUb3BBbGlnbmVkV2l0aFBhcmVudFwiOmJyZWFrO2Nhc2VcIkJvdHRvbUFsaWduZWRXaXRoUGFyZW50XCI6YnJlYWs7Y2FzZVwiVW5kZXJuZWF0aFwiOmk9dGhpcy5tZWFzdXJlKHQuY2hpbGRyZW5bMF0sZSksZD1vK2kud2lkdGgrdGhpcy5vcHRpb25zLnVuZGVybmVhdGhIb3Jpem9udGFsT2Zmc2V0LGw9cyt0aGlzLm9wdGlvbnMudW5kZXJuZWF0aFZlcnRpY2FsVG9wT2Zmc2V0K2kuaGVpZ2h0O2JyZWFrO2Nhc2VcIkRlZmF1bHRcIjppPXRoaXMubWVhc3VyZSh0LmNoaWxkcmVuWzBdLGUpLGQ9byt0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbFNlcGFyYXRpb24raS53aWR0aCxsPU1hdGgubWF4KHMsaS5oZWlnaHQpO2JyZWFrO2RlZmF1bHQ6dGhyb3dcIlVuaGFuZGxlZCBUcmVlRGlyZWN0aW9uIGluIHRoZSBSYWRpYWwgbGF5b3V0IG1lYXN1cmluZy5cIn1icmVhaztjYXNlXCJVcFwiOmNhc2VcIkRvd25cIjpzd2l0Y2godC5jaGlsZHJlbkxheW91dCl7Y2FzZVwiVG9wQWxpZ25lZFdpdGhQYXJlbnRcIjpjYXNlXCJCb3R0b21BbGlnbmVkV2l0aFBhcmVudFwiOmJyZWFrO2Nhc2VcIlVuZGVybmVhdGhcIjppPXRoaXMubWVhc3VyZSh0LmNoaWxkcmVuWzBdLGUpLGQ9TWF0aC5tYXgobyxpLndpZHRoK3RoaXMub3B0aW9ucy51bmRlcm5lYXRoSG9yaXpvbnRhbE9mZnNldCksbD1zK3RoaXMub3B0aW9ucy51bmRlcm5lYXRoVmVydGljYWxUb3BPZmZzZXQraS5oZWlnaHQ7YnJlYWs7Y2FzZVwiRGVmYXVsdFwiOmk9dGhpcy5tZWFzdXJlKHQuY2hpbGRyZW5bMF0sZSksbD1zK3RoaXMub3B0aW9ucy52ZXJ0aWNhbFNlcGFyYXRpb24raS5oZWlnaHQsZD1NYXRoLm1heChvLGkud2lkdGgpO2JyZWFrO2RlZmF1bHQ6dGhyb3dcIlVuaGFuZGxlZCBUcmVlRGlyZWN0aW9uIGluIHRoZSBEb3duIGxheW91dCBtZWFzdXJpbmcuXCJ9YnJlYWs7ZGVmYXVsdDp0aHJvd1wiVW5oYW5kbGVkIFRyZWVEaXJlY3Rpb24gaW4gdGhlIGxheW91dCBtZWFzdXJpbmcuXCJ9dT1uZXcgaChkLGwpfWVsc2V7c3dpdGNoKHQudHJlZURpcmVjdGlvbil7Y2FzZVwiTGVmdFwiOmNhc2VcIlJpZ2h0XCI6c3dpdGNoKHQuY2hpbGRyZW5MYXlvdXQpe2Nhc2VcIlRvcEFsaWduZWRXaXRoUGFyZW50XCI6Y2FzZVwiQm90dG9tQWxpZ25lZFdpdGhQYXJlbnRcIjpicmVhaztjYXNlXCJVbmRlcm5lYXRoXCI6Zm9yKGQ9byxsPXMrdGhpcy5vcHRpb25zLnVuZGVybmVhdGhWZXJ0aWNhbFRvcE9mZnNldCxhPTA7YTx0LmNoaWxkcmVuLmxlbmd0aDthKyspYz10LmNoaWxkcmVuW2FdLGk9dGhpcy5tZWFzdXJlKGMsZSksZD1NYXRoLm1heChkLGkud2lkdGgrdGhpcy5vcHRpb25zLnVuZGVybmVhdGhIb3Jpem9udGFsT2Zmc2V0KSxsKz1pLmhlaWdodCt0aGlzLm9wdGlvbnMudW5kZXJuZWF0aFZlcnRpY2FsU2VwYXJhdGlvbjtsLT10aGlzLm9wdGlvbnMudW5kZXJuZWF0aFZlcnRpY2FsU2VwYXJhdGlvbjticmVhaztjYXNlXCJEZWZhdWx0XCI6Zm9yKGQ9byxsPTAsYT0wO2E8dC5jaGlsZHJlbi5sZW5ndGg7YSsrKWM9dC5jaGlsZHJlblthXSxpPXRoaXMubWVhc3VyZShjLGUpLGQ9TWF0aC5tYXgoZCxvK3RoaXMub3B0aW9ucy5ob3Jpem9udGFsU2VwYXJhdGlvbitpLndpZHRoKSxsKz1pLmhlaWdodCt0aGlzLm9wdGlvbnMudmVydGljYWxTZXBhcmF0aW9uO2wtPXRoaXMub3B0aW9ucy52ZXJ0aWNhbFNlcGFyYXRpb247YnJlYWs7ZGVmYXVsdDp0aHJvd1wiVW5oYW5kbGVkIFRyZWVEaXJlY3Rpb24gaW4gdGhlIFJpZ2h0IGxheW91dCBtZWFzdXJpbmcuXCJ9YnJlYWs7Y2FzZVwiVXBcIjpjYXNlXCJEb3duXCI6c3dpdGNoKHQuY2hpbGRyZW5MYXlvdXQpe2Nhc2VcIlRvcEFsaWduZWRXaXRoUGFyZW50XCI6Y2FzZVwiQm90dG9tQWxpZ25lZFdpdGhQYXJlbnRcIjpicmVhaztjYXNlXCJVbmRlcm5lYXRoXCI6Zm9yKGQ9byxsPXMrdGhpcy5vcHRpb25zLnVuZGVybmVhdGhWZXJ0aWNhbFRvcE9mZnNldCxhPTA7YTx0LmNoaWxkcmVuLmxlbmd0aDthKyspYz10LmNoaWxkcmVuW2FdLGk9dGhpcy5tZWFzdXJlKGMsZSksZD1NYXRoLm1heChkLGkud2lkdGgrdGhpcy5vcHRpb25zLnVuZGVybmVhdGhIb3Jpem9udGFsT2Zmc2V0KSxsKz1pLmhlaWdodCt0aGlzLm9wdGlvbnMudW5kZXJuZWF0aFZlcnRpY2FsU2VwYXJhdGlvbjtsLT10aGlzLm9wdGlvbnMudW5kZXJuZWF0aFZlcnRpY2FsU2VwYXJhdGlvbjticmVhaztjYXNlXCJEZWZhdWx0XCI6Zm9yKGQ9MCxsPTAsYT0wO2E8dC5jaGlsZHJlbi5sZW5ndGg7YSsrKWM9dC5jaGlsZHJlblthXSxpPXRoaXMubWVhc3VyZShjLGUpLGQrPWkud2lkdGgrdGhpcy5vcHRpb25zLmhvcml6b250YWxTZXBhcmF0aW9uLGw9TWF0aC5tYXgobCxpLmhlaWdodCt0aGlzLm9wdGlvbnMudmVydGljYWxTZXBhcmF0aW9uK3MpO2QtPXRoaXMub3B0aW9ucy5ob3Jpem9udGFsU2VwYXJhdGlvbjticmVhaztkZWZhdWx0OnRocm93XCJVbmhhbmRsZWQgVHJlZURpcmVjdGlvbiBpbiB0aGUgRG93biBsYXlvdXQgbWVhc3VyaW5nLlwifWJyZWFrO2RlZmF1bHQ6dGhyb3dcIlVuaGFuZGxlZCBUcmVlRGlyZWN0aW9uIGluIHRoZSBsYXlvdXQgbWVhc3VyaW5nLlwifXU9bmV3IGgoZCxsKX1yZXR1cm4gdC5TZWN0b3JBbmdsZT1NYXRoLnNxcnQoZCpkLzQrbCpsLzQpLHQuU2l6ZT11LHV9LGFycmFuZ2U6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scyxyLGEsaCxkLGw9dC5hc3NvY2lhdGVkU2hhcGUuYm91bmRzKCksdT1sLndpZHRoLG09bC5oZWlnaHQ7aWYoZi5pc0VtcHR5KHQuY2hpbGRyZW4pKXQueD1lLngsdC55PWUueSx0LkJvdW5kaW5nUmVjdGFuZ2xlPW5ldyBjKGUueCxlLnksdSxtKTtlbHNlIHN3aXRjaCh0LnRyZWVEaXJlY3Rpb24pe2Nhc2VcIkxlZnRcIjpzd2l0Y2godC5jaGlsZHJlbkxheW91dCl7Y2FzZVwiVG9wQWxpZ25lZFdpdGhQYXJlbnRcIjpjYXNlXCJCb3R0b21BbGlnbmVkV2l0aFBhcmVudFwiOmJyZWFrO2Nhc2VcIlVuZGVybmVhdGhcIjpmb3IoZD1lLHQueD1kLngsdC55PWQueSx0LkJvdW5kaW5nUmVjdGFuZ2xlPW5ldyBjKHQueCx0LnksdC53aWR0aCx0LmhlaWdodCksaD1lLnkrbSt0aGlzLm9wdGlvbnMudW5kZXJuZWF0aFZlcnRpY2FsVG9wT2Zmc2V0LGk9MDtpPHMuY2hpbGRyZW4ubGVuZ3RoO2krKylzPXMuY2hpbGRyZW5baV0sYT1kLngtcy5hc3NvY2lhdGVkU2hhcGUud2lkdGgtdGhpcy5vcHRpb25zLnVuZGVybmVhdGhIb3Jpem9udGFsT2Zmc2V0LG49bmV3IHAoYSxoKSx0aGlzLmFycmFuZ2UocyxuKSxoKz1zLlNpemUuaGVpZ2h0K3RoaXMub3B0aW9ucy51bmRlcm5lYXRoVmVydGljYWxTZXBhcmF0aW9uO2JyZWFrO2Nhc2VcIkRlZmF1bHRcIjpmb3IoZD1uZXcgcChlLngrdC5TaXplLndpZHRoLXUsZS55Kyh0LlNpemUuaGVpZ2h0LW0pLzIpLHQueD1kLngsdC55PWQueSx0LkJvdW5kaW5nUmVjdGFuZ2xlPW5ldyBjKHQueCx0LnksdC53aWR0aCx0LmhlaWdodCksYT1kLngtdGhpcy5vcHRpb25zLmhvcml6b250YWxTZXBhcmF0aW9uLGg9ZS55LGk9MDtpPHQuY2hpbGRyZW4ubGVuZ3RoO2krKylzPXQuY2hpbGRyZW5baV0sbj1uZXcgcChhLXMuU2l6ZS53aWR0aCxoKSx0aGlzLmFycmFuZ2UocyxuKSxoKz1zLlNpemUuaGVpZ2h0K3RoaXMub3B0aW9ucy52ZXJ0aWNhbFNlcGFyYXRpb247YnJlYWs7ZGVmYXVsdDp0aHJvd1wiVW5zdXBwb3J0ZWQgVHJlZURpcmVjdGlvblwifWJyZWFrO2Nhc2VcIlJpZ2h0XCI6c3dpdGNoKHQuY2hpbGRyZW5MYXlvdXQpe2Nhc2VcIlRvcEFsaWduZWRXaXRoUGFyZW50XCI6Y2FzZVwiQm90dG9tQWxpZ25lZFdpdGhQYXJlbnRcIjpicmVhaztjYXNlXCJVbmRlcm5lYXRoXCI6Zm9yKGQ9ZSx0Lng9ZC54LHQueT1kLnksdC5Cb3VuZGluZ1JlY3RhbmdsZT1uZXcgYyh0LngsdC55LHQud2lkdGgsdC5oZWlnaHQpLGE9ZS54K3UrdGhpcy5vcHRpb25zLnVuZGVybmVhdGhIb3Jpem9udGFsT2Zmc2V0LGg9ZS55K20rdGhpcy5vcHRpb25zLnVuZGVybmVhdGhWZXJ0aWNhbFRvcE9mZnNldCxpPTA7aTx0LmNoaWxkcmVuLmxlbmd0aDtpKyspcz10LmNoaWxkcmVuW2ldLG49bmV3IHAoYSxoKSx0aGlzLmFycmFuZ2UocyxuKSxoKz1zLlNpemUuaGVpZ2h0K3RoaXMub3B0aW9ucy51bmRlcm5lYXRoVmVydGljYWxTZXBhcmF0aW9uO2JyZWFrO2Nhc2VcIkRlZmF1bHRcIjpmb3IoZD1uZXcgcChlLngsZS55Kyh0LlNpemUuaGVpZ2h0LW0pLzIpLHQueD1kLngsdC55PWQueSx0LkJvdW5kaW5nUmVjdGFuZ2xlPW5ldyBjKHQueCx0LnksdC53aWR0aCx0LmhlaWdodCksYT1lLngrdSt0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbFNlcGFyYXRpb24saD1lLnksaT0wO2k8dC5jaGlsZHJlbi5sZW5ndGg7aSsrKXM9dC5jaGlsZHJlbltpXSxuPW5ldyBwKGEsaCksdGhpcy5hcnJhbmdlKHMsbiksaCs9cy5TaXplLmhlaWdodCt0aGlzLm9wdGlvbnMudmVydGljYWxTZXBhcmF0aW9uO2JyZWFrO2RlZmF1bHQ6dGhyb3dcIlVuc3VwcG9ydGVkIFRyZWVEaXJlY3Rpb25cIn1icmVhaztjYXNlXCJVcFwiOmlmKGQ9bmV3IHAoZS54Kyh0LlNpemUud2lkdGgtdSkvMixlLnkrdC5TaXplLmhlaWdodC1tKSx0Lng9ZC54LHQueT1kLnksdC5Cb3VuZGluZ1JlY3RhbmdsZT1uZXcgYyh0LngsdC55LHQud2lkdGgsdC5oZWlnaHQpLE1hdGguYWJzKGQueC1lLngpPGcpe2ZvcihyPTAsaT0wO2k8dC5jaGlsZHJlbi5sZW5ndGg7aSsrKW89dC5jaGlsZHJlbltpXSxyKz1vLlNpemUud2lkdGgrdGhpcy5vcHRpb25zLmhvcml6b250YWxTZXBhcmF0aW9uO3ItPXRoaXMub3B0aW9ucy5ob3Jpem9udGFsU2VwYXJhdGlvbixhPWUueCsodS1yKS8yfWVsc2UgYT1lLng7Zm9yKGk9MDtpPHQuY2hpbGRyZW4ubGVuZ3RoO2krKylzPXQuY2hpbGRyZW5baV0saD1kLnktdGhpcy5vcHRpb25zLnZlcnRpY2FsU2VwYXJhdGlvbi1zLlNpemUuaGVpZ2h0LG49bmV3IHAoYSxoKSx0aGlzLmFycmFuZ2UocyxuKSxhKz1zLlNpemUud2lkdGgrdGhpcy5vcHRpb25zLmhvcml6b250YWxTZXBhcmF0aW9uO2JyZWFrO2Nhc2VcIkRvd25cIjpzd2l0Y2godC5jaGlsZHJlbkxheW91dCl7Y2FzZVwiVG9wQWxpZ25lZFdpdGhQYXJlbnRcIjpjYXNlXCJCb3R0b21BbGlnbmVkV2l0aFBhcmVudFwiOmJyZWFrO2Nhc2VcIlVuZGVybmVhdGhcIjpmb3IoZD1lLHQueD1kLngsdC55PWQueSx0LkJvdW5kaW5nUmVjdGFuZ2xlPW5ldyBjKHQueCx0LnksdC53aWR0aCx0LmhlaWdodCksYT1lLngrdGhpcy5vcHRpb25zLnVuZGVybmVhdGhIb3Jpem9udGFsT2Zmc2V0LGg9ZS55K20rdGhpcy5vcHRpb25zLnVuZGVybmVhdGhWZXJ0aWNhbFRvcE9mZnNldCxpPTA7aTx0LmNoaWxkcmVuLmxlbmd0aDtpKyspcz10LmNoaWxkcmVuW2ldLG49bmV3IHAoYSxoKSx0aGlzLmFycmFuZ2UocyxuKSxoKz1zLlNpemUuaGVpZ2h0K3RoaXMub3B0aW9ucy51bmRlcm5lYXRoVmVydGljYWxTZXBhcmF0aW9uO2JyZWFrO2Nhc2VcIkRlZmF1bHRcIjppZihkPW5ldyBwKGUueCsodC5TaXplLndpZHRoLXUpLzIsZS55KSx0Lng9ZC54LHQueT1kLnksdC5Cb3VuZGluZ1JlY3RhbmdsZT1uZXcgYyh0LngsdC55LHQud2lkdGgsdC5oZWlnaHQpLE1hdGguYWJzKGQueC1lLngpPGcpe2ZvcihyPTAsaT0wO2k8dC5jaGlsZHJlbi5sZW5ndGg7aSsrKW89dC5jaGlsZHJlbltpXSxyKz1vLlNpemUud2lkdGgrdGhpcy5vcHRpb25zLmhvcml6b250YWxTZXBhcmF0aW9uO3ItPXRoaXMub3B0aW9ucy5ob3Jpem9udGFsU2VwYXJhdGlvbixhPWUueCsodS1yKS8yfWVsc2UgYT1lLng7Zm9yKGk9MDtpPHQuY2hpbGRyZW4ubGVuZ3RoO2krKylzPXQuY2hpbGRyZW5baV0saD1kLnkrdGhpcy5vcHRpb25zLnZlcnRpY2FsU2VwYXJhdGlvbittLG49bmV3IHAoYSxoKSx0aGlzLmFycmFuZ2UocyxuKSxhKz1zLlNpemUud2lkdGgrdGhpcy5vcHRpb25zLmhvcml6b250YWxTZXBhcmF0aW9uO2JyZWFrO2RlZmF1bHQ6dGhyb3dcIlVuc3VwcG9ydGVkIFRyZWVEaXJlY3Rpb25cIn1icmVhaztjYXNlXCJOb25lXCI6YnJlYWs7ZGVmYXVsdDp0aHJvd1wiVW5zdXBwb3J0ZWQgVHJlZURpcmVjdGlvblwifX0sbGF5b3V0U3dpdGNoOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4sbyxzO2lmKHRoaXMuY2VudGVyJiYhZi5pc0VtcHR5KHRoaXMuY2VudGVyLmNoaWxkcmVuKSlzd2l0Y2godD10aGlzLm9wdGlvbnMuc3VidHlwZSxmLmlzVW5kZWZpbmVkKHQpJiYodD1cIkRvd25cIikscz10aGlzLmNlbnRlci5jaGlsZHJlbix0LnRvTG93ZXJDYXNlKCkpe2Nhc2VcInJhZGlhbFwiOmNhc2VcInJhZGlhbHRyZWVcIjp0aGlzLmxheW91dFJhZGlhbFRyZWUoKTticmVhaztjYXNlXCJtaW5kbWFwaG9yaXpvbnRhbFwiOmNhc2VcIm1pbmRtYXBcIjplPXRoaXMuY2VudGVyLmNoaWxkcmVuLDE9PT10aGlzLmNlbnRlci5jaGlsZHJlbi5sZW5ndGg/dGhpcy5sYXlvdXRSaWdodChlKToobz1zLmxlbmd0aC8yLGk9dih0aGlzLmNlbnRlci5jaGlsZHJlbixmdW5jdGlvbih0KXtyZXR1cm4gZi5pbmRleE9mKHMsdCk8b30pLG49dih0aGlzLmNlbnRlci5jaGlsZHJlbixmdW5jdGlvbih0KXtyZXR1cm4gZi5pbmRleE9mKHMsdCk+PW99KSx0aGlzLmxheW91dExlZnQoaSksdGhpcy5sYXlvdXRSaWdodChuKSk7YnJlYWs7Y2FzZVwibWluZG1hcHZlcnRpY2FsXCI6ZT10aGlzLmNlbnRlci5jaGlsZHJlbiwxPT09dGhpcy5jZW50ZXIuY2hpbGRyZW4ubGVuZ3RoP3RoaXMubGF5b3V0RG93bihlKToobz1zLmxlbmd0aC8yLGk9dih0aGlzLmNlbnRlci5jaGlsZHJlbixmdW5jdGlvbih0KXtyZXR1cm4gZi5pbmRleE9mKHMsdCk8b30pLG49dih0aGlzLmNlbnRlci5jaGlsZHJlbixmdW5jdGlvbih0KXtyZXR1cm4gZi5pbmRleE9mKHMsdCk+PW99KSx0aGlzLmxheW91dFVwKGkpLHRoaXMubGF5b3V0RG93bihuKSk7YnJlYWs7Y2FzZVwicmlnaHRcIjp0aGlzLmxheW91dFJpZ2h0KHRoaXMuY2VudGVyLmNoaWxkcmVuKTticmVhaztjYXNlXCJsZWZ0XCI6dGhpcy5sYXlvdXRMZWZ0KHRoaXMuY2VudGVyLmNoaWxkcmVuKTticmVhaztjYXNlXCJ1cFwiOmNhc2VcImJvdHRvbVwiOnRoaXMubGF5b3V0VXAodGhpcy5jZW50ZXIuY2hpbGRyZW4pO2JyZWFrO2Nhc2VcImRvd25cIjpjYXNlXCJ0b3BcIjp0aGlzLmxheW91dERvd24odGhpcy5jZW50ZXIuY2hpbGRyZW4pO2JyZWFrO2Nhc2VcInRpcG92ZXJcIjpjYXNlXCJ0aXBvdmVydHJlZVwiOmlmKHRoaXMub3B0aW9ucy50aXBPdmVyVHJlZVN0YXJ0TGV2ZWw8MCl0aHJvd1wiVGhlIHRpcC1vdmVyIGxldmVsIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuXCI7dGhpcy50aXBPdmVyVHJlZSh0aGlzLmNlbnRlci5jaGlsZHJlbix0aGlzLm9wdGlvbnMudGlwT3ZlclRyZWVTdGFydExldmVsKTticmVhaztjYXNlXCJ1bmRlZmluZWRcIjpjYXNlXCJub25lXCI6fX19KSxDPXkuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoeS5mbi5pbml0LmNhbGwoZSksZi5pc1VuZGVmaW5lZCh0KSl0aHJvd1wiTm8gZGlhZ3JhbSBzcGVjaWZpZWQuXCI7dGhpcy5kaWFncmFtPXR9LGxheW91dDpmdW5jdGlvbih0KXt2YXIgZSxpO3JldHVybiB0aGlzLnRyYW5zZmVyT3B0aW9ucyh0KSxlPW5ldyB3KHRoaXMuZGlhZ3JhbSksdGhpcy5ncmFwaD1lLmNvbnZlcnQoKSxpPXRoaXMubGF5b3V0Q29tcG9uZW50cygpLG5ldyBuLkxheW91dFN0YXRlKHRoaXMuZGlhZ3JhbSxpKX0sbGF5b3V0Q29tcG9uZW50czpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLG8scyxyLGE7aWYoIXRoaXMuZ3JhcGguaXNFbXB0eSgpJiYodD10aGlzLmdyYXBoLmdldENvbm5lY3RlZENvbXBvbmVudHMoKSwhZi5pc0VtcHR5KHQpKSl7Zm9yKGU9bmV3IGIodGhpcy5vcHRpb25zKSxpPVtdLG49MDtuPHQubGVuZ3RoO24rKyl7aWYobz10W25dLHM9dGhpcy5nZXRUcmVlKG8pLCFzKXRocm93XCJGYWlsZWQgdG8gZmluZCBhIHNwYW5uaW5nIHRyZWUgZm9yIHRoZSBjb21wb25lbnQuXCI7cj1zLnJvb3QsYT1zLnRyZWUsZS5sYXlvdXQoYSxyKSxpLnB1c2goYSl9cmV0dXJuIHRoaXMuZ3JpZExheW91dENvbXBvbmVudHMoaSl9fSxnZXRUcmVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvLHMscj1udWxsO2lmKHRoaXMub3B0aW9ucy5yb290cyYmdGhpcy5vcHRpb25zLnJvb3RzLmxlbmd0aD4wKWZvcihlPTAsaT10Lm5vZGVzLmxlbmd0aDtlPGk7ZSsrKWZvcihuPXQubm9kZXNbZV0sbz0wO288dGhpcy5vcHRpb25zLnJvb3RzLmxlbmd0aDtvKyspaWYocz10aGlzLm9wdGlvbnMucm9vdHNbb10scz09PW4uYXNzb2NpYXRlZFNoYXBlKXtyPW47YnJlYWt9aWYoIXImJihyPXQucm9vdCgpLCFyKSl0aHJvd1wiVW5hYmxlIHRvIGZpbmQgYSByb290IGZvciB0aGUgdHJlZS5cIjtyZXR1cm4gdGhpcy5nZXRUcmVlRm9yUm9vdCh0LHIpfSxnZXRUcmVlRm9yUm9vdDpmdW5jdGlvbih0LGUpe3ZhciBpPXQuZ2V0U3Bhbm5pbmdUcmVlKGUpO3JldHVybiBmLmlzVW5kZWZpbmVkKGkpfHxpLmlzRW1wdHkoKT9udWxsOnt0cmVlOmkscm9vdDppLnJvb3R9fX0pLFM9eS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih5LmZuLmluaXQuY2FsbChlKSxmLmlzVW5kZWZpbmVkKHQpKXRocm93XCJEaWFncmFtIGlzIG5vdCBzcGVjaWZpZWQuXCI7dGhpcy5kaWFncmFtPXR9LGxheW91dDpmdW5jdGlvbih0KXt2YXIgZSxpLG8scyxyLGE7aWYodGhpcy50cmFuc2Zlck9wdGlvbnModCksZT1uZXcgdyh0aGlzLmRpYWdyYW0pLGk9ZS5jb252ZXJ0KHQpLCFpLmlzRW1wdHkoKSYmKG89aS5nZXRDb25uZWN0ZWRDb21wb25lbnRzKCksIWYuaXNFbXB0eShvKSkpe2ZvcihzPTA7czxvLmxlbmd0aDtzKyspcj1vW3NdLHRoaXMubGF5b3V0R3JhcGgocix0KTtyZXR1cm4gYT10aGlzLmdyaWRMYXlvdXRDb21wb25lbnRzKG8pLG5ldyBuLkxheW91dFN0YXRlKHRoaXMuZGlhZ3JhbSxhKX19LF9pbml0UnVudGltZVByb3BlcnRpZXM6ZnVuY3Rpb24oKXt2YXIgdCxlO2Zvcih0PTA7dDx0aGlzLmdyYXBoLm5vZGVzLmxlbmd0aDt0KyspZT10aGlzLmdyYXBoLm5vZGVzW3RdLGUubGF5ZXI9LTEsZS5kb3duc3RyZWFtTGlua0NvdW50PTAsZS51cHN0cmVhbUxpbmtDb3VudD0wLGUuaXNWaXJ0dWFsPSExLGUudUJhcnlDZW50ZXI9MCxlLmRCYXJ5Q2VudGVyPTAsZS51cHN0cmVhbVByaW9yaXR5PTAsZS5kb3duc3RyZWFtUHJpb3JpdHk9MCxlLmdyaWRQb3NpdGlvbj0wfSxfcHJlcGFyZTpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbyxzLHIsYSxoLGMsbCx1LHA9W10sZz1uZXcgZCxtPTA7Zm9yKGYuZm9yRWFjaCh0Lm5vZGVzLGZ1bmN0aW9uKHQpezA9PT10LmluY29taW5nLmxlbmd0aCYmKGcuc2V0KHQsMCkscC5wdXNoKHQpKX0pO3AubGVuZ3RoPjA7KWZvcihzPXAuc2hpZnQoKSxlPTA7ZTxzLm91dGdvaW5nLmxlbmd0aDtlKyspbj1zLm91dGdvaW5nW2VdLHI9bi50YXJnZXQsbz1nLmNvbnRhaW5zS2V5KHIpP01hdGgubWF4KGcuZ2V0KHMpKzEsZy5nZXQocikpOmcuZ2V0KHMpKzEsZy5zZXQocixvKSxvPm0mJihtPW8pLF8ocCxyKXx8cC5wdXNoKHIpO2ZvcihhPWcua2V5cygpLGEuc29ydChmdW5jdGlvbih0LGUpe3ZhciBpPWcuZ2V0KHQpLG49Zy5nZXQoZSk7cmV0dXJuIGYuc2lnbihuLWkpfSksaD0wO2g8YS5sZW5ndGg7KytoKWlmKGM9YVtoXSxsPU51bWJlci5NQVhfVkFMVUUsMCE9PWMub3V0Z29pbmcubGVuZ3RoKXtmb3IoaT0wO2k8Yy5vdXRnb2luZy5sZW5ndGg7KytpKW49Yy5vdXRnb2luZ1tpXSxsPU1hdGgubWluKGwsZy5nZXQobi50YXJnZXQpKTtsPjEmJmcuc2V0KGMsbC0xKX1mb3IodGhpcy5sYXllcnM9W10sZT0wO2U8bSsxO2UrKyl1PVtdLHUubGlua3NUbz17fSx0aGlzLmxheWVycy5wdXNoKHUpO2ZvcihnLmZvckVhY2goZnVuY3Rpb24odCxlKXt0LmxheWVyPWUsdGhpcy5sYXllcnNbZV0ucHVzaCh0KX0sdGhpcyksaT0wO2k8dGhpcy5sYXllcnMubGVuZ3RoO2krKylmb3IodT10aGlzLmxheWVyc1tpXSxlPTA7ZTx1Lmxlbmd0aDtlKyspdVtlXS5ncmlkUG9zaXRpb249ZX0sbGF5b3V0R3JhcGg6ZnVuY3Rpb24odCxlKXtpZihmLmlzVW5kZWZpbmVkKHQpKXRocm93XCJObyBncmFwaCBnaXZlbiBvciBncmFwaCBhbmFseXNpcyBvZiB0aGUgZGlhZ3JhbSBmYWlsZWQuXCI7Zi5pc0RlZmluZWQoZSkmJnRoaXMudHJhbnNmZXJPcHRpb25zKGUpLHRoaXMuZ3JhcGg9dCx0LnNldEl0ZW1JbmRpY2VzKCk7dmFyIGk9dC5tYWtlQWN5Y2xpYygpO3RoaXMuX2luaXRSdW50aW1lUHJvcGVydGllcygpLHRoaXMuX3ByZXBhcmUodCxlKSx0aGlzLl9kdW1taWZ5KCksdGhpcy5fb3B0aW1pemVDcm9zc2luZ3MoKSx0aGlzLl9zd2FwUGFpcnMoKSx0aGlzLmFycmFuZ2VOb2RlcygpLHRoaXMuX21vdmVUaGluZ3NBcm91bmQoKSx0aGlzLl9kZWR1bW1pZnkoKSxmLmZvckVhY2goaSxmdW5jdGlvbih0KXt0LnBvaW50cyYmdC5wb2ludHMucmV2ZXJzZSgpfSl9LHNldE1pbkRpc3Q6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPXQubGF5ZXIsbz10LmxheWVySW5kZXg7dGhpcy5taW5EaXN0YW5jZXNbbl1bb109aX0sZ2V0TWluRGlzdDpmdW5jdGlvbih0LGUpe3ZhciBpLG49MCxvPXQubGF5ZXJJbmRleCxzPWUubGF5ZXJJbmRleCxyPXQubGF5ZXIsYT1NYXRoLm1pbihvLHMpLGg9TWF0aC5tYXgobyxzKTtmb3IoaT1hO2k8aDsrK2kpbis9dGhpcy5taW5EaXN0YW5jZXNbcl1baV07cmV0dXJuIG59LHBsYWNlTGVmdFRvUmlnaHQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG8scyxyLGEsaCxjLGwsdT1uZXcgZDtmb3Iobj0wO248dGhpcy5sYXllcnMubGVuZ3RoOysrbilpZihvPXRbbl0pe2ZvcihlPTA7ZTxvLmxlbmd0aDtlKyspaT1vW2VdLHUuY29udGFpbnNLZXkoaSl8fHRoaXMucGxhY2VMZWZ0KGksdSxuKTtmb3Iocz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksZT0wO2U8by5sZW5ndGg7ZSsrKWk9b1tlXSxyPXRoaXMucmlnaHRTaWJsaW5nKGkpLHImJnRoaXMubm9kZUxlZnRDbGFzcy5nZXQocikhPT1uJiYocz1NYXRoLm1pbihzLHUuZ2V0KHIpLXUuZ2V0KGkpLXRoaXMuZ2V0TWluRGlzdChpLHIpKSk7aWYocz09PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSl7Zm9yKGE9W10sZT0wO2U8by5sZW5ndGg7ZSsrKWZvcihpPW9bZV0saD1bXSxmLmFkZFJhbmdlKGgsdGhpcy51cE5vZGVzLmdldChpKSksZi5hZGRSYW5nZShoLHRoaXMuZG93bk5vZGVzLmdldChpKSksYz0wO2M8aC5sZW5ndGg7YysrKWw9aFtjXSx0aGlzLm5vZGVMZWZ0Q2xhc3MuZ2V0KGwpPG4mJmEucHVzaCh1LmdldChsKS11LmdldChpKSk7YS5zb3J0KCkscz0wPT09YS5sZW5ndGg/MDphLmxlbmd0aCUyPT09MT9hW3RoaXMuaW50RGl2KGEubGVuZ3RoLDIpXTooYVt0aGlzLmludERpdihhLmxlbmd0aCwyKS0xXSthW3RoaXMuaW50RGl2KGEubGVuZ3RoLDIpXSkvMn1mb3IoZT0wO2U8by5sZW5ndGg7ZSsrKWk9b1tlXSx1LnNldChpLHUuZ2V0KGkpK3MpfXJldHVybiB1fSxwbGFjZVJpZ2h0VG9MZWZ0OmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvLHMscixhLGgsYyxsLHU9bmV3IGQ7Zm9yKG49MDtuPHRoaXMubGF5ZXJzLmxlbmd0aDsrK24paWYobz10W25dKXtmb3IoZT0wO2U8by5sZW5ndGg7ZSsrKWk9b1tlXSx1LmNvbnRhaW5zS2V5KGkpfHx0aGlzLnBsYWNlUmlnaHQoaSx1LG4pO2ZvcihzPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxlPTA7ZTxvLmxlbmd0aDtlKyspaT1vW2VdLHI9dGhpcy5sZWZ0U2libGluZyhpKSxyJiZ0aGlzLm5vZGVSaWdodENsYXNzLmdldChyKSE9PW4mJihzPU1hdGgubWF4KHMsdS5nZXQociktdS5nZXQoaSkrdGhpcy5nZXRNaW5EaXN0KHIsaSkpKTtpZihzPT09TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKXtmb3IoYT1bXSxlPTA7ZTxvLmxlbmd0aDtlKyspZm9yKGk9b1tlXSxoPVtdLGYuYWRkUmFuZ2UoaCx0aGlzLnVwTm9kZXMuZ2V0KGkpKSxmLmFkZFJhbmdlKGgsdGhpcy5kb3duTm9kZXMuZ2V0KGkpKSxjPTA7YzxoLmxlbmd0aDtjKyspbD1oW2NdLHRoaXMubm9kZVJpZ2h0Q2xhc3MuZ2V0KGwpPG4mJmEucHVzaCh1LmdldChpKS11LmdldChsKSk7YS5zb3J0KCkscz0wPT09YS5sZW5ndGg/MDphLmxlbmd0aCUyPT09MT9hW3RoaXMuaW50RGl2KGEubGVuZ3RoLDIpXTooYVt0aGlzLmludERpdihhLmxlbmd0aCwyKS0xXSthW3RoaXMuaW50RGl2KGEubGVuZ3RoLDIpXSkvMn1mb3IoZT0wO2U8by5sZW5ndGg7ZSsrKWk9b1tlXSx1LnNldChpLHUuZ2V0KGkpK3MpfXJldHVybiB1fSxfZ2V0TGVmdFdpbmc6ZnVuY3Rpb24oKXt2YXIgdD17dmFsdWU6bnVsbH0sZT10aGlzLmNvbXB1dGVDbGFzc2VzKHQsMSk7cmV0dXJuIHRoaXMubm9kZUxlZnRDbGFzcz10LnZhbHVlLGV9LF9nZXRSaWdodFdpbmc6ZnVuY3Rpb24oKXt2YXIgdD17dmFsdWU6bnVsbH0sZT10aGlzLmNvbXB1dGVDbGFzc2VzKHQsLTEpO3JldHVybiB0aGlzLm5vZGVSaWdodENsYXNzPXQudmFsdWUsZX0sY29tcHV0ZUNsYXNzZXM6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scyxyLGEsaCxjLGwsdT0wLGY9dC52YWx1ZT1uZXcgZDtmb3IoaT0wO2k8dGhpcy5sYXllcnMubGVuZ3RoOysraSlmb3IodT1pLG49dGhpcy5sYXllcnNbaV0sbz0xPT09ZT8wOm4ubGVuZ3RoLTE7MDw9byYmbzxuLmxlbmd0aDtvKz1lKWlmKHM9bltvXSxmLmNvbnRhaW5zS2V5KHMpKXU9Zi5nZXQocyk7ZWxzZSBpZihmLnNldChzLHUpLHMuaXNWaXJ0dWFsKWZvcihyPXRoaXMuX25vZGVzSW5MaW5rKHMpLGE9MDthPHIubGVuZ3RoO2ErKyloPXJbYV0sZi5zZXQoaCx1KTtmb3IoYz1bXSxsPTA7bDx0aGlzLmxheWVycy5sZW5ndGg7bCsrKWMucHVzaChudWxsKTtyZXR1cm4gZi5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7bnVsbD09PWNbZV0mJihjW2VdPVtdKSxjW2VdLnB1c2godCl9KSxjfSxfaXNWZXJ0aWNhbExheW91dDpmdW5jdGlvbigpe3JldHVyblwidXBcIj09PXRoaXMub3B0aW9ucy5zdWJ0eXBlLnRvTG93ZXJDYXNlKCl8fFwiZG93blwiPT09dGhpcy5vcHRpb25zLnN1YnR5cGUudG9Mb3dlckNhc2UoKXx8XCJ2ZXJ0aWNhbFwiPT09dGhpcy5vcHRpb25zLnN1YnR5cGUudG9Mb3dlckNhc2UoKX0sX2lzSG9yaXpvbnRhbExheW91dDpmdW5jdGlvbigpe3JldHVyblwicmlnaHRcIj09PXRoaXMub3B0aW9ucy5zdWJ0eXBlLnRvTG93ZXJDYXNlKCl8fFwibGVmdFwiPT09dGhpcy5vcHRpb25zLnN1YnR5cGUudG9Mb3dlckNhc2UoKXx8XCJob3Jpem9udGFsXCI9PT10aGlzLm9wdGlvbnMuc3VidHlwZS50b0xvd2VyQ2FzZSgpfSxfaXNJbmNyZWFzaW5nTGF5b3V0OmZ1bmN0aW9uKCl7cmV0dXJuXCJyaWdodFwiPT09dGhpcy5vcHRpb25zLnN1YnR5cGUudG9Mb3dlckNhc2UoKXx8XCJkb3duXCI9PT10aGlzLm9wdGlvbnMuc3VidHlwZS50b0xvd2VyQ2FzZSgpfSxfbW92ZVRoaW5nc0Fyb3VuZDpmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt2YXIgaSxuLG89TnVtYmVyLk1JTl9WQUxVRTtmb3IoaT0wO2k8dC5sZW5ndGg7KytpKW49dFtpXSxvPWUuX2lzVmVydGljYWxMYXlvdXQoKT9NYXRoLm1heChvLG4uaGVpZ2h0KTpNYXRoLm1heChvLG4ud2lkdGgpO3JldHVybiBvfXZhciBlLGksbixvLHMscixhLGgsYyxsLHUscCxnLG0sXyx2LHksdyx4LGIsQyxTLGssVCxNLEQsSTtmb3IoaT0wO2k8dGhpcy5sYXllcnMubGVuZ3RoOysraSlvPXRoaXMubGF5ZXJzW2ldLG8uc29ydCh0aGlzLl9ncmlkUG9zaXRpb25Db21wYXJlcik7Zm9yKHRoaXMubWluRGlzdGFuY2VzPVtdLGk9MDtpPHRoaXMubGF5ZXJzLmxlbmd0aDsrK2kpZm9yKG89dGhpcy5sYXllcnNbaV0sdGhpcy5taW5EaXN0YW5jZXNbaV09W10scz0wO3M8by5sZW5ndGg7KytzKW49b1tzXSxuLmxheWVySW5kZXg9cyx0aGlzLm1pbkRpc3RhbmNlc1tpXVtzXT10aGlzLm9wdGlvbnMubm9kZURpc3RhbmNlLHM8by5sZW5ndGgtMSYmKHRoaXMubWluRGlzdGFuY2VzW2ldW3NdKz10aGlzLl9pc1ZlcnRpY2FsTGF5b3V0KCk/KG4ud2lkdGgrb1tzKzFdLndpZHRoKS8yOihuLmhlaWdodCtvW3MrMV0uaGVpZ2h0KS8yKTtmb3IodGhpcy5kb3duTm9kZXM9bmV3IGQsdGhpcy51cE5vZGVzPW5ldyBkLGYuZm9yRWFjaCh0aGlzLmdyYXBoLm5vZGVzLGZ1bmN0aW9uKHQpe3RoaXMuZG93bk5vZGVzLnNldCh0LFtdKSx0aGlzLnVwTm9kZXMuc2V0KHQsW10pfSx0aGlzKSxmLmZvckVhY2godGhpcy5ncmFwaC5saW5rcyxmdW5jdGlvbih0KXt2YXIgZT10LnNvdXJjZSxpPXQudGFyZ2V0LG49bnVsbCxvPW51bGw7ZS5sYXllcj5pLmxheWVyPyhuPXQuc291cmNlLG89dC50YXJnZXQpOihvPXQuc291cmNlLG49dC50YXJnZXQpLHRoaXMuZG93bk5vZGVzLmdldChvKS5wdXNoKG4pLHRoaXMudXBOb2Rlcy5nZXQobikucHVzaChvKX0sdGhpcyksdGhpcy5kb3duTm9kZXMuZm9yRWFjaFZhbHVlKGZ1bmN0aW9uKHQpe3Quc29ydCh0aGlzLl9ncmlkUG9zaXRpb25Db21wYXJlcil9LHRoaXMpLHRoaXMudXBOb2Rlcy5mb3JFYWNoVmFsdWUoZnVuY3Rpb24odCl7dC5zb3J0KHRoaXMuX2dyaWRQb3NpdGlvbkNvbXBhcmVyKX0sdGhpcyksaT0wO2k8dGhpcy5sYXllcnMubGVuZ3RoLTE7KytpKWZvcihvPXRoaXMubGF5ZXJzW2ldLHI9MDtyPG8ubGVuZ3RoLTE7cisrKWlmKGE9b1tyXSxhLmlzVmlydHVhbCYmKGg9dGhpcy5kb3duTm9kZXMuZ2V0KGEpWzBdLGguaXNWaXJ0dWFsKSlmb3Iocz1yKzE7czxvLmxlbmd0aDsrK3Mpbj1vW3NdLG4uaXNWaXJ0dWFsJiYoYz10aGlzLmRvd25Ob2Rlcy5nZXQobilbMF0sYy5pc1ZpcnR1YWwmJmguZ3JpZFBvc2l0aW9uPmMuZ3JpZFBvc2l0aW9uJiYobD1oLmdyaWRQb3NpdGlvbixoLmdyaWRQb3NpdGlvbj1jLmdyaWRQb3NpdGlvbixjLmdyaWRQb3NpdGlvbj1sLHU9aC5sYXllckluZGV4LHA9Yy5sYXllckluZGV4LHRoaXMubGF5ZXJzW2krMV1bdV09Yyx0aGlzLmxheWVyc1tpKzFdW3BdPWgsaC5sYXllckluZGV4PXAsYy5sYXllckluZGV4PXUpKTtmb3IoZz10aGlzLl9nZXRMZWZ0V2luZygpLG09dGhpcy5fZ2V0UmlnaHRXaW5nKCksXz10aGlzLnBsYWNlTGVmdFRvUmlnaHQoZyksdj10aGlzLnBsYWNlUmlnaHRUb0xlZnQobSkseT1uZXcgZCxmLmZvckVhY2godGhpcy5ncmFwaC5ub2RlcyxmdW5jdGlvbih0KXt5LnNldCh0LChfLmdldCh0KSt2LmdldCh0KSkvMil9KSx3PW5ldyBkLHg9bmV3IGQsaT0wO2k8dGhpcy5sYXllcnMubGVuZ3RoOysraSlmb3Iobz10aGlzLmxheWVyc1tpXSxiPS0xLEM9LTEscz0wO3M8by5sZW5ndGg7KytzKW49b1tzXSx3LnNldChuLDApLHguc2V0KG4sITEpLG4uaXNWaXJ0dWFsJiYoYj09PS0xP2I9czpiPT09cy0xP2I9czooQz1zLHcuc2V0KG9bYl0sMCkseS5nZXQobikteS5nZXQob1tiXSk9PT10aGlzLmdldE1pbkRpc3Qob1tiXSxuKT94LnNldChvW2JdLCEwKTp4LnNldChvW2JdLCExKSxiPXMpKTtmb3IoUz1bMSwtMV0sZi5mb3JFYWNoKFMsZnVuY3Rpb24odCl7dmFyIGksbixvLHMscixhLGgsYz0xPT09dD8wOnRoaXMubGF5ZXJzLmxlbmd0aC0xO1xuICAgIGZvcihpPWM7MDw9aSYmaTx0aGlzLmxheWVycy5sZW5ndGg7aSs9dCl7aWYobj10aGlzLmxheWVyc1tpXSxvPXRoaXMuX2ZpcnN0VmlydHVhbE5vZGUobikscz1udWxsLHI9bnVsbCxvIT09LTEpZm9yKHM9bltvXSxyPVtdLGU9MDtlPG87ZSsrKXIucHVzaChuW2VdKTtlbHNlIHM9bnVsbCxyPW47aWYoci5sZW5ndGg+MCl7Zm9yKHRoaXMuX3NlcXVlbmNlcih5LG51bGwscyx0LHIpLGU9MDtlPHIubGVuZ3RoLTE7KytlKXRoaXMuc2V0TWluRGlzdChyW2VdLHJbZSsxXSx5LmdldChyW2UrMV0pLXkuZ2V0KHJbZV0pKTtzJiZ0aGlzLnNldE1pbkRpc3QocltyLmxlbmd0aC0xXSxzLHkuZ2V0KHMpLXkuZ2V0KHJbci5sZW5ndGgtMV0pKX1mb3IoO3M7KXtpZihhPXRoaXMubmV4dFZpcnR1YWxOb2RlKG4scykpe2lmKHcuZ2V0KHMpPT09dCl7Zm9yKG89cy5sYXllckluZGV4LGg9YS5sYXllckluZGV4LHI9W10sZT1vKzE7ZTxoO2UrKylyLnB1c2gobltlXSk7ci5sZW5ndGg+MCYmdGhpcy5fc2VxdWVuY2VyKHkscyxhLHQscikseC5zZXQocywhMCl9fWVsc2V7Zm9yKG89cy5sYXllckluZGV4LHI9W10sZT1vKzE7ZTxuLmxlbmd0aDtlKyspci5wdXNoKG5bZV0pO2lmKHIubGVuZ3RoPjApe2Zvcih0aGlzLl9zZXF1ZW5jZXIoeSxzLG51bGwsdCxyKSxlPTA7ZTxyLmxlbmd0aC0xOysrZSl0aGlzLnNldE1pbkRpc3QocltlXSxyW2UrMV0seS5nZXQocltlKzFdKS15LmdldChyW2VdKSk7dGhpcy5zZXRNaW5EaXN0KHMsclswXSx5LmdldChyWzBdKS15LmdldChzKSl9fXM9YX10aGlzLmFkanVzdERpcmVjdGlvbnMoaSx0LHcseCl9fSx0aGlzKSxrPXRoaXMuX2lzSW5jcmVhc2luZ0xheW91dCgpPzA6dGhpcy5sYXllcnMubGVuZ3RoLTEsVD1mdW5jdGlvbih0LGUpe3JldHVybiBlLl9pc0luY3JlYXNpbmdMYXlvdXQoKT90PGUubGF5ZXJzLmxlbmd0aDp0Pj0wfSxNPXRoaXMuX2lzSW5jcmVhc2luZ0xheW91dCgpPzE6LTEsRD0wLGU9aztUKGUsdGhpcyk7ZSs9TSl7Zm9yKG89dGhpcy5sYXllcnNbZV0sST10KG8sdGhpcykscz0wO3M8by5sZW5ndGg7KytzKW49b1tzXSx0aGlzLl9pc1ZlcnRpY2FsTGF5b3V0KCk/KG4ueD15LmdldChuKSxuLnk9RCtJLzIpOihuLng9RCtJLzIsbi55PXkuZ2V0KG4pKTtEKz10aGlzLm9wdGlvbnMubGF5ZXJTZXBhcmF0aW9uK0l9fSxhZGp1c3REaXJlY3Rpb25zOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBvLHMscixhLGgsYyxkLGwsdSxmLHAsZyxtLF87aWYoISh0K2U8MHx8dCtlPj10aGlzLmxheWVycy5sZW5ndGgpKWZvcihvPW51bGwscz1udWxsLHI9dGhpcy5sYXllcnNbdCtlXSxhPTA7YTxyLmxlbmd0aDsrK2EpaWYoaD1yW2FdLGguaXNWaXJ0dWFsJiYoYz10aGlzLmdldE5laWdoYm9yT25MYXllcihoLHQpLGMuaXNWaXJ0dWFsKSl7aWYobyl7Zm9yKGQ9bi5nZXQocyksbD10aGlzLmxheWVyc1t0XSx1PXMubGF5ZXJJbmRleCxmPWMubGF5ZXJJbmRleCxwPXUrMTtwPGY7KytwKWxbcF0uaXNWaXJ0dWFsJiYoZD1kJiZuLmdldChsW3BdKSk7aWYoZClmb3IoaS5zZXQobyxlKSxnPW8ubGF5ZXJJbmRleCxtPWgubGF5ZXJJbmRleCxfPWcrMTtfPG07KytfKXJbX10uaXNWaXJ0dWFsJiZpLnNldChyW19dLGUpfW89aCxzPWN9fSxnZXROZWlnaGJvck9uTGF5ZXI6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnVwTm9kZXMuZ2V0KHQpWzBdO3JldHVybiBpLmxheWVyPT09ZT9pOihpPXRoaXMuZG93bk5vZGVzLmdldCh0KVswXSxpLmxheWVyPT09ZT9pOm51bGwpfSxfc2VxdWVuY2VyOmZ1bmN0aW9uKHQsZSxpLG4sbyl7aWYoMT09PW8ubGVuZ3RoJiZ0aGlzLl9zZXF1ZW5jZVNpbmdsZSh0LGUsaSxuLG9bMF0pLG8ubGVuZ3RoPjEpe3ZhciBzPW8ubGVuZ3RoLHI9dGhpcy5pbnREaXYocywyKTt0aGlzLl9zZXF1ZW5jZXIodCxlLGksbixvLnNsaWNlKDAscikpLHRoaXMuX3NlcXVlbmNlcih0LGUsaSxuLG8uc2xpY2UocikpLHRoaXMuY29tYmluZVNlcXVlbmNlcyh0LGUsaSxuLG8pfX0sX3NlcXVlbmNlU2luZ2xlOmZ1bmN0aW9uKHQsZSxpLG4sbyl7dmFyIHM9bj09PS0xP3RoaXMuZG93bk5vZGVzLmdldChvKTp0aGlzLnVwTm9kZXMuZ2V0KG8pLHI9cy5sZW5ndGg7MCE9PXImJihyJTI9PT0xP3Quc2V0KG8sdC5nZXQoc1t0aGlzLmludERpdihyLDIpXSkpOnQuc2V0KG8sKHQuZ2V0KHNbdGhpcy5pbnREaXYociwyKS0xXSkrdC5nZXQoc1t0aGlzLmludERpdihyLDIpXSkpLzIpLGUmJnQuc2V0KG8sTWF0aC5tYXgodC5nZXQobyksdC5nZXQoZSkrdGhpcy5nZXRNaW5EaXN0KGUsbykpKSxpJiZ0LnNldChvLE1hdGgubWluKHQuZ2V0KG8pLHQuZ2V0KGkpLXRoaXMuZ2V0TWluRGlzdChvLGkpKSkpfSxjb21iaW5lU2VxdWVuY2VzOmZ1bmN0aW9uKHQsZSxpLG4sbyl7dmFyIHMscixhLGgsYyxkLGwsdSxmLHAsZz1vLmxlbmd0aCxtPXRoaXMuaW50RGl2KGcsMiksXz1bXTtmb3Iocz0wO3M8bTsrK3Mpe2ZvcihyPTAsaD1uPT09LTE/dGhpcy5kb3duTm9kZXMuZ2V0KG9bc10pOnRoaXMudXBOb2Rlcy5nZXQob1tzXSksYT0wO2E8aC5sZW5ndGg7KythKWM9aFthXSx0LmdldChjKT49dC5nZXQob1tzXSk/cisrOihyLS0sXy5wdXNoKHtrOnQuZ2V0KGMpK3RoaXMuZ2V0TWluRGlzdChvW3NdLG9bbS0xXSksdjoyfSkpO18ucHVzaCh7azp0LmdldChvW3NdKSt0aGlzLmdldE1pbkRpc3Qob1tzXSxvW20tMV0pLHY6cn0pfWZvcihlJiZfLnB1c2goe2s6dC5nZXQoZSkrdGhpcy5nZXRNaW5EaXN0KGUsb1ttLTFdKSx2Ok51bWJlci5NQVhfVkFMVUV9KSxfLnNvcnQodGhpcy5fcG9zaXRpb25EZXNjZW5kaW5nQ29tcGFyZXIpLGw9W10scz1tO3M8ZzsrK3Mpe2ZvcihyPTAsaD1uPT09LTE/dGhpcy5kb3duTm9kZXMuZ2V0KG9bc10pOnRoaXMudXBOb2Rlcy5nZXQob1tzXSksYT0wO2E8aC5sZW5ndGg7KythKWM9aFthXSx0LmdldChjKTw9dC5nZXQob1tzXSk/cisrOihyLS0sbC5wdXNoKHtrOnQuZ2V0KGMpLXRoaXMuZ2V0TWluRGlzdChvW3NdLG9bbV0pLHY6Mn0pKTtsLnB1c2goe2s6dC5nZXQob1tzXSktdGhpcy5nZXRNaW5EaXN0KG9bc10sb1ttXSksdjpyfSl9Zm9yKGkmJmwucHVzaCh7azp0LmdldChpKS10aGlzLmdldE1pbkRpc3QoaSxvW21dKSx2Ok51bWJlci5NQVhfVkFMVUV9KSxsLnNvcnQodGhpcy5fcG9zaXRpb25Bc2NlbmRpbmdDb21wYXJlciksdT0wLGY9MCxwPXRoaXMuZ2V0TWluRGlzdChvW20tMV0sb1ttXSk7dC5nZXQob1ttXSktdC5nZXQob1ttLTFdKTxwOylpZih1PGYpe2lmKDA9PT1fLmxlbmd0aCl7dC5zZXQob1ttLTFdLHQuZ2V0KG9bbV0pLXApO2JyZWFrfWQ9Xy5zaGlmdCgpLHUrPWQudix0LnNldChvW20tMV0sZC5rKSx0LnNldChvW20tMV0sTWF0aC5tYXgodC5nZXQob1ttLTFdKSx0LmdldChvW21dKS1wKSl9ZWxzZXtpZigwPT09bC5sZW5ndGgpe3Quc2V0KG9bbV0sdC5nZXQob1ttLTFdKStwKTticmVha31kPWwuc2hpZnQoKSxmKz1kLnYsdC5zZXQob1ttXSxkLmspLHQuc2V0KG9bbV0sTWF0aC5taW4odC5nZXQob1ttXSksdC5nZXQob1ttLTFdKStwKSl9Zm9yKHM9bS0yO3M+PTA7cy0tKXQuc2V0KG9bc10sTWF0aC5taW4odC5nZXQob1tzXSksdC5nZXQob1ttLTFdKS10aGlzLmdldE1pbkRpc3Qob1tzXSxvW20tMV0pKSk7Zm9yKHM9bSsxO3M8ZztzKyspdC5zZXQob1tzXSxNYXRoLm1heCh0LmdldChvW3NdKSx0LmdldChvW21dKSt0aGlzLmdldE1pbkRpc3Qob1tzXSxvW21dKSkpfSxwbGFjZUxlZnQ6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPU51bWJlci5ORUdBVElWRV9JTkZJTklUWTtmLmZvckVhY2godGhpcy5fZ2V0Q29tcG9zaXRlKHQpLGZ1bmN0aW9uKHQpe3ZhciBvPXRoaXMubGVmdFNpYmxpbmcodCk7byYmdGhpcy5ub2RlTGVmdENsYXNzLmdldChvKT09PXRoaXMubm9kZUxlZnRDbGFzcy5nZXQodCkmJihlLmNvbnRhaW5zS2V5KG8pfHx0aGlzLnBsYWNlTGVmdChvLGUsaSksbj1NYXRoLm1heChuLGUuZ2V0KG8pK3RoaXMuZ2V0TWluRGlzdChvLHQpKSl9LHRoaXMpLG49PT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkmJihuPTApLGYuZm9yRWFjaCh0aGlzLl9nZXRDb21wb3NpdGUodCksZnVuY3Rpb24odCl7ZS5zZXQodCxuKX0pfSxwbGFjZVJpZ2h0OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7Zi5mb3JFYWNoKHRoaXMuX2dldENvbXBvc2l0ZSh0KSxmdW5jdGlvbih0KXt2YXIgbz10aGlzLnJpZ2h0U2libGluZyh0KTtvJiZ0aGlzLm5vZGVSaWdodENsYXNzLmdldChvKT09PXRoaXMubm9kZVJpZ2h0Q2xhc3MuZ2V0KHQpJiYoZS5jb250YWluc0tleShvKXx8dGhpcy5wbGFjZVJpZ2h0KG8sZSxpKSxuPU1hdGgubWluKG4sZS5nZXQobyktdGhpcy5nZXRNaW5EaXN0KHQsbykpKX0sdGhpcyksbj09PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSYmKG49MCksZi5mb3JFYWNoKHRoaXMuX2dldENvbXBvc2l0ZSh0KSxmdW5jdGlvbih0KXtlLnNldCh0LG4pfSl9LGxlZnRTaWJsaW5nOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGF5ZXJzW3QubGF5ZXJdLGk9dC5sYXllckluZGV4O3JldHVybiAwPT09aT9udWxsOmVbaS0xXX0scmlnaHRTaWJsaW5nOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGF5ZXJzW3QubGF5ZXJdLGk9dC5sYXllckluZGV4O3JldHVybiBpPT09ZS5sZW5ndGgtMT9udWxsOmVbaSsxXX0sX2dldENvbXBvc2l0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5pc1ZpcnR1YWw/dGhpcy5fbm9kZXNJbkxpbmsodCk6W3RdfSxhcnJhbmdlTm9kZXM6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixvLHMscixhO2ZvcihlPTA7ZTx0aGlzLmxheWVycy5sZW5ndGg7ZSsrKWZvcihuPXRoaXMubGF5ZXJzW2VdLGk9MDtpPG4ubGVuZ3RoO2krKylvPW5baV0sby51cHN0cmVhbVByaW9yaXR5PW8udXBzdHJlYW1MaW5rQ291bnQsby5kb3duc3RyZWFtUHJpb3JpdHk9by5kb3duc3RyZWFtTGlua0NvdW50O2ZvcihzPTIscj0wO3I8cztyKyspe2Zvcih0PXRoaXMubGF5ZXJzLmxlbmd0aC0xO3Q+PTE7dC0tKXRoaXMubGF5b3V0TGF5ZXIoITEsdCk7Zm9yKHQ9MDt0PHRoaXMubGF5ZXJzLmxlbmd0aC0xO3QrKyl0aGlzLmxheW91dExheWVyKCEwLHQpfWZvcihhPU51bWJlci5NQVhfVkFMVUUsZT0wO2U8dGhpcy5sYXllcnMubGVuZ3RoO2UrKylmb3Iobj10aGlzLmxheWVyc1tlXSxpPTA7aTxuLmxlbmd0aDtpKyspbz1uW2ldLGE9TWF0aC5taW4oYSxvLmdyaWRQb3NpdGlvbik7aWYoYTwwKWZvcihlPTA7ZTx0aGlzLmxheWVycy5sZW5ndGg7ZSsrKWZvcihuPXRoaXMubGF5ZXJzW2VdLGk9MDtpPG4ubGVuZ3RoO2krKylvPW5baV0sby5ncmlkUG9zaXRpb249by5ncmlkUG9zaXRpb24tYX0sbGF5b3V0TGF5ZXI6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scztmb3Iobj10P3RoaXMubGF5ZXJzW2k9ZSsxXTp0aGlzLmxheWVyc1tpPWUtMV0sbz1bXSxzPTA7czxuLmxlbmd0aDtzKyspby5wdXNoKG5bc10pO28uc29ydChmdW5jdGlvbih0LGUpe3ZhciBpPSh0LnVwc3RyZWFtUHJpb3JpdHkrdC5kb3duc3RyZWFtUHJpb3JpdHkpLzIsbj0oZS51cHN0cmVhbVByaW9yaXR5K2UuZG93bnN0cmVhbVByaW9yaXR5KS8yO3JldHVybiBNYXRoLmFicyhpLW4pPDFlLTQ/MDppPG4/MTotMX0pLGYuZm9yRWFjaChvLGZ1bmN0aW9uKHQpe3ZhciBlPXQuZ3JpZFBvc2l0aW9uLGk9dGhpcy5jYWxjQmFyeUNlbnRlcih0KSxvPSh0LnVwc3RyZWFtUHJpb3JpdHkrdC5kb3duc3RyZWFtUHJpb3JpdHkpLzI7aWYoIShNYXRoLmFicyhlLWkpPDFlLTR8fE1hdGguYWJzKGUtaSk8LjI1MDEpKWlmKGU8aSlmb3IoO2U8aSYmdGhpcy5tb3ZlUmlnaHQodCxuLG8pOyllPXQuZ3JpZFBvc2l0aW9uO2Vsc2UgZm9yKDtlPmkmJnRoaXMubW92ZUxlZnQodCxuLG8pOyllPXQuZ3JpZFBvc2l0aW9ufSx0aGlzKSxpPjAmJnRoaXMuY2FsY0Rvd25EYXRhKGktMSksaTx0aGlzLmxheWVycy5sZW5ndGgtMSYmdGhpcy5jYWxjVXBEYXRhKGkrMSl9LG1vdmVSaWdodDpmdW5jdGlvbih0LGUsaSl7dmFyIG4sbyxzPWYuaW5kZXhPZihlLHQpO3JldHVybiBzPT09ZS5sZW5ndGgtMT8odC5ncmlkUG9zaXRpb249dC5ncmlkUG9zaXRpb24rLjUsITApOihuPWVbcysxXSxvPShuLnVwc3RyZWFtUHJpb3JpdHkrbi5kb3duc3RyZWFtUHJpb3JpdHkpLzIsbi5ncmlkUG9zaXRpb24+dC5ncmlkUG9zaXRpb24rMT8odC5ncmlkUG9zaXRpb249dC5ncmlkUG9zaXRpb24rLjUsITApOiEobz5pfHxNYXRoLmFicyhvLWkpPDFlLTQpJiYoISF0aGlzLm1vdmVSaWdodChuLGUsaSkmJih0LmdyaWRQb3NpdGlvbj10LmdyaWRQb3NpdGlvbisuNSwhMCkpKX0sbW92ZUxlZnQ6ZnVuY3Rpb24odCxlLGkpe3ZhciBuLG8scz1mLmluZGV4T2YoZSx0KTtyZXR1cm4gMD09PXM/KHQuZ3JpZFBvc2l0aW9uPXQuZ3JpZFBvc2l0aW9uLS41LCEwKToobj1lW3MtMV0sbz0obi51cHN0cmVhbVByaW9yaXR5K24uZG93bnN0cmVhbVByaW9yaXR5KS8yLG4uZ3JpZFBvc2l0aW9uPHQuZ3JpZFBvc2l0aW9uLTE/KHQuZ3JpZFBvc2l0aW9uPXQuZ3JpZFBvc2l0aW9uLS41LCEwKTohKG8+aXx8TWF0aC5hYnMoby1pKTwxZS00KSYmKCEhdGhpcy5tb3ZlTGVmdChuLGUsaSkmJih0LmdyaWRQb3NpdGlvbj10LmdyaWRQb3NpdGlvbi0uNSwhMCkpKX0sbWFwVmlydHVhbE5vZGU6ZnVuY3Rpb24odCxlKXt0aGlzLm5vZGVUb0xpbmtNYXAuc2V0KHQsZSksdGhpcy5saW5rVG9Ob2RlTWFwLmNvbnRhaW5zS2V5KGUpfHx0aGlzLmxpbmtUb05vZGVNYXAuc2V0KGUsW10pLHRoaXMubGlua1RvTm9kZU1hcC5nZXQoZSkucHVzaCh0KX0sX25vZGVzSW5MaW5rOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxpbmtUb05vZGVNYXAuZ2V0KHRoaXMubm9kZVRvTGlua01hcC5nZXQodCkpfSxfZHVtbWlmeTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLG8sYSxoLGMsbCx1LHAsZyxtLF8sdix5LHcseCxiLEM7Zm9yKHRoaXMubGlua1RvTm9kZU1hcD1uZXcgZCx0aGlzLm5vZGVUb0xpbmtNYXA9bmV3IGQsbD10aGlzLmdyYXBoLmxpbmtzLnNsaWNlKDApLHU9dGhpcy5sYXllcnMscD1mdW5jdGlvbih0LGUsaSl7dVt0XS5saW5rc1RvW2VdPXVbdF0ubGlua3NUb1tlXXx8W10sdVt0XS5saW5rc1RvW2VdLnB1c2goaSl9LGM9MDtjPGwubGVuZ3RoO2MrKylpZihnPWxbY10sbT1nLnNvdXJjZSxfPWcudGFyZ2V0LHY9bS5sYXllcix5PV8ubGF5ZXIsdz1tLmdyaWRQb3NpdGlvbix4PV8uZ3JpZFBvc2l0aW9uLGI9KHgtdykvTWF0aC5hYnMoeS12KSxDPW0sdi15PjEpe2ZvcihoPXYtMTtoPnk7aC0tKXtmb3IoaT1uZXcgcyxpLng9bS54LGkueT1tLnksaS53aWR0aD1tLndpZHRoLzEwMCxpLmhlaWdodD1tLmhlaWdodC8xMDAsdD11W2hdLGU9KGgteSkqYit3LGU+dC5sZW5ndGgmJihlPXQubGVuZ3RoKSx3Pj11W3ZdLmxlbmd0aC0xJiZ4Pj11W3ldLmxlbmd0aC0xP2U9dC5sZW5ndGg6MD09PXcmJjA9PT14JiYoZT0wKSxpLmxheWVyPWgsaS51QmFyeUNlbnRlcj0wLGkuZEJhcnlDZW50ZXI9MCxpLnVwc3RyZWFtTGlua0NvdW50PTAsaS5kb3duc3RyZWFtTGlua0NvdW50PTAsaS5ncmlkUG9zaXRpb249ZSxpLmlzVmlydHVhbD0hMCxmLmluc2VydCh0LGksZSksbz1lKzE7bzx0Lmxlbmd0aDtvKyspbj10W29dLG4uZ3JpZFBvc2l0aW9uPW4uZ3JpZFBvc2l0aW9uKzE7YT1uZXcgcihDLGkpLGEuZGVwdGhPZkR1bW1pbmVzcz0wLHAoaC0xLGgsYSksQz1pLHRoaXMuZ3JhcGguX2FkZE5vZGUoaSksdGhpcy5ncmFwaC5hZGRMaW5rKGEpLGkuaW5kZXg9dGhpcy5ncmFwaC5ub2Rlcy5sZW5ndGgtMSx0aGlzLm1hcFZpcnR1YWxOb2RlKGksZyl9cCh5LTEseSxhKSxnLmNoYW5nZVNvdXJjZShDKSxnLmRlcHRoT2ZEdW1taW5lc3M9di15LTF9ZWxzZSBpZih2LXk8LTEpe2ZvcihoPXYrMTtoPHk7aCsrKXtmb3IoaT1uZXcgcyxpLng9bS54LGkueT1tLnksaS53aWR0aD1tLndpZHRoLzEwMCxpLmhlaWdodD1tLmhlaWdodC8xMDAsdD11W2hdLGU9KGgtdikqYit3LGU+dC5sZW5ndGgmJihlPXQubGVuZ3RoKSx3Pj11W3ZdLmxlbmd0aC0xJiZ4Pj11W3ldLmxlbmd0aC0xP2U9dC5sZW5ndGg6MD09PXcmJjA9PT14JiYoZT0wKSxpLmxheWVyPWgsaS51QmFyeUNlbnRlcj0wLGkuZEJhcnlDZW50ZXI9MCxpLnVwc3RyZWFtTGlua0NvdW50PTAsaS5kb3duc3RyZWFtTGlua0NvdW50PTAsaS5ncmlkUG9zaXRpb249ZSxpLmlzVmlydHVhbD0hMCxlJj1lLGYuaW5zZXJ0KHQsaSxlKSxvPWUrMTtvPHQubGVuZ3RoO28rKyluPXRbb10sbi5ncmlkUG9zaXRpb249bi5ncmlkUG9zaXRpb24rMTthPW5ldyByKEMsaSksYS5kZXB0aE9mRHVtbWluZXNzPTAscChoLTEsaCxhKSxDPWksdGhpcy5ncmFwaC5fYWRkTm9kZShpKSx0aGlzLmdyYXBoLmFkZExpbmsoYSksaS5pbmRleD10aGlzLmdyYXBoLm5vZGVzLmxlbmd0aC0xLHRoaXMubWFwVmlydHVhbE5vZGUoaSxnKX1wKHktMSx5LGcpLGcuY2hhbmdlU291cmNlKEMpLGcuZGVwdGhPZkR1bW1pbmVzcz15LXYtMX1lbHNlIHAodix5LGcpfSxfZGVkdW1taWZ5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUsaSxuLG8scyxyLGEsaD0hMDtoOylmb3IoaD0hMSx0PTA7dDx0aGlzLmdyYXBoLmxpbmtzLmxlbmd0aDt0KyspaWYoZT10aGlzLmdyYXBoLmxpbmtzW3RdLGUuZGVwdGhPZkR1bW1pbmVzcyl7Zm9yKGk9W10saS51bnNoaWZ0KHt4OmUudGFyZ2V0LngseTplLnRhcmdldC55fSksaS51bnNoaWZ0KHt4OmUuc291cmNlLngseTplLnNvdXJjZS55fSksbj1lLG89ZS5kZXB0aE9mRHVtbWluZXNzLHM9MDtzPG87cysrKXI9bi5zb3VyY2UsYT1yLmluY29taW5nWzBdLGkudW5zaGlmdCh7eDphLnNvdXJjZS54LHk6YS5zb3VyY2UueX0pLG49YTtlLmNoYW5nZVNvdXJjZShuLnNvdXJjZSksZS5kZXB0aE9mRHVtbWluZXNzPTAsaS5sZW5ndGg+Mj8oaS5zcGxpY2UoMCwxKSxpLnNwbGljZShpLmxlbmd0aC0xKSxlLnBvaW50cz1pKTplLnBvaW50cz1bXSxoPSEwO2JyZWFrfX0sX29wdGltaXplQ3Jvc3NpbmdzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9LTEsaT0zLG49MDswIT09ZSYmIShuKys+aSk7KXtmb3IoZT0wLHQ9dGhpcy5sYXllcnMubGVuZ3RoLTE7dD49MTt0LS0pZSs9dGhpcy5vcHRpbWl6ZUxheWVyQ3Jvc3NpbmdzKCExLHQpO2Zvcih0PTA7dDx0aGlzLmxheWVycy5sZW5ndGgtMTt0KyspZSs9dGhpcy5vcHRpbWl6ZUxheWVyQ3Jvc3NpbmdzKCEwLHQpfX0sY2FsY1VwRGF0YTpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbyxzLHIsYSxoLGM7aWYoMCE9PXQpe2ZvcihlPXRoaXMubGF5ZXJzW3RdLHM9bmV3IGwscj10aGlzLmxheWVyc1t0LTFdLGk9MDtpPHIubGVuZ3RoO2krKylzLmFkZChyW2ldKTtmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKXtmb3IoYT1lW2ldLGg9MCxjPTAsbj0wO248YS5pbmNvbWluZy5sZW5ndGg7bisrKW89YS5pbmNvbWluZ1tuXSxzLmNvbnRhaW5zKG8uc291cmNlKSYmKGMrKyxoKz1vLnNvdXJjZS5ncmlkUG9zaXRpb24pO2ZvcihuPTA7bjxhLm91dGdvaW5nLmxlbmd0aDtuKyspbz1hLm91dGdvaW5nW25dLHMuY29udGFpbnMoby50YXJnZXQpJiYoYysrLGgrPW8udGFyZ2V0LmdyaWRQb3NpdGlvbik7Yz4wPyhhLnVCYXJ5Q2VudGVyPWgvYyxhLnVwc3RyZWFtTGlua0NvdW50PWMpOihhLnVCYXJ5Q2VudGVyPWksYS51cHN0cmVhbUxpbmtDb3VudD0wKX19fSxjYWxjRG93bkRhdGE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG8scyxyLGEsaCxjO2lmKHQhPT10aGlzLmxheWVycy5sZW5ndGgtMSl7Zm9yKGU9dGhpcy5sYXllcnNbdF0scz1uZXcgbCxyPXRoaXMubGF5ZXJzW3QrMV0saT0wO2k8ci5sZW5ndGg7aSsrKXMuYWRkKHJbaV0pO2ZvcihpPTA7aTxlLmxlbmd0aDtpKyspe2ZvcihhPWVbaV0saD0wLGM9MCxuPTA7bjxhLmluY29taW5nLmxlbmd0aDtuKyspbz1hLmluY29taW5nW25dLHMuY29udGFpbnMoby5zb3VyY2UpJiYoYysrLGgrPW8uc291cmNlLmdyaWRQb3NpdGlvbik7Zm9yKG49MDtuPGEub3V0Z29pbmcubGVuZ3RoO24rKylvPWEub3V0Z29pbmdbbl0scy5jb250YWlucyhvLnRhcmdldCkmJihjKyssaCs9by50YXJnZXQuZ3JpZFBvc2l0aW9uKTtjPjA/KGEuZEJhcnlDZW50ZXI9aC9jLGEuZG93bnN0cmVhbUxpbmtDb3VudD1jKTooYS5kQmFyeUNlbnRlcj1pLGEuZG93bnN0cmVhbUxpbmtDb3VudD0wKX19fSxvcHRpbWl6ZUxheWVyQ3Jvc3NpbmdzOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixvLHMscixhLGgsYztmb3Iobj10P3RoaXMubGF5ZXJzW2k9ZSsxXTp0aGlzLmxheWVyc1tpPWUtMV0sbz1uLnNsaWNlKDApLHQ/dGhpcy5jYWxjVXBEYXRhKGkpOnRoaXMuY2FsY0Rvd25EYXRhKGkpLHM9dGhpcyxuLnNvcnQoZnVuY3Rpb24odCxlKXt2YXIgaSxuPXMuY2FsY0JhcnlDZW50ZXIodCksbz1zLmNhbGNCYXJ5Q2VudGVyKGUpO3JldHVybiBNYXRoLmFicyhuLW8pPDFlLTQ/dC5kZWdyZWUoKT09PWUuZGVncmVlKCk/cy5jb21wYXJlQnlJbmRleCh0LGUpOnQuZGVncmVlKCk8ZS5kZWdyZWUoKT8xOi0xOihpPTFlMyooby1uKSxpPjA/LTE6aTwwPzE6cy5jb21wYXJlQnlJbmRleCh0LGUpKX0pLGE9MCxyPTA7cjxuLmxlbmd0aDtyKyspbltyXSE9PW9bcl0mJmErKztpZihhPjApZm9yKGg9MCxyPTA7cjxuLmxlbmd0aDtyKyspYz1uW3JdLGMuZ3JpZFBvc2l0aW9uPWgrKztyZXR1cm4gYX0sX3N3YXBQYWlyczpmdW5jdGlvbigpe2Zvcih2YXIgdCxlLGksbixvLHMscixhLGgsYyxkLGwsdSxmLHAsZyxtLF89dGhpcy5vcHRpb25zLmxheWVyZWRJdGVyYXRpb25zLHY9MDs7KXtpZih2Kys+XylicmVhaztmb3IodD12JTQ8PTEsZT12JTQ9PT0xLGk9dD8wOnRoaXMubGF5ZXJzLmxlbmd0aC0xO3Q/aTw9dGhpcy5sYXllcnMubGVuZ3RoLTE6aT49MDtpKz10PzE6LTEpe2ZvcihuPXRoaXMubGF5ZXJzW2ldLG89ITEscz0hMCxyPTAsYT0wO2E8bi5sZW5ndGgtMTthKyspaD0wLGM9MCxkPTAscz8oMCE9PWkmJihoPXRoaXMuY291bnRMaW5rc0Nyb3NzaW5nQmV0d2VlblR3b0xheWVycyhpLTEsaSkpLGkhPT10aGlzLmxheWVycy5sZW5ndGgtMSYmKGM9dGhpcy5jb3VudExpbmtzQ3Jvc3NpbmdCZXR3ZWVuVHdvTGF5ZXJzKGksaSsxKSksdD9oKj0yOmMqPTIsZD1oK2MpOmQ9ciwwIT09ZCYmKGw9blthXSx1PW5bYSsxXSxmPWwuZ3JpZFBvc2l0aW9uLHA9dS5ncmlkUG9zaXRpb24sblthXT11LG5bYSsxXT1sLGwuZ3JpZFBvc2l0aW9uPXAsdS5ncmlkUG9zaXRpb249ZixoPTAsMCE9PWkmJihoPXRoaXMuY291bnRMaW5rc0Nyb3NzaW5nQmV0d2VlblR3b0xheWVycyhpLTEsaSkpLGM9MCxpIT09dGhpcy5sYXllcnMubGVuZ3RoLTEmJihjPXRoaXMuY291bnRMaW5rc0Nyb3NzaW5nQmV0d2VlblR3b0xheWVycyhpLGkrMSkpLHQ/aCo9MjpjKj0yLGc9aCtjLG09ITEsbT1lP2c+PWQ6Zz5kLG0/KGw9blthXSx1PW5bYSsxXSxmPWwuZ3JpZFBvc2l0aW9uLHA9dS5ncmlkUG9zaXRpb24sblthXT11LG5bYSsxXT1sLGwuZ3JpZFBvc2l0aW9uPXAsdS5ncmlkUG9zaXRpb249ZixyPWQscz0hMSk6KG89ITAscz0hMCkpO28mJihpIT09dGhpcy5sYXllcnMubGVuZ3RoLTEmJnRoaXMuY2FsY1VwRGF0YShpKzEpLDAhPT1pJiZ0aGlzLmNhbGNEb3duRGF0YShpLTEpKX19fSxjb3VudExpbmtzQ3Jvc3NpbmdCZXR3ZWVuVHdvTGF5ZXJzOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixvLHMscixhLGgsYyxkLGwsdSxmLHA9dGhpcy5sYXllcnNbdF0ubGlua3NUb1tlXSxnPTAsbT1wLmxlbmd0aDtmb3IoaD0wO2g8bTtoKyspZm9yKGk9cFtoXSxjPWgrMTtjPG07YysrKW49cFtjXSxpLnRhcmdldC5sYXllcj09PWU/KG89aS5zb3VyY2Uscz1pLnRhcmdldCk6KG89aS50YXJnZXQscz1pLnNvdXJjZSksbi50YXJnZXQubGF5ZXI9PT1lPyhyPW4uc291cmNlLGE9bi50YXJnZXQpOihyPW4udGFyZ2V0LGE9bi5zb3VyY2UpLGQ9by5ncmlkUG9zaXRpb24sbD1zLmdyaWRQb3NpdGlvbix1PXIuZ3JpZFBvc2l0aW9uLGY9YS5ncmlkUG9zaXRpb24sKGQtdSkqKGwtZik8MCYmZysrO3JldHVybiBnfSxjYWxjQmFyeUNlbnRlcjpmdW5jdGlvbih0KXt2YXIgZT10LnVwc3RyZWFtTGlua0NvdW50LGk9dC5kb3duc3RyZWFtTGlua0NvdW50LG49dC51QmFyeUNlbnRlcixvPXQuZEJhcnlDZW50ZXI7cmV0dXJuIGU+MCYmaT4wPyhuK28pLzI6ZT4wP246aT4wP286MH0sX2dyaWRQb3NpdGlvbkNvbXBhcmVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZ3JpZFBvc2l0aW9uPGUuZ3JpZFBvc2l0aW9uPy0xOnQuZ3JpZFBvc2l0aW9uPmUuZ3JpZFBvc2l0aW9uPzE6MH0sX3Bvc2l0aW9uQXNjZW5kaW5nQ29tcGFyZXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5rPGUuaz8tMTp0Lms+ZS5rPzE6MH0sX3Bvc2l0aW9uRGVzY2VuZGluZ0NvbXBhcmVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuazxlLms/MTp0Lms+ZS5rPy0xOjB9LF9maXJzdFZpcnR1YWxOb2RlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0uaXNWaXJ0dWFsKXJldHVybiBlO3JldHVybi0xfSxjb21wYXJlQnlJbmRleDpmdW5jdGlvbih0LGUpe3ZhciBpPXQuaW5kZXgsbj1lLmluZGV4O3JldHVybiBpPG4/MTppPm4/LTE6MH0saW50RGl2OmZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQtdCVlKS9lfSxuZXh0VmlydHVhbE5vZGU6ZnVuY3Rpb24odCxlKXt2YXIgaSxuPWUubGF5ZXJJbmRleDtmb3IoaT1uKzE7aTx0Lmxlbmd0aDsrK2kpaWYodFtpXS5pc1ZpcnR1YWwpcmV0dXJuIHRbaV07cmV0dXJuIG51bGx9fSksaz1pLkNsYXNzLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe2lmKGYuaXNVbmRlZmluZWQodCkpdGhyb3dcIk5vIGRpYWdyYW0gZ2l2ZW5cIjt0aGlzLmRpYWdyYW09dCx0aGlzLm5vZGVNYXA9bmV3IGQsdGhpcy5saW5rTWFwPW5ldyBkLHRoaXMuY2FwdHVyZShlP2U6dCl9LGNhcHR1cmU6ZnVuY3Rpb24odCl7dmFyIGUsaSxvLHMscixhLGgsZCxsO2lmKHQgaW5zdGFuY2VvZiBuLkdyYXBoKXtmb3Iocz0wO3M8dC5ub2Rlcy5sZW5ndGg7cysrKWU9dC5ub2Rlc1tzXSxvPWUuYXNzb2NpYXRlZFNoYXBlLHRoaXMubm9kZU1hcC5zZXQoby52aXN1YWwuaWQsbmV3IGMoZS54LGUueSxlLndpZHRoLGUuaGVpZ2h0KSk7Zm9yKHM9MDtzPHQubGlua3MubGVuZ3RoO3MrKylhPXQubGlua3Nbc10scj1hLmFzc29jaWF0ZWRDb25uZWN0aW9uLHRoaXMubGlua01hcC5zZXQoci52aXN1YWwuaWQsYS5wb2ludHMoKSl9ZWxzZSBpZih0IGluc3RhbmNlb2YgQXJyYXkpZm9yKGk9dCxzPTA7czxpLmxlbmd0aDtzKyspZT1pW3NdLG89ZS5hc3NvY2lhdGVkU2hhcGUsbyYmdGhpcy5ub2RlTWFwLnNldChvLnZpc3VhbC5pZCxuZXcgYyhlLngsZS55LGUud2lkdGgsZS5oZWlnaHQpKTtlbHNlIGlmKHQuaGFzT3duUHJvcGVydHkoXCJsaW5rc1wiKSYmdC5oYXNPd25Qcm9wZXJ0eShcIm5vZGVzXCIpKXtmb3IoaT10Lm5vZGVzLGg9dC5saW5rcyxzPTA7czxpLmxlbmd0aDtzKyspZT1pW3NdLG89ZS5hc3NvY2lhdGVkU2hhcGUsbyYmdGhpcy5ub2RlTWFwLnNldChvLnZpc3VhbC5pZCxuZXcgYyhlLngsZS55LGUud2lkdGgsZS5oZWlnaHQpKTtmb3Iocz0wO3M8aC5sZW5ndGg7cysrKWE9aFtzXSxyPWEuYXNzb2NpYXRlZENvbm5lY3Rpb24sciYmdGhpcy5saW5rTWFwLnNldChyLnZpc3VhbC5pZCxhLnBvaW50cyl9ZWxzZXtmb3IoZD10aGlzLmRpYWdyYW0uc2hhcGVzLGw9dGhpcy5kaWFncmFtLmNvbm5lY3Rpb25zLHM9MDtzPGQubGVuZ3RoO3MrKylvPWRbc10sdGhpcy5ub2RlTWFwLnNldChvLnZpc3VhbC5pZCxvLmJvdW5kcygpKTtmb3Iocz0wO3M8bC5sZW5ndGg7cysrKXI9bFtzXSx0aGlzLmxpbmtNYXAuc2V0KHIudmlzdWFsLmlkLHIucG9pbnRzKCkpfX19KTthKG4se2luaXQ6ZnVuY3Rpb24odCl7aS5pbml0KHQsbi51aSl9LFNwcmluZ0xheW91dDp4LFRyZWVMYXlvdXQ6QyxHcmFwaEFkYXB0ZXI6dyxMYXllcmVkTGF5b3V0OlMsTGF5b3V0QmFzZTp5LExheW91dFN0YXRlOmt9KX0od2luZG93LmtlbmRvLmpRdWVyeSl9LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlLGkpeyhpfHxlKSgpfSksZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcImRhdGF2aXovZGlhZ3JhbS9kb20ubWluXCIsW1wia2VuZG8uZGF0YS5taW5cIixcImtlbmRvLmRyYWdhbmRkcm9wLm1pblwiLFwia2VuZG8udG9vbGJhci5taW5cIixcImtlbmRvLmVkaXRhYmxlLm1pblwiLFwia2VuZG8ud2luZG93Lm1pblwiLFwia2VuZG8uZHJvcGRvd25saXN0Lm1pblwiLFwia2VuZG8uZGF0YXZpei5jb3JlLm1pblwiLFwia2VuZG8uZGF0YXZpei50aGVtZXMubWluXCIsXCJkYXRhdml6L2RpYWdyYW0vc3ZnLm1pblwiLFwiZGF0YXZpei9kaWFncmFtL3NlcnZpY2VzLm1pblwiLFwiZGF0YXZpei9kaWFncmFtL2xheW91dC5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSh0KXt2YXIgZT10Lm9yaWdpbmFsRXZlbnQsaT0wO3JldHVybiBlLndoZWVsRGVsdGE/KGk9LWUud2hlZWxEZWx0YS80MCxpPWk+MD94dC5jZWlsKGkpOnh0LmZsb29yKGkpKTplLmRldGFpbCYmKGk9ZS5kZXRhaWwpLGl9ZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5vcHRpb25zLm5hbWUudG9Mb3dlckNhc2UoKT09PXp0LnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gbyh0LGUpe3ZhciBpLG8scyxyLGE9T3Q7Zm9yKHM9MDtzPGUubGVuZ3RoO3MrKylvPWVbc10sbihvKXx8KHI9dC5kaXN0YW5jZVRvKG8ucG9zaXRpb24oKSkscjxhJiYoYT1yLGk9bykpO3JldHVybiBpfWZ1bmN0aW9uIHModCxlKXt2YXIgaSxuLG8scz1bXSxyPXQuZHJhd2luZ0NvbnRhaW5lcigpLmNoaWxkcmVuLGE9ci5sZW5ndGg7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKylmb3Iobj1lW2ldLG89MDtvPGE7bysrKWlmKHJbb109PW4uZHJhd2luZ0NvbnRhaW5lcigpKXtzLnB1c2gobyk7YnJlYWt9cmV0dXJuIHN9ZnVuY3Rpb24gcih0KXt2YXIgZT17fTtyZXR1cm4gdD10fHx7fSxtdCh0LnRleHQpJiZudWxsIT09dC50ZXh0JiYoZS50ZXh0PXQudGV4dCksbXQodC54KSYmbnVsbCE9PXQueCYmKGUueD10LngpLG10KHQueSkmJm51bGwhPT10LnkmJihlLnk9dC55KSxtdCh0LndpZHRoKSYmbnVsbCE9PXQud2lkdGgmJihlLndpZHRoPXQud2lkdGgpLG10KHQuaGVpZ2h0KSYmbnVsbCE9PXQuaGVpZ2h0JiYoZS5oZWlnaHQ9dC5oZWlnaHQpLG10KHQudHlwZSkmJm51bGwhPT10LnR5cGUmJihlLnR5cGU9dC50eXBlKSxlfWZ1bmN0aW9uIGEodCl7dmFyIGU9e307cmV0dXJuIHQ9dHx8e30sbXQodC50ZXh0KSYmbnVsbCE9PXQudGV4dCYmKGUuY29udGVudD10LnRleHQpLG10KHQudHlwZSkmJm51bGwhPT10LnR5cGUmJihlLnR5cGU9dC50eXBlKSxtdCh0LmZyb20pJiZudWxsIT09dC5mcm9tJiYoZS5mcm9tPXQuZnJvbSksbXQodC5mcm9tQ29ubmVjdG9yKSYmbnVsbCE9PXQuZnJvbUNvbm5lY3RvciYmKGUuZnJvbUNvbm5lY3Rvcj10LmZyb21Db25uZWN0b3IpLG10KHQuZnJvbVgpJiZudWxsIT09dC5mcm9tWCYmKGUuZnJvbVg9dC5mcm9tWCksbXQodC5mcm9tWSkmJm51bGwhPT10LmZyb21ZJiYoZS5mcm9tWT10LmZyb21ZKSxtdCh0LnRvKSYmbnVsbCE9PXQudG8mJihlLnRvPXQudG8pLG10KHQudG9Db25uZWN0b3IpJiZudWxsIT09dC50b0Nvbm5lY3RvciYmKGUudG9Db25uZWN0b3I9dC50b0Nvbm5lY3RvciksbXQodC50b1gpJiZudWxsIT09dC50b1gmJihlLnRvWD10LnRvWCksbXQodC50b1kpJiZudWxsIT09dC50b1kmJihlLnRvWT10LnRvWSksZX1mdW5jdGlvbiBoKGUsaSl7dmFyIG4sbz10aGlzLmRhdGFTb3VyY2UucmVhZGVyLm1vZGVsO28mJihuPW8uZm4uZmllbGRzLnRleHQ/XCJ0ZXh0XCI6by5pZEZpZWxkLHQoXCI8aW5wdXQgbmFtZT0nXCIraS5maWVsZCtcIicgLz5cIikuYXBwZW5kVG8oZSkua2VuZG9Ecm9wRG93bkxpc3Qoe2RhdGFWYWx1ZUZpZWxkOm8uaWRGaWVsZCxkYXRhVGV4dEZpZWxkOm4sZGF0YVNvdXJjZTp0aGlzLmRhdGFTb3VyY2UuZGF0YSgpLnRvSlNPTigpLG9wdGlvbkxhYmVsOlwiIFwiLHZhbHVlUHJpbWl0aXZlOiEwfSkpfWZ1bmN0aW9uIGModCl7dGhpcy5kYXRhSXRlbT10LHRoaXMuY2FsbGJhY2tzPVtdfWZ1bmN0aW9uIGQoKXt0aGlzLml0ZW1zPXt9fWZ1bmN0aW9uIGwodCl7dmFyIGU9dDtyZXR1cm4gdCBpbnN0YW5jZW9mIGtlbmRvLmRhdGEuTW9kZWwmJihlPXQudG9KU09OKCksZVt0LmlkRmllbGRdPXQuX2RlZmF1bHRJZCksZX1mdW5jdGlvbiB1KHQpe3ZhciBlLGksbj1bXSxvPVtdO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspZT10W2ldLGUgaW5zdGFuY2VvZiB4P28ucHVzaChlKTpuLnB1c2goZSk7cmV0dXJue3NoYXBlczpvLGNvbm5lY3Rpb25zOm59fWZ1bmN0aW9uIGYodCxlKXtyZXR1cm4gdC5yZWFkZXIubW9kZWw/bmV3IHQucmVhZGVyLm1vZGVsKGUpOm5ldyBrZW5kby5kYXRhLk9ic2VydmFibGVPYmplY3QoZSl9ZnVuY3Rpb24gcCh0LGUpe210KGVbdF0pJiZlLnNldCh0LG51bGwpfWZ1bmN0aW9uIGcodCxlLGkpe3ZhciBuLG87Zm9yKG89MDtvPGkubGVuZ3RoO28rKyluPWlbb10sZSYmIW10KGVbbl0pJiYoZVtuXT10W25dKX1mdW5jdGlvbiBtKHQpe3ZhciBlPXQuZHJhd2luZ0NvbnRhaW5lcigpLmNsaXBwZWRCQm94KG51bGwpOzA9PT1lLm9yaWdpbi54JiYwPT09ZS5vcmlnaW4ueXx8dC5wb3NpdGlvbigtZS5vcmlnaW4ueCwtZS5vcmlnaW4ueSl9ZnVuY3Rpb24gXyh0KXt0LnByZXZlbnREZWZhdWx0KCl9dmFyIHYseSx3LHgsYixDLFMsayxULE0sRCxJLFA9a2VuZG8uZGF0YXZpeixMPWtlbmRvLmRyYXdpbmcsRT1rZW5kby5nZW9tZXRyeSx6PVAuZGlhZ3JhbSxCPWtlbmRvLnVpLldpZGdldCxOPWtlbmRvLkNsYXNzLFI9dC5wcm94eSxBPWtlbmRvLmRlZXBFeHRlbmQsTz1rZW5kby5fb3V0ZXJXaWR0aCxVPWtlbmRvLl9vdXRlckhlaWdodCxWPXQuZXh0ZW5kLEg9a2VuZG8uZGF0YS5IaWVyYXJjaGljYWxEYXRhU291cmNlLEY9ei5DYW52YXMsRz16Lkdyb3VwLHE9ei5SZWN0YW5nbGUsSz16LkNpcmNsZSxXPXouQ29tcG9zaXRlVHJhbnNmb3JtLFg9ei5SZWN0LGo9ei5QYXRoLFk9ei5EZWxldGVTaGFwZVVuaXQsUT16LkRlbGV0ZUNvbm5lY3Rpb25Vbml0LEo9ei5UZXh0QmxvY2ssWj16LkltYWdlLCQ9ei5Qb2ludCx0dD16LkludGVyc2VjdCxldD16LkNvbm5lY3Rpb25FZGl0QWRvcm5lcixpdD16LlVuZG9SZWRvU2VydmljZSxudD16LlRvb2xTZXJ2aWNlLG90PXouU2VsZWN0b3Isc3Q9ei5SZXNpemluZ0Fkb3JuZXIscnQ9ei5Db25uZWN0b3JzQWRvcm5lcixhdD16LkN1cnNvcnMsaHQ9ei5VdGlscyxjdD1rZW5kby5PYnNlcnZhYmxlLGR0PXouVG9CYWNrVW5pdCxsdD16LlRvRnJvbnRVbml0LHV0PXouUG9seWxpbmVSb3V0ZXIsZnQ9ei5DYXNjYWRpbmdSb3V0ZXIscHQ9aHQuaXNVbmRlZmluZWQsZ3Q9aHQuaXNEZWZpbmVkLG10PWtlbmRvLnV0aWwuZGVmaW5lZCxfdD10LmlzQXJyYXksdnQ9a2VuZG8uaXNGdW5jdGlvbix5dD1odC5pc1N0cmluZyx3dD10LmlzUGxhaW5PYmplY3QseHQ9TWF0aCxidD1cIi5rZW5kb0RpYWdyYW1cIixDdD1cImNhc2NhZGluZ1wiLFN0PVwiaXRlbUJvdW5kc0NoYW5nZVwiLGt0PVwiY2hhbmdlXCIsVHQ9XCJjbGlja1wiLE10PVwiZHJhZ1wiLER0PVwiZHJhZ0VuZFwiLEl0PVwiZHJhZ1N0YXJ0XCIsUHQ9XCJtb3VzZUVudGVyXCIsTHQ9XCJtb3VzZUxlYXZlXCIsRXQ9XCJlcnJvclwiLHp0PVwiQXV0b1wiLEJ0PVwiVG9wXCIsTnQ9XCJSaWdodFwiLFJ0PVwiTGVmdFwiLEF0PVwiQm90dG9tXCIsT3Q9OTAwNzE5OTI1NDc0MDk5MixVdD1cInNlbGVjdFwiLFZ0PVwiaXRlbVJvdGF0ZVwiLEh0PVwicGFuXCIsRnQ9XCJ6b29tU3RhcnRcIixHdD1cInpvb21FbmRcIixxdD1cIm5vbmVcIixLdD02MDAsV3Q9NjAwLFh0PVwicmVjdGFuZ2xlXCIsanQ9MTAwLFl0PTEwMCxRdD0yMCxKdD0yMCxadD0wLCR0PVwiWWVsbG93XCIsdGU9TnVtYmVyLk1BWF9WQUxVRSxlZT0tTnVtYmVyLk1BWF9WQUxVRSxpZT1cImFic29sdXRlXCIsbmU9XCJ0cmFuc2Zvcm1lZFwiLG9lPVwicm90YXRlZFwiLHNlPVwidHJhbnNwYXJlbnRcIixyZT1cIndpZHRoXCIsYWU9XCJoZWlnaHRcIixoZT1cInhcIixjZT1cInlcIixkZT1cIkRPTU1vdXNlU2Nyb2xsXCIrYnQrXCIgbW91c2V3aGVlbFwiK2J0LGxlPS4wNSx1ZT01LGZlPSc8YSBjbGFzcz1cImstYnV0dG9uIGstYnV0dG9uLWljb250ZXh0ICM9Y2xhc3NOYW1lI1wiIGhyZWY9XCJcXFxcI1wiPjxzcGFuIGNsYXNzPVwiIz1pY29uQ2xhc3MjICM9aW1hZ2VDbGFzcyNcIj48L3NwYW4+Iz10ZXh0IzwvYT4nLHBlPTU7ei5EZWZhdWx0Q29ubmVjdG9ycz1be25hbWU6QnR9LHtuYW1lOkF0fSx7bmFtZTpSdH0se25hbWU6TnR9LHtuYW1lOnp0LHBvc2l0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFBvc2l0aW9uKFwiY2VudGVyXCIpfX1dLHY9e2NhbmNlbDp7dGV4dDpcIkNhbmNlbFwiLGltYWdlQ2xhc3M6XCJrLWktY2FuY2VsXCIsY2xhc3NOYW1lOlwiay1kaWFncmFtLWNhbmNlbFwiLGljb25DbGFzczpcImstaWNvblwifSx1cGRhdGU6e3RleHQ6XCJVcGRhdGVcIixpbWFnZUNsYXNzOlwiay1pLXVwZGF0ZVwiLGNsYXNzTmFtZTpcImstZGlhZ3JhbS11cGRhdGVcIixpY29uQ2xhc3M6XCJrLWljb25cIn19LHouc2hhcGVEZWZhdWx0cz1mdW5jdGlvbih0KXt2YXIgZT17dHlwZTpYdCxwYXRoOlwiXCIsYXV0b1NpemU6ITAsdmlzdWFsOm51bGwseDpadCx5Olp0LG1pbldpZHRoOlF0LG1pbkhlaWdodDpKdCx3aWR0aDpqdCxoZWlnaHQ6WXQsaG92ZXI6e30sZWRpdGFibGU6e2Nvbm5lY3Q6ITAsdG9vbHM6W119LGNvbm5lY3RvcnM6ei5EZWZhdWx0Q29ubmVjdG9ycyxyb3RhdGlvbjp7YW5nbGU6MH19O3JldHVybiBodC5zaW1wbGVFeHRlbmQoZSx0KSxlfSx5PWN0LmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2UuZGF0YUl0ZW09KHR8fHt9KS5kYXRhSXRlbSxjdC5mbi5pbml0LmNhbGwoZSksZS5vcHRpb25zPUEoe2lkOnoucmFuZG9tSWQoKX0sZS5vcHRpb25zLHQpLGUuaXNTZWxlY3RlZD0hMSxlLnZpc3VhbD1uZXcgRyh7aWQ6ZS5vcHRpb25zLmlkLGF1dG9TaXplOmUub3B0aW9ucy5hdXRvU2l6ZX0pLGUuaWQ9ZS5vcHRpb25zLmlkLGUuX3RlbXBsYXRlKCl9LG9wdGlvbnM6e2hvdmVyOnt9LGN1cnNvcjphdC5ncmlwLGNvbnRlbnQ6e2FsaWduOlwiY2VudGVyIG1pZGRsZVwifSxzZWxlY3RhYmxlOiEwLHNlcmlhbGl6YWJsZTohMCxlbmFibGU6ITB9LF9nZXRDdXJzb3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWRvcm5lcj90aGlzLmFkb3JuZXIuX2dldEN1cnNvcih0KTp0aGlzLm9wdGlvbnMuY3Vyc29yfSx2aXNpYmxlOmZ1bmN0aW9uKHQpe3JldHVybiBwdCh0KT90aGlzLnZpc3VhbC52aXNpYmxlKCk6KHRoaXMudmlzdWFsLnZpc2libGUodCksZSl9LGJvdW5kczpmdW5jdGlvbigpe30scmVmcmVzaDpmdW5jdGlvbigpe3RoaXMudmlzdWFsLnJlZHJhdygpfSxwb3NpdGlvbjpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnMueD10LngsdGhpcy5vcHRpb25zLnk9dC55LHRoaXMudmlzdWFsLnBvc2l0aW9uKHQpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuaWR9LHNlcmlhbGl6ZTpmdW5jdGlvbigpe3ZhciB0PUEoe30se29wdGlvbnM6dGhpcy5vcHRpb25zfSk7cmV0dXJuIHRoaXMuZGF0YUl0ZW0mJih0LmRhdGFJdGVtPVwiXCIrdGhpcy5kYXRhSXRlbSksdH0sX2NvbnRlbnQ6ZnVuY3Rpb24odCl7dmFyIGksbixvO3JldHVybiB0IT09ZSYmKGk9dGhpcy5vcHRpb25zLHouVXRpbHMuaXNTdHJpbmcodCk/aS5jb250ZW50LnRleHQ9dDpBKGkuY29udGVudCx0KSxuPWkuY29udGVudCxvPXRoaXMuX2NvbnRlbnRWaXN1YWwsbz90aGlzLl91cGRhdGVDb250ZW50VmlzdWFsKG4pOnRoaXMuX2NyZWF0ZUNvbnRlbnRWaXN1YWwobikpLHRoaXMub3B0aW9ucy5jb250ZW50LnRleHR9LF9jcmVhdGVDb250ZW50VmlzdWFsOmZ1bmN0aW9uKHQpe3QudGV4dCYmKHRoaXMuX2NvbnRlbnRWaXN1YWw9bmV3IEoodCksdGhpcy5fY29udGVudFZpc3VhbC5faW5jbHVkZUluQkJveD0hMSx0aGlzLnZpc3VhbC5hcHBlbmQodGhpcy5fY29udGVudFZpc3VhbCkpfSxfdXBkYXRlQ29udGVudFZpc3VhbDpmdW5jdGlvbih0KXt0aGlzLl9jb250ZW50VmlzdWFsLnJlZHJhdyh0KX0sX2hpdFRlc3Q6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5ib3VuZHMoKTtyZXR1cm4gdGhpcy52aXNpYmxlKCkmJmUuY29udGFpbnModCkmJnRoaXMub3B0aW9ucy5lbmFibGV9LF90ZW1wbGF0ZTpmdW5jdGlvbigpe3ZhciB0LGUsaT10aGlzO2kub3B0aW9ucy5jb250ZW50LnRlbXBsYXRlJiYodD1pLmRhdGFJdGVtfHx7fSxlPWtlbmRvLnRlbXBsYXRlKGkub3B0aW9ucy5jb250ZW50LnRlbXBsYXRlLHtwYXJhbU5hbWU6XCJkYXRhSXRlbVwifSksaS5vcHRpb25zLmNvbnRlbnQudGV4dD1lKHQpKX0sX2NhblNlbGVjdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuc2VsZWN0YWJsZSE9PSExfSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57aWQ6dGhpcy5vcHRpb25zLmlkfX19KSx3PU4uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dGhpcy5vcHRpb25zPUEoe30sdGhpcy5vcHRpb25zLGUpLHRoaXMuY29ubmVjdGlvbnM9W10sdGhpcy5zaGFwZT10fSxvcHRpb25zOnt3aWR0aDo3LGhlaWdodDo3LGZpbGw6e2NvbG9yOiR0fSxob3Zlcjp7fX0scG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLnBvc2l0aW9uP3RoaXMub3B0aW9ucy5wb3NpdGlvbih0aGlzLnNoYXBlKTp0aGlzLnNoYXBlLmdldFBvc2l0aW9uKHRoaXMub3B0aW9ucy5uYW1lKX0sdG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue3NoYXBlSWQ6XCJcIit0aGlzLnNoYXBlLGNvbm5lY3Rvcjp0aGlzLm9wdGlvbnMubmFtZX19fSksdy5wYXJzZT1mdW5jdGlvbih0LGUpe3ZhciBpLG4sbz1lLnNwbGl0KFwiOlwiKSxzPW9bMF0scj1vWzFdfHx6dDtmb3IoaT0wO2k8dC5zaGFwZXMubGVuZ3RoO2krKylpZihuPXQuc2hhcGVzW2ldLG4ub3B0aW9ucy5pZD09cylyZXR1cm4gbi5nZXRDb25uZWN0b3Ioci50cmltKCkpfSx4PXkuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpczt5LmZuLmluaXQuY2FsbChpLHQpLHRoaXMuZGlhZ3JhbT1lLHRoaXMudXBkYXRlT3B0aW9uc0Zyb21Nb2RlbCgpLHQ9aS5vcHRpb25zLGkuY29ubmVjdG9ycz1bXSxpLnR5cGU9dC50eXBlLGkuY3JlYXRlU2hhcGVWaXN1YWwoKSxpLnVwZGF0ZUJvdW5kcygpLGkuY29udGVudChpLmNvbnRlbnQoKSksaS5fY3JlYXRlQ29ubmVjdG9ycygpfSxvcHRpb25zOnouc2hhcGVEZWZhdWx0cygpLF9zZXRPcHRpb25zRnJvbU1vZGVsOmZ1bmN0aW9uKHQpe3ZhciBlPXIodHx8dGhpcy5kYXRhSXRlbSk7dGhpcy5vcHRpb25zPUEoe30sdGhpcy5vcHRpb25zLGUpLHRoaXMucmVkcmF3VmlzdWFsKCl9LHVwZGF0ZU9wdGlvbnNGcm9tTW9kZWw6ZnVuY3Rpb24odCxlKXt2YXIgaSxuO3RoaXMuZGlhZ3JhbSYmdGhpcy5kaWFncmFtLl9pc0VkaXRhYmxlJiYoaT1yKHR8fHRoaXMuZGF0YUl0ZW0pLHQmJmU/UC5pbkFycmF5KGUsW1wieFwiLFwieVwiLFwid2lkdGhcIixcImhlaWdodFwiXSk/KG49dGhpcy5ib3VuZHMoKSxuW2VdPXRbZV0sdGhpcy5ib3VuZHMobikpOih0aGlzLm9wdGlvbnMudmlzdWFsP3RoaXMuX3JlZHJhd1Zpc3VhbCgpOmkudHlwZSYmKHRoaXMub3B0aW9ucz1BKHt9LHRoaXMub3B0aW9ucyxpKSx0aGlzLl9yZWRyYXdWaXN1YWwoKSksdGhpcy5vcHRpb25zLmNvbnRlbnQmJih0aGlzLl90ZW1wbGF0ZSgpLHRoaXMuY29udGVudCh0aGlzLm9wdGlvbnMuY29udGVudCkpKTp0aGlzLm9wdGlvbnM9QSh7fSx0aGlzLm9wdGlvbnMsaSkpfSxfcmVkcmF3VmlzdWFsOmZ1bmN0aW9uKCl7dGhpcy52aXN1YWwuY2xlYXIoKSx0aGlzLl9jb250ZW50VmlzdWFsPW51bGwsdGhpcy5vcHRpb25zLmRhdGFJdGVtPXRoaXMuZGF0YUl0ZW0sdGhpcy5jcmVhdGVTaGFwZVZpc3VhbCgpLHRoaXMudXBkYXRlQm91bmRzKCl9LHJlZHJhd1Zpc3VhbDpmdW5jdGlvbigpe3RoaXMuX3JlZHJhd1Zpc3VhbCgpLHRoaXMub3B0aW9ucy5jb250ZW50JiYodGhpcy5fdGVtcGxhdGUoKSx0aGlzLmNvbnRlbnQodGhpcy5vcHRpb25zLmNvbnRlbnQpKX0sdXBkYXRlTW9kZWw6ZnVuY3Rpb24odCl7dmFyIGUsaSxuPXRoaXMuZGlhZ3JhbTtuJiZuLl9pc0VkaXRhYmxlJiYoZT10aGlzLl9ib3VuZHMsaT10aGlzLmRhdGFJdGVtLGkmJihuLl9zdXNwZW5kTW9kZWxSZWZyZXNoKCksbXQoaS54KSYmZS54IT09aS54JiZpLnNldChcInhcIixlLngpLG10KGkueSkmJmUueSE9PWkueSYmaS5zZXQoXCJ5XCIsZS55KSxtdChpLndpZHRoKSYmZS53aWR0aCE9PWkud2lkdGgmJmkuc2V0KFwid2lkdGhcIixlLndpZHRoKSxtdChpLmhlaWdodCkmJmUuaGVpZ2h0IT09aS5oZWlnaHQmJmkuc2V0KFwiaGVpZ2h0XCIsZS5oZWlnaHQpLHRoaXMuZGF0YUl0ZW09aSxuLl9yZXN1bWVNb2RlbFJlZnJlc2goKSx0JiZuLl9zeW5jU2hhcGVDaGFuZ2VzKCkpKX0sdXBkYXRlQm91bmRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52aXN1YWwuX21lYXN1cmUoITApLGU9dGhpcy5vcHRpb25zO3RoaXMuYm91bmRzKG5ldyBYKGUueCxlLnksdC53aWR0aCx0LmhlaWdodCkpLHRoaXMuX3JvdGF0ZSgpLHRoaXMuX2FsaWduQ29udGVudCgpfSxjb250ZW50OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2NvbnRlbnQodCk7cmV0dXJuIHRoaXMuX2FsaWduQ29udGVudCgpLGV9LF9hbGlnbkNvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixvLHM9dGhpcy5vcHRpb25zLmNvbnRlbnR8fHt9LHI9dGhpcy5fY29udGVudFZpc3VhbDtyJiZzLmFsaWduJiYodD10aGlzLnZpc3VhbC5fbWVhc3VyZSgpLGU9bmV3IHouUmVjdEFsaWduKHQpLGk9ci5kcmF3aW5nRWxlbWVudC5iYm94KG51bGwpLG49bmV3IFgoMCwwLGkud2lkdGgoKSxpLmhlaWdodCgpKSxvPWUuYWxpZ24obixzLmFsaWduKSxyLnBvc2l0aW9uKG8udG9wTGVmdCgpKSl9LF9jcmVhdGVDb25uZWN0b3JzOmZ1bmN0aW9uKCl7dmFyIHQsZSxpPXRoaXMub3B0aW9ucyxuPWkuY29ubmVjdG9ycy5sZW5ndGgsbz1pLmNvbm5lY3RvckRlZmF1bHRzO2ZvcihlPTA7ZTxuO2UrKyl0PW5ldyB3KHRoaXMsQSh7fSxvLGkuY29ubmVjdG9yc1tlXSkpLHRoaXMuY29ubmVjdG9ycy5wdXNoKHQpfSxib3VuZHM6ZnVuY3Rpb24odCl7dmFyIGUsaTtpZih0KWlmKHl0KHQpKXN3aXRjaCh0KXtjYXNlIG5lOmU9dGhpcy5fdHJhbnNmb3JtZWRCb3VuZHMoKTticmVhaztjYXNlIGllOmU9dGhpcy5fdHJhbnNmb3JtZWRCb3VuZHMoKSxpPXRoaXMuZGlhZ3JhbS5fcGFuLGUueCs9aS54LGUueSs9aS55O2JyZWFrO2Nhc2Ugb2U6ZT10aGlzLl9yb3RhdGVkQm91bmRzKCk7YnJlYWs7ZGVmYXVsdDplPXRoaXMuX2JvdW5kc31lbHNlIHRoaXMuX3NldEJvdW5kcyh0KSx0aGlzLl90cmlnZ2VyQm91bmRzQ2hhbmdlKCksdGhpcy5kaWFncmFtJiZ0aGlzLmRpYWdyYW0uX2xheW91dGluZ3x8dGhpcy5yZWZyZXNoQ29ubmVjdGlvbnMoKTtlbHNlIGU9dGhpcy5fYm91bmRzO3JldHVybiBlfSxfc2V0Qm91bmRzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMub3B0aW9ucyxpPXQudG9wTGVmdCgpLG49ZS54PWkueCxvPWUueT1pLnkscz1lLndpZHRoPXh0Lm1heCh0LndpZHRoLGUubWluV2lkdGgpLHI9ZS5oZWlnaHQ9eHQubWF4KHQuaGVpZ2h0LGUubWluSGVpZ2h0KTt0aGlzLl9ib3VuZHM9bmV3IFgobixvLHMsciksdGhpcy52aXN1YWwucmVkcmF3KHt4Om4seTpvLHdpZHRoOnMsaGVpZ2h0OnJ9KX0scG9zaXRpb246ZnVuY3Rpb24odCl7cmV0dXJuIHQ/KHRoaXMuYm91bmRzKG5ldyBYKHQueCx0LnksdGhpcy5fYm91bmRzLndpZHRoLHRoaXMuX2JvdW5kcy5oZWlnaHQpKSxlKTp0aGlzLl9ib3VuZHMudG9wTGVmdCgpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuc2VyaWFsaXplKCk7cmV0dXJuIHQub3B0aW9ucy5pZD16LnJhbmRvbUlkKCksdGhpcy5kaWFncmFtJiZ0aGlzLmRpYWdyYW0uX2lzRWRpdGFibGUmJm10KHRoaXMuZGF0YUl0ZW0pJiYodC5vcHRpb25zLmRhdGFJdGVtPWwodGhpcy5kYXRhSXRlbSkpLG5ldyB4KHQub3B0aW9ucyl9LHNlbGVjdDpmdW5jdGlvbih0KXt2YXIgZSxpLG49dGhpcy5kaWFncmFtO2lmKHB0KHQpJiYodD0hMCksdGhpcy5fY2FuU2VsZWN0KCkmJnRoaXMuaXNTZWxlY3RlZCE9dClyZXR1cm4gZT1bXSxpPVtdLHRoaXMuaXNTZWxlY3RlZD10LHRoaXMuaXNTZWxlY3RlZD8obi5fc2VsZWN0ZWRJdGVtcy5wdXNoKHRoaXMpLGUucHVzaCh0aGlzKSk6KGh0LnJlbW92ZShuLl9zZWxlY3RlZEl0ZW1zLHRoaXMpLGkucHVzaCh0aGlzKSksbi5faW50ZXJuYWxTZWxlY3Rpb258fG4uX3NlbGVjdGlvbkNoYW5nZWQoZSxpKSwhMH0scm90YXRlOmZ1bmN0aW9uKHQsaSxuKXt2YXIgbyxzLHIsYSxoPXRoaXMudmlzdWFsLnJvdGF0ZSgpO3JldHVybiB0IT09ZSYmKG4hPT0hMSYmdGhpcy5kaWFncmFtJiZ0aGlzLmRpYWdyYW0udW5kb1JlZG9TZXJ2aWNlJiZ0IT09aC5hbmdsZSYmdGhpcy5kaWFncmFtLnVuZG9SZWRvU2VydmljZS5hZGQobmV3IHouUm90YXRlVW5pdCh0aGlzLmRpYWdyYW0uX3Jlc2l6aW5nQWRvcm5lcixbdGhpc10sW2guYW5nbGVdKSwhMSksbz10aGlzLmJvdW5kcygpLHM9bmV3ICQoby53aWR0aC8yLG8uaGVpZ2h0LzIpLGkmJihyPXQtaC5hbmdsZSxhPW8uY2VudGVyKCkucm90YXRlKGksMzYwLXIpLm1pbnVzKHMpLHRoaXMuX3JvdGF0aW9uT2Zmc2V0PXRoaXMuX3JvdGF0aW9uT2Zmc2V0LnBsdXMoYS5taW51cyhvLnRvcExlZnQoKSkpLHRoaXMucG9zaXRpb24oYSkpLHRoaXMudmlzdWFsLnJvdGF0ZSh0LHMpLHRoaXMub3B0aW9ucy5yb3RhdGlvbi5hbmdsZT10LHRoaXMuZGlhZ3JhbSYmdGhpcy5kaWFncmFtLl9jb25uZWN0b3JzQWRvcm5lciYmdGhpcy5kaWFncmFtLl9jb25uZWN0b3JzQWRvcm5lci5yZWZyZXNoKCksdGhpcy5yZWZyZXNoQ29ubmVjdGlvbnMoKSx0aGlzLmRpYWdyYW0mJnRoaXMuZGlhZ3JhbS50cmlnZ2VyKFZ0LHtpdGVtOnRoaXN9KSksaH0sY29ubmVjdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG8scyxyLGEsaD1bXTtmb3IoZT0wO2U8dGhpcy5jb25uZWN0b3JzLmxlbmd0aDtlKyspZm9yKHM9dGhpcy5jb25uZWN0b3JzW2VdLG89cy5jb25uZWN0aW9ucyxpPTAsbztpPG8ubGVuZ3RoO2krKyluPW9baV0sXCJvdXRcIj09dD8ocj1uLnNvdXJjZSgpLHIuc2hhcGUmJnIuc2hhcGU9PXRoaXMmJmgucHVzaChuKSk6XCJpblwiPT10PyhhPW4udGFyZ2V0KCksYS5zaGFwZSYmYS5zaGFwZT09dGhpcyYmaC5wdXNoKG4pKTpoLnB1c2gobik7cmV0dXJuIGh9LHJlZnJlc2hDb25uZWN0aW9uczpmdW5jdGlvbigpe3QuZWFjaCh0aGlzLmNvbm5lY3Rpb25zKCksZnVuY3Rpb24oKXt0aGlzLnJlZnJlc2goKX0pfSxnZXRDb25uZWN0b3I6ZnVuY3Rpb24odCl7dmFyIGUsaTtpZigheXQodCkpcmV0dXJuIHQgaW5zdGFuY2VvZiAkP28odCx0aGlzLmNvbm5lY3RvcnMpOnRoaXMuY29ubmVjdG9ycy5sZW5ndGg/dGhpcy5jb25uZWN0b3JzWzBdOm51bGw7Zm9yKHQ9dC50b0xvY2FsZUxvd2VyQ2FzZSgpLGU9MDtlPHRoaXMuY29ubmVjdG9ycy5sZW5ndGg7ZSsrKWlmKGk9dGhpcy5jb25uZWN0b3JzW2VdLGkub3B0aW9ucy5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk9PXQpcmV0dXJuIGl9LGdldFBvc2l0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYm91bmRzKCksaT10LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpK3Quc2xpY2UoMSk7cmV0dXJuIHZ0KGVbaV0pP3RoaXMuX3RyYW5zZm9ybVBvaW50KGVbaV0oKSk6ZS5jZW50ZXIoKX0scmVkcmF3OmZ1bmN0aW9uKHQpe3ZhciBlLGk7dCYmKGU9dGhpcy5vcHRpb25zLHRoaXMuc2hhcGVWaXN1YWwucmVkcmF3KHRoaXMuX3Zpc3VhbE9wdGlvbnModCkpLHRoaXMuX2RpZmZOdW1lcmljT3B0aW9ucyh0LFtyZSxhZSxoZSxjZV0pJiYodGhpcy5ib3VuZHMobmV3IFgoZS54LGUueSxlLndpZHRoLGUuaGVpZ2h0KSksaT0hMCksdC5jb25uZWN0b3JzJiYoZS5jb25uZWN0b3JzPXQuY29ubmVjdG9ycyx0aGlzLl91cGRhdGVDb25uZWN0b3JzKCkpLGU9QShlLHQpLCh0LnJvdGF0aW9ufHxpKSYmdGhpcy5fcm90YXRlKCksZS5jb250ZW50JiZ0aGlzLmNvbnRlbnQoZS5jb250ZW50KSl9LF91cGRhdGVDb25uZWN0b3JzOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4sbz10aGlzLmNvbm5lY3Rpb25zKCk7Zm9yKHRoaXMuY29ubmVjdG9ycz1bXSx0aGlzLl9jcmVhdGVDb25uZWN0b3JzKCksbj0wO248by5sZW5ndGg7bisrKXQ9b1tuXSxlPXQuc291cmNlKCksaT10LnRhcmdldCgpLGUuc2hhcGUmJmUuc2hhcGU9PT10aGlzP3Quc291cmNlKHRoaXMuZ2V0Q29ubmVjdG9yKGUub3B0aW9ucy5uYW1lKXx8bnVsbCk6aS5zaGFwZSYmaS5zaGFwZT09PXRoaXMmJnQudGFyZ2V0KHRoaXMuZ2V0Q29ubmVjdG9yKGkub3B0aW9ucy5uYW1lKXx8bnVsbCksdC51cGRhdGVNb2RlbCgpfSxfZGlmZk51bWVyaWNPcHRpb25zOnouZGlmZk51bWVyaWNPcHRpb25zLF92aXN1YWxPcHRpb25zOmZ1bmN0aW9uKHQpe3JldHVybntkYXRhOnQucGF0aCxzb3VyY2U6dC5zb3VyY2UsaG92ZXI6dC5ob3ZlcixmaWxsOnQuZmlsbCxzdHJva2U6dC5zdHJva2V9fSxfdHJpZ2dlckJvdW5kc0NoYW5nZTpmdW5jdGlvbigpe3RoaXMuZGlhZ3JhbSYmdGhpcy5kaWFncmFtLnRyaWdnZXIoU3Qse2l0ZW06dGhpcyxib3VuZHM6dGhpcy5fYm91bmRzLmNsb25lKCl9KX0sX3RyYW5zZm9ybVBvaW50OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucm90YXRlKCksaT10aGlzLmJvdW5kcygpLG49aS50b3BMZWZ0KCk7cmV0dXJuIGUuYW5nbGUmJnQucm90YXRlKGUuY2VudGVyKCkucGx1cyhuKSwzNjAtZS5hbmdsZSksdH0sX3RyYW5zZm9ybWVkQm91bmRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ib3VuZHMoKSxlPXQudG9wTGVmdCgpLGk9dC5ib3R0b21SaWdodCgpO3JldHVybiBYLmZyb21Qb2ludHModGhpcy5kaWFncmFtLm1vZGVsVG9WaWV3KGUpLHRoaXMuZGlhZ3JhbS5tb2RlbFRvVmlldyhpKSl9LF9yb3RhdGVkQm91bmRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ib3VuZHMoKS5yb3RhdGVkQm91bmRzKHRoaXMucm90YXRlKCkuYW5nbGUpLGU9dC50b3BMZWZ0KCksaT10LmJvdHRvbVJpZ2h0KCk7cmV0dXJuIFguZnJvbVBvaW50cyhlLGkpfSxfcm90YXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLnJvdGF0aW9uO3QmJnQuYW5nbGUmJnRoaXMucm90YXRlKHQuYW5nbGUpLHRoaXMuX3JvdGF0aW9uT2Zmc2V0PW5ldyAkfSxfaG92ZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLGk9ZS5ob3ZlcixuPWUuc3Ryb2tlLG89ZS5maWxsO3QmJmd0KGkuc3Ryb2tlKSYmKG49QSh7fSxuLGkuc3Ryb2tlKSksdCYmZ3QoaS5maWxsKSYmKG89aS5maWxsKSx0aGlzLnNoYXBlVmlzdWFsLnJlZHJhdyh7c3Ryb2tlOm4sZmlsbDpvfSksZS5lZGl0YWJsZSYmZS5lZGl0YWJsZS5jb25uZWN0JiZ0aGlzLmRpYWdyYW0uX3Nob3dDb25uZWN0b3JzKHRoaXMsdCl9LF9oaXRUZXN0OmZ1bmN0aW9uKHQpe2lmKHRoaXMudmlzaWJsZSgpKXt2YXIgZSxpPXRoaXMuYm91bmRzKCksbj10aGlzLnJvdGF0ZSgpLmFuZ2xlO2lmKHQuaXNFbXB0eSYmIXQuaXNFbXB0eSgpKXJldHVybiB0dC5yZWN0cyh0LGksbj9uOjApO2lmKGU9dC5jbG9uZSgpLnJvdGF0ZShpLmNlbnRlcigpLG4pLGkuY29udGFpbnMoZSkpcmV0dXJuIHRoaXN9fSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57c2hhcGVJZDp0aGlzLm9wdGlvbnMuaWR9fSxjcmVhdGVTaGFwZVZpc3VhbDpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5vcHRpb25zLGk9dGhpcy5fdmlzdWFsT3B0aW9ucyhlKSxuPWUudmlzdWFsLG89KGUudHlwZStcIlwiKS50b0xvY2FsZUxvd2VyQ2FzZSgpO2kud2lkdGg9ZS53aWR0aCxpLmhlaWdodD1lLmhlaWdodCx2dChuKT90PW4uY2FsbCh0aGlzLGUpOmkuZGF0YT8odD1uZXcgaihpKSxtKHQpKTp0PVwicmVjdGFuZ2xlXCI9PW8/bmV3IHEoaSk6XCJjaXJjbGVcIj09bz9uZXcgSyhpKTpcInRleHRcIj09bz9uZXcgSihpKTpcImltYWdlXCI9PW8/bmV3IFooaSk6bmV3IGooaSksdGhpcy5zaGFwZVZpc3VhbD10LHRoaXMudmlzdWFsLmFwcGVuZCh0aGlzLnNoYXBlVmlzdWFsKX19KSxiPXkuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj10aGlzO3kuZm4uaW5pdC5jYWxsKG4saSksdGhpcy51cGRhdGVPcHRpb25zRnJvbU1vZGVsKCksdGhpcy5faW5pdFJvdXRlcigpLG4ucGF0aD1uZXcgei5Qb2x5bGluZShuLm9wdGlvbnMpLG4ucGF0aC5maWxsKHNlKSxuLnZpc3VhbC5hcHBlbmQobi5wYXRoKSxuLl9zb3VyY2VQb2ludD1uLl90YXJnZXRQb2ludD1uZXcgJCxuLl9zZXRTb3VyY2UodCksbi5fc2V0VGFyZ2V0KGUpLG4uY29udGVudChuLm9wdGlvbnMuY29udGVudCksbi5kZWZpbmVycz1bXSxtdChpKSYmaS5wb2ludHMmJm4ucG9pbnRzKGkucG9pbnRzKX0sb3B0aW9uczp7aG92ZXI6e3N0cm9rZTp7fX0sc3RhcnRDYXA6cXQsZW5kQ2FwOnF0LHBvaW50czpbXSxzZWxlY3RhYmxlOiEwLGZyb21Db25uZWN0b3I6enQsdG9Db25lbmN0b3I6enR9LF9zZXRPcHRpb25zRnJvbU1vZGVsOmZ1bmN0aW9uKHQpe3RoaXMudXBkYXRlT3B0aW9uc0Zyb21Nb2RlbCh0fHx0aGlzLmRhdGFJdGVtKX0sdXBkYXRlT3B0aW9uc0Zyb21Nb2RlbDpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbzt0aGlzLmRpYWdyYW0mJnRoaXMuZGlhZ3JhbS5faXNFZGl0YWJsZSYmKGU9dGhpcy5kaWFncmFtLl9kYXRhTWFwLGk9YSh0fHx0aGlzLmRhdGFJdGVtKSx0PyhtdChpLmZyb20pPyhuPWVbaS5mcm9tXSxuJiZtdChpLmZyb21Db25uZWN0b3IpJiYobj1uLmdldENvbm5lY3RvcihpLmZyb21Db25uZWN0b3IpKSx0aGlzLnNvdXJjZShuKSk6bXQoaS5mcm9tWCkmJm10KGkuZnJvbVkpJiZ0aGlzLnNvdXJjZShuZXcgJChpLmZyb21YLGkuZnJvbVkpKSxtdChpLnRvKT8obz1lW2kudG9dLG8mJm10KGkudG9Db25uZWN0b3IpJiYobz1vLmdldENvbm5lY3RvcihpLnRvQ29ubmVjdG9yKSksdGhpcy50YXJnZXQobykpOm10KGkudG9YKSYmbXQoaS50b1kpJiZ0aGlzLnRhcmdldChuZXcgJChpLnRvWCxpLnRvWSkpLG10KGkudHlwZSkmJnRoaXMudHlwZSgpIT09aS50eXBlJiYodGhpcy5wb2ludHMoW10pLHRoaXMudHlwZShpLnR5cGUpKSx0aGlzLmRhdGFJdGVtPXQsdGhpcy5fdGVtcGxhdGUoKSx0aGlzLnJlZHJhdyh0aGlzLm9wdGlvbnMpKTp0aGlzLm9wdGlvbnM9QSh7fSxpLHRoaXMub3B0aW9ucykpfSx1cGRhdGVNb2RlbDpmdW5jdGlvbih0KXtpZih0aGlzLmRpYWdyYW0mJnRoaXMuZGlhZ3JhbS5faXNFZGl0YWJsZSYmdGhpcy5kaWFncmFtLmNvbm5lY3Rpb25zRGF0YVNvdXJjZSl7dmFyIGU9dGhpcy5kaWFncmFtLmNvbm5lY3Rpb25zRGF0YVNvdXJjZS5nZXRCeVVpZCh0aGlzLmRhdGFJdGVtLnVpZCk7ZSYmKHRoaXMuZGlhZ3JhbS5fc3VzcGVuZE1vZGVsUmVmcmVzaCgpLG10KHRoaXMub3B0aW9ucy5mcm9tWCkmJm51bGwhPT10aGlzLm9wdGlvbnMuZnJvbVg/KHAoXCJmcm9tXCIsZSkscChcImZyb21Db25uZWN0b3JcIixlKSxlLnNldChcImZyb21YXCIsdGhpcy5vcHRpb25zLmZyb21YKSxlLnNldChcImZyb21ZXCIsdGhpcy5vcHRpb25zLmZyb21ZKSk6KGUuc2V0KFwiZnJvbVwiLHRoaXMub3B0aW9ucy5mcm9tKSxtdChlLmZyb21Db25uZWN0b3IpJiZlLnNldChcImZyb21Db25uZWN0b3JcIix0aGlzLnNvdXJjZUNvbm5lY3Rvcj90aGlzLnNvdXJjZUNvbm5lY3Rvci5vcHRpb25zLm5hbWU6bnVsbCkscChcImZyb21YXCIsZSkscChcImZyb21ZXCIsZSkpLG10KHRoaXMub3B0aW9ucy50b1gpJiZudWxsIT09dGhpcy5vcHRpb25zLnRvWD8ocChcInRvXCIsZSkscChcInRvQ29ubmVjdG9yXCIsZSksZS5zZXQoXCJ0b1hcIix0aGlzLm9wdGlvbnMudG9YKSxlLnNldChcInRvWVwiLHRoaXMub3B0aW9ucy50b1kpKTooZS5zZXQoXCJ0b1wiLHRoaXMub3B0aW9ucy50byksbXQoZS50b0Nvbm5lY3RvcikmJmUuc2V0KFwidG9Db25uZWN0b3JcIix0aGlzLnRhcmdldENvbm5lY3Rvcj90aGlzLnRhcmdldENvbm5lY3Rvci5vcHRpb25zLm5hbWU6bnVsbCkscChcInRvWFwiLGUpLHAoXCJ0b1lcIixlKSksbXQodGhpcy5vcHRpb25zLnR5cGUpJiZtdChlLnR5cGUpJiZlLnNldChcInR5cGVcIix0aGlzLm9wdGlvbnMudHlwZSksdGhpcy5kYXRhSXRlbT1lLHRoaXMuZGlhZ3JhbS5fcmVzdW1lTW9kZWxSZWZyZXNoKCksdCYmdGhpcy5kaWFncmFtLl9zeW5jQ29ubmVjdGlvbkNoYW5nZXMoKSl9fSxzb3VyY2VQb2ludDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXNvbHZlZFNvdXJjZUNvbm5lY3Rvcj90aGlzLl9yZXNvbHZlZFNvdXJjZUNvbm5lY3Rvci5wb3NpdGlvbigpOnRoaXMuX3NvdXJjZVBvaW50fSxfc2V0U291cmNlOmZ1bmN0aW9uKHQpe3ZhciBpLG49dCBpbnN0YW5jZW9mIHgsbz10aGlzLm9wdGlvbnMuZnJvbUNvbm5lY3Rvcnx8enQ7biYmIXQuZ2V0Q29ubmVjdG9yKG8pfHwodCE9PWUmJih0aGlzLmZyb209dCksdGhpcy5fcmVtb3ZlRnJvbVNvdXJjZUNvbm5lY3RvcigpLG51bGw9PT10P3RoaXMuc291cmNlQ29ubmVjdG9yJiYodGhpcy5fc291cmNlUG9pbnQ9KHRoaXMuX3Jlc29sdmVkU291cmNlQ29ubmVjdG9yfHx0aGlzLnNvdXJjZUNvbm5lY3RvcikucG9zaXRpb24oKSx0aGlzLl9jbGVhclNvdXJjZUNvbm5lY3RvcigpLHRoaXMuX3NldEZyb21PcHRpb25zKG51bGwsdGhpcy5fc291cmNlUG9pbnQpKTp0IGluc3RhbmNlb2Ygdz8oaT10LnNoYXBlLmRhdGFJdGVtLGkmJnRoaXMuX3NldEZyb21PcHRpb25zKGkuaWQpLHRoaXMuc291cmNlQ29ubmVjdG9yPXQsdGhpcy5zb3VyY2VDb25uZWN0b3IuY29ubmVjdGlvbnMucHVzaCh0aGlzKSk6dCBpbnN0YW5jZW9mICQ/KHRoaXMuX3NldEZyb21PcHRpb25zKG51bGwsdCksdGhpcy5fc291cmNlUG9pbnQ9dCx0aGlzLnNvdXJjZUNvbm5lY3RvciYmdGhpcy5fY2xlYXJTb3VyY2VDb25uZWN0b3IoKSk6biYmKGk9dC5kYXRhSXRlbSxpJiZ0aGlzLl9zZXRGcm9tT3B0aW9ucyhpLmlkKSx0aGlzLnNvdXJjZUNvbm5lY3Rvcj10LmdldENvbm5lY3RvcihvKSx0aGlzLnNvdXJjZUNvbm5lY3Rvci5jb25uZWN0aW9ucy5wdXNoKHRoaXMpKSl9LHNvdXJjZTpmdW5jdGlvbih0LGUpe3JldHVybiBndCh0KSYmKGUmJnRoaXMuZGlhZ3JhbSYmdGhpcy5kaWFncmFtLnVuZG9SZWRvU2VydmljZS5hZGRDb21wb3NpdGVJdGVtKG5ldyB6LkNvbm5lY3Rpb25FZGl0VW5pdCh0aGlzLHQpKSx0aGlzLl9zZXRTb3VyY2UodCksdGhpcy5yZWZyZXNoKCkpLHRoaXMuc291cmNlQ29ubmVjdG9yP3RoaXMuc291cmNlQ29ubmVjdG9yOnRoaXMuX3NvdXJjZVBvaW50fSxfc2V0RnJvbU9wdGlvbnM6ZnVuY3Rpb24odCxlKXt0aGlzLm9wdGlvbnMuZnJvbT10LGU/KHRoaXMub3B0aW9ucy5mcm9tWD1lLngsdGhpcy5vcHRpb25zLmZyb21ZPWUueSk6KHRoaXMub3B0aW9ucy5mcm9tWD1udWxsLHRoaXMub3B0aW9ucy5mcm9tWT1udWxsKX0sc291cmNlRGVmaW5lcjpmdW5jdGlvbih0KXtpZighdClyZXR1cm4gdGhpcy5fc291cmNlRGVmaW5lcnx8KHRoaXMuX3NvdXJjZURlZmluZXI9bmV3IHouUGF0aERlZmluZXIodGhpcy5zb3VyY2VQb2ludCgpLG51bGwsbnVsbCkpLHRoaXMuX3NvdXJjZURlZmluZXI7aWYoISh0IGluc3RhbmNlb2Ygei5QYXRoRGVmaW5lcikpdGhyb3dcIlRoZSBzb3VyY2VEZWZpbmVyIG5lZWRzIHRvIGJlIGEgUGF0aERlZmluZXIuXCI7dC5sZWZ0PW51bGwsdGhpcy5fc291cmNlRGVmaW5lcj10LHRoaXMuc291cmNlKHQucG9pbnQpfSx0YXJnZXRQb2ludDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXNvbHZlZFRhcmdldENvbm5lY3Rvcj90aGlzLl9yZXNvbHZlZFRhcmdldENvbm5lY3Rvci5wb3NpdGlvbigpOnRoaXMuX3RhcmdldFBvaW50fSxfc2V0VGFyZ2V0OmZ1bmN0aW9uKHQpe3ZhciBpLG49dCBpbnN0YW5jZW9mIHgsbz10aGlzLm9wdGlvbnMudG9Db25uZWN0b3J8fHp0O24mJiF0LmdldENvbm5lY3RvcihvKXx8KHQhPT1lJiYodGhpcy50bz10KSx0aGlzLl9yZW1vdmVGcm9tVGFyZ2V0Q29ubmVjdG9yKCksbnVsbD09PXQ/dGhpcy50YXJnZXRDb25uZWN0b3ImJih0aGlzLl90YXJnZXRQb2ludD0odGhpcy5fcmVzb2x2ZWRUYXJnZXRDb25uZWN0b3J8fHRoaXMudGFyZ2V0Q29ubmVjdG9yKS5wb3NpdGlvbigpLHRoaXMuX2NsZWFyVGFyZ2V0Q29ubmVjdG9yKCksdGhpcy5fc2V0VG9PcHRpb25zKG51bGwsdGhpcy5fdGFyZ2V0UG9pbnQpKTp0IGluc3RhbmNlb2Ygdz8oaT10LnNoYXBlLmRhdGFJdGVtLGkmJnRoaXMuX3NldFRvT3B0aW9ucyhpLmlkKSxcbiAgICB0aGlzLnRhcmdldENvbm5lY3Rvcj10LHRoaXMudGFyZ2V0Q29ubmVjdG9yLmNvbm5lY3Rpb25zLnB1c2godGhpcykpOnQgaW5zdGFuY2VvZiAkPyh0aGlzLl9zZXRUb09wdGlvbnMobnVsbCx0KSx0aGlzLl90YXJnZXRQb2ludD10LHRoaXMudGFyZ2V0Q29ubmVjdG9yJiZ0aGlzLl9jbGVhclRhcmdldENvbm5lY3RvcigpKTpuJiYoaT10LmRhdGFJdGVtLGkmJnRoaXMuX3NldFRvT3B0aW9ucyhpLmlkKSx0aGlzLnRhcmdldENvbm5lY3Rvcj10LmdldENvbm5lY3RvcihvKSx0aGlzLnRhcmdldENvbm5lY3Rvci5jb25uZWN0aW9ucy5wdXNoKHRoaXMpKSl9LHRhcmdldDpmdW5jdGlvbih0LGkpe3JldHVybiBndCh0KSYmKGkmJnRoaXMuZGlhZ3JhbSYmdGhpcy5kaWFncmFtLnVuZG9SZWRvU2VydmljZS5hZGRDb21wb3NpdGVJdGVtKG5ldyB6LkNvbm5lY3Rpb25FZGl0VW5pdCh0aGlzLGUsdCkpLHRoaXMuX3NldFRhcmdldCh0KSx0aGlzLnJlZnJlc2goKSksdGhpcy50YXJnZXRDb25uZWN0b3I/dGhpcy50YXJnZXRDb25uZWN0b3I6dGhpcy5fdGFyZ2V0UG9pbnR9LF9zZXRUb09wdGlvbnM6ZnVuY3Rpb24odCxlKXt0aGlzLm9wdGlvbnMudG89dCxlPyh0aGlzLm9wdGlvbnMudG9YPWUueCx0aGlzLm9wdGlvbnMudG9ZPWUueSk6KHRoaXMub3B0aW9ucy50b1g9bnVsbCx0aGlzLm9wdGlvbnMudG9ZPW51bGwpfSx0YXJnZXREZWZpbmVyOmZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiB0aGlzLl90YXJnZXREZWZpbmVyfHwodGhpcy5fdGFyZ2V0RGVmaW5lcj1uZXcgei5QYXRoRGVmaW5lcih0aGlzLnRhcmdldFBvaW50KCksbnVsbCxudWxsKSksdGhpcy5fdGFyZ2V0RGVmaW5lcjtpZighKHQgaW5zdGFuY2VvZiB6LlBhdGhEZWZpbmVyKSl0aHJvd1wiVGhlIHNvdXJjZURlZmluZXIgbmVlZHMgdG8gYmUgYSBQYXRoRGVmaW5lci5cIjt0LnJpZ2h0PW51bGwsdGhpcy5fdGFyZ2V0RGVmaW5lcj10LHRoaXMudGFyZ2V0KHQucG9pbnQpfSxfdXBkYXRlQ29ubmVjdG9yczpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUNvbm5lY3Rvcih0aGlzLnNvdXJjZSgpLFwic291cmNlXCIpLHRoaXMuX3VwZGF0ZUNvbm5lY3Rvcih0aGlzLnRhcmdldCgpLFwidGFyZ2V0XCIpfSxfdXBkYXRlQ29ubmVjdG9yOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixvLHMscj10aGlzLGE9ci5kaWFncmFtO3QgaW5zdGFuY2VvZiB3JiYhYS5nZXRTaGFwZUJ5SWQodC5zaGFwZS5pZCk/KGk9dC5zaGFwZS5kYXRhSXRlbSxuPXQub3B0aW9ucy5uYW1lLG89ZnVuY3Rpb24oKXt2YXIgbz1hLl9kYXRhTWFwW2kuaWRdO3Q9by5nZXRDb25uZWN0b3IobikscltlXSh0LCExKSxyLnVwZGF0ZU1vZGVsKCl9LGEuX2RhdGFNYXBbaS5pZF0/bygpOihzPWEuX2luYWN0aXZlU2hhcGVJdGVtcy5nZXRCeVVpZChpLnVpZCkscyYmYS5fZGVmZXJyZWRDb25uZWN0aW9uVXBkYXRlcy5wdXNoKHMub25BY3RpdmF0ZShvKSkpKTpyW2VdKHQsITEpfSxjb250ZW50OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2NvbnRlbnQodCk7cmV0dXJuIG10KHQpJiZ0aGlzLl9hbGlnbkNvbnRlbnQoKSxlfSxfY3JlYXRlQ29udGVudFZpc3VhbDpmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gdnQodC52aXN1YWwpP2U9dC52aXN1YWwuY2FsbCh0aGlzLHQpOnQudGV4dCYmKGU9bmV3IEoodCkpLGUmJih0aGlzLl9jb250ZW50VmlzdWFsPWUsZS5faW5jbHVkZUluQkJveD0hMSx0aGlzLnZpc3VhbC5hcHBlbmQoZSkpLGV9LF91cGRhdGVDb250ZW50VmlzdWFsOmZ1bmN0aW9uKHQpe3Z0KHQudmlzdWFsKT8odGhpcy52aXN1YWwucmVtb3ZlKHRoaXMuX2NvbnRlbnRWaXN1YWwpLHRoaXMuX2NyZWF0ZUNvbnRlbnRWaXN1YWwodCkpOnRoaXMuX2NvbnRlbnRWaXN1YWwucmVkcmF3KHQpfSxfYWxpZ25Db250ZW50OmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4sbyxzLHIsYSxoLGMsZCxsLHUsZixwLGc7aWYodGhpcy5fY29udGVudFZpc3VhbCl7Zm9yKHQ9cGUsZT10aGlzLmFsbFBvaW50cygpLGk9eHQuZmxvb3IoZS5sZW5ndGgvMiksbj1pLTE7bj4wJiZlW25dLmVxdWFscyhlW2ldKTspbi0tLGkrKztvPWVbaV0scz1lW25dLHI9dGhpcy5fY29udGVudFZpc3VhbC5fbWVhc3VyZSgpLGE9ci53aWR0aCxoPXIuaGVpZ2h0LGM9ZS5sZW5ndGglMj09PTAsZD1zLmRpc3RhbmNlVG8obyksYyYmZS5sZW5ndGg+MiYmZD4wJiYocy55PT09by55JiZkPGF8fHMueD09PW8ueCYmZDxoKSYmKGM9ITEsdD0wKSxjPyh1PWtlbmRvLnV0aWwuZGVnKHh0LmF0YW4yKG8ueS1zLnksby54LXMueCkpLGw9bmV3ICQoKG8ueC1zLngpLzIrcy54LChvLnktcy55KS8yK3MueSksOTA9PT14dC5hYnModSk/KGwueCs9dCxsLnktPWgvMik6dSUxODA9PT0wPyhsLngtPWEvMixsLnktPWgrdCk6dTwtOTB8fDA8dSYmdTw5MD9sLnktPWg6KHU8MHx8dT45MCkmJihsLngtPWEsbC55LT1oKSk6KGY9eHQuZmxvb3IoZS5sZW5ndGgvMiksbD1lW2ZdLmNsb25lKCkscz1lW2YtMV0sbz1lW2YrMV0scD1zLng8PWwueCYmby54PD1sLng/dDotci53aWR0aC10LGc9cy55PD1sLnkmJm8ueTw9bC55P3Q6LXIuaGVpZ2h0LXQsbC54Kz1wLGwueSs9ZyksdGhpcy5fY29udGVudFZpc3VhbC5wb3NpdGlvbihsKX19LHNlbGVjdDpmdW5jdGlvbih0KXt2YXIgaSxuLG89dGhpcy5kaWFncmFtO2lmKHRoaXMuX2NhblNlbGVjdCgpJiZ0aGlzLmlzU2VsZWN0ZWQhPT10KXJldHVybiB0aGlzLmlzU2VsZWN0ZWQ9dCxpPVtdLG49W10sdGhpcy5pc1NlbGVjdGVkPyh0aGlzLmFkb3JuZXI9bmV3IGV0KHRoaXMsdGhpcy5vcHRpb25zLnNlbGVjdGlvbiksby5fYWRvcm4odGhpcy5hZG9ybmVyLCEwKSxvLl9zZWxlY3RlZEl0ZW1zLnB1c2godGhpcyksaS5wdXNoKHRoaXMpKTp0aGlzLmFkb3JuZXImJihvLl9hZG9ybih0aGlzLmFkb3JuZXIsITEpLGh0LnJlbW92ZShvLl9zZWxlY3RlZEl0ZW1zLHRoaXMpLHRoaXMuYWRvcm5lcj1lLG4ucHVzaCh0aGlzKSksdGhpcy5hZG9ybmVyJiZ0aGlzLmFkb3JuZXIucmVmcmVzaCgpLG8uX2ludGVybmFsU2VsZWN0aW9ufHxvLl9zZWxlY3Rpb25DaGFuZ2VkKGksbiksITB9LGJvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4hdHx8eXQodCk/dGhpcy5fYm91bmRzOih0aGlzLl9ib3VuZHM9dCxlKX0sdHlwZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0dXJuIHQ/KHQhPT1pLnR5cGUmJihpLnR5cGU9dCx0aGlzLl9pbml0Um91dGVyKCksdGhpcy5yZWZyZXNoKCkpLGUpOmkudHlwZX0sX2luaXRSb3V0ZXI6ZnVuY3Rpb24oKXt2YXIgdD0odGhpcy5vcHRpb25zLnR5cGV8fFwiXCIpLnRvTG93ZXJDYXNlKCk7dGhpcy5fcm91dGVyPXQ9PUN0P25ldyBmdCh0aGlzKTpuZXcgdXQodGhpcyl9LHBvaW50czpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbztpZighdCl7aWYobj1bXSxndCh0aGlzLmRlZmluZXJzKSlmb3Iobz0wO288dGhpcy5kZWZpbmVycy5sZW5ndGg7bysrKW4ucHVzaCh0aGlzLmRlZmluZXJzW29dLnBvaW50KTtyZXR1cm4gbn1mb3IodGhpcy5kZWZpbmVycz1bXSxlPTA7ZTx0Lmxlbmd0aDtlKyspaWYoaT10W2VdLGkgaW5zdGFuY2VvZiB6LlBvaW50KXRoaXMuZGVmaW5lcnMucHVzaChuZXcgei5QYXRoRGVmaW5lcihpKSk7ZWxzZXtpZighaS5oYXNPd25Qcm9wZXJ0eShcInhcIil8fCFpLmhhc093blByb3BlcnR5KFwieVwiKSl0aHJvd1wiQSBDb25uZWN0aW9uIHBvaW50IG5lZWRzIHRvIGJlIGEgUG9pbnQgb3IgYW4gb2JqZWN0IHdpdGggeCBhbmQgeSBwcm9wZXJ0aWVzLlwiO3RoaXMuZGVmaW5lcnMucHVzaChuZXcgei5QYXRoRGVmaW5lcihuZXcgJChpLngsaS55KSkpfX0sYWxsUG9pbnRzOmZ1bmN0aW9uKCl7dmFyIHQsZT1bdGhpcy5zb3VyY2VQb2ludCgpXTtpZih0aGlzLmRlZmluZXJzKWZvcih0PTA7dDx0aGlzLmRlZmluZXJzLmxlbmd0aDt0KyspZS5wdXNoKHRoaXMuZGVmaW5lcnNbdF0ucG9pbnQpO3JldHVybiBlLnB1c2godGhpcy50YXJnZXRQb2ludCgpKSxlfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5fcmVzb2x2ZUNvbm5lY3RvcnMoKSx0aGlzLl9yZWZyZXNoUGF0aCgpLHRoaXMuX2FsaWduQ29udGVudCgpLHRoaXMuYWRvcm5lciYmdGhpcy5hZG9ybmVyLnJlZnJlc2goKX0sX3Jlc29sdmVDb25uZWN0b3JzOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLHMscj10aGlzLGE9ci5zb3VyY2UoKSxoPXIudGFyZ2V0KCk7YSBpbnN0YW5jZW9mICQ/dD1hOmEgaW5zdGFuY2VvZiB3JiYoaT1uKGEpP2Euc2hhcGUuY29ubmVjdG9yczpbYV0pLGggaW5zdGFuY2VvZiAkP2U9aDpoIGluc3RhbmNlb2YgdyYmKHM9bihoKT9oLnNoYXBlLmNvbm5lY3RvcnM6W2hdKSx0P3MmJihyLl9yZXNvbHZlZFRhcmdldENvbm5lY3Rvcj1vKHQscykpOmkmJihlP3IuX3Jlc29sdmVkU291cmNlQ29ubmVjdG9yPW8oZSxpKTpzJiZ0aGlzLl9yZXNvbHZlQXV0b0Nvbm5lY3RvcnMoaSxzKSl9LF9yZXNvbHZlQXV0b0Nvbm5lY3RvcnM6ZnVuY3Rpb24odCxlKXt2YXIgaSxvLHMscixhLGgsYyxkLGwsdSxmLHA9T3QsZz1PdDtmb3IobD0wO2w8dC5sZW5ndGg7bCsrKWlmKGM9dFtsXSwhbihjKSlmb3Iocz1jLnBvc2l0aW9uKCksdT0wO3U8ZS5sZW5ndGg7dSsrKWQ9ZVt1XSxuKGQpfHwocj1kLnBvc2l0aW9uKCksZj14dC5yb3VuZChzLmRpc3RhbmNlVG8ocikpLGY8cCYmdGhpcy5kaWFncmFtJiZ0aGlzLl90ZXN0Um91dGVQb2ludHMocyxyLGMsZCkmJihwPWYsaT1jLG89ZCksZjxnJiYoYT1jLGg9ZCxnPWYpKTtpJiYoYT1pLGg9byksdGhpcy5fcmVzb2x2ZWRTb3VyY2VDb25uZWN0b3I9YSx0aGlzLl9yZXNvbHZlZFRhcmdldENvbm5lY3Rvcj1ofSxfdGVzdFJvdXRlUG9pbnRzOmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBvLHMscixhLGgsYz10aGlzLl9yb3V0ZXIsZD0hMDtpZihjIGluc3RhbmNlb2YgZnQpZm9yKG89Yy5yb3V0ZVBvaW50cyh0LGUsaSxuKSxvLnVuc2hpZnQodCksby5wdXNoKGUpLGg9MTtoPG8ubGVuZ3RoO2grKylpZihzPW9baC0xXSxyPW9baF0sYT1uZXcgWCh4dC5taW4ocy54LHIueCkseHQubWluKHMueSxyLnkpLHh0LmFicyhzLngtci54KSx4dC5hYnMocy55LXIueSkpLGEud2lkdGg+MCYmKGEueCsrLGEud2lkdGgtPTIpLGEuaGVpZ2h0PjAmJihhLnkrKyxhLmhlaWdodC09MiksIWEuaXNFbXB0eSgpJiZ0aGlzLmRpYWdyYW0uX3NoYXBlc1F1YWRUcmVlLmhpdFRlc3RSZWN0KGEpKXtkPSExO2JyZWFrfXJldHVybiBkfSxyZWRyYXc6ZnVuY3Rpb24odCl7aWYodCl7dGhpcy5vcHRpb25zPUEoe30sdGhpcy5vcHRpb25zLHQpO3ZhciBlPXRoaXMub3B0aW9ucy5wb2ludHM7bXQoZSkmJmUubGVuZ3RoPjAmJih0aGlzLnBvaW50cyhlKSx0aGlzLl9yZWZyZXNoUGF0aCgpKSwodCYmdC5jb250ZW50fHx0LnRleHQpJiZ0aGlzLmNvbnRlbnQodC5jb250ZW50KSx0aGlzLnBhdGgucmVkcmF3KHtmaWxsOnQuZmlsbCxzdHJva2U6dC5zdHJva2Usc3RhcnRDYXA6dC5zdGFydENhcCxlbmRDYXA6dC5lbmRDYXB9KX19LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zZXJpYWxpemUoKTtyZXR1cm4gdGhpcy5kaWFncmFtJiZ0aGlzLmRpYWdyYW0uX2lzRWRpdGFibGUmJm10KHRoaXMuZGF0YUl0ZW0pJiYodC5vcHRpb25zLmRhdGFJdGVtPWwodGhpcy5kYXRhSXRlbSkpLG5ldyBiKHRoaXMuZnJvbSx0aGlzLnRvLHQub3B0aW9ucyl9LHNlcmlhbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZnJvbS50b0pTT04/dGhpcy5mcm9tLnRvSlNPTjpcIlwiK3RoaXMuZnJvbSxlPXRoaXMudG8udG9KU09OP3RoaXMudG8udG9KU09OOlwiXCIrdGhpcy50byxpPUEoe30se29wdGlvbnM6dGhpcy5vcHRpb25zLGZyb206dCx0bzplfSk7cmV0dXJuIG10KHRoaXMuZGF0YUl0ZW0pJiYoaS5kYXRhSXRlbT1cIlwiK3RoaXMuZGF0YUl0ZW0pLGkub3B0aW9ucy5wb2ludHM9dGhpcy5wb2ludHMoKSxpfSxfaGl0VGVzdDpmdW5jdGlvbih0KXtpZih0aGlzLnZpc2libGUoKSl7dmFyIGU9bmV3ICQodC54LHQueSksaT10aGlzLnNvdXJjZVBvaW50KCksbj10aGlzLnRhcmdldFBvaW50KCk7aWYodC5pc0VtcHR5JiYhdC5pc0VtcHR5KCkmJnQuY29udGFpbnMoaSkmJnQuY29udGFpbnMobikpcmV0dXJuIHRoaXM7aWYodGhpcy5fcm91dGVyLmhpdFRlc3QoZSkpcmV0dXJuIHRoaXN9fSxfaG92ZXI6ZnVuY3Rpb24odCl7dmFyIGU9KHRoaXMub3B0aW9ucy5zdHJva2V8fHt9KS5jb2xvcjt0JiZndCh0aGlzLm9wdGlvbnMuaG92ZXIuc3Ryb2tlLmNvbG9yKSYmKGU9dGhpcy5vcHRpb25zLmhvdmVyLnN0cm9rZS5jb2xvciksdGhpcy5wYXRoLnJlZHJhdyh7c3Ryb2tlOntjb2xvcjplfX0pfSxfcmVmcmVzaFBhdGg6ZnVuY3Rpb24oKXttdCh0aGlzLnBhdGgpJiYodGhpcy5fZHJhd1BhdGgoKSx0aGlzLmJvdW5kcyh0aGlzLl9yb3V0ZXIuZ2V0Qm91bmRzKCkpKX0sX2RyYXdQYXRoOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO3RoaXMuX3JvdXRlciYmdGhpcy5fcm91dGVyLnJvdXRlKCksdD10aGlzLnNvdXJjZVBvaW50KCksZT10aGlzLnRhcmdldFBvaW50KCksaT10aGlzLnBvaW50cygpLHRoaXMucGF0aC5yZWRyYXcoe3BvaW50czpbdF0uY29uY2F0KGksW2VdKX0pfSxfY2xlYXJTb3VyY2VDb25uZWN0b3I6ZnVuY3Rpb24oKXt0aGlzLnNvdXJjZUNvbm5lY3Rvcj1lLHRoaXMuX3Jlc29sdmVkU291cmNlQ29ubmVjdG9yPWV9LF9jbGVhclRhcmdldENvbm5lY3RvcjpmdW5jdGlvbigpe3RoaXMudGFyZ2V0Q29ubmVjdG9yPWUsdGhpcy5fcmVzb2x2ZWRUYXJnZXRDb25uZWN0b3I9ZX0sX3JlbW92ZUZyb21Tb3VyY2VDb25uZWN0b3I6ZnVuY3Rpb24oKXt0aGlzLnNvdXJjZUNvbm5lY3RvciYmaHQucmVtb3ZlKHRoaXMuc291cmNlQ29ubmVjdG9yLmNvbm5lY3Rpb25zLHRoaXMpfSxfcmVtb3ZlRnJvbVRhcmdldENvbm5lY3RvcjpmdW5jdGlvbigpe3RoaXMudGFyZ2V0Q29ubmVjdG9yJiZodC5yZW1vdmUodGhpcy50YXJnZXRDb25uZWN0b3IuY29ubmVjdGlvbnMsdGhpcyl9LHRvSlNPTjpmdW5jdGlvbigpe3ZhciB0LGUsaSxuPXRoaXM7cmV0dXJuIG4uZnJvbSYmbi5mcm9tLnRvSlNPTj90PW4uZnJvbS50b0pTT04oKTooaT1uLl9zb3VyY2VQb2ludCx0PXt4OmkueCx5OmkueX0pLG4udG8mJm4udG8udG9KU09OP2U9bi50by50b0pTT04oKTooaT1uLl90YXJnZXRQb2ludCxlPXt4OmkueCx5OmkueX0pLHtmcm9tOnQsdG86ZX19fSksQz1CLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7a2VuZG8uZGVzdHJveSh0KSxCLmZuLmluaXQuY2FsbChpLHQsZSksaS5faW5pdFRoZW1lKCksaS5faW5pdEVsZW1lbnRzKCksaS5fZXh0ZW5kTGF5b3V0T3B0aW9ucyhpLm9wdGlvbnMpLGkuX2luaXREZWZhdWx0cyhlKSxpLl9pbnRlcmFjdGlvbkRlZmF1bHRzKCksaS5faW5pdENhbnZhcygpLGkubWFpbkxheWVyPW5ldyBHKHtpZDpcIm1haW4tbGF5ZXJcIn0pLGkuY2FudmFzLmFwcGVuZChpLm1haW5MYXllciksaS5fc2hhcGVzUXVhZFRyZWU9bmV3IEkoaSksaS5fcGFuPW5ldyAkLGkuX2Fkb3JuZXJzPVtdLGkuYWRvcm5lckxheWVyPW5ldyBHKHtpZDpcImFkb3JuZXItbGF5ZXJcIn0pLGkuY2FudmFzLmFwcGVuZChpLmFkb3JuZXJMYXllciksaS5fY3JlYXRlSGFuZGxlcnMoKSxpLl9pbml0aWFsaXplKCksaS5fcmVzaXppbmdBZG9ybmVyPW5ldyBzdChpLHtlZGl0YWJsZTppLm9wdGlvbnMuZWRpdGFibGV9KSxpLl9jb25uZWN0b3JzQWRvcm5lcj1uZXcgcnQoaSksaS5fYWRvcm4oaS5fcmVzaXppbmdBZG9ybmVyLCEwKSxpLl9hZG9ybihpLl9jb25uZWN0b3JzQWRvcm5lciwhMCksaS5zZWxlY3Rvcj1uZXcgb3QoaSksaS5fY2xpcGJvYXJkPVtdLGkucGF1c2VNb3VzZUhhbmRsZXJzPSExLGkuX2ZldGNoRnJlc2hEYXRhKCksaS5fY3JlYXRlR2xvYmFsVG9vbEJhcigpLGkuX2NyZWF0ZU9wdGlvbkVsZW1lbnRzKCksaS56b29tKGkub3B0aW9ucy56b29tKSxpLmNhbnZhcy5kcmF3KCl9LG9wdGlvbnM6e25hbWU6XCJEaWFncmFtXCIsdGhlbWU6XCJkZWZhdWx0XCIsbGF5b3V0OlwiXCIsem9vbVJhdGU6LjEsem9vbToxLHpvb21NaW46MCx6b29tTWF4OjIsZGF0YVNvdXJjZTp7fSxkcmFnZ2FibGU6ITAsdGVtcGxhdGU6XCJcIixhdXRvQmluZDohMCxlZGl0YWJsZTp7cm90YXRlOnt9LHJlc2l6ZTp7fSx0ZXh0OiEwLHRvb2xzOltdLGRyYWc6e3NuYXA6e3NpemU6MTAsYW5nbGU6MTB9fSxyZW1vdmU6ITB9LHBhbm5hYmxlOnt9LHNlbGVjdGFibGU6e2tleTpcIm5vbmVcIn0sdG9vbHRpcDp7ZW5hYmxlZDohMCxmb3JtYXQ6XCJ7MH1cIn0sY29weTp7ZW5hYmxlZDohMCxvZmZzZXRYOjIwLG9mZnNldFk6MjB9LHNoYXBlRGVmYXVsdHM6ei5zaGFwZURlZmF1bHRzKHt1bmRvYWJsZTohMH0pLGNvbm5lY3Rpb25EZWZhdWx0czp7ZWRpdGFibGU6e3Rvb2xzOltdfSx0eXBlOkN0fSxzaGFwZXM6W10sY29ubmVjdGlvbnM6W119LGV2ZW50czpbR3QsRnQsSHQsVXQsVnQsU3Qsa3QsVHQsUHQsTHQsXCJ0b29sQmFyQ2xpY2tcIixcInNhdmVcIixcImNhbmNlbFwiLFwiZWRpdFwiLFwicmVtb3ZlXCIsXCJhZGRcIixcImRhdGFCb3VuZFwiLEl0LE10LER0XSxpdGVtczpmdW5jdGlvbigpe3JldHVybiB0KCl9LF9jcmVhdGVHbG9iYWxUb29sQmFyOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLm9wdGlvbnMuZWRpdGFibGU7ZSYmKHQ9ZS50b29scywhdGhpcy5faXNFZGl0YWJsZXx8dD09PSExfHx0JiYwIT09dC5sZW5ndGh8fCh0PVtcImNyZWF0ZVNoYXBlXCIsXCJ1bmRvXCIsXCJyZWRvXCIsXCJyb3RhdGVDbG9ja3dpc2VcIixcInJvdGF0ZUFudGljbG9ja3dpc2VcIl0pLHQmJnQubGVuZ3RoJiYodGhpcy50b29sQmFyPW5ldyBTKHRoaXMse3Rvb2xzOnR8fHt9LGNsaWNrOlIodGhpcy5fdG9vbEJhckNsaWNrLHRoaXMpLG1vZGFsOiExfSksdGhpcy50b29sQmFyLmVsZW1lbnQuY3NzKHt0ZXh0QWxpZ246XCJsZWZ0XCJ9KSx0aGlzLmVsZW1lbnQucHJlcGVuZCh0aGlzLnRvb2xCYXIuZWxlbWVudCksdGhpcy5fcmVzaXplKCkpKX0sY3JlYXRlU2hhcGU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixvLHM7KHRoaXMuZWRpdG9yJiZ0aGlzLmVkaXRvci5lbmQoKXx8IXRoaXMuZWRpdG9yKSYmKHQ9dGhpcy5kYXRhU291cmNlLGU9dC52aWV3KCl8fFtdLGk9ZS5sZW5ndGgsbj1mKHQse30pLG89dGhpcy5fY3JlYXRlU2hhcGUobix7fSksdGhpcy50cmlnZ2VyKFwiYWRkXCIse3NoYXBlOm99KXx8KHQuaW5zZXJ0KGksbikscz10aGlzLl9pbmFjdGl2ZVNoYXBlSXRlbXMuZ2V0QnlVaWQobi51aWQpLHMuZWxlbWVudD1vLHRoaXMuZWRpdChvKSkpfSxfY3JlYXRlU2hhcGU6ZnVuY3Rpb24odCxlKXtlPUEoe30sdGhpcy5vcHRpb25zLnNoYXBlRGVmYXVsdHMsZSksZS5kYXRhSXRlbT10O3ZhciBpPW5ldyB4KGUsdGhpcyk7cmV0dXJuIGl9LGNyZWF0ZUNvbm5lY3Rpb246ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixvOyh0aGlzLmVkaXRvciYmdGhpcy5lZGl0b3IuZW5kKCl8fCF0aGlzLmVkaXRvcikmJih0PXRoaXMuY29ubmVjdGlvbnNEYXRhU291cmNlLGU9dC52aWV3KCl8fFtdLGk9ZS5sZW5ndGgsbj1mKHQse30pLG89dGhpcy5fY3JlYXRlQ29ubmVjdGlvbihuKSx0aGlzLnRyaWdnZXIoXCJhZGRcIix7Y29ubmVjdGlvbjpvfSl8fCh0aGlzLl9jb25uZWN0aW9uc0RhdGFNYXBbbi51aWRdPW8sdC5pbnNlcnQoaSxuKSx0aGlzLmFkZENvbm5lY3Rpb24obywhMSksdGhpcy5lZGl0KG8pKSl9LF9jcmVhdGVDb25uZWN0aW9uOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvPUEoe30sdGhpcy5vcHRpb25zLmNvbm5lY3Rpb25EZWZhdWx0cyk7cmV0dXJuIG8uZGF0YUl0ZW09dCxuPW5ldyBiKGV8fG5ldyAkLGl8fG5ldyAkLG8pfSxlZGl0TW9kZWw6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scztpZih0aGlzLmNhbmNlbEVkaXQoKSxvPXRoaXMub3B0aW9ucy5lZGl0YWJsZSxcInNoYXBlXCI9PWUpaT1vLnNoYXBlRWRpdG9ycyxuPW8uc2hhcGVUZW1wbGF0ZTtlbHNle2lmKFwiY29ubmVjdGlvblwiIT1lKXJldHVybjtzPVIoaCx0aGlzKSxpPUEoe30se2Zyb206cyx0bzpzfSxvLmNvbm5lY3Rpb25FZGl0b3JzKSxuPW8uY29ubmVjdGlvblRlbXBsYXRlfXRoaXMuZWRpdG9yPW5ldyBUKHRoaXMuZWxlbWVudCx7dXBkYXRlOlIodGhpcy5fdXBkYXRlLHRoaXMpLGNhbmNlbDpSKHRoaXMuX2NhbmNlbCx0aGlzKSxtb2RlbDp0LHR5cGU6ZSx0YXJnZXQ6dGhpcyxlZGl0b3JzOmksdGVtcGxhdGU6bn0pLHRoaXMudHJpZ2dlcihcImVkaXRcIix0aGlzLl9lZGl0QXJncygpKX0sZWRpdDpmdW5jdGlvbih0KXtpZih0LmRhdGFJdGVtKXt2YXIgZT10IGluc3RhbmNlb2YgeD9cInNoYXBlXCI6XCJjb25uZWN0aW9uXCI7dGhpcy5lZGl0TW9kZWwodC5kYXRhSXRlbSxlKX19LGNhbmNlbEVkaXQ6ZnVuY3Rpb24oKXt0aGlzLmVkaXRvciYmKHRoaXMuX2dldEVkaXREYXRhU291cmNlKCkuY2FuY2VsQ2hhbmdlcyh0aGlzLmVkaXRvci5tb2RlbCksdGhpcy5fZGVzdHJveUVkaXRvcigpKX0sc2F2ZUVkaXQ6ZnVuY3Rpb24oKXt0aGlzLmVkaXRvciYmdGhpcy5lZGl0b3IuZW5kKCkmJiF0aGlzLnRyaWdnZXIoXCJzYXZlXCIsdGhpcy5fZWRpdEFyZ3MoKSkmJnRoaXMuX2dldEVkaXREYXRhU291cmNlKCkuc3luYygpfSxfdXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5lZGl0b3ImJnRoaXMuZWRpdG9yLmVuZCgpJiYhdGhpcy50cmlnZ2VyKFwic2F2ZVwiLHRoaXMuX2VkaXRBcmdzKCkpJiYodGhpcy5fZ2V0RWRpdERhdGFTb3VyY2UoKS5zeW5jKCksdGhpcy5fZGVzdHJveUVkaXRvcigpKX0sX2NhbmNlbDpmdW5jdGlvbigpe3ZhciB0LGU7dGhpcy5lZGl0b3ImJiF0aGlzLnRyaWdnZXIoXCJjYW5jZWxcIix0aGlzLl9lZGl0QXJncygpKSYmKHQ9dGhpcy5lZGl0b3IubW9kZWwsdGhpcy5fZ2V0RWRpdERhdGFTb3VyY2UoKS5jYW5jZWxDaGFuZ2VzKHQpLGU9dGhpcy5fY29ubmVjdGlvbnNEYXRhTWFwW3QudWlkXXx8dGhpcy5fZGF0YU1hcFt0LmlkXSxlJiZlLl9zZXRPcHRpb25zRnJvbU1vZGVsKHQpLHRoaXMuX2Rlc3Ryb3lFZGl0b3IoKSl9LF9nZXRFZGl0RGF0YVNvdXJjZTpmdW5jdGlvbigpe3JldHVyblwic2hhcGVcIj09PXRoaXMuZWRpdG9yLm9wdGlvbnMudHlwZT90aGlzLmRhdGFTb3VyY2U6dGhpcy5jb25uZWN0aW9uc0RhdGFTb3VyY2V9LF9lZGl0QXJnczpmdW5jdGlvbigpe3ZhciB0PXtjb250YWluZXI6dGhpcy5lZGl0b3Iud3JhcHBlcn07cmV0dXJuIHRbdGhpcy5lZGl0b3Iub3B0aW9ucy50eXBlXT10aGlzLmVkaXRvci5tb2RlbCx0fSxfZGVzdHJveUVkaXRvcjpmdW5jdGlvbigpe3RoaXMuZWRpdG9yJiYodGhpcy5lZGl0b3IuY2xvc2UoKSx0aGlzLmVkaXRvcj1udWxsKX0sX2luaXRFbGVtZW50czpmdW5jdGlvbigpe3RoaXMud3JhcHBlcj10aGlzLmVsZW1lbnQuZW1wdHkoKS5jc3MoXCJwb3NpdGlvblwiLFwicmVsYXRpdmVcIikuYXR0cihcInRhYmluZGV4XCIsMCkuYWRkQ2xhc3MoXCJrLXdpZGdldCBrLWRpYWdyYW1cIiksdGhpcy5zY3JvbGxhYmxlPXQoXCI8ZGl2IC8+XCIpLmFwcGVuZFRvKHRoaXMuZWxlbWVudCl9LF9pbml0RGVmYXVsdHM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLGk9ZS5lZGl0YWJsZSxuPWUuc2hhcGVEZWZhdWx0cyxvPWUuY29ubmVjdGlvbkRlZmF1bHRzLHM9KHR8fHt9KS5zaGFwZURlZmF1bHRzO2k9PT0hMT8obi5lZGl0YWJsZT0hMSxvLmVkaXRhYmxlPSExKTooZyhpLG4uZWRpdGFibGUsW1wiZHJhZ1wiLFwicmVtb3ZlXCIsXCJjb25uZWN0XCJdKSxnKGksby5lZGl0YWJsZSxbXCJkcmFnXCIsXCJyZW1vdmVcIl0pKSxzJiZzLmNvbm5lY3RvcnMmJihlLnNoYXBlRGVmYXVsdHMuY29ubmVjdG9ycz1zLmNvbm5lY3RvcnMpfSxfaW50ZXJhY3Rpb25EZWZhdWx0czpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucyxlPXQuc2VsZWN0YWJsZSxpPXQucGFubmFibGUsbj1rZW5kby5zdXBwb3J0Lm1vYmlsZU9TO2UmJiFtdChlLm11bHRpcGxlKSYmKHQuc2VsZWN0YWJsZT1BKHttdWx0aXBsZTohbn0sdC5zZWxlY3RhYmxlKSksaSYmIW10KGkua2V5KSYmKHQucGFubmFibGU9QSh7a2V5Om4/XCJub25lXCI6XCJjdHJsXCJ9LHQucGFubmFibGUpKX0sX2luaXRDYW52YXM6ZnVuY3Rpb24oKXt2YXIgZT10KFwiPGRpdiBjbGFzcz0nay1sYXllcic+PC9kaXY+XCIpLmFwcGVuZFRvKHRoaXMuc2Nyb2xsYWJsZSlbMF0saT10aGlzLnZpZXdwb3J0KCk7dGhpcy5jYW52YXM9bmV3IEYoZSx7d2lkdGg6aS53aWR0aHx8S3QsaGVpZ2h0OmkuaGVpZ2h0fHxXdH0pfSxfY3JlYXRlSGFuZGxlcnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5lbGVtZW50O2Uub24oZGUsUih0Ll93aGVlbCx0KSkub24oXCJrZXlkb3duXCIrYnQsUih0Ll9rZXlkb3duLHQpKSx0Ll91c2VyRXZlbnRzPW5ldyBrZW5kby5Vc2VyRXZlbnRzKHRoaXMuc2Nyb2xsYWJsZSx7bXVsdGlUb3VjaDohMCxmYXN0VGFwOiEwLHRhcDpSKHQuX3RhcCx0KSxzdGFydDpSKHQuX2RyYWdTdGFydCx0KSxtb3ZlOlIodC5fZHJhZyx0KSxlbmQ6Uih0Ll9kcmFnRW5kLHQpLGdlc3R1cmVzdGFydDpSKHQuX2dlc3R1cmVTdGFydCx0KSxnZXN0dXJlY2hhbmdlOlIodC5fZ2VzdHVyZUNoYW5nZSx0KSxnZXN0dXJlZW5kOlIodC5fZ2VzdHVyZUVuZCx0KX0pLHQudG9vbFNlcnZpY2U9bmV3IG50KHQpLHRoaXMuc2Nyb2xsYWJsZS5vbihcIm1vdXNlb3ZlclwiK2J0LFIodC5fbW91c2VvdmVyLHQpKS5vbihcIm1vdXNlb3V0XCIrYnQsUih0Ll9tb3VzZW91dCx0KSkub24oXCJtb3VzZW1vdmVcIitidCxSKHQuX21vdXNlTW92ZSx0KSkub24oXCJtb3VzZWRvd25cIitidCxSKHQuX21vdXNlRG93bix0KSkub24oXCJtb3VzZXVwXCIrYnQsUih0Ll9tb3VzZVVwLHQpKSx0aGlzLl9zeW5jSGFuZGxlcj1SKHQuX3N5bmNDaGFuZ2VzLHQpLHQuX3Jlc2l6ZUhhbmRsZXI9Uih0LnJlc2l6ZSx0LCExKSxrZW5kby5vblJlc2l6ZSh0Ll9yZXNpemVIYW5kbGVyKSx0aGlzLmJpbmQoRnQsUih0Ll9kZXN0cm95VG9vbEJhcix0KSksdGhpcy5iaW5kKEh0LFIodC5fZGVzdHJveVRvb2xCYXIsdCkpfSxfZHJhZ1N0YXJ0OmZ1bmN0aW9uKHQpe3ZhciBlLGk7dGhpcy5fcGF1c2VNb3VzZUhhbmRsZXJzPSEwLGU9dGhpcy5fZXZlbnRQb3NpdGlvbnModCwhMCksaT10LmV2ZW50LHRoaXMudG9vbFNlcnZpY2Uuc3RhcnQoZSx0aGlzLl9tZXRhKGkpKSYmKHRoaXMuX2Rlc3Ryb3lUb29sQmFyKCksaS5wcmV2ZW50RGVmYXVsdCgpKX0sX2RyYWc6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZXZlbnRQb3NpdGlvbnModCksaT10LmV2ZW50O3RoaXMudG9vbFNlcnZpY2UubW92ZShlLHRoaXMuX21ldGEoaSkpJiZpLnByZXZlbnREZWZhdWx0KCl9LF9kcmFnRW5kOmZ1bmN0aW9uKHQpe3ZhciBlLGk7dGhpcy5fcGF1c2VNb3VzZUhhbmRsZXJzPSExLGU9dGhpcy5fZXZlbnRQb3NpdGlvbnModCksaT10LmV2ZW50LHRoaXMudG9vbFNlcnZpY2UuZW5kKGUsdGhpcy5fbWV0YShpKSkmJih0aGlzLl9jcmVhdGVUb29sQmFyKCksaS5wcmV2ZW50RGVmYXVsdCgpKX0sX21vdXNlTW92ZTpmdW5jdGlvbih0KXtpZighdGhpcy5fcGF1c2VNb3VzZUhhbmRsZXJzKXt2YXIgZT10aGlzLl9ldmVudFBvc2l0aW9ucyh0KTt0aGlzLnRvb2xTZXJ2aWNlLl91cGRhdGVIb3ZlcmVkSXRlbShlKSx0aGlzLnRvb2xTZXJ2aWNlLl91cGRhdGVDdXJzb3IoZSl9fSxfbW91c2VEb3duOmZ1bmN0aW9uKCl7dGhpcy5fcGF1c2VNb3VzZUhhbmRsZXJzPSEwfSxfbW91c2VVcDpmdW5jdGlvbigpe3RoaXMuX3BhdXNlTW91c2VIYW5kbGVycz0hMX0sX3RhcDpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbz10aGlzLnRvb2xTZXJ2aWNlLHM9dGhpcy5vcHRpb25zLnNlbGVjdGFibGUscj10aGlzLl9ldmVudFBvc2l0aW9ucyh0KSxhPXRoaXMuZm9jdXMoKTtvLl91cGRhdGVIb3ZlcmVkSXRlbShyKSxvLmhvdmVyZWRJdGVtPyhlPW8uaG92ZXJlZEl0ZW0sdGhpcy50cmlnZ2VyKFwiY2xpY2tcIix7aXRlbTplLHBvaW50OnJ9KSxzJiZlLm9wdGlvbnMuc2VsZWN0YWJsZSE9PSExJiYoaT1zLm11bHRpcGxlIT09ITEsbj1rZW5kby5zdXBwb3J0Lm1vYmlsZU9TfHx0aGlzLl9tZXRhKHQuZXZlbnQpLmN0cmxLZXksZS5pc1NlbGVjdGVkP24/KHRoaXMuX2Rlc3Ryb3lUb29sQmFyKCksZS5zZWxlY3QoITEpKTp0aGlzLl9jcmVhdGVUb29sQmFyKGEpOih0aGlzLl9kZXN0cm95VG9vbEJhcigpLHRoaXMuc2VsZWN0KGUse2FkZFRvU2VsZWN0aW9uOmkmJm59KSx0aGlzLl9jcmVhdGVUb29sQmFyKGEpKSkpOnMmJih0aGlzLl9kZXN0cm95VG9vbEJhcigpLHRoaXMuZGVzZWxlY3QoKSl9LF9rZXlkb3duOmZ1bmN0aW9uKHQpe3RoaXMudG9vbFNlcnZpY2Uua2V5RG93bih0LmtleUNvZGUsdGhpcy5fbWV0YSh0KSkmJnQucHJldmVudERlZmF1bHQoKX0sX3doZWVsOmZ1bmN0aW9uKHQpe3ZhciBlPWkodCksbj10aGlzLl9ldmVudFBvc2l0aW9ucyh0KSxvPUEodGhpcy5fbWV0YSh0KSx7ZGVsdGE6ZX0pO3RoaXMudG9vbFNlcnZpY2Uud2hlZWwobixvKSYmdC5wcmV2ZW50RGVmYXVsdCgpfSxfbWV0YTpmdW5jdGlvbih0KXtyZXR1cm57Y3RybEtleTp0LmN0cmxLZXksbWV0YUtleTp0Lm1ldGFLZXksYWx0S2V5OnQuYWx0S2V5LHNoaWZ0S2V5OnQuc2hpZnRLZXksdHlwZTp0LnR5cGV9fSxfZXZlbnRQb3NpdGlvbnM6ZnVuY3Rpb24odCxlKXt2YXIgaSxuO3JldHVybiB0LnRvdWNoPyhuPWU/XCJzdGFydExvY2F0aW9uXCI6XCJsb2NhdGlvblwiLGk9bmV3ICQodC54W25dLHQueVtuXSkpOmk9bmV3ICQodC5wYWdlWCx0LnBhZ2VZKSx0aGlzLmRvY3VtZW50VG9Nb2RlbChpKX0sX2dlc3R1cmVTdGFydDpmdW5jdGlvbih0KXt2YXIgZSxpO3RoaXMuX2Rlc3Ryb3lUb29sQmFyKCksdGhpcy5zY3JvbGxlci5kaXNhYmxlKCksZT10aGlzLmRvY3VtZW50VG9Nb2RlbChuZXcgJCh0LmNlbnRlci54LHQuY2VudGVyLnkpKSxpPXtwb2ludDplLHpvb206dGhpcy56b29tKCl9LHRoaXMudHJpZ2dlcihGdCxpKXx8KHRoaXMuX2dlc3R1cmU9dCx0aGlzLl9pbml0aWFsQ2VudGVyPWUpfSxfZ2VzdHVyZUNoYW5nZTpmdW5jdGlvbih0KXt2YXIgZSxpLG49dGhpcy5fZ2VzdHVyZSxvPXRoaXMuX2luaXRpYWxDZW50ZXIscz10aGlzLmRvY3VtZW50VG9WaWV3KG5ldyAkKHQuY2VudGVyLngsdC5jZW50ZXIueSkpLHI9dC5kaXN0YW5jZS9uLmRpc3RhbmNlLGE9dGhpcy5fem9vbSxoPSExO3h0LmFicyhyLTEpPj1sZSYmKHRoaXMuX3pvb209YT10aGlzLl9nZXRWYWxpZFpvb20oYSpyKSx0aGlzLm9wdGlvbnMuem9vbT1hLHRoaXMuX2dlc3R1cmU9dCxoPSEwKSxlPW8udGltZXMoYSksaT1zLm1pbnVzKGUpLChofHx0aGlzLl9wYW4uZGlzdGFuY2VUbyhpKT49dWUpJiYodGhpcy5fcGFuVHJhbnNmb3JtKGkpLHRoaXMuX3VwZGF0ZUFkb3JuZXJzKCkpLHQucHJldmVudERlZmF1bHQoKX0sX2dlc3R1cmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMucGFubmFibGUhPT0hMSYmdGhpcy5zY3JvbGxlci5lbmFibGUoKSx0aGlzLnRyaWdnZXIoR3Qse3BvaW50OnRoaXMuX2luaXRpYWxDZW50ZXIsem9vbTp0aGlzLnpvb20oKX0pfSxfcmVzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52aWV3cG9ydCgpO3RoaXMuY2FudmFzJiZ0aGlzLmNhbnZhcy5zaXplKHQpLHRoaXMuc2Nyb2xsYWJsZSYmdGhpcy50b29sQmFyJiZ0aGlzLnNjcm9sbGFibGUuaGVpZ2h0KHQuaGVpZ2h0KX0sX21vdXNlb3ZlcjpmdW5jdGlvbih0KXt2YXIgZT10LnRhcmdldC5fa2VuZG9Ob2RlO2UmJmUuc3JjRWxlbWVudC5faG92ZXImJmUuc3JjRWxlbWVudC5faG92ZXIoITAsZS5zcmNFbGVtZW50KX0sX21vdXNlb3V0OmZ1bmN0aW9uKHQpe3ZhciBlPXQudGFyZ2V0Ll9rZW5kb05vZGU7ZSYmZS5zcmNFbGVtZW50Ll9ob3ZlciYmZS5zcmNFbGVtZW50Ll9ob3ZlcighMSxlLnNyY0VsZW1lbnQpfSxfaW5pdFRoZW1lOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPVAudWkudGhlbWVzfHx7fSxpPSgodC5vcHRpb25zfHx7fSkudGhlbWV8fFwiXCIpLnRvTG93ZXJDYXNlKCksbj0oZVtpXXx8e30pLmRpYWdyYW07dC5vcHRpb25zPUEoe30sbix0Lm9wdGlvbnMpLHQub3B0aW9ucy5lZGl0YWJsZT09PSEwJiZBKHQub3B0aW9ucyx7ZWRpdGFibGU6KG58fHt9KS5lZGl0YWJsZX0pfSxfY3JlYXRlT3B0aW9uRWxlbWVudHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMsZT10LnNoYXBlcy5sZW5ndGg7ZSYmdGhpcy5fY3JlYXRlU2hhcGVzKCksdC5jb25uZWN0aW9ucy5sZW5ndGgmJnRoaXMuX2NyZWF0ZUNvbm5lY3Rpb25zKCksZSYmdC5sYXlvdXQmJnRoaXMubGF5b3V0KHQubGF5b3V0KX0sX2NyZWF0ZVNoYXBlczpmdW5jdGlvbigpe3ZhciB0LGUsaT10aGlzLG49aS5vcHRpb25zLG89bi5zaGFwZXM7Zm9yKGU9MDtlPG8ubGVuZ3RoO2UrKyl0PW9bZV0saS5hZGRTaGFwZSh0KX0sX2NyZWF0ZUNvbm5lY3Rpb25zOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4sbz10aGlzLHM9by5vcHRpb25zLHI9cy5jb25uZWN0aW9uRGVmYXVsdHMsYT1zLmNvbm5lY3Rpb25zO2ZvcihuPTA7bjxhLmxlbmd0aDtuKyspdD1hW25dLGU9by5fZmluZENvbm5lY3Rpb25UYXJnZXQodC5mcm9tKSxpPW8uX2ZpbmRDb25uZWN0aW9uVGFyZ2V0KHQudG8pLG8uY29ubmVjdChlLGksQSh7fSxyLHQpKX0sX2ZpbmRDb25uZWN0aW9uVGFyZ2V0OmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtyZXR1cm4gdD10fHx7fSxlPXRoaXMsaT15dCh0KT90OnQuc2hhcGVJZHx8dC5pZCxpPyhuPWUuZ2V0U2hhcGVCeUlkKGkpLHQuY29ubmVjdG9yJiYobj1uLmdldENvbm5lY3Rvcih0LmNvbm5lY3RvcikpKTpuPW5ldyAkKHQueHx8MCx0Lnl8fDApLG59LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO0IuZm4uZGVzdHJveS5jYWxsKHQpLHRoaXMuX3VzZXJFdmVudHMmJnRoaXMuX3VzZXJFdmVudHMuZGVzdHJveSgpLGtlbmRvLnVuYmluZFJlc2l6ZSh0Ll9yZXNpemVIYW5kbGVyKSx0LmNsZWFyKCksdC5lbGVtZW50Lm9mZihidCksdC5zY3JvbGxlci53cmFwcGVyLm9mZihidCksdC5jYW52YXMuZGVzdHJveSghMCksdC5jYW52YXM9ZSx0Ll9kZXN0cm95RWRpdG9yKCksdC5kZXN0cm95U2Nyb2xsZXIoKSx0Ll9kZXN0cm95R2xvYmFsVG9vbEJhcigpLHQuX2Rlc3Ryb3lUb29sQmFyKCl9LGRlc3Ryb3lTY3JvbGxlcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuc2Nyb2xsZXI7dCYmKHQuZGVzdHJveSgpLHQuZWxlbWVudC5yZW1vdmUoKSx0aGlzLnNjcm9sbGVyPW51bGwpfSxzYXZlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG49e3NoYXBlczpbXSxjb25uZWN0aW9uczpbXX07Zm9yKHQ9MDt0PHRoaXMuc2hhcGVzLmxlbmd0aDt0KyspaT10aGlzLnNoYXBlc1t0XSxpLm9wdGlvbnMuc2VyaWFsaXphYmxlJiZuLnNoYXBlcy5wdXNoKGkub3B0aW9ucyk7Zm9yKHQ9MDt0PHRoaXMuY29ubmVjdGlvbnMubGVuZ3RoO3QrKyllPXRoaXMuY29ubmVjdGlvbnNbdF0sbi5jb25uZWN0aW9ucy5wdXNoKEEoe30sZS5vcHRpb25zLGUudG9KU09OKCkpKTtyZXR1cm4gbn0sZm9jdXM6ZnVuY3Rpb24oKXtpZighdGhpcy5lbGVtZW50LmlzKGtlbmRvLl9hY3RpdmVFbGVtZW50KCkpKXt2YXIgdCxlPXRoaXMuZWxlbWVudCxpPWVbMF0sbj1bXSxvPVtdLHM9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O2RvIGk9aS5wYXJlbnROb2RlLGkuc2Nyb2xsSGVpZ2h0PmkuY2xpZW50SGVpZ2h0JiYobi5wdXNoKGkpLG8ucHVzaChpLnNjcm9sbFRvcCkpO3doaWxlKGkhPXMpO2ZvcihlLmZvY3VzKCksdD0wO3Q8bi5sZW5ndGg7dCsrKW5bdF0uc2Nyb2xsVG9wPW9bdF07cmV0dXJuITB9fSxsb2FkOmZ1bmN0aW9uKHQpe3RoaXMuY2xlYXIoKSx0aGlzLnNldE9wdGlvbnModCksdGhpcy5fY3JlYXRlU2hhcGVzKCksdGhpcy5fY3JlYXRlQ29ubmVjdGlvbnMoKX0sc2V0T3B0aW9uczpmdW5jdGlvbih0KXtBKHRoaXMub3B0aW9ucyx0KX0sY2xlYXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3Quc2VsZWN0KCExKSx0Lm1haW5MYXllci5jbGVhcigpLHQuX3NoYXBlc1F1YWRUcmVlLmNsZWFyKCksdC5faW5pdGlhbGl6ZSgpfSxjb25uZWN0OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvO3JldHVybiB0aGlzLmNvbm5lY3Rpb25zRGF0YVNvdXJjZSYmdGhpcy5faXNFZGl0YWJsZT8obz10aGlzLmNvbm5lY3Rpb25zRGF0YVNvdXJjZS5hZGQoe30pLG49dGhpcy5fY29ubmVjdGlvbnNEYXRhTWFwW28udWlkXSxuLnNvdXJjZSh0KSxuLnRhcmdldChlKSxuLnJlZHJhdyhpKSxuLnVwZGF0ZU1vZGVsKCkpOihuPW5ldyBiKHQsZSxBKHt9LHRoaXMub3B0aW9ucy5jb25uZWN0aW9uRGVmYXVsdHMsaSkpLHRoaXMuYWRkQ29ubmVjdGlvbihuKSksbn0sY29ubmVjdGVkOmZ1bmN0aW9uKHQsZSl7dmFyIGksbjtmb3IoaT0wO2k8dGhpcy5jb25uZWN0aW9ucy5sZW5ndGg7aSsrKWlmKG49dGhpcy5jb25uZWN0aW9uc1tpXSxuLmZyb209PXQmJm4udG89PWUpcmV0dXJuITA7cmV0dXJuITF9LGFkZENvbm5lY3Rpb246ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSE9PSExJiZ0aGlzLnVuZG9SZWRvU2VydmljZS5hZGQobmV3IHouQWRkQ29ubmVjdGlvblVuaXQodCx0aGlzKSwhMSksdC5kaWFncmFtPXRoaXMsdC5fc2V0T3B0aW9uc0Zyb21Nb2RlbCgpLHQucmVmcmVzaCgpLHRoaXMubWFpbkxheWVyLmFwcGVuZCh0LnZpc3VhbCksdGhpcy5jb25uZWN0aW9ucy5wdXNoKHQpLHRoaXMudHJpZ2dlcihrdCx7YWRkZWQ6W3RdLHJlbW92ZWQ6W119KSx0fSxfYWRkQ29ubmVjdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBpLG49dGhpcy5jb25uZWN0aW9uc0RhdGFTb3VyY2U7aWYobiYmdGhpcy5faXNFZGl0YWJsZSl7aWYoaT1mKG4sbCh0LmRhdGFJdGVtKSksdC5kYXRhSXRlbT1pLHQudXBkYXRlTW9kZWwoKSwhdGhpcy50cmlnZ2VyKFwiYWRkXCIse2Nvbm5lY3Rpb246dH0pKXJldHVybiB0aGlzLl9jb25uZWN0aW9uc0RhdGFNYXBbaS51aWRdPXQsbi5hZGQoaSksdGhpcy5hZGRDb25uZWN0aW9uKHQsZSksdC5fdXBkYXRlQ29ubmVjdG9ycygpLHR9ZWxzZSBpZighdGhpcy50cmlnZ2VyKFwiYWRkXCIse2Nvbm5lY3Rpb246dH0pKXJldHVybiB0aGlzLmFkZENvbm5lY3Rpb24odCxlKSx0Ll91cGRhdGVDb25uZWN0b3JzKCksdH0sYWRkU2hhcGU6ZnVuY3Rpb24odCxlKXt2YXIgaSxuPXRoaXMub3B0aW9ucy5zaGFwZURlZmF1bHRzO2lmKHQgaW5zdGFuY2VvZiB4KWk9dDtlbHNle2lmKHQgaW5zdGFuY2VvZiBrZW5kby5DbGFzcylyZXR1cm47bj1BKHt9LG4sdHx8e30pLGk9bmV3IHgobix0aGlzKX1yZXR1cm4gZSE9PSExJiZ0aGlzLnVuZG9SZWRvU2VydmljZS5hZGQobmV3IHouQWRkU2hhcGVVbml0KGksdGhpcyksITEpLHRoaXMuc2hhcGVzLnB1c2goaSksaS5kaWFncmFtIT09dGhpcyYmKHRoaXMuX3NoYXBlc1F1YWRUcmVlLmluc2VydChpKSxpLmRpYWdyYW09dGhpcyksdGhpcy5tYWluTGF5ZXIuYXBwZW5kKGkudmlzdWFsKSx0aGlzLnRyaWdnZXIoa3Qse2FkZGVkOltpXSxyZW1vdmVkOltdfSksaX0sX2FkZFNoYXBlOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixvPXRoaXMscz1vLmRhdGFTb3VyY2U7aWYocyYmdGhpcy5faXNFZGl0YWJsZSl7aWYoaT1mKHMsbCh0LmRhdGFJdGVtKSksdC5kYXRhSXRlbT1pLHQudXBkYXRlTW9kZWwoKSwhdGhpcy50cmlnZ2VyKFwiYWRkXCIse3NoYXBlOnR9KSlyZXR1cm4gdGhpcy5kYXRhU291cmNlLmFkZChpKSxuPXRoaXMuX2luYWN0aXZlU2hhcGVJdGVtcy5nZXRCeVVpZChpLnVpZCksbi5lbGVtZW50PXQsbi51bmRvYWJsZT1lLHR9ZWxzZSBpZighdGhpcy50cmlnZ2VyKFwiYWRkXCIse3NoYXBlOnR9KSlyZXR1cm4gdGhpcy5hZGRTaGFwZSh0LGUpfSxyZW1vdmU6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scztmb3IodD1fdCh0KT90LnNsaWNlKDApOlt0XSxpPXUodCksbj1pLnNoYXBlcyxvPWkuY29ubmVjdGlvbnMsbXQoZSl8fChlPSEwKSxlJiZ0aGlzLnVuZG9SZWRvU2VydmljZS5iZWdpbigpLHRoaXMuX3N1c3BlbmRNb2RlbFJlZnJlc2goKSxzPW4ubGVuZ3RoLTE7cz49MDtzLS0pdGhpcy5fcmVtb3ZlSXRlbShuW3NdLGUsbyk7Zm9yKHM9by5sZW5ndGgtMTtzPj0wO3MtLSl0aGlzLl9yZW1vdmVJdGVtKG9bc10sZSk7dGhpcy5fcmVzdW1lTW9kZWxSZWZyZXNoKCksZSYmdGhpcy51bmRvUmVkb1NlcnZpY2UuY29tbWl0KCExKSx0aGlzLnRyaWdnZXIoa3Qse2FkZGVkOltdLHJlbW92ZWQ6dH0pfSxfcmVtb3ZlU2hhcGVEYXRhSXRlbTpmdW5jdGlvbih0KXt0aGlzLl9pc0VkaXRhYmxlJiYodGhpcy5kYXRhU291cmNlLnJlbW92ZSh0LmRhdGFJdGVtKSxkZWxldGUgdGhpcy5fZGF0YU1hcFt0LmRhdGFJdGVtLmlkXSl9LF9yZW1vdmVDb25uZWN0aW9uRGF0YUl0ZW06ZnVuY3Rpb24odCl7dGhpcy5faXNFZGl0YWJsZSYmKHRoaXMuY29ubmVjdGlvbnNEYXRhU291cmNlLnJlbW92ZSh0LmRhdGFJdGVtKSxkZWxldGUgdGhpcy5fY29ubmVjdGlvbnNEYXRhTWFwW3QuZGF0YUl0ZW0udWlkXSl9LF90cmlnZ2VyUmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvLHM9W107Zm9yKG89MDtvPHQubGVuZ3RoO28rKyllPXRbb10sbj1lLm9wdGlvbnMuZWRpdGFibGUsaT1lIGluc3RhbmNlb2YgeD97c2hhcGU6ZX06e2Nvbm5lY3Rpb246ZX0sbiYmbi5yZW1vdmUhPT0hMSYmIXRoaXMudHJpZ2dlcihcInJlbW92ZVwiLGkpJiZzLnB1c2goZSk7cmV0dXJuIHN9LHVuZG86ZnVuY3Rpb24oKXt0aGlzLnVuZG9SZWRvU2VydmljZS51bmRvKCl9LHJlZG86ZnVuY3Rpb24oKXt0aGlzLnVuZG9SZWRvU2VydmljZS5yZWRvKCl9LHNlbGVjdDpmdW5jdGlvbih0LGUpe2lmKCFndCh0KSlyZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcztlPUEoe2FkZFRvU2VsZWN0aW9uOiExfSxlKTt2YXIgaSxuLG89ZS5hZGRUb1NlbGVjdGlvbixzPVtdLHI9W107Zm9yKG98fHRoaXMuZGVzZWxlY3QoKSx0aGlzLl9pbnRlcm5hbFNlbGVjdGlvbj0hMCx0IGluc3RhbmNlb2YgQXJyYXk/cz10OnQgaW5zdGFuY2VvZiB5JiYocz1bdF0pLGk9MDtpPHMubGVuZ3RoO2krKyluPXNbaV0sbi5zZWxlY3QoITApJiZyLnB1c2gobik7dGhpcy5fc2VsZWN0aW9uQ2hhbmdlZChyLFtdKSx0aGlzLl9pbnRlcm5hbFNlbGVjdGlvbj0hMX0sc2VsZWN0QWxsOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3QodGhpcy5zaGFwZXMuY29uY2F0KHRoaXMuY29ubmVjdGlvbnMpKX0sc2VsZWN0QXJlYTpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbztpZih0aGlzLl9pbnRlcm5hbFNlbGVjdGlvbj0hMCxvPVtdLHQgaW5zdGFuY2VvZiBYKWZvcihpPXRoaXMuc2hhcGVzLmNvbmNhdCh0aGlzLmNvbm5lY3Rpb25zKSxlPTA7ZTxpLmxlbmd0aDtlKyspbj1pW2VdLHQmJiFuLl9oaXRUZXN0KHQpfHwhbi5vcHRpb25zLmVuYWJsZXx8bi5zZWxlY3QoITApJiZvLnB1c2gobik7dGhpcy5fc2VsZWN0aW9uQ2hhbmdlZChvLFtdKSx0aGlzLl9pbnRlcm5hbFNlbGVjdGlvbj0hMX0sZGVzZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5faW50ZXJuYWxTZWxlY3Rpb249ITA7dmFyIGUsaSxuPVtdLG89W107Zm9yKHQgaW5zdGFuY2VvZiBBcnJheT9vPXQ6dCBpbnN0YW5jZW9mIHk/by5wdXNoKHQpOmd0KHQpfHwobz10aGlzLl9zZWxlY3RlZEl0ZW1zLnNsaWNlKDApKSxpPTA7aTxvLmxlbmd0aDtpKyspZT1vW2ldLGUuc2VsZWN0KCExKSYmbi5wdXNoKGUpO3RoaXMuX3NlbGVjdGlvbkNoYW5nZWQoW10sbiksdGhpcy5faW50ZXJuYWxTZWxlY3Rpb249ITF9LHRvRnJvbnQ6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG87dHx8KHQ9dGhpcy5fc2VsZWN0ZWRJdGVtcy5zbGljZSgpKSxpPXRoaXMuX2dldERpYWdyYW1JdGVtcyh0KSwhbXQoZSl8fGU/KG49cyh0aGlzLm1haW5MYXllcixpLnZpc3VhbHMpLG89bmV3IGx0KHRoaXMsdCxuKSx0aGlzLnVuZG9SZWRvU2VydmljZS5hZGQobykpOih0aGlzLm1haW5MYXllci50b0Zyb250KGkudmlzdWFscyksdGhpcy5fZml4T3JkZXJpbmcoaSwhMCkpfSx0b0JhY2s6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG87dHx8KHQ9dGhpcy5fc2VsZWN0ZWRJdGVtcy5zbGljZSgpKSxpPXRoaXMuX2dldERpYWdyYW1JdGVtcyh0KSwhbXQoZSl8fGU/KG49cyh0aGlzLm1haW5MYXllcixpLnZpc3VhbHMpLG89bmV3IGR0KHRoaXMsdCxuKSx0aGlzLnVuZG9SZWRvU2VydmljZS5hZGQobykpOih0aGlzLm1haW5MYXllci50b0JhY2soaS52aXN1YWxzKSx0aGlzLl9maXhPcmRlcmluZyhpLCExKSl9LGJyaW5nSW50b1ZpZXc6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scyxyPXRoaXMudmlld3BvcnQoKSxhPW5ldyB6LlJlY3RBbGlnbihyKTswIT09ci53aWR0aCYmMCE9PXIuaGVpZ2h0JiYoZT1BKHthbmltYXRlOiExLGFsaWduOlwiY2VudGVyIG1pZGRsZVwifSxlKSxcIm5vbmVcIj09ZS5hbGlnbiYmKGUuYWxpZ249XCJjZW50ZXIgbWlkZGxlXCIpLHQgaW5zdGFuY2VvZiB5P249dC5ib3VuZHMobmUpOl90KHQpP249dGhpcy5ib3VuZGluZ0JveCh0KTp0IGluc3RhbmNlb2YgWCYmKG49dC5jbG9uZSgpKSxvPW4uY2xvbmUoKSxuLnpvb20odGhpcy5fem9vbSksKG4ud2lkdGg+ci53aWR0aHx8bi5oZWlnaHQ+ci5oZWlnaHQpJiYodGhpcy5fem9vbT10aGlzLl9nZXRWYWxpZFpvb20oeHQubWluKHIud2lkdGgvby53aWR0aCxyLmhlaWdodC9vLmhlaWdodCkpLG49by5jbG9uZSgpLnpvb20odGhpcy5fem9vbSkpLHRoaXMuX3pvb21NYWluTGF5ZXIoKSxpPW4uY2xvbmUoKSxhLmFsaWduKG4sZS5hbGlnbikscz1uLnRvcExlZnQoKS5taW51cyhpLnRvcExlZnQoKSksdGhpcy5wYW4ocy50aW1lcygtMSksZS5hbmltYXRlKSl9LGFsaWduU2hhcGVzOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvLHMscixhO2lmKHB0KHQpJiYodD1cIkxlZnRcIiksZT10aGlzLnNlbGVjdCgpLDAhPT1lLmxlbmd0aCl7c3dpdGNoKHQudG9Mb3dlckNhc2UoKSl7Y2FzZVwibGVmdFwiOmNhc2VcInRvcFwiOmk9dGU7YnJlYWs7Y2FzZVwicmlnaHRcIjpjYXNlXCJib3R0b21cIjppPWVlfWZvcihvPTA7bzxlLmxlbmd0aDtvKyspaWYobj1lW29dLG4gaW5zdGFuY2VvZiB4KXN3aXRjaCh0LnRvTG93ZXJDYXNlKCkpe2Nhc2VcImxlZnRcIjppPXh0Lm1pbihpLG4ub3B0aW9ucy54KTticmVhaztjYXNlXCJ0b3BcIjppPXh0Lm1pbihpLG4ub3B0aW9ucy55KTticmVhaztjYXNlXCJyaWdodFwiOmk9eHQubWF4KGksbi5vcHRpb25zLngpO2JyZWFrO2Nhc2VcImJvdHRvbVwiOmk9eHQubWF4KGksbi5vcHRpb25zLnkpfWZvcihzPVtdLHI9W10sbz0wO288ZS5sZW5ndGg7bysrKWlmKG49ZVtvXSxuIGluc3RhbmNlb2YgeClzd2l0Y2goci5wdXNoKG4pLHMucHVzaChuLmJvdW5kcygpKSx0LnRvTG93ZXJDYXNlKCkpe2Nhc2VcImxlZnRcIjpjYXNlXCJyaWdodFwiOm4ucG9zaXRpb24obmV3ICQoaSxuLm9wdGlvbnMueSkpO2JyZWFrO2Nhc2VcInRvcFwiOmNhc2VcImJvdHRvbVwiOm4ucG9zaXRpb24obmV3ICQobi5vcHRpb25zLngsaSkpfWE9bmV3IHouVHJhbnNmb3JtVW5pdChyLHMpLHRoaXMudW5kb1JlZG9TZXJ2aWNlLmFkZChhLCExKX19LHpvb206ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scztyZXR1cm4gdCYmKGk9ZT9lLnBvaW50Om5ldyB6LlBvaW50KDAsMCksdD10aGlzLl96b29tPXRoaXMuX2dldFZhbGlkWm9vbSh0KSxwdChpKXx8KGk9bmV3IHouUG9pbnQoeHQucm91bmQoaS54KSx4dC5yb3VuZChpLnkpKSxuPWkudGltZXModCksbz10aGlzLm1vZGVsVG9WaWV3KGkpLHM9by5taW51cyhuKSx0aGlzLl9zdG9yZVBhbihuZXcgei5Qb2ludCh4dC5yb3VuZChzLngpLHh0LnJvdW5kKHMueSkpKSksZSYmKGUuem9vbT10KSx0aGlzLl9wYW5UcmFuc2Zvcm0oKSx0aGlzLmNhbnZhcy5zdXJmYWNlLmhpZGVUb29sdGlwKCksdGhpcy5fdXBkYXRlQWRvcm5lcnMoKSksdGhpcy5fem9vbX0sX2dldFBhbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmNhbnZhcztyZXR1cm4gZS50cmFuc2xhdGV8fCh0PXQucGx1cyh0aGlzLl9wYW4pKSx0fSxwYW46ZnVuY3Rpb24odCxpKXt2YXIgbixvO3JldHVybiB0IGluc3RhbmNlb2YgJD8obj10aGlzLG89bi5zY3JvbGxlcix0PW4uX2dldFBhbih0KSx0PXQudGltZXMoLTEpLGk/by5hbmltYXRlZFNjcm9sbFRvKHQueCx0LnksZnVuY3Rpb24oKXtuLl91cGRhdGVBZG9ybmVycygpfSk6KG8uc2Nyb2xsVG8odC54LHQueSksbi5fdXBkYXRlQWRvcm5lcnMoKSksZSk6dGhpcy5fcGFuLnRpbWVzKC0xKX0sdmlld3BvcnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnQsZT10LndpZHRoKCksaT10LmhlaWdodCgpO3JldHVybiB0aGlzLnRvb2xCYXImJihpLT1VKHRoaXMudG9vbEJhci5lbGVtZW50KSksbmV3IFgoMCwwLGUsaSl9LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdCxlO2lmKHRoaXMub3B0aW9ucy5jb3B5LmVuYWJsZWQpZm9yKHRoaXMuX2NsaXBib2FyZD1bXSx0aGlzLl9jb3B5T2Zmc2V0PTEsdD0wO3Q8dGhpcy5fc2VsZWN0ZWRJdGVtcy5sZW5ndGg7dCsrKWU9dGhpcy5fc2VsZWN0ZWRJdGVtc1t0XSx0aGlzLl9jbGlwYm9hcmQucHVzaChlKX0sY3V0OmZ1bmN0aW9uKCl7dmFyIHQsZTtpZih0aGlzLm9wdGlvbnMuY29weS5lbmFibGVkKXtmb3IodGhpcy5fY2xpcGJvYXJkPVtdLHRoaXMuX2NvcHlPZmZzZXQ9MCx0PTA7dDx0aGlzLl9zZWxlY3RlZEl0ZW1zLmxlbmd0aDt0KyspZT10aGlzLl9zZWxlY3RlZEl0ZW1zW3RdLHRoaXMuX2NsaXBib2FyZC5wdXNoKGUpO3RoaXMucmVtb3ZlKHRoaXMuX2NsaXBib2FyZCwhMCl9fSxwYXN0ZTpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLG8scyxyLGE7aWYodGhpcy5fY2xpcGJvYXJkLmxlbmd0aD4wKXtmb3Iobj17fSxvPXUodGhpcy5fY2xpcGJvYXJkKSxzPW8uY29ubmVjdGlvbnMscj1vLnNoYXBlcyxhPXt4OnRoaXMuX2NvcHlPZmZzZXQqdGhpcy5vcHRpb25zLmNvcHkub2Zmc2V0WCx5OnRoaXMuX2NvcHlPZmZzZXQqdGhpcy5vcHRpb25zLmNvcHkub2Zmc2V0WX0sdGhpcy5kZXNlbGVjdCgpLGk9MDtpPHIubGVuZ3RoO2krKyl0PXJbaV0sZT10LmNsb25lKCksblt0LmlkXT1lLGUucG9zaXRpb24obmV3ICQodC5vcHRpb25zLngrYS54LHQub3B0aW9ucy55K2EueSkpLGUuZGlhZ3JhbT10aGlzLGU9dGhpcy5fYWRkU2hhcGUoZSksZSYmZS5zZWxlY3QoKTtmb3IoaT0wO2k8cy5sZW5ndGg7aSsrKXQ9c1tpXSxlPXRoaXMuX2FkZENvbm5lY3Rpb24odC5jbG9uZSgpKSxlJiYodGhpcy5fdXBkYXRlQ29waWVkQ29ubmVjdGlvbihlLHQsXCJzb3VyY2VcIixuLGEpLHRoaXMuX3VwZGF0ZUNvcGllZENvbm5lY3Rpb24oZSx0LFwidGFyZ2V0XCIsbixhKSxlLnNlbGVjdCghMCksZS51cGRhdGVNb2RlbCgpKTt0aGlzLl9zeW5jQ2hhbmdlcygpLHRoaXMuX2NvcHlPZmZzZXQrPTF9fSxfdXBkYXRlQ29waWVkQ29ubmVjdGlvbjpmdW5jdGlvbih0LGUsaSxuLG8pe3ZhciBzLHIsYSxoPWVbaV0oKSxjPXRoaXM7aCBpbnN0YW5jZW9mIHcmJm5baC5zaGFwZS5pZF0/KGE9bltoLnNoYXBlLmlkXSxjLmdldFNoYXBlQnlJZChhLmlkKT90W2ldKGEuZ2V0Q29ubmVjdG9yKGgub3B0aW9ucy5uYW1lKSk6KHI9Yy5faW5hY3RpdmVTaGFwZUl0ZW1zLmdldEJ5VWlkKGEuZGF0YUl0ZW0udWlkKSxyJiYocz1mdW5jdGlvbihlKXthPWMuX2RhdGFNYXBbZS5pZF0sdFtpXShhLmdldENvbm5lY3RvcihoLm9wdGlvbnMubmFtZSkpLHQudXBkYXRlTW9kZWwoKX0sYy5fZGVmZXJyZWRDb25uZWN0aW9uVXBkYXRlcy5wdXNoKHIub25BY3RpdmF0ZShzKSkpKSk6dFtpXShuZXcgJChlW2krXCJQb2ludFwiXSgpLngrby54LGVbaStcIlBvaW50XCJdKCkueStvLnkpKX0sYm91bmRpbmdCb3g6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8scz1YLmVtcHR5KCkscj1ndCh0KT90aGlzLl9nZXREaWFncmFtSXRlbXModCk6e3NoYXBlczp0aGlzLnNoYXBlc307aWYoci5zaGFwZXMubGVuZ3RoPjApZm9yKG49ci5zaGFwZXNbMF0scz1uLmJvdW5kcyhvZSksbz0xO288ci5zaGFwZXMubGVuZ3RoO28rKyluPXIuc2hhcGVzW29dLGk9bi5ib3VuZHMob2UpLGU9PT0hMCYmKGkueC09bi5fcm90YXRpb25PZmZzZXQueCxpLnktPW4uX3JvdGF0aW9uT2Zmc2V0LnkpLHM9cy51bmlvbihpKTtyZXR1cm4gc30sX2NvbnRhaW5lck9mZnNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWxlbWVudC5vZmZzZXQoKTtyZXR1cm4gdGhpcy50b29sQmFyJiYodC50b3ArPVUodGhpcy50b29sQmFyLmVsZW1lbnQpKSx0fSxkb2N1bWVudFRvVmlldzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9jb250YWluZXJPZmZzZXQoKTtyZXR1cm4gbmV3ICQodC54LWUubGVmdCx0LnktZS50b3ApfSx2aWV3VG9Eb2N1bWVudDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9jb250YWluZXJPZmZzZXQoKTtyZXR1cm4gbmV3ICQodC54K2UubGVmdCx0LnkrZS50b3ApfSx2aWV3VG9Nb2RlbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtV2l0aE1hdHJpeCh0LHRoaXMuX21hdHJpeEludmVydCl9LG1vZGVsVG9WaWV3OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl90cmFuc2Zvcm1XaXRoTWF0cml4KHQsdGhpcy5fbWF0cml4KX0sbW9kZWxUb0xheWVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl90cmFuc2Zvcm1XaXRoTWF0cml4KHQsdGhpcy5fbGF5ZXJNYXRyaXgpfSxsYXllclRvTW9kZWw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybVdpdGhNYXRyaXgodCx0aGlzLl9sYXllck1hdHJpeEludmVydCl9LGRvY3VtZW50VG9Nb2RlbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmRvY3VtZW50VG9WaWV3KHQpO3JldHVybiB0aGlzLmNhbnZhcy50cmFuc2xhdGV8fChlLng9ZS54K3RoaXMuc2Nyb2xsZXIuc2Nyb2xsTGVmdCxlLnk9ZS55K3RoaXMuc2Nyb2xsZXIuc2Nyb2xsVG9wKSx0aGlzLnZpZXdUb01vZGVsKGUpfSxtb2RlbFRvRG9jdW1lbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudmlld1RvRG9jdW1lbnQodGhpcy5tb2RlbFRvVmlldyh0KSl9LF90cmFuc2Zvcm1XaXRoTWF0cml4OmZ1bmN0aW9uKHQsZSl7dmFyIGksbixvPXQ7cmV0dXJuIHQgaW5zdGFuY2VvZiAkP2UmJihvPWUuYXBwbHkodCkpOihpPXRoaXMuX3RyYW5zZm9ybVdpdGhNYXRyaXgodC50b3BMZWZ0KCksZSksbj10aGlzLl90cmFuc2Zvcm1XaXRoTWF0cml4KHQuYm90dG9tUmlnaHQoKSxlKSxvPVguZnJvbVBvaW50cyhpLG4pKSxvfSxzZXREYXRhU291cmNlOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucy5kYXRhU291cmNlPXQsdGhpcy5fZGF0YVNvdXJjZSgpLHRoaXMub3B0aW9ucy5hdXRvQmluZCYmdGhpcy5kYXRhU291cmNlLmZldGNoKCl9LHNldENvbm5lY3Rpb25zRGF0YVNvdXJjZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnMuY29ubmVjdGlvbnNEYXRhU291cmNlPXQsdGhpcy5fY29ubmVjdGlvbkRhdGFTb3VyY2UoKSx0aGlzLm9wdGlvbnMuYXV0b0JpbmQmJnRoaXMuY29ubmVjdGlvbnNEYXRhU291cmNlLmZldGNoKCl9LGxheW91dDpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbyxzO3N3aXRjaCh0aGlzLl9sYXlvdXRpbmc9ITAscHQodCkmJih0PXRoaXMub3B0aW9ucy5sYXlvdXQpLGU9cHQodCl8fHB0KHQudHlwZSk/XCJUcmVlXCI6dC50eXBlLGUudG9Mb3dlckNhc2UoKSl7Y2FzZVwidHJlZVwiOmk9bmV3IHouVHJlZUxheW91dCh0aGlzKTticmVhaztjYXNlXCJsYXllcmVkXCI6aT1uZXcgei5MYXllcmVkTGF5b3V0KHRoaXMpO2JyZWFrO2Nhc2VcImZvcmNlZGlyZWN0ZWRcIjpjYXNlXCJmb3JjZVwiOmNhc2VcInNwcmluZ1wiOmNhc2VcInNwcmluZ2VtYmVkZGVyXCI6aT1uZXcgei5TcHJpbmdMYXlvdXQodGhpcyk7YnJlYWs7ZGVmYXVsdDp0aHJvd1wiTGF5b3V0IGFsZ29yaXRobSAnXCIrZStcIicgaXMgbm90IHN1cHBvcnRlZC5cIn1uPW5ldyB6LkxheW91dFN0YXRlKHRoaXMpLG89aS5sYXlvdXQodCksbyYmKHM9bmV3IHouTGF5b3V0VW5kb1VuaXQobixvLHQ/dC5hbmltYXRlOm51bGwpLHRoaXMudW5kb1JlZG9TZXJ2aWNlLmFkZChzKSksdGhpcy5fbGF5b3V0aW5nPSExLHRoaXMuX3JlZHJhd0Nvbm5lY3Rpb25zKCl9LGdldFNoYXBlQnlJZDpmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4oZT1odC5maXJzdCh0aGlzLnNoYXBlcyxmdW5jdGlvbihlKXtyZXR1cm4gZS52aXN1YWwuaWQ9PT10fSkpP2U6ZT1odC5maXJzdCh0aGlzLmNvbm5lY3Rpb25zLGZ1bmN0aW9uKGUpe3JldHVybiBlLnZpc3VhbC5pZD09PXR9KX0sZ2V0U2hhcGVCeU1vZGVsSWQ6ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIGU9dGhpcy5faXNFZGl0YWJsZT90aGlzLl9kYXRhTWFwW3RdOmh0LmZpcnN0KHRoaXMuc2hhcGVzLGZ1bmN0aW9uKGUpe3JldHVybihlLmRhdGFJdGVtfHx7fSkuaWQ9PT10fSl9LGdldFNoYXBlQnlNb2RlbFVpZDpmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gZT10aGlzLl9pc0VkaXRhYmxlP2h0LmZpcnN0KHRoaXMuc2hhcGVzLGZ1bmN0aW9uKGUpe3JldHVybihlLmRhdGFJdGVtfHx7fSkudWlkPT09dH0pOnRoaXMuX2RhdGFNYXBbdF19LGdldENvbm5lY3Rpb25CeU1vZGVsSWQ6ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIHRoaXMuY29ubmVjdGlvbnNEYXRhU291cmNlJiYoZT1odC5maXJzdCh0aGlzLmNvbm5lY3Rpb25zLGZ1bmN0aW9uKGUpe3JldHVybihlLmRhdGFJdGVtfHx7fSkuaWQ9PT10fSkpLGV9LGdldENvbm5lY3Rpb25CeU1vZGVsVWlkOmZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiB0aGlzLmNvbm5lY3Rpb25zRGF0YVNvdXJjZSYmKGU9dGhpcy5fY29ubmVjdGlvbnNEYXRhTWFwW3RdKSxlfSxfZXh0ZW5kTGF5b3V0T3B0aW9uczpmdW5jdGlvbih0KXt0LmxheW91dCYmKHQubGF5b3V0PUEoe30sei5MYXlvdXRCYXNlLmZuLmRlZmF1bHRPcHRpb25zfHx7fSx0LmxheW91dCkpfSxfc2VsZWN0aW9uQ2hhbmdlZDpmdW5jdGlvbih0LGUpeyh0Lmxlbmd0aHx8ZS5sZW5ndGgpJiZ0aGlzLnRyaWdnZXIoVXQse3NlbGVjdGVkOnQsZGVzZWxlY3RlZDplfSl9LF9nZXRWYWxpZFpvb206ZnVuY3Rpb24odCl7cmV0dXJuIHh0Lm1pbih4dC5tYXgodCx0aGlzLm9wdGlvbnMuem9vbU1pbiksdGhpcy5vcHRpb25zLnpvb21NYXgpfSxfcGFuVHJhbnNmb3JtOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10fHxlLl9wYW47ZS5jYW52YXMudHJhbnNsYXRlPyhlLnNjcm9sbGVyLnNjcm9sbFRvKGkueCxpLnkpLGUuX3pvb21NYWluTGF5ZXIoKSk6KGUuX3N0b3JlUGFuKGkpLGUuX3RyYW5zZm9ybU1haW5MYXllcigpKX0sX2ZpbmlzaFBhbjpmdW5jdGlvbigpe3RoaXMudHJpZ2dlcihIdCx7dG90YWw6dGhpcy5fcGFuLGRlbHRhOk51bWJlci5OYU59KX0sX3N0b3JlUGFuOmZ1bmN0aW9uKHQpe3RoaXMuX3Bhbj10LHRoaXMuX3N0b3JlVmlld01hdHJpeCgpfSxfem9vbU1haW5MYXllcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3pvb20sZT1uZXcgVygwLDAsdCx0KTtlLnJlbmRlcih0aGlzLm1haW5MYXllciksdGhpcy5fc3RvcmVMYXllck1hdHJpeChlKSx0aGlzLl9zdG9yZVZpZXdNYXRyaXgoKX0sX3RyYW5zZm9ybU1haW5MYXllcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BhbixlPXRoaXMuX3pvb20saT1uZXcgVyh0LngsdC55LGUsZSk7aS5yZW5kZXIodGhpcy5tYWluTGF5ZXIpLHRoaXMuX3N0b3JlTGF5ZXJNYXRyaXgoaSksdGhpcy5fc3RvcmVWaWV3TWF0cml4KCl9LF9zdG9yZUxheWVyTWF0cml4OmZ1bmN0aW9uKHQpe3RoaXMuX2xheWVyTWF0cml4PXQudG9NYXRyaXgoKSx0aGlzLl9sYXllck1hdHJpeEludmVydD10LmludmVydCgpLnRvTWF0cml4KCl9LF9zdG9yZVZpZXdNYXRyaXg6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wYW4sZT10aGlzLl96b29tLGk9bmV3IFcodC54LHQueSxlLGUpO3RoaXMuX21hdHJpeD1pLnRvTWF0cml4KCksdGhpcy5fbWF0cml4SW52ZXJ0PWkuaW52ZXJ0KCkudG9NYXRyaXgoKX0sX3RvSW5kZXg6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9nZXREaWFncmFtSXRlbXModCk7dGhpcy5tYWluTGF5ZXIudG9JbmRleChpLnZpc3VhbHMsZSksdGhpcy5fZml4T3JkZXJpbmcoaSwhMSl9LF9maXhPcmRlcmluZzpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbz1lP3RoaXMuc2hhcGVzLmxlbmd0aC0xOjAscz1lP3RoaXMuY29ubmVjdGlvbnMubGVuZ3RoLTE6MDtmb3IoaT0wO2k8dC5zaGFwZXMubGVuZ3RoO2krKyluPXQuc2hhcGVzW2ldLGh0LnJlbW92ZSh0aGlzLnNoYXBlcyxuKSxodC5pbnNlcnQodGhpcy5zaGFwZXMsbixvKTtmb3IoaT0wO2k8dC5jb25zLmxlbmd0aDtpKyspbj10LmNvbnNbaV0saHQucmVtb3ZlKHRoaXMuY29ubmVjdGlvbnMsbiksaHQuaW5zZXJ0KHRoaXMuY29ubmVjdGlvbnMsbixzKX0sX2dldERpYWdyYW1JdGVtczpmdW5jdGlvbih0KXt2YXIgZSxpLG49e30sbz10O2ZvcihuLnZpc3VhbHM9W10sbi5zaGFwZXM9W10sbi5jb25zPVtdLHQ/X3QodCl8fChvPVt0XSk6bz10aGlzLl9zZWxlY3RlZEl0ZW1zLnNsaWNlKCksZT0wO2U8by5sZW5ndGg7ZSsrKWk9b1tlXSxpIGluc3RhbmNlb2YgeD8obi5zaGFwZXMucHVzaChpKSxuLnZpc3VhbHMucHVzaChpLnZpc3VhbCkpOmkgaW5zdGFuY2VvZiBiJiYobi5jb25zLnB1c2goaSksbi52aXN1YWxzLnB1c2goaS52aXN1YWwpKTtyZXR1cm4gbn0sX3JlbW92ZUl0ZW06ZnVuY3Rpb24odCxlLGkpe3Quc2VsZWN0KCExKSx0IGluc3RhbmNlb2YgeD8odGhpcy5fcmVtb3ZlU2hhcGVEYXRhSXRlbSh0KSx0aGlzLl9yZW1vdmVTaGFwZSh0LGUsaSkpOnQgaW5zdGFuY2VvZiBiJiYodGhpcy5fcmVtb3ZlQ29ubmVjdGlvbkRhdGFJdGVtKHQpLHRoaXMuX3JlbW92ZUNvbm5lY3Rpb24odCxlKSksdGhpcy5tYWluTGF5ZXIucmVtb3ZlKHQudmlzdWFsKX0sX3JlbW92ZVNoYXBlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvLHMscixhPVtdLGg9W107Zm9yKHRoaXMudG9vbFNlcnZpY2UuX3JlbW92ZUhvdmVyKCksZSYmdGhpcy51bmRvUmVkb1NlcnZpY2UuYWRkQ29tcG9zaXRlSXRlbShuZXcgWSh0KSksaHQucmVtb3ZlKHRoaXMuc2hhcGVzLHQpLHRoaXMuX3NoYXBlc1F1YWRUcmVlLnJlbW92ZSh0KSxuPTA7bjx0LmNvbm5lY3RvcnMubGVuZ3RoO24rKylmb3Iocz10LmNvbm5lY3RvcnNbbl0scj0wO3I8cy5jb25uZWN0aW9ucy5sZW5ndGg7cisrKW89cy5jb25uZWN0aW9uc1tyXSxpJiZQLmluQXJyYXkobyxpKXx8KG8uc291cmNlQ29ubmVjdG9yPT1zP2EucHVzaChvKTpvLnRhcmdldENvbm5lY3Rvcj09cyYmaC5wdXNoKG8pKTtmb3Iobj0wO248YS5sZW5ndGg7bisrKWFbbl0uc291cmNlKG51bGwsZSksYVtuXS51cGRhdGVNb2RlbCgpO2ZvcihuPTA7bjxoLmxlbmd0aDtuKyspaFtuXS50YXJnZXQobnVsbCxlKSxoW25dLnVwZGF0ZU1vZGVsKCl9LF9yZW1vdmVDb25uZWN0aW9uOmZ1bmN0aW9uKHQsZSl7dC5zb3VyY2VDb25uZWN0b3ImJmh0LnJlbW92ZSh0LnNvdXJjZUNvbm5lY3Rvci5jb25uZWN0aW9ucyx0KSx0LnRhcmdldENvbm5lY3RvciYmaHQucmVtb3ZlKHQudGFyZ2V0Q29ubmVjdG9yLmNvbm5lY3Rpb25zLHQpLGUmJnRoaXMudW5kb1JlZG9TZXJ2aWNlLmFkZENvbXBvc2l0ZUl0ZW0obmV3IFEodCkpLGh0LnJlbW92ZSh0aGlzLmNvbm5lY3Rpb25zLHQpfSxfcmVtb3ZlRGF0YUl0ZW1zOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixvLHM7Zm9yKHQ9X3QodCk/dDpbdF07dC5sZW5ndGg7KWlmKGk9dC5zaGlmdCgpLG89dGhpcy5fZGF0YU1hcFtpLnVpZF0sbyYmKHRoaXMuX3JlbW92ZVNoYXBlQ29ubmVjdGlvbnMobyksdGhpcy5fcmVtb3ZlSXRlbShvLCExKSxkZWxldGUgdGhpcy5fZGF0YU1hcFtpLnVpZF0sZSYmaS5oYXNDaGlsZHJlbiYmaS5sb2FkZWQoKSkpZm9yKG49aS5jaGlsZHJlbi5kYXRhKCkscz0wO3M8bi5sZW5ndGg7cysrKXQucHVzaChuW3NdKX0sX3JlbW92ZVNoYXBlQ29ubmVjdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGUsaT10LmNvbm5lY3Rpb25zKCk7aWYoaSlmb3IoZT0wO2U8aS5sZW5ndGg7ZSsrKXRoaXMuX3JlbW92ZUl0ZW0oaVtlXSwhMSl9LF9hZGREYXRhSXRlbTpmdW5jdGlvbih0LGUpe3ZhciBpLG47aWYobXQodCkpcmV0dXJuKGk9dGhpcy5fZGF0YU1hcFt0LmlkXSk/aToobj1BKHt9LHRoaXMub3B0aW9ucy5zaGFwZURlZmF1bHRzKSxuLmRhdGFJdGVtPXQsaT1uZXcgeChuLHRoaXMpLHRoaXMuYWRkU2hhcGUoaSxlIT09ITEpLHRoaXMuX2RhdGFNYXBbdC5pZF09aSxpKX0sX2FkZERhdGFJdGVtQnlVaWQ6ZnVuY3Rpb24odCl7dmFyIGUsaTtpZihtdCh0KSlyZXR1cm4oZT10aGlzLl9kYXRhTWFwW3QudWlkXSk/ZTooaT1BKHt9LHRoaXMub3B0aW9ucy5zaGFwZURlZmF1bHRzKSxpLmRhdGFJdGVtPXQsZT1uZXcgeChpLHRoaXMpLHRoaXMuYWRkU2hhcGUoZSksdGhpcy5fZGF0YU1hcFt0LnVpZF09ZSxlKX0sX2FkZERhdGFJdGVtczpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbyxzLHI7Zm9yKG49MDtuPHQubGVuZ3RoO24rKylpPXRbbl0sXG4gICAgbz10aGlzLl9hZGREYXRhSXRlbUJ5VWlkKGkpLHM9dGhpcy5fYWRkRGF0YUl0ZW1CeVVpZChlKSxzJiYhdGhpcy5jb25uZWN0ZWQocyxvKSYmKHI9dGhpcy5jb25uZWN0KHMsbykpfSxfcmVmcmVzaFNvdXJjZTpmdW5jdGlvbih0KXt2YXIgZSxpLG49dGhpcyxvPXQubm9kZSxzPXQuYWN0aW9uLHI9dC5pdGVtcyxhPW4ub3B0aW9ucztpZih0LmZpZWxkKWZvcihlPTA7ZTxyLmxlbmd0aDtlKyspdGhpcy5fZGF0YU1hcFtyW2VdLnVpZF0mJnRoaXMuX2RhdGFNYXBbcltlXS51aWRdLnJlZHJhd1Zpc3VhbCgpO2Vsc2V7aWYoXCJyZW1vdmVcIj09cyl0aGlzLl9yZW1vdmVEYXRhSXRlbXModC5pdGVtcywhMCk7ZWxzZSBmb3IocyYmXCJpdGVtbG9hZGVkXCIhPT1zfHx0aGlzLl9iaW5kaW5nUm9vdHN8fCh0aGlzLl9iaW5kaW5nUm9vdHM9ITAsaT0hMCksc3x8b3x8bi5jbGVhcigpLHRoaXMuX2FkZERhdGFJdGVtcyhyLG8pLGU9MDtlPHIubGVuZ3RoO2UrKylyW2VdLmxvYWQoKTthLmxheW91dCYmKGl8fFwicmVtb3ZlXCI9PXN8fFwiYWRkXCI9PXMpJiZuLmxheW91dChhLmxheW91dCksaSYmKHRoaXMudHJpZ2dlcihcImRhdGFCb3VuZFwiKSx0aGlzLl9iaW5kaW5nUm9vdHM9ITEpfX0sX2FkZEl0ZW06ZnVuY3Rpb24odCl7dCBpbnN0YW5jZW9mIHg/dGhpcy5hZGRTaGFwZSh0KTp0IGluc3RhbmNlb2YgYiYmdGhpcy5hZGRDb25uZWN0aW9uKHQpfSxfY3JlYXRlVG9vbEJhcjpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbyxzLHIsYSxoLGMsZD10aGlzLnRvb2xTZXJ2aWNlLmRpYWdyYW07dGhpcy5zaW5nbGVUb29sQmFyfHwxIT09ZC5zZWxlY3QoKS5sZW5ndGh8fChlPWQuc2VsZWN0KClbMF0sZSYmZS5vcHRpb25zLmVkaXRhYmxlIT09ITEmJihpPWUub3B0aW9ucy5lZGl0YWJsZSxuPWkudG9vbHMsdGhpcy5faXNFZGl0YWJsZSYmMD09PW4ubGVuZ3RoJiYoZSBpbnN0YW5jZW9mIHg/bj1bXCJlZGl0XCIsXCJyb3RhdGVDbG9ja3dpc2VcIixcInJvdGF0ZUFudGljbG9ja3dpc2VcIl06ZSBpbnN0YW5jZW9mIGImJihuPVtcImVkaXRcIl0pLGkmJmkucmVtb3ZlIT09ITEmJm4ucHVzaChcImRlbGV0ZVwiKSksbiYmbi5sZW5ndGgmJihvPTIwLHRoaXMuc2luZ2xlVG9vbEJhcj1uZXcgUyhkLHt0b29sczpuLGNsaWNrOlIodGhpcy5fdG9vbEJhckNsaWNrLHRoaXMpLG1vZGFsOiEwfSkscj1PKHRoaXMuc2luZ2xlVG9vbEJhci5fcG9wdXAuZWxlbWVudCksYT1VKHRoaXMuc2luZ2xlVG9vbEJhci5fcG9wdXAuZWxlbWVudCksZSBpbnN0YW5jZW9mIHg/KGg9dGhpcy5tb2RlbFRvVmlldyhlLmJvdW5kcyhvZSkpLHM9JChoLngsaC55KS5taW51cygkKChyLWgud2lkdGgpLzIsYStvKSkpOmUgaW5zdGFuY2VvZiBiJiYoYz10aGlzLm1vZGVsVG9WaWV3KGUuYm91bmRzKCkpLHM9JChjLngsYy55KS5taW51cygkKChyLWMud2lkdGgtMjApLzIsYStvKSkpLHM/KHRoaXMuY2FudmFzLnRyYW5zbGF0ZXx8KHM9cy5taW51cygkKHRoaXMuc2Nyb2xsZXIuc2Nyb2xsTGVmdCx0aGlzLnNjcm9sbGVyLnNjcm9sbFRvcCkpKSxzPXRoaXMudmlld1RvRG9jdW1lbnQocykscz0kKHh0Lm1heChzLngsMCkseHQubWF4KHMueSwwKSksdGhpcy5zaW5nbGVUb29sQmFyLnNob3dBdChzKSx0JiZ0aGlzLnNpbmdsZVRvb2xCYXIuX3BvcHVwLm9uZShcImNsb3NlXCIsXykpOnRoaXMuX2Rlc3Ryb3lUb29sQmFyKCkpKSl9LF90b29sQmFyQ2xpY2s6ZnVuY3Rpb24odCl7dGhpcy50cmlnZ2VyKFwidG9vbEJhckNsaWNrXCIsdCksdGhpcy5fZGVzdHJveVRvb2xCYXIoKX0sX25vcm1hbGl6ZVBvaW50Wm9vbTpmdW5jdGlvbih0KXtyZXR1cm4gdC50aW1lcygxL3RoaXMuem9vbSgpKX0sX2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLnNoYXBlcz1bXSx0aGlzLl9zZWxlY3RlZEl0ZW1zPVtdLHRoaXMuY29ubmVjdGlvbnM9W10sdGhpcy5fZGF0YU1hcD17fSx0aGlzLl9jb25uZWN0aW9uc0RhdGFNYXA9e30sdGhpcy5faW5hY3RpdmVTaGFwZUl0ZW1zPW5ldyBkLHRoaXMuX2RlZmVycmVkQ29ubmVjdGlvblVwZGF0ZXM9W10sdGhpcy51bmRvUmVkb1NlcnZpY2U9bmV3IGl0KHt1bmRvbmU6dGhpcy5fc3luY0hhbmRsZXIscmVkb25lOnRoaXMuX3N5bmNIYW5kbGVyfSksdGhpcy5pZD16LnJhbmRvbUlkKCl9LF9mZXRjaEZyZXNoRGF0YTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5fZGF0YVNvdXJjZSgpLHQuX2lzRWRpdGFibGUmJnQuX2Nvbm5lY3Rpb25EYXRhU291cmNlKCksdC5vcHRpb25zLmF1dG9CaW5kJiYodC5faXNFZGl0YWJsZT8odGhpcy5fbG9hZGluZ1NoYXBlcz0hMCx0aGlzLl9sb2FkaW5nQ29ubmVjdGlvbnM9ITAsdC5kYXRhU291cmNlLmZldGNoKCksdC5jb25uZWN0aW9uc0RhdGFTb3VyY2UuZmV0Y2goKSk6dC5kYXRhU291cmNlLmZldGNoKCkpfSxfZGF0YVNvdXJjZTpmdW5jdGlvbigpe3ZhciB0LGU7bXQodGhpcy5vcHRpb25zLmNvbm5lY3Rpb25zRGF0YVNvdXJjZSk/KHRoaXMuX2lzRWRpdGFibGU9ITAsdD10aGlzLm9wdGlvbnMuZGF0YVNvdXJjZXx8e30sZT1fdCh0KT97ZGF0YTp0fTp0LHRoaXMuZGF0YVNvdXJjZSYmdGhpcy5fc2hhcGVzUmVmcmVzaEhhbmRsZXI/dGhpcy5kYXRhU291cmNlLnVuYmluZChcImNoYW5nZVwiLHRoaXMuX3NoYXBlc1JlZnJlc2hIYW5kbGVyKS51bmJpbmQoXCJyZXF1ZXN0U3RhcnRcIix0aGlzLl9zaGFwZXNSZXF1ZXN0U3RhcnRIYW5kbGVyKS51bmJpbmQoXCJlcnJvclwiLHRoaXMuX3NoYXBlc0Vycm9ySGFuZGxlcik6KHRoaXMuX3NoYXBlc1JlZnJlc2hIYW5kbGVyPVIodGhpcy5fcmVmcmVzaFNoYXBlcyx0aGlzKSx0aGlzLl9zaGFwZXNSZXF1ZXN0U3RhcnRIYW5kbGVyPVIodGhpcy5fc2hhcGVzUmVxdWVzdFN0YXJ0LHRoaXMpLHRoaXMuX3NoYXBlc0Vycm9ySGFuZGxlcj1SKHRoaXMuX2Vycm9yLHRoaXMpKSx0aGlzLmRhdGFTb3VyY2U9a2VuZG8uZGF0YS5EYXRhU291cmNlLmNyZWF0ZShlKS5iaW5kKFwiY2hhbmdlXCIsdGhpcy5fc2hhcGVzUmVmcmVzaEhhbmRsZXIpLmJpbmQoXCJyZXF1ZXN0U3RhcnRcIix0aGlzLl9zaGFwZXNSZXF1ZXN0U3RhcnRIYW5kbGVyKS5iaW5kKFwiZXJyb3JcIix0aGlzLl9zaGFwZXNFcnJvckhhbmRsZXIpKToodGhpcy5fdHJlZURhdGFTb3VyY2UoKSx0aGlzLl9pc0VkaXRhYmxlPSExKX0sX2Nvbm5lY3Rpb25EYXRhU291cmNlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLm9wdGlvbnMuY29ubmVjdGlvbnNEYXRhU291cmNlO2UmJih0PV90KGUpP3tkYXRhOmV9OmUsdGhpcy5jb25uZWN0aW9uc0RhdGFTb3VyY2UmJnRoaXMuX2Nvbm5lY3Rpb25zUmVmcmVzaEhhbmRsZXI/dGhpcy5jb25uZWN0aW9uc0RhdGFTb3VyY2UudW5iaW5kKFwiY2hhbmdlXCIsdGhpcy5fY29ubmVjdGlvbnNSZWZyZXNoSGFuZGxlcikudW5iaW5kKFwicmVxdWVzdFN0YXJ0XCIsdGhpcy5fY29ubmVjdGlvbnNSZXF1ZXN0U3RhcnRIYW5kbGVyKS51bmJpbmQoXCJlcnJvclwiLHRoaXMuX2Nvbm5lY3Rpb25zRXJyb3JIYW5kbGVyKToodGhpcy5fY29ubmVjdGlvbnNSZWZyZXNoSGFuZGxlcj1SKHRoaXMuX3JlZnJlc2hDb25uZWN0aW9ucyx0aGlzKSx0aGlzLl9jb25uZWN0aW9uc1JlcXVlc3RTdGFydEhhbmRsZXI9Uih0aGlzLl9jb25uZWN0aW9uc1JlcXVlc3RTdGFydCx0aGlzKSx0aGlzLl9jb25uZWN0aW9uc0Vycm9ySGFuZGxlcj1SKHRoaXMuX2Nvbm5lY3Rpb25zRXJyb3IsdGhpcykpLHRoaXMuY29ubmVjdGlvbnNEYXRhU291cmNlPWtlbmRvLmRhdGEuRGF0YVNvdXJjZS5jcmVhdGUodCkuYmluZChcImNoYW5nZVwiLHRoaXMuX2Nvbm5lY3Rpb25zUmVmcmVzaEhhbmRsZXIpLmJpbmQoXCJyZXF1ZXN0U3RhcnRcIix0aGlzLl9jb25uZWN0aW9uc1JlcXVlc3RTdGFydEhhbmRsZXIpLmJpbmQoXCJlcnJvclwiLHRoaXMuX2Nvbm5lY3Rpb25zRXJyb3JIYW5kbGVyKSl9LF9zaGFwZXNSZXF1ZXN0U3RhcnQ6ZnVuY3Rpb24odCl7XCJyZWFkXCI9PXQudHlwZSYmKHRoaXMuX2xvYWRpbmdTaGFwZXM9ITApfSxfY29ubmVjdGlvbnNSZXF1ZXN0U3RhcnQ6ZnVuY3Rpb24odCl7XCJyZWFkXCI9PXQudHlwZSYmKHRoaXMuX2xvYWRpbmdDb25uZWN0aW9ucz0hMCl9LF9lcnJvcjpmdW5jdGlvbigpe3RoaXMuX2xvYWRpbmdTaGFwZXM9ITF9LF9jb25uZWN0aW9uc0Vycm9yOmZ1bmN0aW9uKCl7dGhpcy5fbG9hZGluZ0Nvbm5lY3Rpb25zPSExfSxfcmVmcmVzaFNoYXBlczpmdW5jdGlvbih0KXtcInJlbW92ZVwiPT09dC5hY3Rpb24/dGhpcy5fc2hvdWxkUmVmcmVzaCgpJiZ0aGlzLl9yZW1vdmVTaGFwZXModC5pdGVtcyk6XCJpdGVtY2hhbmdlXCI9PT10LmFjdGlvbj90aGlzLl9zaG91bGRSZWZyZXNoKCkmJnRoaXMuX3VwZGF0ZVNoYXBlcyh0Lml0ZW1zLHQuZmllbGQpOlwiYWRkXCI9PT10LmFjdGlvbj90aGlzLl9pbmFjdGl2ZVNoYXBlSXRlbXMuYWRkKHQuaXRlbXMpOlwic3luY1wiPT09dC5hY3Rpb24/dGhpcy5fc3luY1NoYXBlcyh0Lml0ZW1zKTp0aGlzLnJlZnJlc2goKX0sX3Nob3VsZFJlZnJlc2g6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5fc3VzcGVuZGVkfSxfc3VzcGVuZE1vZGVsUmVmcmVzaDpmdW5jdGlvbigpe3RoaXMuX3N1c3BlbmRlZD0odGhpcy5fc3VzcGVuZGVkfHwwKSsxfSxfcmVzdW1lTW9kZWxSZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5fc3VzcGVuZGVkPXh0Lm1heCgodGhpcy5fc3VzcGVuZGVkfHwwKS0xLDApfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5fbG9hZGluZ1NoYXBlcz0hMSx0aGlzLl9sb2FkaW5nQ29ubmVjdGlvbnN8fHRoaXMuX3JlYmluZFNoYXBlc0FuZENvbm5lY3Rpb25zKCl9LF9yZWJpbmRTaGFwZXNBbmRDb25uZWN0aW9uczpmdW5jdGlvbigpe3RoaXMuY2xlYXIoKSx0aGlzLl9hZGRTaGFwZXModGhpcy5kYXRhU291cmNlLnZpZXcoKSksdGhpcy5jb25uZWN0aW9uc0RhdGFTb3VyY2UmJnRoaXMuX2FkZENvbm5lY3Rpb25zKHRoaXMuY29ubmVjdGlvbnNEYXRhU291cmNlLnZpZXcoKSwhMSksdGhpcy5vcHRpb25zLmxheW91dD90aGlzLmxheW91dCh0aGlzLm9wdGlvbnMubGF5b3V0KTp0aGlzLl9yZWRyYXdDb25uZWN0aW9ucygpLHRoaXMudHJpZ2dlcihcImRhdGFCb3VuZFwiKX0scmVmcmVzaENvbm5lY3Rpb25zOmZ1bmN0aW9uKCl7dGhpcy5fbG9hZGluZ0Nvbm5lY3Rpb25zPSExLHRoaXMuX2xvYWRpbmdTaGFwZXN8fHRoaXMuX3JlYmluZFNoYXBlc0FuZENvbm5lY3Rpb25zKCl9LF9yZWRyYXdDb25uZWN0aW9uczpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5jb25uZWN0aW9ucztmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0ucmVmcmVzaCgpfSxfcmVtb3ZlU2hhcGVzOmZ1bmN0aW9uKHQpe3ZhciBlLGksbj10aGlzLl9kYXRhTWFwO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspZT10W2ldLG5bZS5pZF0mJih0aGlzLnJlbW92ZShuW2UuaWRdLCExKSxuW2UuaWRdPW51bGwpfSxfc3luY1NoYXBlczpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10Ll9pbmFjdGl2ZVNoYXBlSXRlbXM7ZS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBuPWkuZGF0YUl0ZW0sbz1pLmVsZW1lbnQ7bi5pc05ldygpfHwobz8oby5fc2V0T3B0aW9uc0Zyb21Nb2RlbCgpLHQuYWRkU2hhcGUobyxpLnVuZG9hYmxlKSx0Ll9kYXRhTWFwW24uaWRdPW8pOnQuX2FkZERhdGFJdGVtKG4pLGkuYWN0aXZhdGUoKSxlLnJlbW92ZShuKSl9KX0sX3VwZGF0ZVNoYXBlczpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbztmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKW49dFtpXSxvPXRoaXMuX2RhdGFNYXBbbi5pZF0sbyYmby51cGRhdGVPcHRpb25zRnJvbU1vZGVsKG4sZSl9LF9hZGRTaGFwZXM6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5fYWRkRGF0YUl0ZW0odFtlXSwhMSl9LF9yZWZyZXNoQ29ubmVjdGlvbnM6ZnVuY3Rpb24odCl7XCJyZW1vdmVcIj09PXQuYWN0aW9uP3RoaXMuX3Nob3VsZFJlZnJlc2goKSYmdGhpcy5fcmVtb3ZlQ29ubmVjdGlvbnModC5pdGVtcyk6XCJhZGRcIj09PXQuYWN0aW9uP3RoaXMuX2FkZENvbm5lY3Rpb25zKHQuaXRlbXMpOlwic3luY1wiPT09dC5hY3Rpb258fChcIml0ZW1jaGFuZ2VcIj09PXQuYWN0aW9uP3RoaXMuX3Nob3VsZFJlZnJlc2goKSYmdGhpcy5fdXBkYXRlQ29ubmVjdGlvbnModC5pdGVtcyk6dGhpcy5yZWZyZXNoQ29ubmVjdGlvbnMoKSl9LF9yZW1vdmVDb25uZWN0aW9uczpmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLnJlbW92ZSh0aGlzLl9jb25uZWN0aW9uc0RhdGFNYXBbdFtlXS51aWRdLCExKSx0aGlzLl9jb25uZWN0aW9uc0RhdGFNYXBbdFtlXS51aWRdPW51bGx9LF91cGRhdGVDb25uZWN0aW9uczpmdW5jdGlvbih0KXt2YXIgZSxpLG47Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpPXRbZV0sbj10aGlzLl9jb25uZWN0aW9uc0RhdGFNYXBbaS51aWRdLG4udXBkYXRlT3B0aW9uc0Zyb21Nb2RlbChpKX0sX2FkZENvbm5lY3Rpb25zOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixvPXQubGVuZ3RoO2ZvcihpPTA7aTxvO2krKyluPXRbaV0sdGhpcy5fYWRkQ29ubmVjdGlvbkRhdGFJdGVtKG4sZSl9LF9hZGRDb25uZWN0aW9uRGF0YUl0ZW06ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG8sczt0aGlzLl9jb25uZWN0aW9uc0RhdGFNYXBbdC51aWRdfHwoaT10aGlzLl92YWxpZGF0ZUNvbm5lY3Rvcih0LmZyb20pLG10KGkpJiZudWxsIT09aXx8KGk9bmV3ICQodC5mcm9tWCx0LmZyb21ZKSksbj10aGlzLl92YWxpZGF0ZUNvbm5lY3Rvcih0LnRvKSxtdChuKSYmbnVsbCE9PW58fChuPW5ldyAkKHQudG9YLHQudG9ZKSksbXQoaSkmJm10KG4pJiYobz1BKHt9LHRoaXMub3B0aW9ucy5jb25uZWN0aW9uRGVmYXVsdHMpLG8uZGF0YUl0ZW09dCxzPW5ldyBiKGksbixvKSx0aGlzLl9jb25uZWN0aW9uc0RhdGFNYXBbdC51aWRdPXMsdGhpcy5hZGRDb25uZWN0aW9uKHMsZSkpKX0sX3ZhbGlkYXRlQ29ubmVjdG9yOmZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBtdCh0KSYmbnVsbCE9PXQmJihlPXRoaXMuX2RhdGFNYXBbdF0pLGV9LF90cmVlRGF0YVNvdXJjZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10Lm9wdGlvbnMsaT1lLmRhdGFTb3VyY2U7aWYoaT1fdChpKT97ZGF0YTppfTppLGkgaW5zdGFuY2VvZiBrZW5kby5kYXRhLkRhdGFTb3VyY2UmJiEoaSBpbnN0YW5jZW9mIGtlbmRvLmRhdGEuSGllcmFyY2hpY2FsRGF0YVNvdXJjZSkpdGhyb3cgRXJyb3IoXCJJbmNvcnJlY3QgRGF0YVNvdXJjZSB0eXBlLiBJZiBhIHNpbmdsZSBkYXRhU291cmNlIGluc3RhbmNlIGlzIHNldCB0byB0aGUgZGlhZ3JhbSB0aGVuIGl0IHNob3VsZCBiZSBhIEhpZXJhcmNoaWNhbERhdGFTb3VyY2UuIFlvdSBzaG91bGQgc2V0IG9ubHkgdGhlIG9wdGlvbnMgaW5zdGVhZCBvZiBhbiBpbnN0YW5jZSBvciBhIEhpZXJhcmNoaWNhbERhdGFTb3VyY2UgaW5zdGFuY2Ugb3Igc3VwcGx5IGNvbm5lY3Rpb25zRGF0YVNvdXJjZSBhcyB3ZWxsLlwiKTtpLmZpZWxkc3x8KGkuZmllbGRzPVt7ZmllbGQ6XCJ0ZXh0XCJ9LHtmaWVsZDpcInVybFwifSx7ZmllbGQ6XCJzcHJpdGVDc3NDbGFzc1wifSx7ZmllbGQ6XCJpbWFnZVVybFwifV0pLHQuZGF0YVNvdXJjZSYmdC5fcmVmcmVzaEhhbmRsZXImJnQuX3VuYmluZERhdGFTb3VyY2UoKSx0Ll9yZWZyZXNoSGFuZGxlcj1SKHQuX3JlZnJlc2hTb3VyY2UsdCksdC5fZXJyb3JIYW5kbGVyPVIodC5fZXJyb3IsdCksdC5kYXRhU291cmNlPUguY3JlYXRlKGkpLmJpbmQoa3QsdC5fcmVmcmVzaEhhbmRsZXIpLmJpbmQoRXQsdC5fZXJyb3JIYW5kbGVyKX0sX3VuYmluZERhdGFTb3VyY2U6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QuZGF0YVNvdXJjZS51bmJpbmQoa3QsdC5fcmVmcmVzaEhhbmRsZXIpLnVuYmluZChFdCx0Ll9lcnJvckhhbmRsZXIpfSxfYWRvcm46ZnVuY3Rpb24odCxpKXtpIT09ZSYmdCYmKGk/KHRoaXMuX2Fkb3JuZXJzLnB1c2godCksdGhpcy5hZG9ybmVyTGF5ZXIuYXBwZW5kKHQudmlzdWFsKSk6KGh0LnJlbW92ZSh0aGlzLl9hZG9ybmVycyx0KSx0aGlzLmFkb3JuZXJMYXllci5yZW1vdmUodC52aXN1YWwpKSl9LF9zaG93Q29ubmVjdG9yczpmdW5jdGlvbih0LGUpe2U/dGhpcy5fY29ubmVjdG9yc0Fkb3JuZXIuc2hvdyh0KTp0aGlzLl9jb25uZWN0b3JzQWRvcm5lci5kZXN0cm95KCl9LF91cGRhdGVBZG9ybmVyczpmdW5jdGlvbigpe3ZhciB0LGUsaT10aGlzLl9hZG9ybmVycztmb3IodD0wO3Q8aS5sZW5ndGg7dCsrKWU9aVt0XSxlLnJlZnJlc2hCb3VuZHMmJmUucmVmcmVzaEJvdW5kcygpLGUucmVmcmVzaCgpfSxfcmVmcmVzaDpmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8dGhpcy5jb25uZWN0aW9ucy5sZW5ndGg7dCsrKXRoaXMuY29ubmVjdGlvbnNbdF0ucmVmcmVzaCgpfSxfZGVzdHJveVRvb2xCYXI6ZnVuY3Rpb24oKXt0aGlzLnNpbmdsZVRvb2xCYXImJih0aGlzLnNpbmdsZVRvb2xCYXIuaGlkZSgpLHRoaXMuc2luZ2xlVG9vbEJhci5kZXN0cm95KCksdGhpcy5zaW5nbGVUb29sQmFyPW51bGwpfSxfZGVzdHJveUdsb2JhbFRvb2xCYXI6ZnVuY3Rpb24oKXt0aGlzLnRvb2xCYXImJih0aGlzLnRvb2xCYXIuaGlkZSgpLHRoaXMudG9vbEJhci5kZXN0cm95KCksdGhpcy50b29sQmFyPW51bGwpfSxleHBvcnRET01WaXN1YWw6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNhbnZhcy5fdmlld0JveCxlPUUudHJhbnNmb3JtKCkudHJhbnNsYXRlKC10LngsLXQueSksaT1uZXcgRS5SZWN0KFswLDBdLFt0LndpZHRoLHQuaGVpZ2h0XSksbj1MLlBhdGguZnJvbVJlY3QoaSksbz1uZXcgTC5Hcm91cCh7dHJhbnNmb3JtOmV9KSxzPW5ldyBMLkdyb3VwKHtjbGlwOm59KSxyPXRoaXMuY2FudmFzLmRyYXdpbmdFbGVtZW50LmNoaWxkcmVuWzBdO3JldHVybiBzLmFwcGVuZChvKSxvLmNoaWxkcmVuLnB1c2gociksc30sZXhwb3J0VmlzdWFsOmZ1bmN0aW9uKCl7dmFyIHQ9RS50cmFuc2Zvcm0oKS5zY2FsZSgxL3RoaXMuX3pvb20pLGU9bmV3IEwuR3JvdXAoe3RyYW5zZm9ybTp0fSksaT10aGlzLm1haW5MYXllci5kcmF3aW5nRWxlbWVudDtyZXR1cm4gZS5jaGlsZHJlbi5wdXNoKGkpLGV9LF9zeW5jQ2hhbmdlczpmdW5jdGlvbigpe3RoaXMuX3N5bmNTaGFwZUNoYW5nZXMoKSx0aGlzLl9zeW5jQ29ubmVjdGlvbkNoYW5nZXMoKX0sX3N5bmNTaGFwZUNoYW5nZXM6ZnVuY3Rpb24oKXt0aGlzLmRhdGFTb3VyY2UmJnRoaXMuX2lzRWRpdGFibGUmJnRoaXMuZGF0YVNvdXJjZS5zeW5jKCl9LF9zeW5jQ29ubmVjdGlvbkNoYW5nZXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuY29ubmVjdGlvbnNEYXRhU291cmNlJiZlLl9pc0VkaXRhYmxlJiYodC53aGVuLmFwcGx5KHQsZS5fZGVmZXJyZWRDb25uZWN0aW9uVXBkYXRlcykudGhlbihmdW5jdGlvbigpe2UuY29ubmVjdGlvbnNEYXRhU291cmNlLnN5bmMoKX0pLGUuZGVmZXJyZWRDb25uZWN0aW9uVXBkYXRlcz1bXSl9fSksUC5FeHBvcnRNaXhpbi5leHRlbmQoQy5mbiwhMCksa2VuZG8uUERGTWl4aW4mJmtlbmRvLlBERk1peGluLmV4dGVuZChDLmZuKSxTPWtlbmRvLk9ic2VydmFibGUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7a2VuZG8uT2JzZXJ2YWJsZS5mbi5pbml0LmNhbGwodGhpcyksdGhpcy5kaWFncmFtPXQsdGhpcy5vcHRpb25zPUEoe30sdGhpcy5vcHRpb25zLGUpLHRoaXMuX3Rvb2xzPVtdLHRoaXMuY3JlYXRlVG9vbEJhcigpLHRoaXMuY3JlYXRlVG9vbHMoKSx0aGlzLmFwcGVuZFRvb2xzKCksdGhpcy5vcHRpb25zLm1vZGFsJiZ0aGlzLmNyZWF0ZVBvcHVwKCksdGhpcy5iaW5kKHRoaXMuZXZlbnRzLGUpfSxldmVudHM6W1wiY2xpY2tcIl0sY3JlYXRlUG9wdXA6ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lcj10KFwiPGRpdi8+XCIpLmFwcGVuZCh0aGlzLmVsZW1lbnQpLHRoaXMuX3BvcHVwPXRoaXMuY29udGFpbmVyLmtlbmRvUG9wdXAoe30pLmdldEtlbmRvUG9wdXAoKX0sYXBwZW5kVG9vbHM6ZnVuY3Rpb24oKXt2YXIgdCxlO2Zvcih0PTA7dDx0aGlzLl90b29scy5sZW5ndGg7dCsrKWU9dGhpcy5fdG9vbHNbdF0sKGUuYnV0dG9ucyYmZS5idXR0b25zLmxlbmd0aHx8IW10KGUuYnV0dG9ucykpJiZ0aGlzLl90b29sQmFyLmFkZChlKX0sY3JlYXRlVG9vbEJhcjpmdW5jdGlvbigpe3RoaXMuZWxlbWVudD10KFwiPGRpdi8+XCIpLHRoaXMuX3Rvb2xCYXI9dGhpcy5lbGVtZW50LmtlbmRvVG9vbEJhcih7Y2xpY2s6Uih0aGlzLmNsaWNrLHRoaXMpLHJlc2l6YWJsZTohMX0pLmdldEtlbmRvVG9vbEJhcigpLHRoaXMuZWxlbWVudC5jc3MoXCJib3JkZXJcIixcIm5vbmVcIil9LGNyZWF0ZVRvb2xzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDx0aGlzLm9wdGlvbnMudG9vbHMubGVuZ3RoO3QrKyl0aGlzLmNyZWF0ZVRvb2wodGhpcy5vcHRpb25zLnRvb2xzW3RdKX0sY3JlYXRlVG9vbDpmdW5jdGlvbih0KXt3dCh0KXx8KHQ9e25hbWU6dH0pO3ZhciBlPXQubmFtZStcIlRvb2xcIjt0aGlzW2VdP3RoaXNbZV0odCk6dGhpcy5fdG9vbHMucHVzaChBKHt9LHQse2F0dHJpYnV0ZXM6dGhpcy5fc2V0QXR0cmlidXRlcyh7YWN0aW9uOnQubmFtZX0pfSkpfSxzaG93QXQ6ZnVuY3Rpb24odCl7dGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLm9wZW4odC54LHQueSl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAuY2xvc2UoKX0sbmV3R3JvdXA6ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTpcImJ1dHRvbkdyb3VwXCIsYnV0dG9uczpbXX19LGVkaXRUb29sOmZ1bmN0aW9uKCl7dGhpcy5fdG9vbHMucHVzaCh7c3ByaXRlQ3NzQ2xhc3M6XCJrLWljb24gay1pLXBlbmNpbFwiLHNob3dUZXh0Olwib3ZlcmZsb3dcIix0eXBlOlwiYnV0dG9uXCIsdGV4dDpcIkVkaXRcIixhdHRyaWJ1dGVzOnRoaXMuX3NldEF0dHJpYnV0ZXMoe2FjdGlvbjpcImVkaXRcIn0pfSl9LGRlbGV0ZVRvb2w6ZnVuY3Rpb24oKXt0aGlzLl90b29scy5wdXNoKHtzcHJpdGVDc3NDbGFzczpcImstaWNvbiBrLWktY2xvc2VcIixzaG93VGV4dDpcIm92ZXJmbG93XCIsdHlwZTpcImJ1dHRvblwiLHRleHQ6XCJEZWxldGVcIixhdHRyaWJ1dGVzOnRoaXMuX3NldEF0dHJpYnV0ZXMoe2FjdGlvbjpcImRlbGV0ZVwifSl9KX0scm90YXRlQW50aWNsb2Nrd2lzZVRvb2w6ZnVuY3Rpb24odCl7dGhpcy5fYXBwZW5kR3JvdXAoXCJyb3RhdGVcIiksdGhpcy5fcm90YXRlR3JvdXAuYnV0dG9ucy5wdXNoKHtzcHJpdGVDc3NDbGFzczpcImstaWNvbiBrLWktcm90YXRlY2N3XCIsc2hvd1RleHQ6XCJvdmVyZmxvd1wiLHRleHQ6XCJSb3RhdGVBbnRpY2xvY2t3aXNlXCIsZ3JvdXA6XCJyb3RhdGVcIixhdHRyaWJ1dGVzOnRoaXMuX3NldEF0dHJpYnV0ZXMoe2FjdGlvbjpcInJvdGF0ZUFudGljbG9ja3dpc2VcIixzdGVwOnQuc3RlcH0pfSl9LHJvdGF0ZUNsb2Nrd2lzZVRvb2w6ZnVuY3Rpb24odCl7dGhpcy5fYXBwZW5kR3JvdXAoXCJyb3RhdGVcIiksdGhpcy5fcm90YXRlR3JvdXAuYnV0dG9ucy5wdXNoKHtzcHJpdGVDc3NDbGFzczpcImstaWNvbiBrLWktcm90YXRlY3dcIixhdHRyaWJ1dGVzOnRoaXMuX3NldEF0dHJpYnV0ZXMoe2FjdGlvbjpcInJvdGF0ZUNsb2Nrd2lzZVwiLHN0ZXA6dC5zdGVwfSksc2hvd1RleHQ6XCJvdmVyZmxvd1wiLHRleHQ6XCJSb3RhdGVDbG9ja3dpc2VcIixncm91cDpcInJvdGF0ZVwifSl9LGNyZWF0ZVNoYXBlVG9vbDpmdW5jdGlvbigpe3RoaXMuX2FwcGVuZEdyb3VwKFwiY3JlYXRlXCIpLHRoaXMuX2NyZWF0ZUdyb3VwLmJ1dHRvbnMucHVzaCh7c3ByaXRlQ3NzQ2xhc3M6XCJrLWljb24gay1pLXNoYXBlXCIsc2hvd1RleHQ6XCJvdmVyZmxvd1wiLHRleHQ6XCJDcmVhdGVTaGFwZVwiLGdyb3VwOlwiY3JlYXRlXCIsYXR0cmlidXRlczp0aGlzLl9zZXRBdHRyaWJ1dGVzKHthY3Rpb246XCJjcmVhdGVTaGFwZVwifSl9KX0sY3JlYXRlQ29ubmVjdGlvblRvb2w6ZnVuY3Rpb24oKXt0aGlzLl9hcHBlbmRHcm91cChcImNyZWF0ZVwiKSx0aGlzLl9jcmVhdGVHcm91cC5idXR0b25zLnB1c2goe3Nwcml0ZUNzc0NsYXNzOlwiay1pY29uIGstaS1jb25uZWN0b3JcIixzaG93VGV4dDpcIm92ZXJmbG93XCIsdGV4dDpcIkNyZWF0ZUNvbm5lY3Rpb25cIixncm91cDpcImNyZWF0ZVwiLGF0dHJpYnV0ZXM6dGhpcy5fc2V0QXR0cmlidXRlcyh7YWN0aW9uOlwiY3JlYXRlQ29ubmVjdGlvblwifSl9KX0sdW5kb1Rvb2w6ZnVuY3Rpb24oKXt0aGlzLl9hcHBlbmRHcm91cChcImhpc3RvcnlcIiksdGhpcy5faGlzdG9yeUdyb3VwLmJ1dHRvbnMucHVzaCh7c3ByaXRlQ3NzQ2xhc3M6XCJrLWljb24gay1pLXVuZG9cIixzaG93VGV4dDpcIm92ZXJmbG93XCIsdGV4dDpcIlVuZG9cIixncm91cDpcImhpc3RvcnlcIixhdHRyaWJ1dGVzOnRoaXMuX3NldEF0dHJpYnV0ZXMoe2FjdGlvbjpcInVuZG9cIn0pfSl9LHJlZG9Ub29sOmZ1bmN0aW9uKCl7dGhpcy5fYXBwZW5kR3JvdXAoXCJoaXN0b3J5XCIpLHRoaXMuX2hpc3RvcnlHcm91cC5idXR0b25zLnB1c2goe3Nwcml0ZUNzc0NsYXNzOlwiay1pY29uIGstaS1yZWRvXCIsc2hvd1RleHQ6XCJvdmVyZmxvd1wiLHRleHQ6XCJSZWRvXCIsZ3JvdXA6XCJoaXN0b3J5XCIsYXR0cmlidXRlczp0aGlzLl9zZXRBdHRyaWJ1dGVzKHthY3Rpb246XCJyZWRvXCJ9KX0pfSxfYXBwZW5kR3JvdXA6ZnVuY3Rpb24odCl7dmFyIGU9XCJfXCIrdCtcIkdyb3VwXCI7dGhpc1tlXXx8KHRoaXNbZV09dGhpcy5uZXdHcm91cCgpLHRoaXMuX3Rvb2xzLnB1c2godGhpc1tlXSkpfSxfc2V0QXR0cmlidXRlczpmdW5jdGlvbih0KXt2YXIgZT17fTtyZXR1cm4gdC5hY3Rpb24mJihlW2tlbmRvLmF0dHIoXCJhY3Rpb25cIildPXQuYWN0aW9uKSx0LnN0ZXAmJihlW2tlbmRvLmF0dHIoXCJzdGVwXCIpXT10LnN0ZXApLGV9LF9nZXRBdHRyaWJ1dGVzOmZ1bmN0aW9uKHQpe3ZhciBlLGk9e30sbj10LmF0dHIoa2VuZG8uYXR0cihcImFjdGlvblwiKSk7cmV0dXJuIG4mJihpLmFjdGlvbj1uKSxlPXQuYXR0cihrZW5kby5hdHRyKFwic3RlcFwiKSksZSYmKGkuc3RlcD1lKSxpfSxjbGljazpmdW5jdGlvbihlKXt2YXIgaT10aGlzLl9nZXRBdHRyaWJ1dGVzKHQoZS50YXJnZXQpKSxuPWkuYWN0aW9uO24mJnRoaXNbbl0mJnRoaXNbbl0oaSksdGhpcy50cmlnZ2VyKFwiY2xpY2tcIix0aGlzLmV2ZW50RGF0YShuLGUudGFyZ2V0KSl9LGV2ZW50RGF0YTpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbz10aGlzLnNlbGVjdGVkRWxlbWVudHMoKSxzPW8ubGVuZ3RoLHI9W10sYT1bXTtmb3Iobj0wO248cztuKyspaT1vW25dLGkgaW5zdGFuY2VvZiB4P3IucHVzaChpKTphLnB1c2goaSk7cmV0dXJue3NoYXBlczpyLGNvbm5lY3Rpb25zOmEsYWN0aW9uOnQsdGFyZ2V0OmV9fSxcImRlbGV0ZVwiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kaWFncmFtLGU9dC5fdHJpZ2dlclJlbW92ZSh0aGlzLnNlbGVjdGVkRWxlbWVudHMoKSk7ZS5sZW5ndGgmJih0aGlzLmRpYWdyYW0ucmVtb3ZlKGUsITApLHRoaXMuZGlhZ3JhbS5fc3luY0NoYW5nZXMoKSl9LGVkaXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNlbGVjdGVkRWxlbWVudHMoKTsxPT09dC5sZW5ndGgmJnRoaXMuZGlhZ3JhbS5lZGl0KHRbMF0pfSxyb3RhdGVDbG9ja3dpc2U6ZnVuY3Rpb24odCl7dmFyIGU9cGFyc2VGbG9hdCh0LnN0ZXB8fDkwKTt0aGlzLl9yb3RhdGUoZSl9LHJvdGF0ZUFudGljbG9ja3dpc2U6ZnVuY3Rpb24odCl7dmFyIGU9cGFyc2VGbG9hdCh0LnN0ZXB8fDkwKTt0aGlzLl9yb3RhdGUoLWUpfSxfcm90YXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGlhZ3JhbS5fcmVzaXppbmdBZG9ybmVyO2UuYW5nbGUoZS5hbmdsZSgpK3QpLGUucm90YXRlKCl9LHNlbGVjdGVkRWxlbWVudHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaWFncmFtLnNlbGVjdCgpfSxjcmVhdGVTaGFwZTpmdW5jdGlvbigpe3RoaXMuZGlhZ3JhbS5jcmVhdGVTaGFwZSgpfSxjcmVhdGVDb25uZWN0aW9uOmZ1bmN0aW9uKCl7dGhpcy5kaWFncmFtLmNyZWF0ZUNvbm5lY3Rpb24oKX0sdW5kbzpmdW5jdGlvbigpe3RoaXMuZGlhZ3JhbS51bmRvKCl9LHJlZG86ZnVuY3Rpb24oKXt0aGlzLmRpYWdyYW0ucmVkbygpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5kaWFncmFtPW51bGwsdGhpcy5lbGVtZW50PW51bGwsdGhpcy5vcHRpb25zPW51bGwsdGhpcy5fdG9vbEJhciYmdGhpcy5fdG9vbEJhci5kZXN0cm95KCksdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLmRlc3Ryb3koKX19KSxrPWtlbmRvLk9ic2VydmFibGUuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7a2VuZG8uT2JzZXJ2YWJsZS5mbi5pbml0LmNhbGwodGhpcyksdGhpcy5vcHRpb25zPVYoITAse30sdGhpcy5vcHRpb25zLGUpLHRoaXMuZWxlbWVudD10LHRoaXMubW9kZWw9dGhpcy5vcHRpb25zLm1vZGVsLHRoaXMuZmllbGRzPXRoaXMuX2dldEZpZWxkcygpLHRoaXMuX2luaXRDb250YWluZXIoKSx0aGlzLmNyZWF0ZUVkaXRhYmxlKCl9LG9wdGlvbnM6e2VkaXRvcnM6e319LF9pbml0Q29udGFpbmVyOmZ1bmN0aW9uKCl7dGhpcy53cmFwcGVyPXRoaXMuZWxlbWVudH0sY3JlYXRlRWRpdGFibGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnM7dGhpcy5lZGl0YWJsZT1uZXcga2VuZG8udWkuRWRpdGFibGUodGhpcy53cmFwcGVyLHtmaWVsZHM6dGhpcy5maWVsZHMsdGFyZ2V0OnQudGFyZ2V0LGNsZWFyQ29udGFpbmVyOiExLG1vZGVsOnRoaXMubW9kZWx9KX0sX2lzRWRpdGFibGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubW9kZWwuZWRpdGFibGUmJnRoaXMubW9kZWwuZWRpdGFibGUodCl9LF9nZXRGaWVsZHM6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbj1bXSxvPXRoaXMubW9kZWwuZmllbGRzO2Zvcih0IGluIG8pZT17fSx0aGlzLl9pc0VkaXRhYmxlKHQpJiYoaT10aGlzLm9wdGlvbnMuZWRpdG9yc1t0XSxpJiYoZS5lZGl0b3I9aSksZS5maWVsZD10LG4ucHVzaChlKSk7cmV0dXJuIG59LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkaXRhYmxlLmVuZCgpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lZGl0YWJsZS5kZXN0cm95KCksdGhpcy5lZGl0YWJsZS5lbGVtZW50LmZpbmQoXCJbXCIra2VuZG8uYXR0cihcImNvbnRhaW5lci1mb3JcIikrXCJdXCIpLmVtcHR5KCksdGhpcy5tb2RlbD10aGlzLndyYXBwZXI9dGhpcy5lbGVtZW50PXRoaXMuY29sdW1ucz10aGlzLmVkaXRhYmxlPW51bGx9fSksVD1rLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe2suZm4uaW5pdC5jYWxsKHRoaXMsdCxlKSx0aGlzLmJpbmQodGhpcy5ldmVudHMsdGhpcy5vcHRpb25zKSx0aGlzLm9wZW4oKX0sZXZlbnRzOltcInVwZGF0ZVwiLFwiY2FuY2VsXCJdLG9wdGlvbnM6e3dpbmRvdzp7bW9kYWw6ITAscmVzaXphYmxlOiExLGRyYWdnYWJsZTohMCx0aXRsZTpcIkVkaXRcIix2aXNpYmxlOiExfX0sX2luaXRDb250YWluZXI6ZnVuY3Rpb24oKXt2YXIgZSxpPXRoaXM7dGhpcy53cmFwcGVyPXQoJzxkaXYgY2xhc3M9XCJrLXBvcHVwLWVkaXQtZm9ybVwiLz4nKS5hdHRyKGtlbmRvLmF0dHIoXCJ1aWRcIiksdGhpcy5tb2RlbC51aWQpLGU9XCJcIix0aGlzLm9wdGlvbnMudGVtcGxhdGU/KGUrPXRoaXMuX3JlbmRlclRlbXBsYXRlKCksdGhpcy5maWVsZHM9W10pOmUrPXRoaXMuX3JlbmRlckZpZWxkcygpLGUrPXRoaXMuX3JlbmRlckJ1dHRvbnMoKSx0aGlzLndyYXBwZXIuYXBwZW5kKHQoJzxkaXYgY2xhc3M9XCJrLWVkaXQtZm9ybS1jb250YWluZXJcIi8+JykuYXBwZW5kKGUpKSx0aGlzLndpbmRvdz1uZXcga2VuZG8udWkuV2luZG93KHRoaXMud3JhcHBlci5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpLHRoaXMub3B0aW9ucy53aW5kb3cpLHRoaXMud2luZG93LmJpbmQoXCJjbG9zZVwiLGZ1bmN0aW9uKHQpe3QudXNlclRyaWdnZXJlZCYmKHQuc2VuZGVyLmVsZW1lbnQuZm9jdXMoKSxpLl9jYW5jZWxDbGljayh0KSl9KSx0aGlzLl9hdHRhY2hCdXR0b25FdmVudHMoKX0sX3JlbmRlclRlbXBsYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLnRlbXBsYXRlO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0JiYodD13aW5kb3cudW5lc2NhcGUodCkpLHQ9a2VuZG8udGVtcGxhdGUodCkodGhpcy5tb2RlbCl9LF9yZW5kZXJGaWVsZHM6ZnVuY3Rpb24oKXt2YXIgdCxlLGk9XCJcIjtmb3IodD0wO3Q8dGhpcy5maWVsZHMubGVuZ3RoO3QrKyllPXRoaXMuZmllbGRzW3RdLGkrPSc8ZGl2IGNsYXNzPVwiay1lZGl0LWxhYmVsXCI+PGxhYmVsIGZvcj1cIicrZS5maWVsZCsnXCI+JysoZS5maWVsZHx8XCJcIikrXCI8L2xhYmVsPjwvZGl2PlwiLHRoaXMuX2lzRWRpdGFibGUoZS5maWVsZCkmJihpKz1cIjxkaXYgXCIra2VuZG8uYXR0cihcImNvbnRhaW5lci1mb3JcIikrJz1cIicrZS5maWVsZCsnXCIgY2xhc3M9XCJrLWVkaXQtZmllbGRcIj48L2Rpdj4nKTtyZXR1cm4gaX0sX3JlbmRlckJ1dHRvbnM6ZnVuY3Rpb24oKXt2YXIgdD0nPGRpdiBjbGFzcz1cImstZWRpdC1idXR0b25zIGstc3RhdGUtZGVmYXVsdFwiPic7cmV0dXJuIHQrPXRoaXMuX2NyZWF0ZUJ1dHRvbihcInVwZGF0ZVwiKSx0Kz10aGlzLl9jcmVhdGVCdXR0b24oXCJjYW5jZWxcIiksdCs9XCI8L2Rpdj5cIn0sX2NyZWF0ZUJ1dHRvbjpmdW5jdGlvbih0KXtyZXR1cm4ga2VuZG8udGVtcGxhdGUoZmUpKHZbdF0pfSxfYXR0YWNoQnV0dG9uRXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5fY2FuY2VsQ2xpY2tIYW5kbGVyPVIodGhpcy5fY2FuY2VsQ2xpY2ssdGhpcyksdGhpcy53aW5kb3cuZWxlbWVudC5vbihUdCtidCxcImEuay1kaWFncmFtLWNhbmNlbFwiLHRoaXMuX2NhbmNlbENsaWNrSGFuZGxlciksdGhpcy5fdXBkYXRlQ2xpY2tIYW5kbGVyPVIodGhpcy5fdXBkYXRlQ2xpY2ssdGhpcyksdGhpcy53aW5kb3cuZWxlbWVudC5vbihUdCtidCxcImEuay1kaWFncmFtLXVwZGF0ZVwiLHRoaXMuX3VwZGF0ZUNsaWNrSGFuZGxlcil9LF91cGRhdGVDbGljazpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdGhpcy50cmlnZ2VyKFwidXBkYXRlXCIpfSxfY2FuY2VsQ2xpY2s6ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMudHJpZ2dlcihcImNhbmNlbFwiKX0sb3BlbjpmdW5jdGlvbigpe3RoaXMud2luZG93LmNlbnRlcigpLm9wZW4oKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLndpbmRvdy5iaW5kKFwiZGVhY3RpdmF0ZVwiLFIodGhpcy5kZXN0cm95LHRoaXMpKS5jbG9zZSgpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy53aW5kb3cuY2xvc2UoKS5kZXN0cm95KCksdGhpcy53aW5kb3cuZWxlbWVudC5vZmYoVHQrYnQsXCJhLmstZGlhZ3JhbS1jYW5jZWxcIix0aGlzLl9jYW5jZWxDbGlja0hhbmRsZXIpLHRoaXMud2luZG93LmVsZW1lbnQub2ZmKFR0K2J0LFwiYS5rLWRpYWdyYW0tdXBkYXRlXCIsdGhpcy5fdXBkYXRlQ2xpY2tIYW5kbGVyKSx0aGlzLl9jYW5jZWxDbGlja0hhbmRsZXI9bnVsbCx0aGlzLl9lZGl0VXBkYXRlQ2xpY2tIYW5kbGVyPW51bGwsdGhpcy53aW5kb3c9bnVsbCxrLmZuLmRlc3Ryb3kuY2FsbCh0aGlzKX19KSxjLmZuPWMucHJvdG90eXBlPXtvbkFjdGl2YXRlOmZ1bmN0aW9uKGUpe3ZhciBpPXQuRGVmZXJyZWQoKTtyZXR1cm4gdGhpcy5jYWxsYmFja3MucHVzaCh7Y2FsbGJhY2s6ZSxkZWZlcnJlZDppfSksaX0sYWN0aXZhdGU6ZnVuY3Rpb24oKXt2YXIgdCxlLGk9dGhpcy5jYWxsYmFja3M7Zm9yKGU9MDtlPGkubGVuZ3RoO2UrKyl0PXRoaXMuY2FsbGJhY2tzW2VdLHQuY2FsbGJhY2sodGhpcy5kYXRhSXRlbSksdC5kZWZlcnJlZC5yZXNvbHZlKCk7dGhpcy5jYWxsYmFja3M9W119fSxkLmZuPWQucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5pdGVtc1t0W2VdLnVpZF09bmV3IGModFtlXSl9LGZvckVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuaXRlbXMpdCh0aGlzLml0ZW1zW2VdKX0sZ2V0QnlVaWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaXRlbXNbdF19LHJlbW92ZTpmdW5jdGlvbih0KXtkZWxldGUgdGhpcy5pdGVtc1t0LnVpZF19fSxNPU4uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKCl7dGhpcy5zaGFwZXM9W119LF9hZGQ6ZnVuY3Rpb24odCxlKXt0aGlzLnNoYXBlcy5wdXNoKHtib3VuZHM6ZSxzaGFwZTp0fSksdC5fcXVhZE5vZGU9dGhpc30saW5zZXJ0OmZ1bmN0aW9uKHQsZSl7dGhpcy5fYWRkKHQsZSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMuc2hhcGVzLG49aS5sZW5ndGg7Zm9yKGU9MDtlPG47ZSsrKWlmKGlbZV0uc2hhcGU9PT10KXtpLnNwbGljZShlLDEpO2JyZWFrfX0saGl0VGVzdFJlY3Q6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLnNoYXBlcyxuPWkubGVuZ3RoO2ZvcihlPTA7ZTxuO2UrKylpZih0aGlzLl90ZXN0UmVjdChpW2VdLnNoYXBlLHQpKXJldHVybiEwfSxfdGVzdFJlY3Q6ZnVuY3Rpb24odCxlKXt2YXIgaSxuPXQucm90YXRlKCkuYW5nbGUsbz10LmJvdW5kcygpO3JldHVybiBpPW4/dHQucmVjdHMoZSxvLC1uKTpvLm92ZXJsYXBzKGUpfX0pLEQ9TS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7TS5mbi5pbml0LmNhbGwodGhpcyksdGhpcy5jaGlsZHJlbj1bXSx0aGlzLnJlY3Q9dH0saW5Cb3VuZHM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5yZWN0LGk9ZS5ib3R0b21SaWdodCgpLG49dC5ib3R0b21SaWdodCgpLG89ZS54PD10LngmJmUueTw9dC55JiZuLng8PWkueCYmbi55PD1pLnk7cmV0dXJuIG99LG92ZXJsYXBzQm91bmRzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlY3Qub3ZlcmxhcHModCl9LGluc2VydDpmdW5jdGlvbih0LGUpe3ZhciBpLG49ITEsbz10aGlzLmNoaWxkcmVuLHM9by5sZW5ndGg7aWYodGhpcy5pbkJvdW5kcyhlKSl7aWYoIXMmJnRoaXMuc2hhcGVzLmxlbmd0aDw0KXRoaXMuX2FkZCh0LGUpO2Vsc2V7Zm9yKHN8fHRoaXMuX2luaXRDaGlsZHJlbigpLGk9MDtpPG8ubGVuZ3RoO2krKylpZihvW2ldLmluc2VydCh0LGUpKXtuPSEwO2JyZWFrfW58fHRoaXMuX2FkZCh0LGUpfW49ITB9cmV0dXJuIG59LF9pbml0Q2hpbGRyZW46ZnVuY3Rpb24oKXt2YXIgdCxlLGk9dGhpcy5yZWN0LG49dGhpcy5jaGlsZHJlbixvPXRoaXMuc2hhcGVzLHM9aS5jZW50ZXIoKSxyPWkud2lkdGgvMixhPWkuaGVpZ2h0LzI7Zm9yKG4ucHVzaChuZXcgRChuZXcgWChpLngsaS55LHIsYSkpLG5ldyBEKG5ldyBYKHMueCxpLnkscixhKSksbmV3IEQobmV3IFgoaS54LHMueSxyLGEpKSxuZXcgRChuZXcgWChzLngscy55LHIsYSkpKSxlPW8ubGVuZ3RoLTE7ZT49MDtlLS0pZm9yKHQ9MDt0PG4ubGVuZ3RoO3QrKylpZihuW3RdLmluc2VydChvW2VdLnNoYXBlLG9bZV0uYm91bmRzKSl7by5zcGxpY2UoZSwxKTticmVha319LGhpdFRlc3RSZWN0OmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy5jaGlsZHJlbixuPWkubGVuZ3RoLG89ITE7aWYodGhpcy5vdmVybGFwc0JvdW5kcyh0KSlpZihNLmZuLmhpdFRlc3RSZWN0LmNhbGwodGhpcyx0KSlvPSEwO2Vsc2UgZm9yKGU9MDtlPG47ZSsrKWlmKGlbZV0uaGl0VGVzdFJlY3QodCkpe289ITA7YnJlYWt9cmV0dXJuIG99fSksST1OLmV4dGVuZCh7Uk9PVF9TSVpFOjFlMyxpbml0OmZ1bmN0aW9uKHQpe3ZhciBlPVIodGhpcy5fYm91bmRzQ2hhbmdlLHRoaXMpO3QuYmluZChTdCxlKSx0LmJpbmQoVnQsZSksdGhpcy5pbml0Um9vdHMoKX0saW5pdFJvb3RzOmZ1bmN0aW9uKCl7dGhpcy5yb290TWFwPXt9LHRoaXMucm9vdD1uZXcgTX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLmluaXRSb290cygpfSxfYm91bmRzQ2hhbmdlOmZ1bmN0aW9uKHQpe3QuaXRlbS5fcXVhZE5vZGUmJnQuaXRlbS5fcXVhZE5vZGUucmVtb3ZlKHQuaXRlbSksdGhpcy5pbnNlcnQodC5pdGVtKX0saW5zZXJ0OmZ1bmN0aW9uKHQpe3ZhciBlPXQuYm91bmRzKG9lKSxpPXRoaXMuUk9PVF9TSVpFLG49dGhpcy5nZXRTZWN0b3JzKGUpLG89blswXVswXSxzPW5bMV1bMF07dGhpcy5pblJvb3Qobik/dGhpcy5yb290Lmluc2VydCh0LGUpOih0aGlzLnJvb3RNYXBbb118fCh0aGlzLnJvb3RNYXBbb109e30pLHRoaXMucm9vdE1hcFtvXVtzXXx8KHRoaXMucm9vdE1hcFtvXVtzXT1uZXcgRChuZXcgWChvKmkscyppLGksaSkpKSx0aGlzLnJvb3RNYXBbb11bc10uaW5zZXJ0KHQsZSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dC5fcXVhZE5vZGUmJnQuX3F1YWROb2RlLnJlbW92ZSh0KX0saW5Sb290OmZ1bmN0aW9uKHQpe3JldHVybiB0WzBdLmxlbmd0aD4xfHx0WzFdLmxlbmd0aD4xfSxnZXRTZWN0b3JzOmZ1bmN0aW9uKHQpe3ZhciBlLGksbj10aGlzLlJPT1RfU0laRSxvPXQuYm90dG9tUmlnaHQoKSxzPXh0LmZsb29yKG8ueC9uKSxyPXh0LmZsb29yKG8ueS9uKSxhPVtbXSxbXV07Zm9yKGU9eHQuZmxvb3IodC54L24pO2U8PXM7ZSsrKWFbMF0ucHVzaChlKTtmb3IoaT14dC5mbG9vcih0Lnkvbik7aTw9cjtpKyspYVsxXS5wdXNoKGkpO3JldHVybiBhfSxoaXRUZXN0UmVjdDpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbyxzLHI9dGhpcy5nZXRTZWN0b3JzKHQpO2lmKHRoaXMucm9vdC5oaXRUZXN0UmVjdCh0KSlyZXR1cm4hMDtmb3IoZT0wO2U8clswXS5sZW5ndGg7ZSsrKWZvcihuPXJbMF1bZV0saT0wO2k8clsxXS5sZW5ndGg7aSsrKWlmKG89clsxXVtpXSxzPSh0aGlzLnJvb3RNYXBbbl18fHt9KVtvXSxzJiZzLmhpdFRlc3RSZWN0KHQpKXJldHVybiEwO3JldHVybiExfX0pLFAudWkucGx1Z2luKEMpLEEoeix7U2hhcGU6eCxDb25uZWN0aW9uOmIsQ29ubmVjdG9yOncsRGlhZ3JhbVRvb2xCYXI6UyxRdWFkTm9kZTpELFF1YWRSb290Ok0sU2hhcGVzUXVhZFRyZWU6SSxQb3B1cEVkaXRvcjpUfSl9KHdpbmRvdy5rZW5kby5qUXVlcnkpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKHQsZSxpKXsoaXx8ZSkoKX0pLGZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJrZW5kby5kYXRhdml6LmRpYWdyYW0ubWluXCIsW1wia2VuZG8uZGF0YS5taW5cIixcImtlbmRvLmRyYWdhbmRkcm9wLm1pblwiLFwia2VuZG8udXNlcmV2ZW50cy5taW5cIixcImtlbmRvLm1vYmlsZS5zY3JvbGxlci5taW5cIixcImtlbmRvLmRyYXdpbmcubWluXCIsXCJkYXRhdml6L2RpYWdyYW0vdXRpbHMubWluXCIsXCJkYXRhdml6L2RpYWdyYW0vbWF0aC5taW5cIixcImRhdGF2aXovZGlhZ3JhbS9zdmcubWluXCIsXCJkYXRhdml6L2RpYWdyYW0vc2VydmljZXMubWluXCIsXCJkYXRhdml6L2RpYWdyYW0vbGF5b3V0Lm1pblwiLFwiZGF0YXZpei9kaWFncmFtL2RvbS5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsaSl7KGl8fGUpKCl9KTs7IWZ1bmN0aW9uKGUsZGVmaW5lKXtkZWZpbmUoXCJ1dGlsL21haW4ubWluXCIsW1wia2VuZG8uY29yZS5taW5cIl0sZSl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gdHlwZW9mIGUhPT1PfWZ1bmN0aW9uIG4oZSxuKXt2YXIgaT10KG4pO3JldHVybiBQLnJvdW5kKGUqaSkvaX1mdW5jdGlvbiB0KGUpe3JldHVybiBlP1AucG93KDEwLGUpOjF9ZnVuY3Rpb24gaShlLG4sdCl7cmV0dXJuIFAubWF4KFAubWluKGUsdCksbil9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZSpYfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIGUvWH1mdW5jdGlvbiBhKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlJiYhaXNOYU4oZSl9ZnVuY3Rpb24gcyhuLHQpe3JldHVybiBlKG4pP246dH1mdW5jdGlvbiBsKGUpe3JldHVybiBlKmV9ZnVuY3Rpb24gYyhlKXt2YXIgbix0PVtdO2ZvcihuIGluIGUpdC5wdXNoKG4rZVtuXSk7cmV0dXJuIHQuc29ydCgpLmpvaW4oXCJcIil9ZnVuY3Rpb24gdShlKXt2YXIgbix0PTIxNjYxMzYyNjE7Zm9yKG49MDtuPGUubGVuZ3RoOysrbil0Kz0odDw8MSkrKHQ8PDQpKyh0PDw3KSsodDw8OCkrKHQ8PDI0KSx0Xj1lLmNoYXJDb2RlQXQobik7cmV0dXJuIHQ+Pj4wfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIHUoYyhlKSl9ZnVuY3Rpb24gcChlKXt2YXIgbix0PWUubGVuZ3RoLGk9RSxvPU47Zm9yKG49MDtuPHQ7bisrKW89UC5tYXgobyxlW25dKSxpPVAubWluKGksZVtuXSk7cmV0dXJue21pbjppLG1heDpvfX1mdW5jdGlvbiBoKGUpe3JldHVybiBwKGUpLm1pbn1mdW5jdGlvbiBmKGUpe3JldHVybiBwKGUpLm1heH1mdW5jdGlvbiBnKGUpe3JldHVybiB2KGUpLm1pbn1mdW5jdGlvbiBtKGUpe3JldHVybiB2KGUpLm1heH1mdW5jdGlvbiB2KGUpe3ZhciBuLHQsaSxvPUUscj1OO2ZvcihuPTAsdD1lLmxlbmd0aDtuPHQ7bisrKWk9ZVtuXSxudWxsIT09aSYmaXNGaW5pdGUoaSkmJihvPVAubWluKG8saSkscj1QLm1heChyLGkpKTtyZXR1cm57bWluOm89PT1FP3ZvaWQgMDpvLG1heDpyPT09Tj92b2lkIDA6cn19ZnVuY3Rpb24gdyhlKXtpZihlKXJldHVybiBlW2UubGVuZ3RoLTFdfWZ1bmN0aW9uIHgoZSxuKXtyZXR1cm4gZS5wdXNoLmFwcGx5KGUsbiksZX1mdW5jdGlvbiBiKGUpe3JldHVybiBCLnRlbXBsYXRlKGUse3VzZVdpdGhCbG9jazohMSxwYXJhbU5hbWU6XCJkXCJ9KX1mdW5jdGlvbiB5KG4sdCl7cmV0dXJuIGUodCkmJm51bGwhPT10P1wiIFwiK24rXCI9J1wiK3QrXCInIFwiOlwiXCJ9ZnVuY3Rpb24gayhlKXt2YXIgbix0PVwiXCI7Zm9yKG49MDtuPGUubGVuZ3RoO24rKyl0Kz15KGVbbl1bMF0sZVtuXVsxXSk7cmV0dXJuIHR9ZnVuY3Rpb24gQShuKXt2YXIgdCxpLG89XCJcIjtmb3IodD0wO3Q8bi5sZW5ndGg7dCsrKWk9blt0XVsxXSxlKGkpJiYobys9blt0XVswXStcIjpcIitpK1wiO1wiKTtpZihcIlwiIT09bylyZXR1cm4gb31mdW5jdGlvbiBfKGUpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiBlJiYoZSs9XCJweFwiKSxlfWZ1bmN0aW9uIFQoZSl7dmFyIG4sdCxpPVtdO2lmKGUpZm9yKG49Qi50b0h5cGhlbnMoZSkuc3BsaXQoXCItXCIpLHQ9MDt0PG4ubGVuZ3RoO3QrKylpLnB1c2goXCJrLXBvcy1cIituW3RdKTtyZXR1cm4gaS5qb2luKFwiIFwiKX1mdW5jdGlvbiB6KG4pe3JldHVyblwiXCI9PT1ufHxudWxsPT09bnx8XCJub25lXCI9PT1ufHxcInRyYW5zcGFyZW50XCI9PT1ufHwhZShuKX1mdW5jdGlvbiBTKGUpe2Zvcih2YXIgbj17MTpcImlcIiwxMDpcInhcIiwxMDA6XCJjXCIsMjpcImlpXCIsMjA6XCJ4eFwiLDIwMDpcImNjXCIsMzpcImlpaVwiLDMwOlwieHh4XCIsMzAwOlwiY2NjXCIsNDpcIml2XCIsNDA6XCJ4bFwiLDQwMDpcImNkXCIsNTpcInZcIiw1MDpcImxcIiw1MDA6XCJkXCIsNjpcInZpXCIsNjA6XCJseFwiLDYwMDpcImRjXCIsNzpcInZpaVwiLDcwOlwibHh4XCIsNzAwOlwiZGNjXCIsODpcInZpaWlcIiw4MDpcImx4eHhcIiw4MDA6XCJkY2NjXCIsOTpcIml4XCIsOTA6XCJ4Y1wiLDkwMDpcImNtXCIsMWUzOlwibVwifSx0PVsxZTMsOTAwLDgwMCw3MDAsNjAwLDUwMCw0MDAsMzAwLDIwMCwxMDAsOTAsODAsNzAsNjAsNTAsNDAsMzAsMjAsMTAsOSw4LDcsNiw1LDQsMywyLDFdLGk9XCJcIjtlPjA7KWU8dFswXT90LnNoaWZ0KCk6KGkrPW5bdFswXV0sZS09dFswXSk7cmV0dXJuIGl9ZnVuY3Rpb24gUihlKXt2YXIgbix0LGksbyxyO2ZvcihlPWUudG9Mb3dlckNhc2UoKSxuPXtpOjEsdjo1LHg6MTAsbDo1MCxjOjEwMCxkOjUwMCxtOjFlM30sdD0wLGk9MCxvPTA7bzxlLmxlbmd0aDsrK28pe2lmKHI9bltlLmNoYXJBdChvKV0sIXIpcmV0dXJuIG51bGw7dCs9cixyPmkmJih0LT0yKmkpLGk9cn1yZXR1cm4gdH1mdW5jdGlvbiBqKGUpe3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQsaT1cIlwiO2Zvcih0PWFyZ3VtZW50cy5sZW5ndGg7LS10Pj0wOylpKz1cIjpcIithcmd1bWVudHNbdF07cmV0dXJuIGkgaW4gbj9uW2ldOm5baV09ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIEMoZSl7Zm9yKHZhciBuLHQsaT1bXSxvPTAscj1lLmxlbmd0aDtvPHI7KW49ZS5jaGFyQ29kZUF0KG8rKyksbj49NTUyOTYmJm48PTU2MzE5JiZvPHI/KHQ9ZS5jaGFyQ29kZUF0KG8rKyksNTYzMjA9PSg2NDUxMiZ0KT9pLnB1c2goKCgxMDIzJm4pPDwxMCkrKDEwMjMmdCkrNjU1MzYpOihpLnB1c2gobiksby0tKSk6aS5wdXNoKG4pO3JldHVybiBpfWZ1bmN0aW9uIE0oZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3ZhciBuPVwiXCI7cmV0dXJuIGU+NjU1MzUmJihlLT02NTUzNixuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGU+Pj4xMCYxMDIzfDU1Mjk2KSxlPTU2MzIwfDEwMjMmZSksbis9U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pLmpvaW4oXCJcIil9ZnVuY3Rpb24gVShlLG4pe2Z1bmN0aW9uIHQoZSx0KXtmb3IodmFyIGk9W10sbz0wLHI9MCxhPTA7bzxlLmxlbmd0aCYmcjx0Lmxlbmd0aDspbihlW29dLHRbcl0pPD0wP2lbYSsrXT1lW28rK106aVthKytdPXRbcisrXTtyZXR1cm4gbzxlLmxlbmd0aCYmaS5wdXNoLmFwcGx5KGksZS5zbGljZShvKSkscjx0Lmxlbmd0aCYmaS5wdXNoLmFwcGx5KGksdC5zbGljZShyKSksaX1yZXR1cm4gZS5sZW5ndGg8Mj9lLnNsaWNlKCk6ZnVuY3Rpb24gaShlKXt2YXIgbixvLHI7cmV0dXJuIGUubGVuZ3RoPD0xP2U6KG49TWF0aC5mbG9vcihlLmxlbmd0aC8yKSxvPWUuc2xpY2UoMCxuKSxyPWUuc2xpY2Uobiksbz1pKG8pLHI9aShyKSx0KG8scikpfShlKX12YXIgUD1NYXRoLEI9d2luZG93LmtlbmRvLEw9Qi5kZWVwRXh0ZW5kLFg9UC5QSS8xODAsRT1OdW1iZXIuTUFYX1ZBTFVFLE49LU51bWJlci5NQVhfVkFMVUUsTz1cInVuZGVmaW5lZFwiLFY9RGF0ZS5ub3c7Vnx8KFY9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0pLEwoQix7dXRpbDp7TUFYX05VTTpFLE1JTl9OVU06TixhcHBlbmQ6eCxhcnJheUxpbWl0czpwLGFycmF5TWluOmgsYXJyYXlNYXg6ZixkZWZpbmVkOmUsZGVnOnIsaGFzaEtleTp1LGhhc2hPYmplY3Q6ZCxpc051bWJlcjphLGlzVHJhbnNwYXJlbnQ6eixsYXN0OncsbGltaXRWYWx1ZTppLG5vdzpWLG9iamVjdEtleTpjLHJvdW5kOm4scmFkOm8scmVuZGVyQXR0cjp5LHJlbmRlckFsbEF0dHI6ayxyZW5kZXJQb3M6VCxyZW5kZXJTaXplOl8scmVuZGVyU3R5bGU6QSxyZW5kZXJUZW1wbGF0ZTpiLHNwYXJzZUFycmF5TGltaXRzOnYsc3BhcnNlQXJyYXlNaW46ZyxzcGFyc2VBcnJheU1heDptLHNxcjpsLHZhbHVlT3JEZWZhdWx0OnMscm9tYW5Ub0FyYWJpYzpSLGFyYWJpY1RvUm9tYW46UyxtZW1vaXplOmosdWNzMmVuY29kZTpNLHVjczJkZWNvZGU6QyxtZXJnZVNvcnQ6VX19KSxCLmRyYXdpbmcudXRpbD1CLnV0aWwsQi5kYXRhdml6LnV0aWw9Qi51dGlsfSgpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbihlLG4sdCl7KHR8fG4pKCl9KSxmdW5jdGlvbihlLGRlZmluZSl7ZGVmaW5lKFwidXRpbC90ZXh0LW1ldHJpY3MubWluXCIsW1wia2VuZG8uY29yZS5taW5cIixcInV0aWwvbWFpbi5taW5cIl0sZSl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oKXtyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MCxiYXNlbGluZTowfX1mdW5jdGlvbiB0KGUsbix0KXtyZXR1cm4gZC5jdXJyZW50Lm1lYXN1cmUoZSxuLHQpfWZ1bmN0aW9uIGkoZSxuKXt2YXIgdD1bXTtpZihlLmxlbmd0aD4wJiZkb2N1bWVudC5mb250cyl7dHJ5e3Q9ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGRvY3VtZW50LmZvbnRzLmxvYWQoZSl9KX1jYXRjaChpKXtyLmxvZ1RvQ29uc29sZShpKX1Qcm9taXNlLmFsbCh0KS50aGVuKG4sbil9ZWxzZSBuKCl9dmFyIG89ZG9jdW1lbnQscj13aW5kb3cua2VuZG8sYT1yLkNsYXNzLHM9ci51dGlsLGw9cy5kZWZpbmVkLGM9YS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSl7dGhpcy5fc2l6ZT1lLHRoaXMuX2xlbmd0aD0wLHRoaXMuX21hcD17fX0scHV0OmZ1bmN0aW9uKGUsbil7dmFyIHQ9dGhpcyxpPXQuX21hcCxvPXtrZXk6ZSx2YWx1ZTpufTtpW2VdPW8sdC5faGVhZD8odC5fdGFpbC5uZXdlcj1vLG8ub2xkZXI9dC5fdGFpbCx0Ll90YWlsPW8pOnQuX2hlYWQ9dC5fdGFpbD1vLHQuX2xlbmd0aD49dC5fc2l6ZT8oaVt0Ll9oZWFkLmtleV09bnVsbCx0Ll9oZWFkPXQuX2hlYWQubmV3ZXIsdC5faGVhZC5vbGRlcj1udWxsKTp0Ll9sZW5ndGgrK30sZ2V0OmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMsdD1uLl9tYXBbZV07aWYodClyZXR1cm4gdD09PW4uX2hlYWQmJnQhPT1uLl90YWlsJiYobi5faGVhZD10Lm5ld2VyLG4uX2hlYWQub2xkZXI9bnVsbCksdCE9PW4uX3RhaWwmJih0Lm9sZGVyJiYodC5vbGRlci5uZXdlcj10Lm5ld2VyLHQubmV3ZXIub2xkZXI9dC5vbGRlciksdC5vbGRlcj1uLl90YWlsLHQubmV3ZXI9bnVsbCxuLl90YWlsLm5ld2VyPXQsbi5fdGFpbD10KSx0LnZhbHVlfX0pLHU9ZShcIjxkaXYgc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OyB0b3A6IC00MDAwcHggIWltcG9ydGFudDsgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7cGFkZGluZzogMCAhaW1wb3J0YW50OyBtYXJnaW46IDAgIWltcG9ydGFudDsgYm9yZGVyOiAwICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgd2hpdGUtc3BhY2U6IG5vd3JhcCFpbXBvcnRhbnQ7JyAvPlwiKVswXSxkPWEuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUpe3RoaXMuX2NhY2hlPW5ldyBjKDFlMyksdGhpcy5faW5pdE9wdGlvbnMoZSl9LG9wdGlvbnM6e2Jhc2VsaW5lTWFya2VyU2l6ZToxfSxtZWFzdXJlOmZ1bmN0aW9uKHQsaSxyKXt2YXIgYSxjLGQscCxoLGYsZyxtO2lmKCF0KXJldHVybiBuKCk7aWYoYT1zLm9iamVjdEtleShpKSxjPXMuaGFzaEtleSh0K2EpLGQ9dGhpcy5fY2FjaGUuZ2V0KGMpLGQpcmV0dXJuIGQ7cD1uKCksaD1yP3I6dSxmPXRoaXMuX2Jhc2VsaW5lTWFya2VyKCkuY2xvbmVOb2RlKCExKTtmb3IoZyBpbiBpKW09aVtnXSxsKG0pJiYoaC5zdHlsZVtnXT1tKTtyZXR1cm4gZShoKS50ZXh0KHQpLGguYXBwZW5kQ2hpbGQoZiksby5ib2R5LmFwcGVuZENoaWxkKGgpLCh0K1wiXCIpLmxlbmd0aCYmKHAud2lkdGg9aC5vZmZzZXRXaWR0aC10aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplLHAuaGVpZ2h0PWgub2Zmc2V0SGVpZ2h0LHAuYmFzZWxpbmU9Zi5vZmZzZXRUb3ArdGhpcy5vcHRpb25zLmJhc2VsaW5lTWFya2VyU2l6ZSkscC53aWR0aD4wJiZwLmhlaWdodD4wJiZ0aGlzLl9jYWNoZS5wdXQoYyxwKSxoLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaCkscH0sX2Jhc2VsaW5lTWFya2VyOmZ1bmN0aW9uKCl7cmV0dXJuIGUoXCI8ZGl2IGNsYXNzPSdrLWJhc2VsaW5lLW1hcmtlcicgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO3dpZHRoOiBcIit0aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplK1wicHg7IGhlaWdodDogXCIrdGhpcy5vcHRpb25zLmJhc2VsaW5lTWFya2VyU2l6ZStcInB4O292ZXJmbG93OiBoaWRkZW47JyAvPlwiKVswXX19KTtkLmN1cnJlbnQ9bmV3IGQsci51dGlsLlRleHRNZXRyaWNzPWQsci51dGlsLkxSVUNhY2hlPWMsci51dGlsLmxvYWRGb250cz1pLHIudXRpbC5tZWFzdXJlVGV4dD10fSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbihlLG4sdCl7KHR8fG4pKCl9KSxmdW5jdGlvbihlLGRlZmluZSl7ZGVmaW5lKFwidXRpbC9iYXNlNjQubWluXCIsW1widXRpbC9tYWluLm1pblwiXSxlKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciB0LGksbyxhLHMsbCxjLHU9XCJcIixkPTA7Zm9yKGU9bihlKTtkPGUubGVuZ3RoOyl0PWUuY2hhckNvZGVBdChkKyspLGk9ZS5jaGFyQ29kZUF0KGQrKyksbz1lLmNoYXJDb2RlQXQoZCsrKSxhPXQ+PjIscz0oMyZ0KTw8NHxpPj40LGw9KDE1JmkpPDwyfG8+PjYsYz02MyZvLGlzTmFOKGkpP2w9Yz02NDppc05hTihvKSYmKGM9NjQpLHU9dStyLmNoYXJBdChhKStyLmNoYXJBdChzKStyLmNoYXJBdChsKStyLmNoYXJBdChjKTtyZXR1cm4gdX1mdW5jdGlvbiBuKGUpe3ZhciBuLHQsaT1cIlwiO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspdD1lLmNoYXJDb2RlQXQobiksdDwxMjg/aSs9byh0KTp0PDIwNDg/KGkrPW8oMTkyfHQ+Pj42KSxpKz1vKDEyOHw2MyZ0KSk6dDw2NTUzNiYmKGkrPW8oMjI0fHQ+Pj4xMiksaSs9bygxMjh8dD4+PjYmNjMpLGkrPW8oMTI4fDYzJnQpKTtyZXR1cm4gaX12YXIgdD13aW5kb3cua2VuZG8saT10LmRlZXBFeHRlbmQsbz1TdHJpbmcuZnJvbUNoYXJDb2RlLHI9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVwiO2kodC51dGlsLHtlbmNvZGVCYXNlNjQ6ZSxlbmNvZGVVVEY4Om59KX0oKSx3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSxuLHQpeyh0fHxuKSgpfSksZnVuY3Rpb24oZSxkZWZpbmUpe2RlZmluZShcIm1peGlucy9vYnNlcnZlcnMubWluXCIsW1wia2VuZG8uY29yZS5taW5cIl0sZSl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPU1hdGgsdD13aW5kb3cua2VuZG8saT10LmRlZXBFeHRlbmQsbz1lLmluQXJyYXkscj17b2JzZXJ2ZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29ic2VydmVycz10aGlzLl9vYnNlcnZlcnN8fFtdfSxhZGRPYnNlcnZlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fb2JzZXJ2ZXJzP3RoaXMuX29ic2VydmVycy5wdXNoKGUpOnRoaXMuX29ic2VydmVycz1bZV0sdGhpc30scmVtb3ZlT2JzZXJ2ZXI6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5vYnNlcnZlcnMoKSx0PW8oZSxuKTtyZXR1cm4gdCE9LTEmJm4uc3BsaWNlKHQsMSksdGhpc30sdHJpZ2dlcjpmdW5jdGlvbihlLG4pe3ZhciB0LGksbz10aGlzLl9vYnNlcnZlcnM7aWYobyYmIXRoaXMuX3N1c3BlbmRlZClmb3IoaT0wO2k8by5sZW5ndGg7aSsrKXQ9b1tpXSx0W2VdJiZ0W2VdKG4pO3JldHVybiB0aGlzfSxvcHRpb25zQ2hhbmdlOmZ1bmN0aW9uKGUpe2U9ZXx8e30sZS5lbGVtZW50PXRoaXMsdGhpcy50cmlnZ2VyKFwib3B0aW9uc0NoYW5nZVwiLGUpfSxnZW9tZXRyeUNoYW5nZTpmdW5jdGlvbigpe3RoaXMudHJpZ2dlcihcImdlb21ldHJ5Q2hhbmdlXCIse2VsZW1lbnQ6dGhpc30pfSxzdXNwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N1c3BlbmRlZD0odGhpcy5fc3VzcGVuZGVkfHwwKSsxLHRoaXN9LHJlc3VtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdXNwZW5kZWQ9bi5tYXgoKHRoaXMuX3N1c3BlbmRlZHx8MCktMSwwKSx0aGlzfSxfb2JzZXJ2ZXJGaWVsZDpmdW5jdGlvbihlLG4pe3RoaXNbZV0mJnRoaXNbZV0ucmVtb3ZlT2JzZXJ2ZXIodGhpcyksdGhpc1tlXT1uLG4uYWRkT2JzZXJ2ZXIodGhpcyl9fTtpKHQse21peGluczp7T2JzZXJ2ZXJzTWl4aW46cn19KX0od2luZG93LmtlbmRvLmpRdWVyeSksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsbix0KXsodHx8bikoKX0pLGZ1bmN0aW9uKGUsZGVmaW5lKXtkZWZpbmUoXCJrZW5kby5kYXRhdml6LmdhdWdlLm1pblwiLFtcImtlbmRvLmRhdGF2aXouY29yZS5taW5cIixcImtlbmRvLmRyYXdpbmcubWluXCIsXCJrZW5kby5kYXRhdml6LnRoZW1lcy5taW5cIl0sZSl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gdChlLG4pe3ZhciB0PWUuYm94LGk9ZS5jaGlsZHJlblswXS5ib3gscj1uLmJvcmRlcnx8e30sYT1uLmJhY2tncm91bmR8fFwiXCIscz1uZXcgUixsPWouZnJvbVJlY3QobmV3IEMoW3QueDEsdC55MV0sW3Qud2lkdGgoKSx0LmhlaWdodCgpXSkse3N0cm9rZTp7fX0pLGM9bmV3IE0oZS50ZXh0LG5ldyBTKGkueDEsaS55MSkse2ZvbnQ6bi5mb250LGZpbGw6e2NvbG9yOm4uY29sb3J9fSksdT1vKGMuYmJveCgpLmNsb25lKCksbi5wYWRkaW5nKSxkPWouZnJvbVJlY3QodSx7c3Ryb2tlOntjb2xvcjpyLndpZHRoP3IuY29sb3I6XCJcIix3aWR0aDpyLndpZHRoLGRhc2hUeXBlOnIuZGFzaFR5cGUsbGluZUpvaW46XCJyb3VuZFwiLGxpbmVDYXA6XCJyb3VuZFwifSxmaWxsOntjb2xvcjphfX0pO3JldHVybiBzLmFwcGVuZChsKSxzLmFwcGVuZChkKSxzLmFwcGVuZChjKSxzfWZ1bmN0aW9uIGkoZSxuLHQpe3ZhciBpPWIoZS5mcm9tKT9lLmZyb206RCxvPWIoZS50byk/ZS50bzpWO3JldHVybiBlLmZyb209bC5tYXgobC5taW4obyxpKSxuKSxlLnRvPWwubWluKGwubWF4KG8saSksdCksZX1mdW5jdGlvbiBvKGUsbil7dmFyIHQ9ZS5nZXRPcmlnaW4oKSxpPWUuZ2V0U2l6ZSgpLG89QShuKTtyZXR1cm4gZS5zZXRPcmlnaW4oW3QueC1vLmxlZnQsdC55LW8udG9wXSksZS5zZXRTaXplKFtpLndpZHRoKyhvLmxlZnQrby5yaWdodCksaS5oZWlnaHQrKG8udG9wK28uYm90dG9tKV0pLGV9ZnVuY3Rpb24gcihlLG4pe3ZhciB0PUEobik7cmV0dXJuIHQubGVmdD0tdC5sZWZ0LHQudG9wPS10LnRvcCx0LnJpZ2h0PS10LnJpZ2h0LHQuYm90dG9tPS10LmJvdHRvbSxvKGUsdCl9dmFyIGEscyxsPU1hdGgsYz13aW5kb3cua2VuZG8sdT1jLnV0aWwsZD1jLnVpLldpZGdldCxwPWMuZGVlcEV4dGVuZCxoPWMuZGF0YXZpeixmPWguYXV0b01ham9yVW5pdCxnPWguQ2hhcnRFbGVtZW50LG09aC5OdW1lcmljQXhpcyx2PWguQXhpcyx3PWguQm94MkQseD1jLkNsYXNzLGI9dS5kZWZpbmVkLHk9dS5pc051bWJlcixrPWguaW50ZXJwb2xhdGVWYWx1ZSxBPWguZ2V0U3BhY2luZyxfPWgucm91bmQsVD1oLmdlb21ldHJ5LHo9aC5kcmF3aW5nLFM9VC5Qb2ludCxSPXouR3JvdXAsaj16LlBhdGgsQz1ULlJlY3QsTT16LlRleHQsVT0xNTAsUD0yNTAsQj1cImFycm93XCIsTD1cImFycm93UG9pbnRlclwiLFg9XCJiYXJQb2ludGVyXCIsRT1cIiMwMDBcIixOPS4wNSxPPWguQ09PUkRfUFJFQ0lTSU9OLFY9TnVtYmVyLk1BWF9WQUxVRSxEPS1OdW1iZXIuTUFYX1ZBTFVFLFk9MjAwLEc9LjUsRj0yMDAsST02MCxLPTYwLFE9NSxXPWwuUEkvMTgwLEg9MTgwLEo9XCJpbnNpZGVcIixxPVwibGluZWFyXCIsWj1cIm5lZWRsZVwiLCQ9XCJvdXRzaWRlXCIsZWU9XCJyYWRpYWxQb2ludGVyXCIsbmU9XCJ4XCIsdGU9XCJ5XCIsaWU9eC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSxuKXt2YXIgdD10aGlzLGk9ZS5vcHRpb25zO2cuZm4uaW5pdC5jYWxsKHQsbiksbj10Lm9wdGlvbnMsbi5maWxsPW4uY29sb3IsdC5zY2FsZT1lLG4udmFsdWU9YihuLnZhbHVlKT9sLm1pbihsLm1heChuLnZhbHVlLGkubWluKSxpLm1heCk6aS5taW59LG9wdGlvbnM6e2NvbG9yOkV9LHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10Lm9wdGlvbnMsbz1pLnZhbHVlLHI9dC5zY2FsZS5vcHRpb25zO3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD9vOihpLl9vbGRWYWx1ZT1pLl9vbGRWYWx1ZSE9PW4/aS52YWx1ZTpyLm1pbixpLnZhbHVlPWwubWluKGwubWF4KGUsci5taW4pLHIubWF4KSx0LmVsZW1lbnRzJiZ0LnJlcGFpbnQoKSxuKX19KSxvZT1pZS5leHRlbmQoe29wdGlvbnM6e3NoYXBlOlosY2FwOntzaXplOk59LGFycm93Ont3aWR0aDoxNixoZWlnaHQ6MTR9LGFuaW1hdGlvbjp7dHlwZTplZSxkdXJhdGlvbjpVfX0sc2V0UmFkaXVzOmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7ZSYmKG4uZWxlbWVudHMuY2xlYXIoKSxuLnJlbmRlcihuLnBhcmVudCxuLmNlbnRlcixlKSl9LHNldEFuZ2xlOmZ1bmN0aW9uKGUpe3RoaXMuZWxlbWVudHMudHJhbnNmb3JtKFQudHJhbnNmb3JtKCkucm90YXRlKGUsdGhpcy5jZW50ZXIpKX0scmVwYWludDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1lLnNjYWxlLHQ9ZS5vcHRpb25zLGk9bi5zbG90QW5nbGUodC5fb2xkVmFsdWUpLG89bi5zbG90QW5nbGUodC52YWx1ZSk7dC5hbmltYXRpb24udHJhbnNpdGlvbnM9PT0hMT9lLnNldEFuZ2xlKG8pOm5ldyBoZShlLmVsZW1lbnRzLHAodC5hbmltYXRpb24se29sZEFuZ2xlOmksbmV3QW5nbGU6b30pKS5wbGF5KCl9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1lLnNjYWxlLHQ9bi5hcmMuY2VudGVyLGk9ZS5vcHRpb25zLG89bmV3IFI7cmV0dXJuIGkuYW5pbWF0aW9uIT09ITEmJnAoaS5hbmltYXRpb24se3N0YXJ0QW5nbGU6MCxjZW50ZXI6dCxyZXZlcnNlOm4ub3B0aW9ucy5yZXZlcnNlfSksaS5zaGFwZT09PVo/by5hcHBlbmQoZS5fcmVuZGVyTmVlZGxlKCksZS5fcmVuZGVyQ2FwKCkpOm8uYXBwZW5kKGUuX3JlbmRlckFycm93KCkpLGUuZWxlbWVudHM9byxlLnNldEFuZ2xlKFcpLG99LHJlZmxvdzpmdW5jdGlvbihlKXt2YXIgbj10aGlzLHQ9bi5jZW50ZXI9ZS5jZW50ZXIsaT1uLnJhZGl1cz1lLmdldFJhZGl1c1goKSxvPW4uY2FwU2l6ZT1NYXRoLnJvdW5kKGkqbi5vcHRpb25zLmNhcC5zaXplKTtuLmJib3g9Qy5mcm9tUG9pbnRzKG5ldyBTKHQueC1vLHQueS1vKSxuZXcgUyh0Lngrbyx0LnkrbykpfSxfcmVuZGVyTmVlZGxlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWUub3B0aW9ucyx0PWUuc2NhbGUub3B0aW9ucy5taW5vclRpY2tzLnNpemUsaT1lLmNlbnRlcixvPW4uY29sb3Iscj1uZXcgaih7ZmlsbDp7Y29sb3I6b30sc3Ryb2tlOntjb2xvcjpvLHdpZHRoOkd9fSk7cmV0dXJuIHIubW92ZVRvKGkueCtlLnJhZGl1cy10LGkueSkubGluZVRvKGkueCxpLnktZS5jYXBTaXplLzIpLmxpbmVUbyhpLngsaS55K2UuY2FwU2l6ZS8yKS5jbG9zZSgpLHJ9LF9yZW5kZXJDYXA6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49ZS5vcHRpb25zLHQ9bi5jYXAuY29sb3J8fG4uY29sb3IsaT1uZXcgVC5DaXJjbGUoZS5jZW50ZXIsZS5jYXBTaXplKSxvPW5ldyB6LkNpcmNsZShpLHtmaWxsOntjb2xvcjp0fSxzdHJva2U6e2NvbG9yOnR9fSk7cmV0dXJuIG99fSkscmU9bS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztuLm9wdGlvbnM9cCh7fSxuLm9wdGlvbnMsZSksbi5vcHRpb25zLm1ham9yVW5pdD1uLm9wdGlvbnMubWFqb3JVbml0fHxmKG4ub3B0aW9ucy5taW4sbi5vcHRpb25zLm1heCksbi5vcHRpb25zLm1pbm9yVW5pdD1uLm9wdGlvbnMubWlub3JVbml0fHxuLm9wdGlvbnMubWFqb3JVbml0LzEwLHYuZm4uaW5pdC5jYWxsKG4sbi5vcHRpb25zKX0sb3B0aW9uczp7bWluOjAsbWF4OjEwMCxtYWpvclRpY2tzOntzaXplOjE1LGFsaWduOkosY29sb3I6RSx3aWR0aDpHLHZpc2libGU6ITB9LG1pbm9yVGlja3M6e3NpemU6MTAsYWxpZ246Sixjb2xvcjpFLHdpZHRoOkcsdmlzaWJsZTohMH0sc3RhcnRBbmdsZTotMzAsZW5kQW5nbGU6MjEwLGxhYmVsczp7cG9zaXRpb246SixwYWRkaW5nOjJ9fSxyZW5kZXI6ZnVuY3Rpb24oZSxuKXt2YXIgdD10aGlzLGk9dC5yZW5kZXJBcmMoZSxuKTt0LmJib3g9aS5iYm94KCksdC5sYWJlbEVsZW1lbnRzPXQucmVuZGVyTGFiZWxzKCksdC50aWNrcz10LnJlbmRlclRpY2tzKCksdC5yYW5nZXM9dC5yZW5kZXJSYW5nZXMoKX0scmVmbG93OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT1lLmNlbnRlcigpLG89bC5taW4oZS5oZWlnaHQoKSxlLndpZHRoKCkpLzI7cmV0dXJuIHQuYmJveD09PW4/dC5yZW5kZXIoaSxvKToodC5iYm94PXQuYXJjLmJib3goKSx0LnJhZGl1cyh0LmFyYy5nZXRSYWRpdXNYKCkpLHQucmVwb3NpdGlvblJhbmdlcygpLHQucmVuZGVyTGFiZWxzKCksbil9LHNsb3RBbmdsZTpmdW5jdGlvbihlKXt2YXIgbix0PXRoaXMub3B0aW9ucyxpPXQuc3RhcnRBbmdsZSxvPXQucmV2ZXJzZSxyPXQuZW5kQW5nbGUtaSxhPXQubWluLHM9dC5tYXg7cmV0dXJuIG49bz90LmVuZEFuZ2xlLShlLWEpLyhzLWEpKnI6KGUtYSkvKHMtYSkqcitpLG4rSH0scmVuZGVyTGFiZWxzOmZ1bmN0aW9uKCl7dmFyIGUsaSxvLHIsYSxzLGMsdSxkLHAsZixnLG0sdix3PXRoaXMseD13Lm9wdGlvbnMsYj14Lm1ham9yVGlja3Muc2l6ZSx5PXcuYXJjLmNsb25lKCksaz15LmdldFJhZGl1c1goKSxBPXcudGlja0FuZ2xlcyh5LHgubWFqb3JVbml0KSxfPXcubGFiZWxzLHo9Xy5sZW5ndGgsaj14LmxhYmVscyxNPWoucGFkZGluZyxVPS4wNSprLFA9eC5yYW5nZVNpemU9eC5yYW5nZVNpemV8fC4xKmssQj14LnJhbmdlc3x8W10sTD1uZXcgUjtmb3Iody5vcHRpb25zLnJhbmdlRGlzdGFuY2UhPT1uP1U9dy5vcHRpb25zLnJhbmdlRGlzdGFuY2U6dy5vcHRpb25zLnJhbmdlRGlzdGFuY2U9VSxqLnBvc2l0aW9uPT09SiYmKGstPWIsQi5sZW5ndGgmJncubGFiZWxFbGVtZW50cz09PW4mJihrLT1QK1UpLHkuc2V0UmFkaXVzWChrKS5zZXRSYWRpdXNZKGspKSxjPTA7Yzx6O2MrKylhPV9bY10sZT1hLmJveC53aWR0aCgpLzIsaT1hLmJveC5oZWlnaHQoKS8yLHI9QVtjXSxvPShyLUgpKlcscD1qLnBvc2l0aW9uPT09SixzPXkucG9pbnRBdChyKSx1PXMueCtsLmNvcyhvKSooZStNKSoocD8xOi0xKSxkPXMueStsLnNpbihvKSooaStNKSoocD8xOi0xKSxhLnJlZmxvdyhuZXcgaC5Cb3gyRCh1LWUsZC1pLHUrZSxkK2kpKSxnPW5ldyBTKGEuYm94LngxLGEuYm94LnkxKSx3LmxhYmVsRWxlbWVudHM9PT1uPyhmPXQoYSx4LmxhYmVscyksTC5hcHBlbmQoZikpOihmPXcubGFiZWxFbGVtZW50cy5jaGlsZHJlbltjXSxtPWYuYmJveCgpLm9yaWdpbix2PWYudHJhbnNmb3JtKCl8fFQudHJhbnNmb3JtKCksdi50cmFuc2xhdGUoZy54LW0ueCxnLnktbS55KSxmLnRyYW5zZm9ybSh2KSksdy5iYm94PUMudW5pb24ody5iYm94LGYuYmJveCgpKTtyZXR1cm4gTH0scmVwb3NpdGlvblJhbmdlczpmdW5jdGlvbigpe3ZhciBlLG4sdCxpPXRoaXMsbz1pLnJhbmdlcy5jaGlsZHJlbixyPWkub3B0aW9ucy5yYW5nZVNpemUsYT1pLm9wdGlvbnMucmFuZ2VEaXN0YW5jZTtpZihvLmxlbmd0aD4wKXtmb3IoZT1pLmdldFJhbmdlUmFkaXVzKCksaS5vcHRpb25zLmxhYmVscy5wb3NpdGlvbj09PUomJihlKz1yK2EpLG49ZStyLzIsdD0wO3Q8by5sZW5ndGg7dCsrKW9bdF0uX2dlb21ldHJ5LnNldFJhZGl1c1gobikuc2V0UmFkaXVzWShuKTtpLmJib3g9Qy51bmlvbihpLmJib3gsaS5yYW5nZXMuYmJveCgpKX19LHJlbmRlclJhbmdlczpmdW5jdGlvbigpe3ZhciBlLG4sdCxpLG8scixhPXRoaXMscz1hLmFyYyxsPW5ldyBSLGM9YS5yYW5nZVNlZ21lbnRzKCksdT1jLmxlbmd0aCxkPWEub3B0aW9ucy5yZXZlcnNlLHA9YS5vcHRpb25zLnJhbmdlU2l6ZSxoPWEub3B0aW9ucy5yYW5nZURpc3RhbmNlO2lmKHUpZm9yKGk9YS5nZXRSYW5nZVJhZGl1cygpLGEucmFkaXVzKGEucmFkaXVzKCktcC1oKSxyPTA7cjx1O3IrKyl0PWNbcl0sZT1hLnNsb3RBbmdsZSh0W2Q/XCJ0b1wiOlwiZnJvbVwiXSksbj1hLnNsb3RBbmdsZSh0W2Q/XCJmcm9tXCI6XCJ0b1wiXSksbi1lIT09MCYmKG89bmV3IFQuQXJjKHMuY2VudGVyLHtyYWRpdXNYOmkrcC8yLHJhZGl1c1k6aStwLzIsc3RhcnRBbmdsZTplLGVuZEFuZ2xlOm59KSxsLmFwcGVuZChuZXcgei5BcmMobyx7c3Ryb2tlOnt3aWR0aDpwLGNvbG9yOnQuY29sb3Isb3BhY2l0eTp0Lm9wYWNpdHl9fSkpKTtyZXR1cm4gbH0scmFuZ2VTZWdtZW50czpmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxuLHQsaSl7cmV0dXJue2Zyb206ZSx0bzpuLGNvbG9yOnQsb3BhY2l0eTppfX12YXIgbix0LG8scixhLHM9dGhpcyxsPXMub3B0aW9ucyxjPWwucmFuZ2VzfHxbXSx1PWMubGVuZ3RoLGQ9bC5yYW5nZVBsYWNlaG9sZGVyQ29sb3IscD1bXSxoPWwubWluLGY9bC5tYXg7aWYodSlmb3IocC5wdXNoKGUoaCxmLGQpKSxyPTA7cjx1O3IrKylmb3Iobj1pKGNbcl0saCxmKSx0PXAubGVuZ3RoLGE9MDthPHQ7YSsrKWlmKG89cFthXSxvLmZyb208PW4uZnJvbSYmbi5mcm9tPD1vLnRvKXtwLnB1c2goZShuLmZyb20sbi50byxuLmNvbG9yLG4ub3BhY2l0eSkpLG8uZnJvbTw9bi50byYmbi50bzw9by50byYmcC5wdXNoKGUobi50byxvLnRvLGQsbi5vcGFjaXR5KSksby50bz1uLmZyb207YnJlYWt9cmV0dXJuIHB9LGdldFJhbmdlUmFkaXVzOmZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzLHQ9bi5vcHRpb25zLGk9dC5tYWpvclRpY2tzLnNpemUsbz10LnJhbmdlU2l6ZSxyPXQucmFuZ2VEaXN0YW5jZSxhPW4uYXJjO3JldHVybiBlPXQubGFiZWxzLnBvc2l0aW9uPT09JD9hLmdldFJhZGl1c1goKS1pLXItbzphLmdldFJhZGl1c1goKS1vfSxyZW5kZXJBcmM6ZnVuY3Rpb24oZSxuKXt2YXIgdD10aGlzLGk9dC5vcHRpb25zLG89dC5hcmM9bmV3IFQuQXJjKGUse3JhZGl1c1g6bixyYWRpdXNZOm4sc3RhcnRBbmdsZTppLnN0YXJ0QW5nbGUrSCxlbmRBbmdsZTppLmVuZEFuZ2xlK0h9KTtyZXR1cm4gb30scmVuZGVyVGlja3M6ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsbix0LGkpe3ZhciBvLHIsYSxzPW5ldyBSLGw9ZS5jZW50ZXIsYz1lLmdldFJhZGl1c1goKSx1PWkudmlzaWJsZTtpZih1KWZvcihvPTA7bzxuLmxlbmd0aDtvKyspcj1lLnBvaW50QXQobltvXSksYT1uZXcgUyhsLngrYy1pLnNpemUsbC55KS5yb3RhdGUobltvXSxsKSxzLmFwcGVuZChuZXcgaih7c3Ryb2tlOntjb2xvcjppLmNvbG9yLHdpZHRoOmkud2lkdGh9fSkubW92ZVRvKHIpLmxpbmVUbyhhKSk7cmV0dXJuIHN9dmFyIG49dGhpcyx0PW4uYXJjLGk9bi5vcHRpb25zLG89aS5sYWJlbHMucG9zaXRpb24scj1uZXcgUixhPWkubWFqb3JUaWNrcy5zaXplLHM9aS5taW5vclRpY2tzLnNpemUsbD10LmNsb25lKCksYz1sLmdldFJhZGl1c1goKTtyZXR1cm4gbi5tYWpvclRpY2tBbmdsZXM9bi50aWNrQW5nbGVzKHQsaS5tYWpvclVuaXQpLG4ubWFqb3JUaWNrcz1lKGwsbi5tYWpvclRpY2tBbmdsZXMsaS5tYWpvclVuaXQsaS5tYWpvclRpY2tzKSxyLmFwcGVuZChuLm1ham9yVGlja3MpLG4uX3RpY2tEaWZmZXJlbmNlPWEtcyxvPT09JCYmbC5zZXRSYWRpdXNYKGMtYStzKS5zZXRSYWRpdXNZKGMtYStzKSxuLm1pbm9yVGlja0FuZ2xlcz1uLm5vcm1hbGl6ZVRpY2tBbmdsZXMobi50aWNrQW5nbGVzKHQsaS5taW5vclVuaXQpKSxuLm1pbm9yVGlja3M9ZShsLG4ubWlub3JUaWNrQW5nbGVzLGkubWlub3JVbml0LGkubWlub3JUaWNrcyxpLm1ham9yVW5pdCksci5hcHBlbmQobi5taW5vclRpY2tzKSxyfSxub3JtYWxpemVUaWNrQW5nbGVzOmZ1bmN0aW9uKGUpe3ZhciBuLHQ9dGhpcyxpPXQub3B0aW9ucyxvPWkubWFqb3JVbml0L2kubWlub3JVbml0O2ZvcihuPWUubGVuZ3RoLTE7bj49MDtuLS0pbiVvPT09MCYmZS5zcGxpY2UobiwxKTtyZXR1cm4gZX0sdGlja0FuZ2xlczpmdW5jdGlvbihlLG4pe3ZhciB0LGk9dGhpcyxvPWkub3B0aW9ucyxyPW8ucmV2ZXJzZSxhPW8ubWF4LW8ubWluLHM9ZS5lbmRBbmdsZS1lLnN0YXJ0QW5nbGUsbD1lLnN0YXJ0QW5nbGUsYz1hL24sdT1zL2MsZD1bXTtmb3IociYmKGwrPXMsdT0tdSksdD0wO3Q8Yzt0KyspZC5wdXNoKF8obCxPKSksbCs9dTtyZXR1cm4gXyhsKTw9ZS5lbmRBbmdsZSYmZC5wdXNoKGwpLGR9LHJhZGl1czpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBlPyh0LmFyYy5zZXRSYWRpdXNYKGUpLnNldFJhZGl1c1koZSksdC5yZXBvc2l0aW9uVGlja3ModC5tYWpvclRpY2tzLmNoaWxkcmVuLHQubWFqb3JUaWNrQW5nbGVzKSx0LnJlcG9zaXRpb25UaWNrcyh0Lm1pbm9yVGlja3MuY2hpbGRyZW4sdC5taW5vclRpY2tBbmdsZXMsITApLG4pOnQuYXJjLmdldFJhZGl1c1goKX0scmVwb3NpdGlvblRpY2tzOmZ1bmN0aW9uKGUsbix0KXt2YXIgaSxvLHIsYSxzLGw9dGhpcyxjPXQ/bC5fdGlja0RpZmZlcmVuY2V8fDA6MCx1PWwuYXJjLGQ9dS5nZXRSYWRpdXNYKCk7Zm9yKHQmJmwub3B0aW9ucy5sYWJlbHMucG9zaXRpb249PT0kJiYwIT09YyYmKHU9bC5hcmMuY2xvbmUoKSx1LnNldFJhZGl1c1goZC1jKS5zZXRSYWRpdXNZKGQtYykpLGk9MDtpPGUubGVuZ3RoO2krKylvPXUucG9pbnRBdChuW2ldKSxyPWVbaV0uc2VnbWVudHMsYT1vLngtclswXS5hbmNob3IoKS54LHM9by55LXJbMF0uYW5jaG9yKCkueSxlW2ldLnRyYW5zZm9ybSgobmV3IFQuVHJhbnNmb3JtYXRpb24pLnRyYW5zbGF0ZShhLHMpKX19KSxhZT1kLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihuLHQpe3ZhciBpLG8scixhLHMsbD10aGlzLHU9aC51aS50aGVtZXN8fHt9O2lmKGMuZGVzdHJveShuKSxlKG4pLmVtcHR5KCksZC5mbi5pbml0LmNhbGwobCxuKSxsLndyYXBwZXI9bC5lbGVtZW50LGwuX29yaWdpbmFsT3B0aW9ucz1wKHt9LHQpLGk9cCh7fSxsLm9wdGlvbnMsdCkscj1pLnRoZW1lLGE9dVtyXXx8dVtyLnRvTG93ZXJDYXNlKCldLG89ciYmYT9hLmdhdWdlOnt9LGwub3B0aW9ucz1wKHt9LG8saSksZS5pc0FycmF5KGkucG9pbnRlcikpZm9yKHM9MDtzPGkucG9pbnRlci5sZW5ndGg7cysrKWwub3B0aW9ucy5wb2ludGVyW3NdPXAoe30sby5wb2ludGVyLGkucG9pbnRlcltzXSk7bC5lbGVtZW50LmFkZENsYXNzKFwiay1nYXVnZVwiKSxsLnN1cmZhY2U9bC5fY3JlYXRlU3VyZmFjZSgpLGwucmVkcmF3KCl9LG9wdGlvbnM6e3Bsb3RBcmVhOnt9LHRoZW1lOlwiZGVmYXVsdFwiLHJlbmRlckFzOlwiXCIscG9pbnRlcjp7fSxzY2FsZTp7fSxnYXVnZUFyZWE6e319LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLnN1cmZhY2UuZGVzdHJveSgpLGQuZm4uZGVzdHJveS5jYWxsKHRoaXMpfSx2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dC5wb2ludGVyc1swXTtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/aS52YWx1ZSgpOihpLnZhbHVlKGUpLHQuX3NldFZhbHVlT3B0aW9ucyhlKSxuKX0sX2RyYXc6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN1cmZhY2U7ZS5jbGVhcigpLGUuZHJhdyh0aGlzLl92aXN1YWxzKX0sZXhwb3J0VmlzdWFsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Zpc3VhbHN9LGFsbFZhbHVlczpmdW5jdGlvbihuKXt2YXIgdCxpPXRoaXMsbz1pLnBvaW50ZXJzLHI9W107aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcih0PTA7dDxvLmxlbmd0aDt0Kyspci5wdXNoKG9bdF0udmFsdWUoKSk7cmV0dXJuIHJ9aWYoZS5pc0FycmF5KG4pKWZvcih0PTA7dDxuLmxlbmd0aDt0KyspeShuW3RdKSYmb1t0XS52YWx1ZShuW3RdKTtpLl9zZXRWYWx1ZU9wdGlvbnMobil9LF9zZXRWYWx1ZU9wdGlvbnM6ZnVuY3Rpb24oZSl7dmFyIG4sdD1bXS5jb25jYXQodGhpcy5vcHRpb25zLnBvaW50ZXIpO2ZvcihlPVtdLmNvbmNhdChlKSxuPTA7bjxlLmxlbmd0aDtuKyspdFtuXS52YWx1ZT1lW25dfSxfcmVzaXplOmZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzLHQ9bi5vcHRpb25zLnRyYW5zaXRpb25zO2ZvcihuLm9wdGlvbnMudHJhbnNpdGlvbnM9ITEsZT0wO2U8bi5wb2ludGVycy5sZW5ndGg7ZSsrKW4ucG9pbnRlcnNbZV0ub3B0aW9ucy5hbmltYXRpb24udHJhbnNpdGlvbnM9ITE7Zm9yKG4ucmVkcmF3KCksbi5vcHRpb25zLnRyYW5zaXRpb25zPXQsZT0wO2U8bi5wb2ludGVycy5sZW5ndGg7ZSsrKW4ucG9pbnRlcnNbZV0ub3B0aW9ucy5hbmltYXRpb24udHJhbnNpdGlvbnM9dH0scmVkcmF3OmZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzLHQ9cChuLl9nZXRTaXplKCksbi5vcHRpb25zLmdhdWdlQXJlYSksaT1uZXcgQyhbMCwwXSxbdC53aWR0aCx0LmhlaWdodF0pO24uc3VyZmFjZS5jbGVhcigpLG4uZ2F1Z2VBcmVhPW4uX2NyZWF0ZUdhdWdlQXJlYSgpLG4uc3VyZmFjZS5lbGVtZW50LmNzcyh7d2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9KSxuLl9jcmVhdGVNb2RlbCgpLGU9cihpLmJib3goKSxuLl9nYXVnZUFyZWFNYXJnaW4pLG4ucmVmbG93KGUpfSxfY3JlYXRlR2F1Z2VBcmVhOmZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzLHQ9bi5vcHRpb25zLmdhdWdlQXJlYSxpPW4uc3VyZmFjZS5zaXplKCksbz10LmJvcmRlcnx8e30sYT1uZXcgQyhbMCwwXSxbaS53aWR0aCxpLmhlaWdodF0pO3JldHVybiBuLl9nYXVnZUFyZWFNYXJnaW49dC5tYXJnaW58fFEsby53aWR0aD4wJiYoYT1yKGEsby53aWR0aCkpLGU9ai5mcm9tUmVjdChhLHtzdHJva2U6e2NvbG9yOm8ud2lkdGg/by5jb2xvcjpcIlwiLHdpZHRoOm8ud2lkdGgsZGFzaFR5cGU6by5kYXNoVHlwZSxsaW5lSm9pbjpcInJvdW5kXCIsbGluZUNhcDpcInJvdW5kXCJ9LGZpbGw6e2NvbG9yOnQuYmFja2dyb3VuZH19KX0sX2NyZWF0ZVN1cmZhY2U6ZnVuY3Rpb24oKXt2YXIgbix0PXRoaXMsaT10Lm9wdGlvbnMsbz10Ll9nZXRTaXplKCk7cmV0dXJuIG89aS5nYXVnZUFyZWE/cChvLGkuZ2F1Z2VBcmVhKTpvLG49ZShcIjxkaXY+PC9kaXY+XCIpLmFwcGVuZFRvKHQuZWxlbWVudCkuY3NzKHt3aWR0aDpvLndpZHRoLGhlaWdodDpvLmhlaWdodH0pLG5ldyB6LlN1cmZhY2UuY3JlYXRlKG4se3R5cGU6aS5yZW5kZXJBc30pfSxnZXRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFNpemUoKX0sX2dldFNpemU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49ZS5lbGVtZW50LHQ9bi53aWR0aCgpLGk9bi5oZWlnaHQoKTtyZXR1cm4gdHx8KHQ9RiksaXx8KGk9WSkse3dpZHRoOnQsaGVpZ2h0Oml9fX0pLHNlPWFlLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLG4pe3ZhciB0PXRoaXM7YWUuZm4uaW5pdC5jYWxsKHQsZSxuKSxjLm5vdGlmeSh0LGgudWkpfSxvcHRpb25zOntuYW1lOlwiUmFkaWFsR2F1Z2VcIix0cmFuc2l0aW9uczohMCxnYXVnZUFyZWE6e2JhY2tncm91bmQ6XCJcIn19LHJlZmxvdzpmdW5jdGlvbihlKXt2YXIgbix0PXRoaXMsaT10LnBvaW50ZXJzO2Zvcih0LnNjYWxlLnJlZmxvdyhlKSx0Ll9pbml0aWFsUGxvdEFyZWE9dC5zY2FsZS5iYm94LG49MDtuPGkubGVuZ3RoO24rKylpW25dLnJlZmxvdyh0LnNjYWxlLmFyYyksdC5faW5pdGlhbFBsb3RBcmVhPUMudW5pb24odC5faW5pdGlhbFBsb3RBcmVhLGlbbl0uYmJveCk7dC5maXRTY2FsZShlKSx0LmFsaWduU2NhbGUoZSksdC5fYnVpbGRWaXN1YWwodC5nYXVnZUFyZWEsaSx0LnNjYWxlKSx0Ll9kcmF3KCl9LF9idWlsZFZpc3VhbDpmdW5jdGlvbihlLG4sdCl7dmFyIGksbyxyPW5ldyBSO2ZvcihyLmFwcGVuZChlKSxyLmFwcGVuZCh0LnRpY2tzKSxyLmFwcGVuZCh0LnJhbmdlcyksbz0wO288bi5sZW5ndGg7bysrKWk9bltvXSxpLnJlbmRlcigpLHIuYXBwZW5kKGkuZWxlbWVudHMpLGkudmFsdWUoaS5vcHRpb25zLnZhbHVlKTtyLmFwcGVuZCh0LmxhYmVsRWxlbWVudHMpLHRoaXMuX3Zpc3VhbHM9cn0sZml0U2NhbGU6ZnVuY3Rpb24oZSl7Zm9yKHZhciBuLHQsaSxvLHIsYT10aGlzLHM9YS5zY2FsZSxjPXMuYXJjLHU9YS5faW5pdGlhbFBsb3RBcmVhLGQ9bC5hYnMoYS5nZXREaWZmKHUsZSkpLHA9XyhkLE8pLGg9XygtZCxPKSxmPTAsZz0wOyEoIShnKys8MTAwKXx8KGY9cj09PWk/ZisxOjAsZj41KXx8cCE9byYmKG49YS5nZXRQbG90Qm94KHAsZSxjKSwwPD1uJiZuPD0yKXx8aCE9byYmKGk9YS5nZXRQbG90Qm94KGgsZSxjKSwwPD1pJiZpPD0yKXx8KG89bj4wJiZpPjA/MipwOm48MCYmaTwwPzIqaDpfKChwK2gpLzJ8fDEsTyksdD1hLmdldFBsb3RCb3gobyxlLGMpLDA8PXQmJnQ8PTIpKTspcj1pLHQ+MD8oaD1vLGk9dCk6KHA9byxuPXQpfSxnZXRQbG90Qm94OmZ1bmN0aW9uKGUsbix0KXt2YXIgaSxvPXRoaXMscj1vLnNjYWxlLGE9by5wb2ludGVycyxzPXQuZ2V0UmFkaXVzWCgpO2Zvcih0PXQuY2xvbmUoKSx0LnNldFJhZGl1c1gocytlKS5zZXRSYWRpdXNZKHMrZSksci5hcmM9dCxyLnJlZmxvdyhuKSxvLnBsb3RCYm94PXIuYmJveCxpPTA7aTxhLmxlbmd0aDtpKyspYVtpXS5yZWZsb3codCksby5wbG90QmJveD1DLnVuaW9uKG8ucGxvdEJib3gsYVtpXS5iYm94KTtyZXR1cm4gby5nZXREaWZmKG8ucGxvdEJib3gsbil9LGdldERpZmY6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbC5taW4obi53aWR0aCgpLWUud2lkdGgoKSxuLmhlaWdodCgpLWUuaGVpZ2h0KCkpfSxhbGlnblNjYWxlOmZ1bmN0aW9uKGUpe3ZhciBuLHQ9dGhpcyxpPXQucGxvdEJib3guY2VudGVyKCksbz1lLmNlbnRlcigpLHI9aS54LW8ueCxhPWkueS1vLnkscz10LnNjYWxlLGw9dC5wb2ludGVycztmb3Iocy5hcmMuY2VudGVyLngtPXIscy5hcmMuY2VudGVyLnktPWEscy5yZWZsb3coZSksbj0wO248bC5sZW5ndGg7bisrKWxbbl0ucmVmbG93KHMuYXJjKSx0LnBsb3RCYm94PUMudW5pb24ocy5iYm94LGxbbl0uYmJveCl9LF9jcmVhdGVNb2RlbDpmdW5jdGlvbigpe3ZhciBuLHQsaT10aGlzLG89aS5vcHRpb25zLHI9by5wb2ludGVyLGE9aS5zY2FsZT1uZXcgcmUoby5zY2FsZSk7Zm9yKGkucG9pbnRlcnM9W10scj1lLmlzQXJyYXkocik/cjpbcl0sdD0wO3Q8ci5sZW5ndGg7dCsrKW49bmV3IG9lKGEscCh7fSxyW3RdLHthbmltYXRpb246e3RyYW5zaXRpb25zOm8udHJhbnNpdGlvbnN9fSkpLGkucG9pbnRlcnMucHVzaChuKX19KSxsZT1hZS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSxuKXt2YXIgdD10aGlzO2FlLmZuLmluaXQuY2FsbCh0LGUsbiksYy5ub3RpZnkodCxoLnVpKX0sb3B0aW9uczp7bmFtZTpcIkxpbmVhckdhdWdlXCIsdHJhbnNpdGlvbnM6ITAsZ2F1Z2VBcmVhOntiYWNrZ3JvdW5kOlwiXCJ9LHNjYWxlOnt2ZXJ0aWNhbDohMH19LHJlZmxvdzpmdW5jdGlvbihlKXt2YXIgbix0PXRoaXMsaT10LnBvaW50ZXJzLG89ZS5vcmlnaW4ueCxyPWUub3JpZ2luLnksYT1uZXcgaC5Cb3gyRChvLHIsbytlLndpZHRoKCkscitlLmhlaWdodCgpKTtmb3IodC5zY2FsZS5yZWZsb3coYSksbj0wO248aS5sZW5ndGg7bisrKWlbbl0ucmVmbG93KCk7dC5iYm94PXQuX2dldEJveChhKSx0Ll9hbGlnbkVsZW1lbnRzKCksdC5fc2hyaW5rRWxlbWVudHMoKSx0Ll9idWlsZFZpc3VhbCgpLHQuX2RyYXcoKX0sX2J1aWxkVmlzdWFsOmZ1bmN0aW9uKCl7dmFyIGUsbix0PXRoaXMsaT1uZXcgUixvPXQuc2NhbGUucmVuZGVyKCkscj10LnBvaW50ZXJzO2ZvcihpLmFwcGVuZCh0LmdhdWdlQXJlYSksaS5hcHBlbmQobyksbj0wO248ci5sZW5ndGg7bisrKWU9cltuXSxpLmFwcGVuZChlLnJlbmRlcigpKSxlLnZhbHVlKGUub3B0aW9ucy52YWx1ZSk7dC5fdmlzdWFscz1pfSxfY3JlYXRlTW9kZWw6ZnVuY3Rpb24oKXt2YXIgbix0LGksbz10aGlzLHI9by5vcHRpb25zLGE9ci5wb2ludGVyLHM9by5zY2FsZT1uZXcgY2Uoci5zY2FsZSk7Zm9yKG8ucG9pbnRlcnM9W10sYT1lLmlzQXJyYXkoYSk/YTpbYV0saT0wO2k8YS5sZW5ndGg7aSsrKXQ9cCh7fSxhW2ldLHthbmltYXRpb246e3RyYW5zaXRpb25zOnIudHJhbnNpdGlvbnN9fSksbj10LnNoYXBlPT09Qj9uZXcgZGUocyx0KTpuZXcgcGUocyx0KSxvLnBvaW50ZXJzLnB1c2gobil9LF9nZXRTaXplOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWUuZWxlbWVudCx0PW4ud2lkdGgoKSxpPW4uaGVpZ2h0KCksbz1lLm9wdGlvbnMuc2NhbGUudmVydGljYWw7cmV0dXJuIHR8fCh0PW8/STpGKSxpfHwoaT1vP1k6Sykse3dpZHRoOnQsaGVpZ2h0Oml9fSxfZ2V0Qm94OmZ1bmN0aW9uKGUpe3ZhciBuLHQsaT10aGlzLG89aS5zY2FsZSxyPWkucG9pbnRlcnMsYT1lLmNlbnRlcigpLHM9clswXS5ib3guY2xvbmUoKS53cmFwKG8uYm94KTtmb3IodD0wO3Q8ci5sZW5ndGg7dCsrKXMud3JhcChyW3RdLmJveC5jbG9uZSgpKTtyZXR1cm4gby5vcHRpb25zLnZlcnRpY2FsPyhuPXMud2lkdGgoKS8yLHM9bmV3IHcoYS54LW4sZS55MSxhLngrbixlLnkyKSk6KG49cy5oZWlnaHQoKS8yLHM9bmV3IHcoZS54MSxhLnktbixlLngyLGEueStuKSksc30sX2FsaWduRWxlbWVudHM6ZnVuY3Rpb24oKXt2YXIgZSxuLHQ9dGhpcyxpPXQuc2NhbGUsbz10LnBvaW50ZXJzLHI9aS5ib3gsYT1vWzBdLmJveC5jbG9uZSgpLndyYXAoaS5ib3gpLHM9dC5iYm94O2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspYS53cmFwKG9bbl0uYm94LmNsb25lKCkpO2ZvcihpLm9wdGlvbnMudmVydGljYWw/KGU9cy5jZW50ZXIoKS54LWEuY2VudGVyKCkueCxpLnJlZmxvdyhuZXcgdyhyLngxK2Uscy55MSxyLngyK2Uscy55MikpKTooZT1zLmNlbnRlcigpLnktYS5jZW50ZXIoKS55LGkucmVmbG93KG5ldyB3KHMueDEsci55MStlLHMueDIsci55MitlKSkpLG49MDtuPG8ubGVuZ3RoO24rKylvW25dLnJlZmxvdyh0LmJib3gpfSxfc2hyaW5rRWxlbWVudHM6ZnVuY3Rpb24oKXt2YXIgZSxuPXRoaXMsdD1uLnNjYWxlLGk9bi5wb2ludGVycyxvPXQuYm94LmNsb25lKCkscj10Lm9wdGlvbnMudmVydGljYWw/XCJ5XCI6XCJ4XCIsYT1pWzBdLmJveDtmb3IoZT0wO2U8aS5sZW5ndGg7ZSsrKWEud3JhcChpW2VdLmJveC5jbG9uZSgpKTtmb3Iob1tyKzFdKz1sLm1heChvW3IrMV0tYVtyKzFdLDApLG9bcisyXS09bC5tYXgoYVtyKzJdLW9bcisyXSwwKSx0LnJlZmxvdyhvKSxlPTA7ZTxpLmxlbmd0aDtlKyspaVtlXS5yZWZsb3cobi5iYm94KX19KSxjZT1tLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlKXt2YXIgbj10aGlzO24ub3B0aW9ucz1wKHt9LG4ub3B0aW9ucyxlKSxuLm9wdGlvbnM9cCh7fSxuLm9wdGlvbnMse2xhYmVsczp7bWlycm9yOm4ub3B0aW9ucy5taXJyb3J9fSksbi5vcHRpb25zLm1ham9yVW5pdD1uLm9wdGlvbnMubWFqb3JVbml0fHxmKG4ub3B0aW9ucy5taW4sbi5vcHRpb25zLm1heCksdi5mbi5pbml0LmNhbGwobixuLm9wdGlvbnMpLG4ub3B0aW9ucy5taW5vclVuaXQ9bi5vcHRpb25zLm1pbm9yVW5pdHx8bi5vcHRpb25zLm1ham9yVW5pdC8xMH0sb3B0aW9uczp7bWluOjAsbWF4OjUwLG1ham9yVGlja3M6e3NpemU6MTUsYWxpZ246Sixjb2xvcjpFLHdpZHRoOkcsdmlzaWJsZTohMH0sbWlub3JUaWNrczp7c2l6ZToxMCxhbGlnbjpKLGNvbG9yOkUsd2lkdGg6Ryx2aXNpYmxlOiEwfSxsaW5lOnt3aWR0aDpHfSxsYWJlbHM6e3Bvc2l0aW9uOkoscGFkZGluZzoyfSxtaXJyb3I6ITEsX2FsaWduTGluZXM6ITF9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1lLmVsZW1lbnRzPW5ldyBSLHQ9ZS5yZW5kZXJMYWJlbHMoKSxpPWUucmVuZGVyTGluZSgpLG89ZS5yZW5kZXJUaWNrcygpLHI9ZS5yZW5kZXJSYW5nZXMoKTtyZXR1cm4gbi5hcHBlbmQoaSx0LG8sciksbn0scmVuZGVyUmFuZ2VzOmZ1bmN0aW9uKCl7dmFyIGUsbix0LG8scixhPXRoaXMscz1hLm9wdGlvbnMsbD1zLm1pbixjPXMubWF4LHU9cy5yYW5nZXN8fFtdLGQ9cy52ZXJ0aWNhbCxwPXMubGFiZWxzLm1pcnJvcixoPW5ldyBSLGY9dS5sZW5ndGgsZz1zLnJhbmdlU2l6ZXx8cy5taW5vclRpY2tzLnNpemUvMjtpZihmKWZvcihyPTA7cjxmO3IrKyllPWkodVtyXSxsLGMpLG49YS5nZXRTbG90KGUuZnJvbSxlLnRvKSx0PWQ/YS5saW5lQm94KCk6bixvPWQ/bjphLmxpbmVCb3goKSxkP3QueDEtPWcqKHA/LTE6MSk6by55Mis9ZyoocD8tMToxKSxoLmFwcGVuZChqLmZyb21SZWN0KG5ldyBDKFt0LngxLG8ueTFdLFt0LngyLXQueDEsby55Mi1vLnkxXSkse2ZpbGw6e2NvbG9yOmUuY29sb3Isb3BhY2l0eTplLm9wYWNpdHl9LHN0cm9rZTp7fX0pKTtyZXR1cm4gaH0scmVuZGVyTGFiZWxzOmZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzLGk9bi5vcHRpb25zLG89bi5sYWJlbHMscj1uZXcgUjtmb3IoZT0wO2U8by5sZW5ndGg7ZSsrKXIuYXBwZW5kKHQob1tlXSxpLmxhYmVscykpO3JldHVybiByfSxyZW5kZXJMaW5lOmZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzLHQ9bi5vcHRpb25zLGk9dC5saW5lLG89bi5saW5lQm94KCkscj1uZXcgUjtyZXR1cm4gaS53aWR0aD4wJiZpLnZpc2libGUmJihlPW5ldyBqKHtzdHJva2U6e2NvbG9yOmkuY29sb3IsZGFzaFR5cGU6aS5kYXNoVHlwZSx3aWR0aDppLndpZHRofX0pLGUubW92ZVRvKG8ueDEsby55MSkubGluZVRvKG8ueDIsby55Miksci5hcHBlbmQoZSkpLHJ9LHJlbmRlclRpY2tzOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLGkpe3ZhciBhLGw9ZS5sZW5ndGg7aWYoaS52aXNpYmxlKWZvcihhPWkuc2tpcDthPGw7YSs9aS5zdGVwKWElaS5za2lwVW5pdCE9PTAmJihzLnRpY2tYPXI/by54MjpvLngyLWkuc2l6ZSxzLnRpY2tZPXI/by55MS1pLnNpemU6by55MSxzLnBvc2l0aW9uPWVbYV0sdC5hcHBlbmQobi5yZW5kZXJBeGlzVGljayhzLGkpKSl9dmFyIG49dGhpcyx0PW5ldyBSLGk9bi5vcHRpb25zLG89bi5saW5lQm94KCkscj1pLmxhYmVscy5taXJyb3IsYT1pLm1ham9yVGlja3MudmlzaWJsZT9pLm1ham9yVW5pdDowLHM9e19hbGlnbkxpbmVzOmkuX2FsaWduTGluZXMsdmVydGljYWw6aS52ZXJ0aWNhbH07cmV0dXJuIGUobi5nZXRNYWpvclRpY2tQb3NpdGlvbnMoKSxpLm1ham9yVGlja3MpLGUobi5nZXRNaW5vclRpY2tQb3NpdGlvbnMoKSxwKHt9LHtza2lwVW5pdDphL2kubWlub3JVbml0fSxpLm1pbm9yVGlja3MpKSx0fSxyZW5kZXJBeGlzVGljazpmdW5jdGlvbihlLG4pe3ZhciB0LGksbyxyPWUudGlja1gsYT1lLnRpY2tZLHM9ZS5wb3NpdGlvbjtyZXR1cm4gZS52ZXJ0aWNhbD8odD1uZXcgUyhyLHMpLGk9bmV3IFMocituLnNpemUscykpOih0PW5ldyBTKHMsYSksaT1uZXcgUyhzLGErbi5zaXplKSksbz1uZXcgaih7c3Ryb2tlOntjb2xvcjpuLmNvbG9yLHdpZHRoOm4ud2lkdGh9fSkubW92ZVRvKHQpLmxpbmVUbyhpKX19KSx1ZT1pZS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSxuKXt2YXIgdD10aGlzO2llLmZuLmluaXQuY2FsbCh0LGUsbiksdC5vcHRpb25zPXAoe3RyYWNrOnt2aXNpYmxlOmIobi50cmFjayl9fSx0Lm9wdGlvbnMpfSxvcHRpb25zOntzaGFwZTpYLHRyYWNrOntib3JkZXI6e3dpZHRoOjF9fSxjb2xvcjpFLGJvcmRlcjp7d2lkdGg6MX0sb3BhY2l0eToxLG1hcmdpbjpBKDMpLGFuaW1hdGlvbjp7dHlwZTpYfSx2aXNpYmxlOiEwfSxyZWZsb3c6ZnVuY3Rpb24oKXt2YXIgZSxuLHQsaT10aGlzLG89aS5vcHRpb25zLHI9aS5zY2FsZSxhPXIubGluZUJveCgpLHM9by50cmFjay5zaXplfHxvLnNpemUsbD1vLnNpemUvMixjPXIub3B0aW9ucy5taXJyb3IsdT1BKG8ubWFyZ2luKSxkPXIub3B0aW9ucy52ZXJ0aWNhbCxwPWQ/dVtjP1wibGVmdFwiOlwicmlnaHRcIl06dVtjP1wiYm90dG9tXCI6XCJ0b3BcIl07cD1jPy1wOnAsZD8odD1uZXcgdyhhLngxK3AsYS55MSxhLngxK3AsYS55MiksYz90LngxLT1zOnQueDIrPXMsby5zaGFwZSE9PVgmJihuPW5ldyB3KGEueDIrcCxhLnkxLWwsYS54MitwLGEueTIrbCksZT1uKSk6KHQ9bmV3IHcoYS54MSxhLnkxLXAsYS54MixhLnkxLXApLGM/dC55Mis9czp0LnkxLT1zLG8uc2hhcGUhPT1YJiYobj1uZXcgdyhhLngxLWwsYS55MS1wLGEueDIrbCxhLnkxLXApLGU9bikpLGkudHJhY2tCb3g9dCxpLnBvaW50ZXJSYW5nZUJveD1uLGkuYm94PWV8fHQuY2xvbmUoKS5wYWQoby5ib3JkZXIud2lkdGgpfSxnZXRFbGVtZW50T3B0aW9uczpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucztyZXR1cm57ZmlsbDp7Y29sb3I6ZS5jb2xvcixvcGFjaXR5OmUub3BhY2l0eX0sc3Ryb2tlOmIoZS5ib3JkZXIpP3tjb2xvcjplLmJvcmRlci53aWR0aD9lLmJvcmRlci5jb2xvcnx8ZS5jb2xvcjpcIlwiLHdpZHRoOmUuYm9yZGVyLndpZHRoLGRhc2hUeXBlOmUuYm9yZGVyLmRhc2hUeXBlLG9wYWNpdHk6ZS5vcGFjaXR5fTpudWxsfX0sX21hcmdpbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1lLm9wdGlvbnMsdD1lLnNjYWxlLGk9dC5vcHRpb25zLm1pcnJvcixvPUEobi5tYXJnaW4pLHI9dC5vcHRpb25zLnZlcnRpY2FsLGE9cj9vW2k/XCJsZWZ0XCI6XCJyaWdodFwiXTpvW2k/XCJib3R0b21cIjpcInRvcFwiXTtyZXR1cm4gYX19KSxkZT11ZS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXt1ZS5mbi5pbml0LmNhbGwodGhpcyxlLHQpLHRoaXMub3B0aW9ucy5zaXplPT09biYmKHRoaXMub3B0aW9ucy5zaXplPS42KnRoaXMuc2NhbGUub3B0aW9ucy5tYWpvclRpY2tzLnNpemUpfSxwb2ludGVyU2hhcGU6ZnVuY3Rpb24oKXt2YXIgZSxuLHQ9dGhpcyxpPXQub3B0aW9ucyxvPXQuc2NhbGUscj1pLnNpemUsYT1vLm9wdGlvbnMudmVydGljYWwscz1yLzIsbD1vLm9wdGlvbnMubWlycm9yPy0xOjEsYz1vLm9wdGlvbnMucmV2ZXJzZTtyZXR1cm4gYT8oZT1jP1wieTJcIjpcInkxXCIsbj1bbmV3IFMoMCwwLXMpLG5ldyBTKDAtbCpyLDApLG5ldyBTKDAsMCtzKV0pOihlPWM/XCJ4MVwiOlwieDJcIixuPVtuZXcgUygwLXMsMCksbmV3IFMoMCwwK2wqciksbmV3IFMoMCtzLDApXSksbn0scmVwYWludDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1lLnNjYWxlLHQ9ZS5vcHRpb25zLGk9bmV3IGEoZS5lbGVtZW50cyxwKHQuYW5pbWF0aW9uLHt2ZXJ0aWNhbDpuLm9wdGlvbnMudmVydGljYWwsbWlycm9yOm4ub3B0aW9ucy5taXJyb3IsbWFyZ2luOmUuX21hcmdpbih0Lm1hcmdpbiksZnJvbTpuLmdldFNsb3QodC5fb2xkVmFsdWUpLHRvOm4uZ2V0U2xvdCh0LnZhbHVlKX0pKTt0LmFuaW1hdGlvbi50cmFuc2l0aW9ucz09PSExJiYoaS5vcHRpb25zLmR1cmF0aW9uPTApLGkuc2V0dXAoKSxpLnBsYXkoKX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzLHQ9bi5vcHRpb25zLGk9bmV3IFIsbz1uLnNjYWxlLHI9bi5nZXRFbGVtZW50T3B0aW9ucygpLGE9bi5wb2ludGVyU2hhcGUodC52YWx1ZSk7cmV0dXJuIHQuYW5pbWF0aW9uLnR5cGU9TCxpPW5ldyBqKHtzdHJva2U6ci5zdHJva2UsZmlsbDpyLmZpbGx9KS5tb3ZlVG8oYVswXSkubGluZVRvKGFbMV0pLmxpbmVUbyhhWzJdKS5jbG9zZSgpLGU9by5nZXRTbG90KHQudmFsdWUpLGkudHJhbnNmb3JtKFQudHJhbnNmb3JtKCkudHJhbnNsYXRlKGUueDEsZS55MSkpLG4uZWxlbWVudHM9aSxpfX0pLHBlPXVlLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLHQpe3VlLmZuLmluaXQuY2FsbCh0aGlzLGUsdCksdGhpcy5vcHRpb25zLnNpemU9PT1uJiYodGhpcy5vcHRpb25zLnNpemU9LjMqdGhpcy5zY2FsZS5vcHRpb25zLm1ham9yVGlja3Muc2l6ZSl9LHBvaW50ZXJTaGFwZTpmdW5jdGlvbihlKXt2YXIgbix0LGksbz10aGlzLHI9by5vcHRpb25zLGE9by5zY2FsZSxzPWEub3B0aW9ucy52ZXJ0aWNhbCxsPWEub3B0aW9ucy5taXJyb3IsYz1sPT1zPy0xOjEsdT1yLnNpemUqYyxkPWEuZ2V0U2xvdChhLm9wdGlvbnMubWluKSxwPWEuZ2V0U2xvdChlKSxoPXM/dGU6bmUsZj1zP25lOnRlLGc9by5fbWFyZ2luKCkqYyxtPW5ldyBTO3JldHVybiBtW2hdPWRbaCtcIjFcIl0sbVtmXT1kW2YrXCIxXCJdLG49bmV3IFMsbltoXT1wW2grXCIxXCJdLG5bZl09cFtmK1wiMVwiXSxzPyhtLnRyYW5zbGF0ZShnLDApLG4udHJhbnNsYXRlKGcsMCkpOihtLnRyYW5zbGF0ZSgwLGcpLG4udHJhbnNsYXRlKDAsZykpLHQ9bi5jbG9uZSgpLGk9bS5jbG9uZSgpLHM/KHQudHJhbnNsYXRlKHUsMCksaS50cmFuc2xhdGUodSwwKSk6KHQudHJhbnNsYXRlKDAsdSksaS50cmFuc2xhdGUoMCx1KSksW20sbix0LGldfSxyZXBhaW50OmZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzLHQ9bi5zY2FsZSxpPW4ub3B0aW9ucyxvPW4ucG9pbnRlclNoYXBlKGkudmFsdWUpLHI9bi5lbGVtZW50cy5jaGlsZHJlblswXSxhPW4ucG9pbnRlclNoYXBlKGkuX29sZFZhbHVlKTtyLm1vdmVUbyhvWzBdKS5saW5lVG8ob1sxXSkubGluZVRvKG9bMl0pLmxpbmVUbyhvWzNdKS5jbG9zZSgpLGU9bmV3IHMocixwKGkuYW5pbWF0aW9uLHtyZXZlcnNlOnQub3B0aW9ucy5yZXZlcnNlLHZlcnRpY2FsOnQub3B0aW9ucy52ZXJ0aWNhbCxvbGRQb2ludHM6W2FbMV0sYVsyXV0sbmV3UG9pbnRzOltvWzFdLG9bMl1dfSkpLGkuYW5pbWF0aW9uLnRyYW5zaXRpb25zPT09ITEmJihlLm9wdGlvbnMuZHVyYXRpb249MCksZS5zZXR1cCgpLGUucGxheSgpfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49bmV3IFIsdD1lLmdldEVsZW1lbnRPcHRpb25zKCksaT1uZXcgaih7c3Ryb2tlOnQuc3Ryb2tlLGZpbGw6dC5maWxsfSk7cmV0dXJuIG4uYXBwZW5kKGkpLGUuZWxlbWVudHM9bixufX0pLGhlPXouQW5pbWF0aW9uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLG4pe3ouQW5pbWF0aW9uLmZuLmluaXQuY2FsbCh0aGlzLGUsbiksbj10aGlzLm9wdGlvbnMsbi5kdXJhdGlvbj1sLm1heChsLmFicyhuLm5ld0FuZ2xlLW4ub2xkQW5nbGUpL24uZHVyYXRpb24qMWUzLDEpfSxvcHRpb25zOntlYXNpbmc6cSxkdXJhdGlvbjpVfSxzdGVwOmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMsdD1uLm9wdGlvbnMsaT1rKHQub2xkQW5nbGUsdC5uZXdBbmdsZSxlKTtuLmVsZW1lbnQudHJhbnNmb3JtKFQudHJhbnNmb3JtKCkucm90YXRlKGksdC5jZW50ZXIpKX19KTt6LkFuaW1hdGlvbkZhY3RvcnkuY3VycmVudC5yZWdpc3RlcihlZSxoZSksYT16LkFuaW1hdGlvbi5leHRlbmQoe29wdGlvbnM6e2Vhc2luZzpxLGR1cmF0aW9uOlB9LHNldHVwOmZ1bmN0aW9uKCl7dmFyIGUsbix0PXRoaXMub3B0aW9ucyxpPXQubWFyZ2luLG89dC5mcm9tLHI9dC50byxhPXQudmVydGljYWw/XCJ4MVwiOlwieTFcIjt0Lm1pcnJvcj09dC52ZXJ0aWNhbD8ob1thXS09aSxyW2FdLT1pKToob1thXSs9aSxyW2FdKz1pKSxlPXRoaXMuZnJvbVNjYWxlPW5ldyBTKG8ueDEsby55MSksbj10aGlzLnRvU2NhbGU9bmV3IFMoci54MSxyLnkxKSwwIT09dC5kdXJhdGlvbiYmKHQuZHVyYXRpb249bC5tYXgoZS5kaXN0YW5jZVRvKG4pL3QuZHVyYXRpb24qMWUzLDEpKX0sc3RlcDpmdW5jdGlvbihlKXt2YXIgbj1rKHRoaXMuZnJvbVNjYWxlLngsdGhpcy50b1NjYWxlLngsZSksdD1rKHRoaXMuZnJvbVNjYWxlLnksdGhpcy50b1NjYWxlLnksZSk7dGhpcy5lbGVtZW50LnRyYW5zZm9ybShULnRyYW5zZm9ybSgpLnRyYW5zbGF0ZShuLHQpKX19KSx6LkFuaW1hdGlvbkZhY3RvcnkuY3VycmVudC5yZWdpc3RlcihMLGEpLHM9ei5BbmltYXRpb24uZXh0ZW5kKHtvcHRpb25zOntlYXNpbmc6cSxzcGVlZDpQfSxzZXR1cDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucyxuPWUubmV3UG9pbnRzLHQ9ZS5vbGRQb2ludHMsaT10aGlzLmF4aXM9ZS52ZXJ0aWNhbD90ZTpuZSxvPXRoaXMudG89blswXVtpXSxyPXRoaXMuZnJvbT10WzBdW2ldOzAhPT1lLmR1cmF0aW9uJiYoZS5kdXJhdGlvbj1sLm1heChsLmFicyhvLXIpL2Uuc3BlZWQqMWUzLDEpKSx0aGlzLl9zZXQocil9LHN0ZXA6ZnVuY3Rpb24oZSl7dmFyIG49ayh0aGlzLmZyb20sdGhpcy50byxlKTt0aGlzLl9zZXQobil9LF9zZXQ6ZnVuY3Rpb24oZSl7dmFyIG49XCJzZXRcIit0aGlzLmF4aXMudG9VcHBlckNhc2UoKSx0PXRoaXMub3B0aW9ucy5uZXdQb2ludHM7dFswXVtuXShlKSx0WzFdW25dKGUpfX0pLHouQW5pbWF0aW9uRmFjdG9yeS5jdXJyZW50LnJlZ2lzdGVyKFgscyksaC51aS5wbHVnaW4oc2UpLGgudWkucGx1Z2luKGxlKSxoLkV4cG9ydE1peGluLmV4dGVuZChhZS5mbikscChoLHtHYXVnZTphZSxSYWRpYWxQb2ludGVyOm9lLExpbmVhclBvaW50ZXI6dWUsQXJyb3dMaW5lYXJQb2ludGVyOmRlLEJhckxpbmVhclBvaW50ZXI6cGUsTGluZWFyU2NhbGU6Y2UsUmFkaWFsU2NhbGU6cmUsTGluZWFyR2F1Z2U6bGUsUmFkaWFsR2F1Z2U6c2V9KX0od2luZG93LmtlbmRvLmpRdWVyeSksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsbix0KXsodHx8bikoKX0pOzshZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcImtlbmRvLnRvb2x0aXAubWluXCIsW1wia2VuZG8uY29yZS5taW5cIixcImtlbmRvLnBvcHVwLm1pblwiXSx0KX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxvKXtmdW5jdGlvbiBlKHQpe2Zvcig7dC5sZW5ndGg7KW4odCksdD10LnBhcmVudCgpfWZ1bmN0aW9uIG4odCl7dmFyIG89dC5kYXRhKHMubnMrXCJ0aXRsZVwiKTtvJiYodC5hdHRyKFwidGl0bGVcIixvKSx0LnJlbW92ZURhdGEocy5ucytcInRpdGxlXCIpKX1mdW5jdGlvbiBpKHQpe3ZhciBvPXQuYXR0cihcInRpdGxlXCIpO28mJih0LmRhdGEocy5ucytcInRpdGxlXCIsbyksdC5hdHRyKFwidGl0bGVcIixcIlwiKSl9ZnVuY3Rpb24gcih0KXtmb3IoO3QubGVuZ3RoJiYhdC5pcyhcImJvZHlcIik7KWkodCksdD10LnBhcmVudCgpfXZhciBzPXdpbmRvdy5rZW5kbyxhPXMudWkuV2lkZ2V0LGw9cy51aS5Qb3B1cCxjPXMuaXNGdW5jdGlvbix1PXQuaXNQbGFpbk9iamVjdCxwPXQuZXh0ZW5kLGY9dC5wcm94eSxkPXQoZG9jdW1lbnQpLGg9cy5pc0xvY2FsVXJsLG09XCJfdHRfYWN0aXZlXCIsZz1cImFyaWEtZGVzY3JpYmVkYnlcIix3PVwic2hvd1wiLHY9XCJoaWRlXCIsaz1cImVycm9yXCIsXz1cImNvbnRlbnRMb2FkXCIseT1cInJlcXVlc3RTdGFydFwiLGI9XCJrLWNvbnRlbnQtZnJhbWVcIixIPSc8ZGl2IHJvbGU9XCJ0b29sdGlwXCIgY2xhc3M9XCJrLXdpZGdldCBrLXRvb2x0aXAjaWYgKCFhdXRvSGlkZSkgeyMgay10b29sdGlwLWNsb3NhYmxlI30jXCI+I2lmICghYXV0b0hpZGUpIHsjIDxkaXYgY2xhc3M9XCJrLXRvb2x0aXAtYnV0dG9uXCI+PGEgaHJlZj1cIlxcXFwjXCIgY2xhc3M9XCJrLWljb24gay1pLWNsb3NlXCI+Y2xvc2U8L2E+PC9kaXY+ICN9IzxkaXYgY2xhc3M9XCJrLXRvb2x0aXAtY29udGVudFwiPjwvZGl2PiNpZiAoY2FsbG91dCl7ICM8ZGl2IGNsYXNzPVwiay1jYWxsb3V0IGstY2FsbG91dC0jPWRpciNcIj48L2Rpdj4jfSM8L2Rpdj4nLFQ9cy50ZW1wbGF0ZShcIjxpZnJhbWUgZnJhbWVib3JkZXI9JzAnIGNsYXNzPSdcIitiK1wiJyBzcmM9JyM9IGNvbnRlbnQudXJsICMnPlRoaXMgcGFnZSByZXF1aXJlcyBmcmFtZXMgaW4gb3JkZXIgdG8gc2hvdyBjb250ZW50PC9pZnJhbWU+XCIpLEM9XCIua2VuZG9Ub29sdGlwXCIsRD17Ym90dG9tOntvcmlnaW46XCJib3R0b20gY2VudGVyXCIscG9zaXRpb246XCJ0b3AgY2VudGVyXCJ9LHRvcDp7b3JpZ2luOlwidG9wIGNlbnRlclwiLHBvc2l0aW9uOlwiYm90dG9tIGNlbnRlclwifSxsZWZ0OntvcmlnaW46XCJjZW50ZXIgbGVmdFwiLHBvc2l0aW9uOlwiY2VudGVyIHJpZ2h0XCIsY29sbGlzaW9uOlwiZml0IGZsaXBcIn0scmlnaHQ6e29yaWdpbjpcImNlbnRlciByaWdodFwiLHBvc2l0aW9uOlwiY2VudGVyIGxlZnRcIixjb2xsaXNpb246XCJmaXQgZmxpcFwifSxjZW50ZXI6e3Bvc2l0aW9uOlwiY2VudGVyIGNlbnRlclwiLG9yaWdpbjpcImNlbnRlciBjZW50ZXJcIn19LHg9e3RvcDpcImJvdHRvbVwiLGJvdHRvbTpcInRvcFwiLGxlZnQ6XCJyaWdodFwiLHJpZ2h0OlwibGVmdFwiLGNlbnRlcjpcImNlbnRlclwifSxPPXtib3R0b206XCJuXCIsdG9wOlwic1wiLGxlZnQ6XCJlXCIscmlnaHQ6XCJ3XCIsY2VudGVyOlwiblwifSxqPXtob3Jpem9udGFsOntvZmZzZXQ6XCJ0b3BcIixzaXplOlwib3V0ZXJIZWlnaHRcIn0sdmVydGljYWw6e29mZnNldDpcImxlZnRcIixzaXplOlwib3V0ZXJXaWR0aFwifX0sQT1mdW5jdGlvbih0KXtyZXR1cm4gdC50YXJnZXQuZGF0YShzLm5zK1widGl0bGVcIil9LEs9YS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxvKXt2YXIgZSxuPXRoaXM7YS5mbi5pbml0LmNhbGwobix0LG8pLGU9bi5vcHRpb25zLnBvc2l0aW9uLm1hdGNoKC9sZWZ0fHJpZ2h0Lyk/XCJob3Jpem9udGFsXCI6XCJ2ZXJ0aWNhbFwiLG4uZGltZW5zaW9ucz1qW2VdLG4uX2RvY3VtZW50S2V5RG93bkhhbmRsZXI9ZihuLl9kb2N1bWVudEtleURvd24sbiksbi5lbGVtZW50Lm9uKG4ub3B0aW9ucy5zaG93T24rQyxuLm9wdGlvbnMuZmlsdGVyLGYobi5fc2hvd09uLG4pKS5vbihcIm1vdXNlZW50ZXJcIitDLG4ub3B0aW9ucy5maWx0ZXIsZihuLl9tb3VzZWVudGVyLG4pKSx0aGlzLm9wdGlvbnMuYXV0b0hpZGUmJm4uZWxlbWVudC5vbihcIm1vdXNlbGVhdmVcIitDLG4ub3B0aW9ucy5maWx0ZXIsZihuLl9tb3VzZWxlYXZlLG4pKX0sb3B0aW9uczp7bmFtZTpcIlRvb2x0aXBcIixmaWx0ZXI6XCJcIixjb250ZW50OkEsc2hvd0FmdGVyOjEwMCxjYWxsb3V0OiEwLHBvc2l0aW9uOlwiYm90dG9tXCIsc2hvd09uOlwibW91c2VlbnRlclwiLGF1dG9IaWRlOiEwLHdpZHRoOm51bGwsaGVpZ2h0Om51bGwsYW5pbWF0aW9uOntvcGVuOntlZmZlY3RzOlwiZmFkZTppblwiLGR1cmF0aW9uOjB9LGNsb3NlOntlZmZlY3RzOlwiZmFkZTpvdXRcIixkdXJhdGlvbjo0MCxoaWRlOiEwfX19LGV2ZW50czpbdyx2LF8sayx5XSxfbW91c2VlbnRlcjpmdW5jdGlvbihvKXtyKHQoby5jdXJyZW50VGFyZ2V0KSl9LF9zaG93T246ZnVuY3Rpb24obyl7dmFyIGU9dGhpcyxuPXQoby5jdXJyZW50VGFyZ2V0KTtlLm9wdGlvbnMuc2hvd09uJiZlLm9wdGlvbnMuc2hvd09uLm1hdGNoKC9jbGlja3xmb2N1cy8pP2UuX3Nob3cobik6KGNsZWFyVGltZW91dChlLnRpbWVvdXQpLGUudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5fc2hvdyhuKX0sZS5vcHRpb25zLnNob3dBZnRlcikpfSxfYXBwZW5kQ29udGVudDpmdW5jdGlvbih0KXt2YXIgbyxlPXRoaXMsbj1lLm9wdGlvbnMuY29udGVudCxpPWUuY29udGVudCxyPWUub3B0aW9ucy5pZnJhbWU7dShuKSYmbi51cmw/KFwiaWZyYW1lXCJpbiBlLm9wdGlvbnN8fChyPSFoKG4udXJsKSksZS50cmlnZ2VyKHkse29wdGlvbnM6bix0YXJnZXQ6dH0pLHI/KGkuaGlkZSgpLG89aS5maW5kKFwiLlwiK2IpWzBdLG8/by5zcmM9bi51cmx8fG8uc3JjOmkuaHRtbChUKHtjb250ZW50Om59KSksaS5maW5kKFwiLlwiK2IpLm9mZihcImxvYWRcIitDKS5vbihcImxvYWRcIitDLGZ1bmN0aW9uKCl7ZS50cmlnZ2VyKF8pLGkuc2hvdygpfSkpOihpLmVtcHR5KCkscy51aS5wcm9ncmVzcyhpLCEwKSxlLl9hamF4UmVxdWVzdChuKSkpOm4mJmMobik/KG49bih7c2VuZGVyOnRoaXMsdGFyZ2V0OnR9KSxpLmh0bWwobnx8XCJcIikpOmkuaHRtbChuKSxlLmFuZ3VsYXIoXCJjb21waWxlXCIsZnVuY3Rpb24oKXtyZXR1cm57ZWxlbWVudHM6aX19KX0sX2FqYXhSZXF1ZXN0OmZ1bmN0aW9uKHQpe3ZhciBvPXRoaXM7alF1ZXJ5LmFqYXgocCh7dHlwZTpcIkdFVFwiLGRhdGFUeXBlOlwiaHRtbFwiLGNhY2hlOiExLGVycm9yOmZ1bmN0aW9uKHQsZSl7cy51aS5wcm9ncmVzcyhvLmNvbnRlbnQsITEpLG8udHJpZ2dlcihrLHtzdGF0dXM6ZSx4aHI6dH0pfSxzdWNjZXNzOmYoZnVuY3Rpb24odCl7cy51aS5wcm9ncmVzcyhvLmNvbnRlbnQsITEpLG8uY29udGVudC5odG1sKHQpLG8udHJpZ2dlcihfKX0sbyl9LHQpKX0sX2RvY3VtZW50S2V5RG93bjpmdW5jdGlvbih0KXt0LmtleUNvZGU9PT1zLmtleXMuRVNDJiZ0aGlzLmhpZGUoKX0scmVmcmVzaDpmdW5jdGlvbigpe3ZhciB0PXRoaXMsbz10LnBvcHVwO28mJm8ub3B0aW9ucy5hbmNob3ImJnQuX2FwcGVuZENvbnRlbnQoby5vcHRpb25zLmFuY2hvcil9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLnBvcHVwJiZ0aGlzLnBvcHVwLmNsb3NlKCl9LHNob3c6ZnVuY3Rpb24odCl7dD10fHx0aGlzLmVsZW1lbnQscih0KSx0aGlzLl9zaG93KHQpfSxfc2hvdzpmdW5jdGlvbih0KXt2YXIgbz10aGlzLG49by50YXJnZXQoKTtvLnBvcHVwfHxvLl9pbml0UG9wdXAoKSxuJiZuWzBdIT10WzBdJiYoby5wb3B1cC5jbG9zZSgpLG8ucG9wdXAuZWxlbWVudC5rZW5kb1N0b3AoITAsITApKSxuJiZuWzBdPT10WzBdfHwoby5fYXBwZW5kQ29udGVudCh0KSxvLnBvcHVwLm9wdGlvbnMuYW5jaG9yPXQpLG8ucG9wdXAub25lKFwiZGVhY3RpdmF0ZVwiLGZ1bmN0aW9uKCl7ZSh0KSx0LnJlbW92ZUF0dHIoZyksdGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoXCJpZFwiKS5hdHRyKFwiYXJpYS1oaWRkZW5cIiwhMCksZC5vZmYoXCJrZXlkb3duXCIrQyxvLl9kb2N1bWVudEtleURvd25IYW5kbGVyKX0pLG8ucG9wdXAub3BlbigpfSxfaW5pdFBvcHVwOmZ1bmN0aW9uKCl7dmFyIG89dGhpcyxlPW8ub3B0aW9ucyxuPXQocy50ZW1wbGF0ZShIKSh7Y2FsbG91dDplLmNhbGxvdXQmJlwiY2VudGVyXCIhPT1lLnBvc2l0aW9uLGRpcjpPW2UucG9zaXRpb25dLGF1dG9IaWRlOmUuYXV0b0hpZGV9KSk7by5wb3B1cD1uZXcgbChuLHAoe2FjdGl2YXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLmFuY2hvcixuPXRbMF0uaWR8fG8uZWxlbWVudFswXS5pZDtuJiYodC5hdHRyKGcsbittKSx0aGlzLmVsZW1lbnQuYXR0cihcImlkXCIsbittKSksZS5jYWxsb3V0JiZvLl9wb3NpdGlvbkNhbGxvdXQoKSx0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cihcImFyaWEtaGlkZGVuXCIpLGQub24oXCJrZXlkb3duXCIrQyxvLl9kb2N1bWVudEtleURvd25IYW5kbGVyKSxvLnRyaWdnZXIodyl9LGNsb3NlOmZ1bmN0aW9uKCl7by50cmlnZ2VyKHYpfSxjb3B5QW5jaG9yU3R5bGVzOiExLGFuaW1hdGlvbjplLmFuaW1hdGlvbn0sRFtlLnBvc2l0aW9uXSkpLG4uY3NzKHt3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH0pLG8uY29udGVudD1uLmZpbmQoXCIuay10b29sdGlwLWNvbnRlbnRcIiksby5hcnJvdz1uLmZpbmQoXCIuay1jYWxsb3V0XCIpLGUuYXV0b0hpZGU/bi5vbihcIm1vdXNlbGVhdmVcIitDLGYoby5fbW91c2VsZWF2ZSxvKSk6bi5vbihcImNsaWNrXCIrQyxcIi5rLXRvb2x0aXAtYnV0dG9uXCIsZihvLl9jbG9zZUJ1dHRvbkNsaWNrLG8pKX0sX2Nsb3NlQnV0dG9uQ2xpY2s6ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaGlkZSgpfSxfbW91c2VsZWF2ZTpmdW5jdGlvbihvKXtpZih0aGlzLnBvcHVwKXt2YXIgbj10KG8uY3VycmVudFRhcmdldCksaT1uLm9mZnNldCgpLHI9by5wYWdlWCxhPW8ucGFnZVk7aWYoaS5yaWdodD1pLmxlZnQrcy5fb3V0ZXJXaWR0aChuKSxpLmJvdHRvbT1pLnRvcCtzLl9vdXRlckhlaWdodChuKSxyPmkubGVmdCYmcjxpLnJpZ2h0JiZhPmkudG9wJiZhPGkuYm90dG9tKXJldHVybjt0aGlzLnBvcHVwLmNsb3NlKCl9ZWxzZSBlKHQoby5jdXJyZW50VGFyZ2V0KSk7Y2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCl9LF9wb3NpdGlvbkNhbGxvdXQ6ZnVuY3Rpb24oKXt2YXIgbz10aGlzLGU9by5vcHRpb25zLnBvc2l0aW9uLG49by5kaW1lbnNpb25zLGk9bi5vZmZzZXQscj1vLnBvcHVwLHM9ci5vcHRpb25zLmFuY2hvcixhPXQocykub2Zmc2V0KCksbD1wYXJzZUludChvLmFycm93LmNzcyhcImJvcmRlci10b3Atd2lkdGhcIiksMTApLGM9dChyLmVsZW1lbnQpLm9mZnNldCgpLHU9T1tyLmZsaXBwZWQ/eFtlXTplXSxwPWFbaV0tY1tpXSt0KHMpW24uc2l6ZV0oKS8yLWw7by5hcnJvdy5yZW1vdmVDbGFzcyhcImstY2FsbG91dC1uIGstY2FsbG91dC1zIGstY2FsbG91dC13IGstY2FsbG91dC1lXCIpLmFkZENsYXNzKFwiay1jYWxsb3V0LVwiK3UpLmNzcyhpLHApfSx0YXJnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3B1cD90aGlzLnBvcHVwLm9wdGlvbnMuYW5jaG9yOm51bGx9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBvcHVwO3QmJih0LmVsZW1lbnQub2ZmKEMpLHQuZGVzdHJveSgpKSxjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KSx0aGlzLmVsZW1lbnQub2ZmKEMpLGQub2ZmKFwia2V5ZG93blwiK0MsdGhpcy5fZG9jdW1lbnRLZXlEb3duSGFuZGxlciksYS5mbi5kZXN0cm95LmNhbGwodGhpcyl9fSk7cy51aS5wbHVnaW4oSyl9KHdpbmRvdy5rZW5kby5qUXVlcnkpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LG8sZSl7KGV8fG8pKCl9KTs7IWZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJ1dGlsL21haW4ubWluXCIsW1wia2VuZG8uY29yZS5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtyZXR1cm4gdHlwZW9mIHQhPT1SfWZ1bmN0aW9uIGUodCxlKXt2YXIgbj1pKGUpO3JldHVybiBOLnJvdW5kKHQqbikvbn1mdW5jdGlvbiBpKHQpe3JldHVybiB0P04ucG93KDEwLHQpOjF9ZnVuY3Rpb24gbih0LGUsaSl7cmV0dXJuIE4ubWF4KE4ubWluKHQsaSksZSl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCpqfWZ1bmN0aW9uIGEodCl7cmV0dXJuIHQvan1mdW5jdGlvbiByKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0JiYhaXNOYU4odCl9ZnVuY3Rpb24gcyhlLGkpe3JldHVybiB0KGUpP2U6aX1mdW5jdGlvbiBoKHQpe3JldHVybiB0KnR9ZnVuY3Rpb24gbCh0KXt2YXIgZSxpPVtdO2ZvcihlIGluIHQpaS5wdXNoKGUrdFtlXSk7cmV0dXJuIGkuc29ydCgpLmpvaW4oXCJcIil9ZnVuY3Rpb24gYyh0KXt2YXIgZSxpPTIxNjYxMzYyNjE7Zm9yKGU9MDtlPHQubGVuZ3RoOysrZSlpKz0oaTw8MSkrKGk8PDQpKyhpPDw3KSsoaTw8OCkrKGk8PDI0KSxpXj10LmNoYXJDb2RlQXQoZSk7cmV0dXJuIGk+Pj4wfWZ1bmN0aW9uIHUodCl7cmV0dXJuIGMobCh0KSl9ZnVuY3Rpb24gZCh0KXt2YXIgZSxpPXQubGVuZ3RoLG49RCxvPVY7Zm9yKGU9MDtlPGk7ZSsrKW89Ti5tYXgobyx0W2VdKSxuPU4ubWluKG4sdFtlXSk7cmV0dXJue21pbjpuLG1heDpvfX1mdW5jdGlvbiBmKHQpe3JldHVybiBkKHQpLm1pbn1mdW5jdGlvbiBwKHQpe3JldHVybiBkKHQpLm1heH1mdW5jdGlvbiBtKHQpe3JldHVybiB2KHQpLm1pbn1mdW5jdGlvbiBfKHQpe3JldHVybiB2KHQpLm1heH1mdW5jdGlvbiB2KHQpe3ZhciBlLGksbixvPUQsYT1WO2ZvcihlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKW49dFtlXSxudWxsIT09biYmaXNGaW5pdGUobikmJihvPU4ubWluKG8sbiksYT1OLm1heChhLG4pKTtyZXR1cm57bWluOm89PT1EP3ZvaWQgMDpvLG1heDphPT09Vj92b2lkIDA6YX19ZnVuY3Rpb24gZyh0KXtpZih0KXJldHVybiB0W3QubGVuZ3RoLTFdfWZ1bmN0aW9uIHkodCxlKXtyZXR1cm4gdC5wdXNoLmFwcGx5KHQsZSksdH1mdW5jdGlvbiB3KHQpe3JldHVybiBQLnRlbXBsYXRlKHQse3VzZVdpdGhCbG9jazohMSxwYXJhbU5hbWU6XCJkXCJ9KX1mdW5jdGlvbiBiKGUsaSl7cmV0dXJuIHQoaSkmJm51bGwhPT1pP1wiIFwiK2UrXCI9J1wiK2krXCInIFwiOlwiXCJ9ZnVuY3Rpb24geCh0KXt2YXIgZSxpPVwiXCI7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpKz1iKHRbZV1bMF0sdFtlXVsxXSk7cmV0dXJuIGl9ZnVuY3Rpb24gayhlKXt2YXIgaSxuLG89XCJcIjtmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKW49ZVtpXVsxXSx0KG4pJiYobys9ZVtpXVswXStcIjpcIituK1wiO1wiKTtpZihcIlwiIT09bylyZXR1cm4gb31mdW5jdGlvbiB6KHQpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0JiYodCs9XCJweFwiKSx0fWZ1bmN0aW9uIFQodCl7dmFyIGUsaSxuPVtdO2lmKHQpZm9yKGU9UC50b0h5cGhlbnModCkuc3BsaXQoXCItXCIpLGk9MDtpPGUubGVuZ3RoO2krKyluLnB1c2goXCJrLXBvcy1cIitlW2ldKTtyZXR1cm4gbi5qb2luKFwiIFwiKX1mdW5jdGlvbiBTKGUpe3JldHVyblwiXCI9PT1lfHxudWxsPT09ZXx8XCJub25lXCI9PT1lfHxcInRyYW5zcGFyZW50XCI9PT1lfHwhdChlKX1mdW5jdGlvbiBDKHQpe2Zvcih2YXIgZT17MTpcImlcIiwxMDpcInhcIiwxMDA6XCJjXCIsMjpcImlpXCIsMjA6XCJ4eFwiLDIwMDpcImNjXCIsMzpcImlpaVwiLDMwOlwieHh4XCIsMzAwOlwiY2NjXCIsNDpcIml2XCIsNDA6XCJ4bFwiLDQwMDpcImNkXCIsNTpcInZcIiw1MDpcImxcIiw1MDA6XCJkXCIsNjpcInZpXCIsNjA6XCJseFwiLDYwMDpcImRjXCIsNzpcInZpaVwiLDcwOlwibHh4XCIsNzAwOlwiZGNjXCIsODpcInZpaWlcIiw4MDpcImx4eHhcIiw4MDA6XCJkY2NjXCIsOTpcIml4XCIsOTA6XCJ4Y1wiLDkwMDpcImNtXCIsMWUzOlwibVwifSxpPVsxZTMsOTAwLDgwMCw3MDAsNjAwLDUwMCw0MDAsMzAwLDIwMCwxMDAsOTAsODAsNzAsNjAsNTAsNDAsMzAsMjAsMTAsOSw4LDcsNiw1LDQsMywyLDFdLG49XCJcIjt0PjA7KXQ8aVswXT9pLnNoaWZ0KCk6KG4rPWVbaVswXV0sdC09aVswXSk7cmV0dXJuIG59ZnVuY3Rpb24gRSh0KXt2YXIgZSxpLG4sbyxhO2Zvcih0PXQudG9Mb3dlckNhc2UoKSxlPXtpOjEsdjo1LHg6MTAsbDo1MCxjOjEwMCxkOjUwMCxtOjFlM30saT0wLG49MCxvPTA7bzx0Lmxlbmd0aDsrK28pe2lmKGE9ZVt0LmNoYXJBdChvKV0sIWEpcmV0dXJuIG51bGw7aSs9YSxhPm4mJihpLT0yKm4pLG49YX1yZXR1cm4gaX1mdW5jdGlvbiBMKHQpe3ZhciBlPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGksbj1cIlwiO2ZvcihpPWFyZ3VtZW50cy5sZW5ndGg7LS1pPj0wOyluKz1cIjpcIithcmd1bWVudHNbaV07cmV0dXJuIG4gaW4gZT9lW25dOmVbbl09dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIEEodCl7Zm9yKHZhciBlLGksbj1bXSxvPTAsYT10Lmxlbmd0aDtvPGE7KWU9dC5jaGFyQ29kZUF0KG8rKyksZT49NTUyOTYmJmU8PTU2MzE5JiZvPGE/KGk9dC5jaGFyQ29kZUF0KG8rKyksNTYzMjA9PSg2NDUxMiZpKT9uLnB1c2goKCgxMDIzJmUpPDwxMCkrKDEwMjMmaSkrNjU1MzYpOihuLnB1c2goZSksby0tKSk6bi5wdXNoKGUpO3JldHVybiBufWZ1bmN0aW9uIE0odCl7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKHQpe3ZhciBlPVwiXCI7cmV0dXJuIHQ+NjU1MzUmJih0LT02NTUzNixlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQ+Pj4xMCYxMDIzfDU1Mjk2KSx0PTU2MzIwfDEwMjMmdCksZSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KX0pLmpvaW4oXCJcIil9ZnVuY3Rpb24gTyh0LGUpe2Z1bmN0aW9uIGkodCxpKXtmb3IodmFyIG49W10sbz0wLGE9MCxyPTA7bzx0Lmxlbmd0aCYmYTxpLmxlbmd0aDspZSh0W29dLGlbYV0pPD0wP25bcisrXT10W28rK106bltyKytdPWlbYSsrXTtyZXR1cm4gbzx0Lmxlbmd0aCYmbi5wdXNoLmFwcGx5KG4sdC5zbGljZShvKSksYTxpLmxlbmd0aCYmbi5wdXNoLmFwcGx5KG4saS5zbGljZShhKSksbn1yZXR1cm4gdC5sZW5ndGg8Mj90LnNsaWNlKCk6ZnVuY3Rpb24gbih0KXt2YXIgZSxvLGE7cmV0dXJuIHQubGVuZ3RoPD0xP3Q6KGU9TWF0aC5mbG9vcih0Lmxlbmd0aC8yKSxvPXQuc2xpY2UoMCxlKSxhPXQuc2xpY2UoZSksbz1uKG8pLGE9bihhKSxpKG8sYSkpfSh0KX12YXIgTj1NYXRoLFA9d2luZG93LmtlbmRvLEk9UC5kZWVwRXh0ZW5kLGo9Ti5QSS8xODAsRD1OdW1iZXIuTUFYX1ZBTFVFLFY9LU51bWJlci5NQVhfVkFMVUUsUj1cInVuZGVmaW5lZFwiLFo9RGF0ZS5ub3c7Wnx8KFo9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0pLEkoUCx7dXRpbDp7TUFYX05VTTpELE1JTl9OVU06VixhcHBlbmQ6eSxhcnJheUxpbWl0czpkLGFycmF5TWluOmYsYXJyYXlNYXg6cCxkZWZpbmVkOnQsZGVnOmEsaGFzaEtleTpjLGhhc2hPYmplY3Q6dSxpc051bWJlcjpyLGlzVHJhbnNwYXJlbnQ6UyxsYXN0OmcsbGltaXRWYWx1ZTpuLG5vdzpaLG9iamVjdEtleTpsLHJvdW5kOmUscmFkOm8scmVuZGVyQXR0cjpiLHJlbmRlckFsbEF0dHI6eCxyZW5kZXJQb3M6VCxyZW5kZXJTaXplOnoscmVuZGVyU3R5bGU6ayxyZW5kZXJUZW1wbGF0ZTp3LHNwYXJzZUFycmF5TGltaXRzOnYsc3BhcnNlQXJyYXlNaW46bSxzcGFyc2VBcnJheU1heDpfLHNxcjpoLHZhbHVlT3JEZWZhdWx0OnMscm9tYW5Ub0FyYWJpYzpFLGFyYWJpY1RvUm9tYW46QyxtZW1vaXplOkwsdWNzMmVuY29kZTpNLHVjczJkZWNvZGU6QSxtZXJnZVNvcnQ6T319KSxQLmRyYXdpbmcudXRpbD1QLnV0aWwsUC5kYXRhdml6LnV0aWw9UC51dGlsfSgpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsaSl7KGl8fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwidXRpbC90ZXh0LW1ldHJpY3MubWluXCIsW1wia2VuZG8uY29yZS5taW5cIixcInV0aWwvbWFpbi5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MCxiYXNlbGluZTowfX1mdW5jdGlvbiBpKHQsZSxpKXtyZXR1cm4gdS5jdXJyZW50Lm1lYXN1cmUodCxlLGkpfWZ1bmN0aW9uIG4odCxlKXt2YXIgaT1bXTtpZih0Lmxlbmd0aD4wJiZkb2N1bWVudC5mb250cyl7dHJ5e2k9dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmZvbnRzLmxvYWQodCl9KX1jYXRjaChuKXthLmxvZ1RvQ29uc29sZShuKX1Qcm9taXNlLmFsbChpKS50aGVuKGUsZSl9ZWxzZSBlKCl9dmFyIG89ZG9jdW1lbnQsYT13aW5kb3cua2VuZG8scj1hLkNsYXNzLHM9YS51dGlsLGg9cy5kZWZpbmVkLGw9ci5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dGhpcy5fc2l6ZT10LHRoaXMuX2xlbmd0aD0wLHRoaXMuX21hcD17fX0scHV0OmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxuPWkuX21hcCxvPXtrZXk6dCx2YWx1ZTplfTtuW3RdPW8saS5faGVhZD8oaS5fdGFpbC5uZXdlcj1vLG8ub2xkZXI9aS5fdGFpbCxpLl90YWlsPW8pOmkuX2hlYWQ9aS5fdGFpbD1vLGkuX2xlbmd0aD49aS5fc2l6ZT8obltpLl9oZWFkLmtleV09bnVsbCxpLl9oZWFkPWkuX2hlYWQubmV3ZXIsaS5faGVhZC5vbGRlcj1udWxsKTppLl9sZW5ndGgrK30sZ2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT1lLl9tYXBbdF07aWYoaSlyZXR1cm4gaT09PWUuX2hlYWQmJmkhPT1lLl90YWlsJiYoZS5faGVhZD1pLm5ld2VyLGUuX2hlYWQub2xkZXI9bnVsbCksaSE9PWUuX3RhaWwmJihpLm9sZGVyJiYoaS5vbGRlci5uZXdlcj1pLm5ld2VyLGkubmV3ZXIub2xkZXI9aS5vbGRlciksaS5vbGRlcj1lLl90YWlsLGkubmV3ZXI9bnVsbCxlLl90YWlsLm5ld2VyPWksZS5fdGFpbD1pKSxpLnZhbHVlfX0pLGM9dChcIjxkaXYgc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OyB0b3A6IC00MDAwcHggIWltcG9ydGFudDsgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7cGFkZGluZzogMCAhaW1wb3J0YW50OyBtYXJnaW46IDAgIWltcG9ydGFudDsgYm9yZGVyOiAwICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgd2hpdGUtc3BhY2U6IG5vd3JhcCFpbXBvcnRhbnQ7JyAvPlwiKVswXSx1PXIuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMuX2NhY2hlPW5ldyBsKDFlMyksdGhpcy5faW5pdE9wdGlvbnModCl9LG9wdGlvbnM6e2Jhc2VsaW5lTWFya2VyU2l6ZToxfSxtZWFzdXJlOmZ1bmN0aW9uKGksbixhKXt2YXIgcixsLHUsZCxmLHAsbSxfO2lmKCFpKXJldHVybiBlKCk7aWYocj1zLm9iamVjdEtleShuKSxsPXMuaGFzaEtleShpK3IpLHU9dGhpcy5fY2FjaGUuZ2V0KGwpLHUpcmV0dXJuIHU7ZD1lKCksZj1hP2E6YyxwPXRoaXMuX2Jhc2VsaW5lTWFya2VyKCkuY2xvbmVOb2RlKCExKTtmb3IobSBpbiBuKV89blttXSxoKF8pJiYoZi5zdHlsZVttXT1fKTtyZXR1cm4gdChmKS50ZXh0KGkpLGYuYXBwZW5kQ2hpbGQocCksby5ib2R5LmFwcGVuZENoaWxkKGYpLChpK1wiXCIpLmxlbmd0aCYmKGQud2lkdGg9Zi5vZmZzZXRXaWR0aC10aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplLGQuaGVpZ2h0PWYub2Zmc2V0SGVpZ2h0LGQuYmFzZWxpbmU9cC5vZmZzZXRUb3ArdGhpcy5vcHRpb25zLmJhc2VsaW5lTWFya2VyU2l6ZSksZC53aWR0aD4wJiZkLmhlaWdodD4wJiZ0aGlzLl9jYWNoZS5wdXQobCxkKSxmLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZiksZH0sX2Jhc2VsaW5lTWFya2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHQoXCI8ZGl2IGNsYXNzPSdrLWJhc2VsaW5lLW1hcmtlcicgc3R5bGU9J2Rpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO3dpZHRoOiBcIit0aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplK1wicHg7IGhlaWdodDogXCIrdGhpcy5vcHRpb25zLmJhc2VsaW5lTWFya2VyU2l6ZStcInB4O292ZXJmbG93OiBoaWRkZW47JyAvPlwiKVswXX19KTt1LmN1cnJlbnQ9bmV3IHUsYS51dGlsLlRleHRNZXRyaWNzPXUsYS51dGlsLkxSVUNhY2hlPWwsYS51dGlsLmxvYWRGb250cz1uLGEudXRpbC5tZWFzdXJlVGV4dD1pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsaSl7KGl8fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwidXRpbC9iYXNlNjQubWluXCIsW1widXRpbC9tYWluLm1pblwiXSx0KX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBpLG4sbyxyLHMsaCxsLGM9XCJcIix1PTA7Zm9yKHQ9ZSh0KTt1PHQubGVuZ3RoOylpPXQuY2hhckNvZGVBdCh1KyspLG49dC5jaGFyQ29kZUF0KHUrKyksbz10LmNoYXJDb2RlQXQodSsrKSxyPWk+PjIscz0oMyZpKTw8NHxuPj40LGg9KDE1Jm4pPDwyfG8+PjYsbD02MyZvLGlzTmFOKG4pP2g9bD02NDppc05hTihvKSYmKGw9NjQpLGM9YythLmNoYXJBdChyKSthLmNoYXJBdChzKSthLmNoYXJBdChoKSthLmNoYXJBdChsKTtyZXR1cm4gY31mdW5jdGlvbiBlKHQpe3ZhciBlLGksbj1cIlwiO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaT10LmNoYXJDb2RlQXQoZSksaTwxMjg/bis9byhpKTppPDIwNDg/KG4rPW8oMTkyfGk+Pj42KSxuKz1vKDEyOHw2MyZpKSk6aTw2NTUzNiYmKG4rPW8oMjI0fGk+Pj4xMiksbis9bygxMjh8aT4+PjYmNjMpLG4rPW8oMTI4fDYzJmkpKTtyZXR1cm4gbn12YXIgaT13aW5kb3cua2VuZG8sbj1pLmRlZXBFeHRlbmQsbz1TdHJpbmcuZnJvbUNoYXJDb2RlLGE9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVwiO24oaS51dGlsLHtlbmNvZGVCYXNlNjQ6dCxlbmNvZGVVVEY4OmV9KX0oKSx3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlLGkpeyhpfHxlKSgpfSksZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcIm1peGlucy9vYnNlcnZlcnMubWluXCIsW1wia2VuZG8uY29yZS5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgsaT13aW5kb3cua2VuZG8sbj1pLmRlZXBFeHRlbmQsbz10LmluQXJyYXksYT17b2JzZXJ2ZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29ic2VydmVycz10aGlzLl9vYnNlcnZlcnN8fFtdfSxhZGRPYnNlcnZlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb2JzZXJ2ZXJzP3RoaXMuX29ic2VydmVycy5wdXNoKHQpOnRoaXMuX29ic2VydmVycz1bdF0sdGhpc30scmVtb3ZlT2JzZXJ2ZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vYnNlcnZlcnMoKSxpPW8odCxlKTtyZXR1cm4gaSE9LTEmJmUuc3BsaWNlKGksMSksdGhpc30sdHJpZ2dlcjpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbz10aGlzLl9vYnNlcnZlcnM7aWYobyYmIXRoaXMuX3N1c3BlbmRlZClmb3Iobj0wO248by5sZW5ndGg7bisrKWk9b1tuXSxpW3RdJiZpW3RdKGUpO3JldHVybiB0aGlzfSxvcHRpb25zQ2hhbmdlOmZ1bmN0aW9uKHQpe3Q9dHx8e30sdC5lbGVtZW50PXRoaXMsdGhpcy50cmlnZ2VyKFwib3B0aW9uc0NoYW5nZVwiLHQpfSxnZW9tZXRyeUNoYW5nZTpmdW5jdGlvbigpe3RoaXMudHJpZ2dlcihcImdlb21ldHJ5Q2hhbmdlXCIse2VsZW1lbnQ6dGhpc30pfSxzdXNwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N1c3BlbmRlZD0odGhpcy5fc3VzcGVuZGVkfHwwKSsxLHRoaXN9LHJlc3VtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdXNwZW5kZWQ9ZS5tYXgoKHRoaXMuX3N1c3BlbmRlZHx8MCktMSwwKSx0aGlzfSxfb2JzZXJ2ZXJGaWVsZDpmdW5jdGlvbih0LGUpe3RoaXNbdF0mJnRoaXNbdF0ucmVtb3ZlT2JzZXJ2ZXIodGhpcyksdGhpc1t0XT1lLGUuYWRkT2JzZXJ2ZXIodGhpcyl9fTtuKGkse21peGluczp7T2JzZXJ2ZXJzTWl4aW46YX19KX0od2luZG93LmtlbmRvLmpRdWVyeSksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKHQsZSxpKXsoaXx8ZSkoKX0pLGZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJkYXRhdml6L21hcC9sb2NhdGlvbi5taW5cIixbXCJrZW5kby5kcmF3aW5nLm1pblwiXSx0KX0oZnVuY3Rpb24oKXshZnVuY3Rpb24odCxlKXt2YXIgaSxuPU1hdGgsbz1uLmFicyxhPW4uYXRhbixyPW4uYXRhbjIscz1uLmNvcyxoPW4ubWF4LGw9bi5taW4sYz1uLnNpbix1PW4udGFuLGQ9d2luZG93LmtlbmRvLGY9ZC5DbGFzcyxwPWQuZGF0YXZpeixtPWQuZGVlcEV4dGVuZCxfPWQudXRpbCx2PV8uZGVmaW5lZCxnPV8uZGVnLHk9Xy5yYWQsdz1fLnJvdW5kLGI9Xy5zcXIseD1fLnZhbHVlT3JEZWZhdWx0LGs9Zi5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXsxPT09YXJndW1lbnRzLmxlbmd0aD8odGhpcy5sYXQ9dFswXSx0aGlzLmxuZz10WzFdKToodGhpcy5sYXQ9dCx0aGlzLmxuZz1lKX0sRElTVEFOQ0VfSVRFUkFUSU9OUzoxMDAsRElTVEFOQ0VfQ09OVkVSR0VOQ0U6MWUtMTIsRElTVEFOQ0VfUFJFQ0lTSU9OOjIsRk9STUFUOlwiezA6TjZ9LHsxOk42fVwiLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bdGhpcy5sYXQsdGhpcy5sbmddfSxlcXVhbHM6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQubGF0PT09dGhpcy5sYXQmJnQubG5nPT09dGhpcy5sbmd9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBrKHRoaXMubGF0LHRoaXMubG5nKX0scm91bmQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubG5nPXcodGhpcy5sbmcsdCksdGhpcy5sYXQ9dyh0aGlzLmxhdCx0KSx0aGlzfSx3cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG5nPXRoaXMubG5nJTE4MCx0aGlzLmxhdD10aGlzLmxhdCU5MCx0aGlzfSxkaXN0YW5jZVRvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZ3JlYXRDaXJjbGVUbyh0LGUpLmRpc3RhbmNlfSxkZXN0aW5hdGlvbjpmdW5jdGlvbih0LGUsaSl7dmFyIG8sYSxoLGwsdTtyZXR1cm4gZT15KGUpLGk9aXx8cC5tYXAuZGF0dW1zLldHUzg0LG89eSh0aGlzLmxhdCksYT15KHRoaXMubG5nKSxoPXQvZC5kYXRhdml6Lm1hcC5kYXR1bXMuV0dTODQuYSxsPW4uYXNpbihjKG8pKnMoaCkrcyhvKSpjKGgpKnMoZSkpLHU9YStyKGMoZSkqYyhoKSpzKG8pLHMoaCktYyhvKSpjKGwpKSxuZXcgayhnKGwpLGcodSkpfSxncmVhdENpcmNsZVRvOmZ1bmN0aW9uKHQsZSl7dmFyIGksaCxsLGQsZixtLF8sdix4LHosVCxTLEMsRSxMLEEsTSxPLE4sUCxJLGosRCxWLFIsWixGLFUsRztpZih0PWsuY3JlYXRlKHQpLGU9ZXx8cC5tYXAuZGF0dW1zLldHUzg0LCF0fHx0aGlzLmNsb25lKCkucm91bmQoOCkuZXF1YWxzKHQuY2xvbmUoKS5yb3VuZCg4KSkpcmV0dXJue2Rpc3RhbmNlOjAsYXppbXV0aEZyb206MCxhemltdXRoVG86MH07Zm9yKGk9ZS5hLGg9ZS5iLGw9ZS5mLGQ9eSh0LmxuZy10aGlzLmxuZyksZj1hKCgxLWwpKnUoeSh0aGlzLmxhdCkpKSxtPWMoZiksXz1zKGYpLHY9YSgoMS1sKSp1KHkodC5sYXQpKSkseD1jKHYpLHo9cyh2KSxUPWQsQz10aGlzLkRJU1RBTkNFX0lURVJBVElPTlMsRT0hMTshRSYmQy0tID4wOylMPWMoVCksQT1zKFQpLE09bi5zcXJ0KGIoeipMKStiKF8qeC1tKnoqQSkpLE49bSp4K18qeipBLEk9cihNLE4pLGo9Xyp6KkwvTSxPPTEtYihqKSxQPTAsMCE9PU8mJihQPU4tMiptKngvTyksUz1ULEQ9bC8xNipPKig0K2wqKDQtMypPKSksVD1kKygxLUQpKmwqaiooSStEKk0qKFArRCpOKigtMSsyKmIoUCkpKSksRT1vKFQtUyk8PXRoaXMuRElTVEFOQ0VfQ09OVkVSR0VOQ0U7cmV0dXJuIFY9TyooYihpKS1iKGgpKS9iKGgpLFI9MStWLzE2Mzg0Kig0MDk2K1YqKC03NjgrViooMzIwLTE3NSpWKSkpLFo9Vi8xMDI0KigyNTYrViooLTEyOCtWKig3NC00NypWKSkpLEY9WipNKihQK1ovNCooTiooLTErMipiKFApKS1aLzYqUCooLTMrNCpiKE0pKSooLTMrNCpiKFApKSkpLFU9cih6KkwsXyp4LW0qeipBKSxHPXIoXypMLC1tKnorXyp4KkEpLHtkaXN0YW5jZTp3KGgqUiooSS1GKSx0aGlzLkRJU1RBTkNFX1BSRUNJU0lPTiksYXppbXV0aEZyb206ZyhVKSxhemltdXRoVG86ZyhHKX19fSk7ay5mbi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBkLmZvcm1hdCh0aGlzLkZPUk1BVCx0aGlzLmxhdCx0aGlzLmxuZyl9LGsuZnJvbUxuZ0xhdD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGsodFsxXSx0WzBdKX0say5mcm9tTGF0TG5nPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgayh0WzBdLHRbMV0pfSxrLmNyZWF0ZT1mdW5jdGlvbih0LGUpe2lmKHYodCkpcmV0dXJuIHQgaW5zdGFuY2VvZiBrP3QuY2xvbmUoKToxPT09YXJndW1lbnRzLmxlbmd0aCYmMj09PXQubGVuZ3RoP2suZnJvbUxhdExuZyh0KTpuZXcgayh0LGUpfSxpPWYuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dD1rLmNyZWF0ZSh0KSxlPWsuY3JlYXRlKGUpLHQubG5nKzE4MD5lLmxuZysxODAmJnQubGF0KzkwPGUubGF0KzkwPyh0aGlzLnNlPXQsdGhpcy5udz1lKToodGhpcy5zZT1lLHRoaXMubnc9dCl9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubncsaT10aGlzLnNlLG49eCh0LmxuZyx0WzFdKSxvPXgodC5sYXQsdFswXSk7cmV0dXJuIHQmJm4rMTgwPj1lLmxuZysxODAmJm4rMTgwPD1pLmxuZysxODAmJm8rOTA+PWkubGF0KzkwJiZvKzkwPD1lLmxhdCs5MH0sY2VudGVyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5udyxlPXRoaXMuc2UsaT10LmxuZysoZS5sbmctdC5sbmcpLzIsbj10LmxhdCsoZS5sYXQtdC5sYXQpLzI7cmV0dXJuIG5ldyBrKG4saSl9LGNvbnRhaW5zQW55OmZ1bmN0aW9uKHQpe3ZhciBlLGk9ITE7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpPWl8fHRoaXMuY29udGFpbnModFtlXSk7cmV0dXJuIGl9LGluY2x1ZGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5udyxpPXRoaXMuc2Usbj14KHQubG5nLHRbMV0pLG89eCh0LmxhdCx0WzBdKTtlLmxuZz1sKGUubG5nLG4pLGUubGF0PWgoZS5sYXQsbyksaS5sbmc9aChpLmxuZyxuKSxpLmxhdD1sKGkubGF0LG8pfSxpbmNsdWRlQWxsOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRoaXMuaW5jbHVkZSh0W2VdKX0sZWRnZXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm53LGU9dGhpcy5zZTtyZXR1cm57bnc6dGhpcy5udyxuZTpuZXcgayh0LmxhdCxlLmxuZyksc2U6dGhpcy5zZSxzdzpuZXcgayhlLmxhdCx0LmxuZyl9fSx0b0FycmF5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5udyxlPXRoaXMuc2U7cmV0dXJuW3QsbmV3IGsodC5sYXQsZS5sbmcpLGUsbmV3IGsoZS5sYXQsdC5sbmcpXX0sb3ZlcmxhcHM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29udGFpbnNBbnkodC50b0FycmF5KCkpfHx0LmNvbnRhaW5zQW55KHRoaXMudG9BcnJheSgpKX19KSxpLldvcmxkPW5ldyBpKFs5MCwtMTgwXSxbLTkwLDE4MF0pLGkuY3JlYXRlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQgaW5zdGFuY2VvZiBpP3Q6dCYmbj9uZXcgaSh0LG4pOnQmJjQ9PT10Lmxlbmd0aCYmIW4/bmV3IGkoW3RbMF0sdFsxXV0sW3RbMl0sdFszXV0pOmV9LG0ocCx7bWFwOntFeHRlbnQ6aSxMb2NhdGlvbjprfX0pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsaSl7KGl8fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwiZGF0YXZpei9tYXAvYXR0cmlidXRpb24ubWluXCIsW1wia2VuZG8uZHJhd2luZy5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIHQ9d2luZG93LmtlbmRvLGU9dC51aS5XaWRnZXQsaT10LnRlbXBsYXRlLG49dC51dGlsLnZhbHVlT3JEZWZhdWx0LG89dC51dGlsLmRlZmluZWQsYT1lLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGkpe2UuZm4uaW5pdC5jYWxsKHRoaXMsdCxpKSx0aGlzLl9pbml0T3B0aW9ucyhpKSx0aGlzLml0ZW1zPVtdLHRoaXMuZWxlbWVudC5hZGRDbGFzcyhcImstd2lkZ2V0IGstYXR0cmlidXRpb25cIil9LG9wdGlvbnM6e25hbWU6XCJBdHRyaWJ1dGlvblwiLHNlcGFyYXRvcjpcIiZuYnNwO3wmbmJzcDtcIixpdGVtVGVtcGxhdGU6XCIjPSB0ZXh0ICNcIn0sZmlsdGVyOmZ1bmN0aW9uKHQsZSl7dGhpcy5fZXh0ZW50PXQsdGhpcy5fem9vbT1lLHRoaXMuX3JlbmRlcigpfSxhZGQ6ZnVuY3Rpb24odCl7byh0KSYmKFwic3RyaW5nXCI9PXR5cGVvZiB0JiYodD17dGV4dDp0fSksdGhpcy5pdGVtcy5wdXNoKHQpLHRoaXMuX3JlbmRlcigpKX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbj1bXTtmb3IoZT0wO2U8dGhpcy5pdGVtcy5sZW5ndGg7ZSsrKWk9dGhpcy5pdGVtc1tlXSxpLnRleHQhPT10JiZuLnB1c2goaSk7dGhpcy5pdGVtcz1uLHRoaXMuX3JlbmRlcigpfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuaXRlbXM9W10sdGhpcy5lbGVtZW50LmVtcHR5KCl9LF9yZW5kZXI6ZnVuY3Rpb24oKXt2YXIgdCxlLG4sbz1bXSxhPWkodGhpcy5vcHRpb25zLml0ZW1UZW1wbGF0ZSk7Zm9yKHQ9MDt0PHRoaXMuaXRlbXMubGVuZ3RoO3QrKyllPXRoaXMuaXRlbXNbdF0sbj10aGlzLl9pdGVtVGV4dChlKSxcIlwiIT09biYmby5wdXNoKGEoe3RleHQ6bn0pKTtvLmxlbmd0aD4wP3RoaXMuZWxlbWVudC5lbXB0eSgpLmFwcGVuZChvLmpvaW4odGhpcy5vcHRpb25zLnNlcGFyYXRvcikpLnNob3coKTp0aGlzLmVsZW1lbnQuaGlkZSgpfSxfaXRlbVRleHQ6ZnVuY3Rpb24odCl7dmFyIGU9XCJcIixpPXRoaXMuX2luWm9vbUxldmVsKHQubWluWm9vbSx0Lm1heFpvb20pLG49dGhpcy5faW5BcmVhKHQuZXh0ZW50KTtyZXR1cm4gaSYmbiYmKGUrPXQudGV4dCksZX0sX2luWm9vbUxldmVsOmZ1bmN0aW9uKHQsZSl7dmFyIGk9ITA7cmV0dXJuIHQ9bih0LC1OdW1iZXIuTUFYX1ZBTFVFKSxlPW4oZSxOdW1iZXIuTUFYX1ZBTFVFKSxpPXRoaXMuX3pvb20+dCYmdGhpcy5fem9vbTxlfSxfaW5BcmVhOmZ1bmN0aW9uKHQpe3ZhciBlPSEwO3JldHVybiB0JiYoZT10LmNvbnRhaW5zKHRoaXMuX2V4dGVudCkpLGV9fSk7dC5kYXRhdml6LnVpLnBsdWdpbihhKX0od2luZG93LmtlbmRvLmpRdWVyeSl9LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlLGkpeyhpfHxlKSgpfSksZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcImRhdGF2aXovbWFwL25hdmlnYXRvci5taW5cIixbXCJrZW5kby5jb3JlLm1pblwiXSx0KX0oZnVuY3Rpb24oKXshZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gaS5mb3JtYXQoJzxidXR0b24gY2xhc3M9XCJrLWJ1dHRvbiBrLW5hdmlnYXRvci17MH1cIj48c3BhbiBjbGFzcz1cImstaWNvbiBrLWktYXJyb3ctezB9XCIvPjwvYnV0dG9uPicsdCl9dmFyIGk9d2luZG93LmtlbmRvLG49aS51aS5XaWRnZXQsbz1pLmtleXMsYT10LnByb3h5LHI9XCIua2VuZG9OYXZpZ2F0b3JcIixzPWUoXCJuXCIpK2UoXCJlXCIpK2UoXCJzXCIpK2UoXCJ3XCIpLGg9bi5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXtuLmZuLmluaXQuY2FsbCh0aGlzLHQsZSksdGhpcy5faW5pdE9wdGlvbnMoZSksdGhpcy5lbGVtZW50LmFkZENsYXNzKFwiay13aWRnZXQgay1oZWFkZXIgay1zaGFkb3cgay1uYXZpZ2F0b3JcIikuYXBwZW5kKHMpLm9uKFwiY2xpY2tcIityLFwiLmstYnV0dG9uXCIsYSh0aGlzLFwiX2NsaWNrXCIpKTt2YXIgbz10aGlzLmVsZW1lbnQucGFyZW50KCkuY2xvc2VzdChcIltcIitpLmF0dHIoXCJyb2xlXCIpK1wiXVwiKTt0aGlzLl9rZXlyb290PW8ubGVuZ3RoPjA/bzp0aGlzLmVsZW1lbnQsdGhpcy5fdGFiaW5kZXgodGhpcy5fa2V5cm9vdCksdGhpcy5fa2V5ZG93bj1hKHRoaXMuX2tleWRvd24sdGhpcyksdGhpcy5fa2V5cm9vdC5vbihcImtleWRvd25cIix0aGlzLl9rZXlkb3duKX0sb3B0aW9uczp7bmFtZTpcIk5hdmlnYXRvclwiLHBhblN0ZXA6MX0sZXZlbnRzOltcInBhblwiXSxkaXNwb3NlOmZ1bmN0aW9uKCl7dGhpcy5fa2V5cm9vdC5vZmYoXCJrZXlkb3duXCIsdGhpcy5fa2V5ZG93bil9LF9wYW46ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLm9wdGlvbnMucGFuU3RlcDt0aGlzLnRyaWdnZXIoXCJwYW5cIix7eDp0KmkseTplKml9KX0sX2NsaWNrOmZ1bmN0aW9uKGUpe3ZhciBpPTAsbj0wLG89dChlLmN1cnJlbnRUYXJnZXQpO28uaXMoXCIuay1uYXZpZ2F0b3ItblwiKT9uPTE6by5pcyhcIi5rLW5hdmlnYXRvci1zXCIpP249LTE6by5pcyhcIi5rLW5hdmlnYXRvci1lXCIpP2k9MTpvLmlzKFwiLmstbmF2aWdhdG9yLXdcIikmJihpPS0xKSx0aGlzLl9wYW4oaSxuKSxlLnByZXZlbnREZWZhdWx0KCl9LF9rZXlkb3duOmZ1bmN0aW9uKHQpe3N3aXRjaCh0LndoaWNoKXtjYXNlIG8uVVA6dGhpcy5fcGFuKDAsMSksdC5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2Ugby5ET1dOOnRoaXMuX3BhbigwLC0xKSx0LnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSBvLlJJR0hUOnRoaXMuX3BhbigxLDApLHQucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIG8uTEVGVDp0aGlzLl9wYW4oLTEsMCksdC5wcmV2ZW50RGVmYXVsdCgpfX19KTtpLmRhdGF2aXoudWkucGx1Z2luKGgpfSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsaSl7KGl8fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwiZGF0YXZpei9tYXAvem9vbS5taW5cIixbXCJrZW5kby5jb3JlLm1pblwiXSx0KX0oZnVuY3Rpb24oKXshZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGUpe3JldHVybiBpLmZvcm1hdCgnPGJ1dHRvbiBjbGFzcz1cImstYnV0dG9uIGstem9vbS17MH1cIiB0aXRsZT1cInpvb20tezB9XCI+ezF9PC9idXR0b24+Jyx0LGUpfXZhciBpPXdpbmRvdy5rZW5kbyxuPWkudWkuV2lkZ2V0LG89aS5rZXlzLGE9dC5wcm94eSxyPVwiLmtlbmRvWm9vbUNvbnRyb2xcIixzPWUoXCJpblwiLFwiK1wiKStlKFwib3V0XCIsXCItXCIpLGg9MTg3LGw9MTg5LGM9NjEsdT0xNzMsZD1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe24uZm4uaW5pdC5jYWxsKHRoaXMsdCxlKSx0aGlzLl9pbml0T3B0aW9ucyhlKSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoXCJrLXdpZGdldCBrLXpvb20tY29udHJvbCBrLWJ1dHRvbi13cmFwIGstYnV0dG9ucy1ob3Jpem9udGFsXCIpLmFwcGVuZChzKS5vbihcImNsaWNrXCIrcixcIi5rLWJ1dHRvblwiLGEodGhpcyxcIl9jbGlja1wiKSk7dmFyIG89dGhpcy5lbGVtZW50LnBhcmVudCgpLmNsb3Nlc3QoXCJbXCIraS5hdHRyKFwicm9sZVwiKStcIl1cIik7dGhpcy5fa2V5cm9vdD1vLmxlbmd0aD4wP286dGhpcy5lbGVtZW50LHRoaXMuX3RhYmluZGV4KHRoaXMuX2tleXJvb3QpLHRoaXMuX2tleWRvd249YSh0aGlzLl9rZXlkb3duLHRoaXMpLHRoaXMuX2tleXJvb3Qub24oXCJrZXlkb3duXCIsdGhpcy5fa2V5ZG93bil9LG9wdGlvbnM6e25hbWU6XCJab29tQ29udHJvbFwiLHpvb21TdGVwOjF9LGV2ZW50czpbXCJjaGFuZ2VcIl0sX2NoYW5nZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMuem9vbVN0ZXA7dGhpcy50cmlnZ2VyKFwiY2hhbmdlXCIse2RlbHRhOnQqZX0pfSxfY2xpY2s6ZnVuY3Rpb24oZSl7dmFyIGk9dChlLmN1cnJlbnRUYXJnZXQpLG49MTtpLmlzKFwiLmstem9vbS1vdXRcIikmJihuPS0xKSx0aGlzLl9jaGFuZ2UobiksZS5wcmV2ZW50RGVmYXVsdCgpfSxfa2V5ZG93bjpmdW5jdGlvbih0KXtzd2l0Y2godC53aGljaCl7Y2FzZSBvLk5VTVBBRF9QTFVTOmNhc2UgaDpjYXNlIGM6dGhpcy5fY2hhbmdlKDEpO2JyZWFrO2Nhc2Ugby5OVU1QQURfTUlOVVM6Y2FzZSBsOmNhc2UgdTp0aGlzLl9jaGFuZ2UoLTEpfX19KTtpLmRhdGF2aXoudWkucGx1Z2luKGQpfSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsaSl7KGl8fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwiZGF0YXZpei9tYXAvY3JzLm1pblwiLFtcImRhdGF2aXovbWFwL2xvY2F0aW9uLm1pblwiLFwia2VuZG8uZHJhd2luZy5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQsZSl7dmFyIGk9TWF0aCxuPWkuYXRhbixvPWkuZXhwLGE9aS5wb3cscj1pLnNpbixzPWkubG9nLGg9aS50YW4sbD13aW5kb3cua2VuZG8sYz1sLkNsYXNzLHU9bC5kYXRhdml6LGQ9bC5kZWVwRXh0ZW5kLGY9bC5nZW9tZXRyeSxwPWYuUG9pbnQsbT11Lm1hcCxfPW0uTG9jYXRpb24sdj1sLnV0aWwsZz12LnJhZCx5PXYuZGVnLHc9di5saW1pdFZhbHVlLGI9aS5QSSx4PWIvMixrPWIvNCx6PWIvMTgwLFQ9e2E6NjM3ODEzNyxiOjYzNTY3NTIuMzE0MjQ1MTc5LGY6LjAwMzM1MjgxMDY2NDc0NzQ4MDUsZTouMDgxODE5MTkwODQyNjIxNDl9LFM9Yy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dGhpcy5faW5pdE9wdGlvbnModCl9LE1BWF9MTkc6MTgwLE1BWF9MQVQ6ODUuMDg0MDU5MDUwMSxJTlZFUlNFX0lURVJBVElPTlM6MTUsSU5WRVJTRV9DT05WRVJHRU5DRToxZS0xMixvcHRpb25zOntjZW50cmFsTWVyaWRpYW46MCxkYXR1bTpUfSxmb3J3YXJkOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxuPWkub3B0aW9ucyxvPW4uZGF0dW0sYT1vLmEscj1uLmNlbnRyYWxNZXJpZGlhbixzPXcodC5sYXQsLWkuTUFYX0xBVCxpLk1BWF9MQVQpLGg9ZT93KHQubG5nLC1pLk1BWF9MTkcsaS5NQVhfTE5HKTp0LmxuZyxsPWcoaC1yKSphLGM9aS5fcHJvamVjdExhdChzKTtyZXR1cm4gbmV3IHAobCxjKX0sX3Byb2plY3RMYXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLmRhdHVtLGk9ZS5lLG49ZS5hLG89Zyh0KSxsPWgoaytvLzIpLGM9aSpyKG8pLHU9YSgoMS1jKS8oMStjKSxpLzIpO3JldHVybiBuKnMobCp1KX0saW52ZXJzZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsbj1pLm9wdGlvbnMsbz1uLmRhdHVtLGE9by5hLHI9bi5jZW50cmFsTWVyaWRpYW4scz10LngvKHoqYSkrcixoPXcoaS5faW52ZXJzZVkodC55KSwtaS5NQVhfTEFULGkuTUFYX0xBVCk7cmV0dXJuIGUmJihzPXcocywtaS5NQVhfTE5HLGkuTUFYX0xORykpLG5ldyBfKGgscyl9LF9pbnZlcnNlWTpmdW5jdGlvbih0KXt2YXIgZSxzLGgsbCxjPXRoaXMsdT1jLm9wdGlvbnMuZGF0dW0sZD11LmEsZj11LmUscD1mLzIsbT1vKC10L2QpLF89eC0yKm4obSk7Zm9yKGU9MDtlPD1jLklOVkVSU0VfSVRFUkFUSU9OUyYmKHM9ZipyKF8pLGg9YSgoMS1zKS8oMStzKSxwKSxsPXgtMipuKG0qaCktXyxfKz1sLCEoaS5hYnMobCk8PWMuSU5WRVJTRV9DT05WRVJHRU5DRSkpO2UrKyk7cmV0dXJuIHkoXyl9fSksQz1TLmV4dGVuZCh7TUFYX0xBVDo4NS4wNTExMjg3Nzk4LF9wcm9qZWN0TGF0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMub3B0aW9ucy5kYXR1bS5hLGk9Zyh0KSxuPWgoaytpLzIpO3JldHVybiBlKnMobil9LF9pbnZlcnNlWTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMuZGF0dW0uYSxpPW8oLXQvZSk7cmV0dXJuIHkoeC0yKm4oaSkpfX0pLEU9Yy5leHRlbmQoe2ZvcndhcmQ6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBwKHQubG5nLHQubGF0KX0saW52ZXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IF8odC55LHQueCl9fSksTD1jLmV4dGVuZCh7aW5pdDpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10Ll9wcm9qPW5ldyBDLGk9dGhpcy5jPTIqYiplLm9wdGlvbnMuZGF0dW0uYTt0aGlzLl90bT1mLnRyYW5zZm9ybSgpLnRyYW5zbGF0ZSguNSwuNSkuc2NhbGUoMS9pLC0xL2kpLHRoaXMuX2l0bT1mLnRyYW5zZm9ybSgpLnNjYWxlKGksLWkpLnRyYW5zbGF0ZSgtLjUsLS41KX0sdG9Qb2ludDpmdW5jdGlvbih0LGUsaSl7dmFyIG49dGhpcy5fcHJvai5mb3J3YXJkKHQsaSk7cmV0dXJuIG4udHJhbnNmb3JtKHRoaXMuX3RtKS5zY2FsZShlfHwxKX0sdG9Mb2NhdGlvbjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQ9dC5jbG9uZSgpLnNjYWxlKDEvKGV8fDEpKS50cmFuc2Zvcm0odGhpcy5faXRtKSx0aGlzLl9wcm9qLmludmVyc2UodCxpKX19KSxBPWMuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKCl7dGhpcy5fcHJvaj1uZXcgU30sdG9Qb2ludDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcHJvai5mb3J3YXJkKHQpfSx0b0xvY2F0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wcm9qLmludmVyc2UodCl9fSksTT1jLmV4dGVuZCh7aW5pdDpmdW5jdGlvbigpe3RoaXMuX3Byb2o9bmV3IEV9LHRvUG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Byb2ouZm9yd2FyZCh0KX0sdG9Mb2NhdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcHJvai5pbnZlcnNlKHQpfX0pO2QodSx7bWFwOntjcnM6e0VQU0czMzk1OkEsRVBTRzM4NTc6TCxFUFNHNDMyNjpNfSxkYXR1bXM6e1dHUzg0OlR9LHByb2plY3Rpb25zOntFcXVpcmVjdGFuZ3VsYXI6RSxNZXJjYXRvcjpTLFNwaGVyaWNhbE1lcmNhdG9yOkN9fX0pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsaSl7KGl8fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwiZGF0YXZpei9tYXAvbGF5ZXJzL2Jhc2UubWluXCIsW1wia2VuZG8uY29yZS5taW5cIixcImRhdGF2aXovbWFwL2xvY2F0aW9uLm1pblwiXSx0KX0oZnVuY3Rpb24oKXshZnVuY3Rpb24odCxlKXt2YXIgaT10LnByb3h5LG49d2luZG93LmtlbmRvLG89bi5DbGFzcyxhPW4uZGF0YXZpeixyPW4uZGVlcEV4dGVuZCxzPWEubWFwLkV4dGVudCxoPW4udXRpbCxsPWguZGVmaW5lZCxjPW8uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsbil7dGhpcy5faW5pdE9wdGlvbnMobiksdGhpcy5tYXA9ZSx0aGlzLmVsZW1lbnQ9dChcIjxkaXYgY2xhc3M9J2stbGF5ZXInPjwvZGl2PlwiKS5jc3Moe3pJbmRleDp0aGlzLm9wdGlvbnMuekluZGV4LG9wYWNpdHk6dGhpcy5vcHRpb25zLm9wYWNpdHl9KS5hcHBlbmRUbyhlLnNjcm9sbEVsZW1lbnQpLHRoaXMuX2JlZm9yZVJlc2V0PWkodGhpcy5fYmVmb3JlUmVzZXQsdGhpcyksdGhpcy5fcmVzZXQ9aSh0aGlzLl9yZXNldCx0aGlzKSx0aGlzLl9yZXNpemU9aSh0aGlzLl9yZXNpemUsdGhpcyksdGhpcy5fcGFuRW5kPWkodGhpcy5fcGFuRW5kLHRoaXMpLHRoaXMuX2FjdGl2YXRlKCksdGhpcy5fdXBkYXRlQXR0cmlidXRpb24oKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX2RlYWN0aXZhdGUoKX0sc2hvdzpmdW5jdGlvbigpe3RoaXMucmVzZXQoKSx0aGlzLl9hY3RpdmF0ZSgpLHRoaXMuX2FwcGx5RXh0ZW50KCEwKX0saGlkZTpmdW5jdGlvbigpe3RoaXMuX2RlYWN0aXZhdGUoKSx0aGlzLl9zZXRWaXNpYmlsaXR5KCExKX0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9iZWZvcmVSZXNldCgpLHRoaXMuX3Jlc2V0KCl9LF9yZXNldDpmdW5jdGlvbigpe3RoaXMuX2FwcGx5RXh0ZW50KCl9LF9iZWZvcmVSZXNldDp0Lm5vb3AsX3Jlc2l6ZTp0Lm5vb3AsX3BhbkVuZDpmdW5jdGlvbigpe3RoaXMuX2FwcGx5RXh0ZW50KCl9LF9hcHBseUV4dGVudDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucyxlPXRoaXMubWFwLnpvb20oKSxpPSFsKHQubWluWm9vbSl8fGU+PXQubWluWm9vbSxuPSFsKHQubWF4Wm9vbSl8fGU8PXQubWF4Wm9vbSxvPXMuY3JlYXRlKHQuZXh0ZW50KSxhPSFvfHxvLm92ZXJsYXBzKHRoaXMubWFwLmV4dGVudCgpKTt0aGlzLl9zZXRWaXNpYmlsaXR5KGkmJm4mJmEpfSxfc2V0VmlzaWJpbGl0eTpmdW5jdGlvbih0KXt0aGlzLmVsZW1lbnQuY3NzKFwiZGlzcGxheVwiLHQ/XCJcIjpcIm5vbmVcIil9LF9hY3RpdmF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWFwO3QuYmluZChcImJlZm9yZVJlc2V0XCIsdGhpcy5fYmVmb3JlUmVzZXQpLHQuYmluZChcInJlc2V0XCIsdGhpcy5fcmVzZXQpLHQuYmluZChcInJlc2l6ZVwiLHRoaXMuX3Jlc2l6ZSksdC5iaW5kKFwicGFuRW5kXCIsdGhpcy5fcGFuRW5kKX0sX2RlYWN0aXZhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hcDt0LnVuYmluZChcImJlZm9yZVJlc2V0XCIsdGhpcy5fYmVmb3JlUmVzZXQpLHQudW5iaW5kKFwicmVzZXRcIix0aGlzLl9yZXNldCksdC51bmJpbmQoXCJyZXNpemVcIix0aGlzLl9yZXNpemUpLHQudW5iaW5kKFwicGFuRW5kXCIsdGhpcy5fcGFuRW5kKX0sX3VwZGF0ZUF0dHJpYnV0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXAuYXR0cmlidXRpb247dCYmdC5hZGQodGhpcy5vcHRpb25zLmF0dHJpYnV0aW9uKX19KTtyKGEse21hcDp7bGF5ZXJzOntMYXllcjpjfX19KX0od2luZG93LmtlbmRvLmpRdWVyeSl9LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlLGkpeyhpfHxlKSgpfSksZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcImRhdGF2aXovbWFwL2xheWVycy9zaGFwZS5taW5cIixbXCJkYXRhdml6L21hcC9sYXllcnMvYmFzZS5taW5cIixcImRhdGF2aXovbWFwL2xvY2F0aW9uLm1pblwiXSx0KX0oZnVuY3Rpb24oKXshZnVuY3Rpb24odCxlKXt2YXIgaT10LnByb3h5LG49d2luZG93LmtlbmRvLG89bi5DbGFzcyxhPW4uZGF0YS5EYXRhU291cmNlLHI9bi5kYXRhdml6LHM9bi5kZWVwRXh0ZW5kLGg9bi51dGlsLmxhc3QsbD1uLnV0aWwuZGVmaW5lZCxjPW4uZ2VvbWV0cnksdT1uLmRyYXdpbmcsZD11Lkdyb3VwLGY9ci5tYXAscD1mLkxvY2F0aW9uLG09Zi5sYXllcnMuTGF5ZXIsXz1tLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3RoaXMuX3Bhbj1pKHRoaXMuX3Bhbix0aGlzKSxtLmZuLmluaXQuY2FsbCh0aGlzLHQsZSksdGhpcy5zdXJmYWNlPXUuU3VyZmFjZS5jcmVhdGUodGhpcy5lbGVtZW50LHt3aWR0aDp0LnNjcm9sbEVsZW1lbnQud2lkdGgoKSxoZWlnaHQ6dC5zY3JvbGxFbGVtZW50LmhlaWdodCgpfSksdGhpcy5faW5pdFJvb3QoKSx0aGlzLm1vdmFibGU9bmV3IG4udWkuTW92YWJsZSh0aGlzLnN1cmZhY2UuZWxlbWVudCksdGhpcy5fbWFya2Vycz1bXSx0aGlzLl9jbGljaz10aGlzLl9oYW5kbGVyKFwic2hhcGVDbGlja1wiKSx0aGlzLnN1cmZhY2UuYmluZChcImNsaWNrXCIsdGhpcy5fY2xpY2spLHRoaXMuX21vdXNlZW50ZXI9dGhpcy5faGFuZGxlcihcInNoYXBlTW91c2VFbnRlclwiKSx0aGlzLnN1cmZhY2UuYmluZChcIm1vdXNlZW50ZXJcIix0aGlzLl9tb3VzZWVudGVyKSx0aGlzLl9tb3VzZWxlYXZlPXRoaXMuX2hhbmRsZXIoXCJzaGFwZU1vdXNlTGVhdmVcIiksdGhpcy5zdXJmYWNlLmJpbmQoXCJtb3VzZWxlYXZlXCIsdGhpcy5fbW91c2VsZWF2ZSksdGhpcy5faW5pdERhdGFTb3VyY2UoKX0sb3B0aW9uczp7YXV0b0JpbmQ6ITB9LGRlc3Ryb3k6ZnVuY3Rpb24oKXttLmZuLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLnN1cmZhY2UuZGVzdHJveSgpLHRoaXMuZGF0YVNvdXJjZS51bmJpbmQoXCJjaGFuZ2VcIix0aGlzLl9kYXRhQ2hhbmdlKX0sc2V0RGF0YVNvdXJjZTpmdW5jdGlvbih0KXt0aGlzLmRhdGFTb3VyY2UmJnRoaXMuZGF0YVNvdXJjZS51bmJpbmQoXCJjaGFuZ2VcIix0aGlzLl9kYXRhQ2hhbmdlKSx0aGlzLmRhdGFTb3VyY2U9bi5kYXRhLkRhdGFTb3VyY2UuY3JlYXRlKHQpLHRoaXMuZGF0YVNvdXJjZS5iaW5kKFwiY2hhbmdlXCIsdGhpcy5fZGF0YUNoYW5nZSksdGhpcy5vcHRpb25zLmF1dG9CaW5kJiZ0aGlzLmRhdGFTb3VyY2UuZmV0Y2goKX0sX3Jlc2V0OmZ1bmN0aW9uKCl7bS5mbi5fcmVzZXQuY2FsbCh0aGlzKSx0aGlzLl90cmFuc2xhdGVTdXJmYWNlKCksdGhpcy5fZGF0YSYmdGhpcy5fbG9hZCh0aGlzLl9kYXRhKX0sX2luaXRSb290OmZ1bmN0aW9uKCl7dGhpcy5fcm9vdD1uZXcgZCx0aGlzLnN1cmZhY2UuZHJhdyh0aGlzLl9yb290KX0sX2JlZm9yZVJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5zdXJmYWNlLmNsZWFyKCksdGhpcy5faW5pdFJvb3QoKX0sX3Jlc2l6ZTpmdW5jdGlvbigpe3RoaXMuc3VyZmFjZS5zaXplKHRoaXMubWFwLnNpemUoKSl9LF9pbml0RGF0YVNvdXJjZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5kYXRhU291cmNlO3RoaXMuX2RhdGFDaGFuZ2U9aSh0aGlzLl9kYXRhQ2hhbmdlLHRoaXMpLHRoaXMuZGF0YVNvdXJjZT1hLmNyZWF0ZSh0KS5iaW5kKFwiY2hhbmdlXCIsdGhpcy5fZGF0YUNoYW5nZSksdCYmdGhpcy5vcHRpb25zLmF1dG9CaW5kJiZ0aGlzLmRhdGFTb3VyY2UuZmV0Y2goKX0sX2RhdGFDaGFuZ2U6ZnVuY3Rpb24odCl7dGhpcy5fZGF0YT10LnNlbmRlci52aWV3KCksdGhpcy5fbG9hZCh0aGlzLl9kYXRhKX0sX2xvYWQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2Zvcih0aGlzLl9jbGVhck1hcmtlcnMoKSx0aGlzLl9sb2FkZXJ8fCh0aGlzLl9sb2FkZXI9bmV3IHYodGhpcy5tYXAsdGhpcy5vcHRpb25zLnN0eWxlLHRoaXMpKSxlPW5ldyBkLGk9MDtpPHQubGVuZ3RoO2krKyluPXRoaXMuX2xvYWRlci5wYXJzZSh0W2ldKSxuJiZlLmFwcGVuZChuKTt0aGlzLl9yb290LmNsZWFyKCksdGhpcy5fcm9vdC5hcHBlbmQoZSl9LHNoYXBlQ3JlYXRlZDpmdW5jdGlvbih0KXt2YXIgZSxpPSExO3JldHVybiB0IGluc3RhbmNlb2YgdS5DaXJjbGUmJihpPWwodGhpcy5fY3JlYXRlTWFya2VyKHQpKSksaXx8KGU9e2xheWVyOnRoaXMsc2hhcGU6dH0saT10aGlzLm1hcC50cmlnZ2VyKFwic2hhcGVDcmVhdGVkXCIsZSkpLGl9LGZlYXR1cmVDcmVhdGVkOmZ1bmN0aW9uKHQpe3QubGF5ZXI9dGhpcyx0aGlzLm1hcC50cmlnZ2VyKFwic2hhcGVGZWF0dXJlQ3JlYXRlZFwiLHQpfSxfY3JlYXRlTWFya2VyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubWFwLm1hcmtlcnMuYmluZCh7bG9jYXRpb246dC5sb2NhdGlvbn0sdC5kYXRhSXRlbSk7cmV0dXJuIGUmJnRoaXMuX21hcmtlcnMucHVzaChlKSxlfSxfY2xlYXJNYXJrZXJzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDx0aGlzLl9tYXJrZXJzLmxlbmd0aDt0KyspdGhpcy5tYXAubWFya2Vycy5yZW1vdmUodGhpcy5fbWFya2Vyc1t0XSk7dGhpcy5fbWFya2Vycz1bXX0sX3BhbjpmdW5jdGlvbigpe3RoaXMuX3Bhbm5pbmd8fCh0aGlzLl9wYW5uaW5nPSEwLHRoaXMuc3VyZmFjZS5zdXNwZW5kVHJhY2tpbmcoKSl9LF9wYW5FbmQ6ZnVuY3Rpb24odCl7bS5mbi5fcGFuRW5kLmNhbGwodGhpcyx0KSx0aGlzLl90cmFuc2xhdGVTdXJmYWNlKCksdGhpcy5zdXJmYWNlLnJlc3VtZVRyYWNraW5nKCksdGhpcy5fcGFubmluZz0hMX0sX3RyYW5zbGF0ZVN1cmZhY2U6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hcCxlPXQubG9jYXRpb25Ub1ZpZXcodC5leHRlbnQoKS5udyk7dGhpcy5zdXJmYWNlLnRyYW5zbGF0ZSYmKHRoaXMuc3VyZmFjZS50cmFuc2xhdGUoZSksdGhpcy5tb3ZhYmxlLm1vdmVUbyh7eDplLngseTplLnl9KSl9LF9oYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKGkpe2lmKGkuZWxlbWVudCl7dmFyIG49e2xheWVyOmUsc2hhcGU6aS5lbGVtZW50LG9yaWdpbmFsRXZlbnQ6aS5vcmlnaW5hbEV2ZW50fTtlLm1hcC50cmlnZ2VyKHQsbil9fX0sX2FjdGl2YXRlOmZ1bmN0aW9uKCl7bS5mbi5fYWN0aXZhdGUuY2FsbCh0aGlzKSx0aGlzLm1hcC5iaW5kKFwicGFuXCIsdGhpcy5fcGFuKX0sX2RlYWN0aXZhdGU6ZnVuY3Rpb24oKXttLmZuLl9kZWFjdGl2YXRlLmNhbGwodGhpcyksdGhpcy5tYXAudW5iaW5kKFwicGFuXCIsdGhpcy5fcGFuKX19KSx2PW8uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSxpKXt0aGlzLm9ic2VydmVyPWksdGhpcy5sb2NhdG9yPXQsdGhpcy5zdHlsZT1lfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgZCxpPSEwO3JldHVyblwiRmVhdHVyZVwiPT09dC50eXBlPyhpPSExLHRoaXMuX2xvYWRHZW9tZXRyeVRvKGUsdC5nZW9tZXRyeSx0KSx0aGlzLl9mZWF0dXJlQ3JlYXRlZChlLHQpKTp0aGlzLl9sb2FkR2VvbWV0cnlUbyhlLHQsdCksaSYmZS5jaGlsZHJlbi5sZW5ndGg8MiYmKGU9ZS5jaGlsZHJlblswXSksZX0sX3NoYXBlQ3JlYXRlZDpmdW5jdGlvbih0KXt2YXIgZT0hMTtyZXR1cm4gdGhpcy5vYnNlcnZlciYmdGhpcy5vYnNlcnZlci5zaGFwZUNyZWF0ZWQmJihlPXRoaXMub2JzZXJ2ZXIuc2hhcGVDcmVhdGVkKHQpKSxlfSxfZmVhdHVyZUNyZWF0ZWQ6ZnVuY3Rpb24odCxlKXt0aGlzLm9ic2VydmVyJiZ0aGlzLm9ic2VydmVyLmZlYXR1cmVDcmVhdGVkJiZ0aGlzLm9ic2VydmVyLmZlYXR1cmVDcmVhdGVkKHtncm91cDp0LGRhdGFJdGVtOmUscHJvcGVydGllczplLnByb3BlcnRpZXN9KX0sX2xvYWRHZW9tZXRyeVRvOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvLGE9ZS5jb29yZGluYXRlcztzd2l0Y2goZS50eXBlKXtjYXNlXCJMaW5lU3RyaW5nXCI6bz10aGlzLl9sb2FkUG9seWdvbih0LFthXSxpKSx0aGlzLl9zZXRMaW5lRmlsbChvKTticmVhaztjYXNlXCJNdWx0aUxpbmVTdHJpbmdcIjpmb3Iobj0wO248YS5sZW5ndGg7bisrKW89dGhpcy5fbG9hZFBvbHlnb24odCxbYVtuXV0saSksdGhpcy5fc2V0TGluZUZpbGwobyk7YnJlYWs7Y2FzZVwiUG9seWdvblwiOnRoaXMuX2xvYWRQb2x5Z29uKHQsYSxpKTticmVhaztjYXNlXCJNdWx0aVBvbHlnb25cIjpmb3Iobj0wO248YS5sZW5ndGg7bisrKXRoaXMuX2xvYWRQb2x5Z29uKHQsYVtuXSxpKTticmVhaztjYXNlXCJQb2ludFwiOnRoaXMuX2xvYWRQb2ludCh0LGEsaSk7YnJlYWs7Y2FzZVwiTXVsdGlQb2ludFwiOmZvcihuPTA7bjxhLmxlbmd0aDtuKyspdGhpcy5fbG9hZFBvaW50KHQsYVtuXSxpKX19LF9zZXRMaW5lRmlsbDpmdW5jdGlvbih0KXt2YXIgZT10LnNlZ21lbnRzOyhlLmxlbmd0aDw0fHwhZVswXS5hbmNob3IoKS5lcXVhbHMoaChlKS5hbmNob3IoKSkpJiYodC5vcHRpb25zLmZpbGw9bnVsbCl9LF9sb2FkU2hhcGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fc2hhcGVDcmVhdGVkKGUpfHx0LmFwcGVuZChlKSxlfSxfbG9hZFBvbHlnb246ZnVuY3Rpb24odCxlLGkpe3ZhciBuPXRoaXMuX2J1aWxkUG9seWdvbihlKTtyZXR1cm4gbi5kYXRhSXRlbT1pLHRoaXMuX2xvYWRTaGFwZSh0LG4pfSxfYnVpbGRQb2x5Z29uOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvPXQubGVuZ3RoPjE/dS5NdWx0aVBhdGg6dS5QYXRoLGE9bmV3IG8odGhpcy5zdHlsZSk7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKylmb3IoaT0wO2k8dFtlXS5sZW5ndGg7aSsrKW49dGhpcy5sb2NhdG9yLmxvY2F0aW9uVG9WaWV3KHAuZnJvbUxuZ0xhdCh0W2VdW2ldKSksMD09PWk/YS5tb3ZlVG8obi54LG4ueSk6YS5saW5lVG8obi54LG4ueSk7cmV0dXJuIGF9LF9sb2FkUG9pbnQ6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPXAuZnJvbUxuZ0xhdChlKSxvPXRoaXMubG9jYXRvci5sb2NhdGlvblRvVmlldyhuKSxhPW5ldyBjLkNpcmNsZShvLDEwKSxyPW5ldyB1LkNpcmNsZShhLHRoaXMuc3R5bGUpO3JldHVybiByLmRhdGFJdGVtPWksci5sb2NhdGlvbj1uLHRoaXMuX2xvYWRTaGFwZSh0LHIpfX0pO3Mobi5kYXRhLHtzY2hlbWFzOntnZW9qc29uOnt0eXBlOlwianNvblwiLGRhdGE6ZnVuY3Rpb24odCl7cmV0dXJuXCJGZWF0dXJlQ29sbGVjdGlvblwiPT09dC50eXBlP3QuZmVhdHVyZXM6XCJHZW9tZXRyeUNvbGxlY3Rpb25cIj09PXQudHlwZT90Lmdlb21ldHJpZXM6dH19fSx0cmFuc3BvcnRzOntnZW9qc29uOntyZWFkOntkYXRhVHlwZTpcImpzb25cIn19fX0pLHMocix7bWFwOntsYXllcnM6e3NoYXBlOl8sU2hhcGVMYXllcjpffSxHZW9KU09OTG9hZGVyOnZ9fSl9KHdpbmRvdy5rZW5kby5qUXVlcnkpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKHQsZSxpKXsoaXx8ZSkoKX0pLGZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJkYXRhdml6L21hcC9sYXllcnMvYnViYmxlLm1pblwiLFtcImRhdGF2aXovbWFwL2xheWVycy9zaGFwZS5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQsZSl7dmFyIGk9d2luZG93LmtlbmRvLG49aS5nZXR0ZXIsbz1pLmRhdGF2aXosYT1pLmRlZXBFeHRlbmQscj1pLnV0aWwscz1yLmRlZmluZWQsaD1pLmdlb21ldHJ5LGw9aS5kcmF3aW5nLGM9by5tYXAsdT1jLkxvY2F0aW9uLGQ9Yy5sYXllcnMuU2hhcGVMYXllcixmPWQuZXh0ZW5kKHtvcHRpb25zOnthdXRvQmluZDohMCxsb2NhdGlvbkZpZWxkOlwibG9jYXRpb25cIix2YWx1ZUZpZWxkOlwidmFsdWVcIixtaW5TaXplOjAsbWF4U2l6ZToxMDAsc2NhbGU6XCJzcXJ0XCIsc3ltYm9sOlwiY2lyY2xlXCJ9LF9sb2FkOmZ1bmN0aW9uKHQpe3ZhciBlLGksbyxhLHIsaCxsLGMsZCxmLHA7aWYodGhpcy5zdXJmYWNlLmNsZWFyKCksMCE9PXQubGVuZ3RoKWZvcihlPXRoaXMub3B0aW9ucyxpPW4oZS52YWx1ZUZpZWxkKSx0PXQuc2xpY2UoMCksdC5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkoZSktaSh0KX0pLG89dGhpcy5fc2NhbGVUeXBlKCkscj0wO3I8dC5sZW5ndGg7cisrKWg9dFtyXSxsPW4oZS5sb2NhdGlvbkZpZWxkKShoKSxjPW4oZS52YWx1ZUZpZWxkKShoKSxzKGwpJiZzKGMpJiYoYXx8KGE9bmV3IG8oWzAsY10sW2UubWluU2l6ZSxlLm1heFNpemVdKSksbD11LmNyZWF0ZShsKSxkPXRoaXMubWFwLmxvY2F0aW9uVG9WaWV3KGwpLGY9YS5tYXAoYykscD10aGlzLl9jcmVhdGVTeW1ib2woe2NlbnRlcjpkLHNpemU6ZixzdHlsZTplLnN0eWxlLGRhdGFJdGVtOmgsbG9jYXRpb246bH0pLHAuZGF0YUl0ZW09aCxwLmxvY2F0aW9uPWwscC52YWx1ZT1jLHRoaXMuX2RyYXdTeW1ib2wocCkpfSxfc2NhbGVUeXBlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLnNjYWxlO3JldHVybiBpLmlzRnVuY3Rpb24odCk/dDpvLm1hcC5zY2FsZXNbdF19LF9jcmVhdGVTeW1ib2w6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLnN5bWJvbDtyZXR1cm4gaS5pc0Z1bmN0aW9uKGUpfHwoZT1vLm1hcC5zeW1ib2xzW2VdKSxlKHQpfSxfZHJhd1N5bWJvbDpmdW5jdGlvbih0KXt2YXIgZT17bGF5ZXI6dGhpcyxzaGFwZTp0fSxpPXRoaXMubWFwLnRyaWdnZXIoXCJzaGFwZUNyZWF0ZWRcIixlKTtpfHx0aGlzLnN1cmZhY2UuZHJhdyh0KX19KSxwPWkuQ2xhc3MuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dmFyIGksbjt0aGlzLl9kb21haW49dCx0aGlzLl9yYW5nZT1lLGk9TWF0aC5zcXJ0KHRbMV0pLU1hdGguc3FydCh0WzBdKSxuPWVbMV0tZVswXSx0aGlzLl9yYXRpbz1uL2l9LG1hcDpmdW5jdGlvbih0KXt2YXIgZT0oTWF0aC5zcXJ0KHQpLU1hdGguc3FydCh0aGlzLl9kb21haW5bMF0pKSp0aGlzLl9yYXRpbztyZXR1cm4gdGhpcy5fcmFuZ2VbMF0rZX19KSxtPXtjaXJjbGU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGguQ2lyY2xlKHQuY2VudGVyLHQuc2l6ZS8yKTtyZXR1cm4gbmV3IGwuQ2lyY2xlKGUsdC5zdHlsZSl9LHNxdWFyZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgbC5QYXRoKHQuc3R5bGUpLGk9dC5zaXplLzIsbj10LmNlbnRlcjtyZXR1cm4gZS5tb3ZlVG8obi54LWksbi55LWkpLmxpbmVUbyhuLngraSxuLnktaSkubGluZVRvKG4ueCtpLG4ueStpKS5saW5lVG8obi54LWksbi55K2kpLmNsb3NlKCksZX19O2Eobyx7bWFwOntsYXllcnM6e2J1YmJsZTpmLEJ1YmJsZUxheWVyOmZ9LHNjYWxlczp7c3FydDpwfSxzeW1ib2xzOm19fSl9KHdpbmRvdy5rZW5kby5qUXVlcnkpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKHQsZSxpKXsoaXx8ZSkoKX0pLGZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJkYXRhdml6L21hcC9sYXllcnMvdGlsZS5taW5cIixbXCJkYXRhdml6L21hcC9sYXllcnMvYmFzZS5taW5cIixcImRhdGF2aXovbWFwL2xvY2F0aW9uLm1pblwiXSx0KX0oZnVuY3Rpb24oKXshZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKHQpe3JldHVybiBuZXcgdShwKHQueCkscCh0LnkpKX12YXIgbj1NYXRoLG89dC5wcm94eSxhPXdpbmRvdy5rZW5kbyxyPWEuQ2xhc3Mscz1hLnRlbXBsYXRlLGg9YS5kYXRhdml6LGw9YS5kZWVwRXh0ZW5kLGM9YS5nZW9tZXRyeSx1PWMuUG9pbnQsZD1oLm1hcC5sYXllcnMuTGF5ZXIsZj1hLnV0aWwscD1mLnJvdW5kLG09Zi5yZW5kZXJTaXplLF89Zi5saW1pdFZhbHVlLHY9ZC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXtkLmZuLmluaXQuY2FsbCh0aGlzLHQsZSksXCJzdHJpbmdcIj09dHlwZW9mIHRoaXMub3B0aW9ucy5zdWJkb21haW5zJiYodGhpcy5vcHRpb25zLnN1YmRvbWFpbnM9dGhpcy5vcHRpb25zLnN1YmRvbWFpbnMuc3BsaXQoXCJcIikpO3ZhciBpPXRoaXMuX3ZpZXdUeXBlKCk7dGhpcy5fdmlldz1uZXcgaSh0aGlzLmVsZW1lbnQsdGhpcy5vcHRpb25zKX0sZGVzdHJveTpmdW5jdGlvbigpe2QuZm4uZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX3ZpZXcuZGVzdHJveSgpLHRoaXMuX3ZpZXc9bnVsbH0sX2JlZm9yZVJlc2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXAsZT10LmxvY2F0aW9uVG9MYXllcih0LmV4dGVudCgpLm53KS5yb3VuZCgpO3RoaXMuX3ZpZXcudmlld09yaWdpbihlKX0sX3Jlc2V0OmZ1bmN0aW9uKCl7ZC5mbi5fcmVzZXQuY2FsbCh0aGlzKSx0aGlzLl91cGRhdGVWaWV3KCksdGhpcy5fdmlldy5yZXNldCgpfSxfdmlld1R5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gZ30sX2FjdGl2YXRlOmZ1bmN0aW9uKCl7ZC5mbi5fYWN0aXZhdGUuY2FsbCh0aGlzKSxhLnN1cHBvcnQubW9iaWxlT1N8fCh0aGlzLl9wYW58fCh0aGlzLl9wYW49YS50aHJvdHRsZShvKHRoaXMuX3JlbmRlcix0aGlzKSwxMDApKSx0aGlzLm1hcC5iaW5kKFwicGFuXCIsdGhpcy5fcGFuKSl9LF9kZWFjdGl2YXRlOmZ1bmN0aW9uKCl7ZC5mbi5fZGVhY3RpdmF0ZS5jYWxsKHRoaXMpLHRoaXMuX3BhbiYmdGhpcy5tYXAudW5iaW5kKFwicGFuXCIsdGhpcy5fcGFuKX0sX3VwZGF0ZVZpZXc6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl92aWV3LGU9dGhpcy5tYXAsaT1lLmV4dGVudCgpLG49e253OmUubG9jYXRpb25Ub0xheWVyKGkubncpLnJvdW5kKCksc2U6ZS5sb2NhdGlvblRvTGF5ZXIoaS5zZSkucm91bmQoKX07dC5jZW50ZXIoZS5sb2NhdGlvblRvTGF5ZXIoZS5jZW50ZXIoKSkpLHQuZXh0ZW50KG4pLHQuem9vbShlLnpvb20oKSl9LF9yZXNpemU6ZnVuY3Rpb24oKXt0aGlzLl9yZW5kZXIoKX0sX3BhbkVuZDpmdW5jdGlvbih0KXtkLmZuLl9wYW5FbmQuY2FsbCh0aGlzLHQpLHRoaXMuX3JlbmRlcigpfSxfcmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlVmlldygpLHRoaXMuX3ZpZXcucmVuZGVyKCl9fSksZz1yLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3RoaXMuZWxlbWVudD10LHRoaXMuX2luaXRPcHRpb25zKGUpLHRoaXMucG9vbD1uZXcgd30sb3B0aW9uczp7dGlsZVNpemU6MjU2LHN1YmRvbWFpbnM6W1wiYVwiLFwiYlwiLFwiY1wiXSx1cmxUZW1wbGF0ZTpcIlwifSxjZW50ZXI6ZnVuY3Rpb24odCl7dGhpcy5fY2VudGVyPXR9LGV4dGVudDpmdW5jdGlvbih0KXt0aGlzLl9leHRlbnQ9dH0sdmlld09yaWdpbjpmdW5jdGlvbih0KXt0aGlzLl92aWV3T3JpZ2luPXR9LHpvb206ZnVuY3Rpb24odCl7dGhpcy5fem9vbT10fSxwb2ludFRvVGlsZUluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgdShuLmZsb29yKHQueC90aGlzLm9wdGlvbnMudGlsZVNpemUpLG4uZmxvb3IodC55L3RoaXMub3B0aW9ucy50aWxlU2l6ZSkpfSx0aWxlQ291bnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNpemUoKSxlPXRoaXMucG9pbnRUb1RpbGVJbmRleCh0aGlzLl9leHRlbnQubncpLGk9dGhpcy5fZXh0ZW50Lm53LG89dGhpcy5pbmRleFRvUG9pbnQoZSkudHJhbnNsYXRlKC1pLngsLWkueSk7cmV0dXJue3g6bi5jZWlsKChuLmFicyhvLngpK3Qud2lkdGgpL3RoaXMub3B0aW9ucy50aWxlU2l6ZSkseTpuLmNlaWwoKG4uYWJzKG8ueSkrdC5oZWlnaHQpL3RoaXMub3B0aW9ucy50aWxlU2l6ZSl9fSxzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZXh0ZW50Lm53LGU9dGhpcy5fZXh0ZW50LnNlLGk9ZS5jbG9uZSgpLnRyYW5zbGF0ZSgtdC54LC10LnkpO3JldHVybnt3aWR0aDppLngsaGVpZ2h0OmkueX19LGluZGV4VG9Qb2ludDpmdW5jdGlvbih0KXt2YXIgZT10LngsaT10Lnk7cmV0dXJuIG5ldyB1KGUqdGhpcy5vcHRpb25zLnRpbGVTaXplLGkqdGhpcy5vcHRpb25zLnRpbGVTaXplKX0sc3ViZG9tYWluVGV4dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5zdWJkb21haW5zO3JldHVybiB0W3RoaXMuc3ViZG9tYWluSW5kZXgrKyV0Lmxlbmd0aF19LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuZW1wdHkoKSx0aGlzLnBvb2wuZW1wdHkoKX0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnBvb2wucmVzZXQoKSx0aGlzLnN1YmRvbWFpbkluZGV4PTAsdGhpcy5yZW5kZXIoKX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG49dGhpcy50aWxlQ291bnQoKSxvPXRoaXMucG9pbnRUb1RpbGVJbmRleCh0aGlzLl9leHRlbnQubncpO2ZvcihlPTA7ZTxuLng7ZSsrKWZvcihpPTA7aTxuLnk7aSsrKXQ9dGhpcy5jcmVhdGVUaWxlKHt4Om8ueCtlLHk6by55K2l9KSx0LnZpc2libGV8fHQuc2hvdygpfSxjcmVhdGVUaWxlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudGlsZU9wdGlvbnModCksaT10aGlzLnBvb2wuZ2V0KHRoaXMuX2NlbnRlcixlKTtyZXR1cm4gMD09PWkuZWxlbWVudC5wYXJlbnQoKS5sZW5ndGgmJnRoaXMuZWxlbWVudC5hcHBlbmQoaS5lbGVtZW50KSxpfSx0aWxlT3B0aW9uczpmdW5jdGlvbih0KXt2YXIgZT10aGlzLndyYXBJbmRleCh0KSxuPXRoaXMuaW5kZXhUb1BvaW50KHQpLG89dGhpcy5fdmlld09yaWdpbixhPW4uY2xvbmUoKS50cmFuc2xhdGUoLW8ueCwtby55KTtyZXR1cm57aW5kZXg6ZSxjdXJyZW50SW5kZXg6dCxwb2ludDpuLG9mZnNldDppKGEpLHpvb206dGhpcy5fem9vbSxzaXplOnRoaXMub3B0aW9ucy50aWxlU2l6ZSxzdWJkb21haW46dGhpcy5zdWJkb21haW5UZXh0KCksdXJsVGVtcGxhdGU6dGhpcy5vcHRpb25zLnVybFRlbXBsYXRlLGVycm9yVXJsVGVtcGxhdGU6dGhpcy5vcHRpb25zLmVycm9yVXJsVGVtcGxhdGV9fSx3cmFwSW5kZXg6ZnVuY3Rpb24odCl7dmFyIGU9bi5wb3coMix0aGlzLl96b29tKTtyZXR1cm57eDp0aGlzLndyYXBWYWx1ZSh0LngsZSkseTpfKHQueSwwLGUtMSl9fSx3cmFwVmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1uLmFicyh0KSVlO3JldHVybiB0PXQ+PTA/aTplLSgwPT09aT9lOmkpfX0pLHk9ci5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0aGlzLmlkPXQsdGhpcy52aXNpYmxlPSEwLHRoaXMuX2luaXRPcHRpb25zKGUpLHRoaXMuY3JlYXRlRWxlbWVudCgpLHRoaXMuc2hvdygpfSxvcHRpb25zOnt1cmxUZW1wbGF0ZTpcIlwiLGVycm9yVXJsVGVtcGxhdGU6XCJcIn0sY3JlYXRlRWxlbWVudDpmdW5jdGlvbigpe3RoaXMuZWxlbWVudD10KFwiPGltZyBzdHlsZT0ncG9zaXRpb246IGFic29sdXRlOyBkaXNwbGF5OiBibG9jazsnIC8+XCIpLmNzcyh7d2lkdGg6dGhpcy5vcHRpb25zLnNpemUsaGVpZ2h0OnRoaXMub3B0aW9ucy5zaXplfSkub24oXCJlcnJvclwiLG8oZnVuY3Rpb24odCl7dGhpcy5lcnJvclVybCgpP3QudGFyZ2V0LnNldEF0dHJpYnV0ZShcInNyY1wiLHRoaXMuZXJyb3JVcmwoKSk6dC50YXJnZXQucmVtb3ZlQXR0cmlidXRlKFwic3JjXCIpfSx0aGlzKSl9LHNob3c6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuZWxlbWVudFswXTtlLnN0eWxlLnRvcD1tKHRoaXMub3B0aW9ucy5vZmZzZXQueSksZS5zdHlsZS5sZWZ0PW0odGhpcy5vcHRpb25zLm9mZnNldC54KSx0PXRoaXMudXJsKCksdCYmZS5zZXRBdHRyaWJ1dGUoXCJzcmNcIix0KSxlLnN0eWxlLnZpc2liaWxpdHk9XCJ2aXNpYmxlXCIsdGhpcy52aXNpYmxlPSEwfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50WzBdLnN0eWxlLnZpc2liaWxpdHk9XCJoaWRkZW5cIix0aGlzLnZpc2libGU9ITF9LHVybDpmdW5jdGlvbigpe3ZhciB0PXModGhpcy5vcHRpb25zLnVybFRlbXBsYXRlKTtyZXR1cm4gdCh0aGlzLnVybE9wdGlvbnMoKSl9LGVycm9yVXJsOmZ1bmN0aW9uKCl7dmFyIHQ9cyh0aGlzLm9wdGlvbnMuZXJyb3JVcmxUZW1wbGF0ZSk7cmV0dXJuIHQodGhpcy51cmxPcHRpb25zKCkpfSx1cmxPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3JldHVybnt6b29tOnQuem9vbSxzdWJkb21haW46dC5zdWJkb21haW4sejp0Lnpvb20seDp0LmluZGV4LngseTp0LmluZGV4Lnksczp0LnN1YmRvbWFpbixxdWFka2V5OnQucXVhZGtleSxxOnQucXVhZGtleSxjdWx0dXJlOnQuY3VsdHVyZSxjOnQuY3VsdHVyZX19LGRlc3Ryb3k6ZnVuY3Rpb24oKXtcbiAgICB0aGlzLmVsZW1lbnQmJih0aGlzLmVsZW1lbnQucmVtb3ZlKCksdGhpcy5lbGVtZW50PW51bGwpfX0pLHc9ci5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oKXt0aGlzLl9pdGVtcz1bXX0sb3B0aW9uczp7bWF4U2l6ZToxMDB9LGdldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9pdGVtcy5sZW5ndGg+PXRoaXMub3B0aW9ucy5tYXhTaXplJiZ0aGlzLl9yZW1vdmUodCksdGhpcy5fY3JlYXRlKGUpfSxlbXB0eTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5faXRlbXM7Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLmRlc3Ryb3koKTt0aGlzLl9pdGVtcz1bXX0scmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuX2l0ZW1zO2Zvcih0PTA7dDxlLmxlbmd0aDt0KyspZVt0XS5oaWRlKCl9LF9jcmVhdGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuPXRoaXMuX2l0ZW1zLG89Zi5oYXNoS2V5KFwiXCIrdC5wb2ludCsoXCJcIit0Lm9mZnNldCkrdC56b29tK3QudXJsVGVtcGxhdGUpO2ZvcihpPTA7aTxuLmxlbmd0aDtpKyspaWYobltpXS5pZD09PW8pe2U9bltpXTticmVha31yZXR1cm4gZT9lLnNob3coKTooZT1uZXcgeShvLHQpLHRoaXMuX2l0ZW1zLnB1c2goZSkpLGV9LF9yZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuPXRoaXMuX2l0ZW1zLG89LTEsYT0tMTtmb3IoZT0wO2U8bi5sZW5ndGg7ZSsrKWk9bltlXS5vcHRpb25zLnBvaW50LmRpc3RhbmNlVG8odCksaT5vJiYhbltlXS52aXNpYmxlJiYoYT1lLG89aSk7YSE9PS0xJiYoblthXS5kZXN0cm95KCksbi5zcGxpY2UoYSwxKSl9fSk7bChoLHttYXA6e2xheWVyczp7dGlsZTp2LFRpbGVMYXllcjp2LEltYWdlVGlsZTp5LFRpbGVQb29sOncsVGlsZVZpZXc6Z319fSl9KHdpbmRvdy5rZW5kby5qUXVlcnkpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKHQsZSxpKXsoaXx8ZSkoKX0pLGZ1bmN0aW9uKHQsZGVmaW5lKXtkZWZpbmUoXCJkYXRhdml6L21hcC9sYXllcnMvYmluZy5taW5cIixbXCJkYXRhdml6L21hcC9sYXllcnMvdGlsZS5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQsZSl7dmFyIGk9d2luZG93LmtlbmRvLG49aS5kYXRhdml6LG89aS5kZWVwRXh0ZW5kLGE9aS51dGlsLmRlZmluZWQscj1uLm1hcC5FeHRlbnQscz1uLm1hcC5Mb2NhdGlvbixoPW4ubWFwLmxheWVycy5UaWxlTGF5ZXIsbD1uLm1hcC5sYXllcnMuVGlsZVZpZXcsYz1oLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLGkpe3RoaXMub3B0aW9ucy5iYXNlVXJsPXRoaXMuX3NjaGVtZSgpK1wiOi8vZGV2LnZpcnR1YWxlYXJ0aC5uZXQvUkVTVC92MS9JbWFnZXJ5L01ldGFkYXRhL1wiLGguZm4uaW5pdC5jYWxsKHRoaXMsZSxpKSx0aGlzLl9vbk1ldGFkYXRhPXQucHJveHkodGhpcy5fb25NZXRhZGF0YSx0aGlzKSx0aGlzLl9mZXRjaE1ldGFkYXRhKCl9LG9wdGlvbnM6e2ltYWdlcnlTZXQ6XCJyb2FkXCJ9LF9mZXRjaE1ldGFkYXRhOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO2lmKCFlLmtleSl0aHJvdyBFcnJvcihcIkJpbmcgdGlsZSBsYXllcjogQVBJIGtleSBpcyByZXF1aXJlZFwiKTt0LmFqYXgoe3VybDplLmJhc2VVcmwrZS5pbWFnZXJ5U2V0LGRhdGE6e291dHB1dDpcImpzb25cIixpbmNsdWRlOlwiSW1hZ2VyeVByb3ZpZGVyc1wiLGtleTplLmtleSx1cmlTY2hlbWU6dGhpcy5fc2NoZW1lKCl9LHR5cGU6XCJnZXRcIixkYXRhVHlwZTpcImpzb25wXCIsanNvbnA6XCJqc29ucFwiLHN1Y2Nlc3M6dGhpcy5fb25NZXRhZGF0YX0pfSxfc2NoZW1lOmZ1bmN0aW9uKHQpe3JldHVybiB0PXR8fHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCxcImh0dHBzXCI9PT10LnJlcGxhY2UoXCI6XCIsXCJcIik/XCJodHRwc1wiOlwiaHR0cFwifSxfb25NZXRhZGF0YTpmdW5jdGlvbih0KXt2YXIgZSxpO3QmJnQucmVzb3VyY2VTZXRzLmxlbmd0aCYmKGU9dGhpcy5yZXNvdXJjZT10LnJlc291cmNlU2V0c1swXS5yZXNvdXJjZXNbMF0sbyh0aGlzLl92aWV3Lm9wdGlvbnMse3VybFRlbXBsYXRlOmUuaW1hZ2VVcmwucmVwbGFjZShcIntzdWJkb21haW59XCIsXCIjPSBzdWJkb21haW4gI1wiKS5yZXBsYWNlKFwie3F1YWRrZXl9XCIsXCIjPSBxdWFka2V5ICNcIikucmVwbGFjZShcIntjdWx0dXJlfVwiLFwiIz0gY3VsdHVyZSAjXCIpLHN1YmRvbWFpbnM6ZS5pbWFnZVVybFN1YmRvbWFpbnN9KSxpPXRoaXMub3B0aW9ucyxhKGkubWluWm9vbSl8fChpLm1pblpvb209ZS56b29tTWluKSxhKGkubWF4Wm9vbSl8fChpLm1heFpvb209ZS56b29tTWF4KSx0aGlzLl9hZGRBdHRyaWJ1dGlvbigpLFwibm9uZVwiIT09dGhpcy5lbGVtZW50LmNzcyhcImRpc3BsYXlcIikmJnRoaXMuX3Jlc2V0KCkpfSxfdmlld1R5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sX2FkZEF0dHJpYnV0aW9uOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4sbyxhPXRoaXMubWFwLmF0dHJpYnV0aW9uO2lmKGEmJih0PXRoaXMucmVzb3VyY2UuaW1hZ2VyeVByb3ZpZGVycykpZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylmb3IoaT10W2VdLG49MDtuPGkuY292ZXJhZ2VBcmVhcy5sZW5ndGg7bisrKW89aS5jb3ZlcmFnZUFyZWFzW25dLGEuYWRkKHt0ZXh0OmkuYXR0cmlidXRpb24sbWluWm9vbTpvLnpvb21NaW4sbWF4Wm9vbTpvLnpvb21NYXgsZXh0ZW50Om5ldyByKG5ldyBzKG8uYmJveFsyXSxvLmJib3hbMV0pLG5ldyBzKG8uYmJveFswXSxvLmJib3hbM10pKX0pfSxpbWFnZXJ5U2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0Pyh0aGlzLm9wdGlvbnMuaW1hZ2VyeVNldD10LHRoaXMubWFwLmF0dHJpYnV0aW9uLmNsZWFyKCksdGhpcy5fZmV0Y2hNZXRhZGF0YSgpLGUpOnRoaXMub3B0aW9ucy5pbWFnZXJ5U2V0fX0pLHU9bC5leHRlbmQoe29wdGlvbnM6e2N1bHR1cmU6XCJlbi1VU1wifSx0aWxlT3B0aW9uczpmdW5jdGlvbih0KXt2YXIgZT1sLmZuLnRpbGVPcHRpb25zLmNhbGwodGhpcyx0KTtyZXR1cm4gZS5jdWx0dXJlPXRoaXMub3B0aW9ucy5jdWx0dXJlLGUucXVhZGtleT10aGlzLnRpbGVRdWFkS2V5KHRoaXMud3JhcEluZGV4KHQpKSxlfSx0aWxlUXVhZEtleTpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbz1cIlwiO2ZvcihuPXRoaXMuX3pvb207bj4wO24tLSllPTAsaT0xPDxuLTEsMCE9PSh0LngmaSkmJmUrKywwIT09KHQueSZpKSYmKGUrPTIpLG8rPWU7cmV0dXJuIG99fSk7byhuLHttYXA6e2xheWVyczp7YmluZzpjLEJpbmdMYXllcjpjLEJpbmdWaWV3OnV9fX0pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsaSl7KGl8fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwiZGF0YXZpei9tYXAvbGF5ZXJzL21hcmtlci5taW5cIixbXCJkYXRhdml6L21hcC9sYXllcnMvYmFzZS5taW5cIixcImRhdGF2aXovbWFwL2xvY2F0aW9uLm1pblwiLFwia2VuZG8uZGF0YS5taW5cIixcImtlbmRvLnRvb2x0aXAubWluXCJdLHQpfShmdW5jdGlvbigpeyFmdW5jdGlvbih0LGUpe3ZhciBpPWRvY3VtZW50LG49TWF0aCxvPXQuaW5BcnJheSxhPXQucHJveHkscj13aW5kb3cua2VuZG8scz1yLkNsYXNzLGg9ci5kYXRhLkRhdGFTb3VyY2UsbD1yLnVpLlRvb2x0aXAsYz1yLmRhdGF2aXosdT1yLmRlZXBFeHRlbmQsZD1jLm1hcCxmPWQuTG9jYXRpb24scD1kLmxheWVycy5MYXllcixtPXAuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7cC5mbi5pbml0LmNhbGwodGhpcyx0LGUpLHRoaXMuX21hcmtlckNsaWNrPWEodGhpcy5fbWFya2VyQ2xpY2ssdGhpcyksdGhpcy5lbGVtZW50Lm9uKFwiY2xpY2tcIixcIi5rLW1hcmtlclwiLHRoaXMuX21hcmtlckNsaWNrKSx0aGlzLml0ZW1zPVtdLHRoaXMuX2luaXREYXRhU291cmNlKCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtwLmZuLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLmVsZW1lbnQub2ZmKFwiY2xpY2tcIixcIi5rLW1hcmtlclwiLHRoaXMuX21hcmtlckNsaWNrKSx0aGlzLmRhdGFTb3VyY2UudW5iaW5kKFwiY2hhbmdlXCIsdGhpcy5fZGF0YUNoYW5nZSksdGhpcy5jbGVhcigpfSxvcHRpb25zOnt6SW5kZXg6MWUzLGF1dG9CaW5kOiEwLGRhdGFTb3VyY2U6e30sbG9jYXRpb25GaWVsZDpcImxvY2F0aW9uXCIsdGl0bGVGaWVsZDpcInRpdGxlXCJ9LGFkZDpmdW5jdGlvbihlKXtpZighdC5pc0FycmF5KGUpKXJldHVybiB0aGlzLl9hZGRPbmUoZSk7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspdGhpcy5fYWRkT25lKGVbaV0pfSxyZW1vdmU6ZnVuY3Rpb24odCl7dC5kZXN0cm95KCk7dmFyIGU9byh0LHRoaXMuaXRlbXMpO2U+LTEmJnRoaXMuaXRlbXMuc3BsaWNlKGUsMSl9LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDx0aGlzLml0ZW1zLmxlbmd0aDt0KyspdGhpcy5pdGVtc1t0XS5kZXN0cm95KCk7dGhpcy5pdGVtcz1bXX0sdXBkYXRlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5sb2NhdGlvbigpO2kmJih0LnNob3dBdCh0aGlzLm1hcC5sb2NhdGlvblRvVmlldyhpKSksZT17bWFya2VyOnQsbGF5ZXI6dGhpc30sdGhpcy5tYXAudHJpZ2dlcihcIm1hcmtlckFjdGl2YXRlXCIsZSkpfSxfcmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdCxlO2ZvcihwLmZuLl9yZXNldC5jYWxsKHRoaXMpLHQ9dGhpcy5pdGVtcyxlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy51cGRhdGUodFtlXSl9LGJpbmQ6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLG89ZC5NYXJrZXIuY3JlYXRlKHQsdGhpcy5vcHRpb25zKTtpZihvLmRhdGFJdGVtPWUsaT17bWFya2VyOm8sbGF5ZXI6dGhpc30sbj10aGlzLm1hcC50cmlnZ2VyKFwibWFya2VyQ3JlYXRlZFwiLGkpLCFuKXJldHVybiB0aGlzLmFkZChvKSxvfSxzZXREYXRhU291cmNlOmZ1bmN0aW9uKHQpe3RoaXMuZGF0YVNvdXJjZSYmdGhpcy5kYXRhU291cmNlLnVuYmluZChcImNoYW5nZVwiLHRoaXMuX2RhdGFDaGFuZ2UpLHRoaXMuZGF0YVNvdXJjZT1yLmRhdGEuRGF0YVNvdXJjZS5jcmVhdGUodCksdGhpcy5kYXRhU291cmNlLmJpbmQoXCJjaGFuZ2VcIix0aGlzLl9kYXRhQ2hhbmdlKSx0aGlzLm9wdGlvbnMuYXV0b0JpbmQmJnRoaXMuZGF0YVNvdXJjZS5mZXRjaCgpfSxfYWRkT25lOmZ1bmN0aW9uKHQpe3ZhciBlPV8uY3JlYXRlKHQsdGhpcy5vcHRpb25zKTtyZXR1cm4gZS5hZGRUbyh0aGlzKSxlfSxfaW5pdERhdGFTb3VyY2U6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuZGF0YVNvdXJjZTt0aGlzLl9kYXRhQ2hhbmdlPWEodGhpcy5fZGF0YUNoYW5nZSx0aGlzKSx0aGlzLmRhdGFTb3VyY2U9aC5jcmVhdGUodCkuYmluZChcImNoYW5nZVwiLHRoaXMuX2RhdGFDaGFuZ2UpLHQmJnRoaXMub3B0aW9ucy5hdXRvQmluZCYmdGhpcy5kYXRhU291cmNlLmZldGNoKCl9LF9kYXRhQ2hhbmdlOmZ1bmN0aW9uKHQpe3RoaXMuX2xvYWQodC5zZW5kZXIudmlldygpKX0sX2xvYWQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG87Zm9yKHRoaXMuX2RhdGE9dCx0aGlzLmNsZWFyKCksZT1yLmdldHRlcih0aGlzLm9wdGlvbnMubG9jYXRpb25GaWVsZCksaT1yLmdldHRlcih0aGlzLm9wdGlvbnMudGl0bGVGaWVsZCksbj0wO248dC5sZW5ndGg7bisrKW89dFtuXSx0aGlzLmJpbmQoe2xvY2F0aW9uOmUobyksdGl0bGU6aShvKX0sbyl9LF9tYXJrZXJDbGljazpmdW5jdGlvbihlKXt2YXIgaT17bWFya2VyOnQoZS50YXJnZXQpLmRhdGEoXCJrZW5kb01hcmtlclwiKSxsYXllcjp0aGlzfTt0aGlzLm1hcC50cmlnZ2VyKFwibWFya2VyQ2xpY2tcIixpKX19KSxfPXMuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz10fHx7fX0sYWRkVG86ZnVuY3Rpb24odCl7dGhpcy5sYXllcj10Lm1hcmtlcnN8fHQsdGhpcy5sYXllci5pdGVtcy5wdXNoKHRoaXMpLHRoaXMubGF5ZXIudXBkYXRlKHRoaXMpfSxsb2NhdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdD8odGhpcy5vcHRpb25zLmxvY2F0aW9uPWYuY3JlYXRlKHQpLnRvQXJyYXkoKSx0aGlzLmxheWVyJiZ0aGlzLmxheWVyLnVwZGF0ZSh0aGlzKSx0aGlzKTpmLmNyZWF0ZSh0aGlzLm9wdGlvbnMubG9jYXRpb24pfSxzaG93QXQ6ZnVuY3Rpb24odCl7dGhpcy5yZW5kZXIoKSx0aGlzLmVsZW1lbnQuY3NzKHtsZWZ0Om4ucm91bmQodC54KSx0b3A6bi5yb3VuZCh0LnkpfSksdGhpcy50b29sdGlwJiZ0aGlzLnRvb2x0aXAucG9wdXAmJnRoaXMudG9vbHRpcC5wb3B1cC5fcG9zaXRpb24oKX0saGlkZTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudCYmKHRoaXMuZWxlbWVudC5yZW1vdmUoKSx0aGlzLmVsZW1lbnQ9bnVsbCksdGhpcy50b29sdGlwJiYodGhpcy50b29sdGlwLmRlc3Ryb3koKSx0aGlzLnRvb2x0aXA9bnVsbCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmxheWVyPW51bGwsdGhpcy5oaWRlKCl9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlLG47dGhpcy5lbGVtZW50fHwoZT10aGlzLm9wdGlvbnMsbj10aGlzLmxheWVyLHRoaXMuZWxlbWVudD10KGkuY3JlYXRlRWxlbWVudChcInNwYW5cIikpLmFkZENsYXNzKFwiay1tYXJrZXIgay1tYXJrZXItXCIrci50b0h5cGhlbnMoZS5zaGFwZXx8XCJwaW5cIikpLmF0dHIoXCJ0aXRsZVwiLGUudGl0bGUpLmF0dHIoZS5hdHRyaWJ1dGVzfHx7fSkuZGF0YShcImtlbmRvTWFya2VyXCIsdGhpcykuY3NzKFwiekluZGV4XCIsZS56SW5kZXgpLG4mJm4uZWxlbWVudC5hcHBlbmQodGhpcy5lbGVtZW50KSx0aGlzLnJlbmRlclRvb2x0aXAoKSl9LHJlbmRlclRvb2x0aXA6ZnVuY3Rpb24oKXt2YXIgdCxlLGk9dGhpcyxuPWkub3B0aW9ucy50aXRsZSxvPWkub3B0aW9ucy50b29sdGlwfHx7fTtvJiZsJiYodD1vLnRlbXBsYXRlLHQmJihlPXIudGVtcGxhdGUodCksby5jb250ZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0LmxvY2F0aW9uPWkubG9jYXRpb24oKSx0Lm1hcmtlcj1pLGUodCl9KSwobnx8by5jb250ZW50fHxvLmNvbnRlbnRVcmwpJiYodGhpcy50b29sdGlwPW5ldyBsKHRoaXMuZWxlbWVudCxvKSx0aGlzLnRvb2x0aXAubWFya2VyPXRoaXMpKX19KTtfLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2YgXz90Om5ldyBfKHUoe30sZSx0KSl9LHUoYyx7bWFwOntsYXllcnM6e21hcmtlcjptLE1hcmtlckxheWVyOm19LE1hcmtlcjpffX0pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbih0LGUsaSl7KGl8fGUpKCl9KSxmdW5jdGlvbih0LGRlZmluZSl7ZGVmaW5lKFwiZGF0YXZpei9tYXAvbWFpbi5taW5cIixbXCJkYXRhdml6L21hcC9jcnMubWluXCIsXCJkYXRhdml6L21hcC9sb2NhdGlvbi5taW5cIl0sdCl9KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQsZSl7dmFyIGk9ZG9jdW1lbnQsbj1NYXRoLG89bi5taW4sYT1uLnBvdyxyPXQucHJveHkscz13aW5kb3cua2VuZG8saD1zLnVpLldpZGdldCxsPXMuZGVlcEV4dGVuZCxjPXMuZGF0YXZpeix1PWMudWksZD1zLmdlb21ldHJ5LGY9ZC5Qb2ludCxwPWMubWFwLG09cC5FeHRlbnQsXz1wLkxvY2F0aW9uLHY9cC5jcnMuRVBTRzM4NTcsZz1zLnV0aWwseT1nLmRlZmluZWQsdz1nLmxpbWl0VmFsdWUsYj1nLnJlbmRlclBvcyx4PWcudmFsdWVPckRlZmF1bHQsaz1cImstXCIsej0uOSxUPS45MyxTPVwiRE9NTW91c2VTY3JvbGwgbW91c2V3aGVlbFwiLEM9NSxFPWguZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7cy5kZXN0cm95KHQpLGguZm4uaW5pdC5jYWxsKHRoaXMsdCksdGhpcy5faW5pdE9wdGlvbnMoZSksdGhpcy5iaW5kKHRoaXMuZXZlbnRzLGUpLHRoaXMuY3JzPW5ldyB2LHRoaXMuZWxlbWVudC5hZGRDbGFzcyhrK3RoaXMub3B0aW9ucy5uYW1lLnRvTG93ZXJDYXNlKCkpLmNzcyhcInBvc2l0aW9uXCIsXCJyZWxhdGl2ZVwiKS5lbXB0eSgpLmFwcGVuZChpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLHRoaXMuX3ZpZXdPcmlnaW49dGhpcy5fZ2V0T3JpZ2luKCksdGhpcy5faW5pdFNjcm9sbGVyKCksdGhpcy5faW5pdE1hcmtlcnMoKSx0aGlzLl9pbml0Q29udHJvbHMoKSx0aGlzLl9pbml0TGF5ZXJzKCksdGhpcy5fcmVzZXQoKSx0aGlzLl9tb3VzZXdoZWVsPXIodGhpcy5fbW91c2V3aGVlbCx0aGlzKSx0aGlzLmVsZW1lbnQuYmluZChcImNsaWNrXCIscih0aGlzLl9jbGljayx0aGlzKSksdGhpcy5lbGVtZW50LmJpbmQoUyx0aGlzLl9tb3VzZXdoZWVsKX0sb3B0aW9uczp7bmFtZTpcIk1hcFwiLGNvbnRyb2xzOnthdHRyaWJ1dGlvbjohMCxuYXZpZ2F0b3I6e3BhblN0ZXA6MTAwfSx6b29tOiEwfSxsYXllcnM6W10sbGF5ZXJEZWZhdWx0czp7c2hhcGU6e3N0eWxlOntmaWxsOntjb2xvcjpcIiNmZmZcIn0sc3Ryb2tlOntjb2xvcjpcIiNhYWFcIix3aWR0aDouNX19fSxidWJibGU6e3N0eWxlOntmaWxsOntjb2xvcjpcIiNmZmZcIixvcGFjaXR5Oi41fSxzdHJva2U6e2NvbG9yOlwiI2FhYVwiLHdpZHRoOi41fX19LG1hcmtlcjp7c2hhcGU6XCJwaW5UYXJnZXRcIix0b29sdGlwOntwb3NpdGlvbjpcInRvcFwifX19LGNlbnRlcjpbMCwwXSx6b29tOjMsbWluU2l6ZToyNTYsbWluWm9vbToxLG1heFpvb206MTksbWFya2VyczpbXSxtYXJrZXJEZWZhdWx0czp7c2hhcGU6XCJwaW5UYXJnZXRcIix0b29sdGlwOntwb3NpdGlvbjpcInRvcFwifX0sd3JhcGFyb3VuZDohMH0sZXZlbnRzOltcImJlZm9yZVJlc2V0XCIsXCJjbGlja1wiLFwibWFya2VyQWN0aXZhdGVcIixcIm1hcmtlckNsaWNrXCIsXCJtYXJrZXJDcmVhdGVkXCIsXCJwYW5cIixcInBhbkVuZFwiLFwicmVzZXRcIixcInNoYXBlQ2xpY2tcIixcInNoYXBlQ3JlYXRlZFwiLFwic2hhcGVGZWF0dXJlQ3JlYXRlZFwiLFwic2hhcGVNb3VzZUVudGVyXCIsXCJzaGFwZU1vdXNlTGVhdmVcIixcInpvb21FbmRcIixcInpvb21TdGFydFwiXSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxlci5kZXN0cm95KCksdGhpcy5uYXZpZ2F0b3ImJnRoaXMubmF2aWdhdG9yLmRlc3Ryb3koKSx0aGlzLmF0dHJpYnV0aW9uJiZ0aGlzLmF0dHJpYnV0aW9uLmRlc3Ryb3koKSx0aGlzLnpvb21Db250cm9sJiZ0aGlzLnpvb21Db250cm9sLmRlc3Ryb3koKSx0aGlzLm1hcmtlcnMuZGVzdHJveSgpO2Zvcih2YXIgdD0wO3Q8dGhpcy5sYXllcnMubGVuZ3RoO3QrKyl0aGlzLmxheWVyc1t0XS5kZXN0cm95KCk7aC5mbi5kZXN0cm95LmNhbGwodGhpcyl9LHpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zO3JldHVybiB5KHQpPyh0PW4ucm91bmQodyh0LGUubWluWm9vbSxlLm1heFpvb20pKSxlLnpvb20hPT10JiYoZS56b29tPXQsdGhpcy5fcmVzZXQoKSksdGhpcyk6ZS56b29tfSxjZW50ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ/KHRoaXMub3B0aW9ucy5jZW50ZXI9Xy5jcmVhdGUodCkudG9BcnJheSgpLHRoaXMuX3Jlc2V0KCksdGhpcyk6Xy5jcmVhdGUodGhpcy5vcHRpb25zLmNlbnRlcil9LGV4dGVudDpmdW5jdGlvbih0KXtyZXR1cm4gdD8odGhpcy5fc2V0RXh0ZW50KHQpLHRoaXMpOnRoaXMuX2dldEV4dGVudCgpfSxzZXRPcHRpb25zOmZ1bmN0aW9uKHQpe2guZm4uc2V0T3B0aW9ucy5jYWxsKHRoaXMsdCksdGhpcy5fcmVzZXQoKX0sbG9jYXRpb25Ub0xheWVyOmZ1bmN0aW9uKHQsZSl7dmFyIGk9IXRoaXMub3B0aW9ucy53cmFwYXJvdW5kO3JldHVybiB0PV8uY3JlYXRlKHQpLHRoaXMuY3JzLnRvUG9pbnQodCx0aGlzLl9sYXllclNpemUoZSksaSl9LGxheWVyVG9Mb2NhdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBpPSF0aGlzLm9wdGlvbnMud3JhcGFyb3VuZDtyZXR1cm4gdD1mLmNyZWF0ZSh0KSx0aGlzLmNycy50b0xvY2F0aW9uKHQsdGhpcy5fbGF5ZXJTaXplKGUpLGkpfSxsb2NhdGlvblRvVmlldzpmdW5jdGlvbih0KXt2YXIgZSxpO3JldHVybiB0PV8uY3JlYXRlKHQpLGU9dGhpcy5sb2NhdGlvblRvTGF5ZXIodGhpcy5fdmlld09yaWdpbiksaT10aGlzLmxvY2F0aW9uVG9MYXllcih0KSxpLnRyYW5zbGF0ZVdpdGgoZS5zY2FsZSgtMSkpfSx2aWV3VG9Mb2NhdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMubG9jYXRpb25Ub0xheWVyKHRoaXMuX2dldE9yaWdpbigpLGUpO3JldHVybiB0PWYuY3JlYXRlKHQpLHQ9dC5jbG9uZSgpLnRyYW5zbGF0ZVdpdGgoaSksdGhpcy5sYXllclRvTG9jYXRpb24odCxlKX0sZXZlbnRPZmZzZXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5lbGVtZW50Lm9mZnNldCgpLGk9dC5vcmlnaW5hbEV2ZW50fHx0LG49eChpLnBhZ2VYLGkuY2xpZW50WCktZS5sZWZ0LG89eChpLnBhZ2VZLGkuY2xpZW50WSktZS50b3A7cmV0dXJuIG5ldyBkLlBvaW50KG4sbyl9LGV2ZW50VG9WaWV3OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZXZlbnRPZmZzZXQodCk7cmV0dXJuIHRoaXMubG9jYXRpb25Ub1ZpZXcodGhpcy52aWV3VG9Mb2NhdGlvbihlKSl9LGV2ZW50VG9MYXllcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sb2NhdGlvblRvTGF5ZXIodGhpcy5ldmVudFRvTG9jYXRpb24odCkpfSxldmVudFRvTG9jYXRpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5ldmVudE9mZnNldCh0KTtyZXR1cm4gdGhpcy52aWV3VG9Mb2NhdGlvbihlKX0sdmlld1NpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnQsZT10aGlzLl9sYXllclNpemUoKSxpPXQud2lkdGgoKTtyZXR1cm4gdGhpcy5vcHRpb25zLndyYXBhcm91bmR8fChpPW8oZSxpKSkse3dpZHRoOmksaGVpZ2h0Om8oZSx0LmhlaWdodCgpKX19LGV4cG9ydFZpc3VhbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXNldCgpLCExfSxfc2V0T3JpZ2luOmZ1bmN0aW9uKHQsZSl7dmFyIGksbj10aGlzLnZpZXdTaXplKCk7cmV0dXJuIHQ9dGhpcy5fb3JpZ2luPV8uY3JlYXRlKHQpLGk9dGhpcy5sb2NhdGlvblRvTGF5ZXIodCxlKSxpLngrPW4ud2lkdGgvMixpLnkrPW4uaGVpZ2h0LzIsdGhpcy5vcHRpb25zLmNlbnRlcj10aGlzLmxheWVyVG9Mb2NhdGlvbihpLGUpLnRvQXJyYXkoKSx0aGlzfSxfZ2V0T3JpZ2luOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy52aWV3U2l6ZSgpO3JldHVybiF0JiZ0aGlzLl9vcmlnaW58fChlPXRoaXMubG9jYXRpb25Ub0xheWVyKHRoaXMuY2VudGVyKCkpLGUueC09aS53aWR0aC8yLGUueS09aS5oZWlnaHQvMix0aGlzLl9vcmlnaW49dGhpcy5sYXllclRvTG9jYXRpb24oZSkpLHRoaXMuX29yaWdpbn0sX3NldEV4dGVudDpmdW5jdGlvbih0KXt2YXIgZSxpLG8sYSxyLHMsaDtmb3IodD1tLmNyZWF0ZSh0KSx0aGlzLmNlbnRlcih0LmNlbnRlcigpKSxlPXRoaXMuZWxlbWVudC53aWR0aCgpLGk9dGhpcy5lbGVtZW50LmhlaWdodCgpLG89dGhpcy5vcHRpb25zLm1heFpvb207bz49dGhpcy5vcHRpb25zLm1pblpvb20mJihhPXRoaXMubG9jYXRpb25Ub0xheWVyKHQubncsbykscj10aGlzLmxvY2F0aW9uVG9MYXllcih0LnNlLG8pLHM9bi5hYnMoci54LWEueCksaD1uLmFicyhyLnktYS55KSwhKHM8PWUmJmg8PWkpKTtvLS0pO3RoaXMuem9vbShvKX0sX2dldEV4dGVudDpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5fZ2V0T3JpZ2luKCksaT10aGlzLmxvY2F0aW9uVG9MYXllcihlKSxuPXRoaXMudmlld1NpemUoKTtyZXR1cm4gaS54Kz1uLndpZHRoLGkueSs9bi5oZWlnaHQsdD10aGlzLmxheWVyVG9Mb2NhdGlvbihpKSxuZXcgbShlLHQpfSxfem9vbUFyb3VuZDpmdW5jdGlvbih0LGUpe3RoaXMuX3NldE9yaWdpbih0aGlzLmxheWVyVG9Mb2NhdGlvbih0LGUpLGUpLHRoaXMuem9vbShlKX0sX2luaXRDb250cm9sczpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5jb250cm9sczt1LkF0dHJpYnV0aW9uJiZ0LmF0dHJpYnV0aW9uJiZ0aGlzLl9jcmVhdGVBdHRyaWJ1dGlvbih0LmF0dHJpYnV0aW9uKSxzLnN1cHBvcnQubW9iaWxlT1N8fCh1Lk5hdmlnYXRvciYmdC5uYXZpZ2F0b3ImJnRoaXMuX2NyZWF0ZU5hdmlnYXRvcih0Lm5hdmlnYXRvciksdS5ab29tQ29udHJvbCYmdC56b29tJiZ0aGlzLl9jcmVhdGVab29tQ29udHJvbCh0Lnpvb20pKX0sX2NyZWF0ZUNvbnRyb2xFbGVtZW50OmZ1bmN0aW9uKGUsaSl7dmFyIG49ZS5wb3NpdGlvbnx8aSxvPVwiLlwiK2IobikucmVwbGFjZShcIiBcIixcIi5cIiksYT10KFwiLmstbWFwLWNvbnRyb2xzXCIrbyx0aGlzLmVsZW1lbnQpO3JldHVybiAwPT09YS5sZW5ndGgmJihhPXQoXCI8ZGl2PlwiKS5hZGRDbGFzcyhcImstbWFwLWNvbnRyb2xzIFwiK2IobikpLmFwcGVuZFRvKHRoaXMuZWxlbWVudCkpLHQoXCI8ZGl2PlwiKS5hcHBlbmRUbyhhKX0sX2NyZWF0ZUF0dHJpYnV0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2NyZWF0ZUNvbnRyb2xFbGVtZW50KHQsXCJib3R0b21SaWdodFwiKTt0aGlzLmF0dHJpYnV0aW9uPW5ldyB1LkF0dHJpYnV0aW9uKGUsdCl9LF9jcmVhdGVOYXZpZ2F0b3I6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fY3JlYXRlQ29udHJvbEVsZW1lbnQodCxcInRvcExlZnRcIiksaT10aGlzLm5hdmlnYXRvcj1uZXcgdS5OYXZpZ2F0b3IoZSx0KTt0aGlzLl9uYXZpZ2F0b3JQYW49cih0aGlzLl9uYXZpZ2F0b3JQYW4sdGhpcyksaS5iaW5kKFwicGFuXCIsdGhpcy5fbmF2aWdhdG9yUGFuKSx0aGlzLl9uYXZpZ2F0b3JDZW50ZXI9cih0aGlzLl9uYXZpZ2F0b3JDZW50ZXIsdGhpcyksaS5iaW5kKFwiY2VudGVyXCIsdGhpcy5fbmF2aWdhdG9yQ2VudGVyKX0sX25hdmlnYXRvclBhbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9ZS5zY3JvbGxlcixuPWkuc2Nyb2xsTGVmdCt0Lngsbz1pLnNjcm9sbFRvcC10LnksYT10aGlzLl92aXJ0dWFsU2l6ZSxyPXRoaXMuZWxlbWVudC5oZWlnaHQoKSxzPXRoaXMuZWxlbWVudC53aWR0aCgpO249dyhuLGEueC5taW4sYS54Lm1heC1zKSxvPXcobyxhLnkubWluLGEueS5tYXgtciksZS5zY3JvbGxlci5vbmUoXCJzY3JvbGxcIixmdW5jdGlvbih0KXtlLl9zY3JvbGxFbmQodCl9KSxlLnNjcm9sbGVyLnNjcm9sbFRvKC1uLC1vKX0sX25hdmlnYXRvckNlbnRlcjpmdW5jdGlvbigpe3RoaXMuY2VudGVyKHRoaXMub3B0aW9ucy5jZW50ZXIpfSxfY3JlYXRlWm9vbUNvbnRyb2w6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fY3JlYXRlQ29udHJvbEVsZW1lbnQodCxcInRvcExlZnRcIiksaT10aGlzLnpvb21Db250cm9sPW5ldyB1Llpvb21Db250cm9sKGUsdCk7dGhpcy5fem9vbUNvbnRyb2xDaGFuZ2U9cih0aGlzLl96b29tQ29udHJvbENoYW5nZSx0aGlzKSxpLmJpbmQoXCJjaGFuZ2VcIix0aGlzLl96b29tQ29udHJvbENoYW5nZSl9LF96b29tQ29udHJvbENoYW5nZTpmdW5jdGlvbih0KXt0aGlzLnRyaWdnZXIoXCJ6b29tU3RhcnRcIix7b3JpZ2luYWxFdmVudDp0fSl8fCh0aGlzLnpvb20odGhpcy56b29tKCkrdC5kZWx0YSksdGhpcy50cmlnZ2VyKFwiem9vbUVuZFwiLHtvcmlnaW5hbEV2ZW50OnR9KSl9LF9pbml0U2Nyb2xsZXI6ZnVuY3Rpb24oKXt2YXIgdD1zLnN1cHBvcnQubW9iaWxlT1M/VDp6LGU9dGhpcy5vcHRpb25zLnpvb21hYmxlIT09ITEsaT10aGlzLnNjcm9sbGVyPW5ldyBzLm1vYmlsZS51aS5TY3JvbGxlcih0aGlzLmVsZW1lbnQuY2hpbGRyZW4oMCkse2ZyaWN0aW9uOnQsdmVsb2NpdHlNdWx0aXBsaWVyOkMsem9vbTplLG1vdXNld2hlZWxTY3JvbGxpbmc6ITF9KTtpLmJpbmQoXCJzY3JvbGxcIixyKHRoaXMuX3Njcm9sbCx0aGlzKSksaS5iaW5kKFwic2Nyb2xsRW5kXCIscih0aGlzLl9zY3JvbGxFbmQsdGhpcykpLGkudXNlckV2ZW50cy5iaW5kKFwiZ2VzdHVyZXN0YXJ0XCIscih0aGlzLl9zY2FsZVN0YXJ0LHRoaXMpKSxpLnVzZXJFdmVudHMuYmluZChcImdlc3R1cmVlbmRcIixyKHRoaXMuX3NjYWxlLHRoaXMpKSx0aGlzLnNjcm9sbEVsZW1lbnQ9aS5zY3JvbGxFbGVtZW50fSxfaW5pdExheWVyczpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLG8sYT10aGlzLm9wdGlvbnMubGF5ZXJzLHI9dGhpcy5sYXllcnM9W107Zm9yKHQ9MDt0PGEubGVuZ3RoO3QrKyllPWFbdF0saT1lLnR5cGV8fFwic2hhcGVcIixuPXRoaXMub3B0aW9ucy5sYXllckRlZmF1bHRzW2ldLG89Yy5tYXAubGF5ZXJzW2ldLHIucHVzaChuZXcgbyh0aGlzLGwoe30sbixlKSkpfSxfaW5pdE1hcmtlcnM6ZnVuY3Rpb24oKXt0aGlzLm1hcmtlcnM9bmV3IHAubGF5ZXJzLk1hcmtlckxheWVyKHRoaXMsdGhpcy5vcHRpb25zLm1hcmtlckRlZmF1bHRzKSx0aGlzLm1hcmtlcnMuYWRkKHRoaXMub3B0aW9ucy5tYXJrZXJzKX0sX3Njcm9sbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmxvY2F0aW9uVG9MYXllcih0aGlzLl92aWV3T3JpZ2luKS5yb3VuZCgpLGk9dC5zZW5kZXIubW92YWJsZSxuPW5ldyBkLlBvaW50KGkueCxpLnkpLnNjYWxlKC0xKS5zY2FsZSgxL2kuc2NhbGUpO2UueCs9bi54LGUueSs9bi55LHRoaXMuX3Njcm9sbE9mZnNldD1uLHRoaXMuX3NldE9yaWdpbih0aGlzLmxheWVyVG9Mb2NhdGlvbihlKSksdGhpcy50cmlnZ2VyKFwicGFuXCIse29yaWdpbmFsRXZlbnQ6dCxvcmlnaW46dGhpcy5fZ2V0T3JpZ2luKCksY2VudGVyOnRoaXMuY2VudGVyKCl9KX0sX3Njcm9sbEVuZDpmdW5jdGlvbih0KXt0aGlzLl9zY3JvbGxPZmZzZXQmJnRoaXMuX3BhbkNvbXBsZXRlKCkmJih0aGlzLl9zY3JvbGxPZmZzZXQ9bnVsbCx0aGlzLl9wYW5FbmRUUz1uZXcgRGF0ZSx0aGlzLnRyaWdnZXIoXCJwYW5FbmRcIix7b3JpZ2luYWxFdmVudDp0LG9yaWdpbjp0aGlzLl9nZXRPcmlnaW4oKSxjZW50ZXI6dGhpcy5jZW50ZXIoKX0pKX0sX3BhbkNvbXBsZXRlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEYXRlLSh0aGlzLl9wYW5FbmRUU3x8MCk+NTB9LF9zY2FsZVN0YXJ0OmZ1bmN0aW9uKHQpe2lmKHRoaXMudHJpZ2dlcihcInpvb21TdGFydFwiLHtvcmlnaW5hbEV2ZW50OnR9KSl7dmFyIGU9dC50b3VjaGVzWzFdO2UmJmUuY2FuY2VsKCl9fSxfc2NhbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zY3JvbGxlci5tb3ZhYmxlLnNjYWxlLGk9dGhpcy5fc2NhbGVUb1pvb20oZSksbj1uZXcgZC5Qb2ludCh0LmNlbnRlci54LHQuY2VudGVyLnkpLG89dGhpcy52aWV3VG9Mb2NhdGlvbihuLGkpLGE9dGhpcy5sb2NhdGlvblRvTGF5ZXIobyxpKSxyPWEudHJhbnNsYXRlKC1uLngsLW4ueSk7dGhpcy5fem9vbUFyb3VuZChyLGkpLHRoaXMudHJpZ2dlcihcInpvb21FbmRcIix7b3JpZ2luYWxFdmVudDp0fSl9LF9zY2FsZVRvWm9vbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9sYXllclNpemUoKSp0LGk9ZS90aGlzLm9wdGlvbnMubWluU2l6ZSxvPW4ubG9nKGkpL24ubG9nKDIpO3JldHVybiBuLnJvdW5kKG8pfSxfcmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLmF0dHJpYnV0aW9uJiZ0aGlzLmF0dHJpYnV0aW9uLmZpbHRlcih0aGlzLmNlbnRlcigpLHRoaXMuem9vbSgpKSx0aGlzLl92aWV3T3JpZ2luPXRoaXMuX2dldE9yaWdpbighMCksdGhpcy5fcmVzZXRTY3JvbGxlcigpLHRoaXMudHJpZ2dlcihcImJlZm9yZVJlc2V0XCIpLHRoaXMudHJpZ2dlcihcInJlc2V0XCIpfSxfcmVzZXRTY3JvbGxlcjpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLG89dGhpcy5zY3JvbGxlcixyPW8uZGltZW5zaW9ucy54LHM9by5kaW1lbnNpb25zLnksaD10aGlzLl9sYXllclNpemUoKSxsPXRoaXMuZXh0ZW50KCkubncsYz10aGlzLmxvY2F0aW9uVG9MYXllcihsKS5yb3VuZCgpO28ubW92YWJsZS5yb3VuZD0hMCxvLnJlc2V0KCksby51c2VyRXZlbnRzLmNhbmNlbCgpLHQ9dGhpcy56b29tKCksby5kaW1lbnNpb25zLmZvcmNlZE1pblNjYWxlPWEoMix0aGlzLm9wdGlvbnMubWluWm9vbS10KSxvLmRpbWVuc2lvbnMubWF4U2NhbGU9YSgyLHRoaXMub3B0aW9ucy5tYXhab29tLXQpLGU9e21pbjotYy54LG1heDpoLWMueH0saT17bWluOi1jLnksbWF4OmgtYy55fSx0aGlzLm9wdGlvbnMud3JhcGFyb3VuZCYmKGUubWF4PTIwKmgsZS5taW49LWUubWF4KSx0aGlzLm9wdGlvbnMucGFubmFibGU9PT0hMSYmKG49dGhpcy52aWV3U2l6ZSgpLGUubWluPWkubWluPTAsZS5tYXg9bi53aWR0aCxpLm1heD1uLmhlaWdodCksci5tYWtlVmlydHVhbCgpLHMubWFrZVZpcnR1YWwoKSxyLnZpcnR1YWxTaXplKGUubWluLGUubWF4KSxzLnZpcnR1YWxTaXplKGkubWluLGkubWF4KSx0aGlzLl92aXJ0dWFsU2l6ZT17eDplLHk6aX19LF9yZW5kZXJMYXllcnM6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixvLGE9dGhpcy5vcHRpb25zLmxheWVycyxyPXRoaXMubGF5ZXJzPVtdLHM9dGhpcy5zY3JvbGxXcmFwO2ZvcihzLmVtcHR5KCksdD0wO3Q8YS5sZW5ndGg7dCsrKWU9YVt0XSxpPWUudHlwZXx8XCJzaGFwZVwiLG49dGhpcy5vcHRpb25zLmxheWVyRGVmYXVsdHNbaV0sbz1jLm1hcC5sYXllcnNbaV0sci5wdXNoKG5ldyBvKHRoaXMsbCh7fSxuLGUpKSl9LF9sYXllclNpemU6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9eCh0LHRoaXMub3B0aW9ucy56b29tKSx0aGlzLm9wdGlvbnMubWluU2l6ZSphKDIsdCl9LF9jbGljazpmdW5jdGlvbih0KXtpZih0aGlzLl9wYW5Db21wbGV0ZSgpKXt2YXIgZT10aGlzLmV2ZW50T2Zmc2V0KHQpO3RoaXMudHJpZ2dlcihcImNsaWNrXCIse29yaWdpbmFsRXZlbnQ6dCxsb2NhdGlvbjp0aGlzLnZpZXdUb0xvY2F0aW9uKGUpfSl9fSxfbW91c2V3aGVlbDpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbyxhLHIscyxoO3QucHJldmVudERlZmF1bHQoKSxlPWMubXdEZWx0YSh0KT4wPy0xOjEsaT10aGlzLm9wdGlvbnMsbj10aGlzLnpvb20oKSxvPXcobitlLGkubWluWm9vbSxpLm1heFpvb20pLGkuem9vbWFibGUhPT0hMSYmbyE9PW4mJih0aGlzLnRyaWdnZXIoXCJ6b29tU3RhcnRcIix7b3JpZ2luYWxFdmVudDp0fSl8fChhPXRoaXMuZXZlbnRPZmZzZXQodCkscj10aGlzLnZpZXdUb0xvY2F0aW9uKGEpLHM9dGhpcy5sb2NhdGlvblRvTGF5ZXIocixvKSxoPXMudHJhbnNsYXRlKC1hLngsLWEueSksdGhpcy5fem9vbUFyb3VuZChoLG8pLHRoaXMudHJpZ2dlcihcInpvb21FbmRcIix7b3JpZ2luYWxFdmVudDp0fSkpKX19KTtjLnVpLnBsdWdpbihFKX0od2luZG93LmtlbmRvLmpRdWVyeSl9LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlLGkpeyhpfHxlKSgpfSksZnVuY3Rpb24odCxkZWZpbmUpe2RlZmluZShcImtlbmRvLmRhdGF2aXoubWFwLm1pblwiLFtcImtlbmRvLmRhdGEubWluXCIsXCJrZW5kby51c2VyZXZlbnRzLm1pblwiLFwia2VuZG8udG9vbHRpcC5taW5cIixcImtlbmRvLm1vYmlsZS5zY3JvbGxlci5taW5cIixcImtlbmRvLmRyYWdhbmRkcm9wLm1pblwiLFwia2VuZG8uZGF0YXZpei5jb3JlLm1pblwiLFwiZGF0YXZpei9tYXAvbG9jYXRpb24ubWluXCIsXCJkYXRhdml6L21hcC9hdHRyaWJ1dGlvbi5taW5cIixcImRhdGF2aXovbWFwL25hdmlnYXRvci5taW5cIixcImRhdGF2aXovbWFwL3pvb20ubWluXCIsXCJkYXRhdml6L21hcC9jcnMubWluXCIsXCJkYXRhdml6L21hcC9sYXllcnMvYmFzZS5taW5cIixcImRhdGF2aXovbWFwL2xheWVycy9zaGFwZS5taW5cIixcImRhdGF2aXovbWFwL2xheWVycy9idWJibGUubWluXCIsXCJkYXRhdml6L21hcC9sYXllcnMvdGlsZS5taW5cIixcImRhdGF2aXovbWFwL2xheWVycy9iaW5nLm1pblwiLFwiZGF0YXZpei9tYXAvbGF5ZXJzL21hcmtlci5taW5cIixcImRhdGF2aXovbWFwL21haW4ubWluXCJdLHQpfShmdW5jdGlvbigpe3JldHVybiB3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlLGkpeyhpfHxlKSgpfSk7OyFmdW5jdGlvbihlLGRlZmluZSl7ZGVmaW5lKFwidXRpbC9tYWluLm1pblwiLFtcImtlbmRvLmNvcmUubWluXCJdLGUpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIHR5cGVvZiBlIT09S31mdW5jdGlvbiBuKGUsbil7dmFyIGk9dChuKTtyZXR1cm4gVy5yb3VuZChlKmkpL2l9ZnVuY3Rpb24gdChlKXtyZXR1cm4gZT9XLnBvdygxMCxlKToxfWZ1bmN0aW9uIGkoZSxuLHQpe3JldHVybiBXLm1heChXLm1pbihlLHQpLG4pfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIGUqTH1mdW5jdGlvbiBvKGUpe3JldHVybiBlL0x9ZnVuY3Rpb24gYShlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZSYmIWlzTmFOKGUpfWZ1bmN0aW9uIHMobix0KXtyZXR1cm4gZShuKT9uOnR9ZnVuY3Rpb24gdShlKXtyZXR1cm4gZSplfWZ1bmN0aW9uIGwoZSl7dmFyIG4sdD1bXTtmb3IobiBpbiBlKXQucHVzaChuK2Vbbl0pO3JldHVybiB0LnNvcnQoKS5qb2luKFwiXCIpfWZ1bmN0aW9uIGQoZSl7dmFyIG4sdD0yMTY2MTM2MjYxO2ZvcihuPTA7bjxlLmxlbmd0aDsrK24pdCs9KHQ8PDEpKyh0PDw0KSsodDw8NykrKHQ8PDgpKyh0PDwyNCksdF49ZS5jaGFyQ29kZUF0KG4pO3JldHVybiB0Pj4+MH1mdW5jdGlvbiBoKGUpe3JldHVybiBkKGwoZSkpfWZ1bmN0aW9uIGMoZSl7dmFyIG4sdD1lLmxlbmd0aCxpPVUscj1GO2ZvcihuPTA7bjx0O24rKylyPVcubWF4KHIsZVtuXSksaT1XLm1pbihpLGVbbl0pO3JldHVybnttaW46aSxtYXg6cn19ZnVuY3Rpb24gZihlKXtyZXR1cm4gYyhlKS5taW59ZnVuY3Rpb24gcChlKXtyZXR1cm4gYyhlKS5tYXh9ZnVuY3Rpb24gbShlKXtyZXR1cm4gdihlKS5taW59ZnVuY3Rpb24gZyhlKXtyZXR1cm4gdihlKS5tYXh9ZnVuY3Rpb24gdihlKXt2YXIgbix0LGkscj1VLG89Rjtmb3Iobj0wLHQ9ZS5sZW5ndGg7bjx0O24rKylpPWVbbl0sbnVsbCE9PWkmJmlzRmluaXRlKGkpJiYocj1XLm1pbihyLGkpLG89Vy5tYXgobyxpKSk7cmV0dXJue21pbjpyPT09VT92b2lkIDA6cixtYXg6bz09PUY/dm9pZCAwOm99fWZ1bmN0aW9uIF8oZSl7aWYoZSlyZXR1cm4gZVtlLmxlbmd0aC0xXX1mdW5jdGlvbiBiKGUsbil7cmV0dXJuIGUucHVzaC5hcHBseShlLG4pLGV9ZnVuY3Rpb24gdyhlKXtyZXR1cm4gRC50ZW1wbGF0ZShlLHt1c2VXaXRoQmxvY2s6ITEscGFyYW1OYW1lOlwiZFwifSl9ZnVuY3Rpb24geShuLHQpe3JldHVybiBlKHQpJiZudWxsIT09dD9cIiBcIituK1wiPSdcIit0K1wiJyBcIjpcIlwifWZ1bmN0aW9uIHgoZSl7dmFyIG4sdD1cIlwiO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspdCs9eShlW25dWzBdLGVbbl1bMV0pO3JldHVybiB0fWZ1bmN0aW9uIGsobil7dmFyIHQsaSxyPVwiXCI7Zm9yKHQ9MDt0PG4ubGVuZ3RoO3QrKylpPW5bdF1bMV0sZShpKSYmKHIrPW5bdF1bMF0rXCI6XCIraStcIjtcIik7aWYoXCJcIiE9PXIpcmV0dXJuIHJ9ZnVuY3Rpb24gQShlKXtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgZSYmKGUrPVwicHhcIiksZX1mdW5jdGlvbiBDKGUpe3ZhciBuLHQsaT1bXTtpZihlKWZvcihuPUQudG9IeXBoZW5zKGUpLnNwbGl0KFwiLVwiKSx0PTA7dDxuLmxlbmd0aDt0KyspaS5wdXNoKFwiay1wb3MtXCIrblt0XSk7cmV0dXJuIGkuam9pbihcIiBcIil9ZnVuY3Rpb24gTShuKXtyZXR1cm5cIlwiPT09bnx8bnVsbD09PW58fFwibm9uZVwiPT09bnx8XCJ0cmFuc3BhcmVudFwiPT09bnx8IWUobil9ZnVuY3Rpb24gUyhlKXtmb3IodmFyIG49ezE6XCJpXCIsMTA6XCJ4XCIsMTAwOlwiY1wiLDI6XCJpaVwiLDIwOlwieHhcIiwyMDA6XCJjY1wiLDM6XCJpaWlcIiwzMDpcInh4eFwiLDMwMDpcImNjY1wiLDQ6XCJpdlwiLDQwOlwieGxcIiw0MDA6XCJjZFwiLDU6XCJ2XCIsNTA6XCJsXCIsNTAwOlwiZFwiLDY6XCJ2aVwiLDYwOlwibHhcIiw2MDA6XCJkY1wiLDc6XCJ2aWlcIiw3MDpcImx4eFwiLDcwMDpcImRjY1wiLDg6XCJ2aWlpXCIsODA6XCJseHh4XCIsODAwOlwiZGNjY1wiLDk6XCJpeFwiLDkwOlwieGNcIiw5MDA6XCJjbVwiLDFlMzpcIm1cIn0sdD1bMWUzLDkwMCw4MDAsNzAwLDYwMCw1MDAsNDAwLDMwMCwyMDAsMTAwLDkwLDgwLDcwLDYwLDUwLDQwLDMwLDIwLDEwLDksOCw3LDYsNSw0LDMsMiwxXSxpPVwiXCI7ZT4wOyllPHRbMF0/dC5zaGlmdCgpOihpKz1uW3RbMF1dLGUtPXRbMF0pO3JldHVybiBpfWZ1bmN0aW9uIHooZSl7dmFyIG4sdCxpLHIsbztmb3IoZT1lLnRvTG93ZXJDYXNlKCksbj17aToxLHY6NSx4OjEwLGw6NTAsYzoxMDAsZDo1MDAsbToxZTN9LHQ9MCxpPTAscj0wO3I8ZS5sZW5ndGg7KytyKXtpZihvPW5bZS5jaGFyQXQocildLCFvKXJldHVybiBudWxsO3QrPW8sbz5pJiYodC09MippKSxpPW99cmV0dXJuIHR9ZnVuY3Rpb24gTihlKXt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBmdW5jdGlvbigpe3ZhciB0LGk9XCJcIjtmb3IodD1hcmd1bWVudHMubGVuZ3RoOy0tdD49MDspaSs9XCI6XCIrYXJndW1lbnRzW3RdO3JldHVybiBpIGluIG4/bltpXTpuW2ldPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBUKGUpe2Zvcih2YXIgbix0LGk9W10scj0wLG89ZS5sZW5ndGg7cjxvOyluPWUuY2hhckNvZGVBdChyKyspLG4+PTU1Mjk2JiZuPD01NjMxOSYmcjxvPyh0PWUuY2hhckNvZGVBdChyKyspLDU2MzIwPT0oNjQ1MTImdCk/aS5wdXNoKCgoMTAyMyZuKTw8MTApKygxMDIzJnQpKzY1NTM2KTooaS5wdXNoKG4pLHItLSkpOmkucHVzaChuKTtyZXR1cm4gaX1mdW5jdGlvbiBqKGUpe3JldHVybiBlLm1hcChmdW5jdGlvbihlKXt2YXIgbj1cIlwiO3JldHVybiBlPjY1NTM1JiYoZS09NjU1MzYsbis9U3RyaW5nLmZyb21DaGFyQ29kZShlPj4+MTAmMTAyM3w1NTI5NiksZT01NjMyMHwxMDIzJmUpLG4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZSl9KS5qb2luKFwiXCIpfWZ1bmN0aW9uIE8oZSxuKXtmdW5jdGlvbiB0KGUsdCl7Zm9yKHZhciBpPVtdLHI9MCxvPTAsYT0wO3I8ZS5sZW5ndGgmJm88dC5sZW5ndGg7KW4oZVtyXSx0W29dKTw9MD9pW2ErK109ZVtyKytdOmlbYSsrXT10W28rK107cmV0dXJuIHI8ZS5sZW5ndGgmJmkucHVzaC5hcHBseShpLGUuc2xpY2UocikpLG88dC5sZW5ndGgmJmkucHVzaC5hcHBseShpLHQuc2xpY2UobykpLGl9cmV0dXJuIGUubGVuZ3RoPDI/ZS5zbGljZSgpOmZ1bmN0aW9uIGkoZSl7dmFyIG4scixvO3JldHVybiBlLmxlbmd0aDw9MT9lOihuPU1hdGguZmxvb3IoZS5sZW5ndGgvMikscj1lLnNsaWNlKDAsbiksbz1lLnNsaWNlKG4pLHI9aShyKSxvPWkobyksdChyLG8pKX0oZSl9dmFyIFc9TWF0aCxEPXdpbmRvdy5rZW5kbyxFPUQuZGVlcEV4dGVuZCxMPVcuUEkvMTgwLFU9TnVtYmVyLk1BWF9WQUxVRSxGPS1OdW1iZXIuTUFYX1ZBTFVFLEs9XCJ1bmRlZmluZWRcIixQPURhdGUubm93O1B8fChQPWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9KSxFKEQse3V0aWw6e01BWF9OVU06VSxNSU5fTlVNOkYsYXBwZW5kOmIsYXJyYXlMaW1pdHM6YyxhcnJheU1pbjpmLGFycmF5TWF4OnAsZGVmaW5lZDplLGRlZzpvLGhhc2hLZXk6ZCxoYXNoT2JqZWN0OmgsaXNOdW1iZXI6YSxpc1RyYW5zcGFyZW50Ok0sbGFzdDpfLGxpbWl0VmFsdWU6aSxub3c6UCxvYmplY3RLZXk6bCxyb3VuZDpuLHJhZDpyLHJlbmRlckF0dHI6eSxyZW5kZXJBbGxBdHRyOngscmVuZGVyUG9zOkMscmVuZGVyU2l6ZTpBLHJlbmRlclN0eWxlOmsscmVuZGVyVGVtcGxhdGU6dyxzcGFyc2VBcnJheUxpbWl0czp2LHNwYXJzZUFycmF5TWluOm0sc3BhcnNlQXJyYXlNYXg6ZyxzcXI6dSx2YWx1ZU9yRGVmYXVsdDpzLHJvbWFuVG9BcmFiaWM6eixhcmFiaWNUb1JvbWFuOlMsbWVtb2l6ZTpOLHVjczJlbmNvZGU6aix1Y3MyZGVjb2RlOlQsbWVyZ2VTb3J0Ok99fSksRC5kcmF3aW5nLnV0aWw9RC51dGlsLEQuZGF0YXZpei51dGlsPUQudXRpbH0oKSx3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSxuLHQpeyh0fHxuKSgpfSksZnVuY3Rpb24oZSxkZWZpbmUpe2RlZmluZShcInV0aWwvdGV4dC1tZXRyaWNzLm1pblwiLFtcImtlbmRvLmNvcmUubWluXCIsXCJ1dGlsL21haW4ubWluXCJdLGUpfShmdW5jdGlvbigpeyFmdW5jdGlvbihlKXtmdW5jdGlvbiBuKCl7cmV0dXJue3dpZHRoOjAsaGVpZ2h0OjAsYmFzZWxpbmU6MH19ZnVuY3Rpb24gdChlLG4sdCl7cmV0dXJuIGguY3VycmVudC5tZWFzdXJlKGUsbix0KX1mdW5jdGlvbiBpKGUsbil7dmFyIHQ9W107aWYoZS5sZW5ndGg+MCYmZG9jdW1lbnQuZm9udHMpe3RyeXt0PWUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBkb2N1bWVudC5mb250cy5sb2FkKGUpfSl9Y2F0Y2goaSl7by5sb2dUb0NvbnNvbGUoaSl9UHJvbWlzZS5hbGwodCkudGhlbihuLG4pfWVsc2UgbigpfXZhciByPWRvY3VtZW50LG89d2luZG93LmtlbmRvLGE9by5DbGFzcyxzPW8udXRpbCx1PXMuZGVmaW5lZCxsPWEuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUpe3RoaXMuX3NpemU9ZSx0aGlzLl9sZW5ndGg9MCx0aGlzLl9tYXA9e319LHB1dDpmdW5jdGlvbihlLG4pe3ZhciB0PXRoaXMsaT10Ll9tYXAscj17a2V5OmUsdmFsdWU6bn07aVtlXT1yLHQuX2hlYWQ/KHQuX3RhaWwubmV3ZXI9cixyLm9sZGVyPXQuX3RhaWwsdC5fdGFpbD1yKTp0Ll9oZWFkPXQuX3RhaWw9cix0Ll9sZW5ndGg+PXQuX3NpemU/KGlbdC5faGVhZC5rZXldPW51bGwsdC5faGVhZD10Ll9oZWFkLm5ld2VyLHQuX2hlYWQub2xkZXI9bnVsbCk6dC5fbGVuZ3RoKyt9LGdldDpmdW5jdGlvbihlKXt2YXIgbj10aGlzLHQ9bi5fbWFwW2VdO2lmKHQpcmV0dXJuIHQ9PT1uLl9oZWFkJiZ0IT09bi5fdGFpbCYmKG4uX2hlYWQ9dC5uZXdlcixuLl9oZWFkLm9sZGVyPW51bGwpLHQhPT1uLl90YWlsJiYodC5vbGRlciYmKHQub2xkZXIubmV3ZXI9dC5uZXdlcix0Lm5ld2VyLm9sZGVyPXQub2xkZXIpLHQub2xkZXI9bi5fdGFpbCx0Lm5ld2VyPW51bGwsbi5fdGFpbC5uZXdlcj10LG4uX3RhaWw9dCksdC52YWx1ZX19KSxkPWUoXCI8ZGl2IHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsgdG9wOiAtNDAwMHB4ICFpbXBvcnRhbnQ7IHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7IGhlaWdodDogYXV0byAhaW1wb3J0YW50O3BhZGRpbmc6IDAgIWltcG9ydGFudDsgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IGJvcmRlcjogMCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OiBub3JtYWwgIWltcG9ydGFudDsgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7IHdoaXRlLXNwYWNlOiBub3dyYXAhaW1wb3J0YW50OycgLz5cIilbMF0saD1hLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlKXt0aGlzLl9jYWNoZT1uZXcgbCgxZTMpLHRoaXMuX2luaXRPcHRpb25zKGUpfSxvcHRpb25zOntiYXNlbGluZU1hcmtlclNpemU6MX0sbWVhc3VyZTpmdW5jdGlvbih0LGksbyl7dmFyIGEsbCxoLGMsZixwLG0sZztpZighdClyZXR1cm4gbigpO2lmKGE9cy5vYmplY3RLZXkoaSksbD1zLmhhc2hLZXkodCthKSxoPXRoaXMuX2NhY2hlLmdldChsKSxoKXJldHVybiBoO2M9bigpLGY9bz9vOmQscD10aGlzLl9iYXNlbGluZU1hcmtlcigpLmNsb25lTm9kZSghMSk7Zm9yKG0gaW4gaSlnPWlbbV0sdShnKSYmKGYuc3R5bGVbbV09Zyk7cmV0dXJuIGUoZikudGV4dCh0KSxmLmFwcGVuZENoaWxkKHApLHIuYm9keS5hcHBlbmRDaGlsZChmKSwodCtcIlwiKS5sZW5ndGgmJihjLndpZHRoPWYub2Zmc2V0V2lkdGgtdGhpcy5vcHRpb25zLmJhc2VsaW5lTWFya2VyU2l6ZSxjLmhlaWdodD1mLm9mZnNldEhlaWdodCxjLmJhc2VsaW5lPXAub2Zmc2V0VG9wK3RoaXMub3B0aW9ucy5iYXNlbGluZU1hcmtlclNpemUpLGMud2lkdGg+MCYmYy5oZWlnaHQ+MCYmdGhpcy5fY2FjaGUucHV0KGwsYyksZi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYpLGN9LF9iYXNlbGluZU1hcmtlcjpmdW5jdGlvbigpe3JldHVybiBlKFwiPGRpdiBjbGFzcz0nay1iYXNlbGluZS1tYXJrZXInIHN0eWxlPSdkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTt3aWR0aDogXCIrdGhpcy5vcHRpb25zLmJhc2VsaW5lTWFya2VyU2l6ZStcInB4OyBoZWlnaHQ6IFwiK3RoaXMub3B0aW9ucy5iYXNlbGluZU1hcmtlclNpemUrXCJweDtvdmVyZmxvdzogaGlkZGVuOycgLz5cIilbMF19fSk7aC5jdXJyZW50PW5ldyBoLG8udXRpbC5UZXh0TWV0cmljcz1oLG8udXRpbC5MUlVDYWNoZT1sLG8udXRpbC5sb2FkRm9udHM9aSxvLnV0aWwubWVhc3VyZVRleHQ9dH0od2luZG93LmtlbmRvLmpRdWVyeSl9LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSxuLHQpeyh0fHxuKSgpfSksZnVuY3Rpb24oZSxkZWZpbmUpe2RlZmluZShcInV0aWwvYmFzZTY0Lm1pblwiLFtcInV0aWwvbWFpbi5taW5cIl0sZSl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgdCxpLHIsYSxzLHUsbCxkPVwiXCIsaD0wO2ZvcihlPW4oZSk7aDxlLmxlbmd0aDspdD1lLmNoYXJDb2RlQXQoaCsrKSxpPWUuY2hhckNvZGVBdChoKyspLHI9ZS5jaGFyQ29kZUF0KGgrKyksYT10Pj4yLHM9KDMmdCk8PDR8aT4+NCx1PSgxNSZpKTw8MnxyPj42LGw9NjMmcixpc05hTihpKT91PWw9NjQ6aXNOYU4ocikmJihsPTY0KSxkPWQrby5jaGFyQXQoYSkrby5jaGFyQXQocykrby5jaGFyQXQodSkrby5jaGFyQXQobCk7cmV0dXJuIGR9ZnVuY3Rpb24gbihlKXt2YXIgbix0LGk9XCJcIjtmb3Iobj0wO248ZS5sZW5ndGg7bisrKXQ9ZS5jaGFyQ29kZUF0KG4pLHQ8MTI4P2krPXIodCk6dDwyMDQ4PyhpKz1yKDE5Mnx0Pj4+NiksaSs9cigxMjh8NjMmdCkpOnQ8NjU1MzYmJihpKz1yKDIyNHx0Pj4+MTIpLGkrPXIoMTI4fHQ+Pj42JjYzKSxpKz1yKDEyOHw2MyZ0KSk7cmV0dXJuIGl9dmFyIHQ9d2luZG93LmtlbmRvLGk9dC5kZWVwRXh0ZW5kLHI9U3RyaW5nLmZyb21DaGFyQ29kZSxvPVwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz1cIjtpKHQudXRpbCx7ZW5jb2RlQmFzZTY0OmUsZW5jb2RlVVRGODpufSl9KCksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsbix0KXsodHx8bikoKX0pLGZ1bmN0aW9uKGUsZGVmaW5lKXtkZWZpbmUoXCJtaXhpbnMvb2JzZXJ2ZXJzLm1pblwiLFtcImtlbmRvLmNvcmUubWluXCJdLGUpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1NYXRoLHQ9d2luZG93LmtlbmRvLGk9dC5kZWVwRXh0ZW5kLHI9ZS5pbkFycmF5LG89e29ic2VydmVyczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vYnNlcnZlcnM9dGhpcy5fb2JzZXJ2ZXJzfHxbXX0sYWRkT2JzZXJ2ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX29ic2VydmVycz90aGlzLl9vYnNlcnZlcnMucHVzaChlKTp0aGlzLl9vYnNlcnZlcnM9W2VdLHRoaXN9LHJlbW92ZU9ic2VydmVyOmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMub2JzZXJ2ZXJzKCksdD1yKGUsbik7cmV0dXJuIHQhPS0xJiZuLnNwbGljZSh0LDEpLHRoaXN9LHRyaWdnZXI6ZnVuY3Rpb24oZSxuKXt2YXIgdCxpLHI9dGhpcy5fb2JzZXJ2ZXJzO2lmKHImJiF0aGlzLl9zdXNwZW5kZWQpZm9yKGk9MDtpPHIubGVuZ3RoO2krKyl0PXJbaV0sdFtlXSYmdFtlXShuKTtyZXR1cm4gdGhpc30sb3B0aW9uc0NoYW5nZTpmdW5jdGlvbihlKXtlPWV8fHt9LGUuZWxlbWVudD10aGlzLHRoaXMudHJpZ2dlcihcIm9wdGlvbnNDaGFuZ2VcIixlKX0sZ2VvbWV0cnlDaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLnRyaWdnZXIoXCJnZW9tZXRyeUNoYW5nZVwiLHtlbGVtZW50OnRoaXN9KX0sc3VzcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdXNwZW5kZWQ9KHRoaXMuX3N1c3BlbmRlZHx8MCkrMSx0aGlzfSxyZXN1bWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3VzcGVuZGVkPW4ubWF4KCh0aGlzLl9zdXNwZW5kZWR8fDApLTEsMCksdGhpc30sX29ic2VydmVyRmllbGQ6ZnVuY3Rpb24oZSxuKXt0aGlzW2VdJiZ0aGlzW2VdLnJlbW92ZU9ic2VydmVyKHRoaXMpLHRoaXNbZV09bixuLmFkZE9ic2VydmVyKHRoaXMpfX07aSh0LHttaXhpbnM6e09ic2VydmVyc01peGluOm99fSl9KHdpbmRvdy5rZW5kby5qUXVlcnkpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbihlLG4sdCl7KHR8fG4pKCl9KSxmdW5jdGlvbihlLGRlZmluZSl7ZGVmaW5lKFwia2VuZG8uZGF0YXZpei5zcGFya2xpbmUubWluXCIsW1wia2VuZG8uZGF0YXZpei5jaGFydC5taW5cIl0sZSl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gdChlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT9bZV06ZX12YXIgaT13aW5kb3cua2VuZG8scj1pLmRhdGF2aXosbz1yLnVpLkNoYXJ0LGE9aS5kYXRhLk9ic2VydmFibGVBcnJheSxzPXIuU2hhcmVkVG9vbHRpcCx1PWkuZGVlcEV4dGVuZCxsPWUuaXNBcnJheSxkPWUucHJveHksaD1yLmluQXJyYXksYz1NYXRoLGY9XCJrLVwiLHA9MTUwLG09MTUwLGc9XCJiYXJcIix2PVwiYnVsbGV0XCIsXz1cInBpZVwiLGI9XCJsZWF2ZVwiLHc9W2csdl0seT1vLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihuLGkpe3ZhciByPXRoaXMscz1yLnN0YWdlPWUoXCI8c3BhbiAvPlwiKSxkPWl8fHt9O249ZShuKS5hZGRDbGFzcyhmK1wic3BhcmtsaW5lXCIpLmVtcHR5KCkuYXBwZW5kKHMpLHIuX2luaXRpYWxXaWR0aD1jLmZsb29yKG4ud2lkdGgoKSksZD10KGQpLChsKGQpfHxkIGluc3RhbmNlb2YgYSkmJihkPXtzZXJpZXNEZWZhdWx0czp7ZGF0YTpkfX0pLGQuc2VyaWVzfHwoZC5zZXJpZXM9W3tkYXRhOnQoZC5kYXRhKX1dKSx1KGQse3Nlcmllc0RlZmF1bHRzOnt0eXBlOmQudHlwZX19KSwoaChkLnNlcmllc1swXS50eXBlLHcpfHxoKGQuc2VyaWVzRGVmYXVsdHMudHlwZSx3KSkmJihkPXUoe30se2NhdGVnb3J5QXhpczp7Y3Jvc3NoYWlyOnt2aXNpYmxlOiExfX19LGQpKSxvLmZuLmluaXQuY2FsbChyLG4sZCl9LG9wdGlvbnM6e25hbWU6XCJTcGFya2xpbmVcIixjaGFydEFyZWE6e21hcmdpbjoyfSxheGlzRGVmYXVsdHM6e3Zpc2libGU6ITEsbWFqb3JHcmlkTGluZXM6e3Zpc2libGU6ITF9LHZhbHVlQXhpczp7bmFycm93UmFuZ2U6ITB9fSxzZXJpZXNEZWZhdWx0czp7dHlwZTpcImxpbmVcIixhcmVhOntsaW5lOnt3aWR0aDouNX19LGJhcjp7c3RhY2s6ITB9LHBhZGRpbmc6Mix3aWR0aDouNSxvdmVybGF5OntncmFkaWVudDpudWxsfSxoaWdobGlnaHQ6e3Zpc2libGU6ITF9LGJvcmRlcjp7d2lkdGg6MH0sbWFya2Vyczp7c2l6ZToyLHZpc2libGU6ITF9fSx0b29sdGlwOnt2aXNpYmxlOiEwLHNoYXJlZDohMH0sY2F0ZWdvcnlBeGlzOntjcm9zc2hhaXI6e3Zpc2libGU6ITAsdG9vbHRpcDp7dmlzaWJsZTohMX19fSxsZWdlbmQ6e3Zpc2libGU6ITF9LHRyYW5zaXRpb25zOiExLHBvaW50V2lkdGg6NSxwYW5lczpbe2NsaXA6ITF9XX0sX21vZGVsT3B0aW9uczpmdW5jdGlvbigpe3ZhciBuLHQsaT10aGlzLHI9aS5vcHRpb25zLG89aS5faW5pdGlhbFdpZHRoLGE9aS5zdGFnZTtyZXR1cm4gaS5zdGFnZS5jaGlsZHJlbigpLmhpZGUoKSx0PWUoXCI8c3Bhbj4mbmJzcDs8L3NwYW4+XCIpLGkuc3RhZ2UuYXBwZW5kKHQpLG49dSh7d2lkdGg6bz9vOmkuX2F1dG9XaWR0aCgpLGhlaWdodDphLmhlaWdodCgpLHRyYW5zaXRpb25zOnIudHJhbnNpdGlvbnN9LHIuY2hhcnRBcmVhLHtpbmxpbmU6ITAsYWxpZ246ITF9KSxhLmNzcyh7d2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHR9KSx0LnJlbW92ZSgpLGkuc3RhZ2UuY2hpbGRyZW4oKS5zaG93KCksaS5zdXJmYWNlLnJlc2l6ZSgpLG59LF9jcmVhdGVUb29sdGlwOmZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzLHQ9bi5vcHRpb25zLGk9bi5lbGVtZW50O3JldHVybiBlPW4uX3NoYXJlZFRvb2x0aXAoKT9uZXcgeChpLG4uX3Bsb3RBcmVhLHQudG9vbHRpcCk6by5mbi5fY3JlYXRlVG9vbHRpcC5jYWxsKG4pLGUuYmluZChiLGQobi5fdG9vbHRpcGxlYXZlLG4pKSxlfSxfc3VyZmFjZVdyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFnZX0sX2F1dG9XaWR0aDpmdW5jdGlvbigpe3ZhciBlLG4sdCxpPXRoaXMsbz1pLm9wdGlvbnMsYT1yLmdldFNwYWNpbmcoby5jaGFydEFyZWEubWFyZ2luKSxzPW8uc2VyaWVzLHU9aS5kYXRhU291cmNlLnRvdGFsKCksbD0wO2ZvcihuPTA7bjxzLmxlbmd0aDtuKyspe2lmKHQ9c1tuXSx0LnR5cGU9PT1nKXJldHVybiBwO2lmKHQudHlwZT09PXYpcmV0dXJuIG07aWYodC50eXBlPT09XylyZXR1cm4gaS5zdGFnZS5oZWlnaHQoKTt0LmRhdGEmJihsPWMubWF4KGwsdC5kYXRhLmxlbmd0aCkpfXJldHVybiBlPWMubWF4KHUsbCkqby5wb2ludFdpZHRoLGU+MCYmKGUrPWEubGVmdCthLnJpZ2h0KSxlfX0pLHg9cy5leHRlbmQoe29wdGlvbnM6e2FuaW1hdGlvbjp7ZHVyYXRpb246MH19LF9hbmNob3I6ZnVuY3Rpb24oZSxuKXt2YXIgdD1zLmZuLl9hbmNob3IuY2FsbCh0aGlzLGUsbiksaT10aGlzLl9tZWFzdXJlKCk7cmV0dXJuIHQueT0taS5oZWlnaHQtdGhpcy5vcHRpb25zLm9mZnNldCx0fSxfaGlkZUVsZW1lbnQ6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQmJnRoaXMuZWxlbWVudC5oaWRlKCkucmVtb3ZlKCl9fSk7ci51aS5wbHVnaW4oeSksdShyLHtTcGFya2xpbmVTaGFyZWRUb29sdGlwOnh9KX0od2luZG93LmtlbmRvLmpRdWVyeSksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsbix0KXsodHx8bikoKX0pOzshZnVuY3Rpb24oZSxkZWZpbmUpe2RlZmluZShcInV0aWwvbWFpbi5taW5cIixbXCJrZW5kby5jb3JlLm1pblwiXSxlKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3JldHVybiB0eXBlb2YgZSE9PVJ9ZnVuY3Rpb24gdChlLHQpe3ZhciBuPWkodCk7cmV0dXJuIE4ucm91bmQoZSpuKS9ufWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGU/Ti5wb3coMTAsZSk6MX1mdW5jdGlvbiBuKGUsdCxpKXtyZXR1cm4gTi5tYXgoTi5taW4oZSxpKSx0KX1mdW5jdGlvbiBvKGUpe3JldHVybiBlKkZ9ZnVuY3Rpb24gcihlKXtyZXR1cm4gZS9GfWZ1bmN0aW9uIGEoZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJiFpc05hTihlKX1mdW5jdGlvbiBzKHQsaSl7cmV0dXJuIGUodCk/dDppfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGUqZX1mdW5jdGlvbiBjKGUpe3ZhciB0LGk9W107Zm9yKHQgaW4gZSlpLnB1c2godCtlW3RdKTtyZXR1cm4gaS5zb3J0KCkuam9pbihcIlwiKX1mdW5jdGlvbiB1KGUpe3ZhciB0LGk9MjE2NjEzNjI2MTtmb3IodD0wO3Q8ZS5sZW5ndGg7Kyt0KWkrPShpPDwxKSsoaTw8NCkrKGk8PDcpKyhpPDw4KSsoaTw8MjQpLGlePWUuY2hhckNvZGVBdCh0KTtyZXR1cm4gaT4+PjB9ZnVuY3Rpb24gZChlKXtyZXR1cm4gdShjKGUpKX1mdW5jdGlvbiBoKGUpe3ZhciB0LGk9ZS5sZW5ndGgsbj1PLG89TDtmb3IodD0wO3Q8aTt0Kyspbz1OLm1heChvLGVbdF0pLG49Ti5taW4obixlW3RdKTtyZXR1cm57bWluOm4sbWF4Om99fWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGgoZSkubWlufWZ1bmN0aW9uIHAoZSl7cmV0dXJuIGgoZSkubWF4fWZ1bmN0aW9uIG0oZSl7cmV0dXJuIGcoZSkubWlufWZ1bmN0aW9uIHYoZSl7cmV0dXJuIGcoZSkubWF4fWZ1bmN0aW9uIGcoZSl7dmFyIHQsaSxuLG89TyxyPUw7Zm9yKHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspbj1lW3RdLG51bGwhPT1uJiZpc0Zpbml0ZShuKSYmKG89Ti5taW4obyxuKSxyPU4ubWF4KHIsbikpO3JldHVybnttaW46bz09PU8/dm9pZCAwOm8sbWF4OnI9PT1MP3ZvaWQgMDpyfX1mdW5jdGlvbiBfKGUpe2lmKGUpcmV0dXJuIGVbZS5sZW5ndGgtMV19ZnVuY3Rpb24geChlLHQpe3JldHVybiBlLnB1c2guYXBwbHkoZSx0KSxlfWZ1bmN0aW9uIGIoZSl7cmV0dXJuIGoudGVtcGxhdGUoZSx7dXNlV2l0aEJsb2NrOiExLHBhcmFtTmFtZTpcImRcIn0pfWZ1bmN0aW9uIHkodCxpKXtyZXR1cm4gZShpKSYmbnVsbCE9PWk/XCIgXCIrdCtcIj0nXCIraStcIicgXCI6XCJcIn1mdW5jdGlvbiB3KGUpe3ZhciB0LGk9XCJcIjtmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWkrPXkoZVt0XVswXSxlW3RdWzFdKTtyZXR1cm4gaX1mdW5jdGlvbiBBKHQpe3ZhciBpLG4sbz1cIlwiO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspbj10W2ldWzFdLGUobikmJihvKz10W2ldWzBdK1wiOlwiK24rXCI7XCIpO2lmKFwiXCIhPT1vKXJldHVybiBvfWZ1bmN0aW9uIFMoZSl7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIGUmJihlKz1cInB4XCIpLGV9ZnVuY3Rpb24gQyhlKXt2YXIgdCxpLG49W107aWYoZSlmb3IodD1qLnRvSHlwaGVucyhlKS5zcGxpdChcIi1cIiksaT0wO2k8dC5sZW5ndGg7aSsrKW4ucHVzaChcImstcG9zLVwiK3RbaV0pO3JldHVybiBuLmpvaW4oXCIgXCIpfWZ1bmN0aW9uIGsodCl7cmV0dXJuXCJcIj09PXR8fG51bGw9PT10fHxcIm5vbmVcIj09PXR8fFwidHJhbnNwYXJlbnRcIj09PXR8fCFlKHQpfWZ1bmN0aW9uIEQoZSl7Zm9yKHZhciB0PXsxOlwiaVwiLDEwOlwieFwiLDEwMDpcImNcIiwyOlwiaWlcIiwyMDpcInh4XCIsMjAwOlwiY2NcIiwzOlwiaWlpXCIsMzA6XCJ4eHhcIiwzMDA6XCJjY2NcIiw0OlwiaXZcIiw0MDpcInhsXCIsNDAwOlwiY2RcIiw1OlwidlwiLDUwOlwibFwiLDUwMDpcImRcIiw2OlwidmlcIiw2MDpcImx4XCIsNjAwOlwiZGNcIiw3OlwidmlpXCIsNzA6XCJseHhcIiw3MDA6XCJkY2NcIiw4OlwidmlpaVwiLDgwOlwibHh4eFwiLDgwMDpcImRjY2NcIiw5OlwiaXhcIiw5MDpcInhjXCIsOTAwOlwiY21cIiwxZTM6XCJtXCJ9LGk9WzFlMyw5MDAsODAwLDcwMCw2MDAsNTAwLDQwMCwzMDAsMjAwLDEwMCw5MCw4MCw3MCw2MCw1MCw0MCwzMCwyMCwxMCw5LDgsNyw2LDUsNCwzLDIsMV0sbj1cIlwiO2U+MDspZTxpWzBdP2kuc2hpZnQoKToobis9dFtpWzBdXSxlLT1pWzBdKTtyZXR1cm4gbn1mdW5jdGlvbiBUKGUpe3ZhciB0LGksbixvLHI7Zm9yKGU9ZS50b0xvd2VyQ2FzZSgpLHQ9e2k6MSx2OjUseDoxMCxsOjUwLGM6MTAwLGQ6NTAwLG06MWUzfSxpPTAsbj0wLG89MDtvPGUubGVuZ3RoOysrbyl7aWYocj10W2UuY2hhckF0KG8pXSwhcilyZXR1cm4gbnVsbDtpKz1yLHI+biYmKGktPTIqbiksbj1yfXJldHVybiBpfWZ1bmN0aW9uIEUoZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaSxuPVwiXCI7Zm9yKGk9YXJndW1lbnRzLmxlbmd0aDstLWk+PTA7KW4rPVwiOlwiK2FyZ3VtZW50c1tpXTtyZXR1cm4gbiBpbiB0P3Rbbl06dFtuXT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gTShlKXtmb3IodmFyIHQsaSxuPVtdLG89MCxyPWUubGVuZ3RoO288cjspdD1lLmNoYXJDb2RlQXQobysrKSx0Pj01NTI5NiYmdDw9NTYzMTkmJm88cj8oaT1lLmNoYXJDb2RlQXQobysrKSw1NjMyMD09KDY0NTEyJmkpP24ucHVzaCgoKDEwMjMmdCk8PDEwKSsoMTAyMyZpKSs2NTUzNik6KG4ucHVzaCh0KSxvLS0pKTpuLnB1c2godCk7cmV0dXJuIG59ZnVuY3Rpb24geihlKXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIjtyZXR1cm4gZT42NTUzNSYmKGUtPTY1NTM2LHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoZT4+PjEwJjEwMjN8NTUyOTYpLGU9NTYzMjB8MTAyMyZlKSx0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSkuam9pbihcIlwiKX1mdW5jdGlvbiBVKGUsdCl7ZnVuY3Rpb24gaShlLGkpe2Zvcih2YXIgbj1bXSxvPTAscj0wLGE9MDtvPGUubGVuZ3RoJiZyPGkubGVuZ3RoOyl0KGVbb10saVtyXSk8PTA/blthKytdPWVbbysrXTpuW2ErK109aVtyKytdO3JldHVybiBvPGUubGVuZ3RoJiZuLnB1c2guYXBwbHkobixlLnNsaWNlKG8pKSxyPGkubGVuZ3RoJiZuLnB1c2guYXBwbHkobixpLnNsaWNlKHIpKSxufXJldHVybiBlLmxlbmd0aDwyP2Uuc2xpY2UoKTpmdW5jdGlvbiBuKGUpe3ZhciB0LG8scjtyZXR1cm4gZS5sZW5ndGg8PTE/ZToodD1NYXRoLmZsb29yKGUubGVuZ3RoLzIpLG89ZS5zbGljZSgwLHQpLHI9ZS5zbGljZSh0KSxvPW4obykscj1uKHIpLGkobyxyKSl9KGUpfXZhciBOPU1hdGgsaj13aW5kb3cua2VuZG8sQj1qLmRlZXBFeHRlbmQsRj1OLlBJLzE4MCxPPU51bWJlci5NQVhfVkFMVUUsTD0tTnVtYmVyLk1BWF9WQUxVRSxSPVwidW5kZWZpbmVkXCIsSD1EYXRlLm5vdztIfHwoSD1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksQihqLHt1dGlsOntNQVhfTlVNOk8sTUlOX05VTTpMLGFwcGVuZDp4LGFycmF5TGltaXRzOmgsYXJyYXlNaW46ZixhcnJheU1heDpwLGRlZmluZWQ6ZSxkZWc6cixoYXNoS2V5OnUsaGFzaE9iamVjdDpkLGlzTnVtYmVyOmEsaXNUcmFuc3BhcmVudDprLGxhc3Q6XyxsaW1pdFZhbHVlOm4sbm93Okgsb2JqZWN0S2V5OmMscm91bmQ6dCxyYWQ6byxyZW5kZXJBdHRyOnkscmVuZGVyQWxsQXR0cjp3LHJlbmRlclBvczpDLHJlbmRlclNpemU6UyxyZW5kZXJTdHlsZTpBLHJlbmRlclRlbXBsYXRlOmIsc3BhcnNlQXJyYXlMaW1pdHM6ZyxzcGFyc2VBcnJheU1pbjptLHNwYXJzZUFycmF5TWF4OnYsc3FyOmwsdmFsdWVPckRlZmF1bHQ6cyxyb21hblRvQXJhYmljOlQsYXJhYmljVG9Sb21hbjpELG1lbW9pemU6RSx1Y3MyZW5jb2RlOnosdWNzMmRlY29kZTpNLG1lcmdlU29ydDpVfX0pLGouZHJhd2luZy51dGlsPWoudXRpbCxqLmRhdGF2aXoudXRpbD1qLnV0aWx9KCksd2luZG93LmtlbmRvfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsdCxpKXsoaXx8dCkoKX0pLGZ1bmN0aW9uKGUsZGVmaW5lKXtkZWZpbmUoXCJ1dGlsL3RleHQtbWV0cmljcy5taW5cIixbXCJrZW5kby5jb3JlLm1pblwiLFwidXRpbC9tYWluLm1pblwiXSxlKX0oZnVuY3Rpb24oKXshZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybnt3aWR0aDowLGhlaWdodDowLGJhc2VsaW5lOjB9fWZ1bmN0aW9uIGkoZSx0LGkpe3JldHVybiBkLmN1cnJlbnQubWVhc3VyZShlLHQsaSl9ZnVuY3Rpb24gbihlLHQpe3ZhciBpPVtdO2lmKGUubGVuZ3RoPjAmJmRvY3VtZW50LmZvbnRzKXt0cnl7aT1lLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZG9jdW1lbnQuZm9udHMubG9hZChlKX0pfWNhdGNoKG4pe3IubG9nVG9Db25zb2xlKG4pfVByb21pc2UuYWxsKGkpLnRoZW4odCx0KX1lbHNlIHQoKX12YXIgbz1kb2N1bWVudCxyPXdpbmRvdy5rZW5kbyxhPXIuQ2xhc3Mscz1yLnV0aWwsbD1zLmRlZmluZWQsYz1hLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlKXt0aGlzLl9zaXplPWUsdGhpcy5fbGVuZ3RoPTAsdGhpcy5fbWFwPXt9fSxwdXQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLG49aS5fbWFwLG89e2tleTplLHZhbHVlOnR9O25bZV09byxpLl9oZWFkPyhpLl90YWlsLm5ld2VyPW8sby5vbGRlcj1pLl90YWlsLGkuX3RhaWw9byk6aS5faGVhZD1pLl90YWlsPW8saS5fbGVuZ3RoPj1pLl9zaXplPyhuW2kuX2hlYWQua2V5XT1udWxsLGkuX2hlYWQ9aS5faGVhZC5uZXdlcixpLl9oZWFkLm9sZGVyPW51bGwpOmkuX2xlbmd0aCsrfSxnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXQuX21hcFtlXTtpZihpKXJldHVybiBpPT09dC5faGVhZCYmaSE9PXQuX3RhaWwmJih0Ll9oZWFkPWkubmV3ZXIsdC5faGVhZC5vbGRlcj1udWxsKSxpIT09dC5fdGFpbCYmKGkub2xkZXImJihpLm9sZGVyLm5ld2VyPWkubmV3ZXIsaS5uZXdlci5vbGRlcj1pLm9sZGVyKSxpLm9sZGVyPXQuX3RhaWwsaS5uZXdlcj1udWxsLHQuX3RhaWwubmV3ZXI9aSx0Ll90YWlsPWkpLGkudmFsdWV9fSksdT1lKFwiPGRpdiBzdHlsZT0ncG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7IHRvcDogLTQwMDBweCAhaW1wb3J0YW50OyB3aWR0aDogYXV0byAhaW1wb3J0YW50OyBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1wb3J0YW50OyBib3JkZXI6IDAgIWltcG9ydGFudDtsaW5lLWhlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OyB3aGl0ZS1zcGFjZTogbm93cmFwIWltcG9ydGFudDsnIC8+XCIpWzBdLGQ9YS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSl7dGhpcy5fY2FjaGU9bmV3IGMoMWUzKSx0aGlzLl9pbml0T3B0aW9ucyhlKX0sb3B0aW9uczp7YmFzZWxpbmVNYXJrZXJTaXplOjF9LG1lYXN1cmU6ZnVuY3Rpb24oaSxuLHIpe3ZhciBhLGMsZCxoLGYscCxtLHY7aWYoIWkpcmV0dXJuIHQoKTtpZihhPXMub2JqZWN0S2V5KG4pLGM9cy5oYXNoS2V5KGkrYSksZD10aGlzLl9jYWNoZS5nZXQoYyksZClyZXR1cm4gZDtoPXQoKSxmPXI/cjp1LHA9dGhpcy5fYmFzZWxpbmVNYXJrZXIoKS5jbG9uZU5vZGUoITEpO2ZvcihtIGluIG4pdj1uW21dLGwodikmJihmLnN0eWxlW21dPXYpO3JldHVybiBlKGYpLnRleHQoaSksZi5hcHBlbmRDaGlsZChwKSxvLmJvZHkuYXBwZW5kQ2hpbGQoZiksKGkrXCJcIikubGVuZ3RoJiYoaC53aWR0aD1mLm9mZnNldFdpZHRoLXRoaXMub3B0aW9ucy5iYXNlbGluZU1hcmtlclNpemUsaC5oZWlnaHQ9Zi5vZmZzZXRIZWlnaHQsaC5iYXNlbGluZT1wLm9mZnNldFRvcCt0aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplKSxoLndpZHRoPjAmJmguaGVpZ2h0PjAmJnRoaXMuX2NhY2hlLnB1dChjLGgpLGYucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmKSxofSxfYmFzZWxpbmVNYXJrZXI6ZnVuY3Rpb24oKXtyZXR1cm4gZShcIjxkaXYgY2xhc3M9J2stYmFzZWxpbmUtbWFya2VyJyBzdHlsZT0nZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7d2lkdGg6IFwiK3RoaXMub3B0aW9ucy5iYXNlbGluZU1hcmtlclNpemUrXCJweDsgaGVpZ2h0OiBcIit0aGlzLm9wdGlvbnMuYmFzZWxpbmVNYXJrZXJTaXplK1wicHg7b3ZlcmZsb3c6IGhpZGRlbjsnIC8+XCIpWzBdfX0pO2QuY3VycmVudD1uZXcgZCxyLnV0aWwuVGV4dE1ldHJpY3M9ZCxyLnV0aWwuTFJVQ2FjaGU9YyxyLnV0aWwubG9hZEZvbnRzPW4sci51dGlsLm1lYXN1cmVUZXh0PWl9KHdpbmRvdy5rZW5kby5qUXVlcnkpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lOmZ1bmN0aW9uKGUsdCxpKXsoaXx8dCkoKX0pLGZ1bmN0aW9uKGUsZGVmaW5lKXtkZWZpbmUoXCJ1dGlsL2Jhc2U2NC5taW5cIixbXCJ1dGlsL21haW4ubWluXCJdLGUpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIGksbixvLGEscyxsLGMsdT1cIlwiLGQ9MDtmb3IoZT10KGUpO2Q8ZS5sZW5ndGg7KWk9ZS5jaGFyQ29kZUF0KGQrKyksbj1lLmNoYXJDb2RlQXQoZCsrKSxvPWUuY2hhckNvZGVBdChkKyspLGE9aT4+MixzPSgzJmkpPDw0fG4+PjQsbD0oMTUmbik8PDJ8bz4+NixjPTYzJm8saXNOYU4obik/bD1jPTY0OmlzTmFOKG8pJiYoYz02NCksdT11K3IuY2hhckF0KGEpK3IuY2hhckF0KHMpK3IuY2hhckF0KGwpK3IuY2hhckF0KGMpO3JldHVybiB1fWZ1bmN0aW9uIHQoZSl7dmFyIHQsaSxuPVwiXCI7Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKylpPWUuY2hhckNvZGVBdCh0KSxpPDEyOD9uKz1vKGkpOmk8MjA0OD8obis9bygxOTJ8aT4+PjYpLG4rPW8oMTI4fDYzJmkpKTppPDY1NTM2JiYobis9bygyMjR8aT4+PjEyKSxuKz1vKDEyOHxpPj4+NiY2Myksbis9bygxMjh8NjMmaSkpO3JldHVybiBufXZhciBpPXdpbmRvdy5rZW5kbyxuPWkuZGVlcEV4dGVuZCxvPVN0cmluZy5mcm9tQ2hhckNvZGUscj1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCI7bihpLnV0aWwse2VuY29kZUJhc2U2NDplLGVuY29kZVVURjg6dH0pfSgpLHdpbmRvdy5rZW5kb30sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZTpmdW5jdGlvbihlLHQsaSl7KGl8fHQpKCl9KSxmdW5jdGlvbihlLGRlZmluZSl7ZGVmaW5lKFwibWl4aW5zL29ic2VydmVycy5taW5cIixbXCJrZW5kby5jb3JlLm1pblwiXSxlKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aCxpPXdpbmRvdy5rZW5kbyxuPWkuZGVlcEV4dGVuZCxvPWUuaW5BcnJheSxyPXtvYnNlcnZlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2JzZXJ2ZXJzPXRoaXMuX29ic2VydmVyc3x8W119LGFkZE9ic2VydmVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9vYnNlcnZlcnM/dGhpcy5fb2JzZXJ2ZXJzLnB1c2goZSk6dGhpcy5fb2JzZXJ2ZXJzPVtlXSx0aGlzfSxyZW1vdmVPYnNlcnZlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLm9ic2VydmVycygpLGk9byhlLHQpO3JldHVybiBpIT0tMSYmdC5zcGxpY2UoaSwxKSx0aGlzfSx0cmlnZ2VyOmZ1bmN0aW9uKGUsdCl7dmFyIGksbixvPXRoaXMuX29ic2VydmVycztpZihvJiYhdGhpcy5fc3VzcGVuZGVkKWZvcihuPTA7bjxvLmxlbmd0aDtuKyspaT1vW25dLGlbZV0mJmlbZV0odCk7cmV0dXJuIHRoaXN9LG9wdGlvbnNDaGFuZ2U6ZnVuY3Rpb24oZSl7ZT1lfHx7fSxlLmVsZW1lbnQ9dGhpcyx0aGlzLnRyaWdnZXIoXCJvcHRpb25zQ2hhbmdlXCIsZSl9LGdlb21ldHJ5Q2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyKFwiZ2VvbWV0cnlDaGFuZ2VcIix7ZWxlbWVudDp0aGlzfSl9LHN1c3BlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3VzcGVuZGVkPSh0aGlzLl9zdXNwZW5kZWR8fDApKzEsdGhpc30scmVzdW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N1c3BlbmRlZD10Lm1heCgodGhpcy5fc3VzcGVuZGVkfHwwKS0xLDApLHRoaXN9LF9vYnNlcnZlckZpZWxkOmZ1bmN0aW9uKGUsdCl7dGhpc1tlXSYmdGhpc1tlXS5yZW1vdmVPYnNlcnZlcih0aGlzKSx0aGlzW2VdPXQsdC5hZGRPYnNlcnZlcih0aGlzKX19O24oaSx7bWl4aW5zOntPYnNlcnZlcnNNaXhpbjpyfX0pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KSx3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0LGkpeyhpfHx0KSgpfSksZnVuY3Rpb24oZSxkZWZpbmUpe2RlZmluZShcImtlbmRvLmRhdGF2aXouc3RvY2subWluXCIsW1wia2VuZG8uZGF0YXZpei5jaGFydC5taW5cIl0sZSl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gaSgpe31mdW5jdGlvbiBuKGUpe3JldHVybiBpLnByb3RvdHlwZT1lLG5ldyBpfXZhciBvLHI9d2luZG93LmtlbmRvLGE9ci5DbGFzcyxzPXIuT2JzZXJ2YWJsZSxsPXIuZGVlcEV4dGVuZCxjPU1hdGgsdT1lLnByb3h5LGQ9ci51dGlsLGg9ZC5sYXN0LGY9ZC5yZW5kZXJUZW1wbGF0ZSxwPXIuZGF0YXZpeixtPWQuZGVmaW5lZCx2PXAuZmlsdGVyU2VyaWVzQnlUeXBlLGc9ci50ZW1wbGF0ZSxfPXAudWkuQ2hhcnQseD1wLlNlbGVjdGlvbixiPXAuYWRkRHVyYXRpb24seT1kLmxpbWl0VmFsdWUsdz1wLmx0ZURhdGVJbmRleCxBPXAudG9EYXRlLFM9cC50b1RpbWUsQz0yOCxrPVwiY2hhbmdlXCIsRD1cImstXCIsVD1cImRyYWdcIixFPVwiZHJhZ0VuZFwiLE09XCJfbmF2aWdhdG9yXCIsej1NLFU9cC5FUVVBTExZX1NQQUNFRF9TRVJJRVMsTj0zLGo9XCJ6b29tXCIsQj1cInpvb21FbmRcIixGPV8uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsaSl7ZSh0KS5hZGRDbGFzcyhEK1wiY2hhcnRcIiksXy5mbi5pbml0LmNhbGwodGhpcyx0LGkpfSxfYXBwbHlEZWZhdWx0czpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMsbj1pLmVsZW1lbnQud2lkdGgoKXx8cC5ERUZBVUxUX1dJRFRILG89e3Nlcmllc0RlZmF1bHRzOntjYXRlZ29yeUZpZWxkOmUuZGF0ZUZpZWxkfSxheGlzRGVmYXVsdHM6e2NhdGVnb3J5QXhpczp7bmFtZTpcImRlZmF1bHRcIixtYWpvckdyaWRMaW5lczp7dmlzaWJsZTohMX0sbGFiZWxzOntzdGVwOjJ9LG1ham9yVGlja3M6e3Zpc2libGU6ITF9LG1heERhdGVHcm91cHM6Yy5mbG9vcihuL0MpfX19O3QmJih0PWwoe30sdCxvKSksTy5zZXR1cChlLHQpLF8uZm4uX2FwcGx5RGVmYXVsdHMuY2FsbChpLGUsdCl9LHNldE9wdGlvbnM6ZnVuY3Rpb24oZSl7dGhpcy5fZGVzdHJveU5hdmlnYXRvcigpLF8uZm4uc2V0T3B0aW9ucy5jYWxsKHRoaXMsZSl9LF9pbml0RGF0YVNvdXJjZTpmdW5jdGlvbihlKXt2YXIgdCxpLG49ZXx8e30sbz1uLmRhdGFTb3VyY2Uscj1vJiZvLnNlcnZlckZpbHRlcmluZyxhPVtdLmNvbmNhdChuLmNhdGVnb3J5QXhpcylbMF0scz1uLm5hdmlnYXRvcnx8e30sYz1zLnNlbGVjdCx1PWMmJmMuZnJvbSYmYy50bztyJiZ1JiYodD1bXS5jb25jYXQoby5maWx0ZXJ8fFtdKSxpPW5ldyBwLkRhdGVDYXRlZ29yeUF4aXMobCh7YmFzZVVuaXQ6XCJmaXRcIn0sYSx7Y2F0ZWdvcmllczpbYy5mcm9tLGMudG9dfSkpLG8uZmlsdGVyPU8uYnVpbGRGaWx0ZXIoaS5yYW5nZSgpLm1pbixjLnRvKS5jb25jYXQodCkpLF8uZm4uX2luaXREYXRhU291cmNlLmNhbGwodGhpcyxlKX0sb3B0aW9uczp7bmFtZTpcIlN0b2NrQ2hhcnRcIixkYXRlRmllbGQ6XCJkYXRlXCIsYXhpc0RlZmF1bHRzOntjYXRlZ29yeUF4aXM6e3R5cGU6XCJkYXRlXCIsYmFzZVVuaXQ6XCJmaXRcIixqdXN0aWZpZWQ6ITB9LHZhbHVlQXhpczp7bmFycm93UmFuZ2U6ITAsbGFiZWxzOntmb3JtYXQ6XCJDXCJ9fX0sbmF2aWdhdG9yOntzZWxlY3Q6e30sc2VyaWVzRGVmYXVsdHM6e21hcmtlcnM6e3Zpc2libGU6ITF9LHRvb2x0aXA6e3Zpc2libGU6ITAsdGVtcGxhdGU6XCIjPSBrZW5kby50b1N0cmluZyhjYXRlZ29yeSwgJ2QnKSAjXCJ9LGxpbmU6e3dpZHRoOjJ9fSxoaW50Ont9LHZpc2libGU6ITB9LHRvb2x0aXA6e3Zpc2libGU6ITB9LGxlZ2VuZDp7dmlzaWJsZTohMX19LF9yZXNpemU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMudHJhbnNpdGlvbnM7dGhpcy5vcHRpb25zLnRyYW5zaXRpb25zPSExLHRoaXMuX2Z1bGxSZWRyYXcoKSx0aGlzLm9wdGlvbnMudHJhbnNpdGlvbnM9ZX0sX3JlZHJhdzpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLl9uYXZpZ2F0b3I7IXRoaXMuX2RpcnR5KCkmJnQmJnQuZGF0YVNvdXJjZT90LnJlZHJhd1NsYXZlcygpOmUuX2Z1bGxSZWRyYXcoKX0sX2RpcnR5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLGk9W10uY29uY2F0KHQuc2VyaWVzLHQubmF2aWdhdG9yLnNlcmllcyksbj1lLmdyZXAoaSxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS52aXNpYmxlfSkubGVuZ3RoLG89dGhpcy5fc2VyaWVzQ291bnQhPT1uO3JldHVybiB0aGlzLl9zZXJpZXNDb3VudD1uLG99LF9mdWxsUmVkcmF3OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuX25hdmlnYXRvcjt0fHwodD1lLl9uYXZpZ2F0b3I9ZS5uYXZpZ2F0b3I9bmV3IE8oZSkpLHQuX3NldFJhbmdlKCksXy5mbi5fcmVkcmF3LmNhbGwoZSksdC5faW5pdFNlbGVjdGlvbigpfSxfb25EYXRhQ2hhbmdlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7Xy5mbi5fb25EYXRhQ2hhbmdlZC5jYWxsKGUpLGUuX2RhdGFCb3VuZD0hMH0sX2JpbmRDYXRlZ29yeUF4aXM6ZnVuY3Rpb24oZSx0LGkpe3ZhciBuLG89dGhpcyxyPW8ub3B0aW9ucy5jYXRlZ29yeUF4aXMsYT1yLmxlbmd0aDtpZihfLmZuLl9iaW5kQ2F0ZWdvcnlBeGlzLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlLm5hbWU9PT16KWZvcig7aTxhOyluPXJbaSsrXSxuLnBhbmU9PU0mJihuLmNhdGVnb3JpZXM9ZS5jYXRlZ29yaWVzKX0sX3RyYWNrU2hhcmVkVG9vbHRpcDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGk9dC5fcGxvdEFyZWEsbj1pLnBhbmVCeVBvaW50KGUpO24mJm4ub3B0aW9ucy5uYW1lPT09TT90Ll91bnNldEFjdGl2ZVBvaW50KCk6Xy5mbi5fdHJhY2tTaGFyZWRUb29sdGlwLmNhbGwodCxlKX0sX2Rlc3Ryb3lOYXZpZ2F0b3I6ZnVuY3Rpb24oKXt0aGlzLl9uYXZpZ2F0b3IuZGVzdHJveSgpLHRoaXMuX25hdmlnYXRvcj1udWxsfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fZGVzdHJveU5hdmlnYXRvcigpLF8uZm4uZGVzdHJveS5jYWxsKHRoaXMpfX0pLE89cy5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0LmNoYXJ0PWUsdC5vcHRpb25zPWwoe30sdC5vcHRpb25zLGUub3B0aW9ucy5uYXZpZ2F0b3IpLHQuX2luaXREYXRhU291cmNlKCksbSh0Lm9wdGlvbnMuaGludC52aXNpYmxlKXx8KHQub3B0aW9ucy5oaW50LnZpc2libGU9dC5vcHRpb25zLnZpc2libGUpLGUuYmluZChULHUodC5fZHJhZyx0KSksZS5iaW5kKEUsdSh0Ll9kcmFnRW5kLHQpKSxlLmJpbmQoaix1KHQuX3pvb20sdCkpLGUuYmluZChCLHUodC5fem9vbUVuZCx0KSl9LG9wdGlvbnM6e30sX2luaXREYXRhU291cmNlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUub3B0aW9ucyxpPXQuYXV0b0JpbmQsbj10LmRhdGFTb3VyY2U7bShpKXx8KGk9ZS5jaGFydC5vcHRpb25zLmF1dG9CaW5kKSxlLl9kYXRhQ2hhbmdlZEhhbmRsZXI9dShlLl9vbkRhdGFDaGFuZ2VkLGUpLG4mJihlLmRhdGFTb3VyY2U9ci5kYXRhLkRhdGFTb3VyY2UuY3JlYXRlKG4pLmJpbmQoayxlLl9kYXRhQ2hhbmdlZEhhbmRsZXIpLGkmJmUuZGF0YVNvdXJjZS5mZXRjaCgpKX0sX29uRGF0YUNoYW5nZWQ6ZnVuY3Rpb24oKXt2YXIgZSx0LGksbixvLHI9dGhpcyxhPXIuY2hhcnQscz1hLm9wdGlvbnMuc2VyaWVzLGw9cy5sZW5ndGgsYz1hLm9wdGlvbnMuY2F0ZWdvcnlBeGlzLHU9Yy5sZW5ndGgsZD1yLmRhdGFTb3VyY2UudmlldygpO2ZvcihlPTA7ZTxsO2UrKylpPXNbZV0saS5heGlzPT16JiZhLl9pc0JpbmRhYmxlKGkpJiYoaS5kYXRhPWQpO2Zvcih0PTA7dDx1O3QrKyluPWNbdF0sbi5wYW5lPT1NJiYobi5uYW1lPT16PyhhLl9iaW5kQ2F0ZWdvcnlBeGlzKG4sZCx0KSxvPW4uY2F0ZWdvcmllcyk6bi5jYXRlZ29yaWVzPW8pO2EuX21vZGVsJiYoci5yZWRyYXcoKSxyLl9zZXRSYW5nZSgpLCghYS5vcHRpb25zLmRhdGFTb3VyY2V8fGEub3B0aW9ucy5kYXRhU291cmNlJiZhLl9kYXRhQm91bmQpJiZyLnJlZHJhd1NsYXZlcygpKX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLmRhdGFTb3VyY2U7dCYmdC51bmJpbmQoayxlLl9kYXRhQ2hhbmdlSGFuZGxlciksZS5zZWxlY3Rpb24mJmUuc2VsZWN0aW9uLmRlc3Ryb3koKX0scmVkcmF3OmZ1bmN0aW9uKCl7dGhpcy5fcmVkcmF3U2VsZigpLHRoaXMuX2luaXRTZWxlY3Rpb24oKX0sX2luaXRTZWxlY3Rpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGk9dC5jaGFydCxyPXQub3B0aW9ucyxhPXQubWFpbkF4aXMoKSxzPW4oYSksbD1hLnJhbmdlKCksYz1sLm1pbix1PWwubWF4LGg9YS5vcHRpb25zLmNhdGVnb3JpZXMsZj10Lm9wdGlvbnMuc2VsZWN0LHA9dC5zZWxlY3Rpb24sbT1BKGYuZnJvbSksdj1BKGYudG8pOzAhPT1oLmxlbmd0aCYmKHAmJihwLmRlc3Ryb3koKSxwLndyYXBwZXIucmVtb3ZlKCkpLHMuYm94PWEuYm94LHA9dC5zZWxlY3Rpb249bmV3IHgoaSxzLHttaW46YyxtYXg6dSxmcm9tOm18fGMsdG86dnx8dSxzZWxlY3RTdGFydDplLnByb3h5KHQuX3NlbGVjdFN0YXJ0LHQpLHNlbGVjdDplLnByb3h5KHQuX3NlbGVjdCx0KSxzZWxlY3RFbmQ6ZS5wcm94eSh0Ll9zZWxlY3RFbmQsdCksbW91c2V3aGVlbDpkLnZhbHVlT3JEZWZhdWx0KGYubW91c2V3aGVlbCx7em9vbTpcImxlZnRcIn0pLHZpc2libGU6ci52aXNpYmxlfSksci5oaW50LnZpc2libGUmJih0LmhpbnQ9bmV3IG8oaS5lbGVtZW50LHttaW46YyxtYXg6dSx0ZW1wbGF0ZTpyLmhpbnQudGVtcGxhdGUsZm9ybWF0OnIuaGludC5mb3JtYXR9KSkpfSxfc2V0UmFuZ2U6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuY2hhcnQuX2NyZWF0ZVBsb3RBcmVhKCEwKSxpPXQubmFtZWRDYXRlZ29yeUF4ZXNbel0sbj1pLnJhbmdlKCksbz1uLm1pbixyPW4ubWF4LGE9dGhpcy5vcHRpb25zLnNlbGVjdHx8e30scz1BKGEuZnJvbSl8fG87czxvJiYocz1vKSxlPUEoYS50byl8fHIsZT5yJiYoZT1yKSx0aGlzLm9wdGlvbnMuc2VsZWN0PWwoe30sYSx7ZnJvbTpzLHRvOmV9KSx0aGlzLmZpbHRlckF4ZXMoKX0sX3JlZHJhd1NlbGY6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jaGFydC5fcGxvdEFyZWE7dCYmdC5yZWRyYXcoaCh0LnBhbmVzKSxlKX0scmVkcmF3U2xhdmVzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuY2hhcnQsaT10Ll9wbG90QXJlYSxuPWkucGFuZXMuc2xpY2UoMCwtMSk7aS5zcmNTZXJpZXM9dC5vcHRpb25zLnNlcmllcyxpLnJlZHJhdyhuKX0sX2RyYWc6ZnVuY3Rpb24oZSl7dmFyIHQsaSxuLG89dGhpcyxyPW8uY2hhcnQsYT1yLl9ldmVudENvb3JkaW5hdGVzKGUub3JpZ2luYWxFdmVudCkscz1vLm1haW5BeGlzKCksbD1zLmRhdGVzUmFuZ2UoKSxjPXMucGFuZS5ib3guY29udGFpbnNQb2ludChhKSx1PXIuX3Bsb3RBcmVhLmNhdGVnb3J5QXhpcyxkPWUuYXhpc1Jhbmdlc1t1Lm9wdGlvbnMubmFtZV0saD1vLm9wdGlvbnMuc2VsZWN0LGY9by5zZWxlY3Rpb247ZCYmIWMmJmYmJih0PWguZnJvbSYmaC50bz9TKGgudG8pLVMoaC5mcm9tKTpTKGYub3B0aW9ucy50byktUyhmLm9wdGlvbnMuZnJvbSksaT1BKHkoUyhkLm1pbiksbC5taW4sUyhsLm1heCktdCkpLG49QSh5KFMoaSkrdCxTKGwubWluKSt0LGwubWF4KSksby5vcHRpb25zLnNlbGVjdD17ZnJvbTppLHRvOm59LG8uX2xpdmVEcmFnKCkmJihvLmZpbHRlckF4ZXMoKSxvLnJlZHJhd1NsYXZlcygpKSxmLnNldChpLG4pLG8uc2hvd0hpbnQoaSxuKSl9LF9kcmFnRW5kOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLmZpbHRlckF4ZXMoKSxlLmZpbHRlckRhdGFTb3VyY2UoKSxlLnJlZHJhd1NsYXZlcygpLGUuaGludCYmZS5oaW50LmhpZGUoKX0sX2xpdmVEcmFnOmZ1bmN0aW9uKCl7dmFyIGU9ci5zdXBwb3J0LHQ9ZS50b3VjaCxpPWUuYnJvd3NlcixuPWkubW96aWxsYSxvPWkubXNpZSYmaS52ZXJzaW9uPDk7cmV0dXJuIXQmJiFuJiYhb30scmVhZFNlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLnNlbGVjdGlvbixpPXQub3B0aW9ucyxuPWUub3B0aW9ucy5zZWxlY3Q7bi5mcm9tPWkuZnJvbSxuLnRvPWkudG99LGZpbHRlckF4ZXM6ZnVuY3Rpb24oKXt2YXIgZSx0LGk9dGhpcyxuPWkub3B0aW9ucy5zZWxlY3R8fHt9LG89aS5jaGFydCxyPW8ub3B0aW9ucy5jYXRlZ29yeUF4aXMsYT1uLmZyb20scz1uLnRvO2ZvcihlPTA7ZTxyLmxlbmd0aDtlKyspdD1yW2VdLHQucGFuZSE9PU0mJih0Lm1pbj1BKGEpLHQubWF4PUEocykpfSxmaWx0ZXJEYXRhU291cmNlOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLGk9dC5vcHRpb25zLnNlbGVjdHx8e30sbj10LmNoYXJ0LG89bi5kYXRhU291cmNlLHI9byYmby5vcHRpb25zLnNlcnZlckZpbHRlcmluZzt0LmRhdGFTb3VyY2UmJnImJihlPW5ldyBwLkRhdGVDYXRlZ29yeUF4aXMobCh7YmFzZVVuaXQ6XCJmaXRcIn0sbi5vcHRpb25zLmNhdGVnb3J5QXhpc1swXSx7Y2F0ZWdvcmllczpbaS5mcm9tLGkudG9dfSkpLm9wdGlvbnMsby5maWx0ZXIoTy5idWlsZEZpbHRlcihiKGUubWluLC1lLmJhc2VVbml0U3RlcCxlLmJhc2VVbml0KSxiKGUubWF4LGUuYmFzZVVuaXRTdGVwLGUuYmFzZVVuaXQpKSkpfSxfem9vbTpmdW5jdGlvbihlKXt2YXIgdCxpLG49dGhpcyxvPW4uY2hhcnQsYT1lLmRlbHRhLHM9by5fcGxvdEFyZWEuY2F0ZWdvcnlBeGlzLGw9bi5vcHRpb25zLnNlbGVjdCx1PW4uc2VsZWN0aW9uLGQ9bi5tYWluQXhpcygpLm9wdGlvbnMuY2F0ZWdvcmllczt1JiYodD13KHUub3B0aW9ucy5mcm9tLGQpLGk9dyh1Lm9wdGlvbnMudG8sZCksZS5vcmlnaW5hbEV2ZW50LnByZXZlbnREZWZhdWx0KCksYy5hYnMoYSk+MSYmKGEqPU4pLGktdD4xPyh1LmV4cGFuZChhKSxuLnJlYWRTZWxlY3Rpb24oKSk6KHMub3B0aW9ucy5taW49bC5mcm9tLGwuZnJvbT1zLnNjYWxlUmFuZ2UoLWUuZGVsdGEpLm1pbiksci5zdXBwb3J0LnRvdWNofHwobi5maWx0ZXJBeGVzKCksbi5yZWRyYXdTbGF2ZXMoKSksdS5zZXQobC5mcm9tLGwudG8pLG4uc2hvd0hpbnQobi5vcHRpb25zLnNlbGVjdC5mcm9tLG4ub3B0aW9ucy5zZWxlY3QudG8pKX0sX3pvb21FbmQ6ZnVuY3Rpb24oZSl7dGhpcy5fZHJhZ0VuZChlKX0sc2hvd0hpbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLG49aS5jaGFydCxvPW4uX3Bsb3RBcmVhO2kuaGludCYmaS5oaW50LnNob3coZSx0LG8uYmFja2dyb3VuZEJveCgpKX0sX3NlbGVjdFN0YXJ0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY2hhcnQ7dC5fc2VsZWN0U3RhcnQuY2FsbCh0LGUpfSxfc2VsZWN0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10LmNoYXJ0O3Quc2hvd0hpbnQoZS5mcm9tLGUudG8pLGkuX3NlbGVjdC5jYWxsKGksZSl9LF9zZWxlY3RFbmQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxpPXQuY2hhcnQ7dC5oaW50JiZ0LmhpbnQuaGlkZSgpLHQucmVhZFNlbGVjdGlvbigpLHQuZmlsdGVyQXhlcygpLHQuZmlsdGVyRGF0YVNvdXJjZSgpLHQucmVkcmF3U2xhdmVzKCksaS5fc2VsZWN0RW5kLmNhbGwoaSxlKX0sbWFpbkF4aXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNoYXJ0Ll9wbG90QXJlYTtpZihlKXJldHVybiBlLm5hbWVkQ2F0ZWdvcnlBeGVzW3pdfSxzZWxlY3Q6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLm9wdGlvbnMuc2VsZWN0O3JldHVybiBlJiZ0JiYoaS5mcm9tPUEoZSksaS50bz1BKHQpLHRoaXMuZmlsdGVyQXhlcygpLHRoaXMuZmlsdGVyRGF0YVNvdXJjZSgpLHRoaXMucmVkcmF3U2xhdmVzKCksdGhpcy5zZWxlY3Rpb24uc2V0KGUsdCkpLHtmcm9tOmkuZnJvbSx0bzppLnRvfX19KTtPLnNldHVwPWZ1bmN0aW9uKGUsdCl7aWYoZT1lfHx7fSx0PXR8fHt9LCFlLl9fbmF2aSl7ZS5fX25hdmk9ITA7dmFyIGk9bCh7fSx0Lm5hdmlnYXRvcixlLm5hdmlnYXRvciksbj1lLnBhbmVzPVtdLmNvbmNhdChlLnBhbmVzKSxvPWwoe30saS5wYW5lLHtuYW1lOk19KTtpLnZpc2libGV8fChvLnZpc2libGU9ITEsby5oZWlnaHQ9LjEpLG4ucHVzaChvKSxPLmF0dGFjaEF4ZXMoZSxpKSxPLmF0dGFjaFNlcmllcyhlLGksdCl9fSxPLmF0dGFjaEF4ZXM9ZnVuY3Rpb24oZSx0KXt2YXIgaT10LnNlcmllc3x8W10sbj1lLmNhdGVnb3J5QXhpcz1bXS5jb25jYXQoZS5jYXRlZ29yeUF4aXMpLG89ZS52YWx1ZUF4aXM9W10uY29uY2F0KGUudmFsdWVBeGlzKSxyPXYoaSxVKSxhPTA9PT1yLmxlbmd0aCxzPWwoe3R5cGU6XCJkYXRlXCIscGFuZTpNLHJvdW5kVG9CYXNlVW5pdDohYSxqdXN0aWZpZWQ6YSxfY29sbGFwc2U6ITEsbWFqb3JUaWNrczp7dmlzaWJsZTohMH0sdG9vbHRpcDp7dmlzaWJsZTohMX0sbGFiZWxzOntzdGVwOjF9LGF1dG9CaW5kOiF0LmRhdGFTb3VyY2UsYXV0b0Jhc2VVbml0U3RlcHM6e21pbnV0ZXM6WzFdLGhvdXJzOlsxLDJdLGRheXM6WzEsMl0sd2Vla3M6W10sbW9udGhzOlsxXSx5ZWFyczpbMV19LF9vdmVybGFwOiEwfSksYz10LmNhdGVnb3J5QXhpcztuLnB1c2gobCh7fSxzLHttYXhEYXRlR3JvdXBzOjIwMH0sYyx7bmFtZTp6LHRpdGxlOm51bGwsYmFzZVVuaXQ6XCJmaXRcIixiYXNlVW5pdFN0ZXA6XCJhdXRvXCIsbGFiZWxzOnt2aXNpYmxlOiExfSxtYWpvclRpY2tzOnt2aXNpYmxlOiExfX0pLGwoe30scyxjLHtuYW1lOnorXCJfbGFiZWxzXCIsbWF4RGF0ZUdyb3VwczoyMCxiYXNlVW5pdFN0ZXA6XCJhdXRvXCIscGxvdEJhbmRzOltdLGF1dG9CYXNlVW5pdFN0ZXBzOnttaW51dGVzOltdfX0pLGwoe30scyxjLHtuYW1lOnorXCJfdGlja3NcIixtYXhEYXRlR3JvdXBzOjIwMCxtYWpvclRpY2tzOnt3aWR0aDouNX0scGxvdEJhbmRzOltdLHRpdGxlOm51bGwsbGFiZWxzOnt2aXNpYmxlOiExLG1pcnJvcjohMH19KSksby5wdXNoKGwoe25hbWU6eixwYW5lOk0sbWFqb3JHcmlkTGluZXM6e3Zpc2libGU6ITF9LHZpc2libGU6ITF9LHQudmFsdWVBeGlzKSl9LE8uYXR0YWNoU2VyaWVzPWZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvPWUuc2VyaWVzPWUuc2VyaWVzfHxbXSxyPVtdLmNvbmNhdCh0LnNlcmllc3x8W10pLGE9aS5zZXJpZXNDb2xvcnMscz10LnNlcmllc0RlZmF1bHRzO2ZvcihuPTA7bjxyLmxlbmd0aDtuKyspby5wdXNoKGwoe2NvbG9yOmFbbiVhLmxlbmd0aF0sY2F0ZWdvcnlGaWVsZDp0LmRhdGVGaWVsZCx2aXNpYmxlSW5MZWdlbmQ6ITEsdG9vbHRpcDp7dmlzaWJsZTohMX19LHMscltuXSx7YXhpczp6LGNhdGVnb3J5QXhpczp6LGF1dG9CaW5kOiF0LmRhdGFTb3VyY2V9KSl9LE8uYnVpbGRGaWx0ZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm5be2ZpZWxkOlwiRGF0ZVwiLG9wZXJhdG9yOlwiZ3RlXCIsdmFsdWU6QShlKX0se2ZpZWxkOlwiRGF0ZVwiLG9wZXJhdG9yOlwibHRcIix2YWx1ZTpBKHQpfV19LG89YS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxpKXt2YXIgbj10aGlzO24ub3B0aW9ucz1sKHt9LG4ub3B0aW9ucyxpKSxuLmNvbnRhaW5lcj10LG4uY2hhcnRQYWRkaW5nPXt0b3A6cGFyc2VJbnQodC5jc3MoXCJwYWRkaW5nVG9wXCIpLDEwKSxsZWZ0OnBhcnNlSW50KHQuY3NzKFwicGFkZGluZ0xlZnRcIiksMTApfSxuLnRlbXBsYXRlPW4udGVtcGxhdGUsbi50ZW1wbGF0ZXx8KG4udGVtcGxhdGU9bi50ZW1wbGF0ZT1mKFwiPGRpdiBjbGFzcz0nXCIrRCtcIm5hdmlnYXRvci1oaW50JyBzdHlsZT0nZGlzcGxheTogbm9uZTsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDFweDsgbGVmdDogMXB4Oyc+PGRpdiBjbGFzcz0nXCIrRCtcInRvb2x0aXAgXCIrRCtcImNoYXJ0LXRvb2x0aXAnPiZuYnNwOzwvZGl2PjxkaXYgY2xhc3M9J1wiK0QrXCJzY3JvbGwnIC8+PC9kaXY+XCIpKSxuLmVsZW1lbnQ9ZShuLnRlbXBsYXRlKCkpLmFwcGVuZFRvKHQpfSxvcHRpb25zOntmb3JtYXQ6XCJ7MDpkfSAtIHsxOmR9XCIsaGlkZURlbGF5OjUwMH0sc2hvdzpmdW5jdGlvbihlLHQsaSl7dmFyIG4sbz10aGlzLGE9QShTKGUpK1ModC1lKS8yKSxzPW8ub3B0aW9ucyxsPXIuZm9ybWF0KG8ub3B0aW9ucy5mb3JtYXQsZSx0KSxjPW8uZWxlbWVudC5maW5kKFwiLlwiK0QrXCJ0b29sdGlwXCIpLHU9by5lbGVtZW50LmZpbmQoXCIuXCIrRCtcInNjcm9sbFwiKSxkPS40Kmkud2lkdGgoKSxoPWkuY2VudGVyKCkueC1kLGY9aS5jZW50ZXIoKS54LHA9Zi1oLG09cy5tYXgtcy5taW4sdj1wL20sXz1hLXMubWluO28uX2hpZGVUaW1lb3V0JiZjbGVhclRpbWVvdXQoby5faGlkZVRpbWVvdXQpLG8uX3Zpc2libGV8fChvLmVsZW1lbnQuc3RvcCghMSwhMCkuY3NzKFwidmlzaWJpbGl0eVwiLFwiaGlkZGVuXCIpLnNob3coKSxvLl92aXNpYmxlPSEwKSxzLnRlbXBsYXRlJiYobj1nKHMudGVtcGxhdGUpLGw9bih7ZnJvbTplLHRvOnR9KSksYy5odG1sKGwpLmNzcyh7bGVmdDppLmNlbnRlcigpLngtci5fb3V0ZXJXaWR0aChjKS8yLHRvcDppLnkxfSksdS5jc3Moe3dpZHRoOmQsbGVmdDpoK18qdix0b3A6aS55MStwYXJzZUludChjLmNzcyhcIm1hcmdpbi10b3BcIiksMTApK3BhcnNlSW50KGMuY3NzKFwiYm9yZGVyLXRvcC13aWR0aFwiKSwxMCkrYy5oZWlnaHQoKS8yfSksby5lbGVtZW50LmNzcyhcInZpc2liaWxpdHlcIixcInZpc2libGVcIil9LGhpZGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuX2hpZGVUaW1lb3V0JiZjbGVhclRpbWVvdXQoZS5faGlkZVRpbWVvdXQpLGUuX2hpZGVUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLl92aXNpYmxlPSExLGUuZWxlbWVudC5mYWRlT3V0KFwic2xvd1wiKX0sZS5vcHRpb25zLmhpZGVEZWxheSl9fSkscC51aS5wbHVnaW4oRiksbChwLHtOYXZpZ2F0b3I6T30pfSh3aW5kb3cua2VuZG8ualF1ZXJ5KSx3aW5kb3cua2VuZG99LFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oZSx0LGkpeyhpfHx0KSgpfSk7OyIsIi8qIVxuICogTWFzb25yeSBQQUNLQUdFRCB2NC4xLjFcbiAqIENhc2NhZGluZyBncmlkIGxheW91dCBsaWJyYXJ5XG4gKiBodHRwOi8vbWFzb25yeS5kZXNhbmRyby5jb21cbiAqIE1JVCBMaWNlbnNlXG4gKiBieSBEYXZpZCBEZVNhbmRyb1xuICovXG5cbiFmdW5jdGlvbih0LGUpe1wiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoXCJqcXVlcnktYnJpZGdldC9qcXVlcnktYnJpZGdldFwiLFtcImpxdWVyeVwiXSxmdW5jdGlvbihpKXtyZXR1cm4gZSh0LGkpfSk6XCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZSh0LHJlcXVpcmUoXCJqcXVlcnlcIikpOnQualF1ZXJ5QnJpZGdldD1lKHQsdC5qUXVlcnkpfSh3aW5kb3csZnVuY3Rpb24odCxlKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBpKGkscixhKXtmdW5jdGlvbiBoKHQsZSxuKXt2YXIgbyxyPVwiJCgpLlwiK2krJyhcIicrZSsnXCIpJztyZXR1cm4gdC5lYWNoKGZ1bmN0aW9uKHQsaCl7dmFyIHU9YS5kYXRhKGgsaSk7aWYoIXUpcmV0dXJuIHZvaWQgcyhpK1wiIG5vdCBpbml0aWFsaXplZC4gQ2Fubm90IGNhbGwgbWV0aG9kcywgaS5lLiBcIityKTt2YXIgZD11W2VdO2lmKCFkfHxcIl9cIj09ZS5jaGFyQXQoMCkpcmV0dXJuIHZvaWQgcyhyK1wiIGlzIG5vdCBhIHZhbGlkIG1ldGhvZFwiKTt2YXIgbD1kLmFwcGx5KHUsbik7bz12b2lkIDA9PT1vP2w6b30pLHZvaWQgMCE9PW8/bzp0fWZ1bmN0aW9uIHUodCxlKXt0LmVhY2goZnVuY3Rpb24odCxuKXt2YXIgbz1hLmRhdGEobixpKTtvPyhvLm9wdGlvbihlKSxvLl9pbml0KCkpOihvPW5ldyByKG4sZSksYS5kYXRhKG4saSxvKSl9KX1hPWF8fGV8fHQualF1ZXJ5LGEmJihyLnByb3RvdHlwZS5vcHRpb258fChyLnByb3RvdHlwZS5vcHRpb249ZnVuY3Rpb24odCl7YS5pc1BsYWluT2JqZWN0KHQpJiYodGhpcy5vcHRpb25zPWEuZXh0ZW5kKCEwLHRoaXMub3B0aW9ucyx0KSl9KSxhLmZuW2ldPWZ1bmN0aW9uKHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXt2YXIgZT1vLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBoKHRoaXMsdCxlKX1yZXR1cm4gdSh0aGlzLHQpLHRoaXN9LG4oYSkpfWZ1bmN0aW9uIG4odCl7IXR8fHQmJnQuYnJpZGdldHx8KHQuYnJpZGdldD1pKX12YXIgbz1BcnJheS5wcm90b3R5cGUuc2xpY2Uscj10LmNvbnNvbGUscz1cInVuZGVmaW5lZFwiPT10eXBlb2Ygcj9mdW5jdGlvbigpe306ZnVuY3Rpb24odCl7ci5lcnJvcih0KX07cmV0dXJuIG4oZXx8dC5qUXVlcnkpLGl9KSxmdW5jdGlvbih0LGUpe1wiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoXCJldi1lbWl0dGVyL2V2LWVtaXR0ZXJcIixlKTpcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1lKCk6dC5FdkVtaXR0ZXI9ZSgpfShcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe312YXIgZT10LnByb3RvdHlwZTtyZXR1cm4gZS5vbj1mdW5jdGlvbih0LGUpe2lmKHQmJmUpe3ZhciBpPXRoaXMuX2V2ZW50cz10aGlzLl9ldmVudHN8fHt9LG49aVt0XT1pW3RdfHxbXTtyZXR1cm4tMT09bi5pbmRleE9mKGUpJiZuLnB1c2goZSksdGhpc319LGUub25jZT1mdW5jdGlvbih0LGUpe2lmKHQmJmUpe3RoaXMub24odCxlKTt2YXIgaT10aGlzLl9vbmNlRXZlbnRzPXRoaXMuX29uY2VFdmVudHN8fHt9LG49aVt0XT1pW3RdfHx7fTtyZXR1cm4gbltlXT0hMCx0aGlzfX0sZS5vZmY9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9ldmVudHMmJnRoaXMuX2V2ZW50c1t0XTtpZihpJiZpLmxlbmd0aCl7dmFyIG49aS5pbmRleE9mKGUpO3JldHVybi0xIT1uJiZpLnNwbGljZShuLDEpLHRoaXN9fSxlLmVtaXRFdmVudD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzW3RdO2lmKGkmJmkubGVuZ3RoKXt2YXIgbj0wLG89aVtuXTtlPWV8fFtdO2Zvcih2YXIgcj10aGlzLl9vbmNlRXZlbnRzJiZ0aGlzLl9vbmNlRXZlbnRzW3RdO287KXt2YXIgcz1yJiZyW29dO3MmJih0aGlzLm9mZih0LG8pLGRlbGV0ZSByW29dKSxvLmFwcGx5KHRoaXMsZSksbis9cz8wOjEsbz1pW25dfXJldHVybiB0aGlzfX0sdH0pLGZ1bmN0aW9uKHQsZSl7XCJ1c2Ugc3RyaWN0XCI7XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShcImdldC1zaXplL2dldC1zaXplXCIsW10sZnVuY3Rpb24oKXtyZXR1cm4gZSgpfSk6XCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZSgpOnQuZ2V0U2l6ZT1lKCl9KHdpbmRvdyxmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHQodCl7dmFyIGU9cGFyc2VGbG9hdCh0KSxpPS0xPT10LmluZGV4T2YoXCIlXCIpJiYhaXNOYU4oZSk7cmV0dXJuIGkmJmV9ZnVuY3Rpb24gZSgpe31mdW5jdGlvbiBpKCl7Zm9yKHZhciB0PXt3aWR0aDowLGhlaWdodDowLGlubmVyV2lkdGg6MCxpbm5lckhlaWdodDowLG91dGVyV2lkdGg6MCxvdXRlckhlaWdodDowfSxlPTA7dT5lO2UrKyl7dmFyIGk9aFtlXTt0W2ldPTB9cmV0dXJuIHR9ZnVuY3Rpb24gbih0KXt2YXIgZT1nZXRDb21wdXRlZFN0eWxlKHQpO3JldHVybiBlfHxhKFwiU3R5bGUgcmV0dXJuZWQgXCIrZStcIi4gQXJlIHlvdSBydW5uaW5nIHRoaXMgY29kZSBpbiBhIGhpZGRlbiBpZnJhbWUgb24gRmlyZWZveD8gU2VlIGh0dHA6Ly9iaXQubHkvZ2V0c2l6ZWJ1ZzFcIiksZX1mdW5jdGlvbiBvKCl7aWYoIWQpe2Q9ITA7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtlLnN0eWxlLndpZHRoPVwiMjAwcHhcIixlLnN0eWxlLnBhZGRpbmc9XCIxcHggMnB4IDNweCA0cHhcIixlLnN0eWxlLmJvcmRlclN0eWxlPVwic29saWRcIixlLnN0eWxlLmJvcmRlcldpZHRoPVwiMXB4IDJweCAzcHggNHB4XCIsZS5zdHlsZS5ib3hTaXppbmc9XCJib3JkZXItYm94XCI7dmFyIGk9ZG9jdW1lbnQuYm9keXx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O2kuYXBwZW5kQ2hpbGQoZSk7dmFyIG89bihlKTtyLmlzQm94U2l6ZU91dGVyPXM9MjAwPT10KG8ud2lkdGgpLGkucmVtb3ZlQ2hpbGQoZSl9fWZ1bmN0aW9uIHIoZSl7aWYobygpLFwic3RyaW5nXCI9PXR5cGVvZiBlJiYoZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpKSxlJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmZS5ub2RlVHlwZSl7dmFyIHI9bihlKTtpZihcIm5vbmVcIj09ci5kaXNwbGF5KXJldHVybiBpKCk7dmFyIGE9e307YS53aWR0aD1lLm9mZnNldFdpZHRoLGEuaGVpZ2h0PWUub2Zmc2V0SGVpZ2h0O2Zvcih2YXIgZD1hLmlzQm9yZGVyQm94PVwiYm9yZGVyLWJveFwiPT1yLmJveFNpemluZyxsPTA7dT5sO2wrKyl7dmFyIGM9aFtsXSxmPXJbY10sbT1wYXJzZUZsb2F0KGYpO2FbY109aXNOYU4obSk/MDptfXZhciBwPWEucGFkZGluZ0xlZnQrYS5wYWRkaW5nUmlnaHQsZz1hLnBhZGRpbmdUb3ArYS5wYWRkaW5nQm90dG9tLHk9YS5tYXJnaW5MZWZ0K2EubWFyZ2luUmlnaHQsdj1hLm1hcmdpblRvcCthLm1hcmdpbkJvdHRvbSxfPWEuYm9yZGVyTGVmdFdpZHRoK2EuYm9yZGVyUmlnaHRXaWR0aCxFPWEuYm9yZGVyVG9wV2lkdGgrYS5ib3JkZXJCb3R0b21XaWR0aCx6PWQmJnMsYj10KHIud2lkdGgpO2IhPT0hMSYmKGEud2lkdGg9Yisoej8wOnArXykpO3ZhciB4PXQoci5oZWlnaHQpO3JldHVybiB4IT09ITEmJihhLmhlaWdodD14Kyh6PzA6ZytFKSksYS5pbm5lcldpZHRoPWEud2lkdGgtKHArXyksYS5pbm5lckhlaWdodD1hLmhlaWdodC0oZytFKSxhLm91dGVyV2lkdGg9YS53aWR0aCt5LGEub3V0ZXJIZWlnaHQ9YS5oZWlnaHQrdixhfX12YXIgcyxhPVwidW5kZWZpbmVkXCI9PXR5cGVvZiBjb25zb2xlP2U6ZnVuY3Rpb24odCl7Y29uc29sZS5lcnJvcih0KX0saD1bXCJwYWRkaW5nTGVmdFwiLFwicGFkZGluZ1JpZ2h0XCIsXCJwYWRkaW5nVG9wXCIsXCJwYWRkaW5nQm90dG9tXCIsXCJtYXJnaW5MZWZ0XCIsXCJtYXJnaW5SaWdodFwiLFwibWFyZ2luVG9wXCIsXCJtYXJnaW5Cb3R0b21cIixcImJvcmRlckxlZnRXaWR0aFwiLFwiYm9yZGVyUmlnaHRXaWR0aFwiLFwiYm9yZGVyVG9wV2lkdGhcIixcImJvcmRlckJvdHRvbVdpZHRoXCJdLHU9aC5sZW5ndGgsZD0hMTtyZXR1cm4gcn0pLGZ1bmN0aW9uKHQsZSl7XCJ1c2Ugc3RyaWN0XCI7XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShcImRlc2FuZHJvLW1hdGNoZXMtc2VsZWN0b3IvbWF0Y2hlcy1zZWxlY3RvclwiLGUpOlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWUoKTp0Lm1hdGNoZXNTZWxlY3Rvcj1lKCl9KHdpbmRvdyxmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciB0PWZ1bmN0aW9uKCl7dmFyIHQ9RWxlbWVudC5wcm90b3R5cGU7aWYodC5tYXRjaGVzKXJldHVyblwibWF0Y2hlc1wiO2lmKHQubWF0Y2hlc1NlbGVjdG9yKXJldHVyblwibWF0Y2hlc1NlbGVjdG9yXCI7Zm9yKHZhciBlPVtcIndlYmtpdFwiLFwibW96XCIsXCJtc1wiLFwib1wiXSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBuPWVbaV0sbz1uK1wiTWF0Y2hlc1NlbGVjdG9yXCI7aWYodFtvXSlyZXR1cm4gb319KCk7cmV0dXJuIGZ1bmN0aW9uKGUsaSl7cmV0dXJuIGVbdF0oaSl9fSksZnVuY3Rpb24odCxlKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFwiZml6enktdWktdXRpbHMvdXRpbHNcIixbXCJkZXNhbmRyby1tYXRjaGVzLXNlbGVjdG9yL21hdGNoZXMtc2VsZWN0b3JcIl0sZnVuY3Rpb24oaSl7cmV0dXJuIGUodCxpKX0pOlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWUodCxyZXF1aXJlKFwiZGVzYW5kcm8tbWF0Y2hlcy1zZWxlY3RvclwiKSk6dC5maXp6eVVJVXRpbHM9ZSh0LHQubWF0Y2hlc1NlbGVjdG9yKX0od2luZG93LGZ1bmN0aW9uKHQsZSl7dmFyIGk9e307aS5leHRlbmQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkgaW4gZSl0W2ldPWVbaV07cmV0dXJuIHR9LGkubW9kdWxvPWZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQlZStlKSVlfSxpLm1ha2VBcnJheT1mdW5jdGlvbih0KXt2YXIgZT1bXTtpZihBcnJheS5pc0FycmF5KHQpKWU9dDtlbHNlIGlmKHQmJlwibnVtYmVyXCI9PXR5cGVvZiB0Lmxlbmd0aClmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKyllLnB1c2godFtpXSk7ZWxzZSBlLnB1c2godCk7cmV0dXJuIGV9LGkucmVtb3ZlRnJvbT1mdW5jdGlvbih0LGUpe3ZhciBpPXQuaW5kZXhPZihlKTstMSE9aSYmdC5zcGxpY2UoaSwxKX0saS5nZXRQYXJlbnQ9ZnVuY3Rpb24odCxpKXtmb3IoO3QhPWRvY3VtZW50LmJvZHk7KWlmKHQ9dC5wYXJlbnROb2RlLGUodCxpKSlyZXR1cm4gdH0saS5nZXRRdWVyeUVsZW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KTp0fSxpLmhhbmRsZUV2ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPVwib25cIit0LnR5cGU7dGhpc1tlXSYmdGhpc1tlXSh0KX0saS5maWx0ZXJGaW5kRWxlbWVudHM9ZnVuY3Rpb24odCxuKXt0PWkubWFrZUFycmF5KHQpO3ZhciBvPVtdO3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXtpZighbilyZXR1cm4gdm9pZCBvLnB1c2godCk7ZSh0LG4pJiZvLnB1c2godCk7Zm9yKHZhciBpPXQucXVlcnlTZWxlY3RvckFsbChuKSxyPTA7cjxpLmxlbmd0aDtyKyspby5wdXNoKGlbcl0pfX0pLG99LGkuZGVib3VuY2VNZXRob2Q9ZnVuY3Rpb24odCxlLGkpe3ZhciBuPXQucHJvdG90eXBlW2VdLG89ZStcIlRpbWVvdXRcIjt0LnByb3RvdHlwZVtlXT1mdW5jdGlvbigpe3ZhciB0PXRoaXNbb107dCYmY2xlYXJUaW1lb3V0KHQpO3ZhciBlPWFyZ3VtZW50cyxyPXRoaXM7dGhpc1tvXT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bi5hcHBseShyLGUpLGRlbGV0ZSByW29dfSxpfHwxMDApfX0saS5kb2NSZWFkeT1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5yZWFkeVN0YXRlO1wiY29tcGxldGVcIj09ZXx8XCJpbnRlcmFjdGl2ZVwiPT1lP3QoKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLHQpfSxpLnRvRGFzaGVkPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoLyguKShbQS1aXSkvZyxmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGUrXCItXCIraX0pLnRvTG93ZXJDYXNlKCl9O3ZhciBuPXQuY29uc29sZTtyZXR1cm4gaS5odG1sSW5pdD1mdW5jdGlvbihlLG8pe2kuZG9jUmVhZHkoZnVuY3Rpb24oKXt2YXIgcj1pLnRvRGFzaGVkKG8pLHM9XCJkYXRhLVwiK3IsYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW1wiK3MrXCJdXCIpLGg9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5qcy1cIityKSx1PWkubWFrZUFycmF5KGEpLmNvbmNhdChpLm1ha2VBcnJheShoKSksZD1zK1wiLW9wdGlvbnNcIixsPXQualF1ZXJ5O3UuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgaSxyPXQuZ2V0QXR0cmlidXRlKHMpfHx0LmdldEF0dHJpYnV0ZShkKTt0cnl7aT1yJiZKU09OLnBhcnNlKHIpfWNhdGNoKGEpe3JldHVybiB2b2lkKG4mJm4uZXJyb3IoXCJFcnJvciBwYXJzaW5nIFwiK3MrXCIgb24gXCIrdC5jbGFzc05hbWUrXCI6IFwiK2EpKX12YXIgaD1uZXcgZSh0LGkpO2wmJmwuZGF0YSh0LG8saCl9KX0pfSxpfSksZnVuY3Rpb24odCxlKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFwib3V0bGF5ZXIvaXRlbVwiLFtcImV2LWVtaXR0ZXIvZXYtZW1pdHRlclwiLFwiZ2V0LXNpemUvZ2V0LXNpemVcIl0sZSk6XCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZShyZXF1aXJlKFwiZXYtZW1pdHRlclwiKSxyZXF1aXJlKFwiZ2V0LXNpemVcIikpOih0Lk91dGxheWVyPXt9LHQuT3V0bGF5ZXIuSXRlbT1lKHQuRXZFbWl0dGVyLHQuZ2V0U2l6ZSkpfSh3aW5kb3csZnVuY3Rpb24odCxlKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBpKHQpe2Zvcih2YXIgZSBpbiB0KXJldHVybiExO3JldHVybiBlPW51bGwsITB9ZnVuY3Rpb24gbih0LGUpe3QmJih0aGlzLmVsZW1lbnQ9dCx0aGlzLmxheW91dD1lLHRoaXMucG9zaXRpb249e3g6MCx5OjB9LHRoaXMuX2NyZWF0ZSgpKX1mdW5jdGlvbiBvKHQpe3JldHVybiB0LnJlcGxhY2UoLyhbQS1aXSkvZyxmdW5jdGlvbih0KXtyZXR1cm5cIi1cIit0LnRvTG93ZXJDYXNlKCl9KX12YXIgcj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUscz1cInN0cmluZ1wiPT10eXBlb2Ygci50cmFuc2l0aW9uP1widHJhbnNpdGlvblwiOlwiV2Via2l0VHJhbnNpdGlvblwiLGE9XCJzdHJpbmdcIj09dHlwZW9mIHIudHJhbnNmb3JtP1widHJhbnNmb3JtXCI6XCJXZWJraXRUcmFuc2Zvcm1cIixoPXtXZWJraXRUcmFuc2l0aW9uOlwid2Via2l0VHJhbnNpdGlvbkVuZFwiLHRyYW5zaXRpb246XCJ0cmFuc2l0aW9uZW5kXCJ9W3NdLHU9e3RyYW5zZm9ybTphLHRyYW5zaXRpb246cyx0cmFuc2l0aW9uRHVyYXRpb246cytcIkR1cmF0aW9uXCIsdHJhbnNpdGlvblByb3BlcnR5OnMrXCJQcm9wZXJ0eVwiLHRyYW5zaXRpb25EZWxheTpzK1wiRGVsYXlcIn0sZD1uLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtkLmNvbnN0cnVjdG9yPW4sZC5fY3JlYXRlPWZ1bmN0aW9uKCl7dGhpcy5fdHJhbnNuPXtpbmdQcm9wZXJ0aWVzOnt9LGNsZWFuOnt9LG9uRW5kOnt9fSx0aGlzLmNzcyh7cG9zaXRpb246XCJhYnNvbHV0ZVwifSl9LGQuaGFuZGxlRXZlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9XCJvblwiK3QudHlwZTt0aGlzW2VdJiZ0aGlzW2VdKHQpfSxkLmdldFNpemU9ZnVuY3Rpb24oKXt0aGlzLnNpemU9ZSh0aGlzLmVsZW1lbnQpfSxkLmNzcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmVsZW1lbnQuc3R5bGU7Zm9yKHZhciBpIGluIHQpe3ZhciBuPXVbaV18fGk7ZVtuXT10W2ldfX0sZC5nZXRQb3NpdGlvbj1mdW5jdGlvbigpe3ZhciB0PWdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50KSxlPXRoaXMubGF5b3V0Ll9nZXRPcHRpb24oXCJvcmlnaW5MZWZ0XCIpLGk9dGhpcy5sYXlvdXQuX2dldE9wdGlvbihcIm9yaWdpblRvcFwiKSxuPXRbZT9cImxlZnRcIjpcInJpZ2h0XCJdLG89dFtpP1widG9wXCI6XCJib3R0b21cIl0scj10aGlzLmxheW91dC5zaXplLHM9LTEhPW4uaW5kZXhPZihcIiVcIik/cGFyc2VGbG9hdChuKS8xMDAqci53aWR0aDpwYXJzZUludChuLDEwKSxhPS0xIT1vLmluZGV4T2YoXCIlXCIpP3BhcnNlRmxvYXQobykvMTAwKnIuaGVpZ2h0OnBhcnNlSW50KG8sMTApO3M9aXNOYU4ocyk/MDpzLGE9aXNOYU4oYSk/MDphLHMtPWU/ci5wYWRkaW5nTGVmdDpyLnBhZGRpbmdSaWdodCxhLT1pP3IucGFkZGluZ1RvcDpyLnBhZGRpbmdCb3R0b20sdGhpcy5wb3NpdGlvbi54PXMsdGhpcy5wb3NpdGlvbi55PWF9LGQubGF5b3V0UG9zaXRpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmxheW91dC5zaXplLGU9e30saT10aGlzLmxheW91dC5fZ2V0T3B0aW9uKFwib3JpZ2luTGVmdFwiKSxuPXRoaXMubGF5b3V0Ll9nZXRPcHRpb24oXCJvcmlnaW5Ub3BcIiksbz1pP1wicGFkZGluZ0xlZnRcIjpcInBhZGRpbmdSaWdodFwiLHI9aT9cImxlZnRcIjpcInJpZ2h0XCIscz1pP1wicmlnaHRcIjpcImxlZnRcIixhPXRoaXMucG9zaXRpb24ueCt0W29dO2Vbcl09dGhpcy5nZXRYVmFsdWUoYSksZVtzXT1cIlwiO3ZhciBoPW4/XCJwYWRkaW5nVG9wXCI6XCJwYWRkaW5nQm90dG9tXCIsdT1uP1widG9wXCI6XCJib3R0b21cIixkPW4/XCJib3R0b21cIjpcInRvcFwiLGw9dGhpcy5wb3NpdGlvbi55K3RbaF07ZVt1XT10aGlzLmdldFlWYWx1ZShsKSxlW2RdPVwiXCIsdGhpcy5jc3MoZSksdGhpcy5lbWl0RXZlbnQoXCJsYXlvdXRcIixbdGhpc10pfSxkLmdldFhWYWx1ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxheW91dC5fZ2V0T3B0aW9uKFwiaG9yaXpvbnRhbFwiKTtyZXR1cm4gdGhpcy5sYXlvdXQub3B0aW9ucy5wZXJjZW50UG9zaXRpb24mJiFlP3QvdGhpcy5sYXlvdXQuc2l6ZS53aWR0aCoxMDArXCIlXCI6dCtcInB4XCJ9LGQuZ2V0WVZhbHVlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGF5b3V0Ll9nZXRPcHRpb24oXCJob3Jpem9udGFsXCIpO3JldHVybiB0aGlzLmxheW91dC5vcHRpb25zLnBlcmNlbnRQb3NpdGlvbiYmZT90L3RoaXMubGF5b3V0LnNpemUuaGVpZ2h0KjEwMCtcIiVcIjp0K1wicHhcIn0sZC5fdHJhbnNpdGlvblRvPWZ1bmN0aW9uKHQsZSl7dGhpcy5nZXRQb3NpdGlvbigpO3ZhciBpPXRoaXMucG9zaXRpb24ueCxuPXRoaXMucG9zaXRpb24ueSxvPXBhcnNlSW50KHQsMTApLHI9cGFyc2VJbnQoZSwxMCkscz1vPT09dGhpcy5wb3NpdGlvbi54JiZyPT09dGhpcy5wb3NpdGlvbi55O2lmKHRoaXMuc2V0UG9zaXRpb24odCxlKSxzJiYhdGhpcy5pc1RyYW5zaXRpb25pbmcpcmV0dXJuIHZvaWQgdGhpcy5sYXlvdXRQb3NpdGlvbigpO3ZhciBhPXQtaSxoPWUtbix1PXt9O3UudHJhbnNmb3JtPXRoaXMuZ2V0VHJhbnNsYXRlKGEsaCksdGhpcy50cmFuc2l0aW9uKHt0bzp1LG9uVHJhbnNpdGlvbkVuZDp7dHJhbnNmb3JtOnRoaXMubGF5b3V0UG9zaXRpb259LGlzQ2xlYW5pbmc6ITB9KX0sZC5nZXRUcmFuc2xhdGU9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmxheW91dC5fZ2V0T3B0aW9uKFwib3JpZ2luTGVmdFwiKSxuPXRoaXMubGF5b3V0Ll9nZXRPcHRpb24oXCJvcmlnaW5Ub3BcIik7cmV0dXJuIHQ9aT90Oi10LGU9bj9lOi1lLFwidHJhbnNsYXRlM2QoXCIrdCtcInB4LCBcIitlK1wicHgsIDApXCJ9LGQuZ29Ubz1mdW5jdGlvbih0LGUpe3RoaXMuc2V0UG9zaXRpb24odCxlKSx0aGlzLmxheW91dFBvc2l0aW9uKCl9LGQubW92ZVRvPWQuX3RyYW5zaXRpb25UbyxkLnNldFBvc2l0aW9uPWZ1bmN0aW9uKHQsZSl7dGhpcy5wb3NpdGlvbi54PXBhcnNlSW50KHQsMTApLHRoaXMucG9zaXRpb24ueT1wYXJzZUludChlLDEwKX0sZC5fbm9uVHJhbnNpdGlvbj1mdW5jdGlvbih0KXt0aGlzLmNzcyh0LnRvKSx0LmlzQ2xlYW5pbmcmJnRoaXMuX3JlbW92ZVN0eWxlcyh0LnRvKTtmb3IodmFyIGUgaW4gdC5vblRyYW5zaXRpb25FbmQpdC5vblRyYW5zaXRpb25FbmRbZV0uY2FsbCh0aGlzKX0sZC50cmFuc2l0aW9uPWZ1bmN0aW9uKHQpe2lmKCFwYXJzZUZsb2F0KHRoaXMubGF5b3V0Lm9wdGlvbnMudHJhbnNpdGlvbkR1cmF0aW9uKSlyZXR1cm4gdm9pZCB0aGlzLl9ub25UcmFuc2l0aW9uKHQpO3ZhciBlPXRoaXMuX3RyYW5zbjtmb3IodmFyIGkgaW4gdC5vblRyYW5zaXRpb25FbmQpZS5vbkVuZFtpXT10Lm9uVHJhbnNpdGlvbkVuZFtpXTtmb3IoaSBpbiB0LnRvKWUuaW5nUHJvcGVydGllc1tpXT0hMCx0LmlzQ2xlYW5pbmcmJihlLmNsZWFuW2ldPSEwKTtpZih0LmZyb20pe3RoaXMuY3NzKHQuZnJvbSk7dmFyIG49dGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodDtuPW51bGx9dGhpcy5lbmFibGVUcmFuc2l0aW9uKHQudG8pLHRoaXMuY3NzKHQudG8pLHRoaXMuaXNUcmFuc2l0aW9uaW5nPSEwfTt2YXIgbD1cIm9wYWNpdHksXCIrbyhhKTtkLmVuYWJsZVRyYW5zaXRpb249ZnVuY3Rpb24oKXtpZighdGhpcy5pc1RyYW5zaXRpb25pbmcpe3ZhciB0PXRoaXMubGF5b3V0Lm9wdGlvbnMudHJhbnNpdGlvbkR1cmF0aW9uO3Q9XCJudW1iZXJcIj09dHlwZW9mIHQ/dCtcIm1zXCI6dCx0aGlzLmNzcyh7dHJhbnNpdGlvblByb3BlcnR5OmwsdHJhbnNpdGlvbkR1cmF0aW9uOnQsdHJhbnNpdGlvbkRlbGF5OnRoaXMuc3RhZ2dlckRlbGF5fHwwfSksdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoaCx0aGlzLCExKX19LGQub253ZWJraXRUcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKHQpe3RoaXMub250cmFuc2l0aW9uZW5kKHQpfSxkLm9ub3RyYW5zaXRpb25lbmQ9ZnVuY3Rpb24odCl7dGhpcy5vbnRyYW5zaXRpb25lbmQodCl9O3ZhciBjPXtcIi13ZWJraXQtdHJhbnNmb3JtXCI6XCJ0cmFuc2Zvcm1cIn07ZC5vbnRyYW5zaXRpb25lbmQ9ZnVuY3Rpb24odCl7aWYodC50YXJnZXQ9PT10aGlzLmVsZW1lbnQpe3ZhciBlPXRoaXMuX3RyYW5zbixuPWNbdC5wcm9wZXJ0eU5hbWVdfHx0LnByb3BlcnR5TmFtZTtpZihkZWxldGUgZS5pbmdQcm9wZXJ0aWVzW25dLGkoZS5pbmdQcm9wZXJ0aWVzKSYmdGhpcy5kaXNhYmxlVHJhbnNpdGlvbigpLG4gaW4gZS5jbGVhbiYmKHRoaXMuZWxlbWVudC5zdHlsZVt0LnByb3BlcnR5TmFtZV09XCJcIixkZWxldGUgZS5jbGVhbltuXSksbiBpbiBlLm9uRW5kKXt2YXIgbz1lLm9uRW5kW25dO28uY2FsbCh0aGlzKSxkZWxldGUgZS5vbkVuZFtuXX10aGlzLmVtaXRFdmVudChcInRyYW5zaXRpb25FbmRcIixbdGhpc10pfX0sZC5kaXNhYmxlVHJhbnNpdGlvbj1mdW5jdGlvbigpe3RoaXMucmVtb3ZlVHJhbnNpdGlvblN0eWxlcygpLHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGgsdGhpcywhMSksdGhpcy5pc1RyYW5zaXRpb25pbmc9ITF9LGQuX3JlbW92ZVN0eWxlcz1mdW5jdGlvbih0KXt2YXIgZT17fTtmb3IodmFyIGkgaW4gdCllW2ldPVwiXCI7dGhpcy5jc3MoZSl9O3ZhciBmPXt0cmFuc2l0aW9uUHJvcGVydHk6XCJcIix0cmFuc2l0aW9uRHVyYXRpb246XCJcIix0cmFuc2l0aW9uRGVsYXk6XCJcIn07cmV0dXJuIGQucmVtb3ZlVHJhbnNpdGlvblN0eWxlcz1mdW5jdGlvbigpe3RoaXMuY3NzKGYpfSxkLnN0YWdnZXI9ZnVuY3Rpb24odCl7dD1pc05hTih0KT8wOnQsdGhpcy5zdGFnZ2VyRGVsYXk9dCtcIm1zXCJ9LGQucmVtb3ZlRWxlbT1mdW5jdGlvbigpe3RoaXMuZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudCksdGhpcy5jc3Moe2Rpc3BsYXk6XCJcIn0pLHRoaXMuZW1pdEV2ZW50KFwicmVtb3ZlXCIsW3RoaXNdKX0sZC5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gcyYmcGFyc2VGbG9hdCh0aGlzLmxheW91dC5vcHRpb25zLnRyYW5zaXRpb25EdXJhdGlvbik/KHRoaXMub25jZShcInRyYW5zaXRpb25FbmRcIixmdW5jdGlvbigpe3RoaXMucmVtb3ZlRWxlbSgpfSksdm9pZCB0aGlzLmhpZGUoKSk6dm9pZCB0aGlzLnJlbW92ZUVsZW0oKX0sZC5yZXZlYWw9ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5pc0hpZGRlbix0aGlzLmNzcyh7ZGlzcGxheTpcIlwifSk7dmFyIHQ9dGhpcy5sYXlvdXQub3B0aW9ucyxlPXt9LGk9dGhpcy5nZXRIaWRlUmV2ZWFsVHJhbnNpdGlvbkVuZFByb3BlcnR5KFwidmlzaWJsZVN0eWxlXCIpO2VbaV09dGhpcy5vblJldmVhbFRyYW5zaXRpb25FbmQsdGhpcy50cmFuc2l0aW9uKHtmcm9tOnQuaGlkZGVuU3R5bGUsdG86dC52aXNpYmxlU3R5bGUsaXNDbGVhbmluZzohMCxvblRyYW5zaXRpb25FbmQ6ZX0pfSxkLm9uUmV2ZWFsVHJhbnNpdGlvbkVuZD1mdW5jdGlvbigpe3RoaXMuaXNIaWRkZW58fHRoaXMuZW1pdEV2ZW50KFwicmV2ZWFsXCIpfSxkLmdldEhpZGVSZXZlYWxUcmFuc2l0aW9uRW5kUHJvcGVydHk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sYXlvdXQub3B0aW9uc1t0XTtpZihlLm9wYWNpdHkpcmV0dXJuXCJvcGFjaXR5XCI7Zm9yKHZhciBpIGluIGUpcmV0dXJuIGl9LGQuaGlkZT1mdW5jdGlvbigpe3RoaXMuaXNIaWRkZW49ITAsdGhpcy5jc3Moe2Rpc3BsYXk6XCJcIn0pO3ZhciB0PXRoaXMubGF5b3V0Lm9wdGlvbnMsZT17fSxpPXRoaXMuZ2V0SGlkZVJldmVhbFRyYW5zaXRpb25FbmRQcm9wZXJ0eShcImhpZGRlblN0eWxlXCIpO2VbaV09dGhpcy5vbkhpZGVUcmFuc2l0aW9uRW5kLHRoaXMudHJhbnNpdGlvbih7ZnJvbTp0LnZpc2libGVTdHlsZSx0bzp0LmhpZGRlblN0eWxlLGlzQ2xlYW5pbmc6ITAsb25UcmFuc2l0aW9uRW5kOmV9KX0sZC5vbkhpZGVUcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKCl7dGhpcy5pc0hpZGRlbiYmKHRoaXMuY3NzKHtkaXNwbGF5Olwibm9uZVwifSksdGhpcy5lbWl0RXZlbnQoXCJoaWRlXCIpKX0sZC5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5jc3Moe3Bvc2l0aW9uOlwiXCIsbGVmdDpcIlwiLHJpZ2h0OlwiXCIsdG9wOlwiXCIsYm90dG9tOlwiXCIsdHJhbnNpdGlvbjpcIlwiLHRyYW5zZm9ybTpcIlwifSl9LG59KSxmdW5jdGlvbih0LGUpe1widXNlIHN0cmljdFwiO1wiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoXCJvdXRsYXllci9vdXRsYXllclwiLFtcImV2LWVtaXR0ZXIvZXYtZW1pdHRlclwiLFwiZ2V0LXNpemUvZ2V0LXNpemVcIixcImZpenp5LXVpLXV0aWxzL3V0aWxzXCIsXCIuL2l0ZW1cIl0sZnVuY3Rpb24oaSxuLG8scil7cmV0dXJuIGUodCxpLG4sbyxyKX0pOlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWUodCxyZXF1aXJlKFwiZXYtZW1pdHRlclwiKSxyZXF1aXJlKFwiZ2V0LXNpemVcIikscmVxdWlyZShcImZpenp5LXVpLXV0aWxzXCIpLHJlcXVpcmUoXCIuL2l0ZW1cIikpOnQuT3V0bGF5ZXI9ZSh0LHQuRXZFbWl0dGVyLHQuZ2V0U2l6ZSx0LmZpenp5VUlVdGlscyx0Lk91dGxheWVyLkl0ZW0pfSh3aW5kb3csZnVuY3Rpb24odCxlLGksbixvKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKHQsZSl7dmFyIGk9bi5nZXRRdWVyeUVsZW1lbnQodCk7aWYoIWkpcmV0dXJuIHZvaWQoaCYmaC5lcnJvcihcIkJhZCBlbGVtZW50IGZvciBcIit0aGlzLmNvbnN0cnVjdG9yLm5hbWVzcGFjZStcIjogXCIrKGl8fHQpKSk7dGhpcy5lbGVtZW50PWksdSYmKHRoaXMuJGVsZW1lbnQ9dSh0aGlzLmVsZW1lbnQpKSx0aGlzLm9wdGlvbnM9bi5leHRlbmQoe30sdGhpcy5jb25zdHJ1Y3Rvci5kZWZhdWx0cyksdGhpcy5vcHRpb24oZSk7dmFyIG89KytsO3RoaXMuZWxlbWVudC5vdXRsYXllckdVSUQ9byxjW29dPXRoaXMsdGhpcy5fY3JlYXRlKCk7dmFyIHI9dGhpcy5fZ2V0T3B0aW9uKFwiaW5pdExheW91dFwiKTtyJiZ0aGlzLmxheW91dCgpfWZ1bmN0aW9uIHModCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGV9ZnVuY3Rpb24gYSh0KXtpZihcIm51bWJlclwiPT10eXBlb2YgdClyZXR1cm4gdDt2YXIgZT10Lm1hdGNoKC8oXlxcZCpcXC4/XFxkKikoXFx3KikvKSxpPWUmJmVbMV0sbj1lJiZlWzJdO2lmKCFpLmxlbmd0aClyZXR1cm4gMDtpPXBhcnNlRmxvYXQoaSk7dmFyIG89bVtuXXx8MTtyZXR1cm4gaSpvfXZhciBoPXQuY29uc29sZSx1PXQualF1ZXJ5LGQ9ZnVuY3Rpb24oKXt9LGw9MCxjPXt9O3IubmFtZXNwYWNlPVwib3V0bGF5ZXJcIixyLkl0ZW09byxyLmRlZmF1bHRzPXtjb250YWluZXJTdHlsZTp7cG9zaXRpb246XCJyZWxhdGl2ZVwifSxpbml0TGF5b3V0OiEwLG9yaWdpbkxlZnQ6ITAsb3JpZ2luVG9wOiEwLHJlc2l6ZTohMCxyZXNpemVDb250YWluZXI6ITAsdHJhbnNpdGlvbkR1cmF0aW9uOlwiMC40c1wiLGhpZGRlblN0eWxlOntvcGFjaXR5OjAsdHJhbnNmb3JtOlwic2NhbGUoMC4wMDEpXCJ9LHZpc2libGVTdHlsZTp7b3BhY2l0eToxLHRyYW5zZm9ybTpcInNjYWxlKDEpXCJ9fTt2YXIgZj1yLnByb3RvdHlwZTtuLmV4dGVuZChmLGUucHJvdG90eXBlKSxmLm9wdGlvbj1mdW5jdGlvbih0KXtuLmV4dGVuZCh0aGlzLm9wdGlvbnMsdCl9LGYuX2dldE9wdGlvbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmNvbnN0cnVjdG9yLmNvbXBhdE9wdGlvbnNbdF07cmV0dXJuIGUmJnZvaWQgMCE9PXRoaXMub3B0aW9uc1tlXT90aGlzLm9wdGlvbnNbZV06dGhpcy5vcHRpb25zW3RdfSxyLmNvbXBhdE9wdGlvbnM9e2luaXRMYXlvdXQ6XCJpc0luaXRMYXlvdXRcIixob3Jpem9udGFsOlwiaXNIb3Jpem9udGFsXCIsbGF5b3V0SW5zdGFudDpcImlzTGF5b3V0SW5zdGFudFwiLG9yaWdpbkxlZnQ6XCJpc09yaWdpbkxlZnRcIixvcmlnaW5Ub3A6XCJpc09yaWdpblRvcFwiLHJlc2l6ZTpcImlzUmVzaXplQm91bmRcIixyZXNpemVDb250YWluZXI6XCJpc1Jlc2l6aW5nQ29udGFpbmVyXCJ9LGYuX2NyZWF0ZT1mdW5jdGlvbigpe3RoaXMucmVsb2FkSXRlbXMoKSx0aGlzLnN0YW1wcz1bXSx0aGlzLnN0YW1wKHRoaXMub3B0aW9ucy5zdGFtcCksbi5leHRlbmQodGhpcy5lbGVtZW50LnN0eWxlLHRoaXMub3B0aW9ucy5jb250YWluZXJTdHlsZSk7dmFyIHQ9dGhpcy5fZ2V0T3B0aW9uKFwicmVzaXplXCIpO3QmJnRoaXMuYmluZFJlc2l6ZSgpfSxmLnJlbG9hZEl0ZW1zPWZ1bmN0aW9uKCl7dGhpcy5pdGVtcz10aGlzLl9pdGVtaXplKHRoaXMuZWxlbWVudC5jaGlsZHJlbil9LGYuX2l0ZW1pemU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2ZpbHRlckZpbmRJdGVtRWxlbWVudHModCksaT10aGlzLmNvbnN0cnVjdG9yLkl0ZW0sbj1bXSxvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciByPWVbb10scz1uZXcgaShyLHRoaXMpO24ucHVzaChzKX1yZXR1cm4gbn0sZi5fZmlsdGVyRmluZEl0ZW1FbGVtZW50cz1mdW5jdGlvbih0KXtyZXR1cm4gbi5maWx0ZXJGaW5kRWxlbWVudHModCx0aGlzLm9wdGlvbnMuaXRlbVNlbGVjdG9yKX0sZi5nZXRJdGVtRWxlbWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVtcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuZWxlbWVudH0pfSxmLmxheW91dD1mdW5jdGlvbigpe3RoaXMuX3Jlc2V0TGF5b3V0KCksdGhpcy5fbWFuYWdlU3RhbXBzKCk7dmFyIHQ9dGhpcy5fZ2V0T3B0aW9uKFwibGF5b3V0SW5zdGFudFwiKSxlPXZvaWQgMCE9PXQ/dDohdGhpcy5faXNMYXlvdXRJbml0ZWQ7dGhpcy5sYXlvdXRJdGVtcyh0aGlzLml0ZW1zLGUpLHRoaXMuX2lzTGF5b3V0SW5pdGVkPSEwfSxmLl9pbml0PWYubGF5b3V0LGYuX3Jlc2V0TGF5b3V0PWZ1bmN0aW9uKCl7dGhpcy5nZXRTaXplKCl9LGYuZ2V0U2l6ZT1mdW5jdGlvbigpe3RoaXMuc2l6ZT1pKHRoaXMuZWxlbWVudCl9LGYuX2dldE1lYXN1cmVtZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG4sbz10aGlzLm9wdGlvbnNbdF07bz8oXCJzdHJpbmdcIj09dHlwZW9mIG8/bj10aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvcihvKTpvIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJihuPW8pLHRoaXNbdF09bj9pKG4pW2VdOm8pOnRoaXNbdF09MH0sZi5sYXlvdXRJdGVtcz1mdW5jdGlvbih0LGUpe3Q9dGhpcy5fZ2V0SXRlbXNGb3JMYXlvdXQodCksdGhpcy5fbGF5b3V0SXRlbXModCxlKSx0aGlzLl9wb3N0TGF5b3V0KCl9LGYuX2dldEl0ZW1zRm9yTGF5b3V0PWZ1bmN0aW9uKHQpe3JldHVybiB0LmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4hdC5pc0lnbm9yZWR9KX0sZi5fbGF5b3V0SXRlbXM9ZnVuY3Rpb24odCxlKXtpZih0aGlzLl9lbWl0Q29tcGxldGVPbkl0ZW1zKFwibGF5b3V0XCIsdCksdCYmdC5sZW5ndGgpe3ZhciBpPVtdO3QuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj10aGlzLl9nZXRJdGVtTGF5b3V0UG9zaXRpb24odCk7bi5pdGVtPXQsbi5pc0luc3RhbnQ9ZXx8dC5pc0xheW91dEluc3RhbnQsaS5wdXNoKG4pfSx0aGlzKSx0aGlzLl9wcm9jZXNzTGF5b3V0UXVldWUoaSl9fSxmLl9nZXRJdGVtTGF5b3V0UG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm57eDowLHk6MH19LGYuX3Byb2Nlc3NMYXlvdXRRdWV1ZT1mdW5jdGlvbih0KXt0aGlzLnVwZGF0ZVN0YWdnZXIoKSx0LmZvckVhY2goZnVuY3Rpb24odCxlKXt0aGlzLl9wb3NpdGlvbkl0ZW0odC5pdGVtLHQueCx0LnksdC5pc0luc3RhbnQsZSl9LHRoaXMpfSxmLnVwZGF0ZVN0YWdnZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuc3RhZ2dlcjtyZXR1cm4gbnVsbD09PXR8fHZvaWQgMD09PXQ/dm9pZCh0aGlzLnN0YWdnZXI9MCk6KHRoaXMuc3RhZ2dlcj1hKHQpLHRoaXMuc3RhZ2dlcil9LGYuX3Bvc2l0aW9uSXRlbT1mdW5jdGlvbih0LGUsaSxuLG8pe24/dC5nb1RvKGUsaSk6KHQuc3RhZ2dlcihvKnRoaXMuc3RhZ2dlciksdC5tb3ZlVG8oZSxpKSl9LGYuX3Bvc3RMYXlvdXQ9ZnVuY3Rpb24oKXt0aGlzLnJlc2l6ZUNvbnRhaW5lcigpfSxmLnJlc2l6ZUNvbnRhaW5lcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldE9wdGlvbihcInJlc2l6ZUNvbnRhaW5lclwiKTtpZih0KXt2YXIgZT10aGlzLl9nZXRDb250YWluZXJTaXplKCk7ZSYmKHRoaXMuX3NldENvbnRhaW5lck1lYXN1cmUoZS53aWR0aCwhMCksdGhpcy5fc2V0Q29udGFpbmVyTWVhc3VyZShlLmhlaWdodCwhMSkpfX0sZi5fZ2V0Q29udGFpbmVyU2l6ZT1kLGYuX3NldENvbnRhaW5lck1lYXN1cmU9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDAhPT10KXt2YXIgaT10aGlzLnNpemU7aS5pc0JvcmRlckJveCYmKHQrPWU/aS5wYWRkaW5nTGVmdCtpLnBhZGRpbmdSaWdodCtpLmJvcmRlckxlZnRXaWR0aCtpLmJvcmRlclJpZ2h0V2lkdGg6aS5wYWRkaW5nQm90dG9tK2kucGFkZGluZ1RvcCtpLmJvcmRlclRvcFdpZHRoK2kuYm9yZGVyQm90dG9tV2lkdGgpLHQ9TWF0aC5tYXgodCwwKSx0aGlzLmVsZW1lbnQuc3R5bGVbZT9cIndpZHRoXCI6XCJoZWlnaHRcIl09dCtcInB4XCJ9fSxmLl9lbWl0Q29tcGxldGVPbkl0ZW1zPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSgpe28uZGlzcGF0Y2hFdmVudCh0K1wiQ29tcGxldGVcIixudWxsLFtlXSl9ZnVuY3Rpb24gbigpe3MrKyxzPT1yJiZpKCl9dmFyIG89dGhpcyxyPWUubGVuZ3RoO2lmKCFlfHwhcilyZXR1cm4gdm9pZCBpKCk7dmFyIHM9MDtlLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5vbmNlKHQsbil9KX0sZi5kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKHQsZSxpKXt2YXIgbj1lP1tlXS5jb25jYXQoaSk6aTtpZih0aGlzLmVtaXRFdmVudCh0LG4pLHUpaWYodGhpcy4kZWxlbWVudD10aGlzLiRlbGVtZW50fHx1KHRoaXMuZWxlbWVudCksZSl7dmFyIG89dS5FdmVudChlKTtvLnR5cGU9dCx0aGlzLiRlbGVtZW50LnRyaWdnZXIobyxpKX1lbHNlIHRoaXMuJGVsZW1lbnQudHJpZ2dlcih0LGkpfSxmLmlnbm9yZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldEl0ZW0odCk7ZSYmKGUuaXNJZ25vcmVkPSEwKX0sZi51bmlnbm9yZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldEl0ZW0odCk7ZSYmZGVsZXRlIGUuaXNJZ25vcmVkfSxmLnN0YW1wPWZ1bmN0aW9uKHQpe3Q9dGhpcy5fZmluZCh0KSx0JiYodGhpcy5zdGFtcHM9dGhpcy5zdGFtcHMuY29uY2F0KHQpLHQuZm9yRWFjaCh0aGlzLmlnbm9yZSx0aGlzKSl9LGYudW5zdGFtcD1mdW5jdGlvbih0KXt0PXRoaXMuX2ZpbmQodCksdCYmdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe24ucmVtb3ZlRnJvbSh0aGlzLnN0YW1wcyx0KSx0aGlzLnVuaWdub3JlKHQpfSx0aGlzKX0sZi5fZmluZD1mdW5jdGlvbih0KXtyZXR1cm4gdD8oXCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PXRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKHQpKSx0PW4ubWFrZUFycmF5KHQpKTp2b2lkIDB9LGYuX21hbmFnZVN0YW1wcz1mdW5jdGlvbigpe3RoaXMuc3RhbXBzJiZ0aGlzLnN0YW1wcy5sZW5ndGgmJih0aGlzLl9nZXRCb3VuZGluZ1JlY3QoKSx0aGlzLnN0YW1wcy5mb3JFYWNoKHRoaXMuX21hbmFnZVN0YW1wLHRoaXMpKX0sZi5fZ2V0Qm91bmRpbmdSZWN0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9dGhpcy5zaXplO3RoaXMuX2JvdW5kaW5nUmVjdD17bGVmdDp0LmxlZnQrZS5wYWRkaW5nTGVmdCtlLmJvcmRlckxlZnRXaWR0aCx0b3A6dC50b3ArZS5wYWRkaW5nVG9wK2UuYm9yZGVyVG9wV2lkdGgscmlnaHQ6dC5yaWdodC0oZS5wYWRkaW5nUmlnaHQrZS5ib3JkZXJSaWdodFdpZHRoKSxib3R0b206dC5ib3R0b20tKGUucGFkZGluZ0JvdHRvbStlLmJvcmRlckJvdHRvbVdpZHRoKX19LGYuX21hbmFnZVN0YW1wPWQsZi5fZ2V0RWxlbWVudE9mZnNldD1mdW5jdGlvbih0KXt2YXIgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49dGhpcy5fYm91bmRpbmdSZWN0LG89aSh0KSxyPXtsZWZ0OmUubGVmdC1uLmxlZnQtby5tYXJnaW5MZWZ0LHRvcDplLnRvcC1uLnRvcC1vLm1hcmdpblRvcCxyaWdodDpuLnJpZ2h0LWUucmlnaHQtby5tYXJnaW5SaWdodCxib3R0b206bi5ib3R0b20tZS5ib3R0b20tby5tYXJnaW5Cb3R0b219O3JldHVybiByfSxmLmhhbmRsZUV2ZW50PW4uaGFuZGxlRXZlbnQsZi5iaW5kUmVzaXplPWZ1bmN0aW9uKCl7dC5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdGhpcyksdGhpcy5pc1Jlc2l6ZUJvdW5kPSEwfSxmLnVuYmluZFJlc2l6ZT1mdW5jdGlvbigpe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHRoaXMpLHRoaXMuaXNSZXNpemVCb3VuZD0hMX0sZi5vbnJlc2l6ZT1mdW5jdGlvbigpe3RoaXMucmVzaXplKCl9LG4uZGVib3VuY2VNZXRob2QocixcIm9ucmVzaXplXCIsMTAwKSxmLnJlc2l6ZT1mdW5jdGlvbigpe3RoaXMuaXNSZXNpemVCb3VuZCYmdGhpcy5uZWVkc1Jlc2l6ZUxheW91dCgpJiZ0aGlzLmxheW91dCgpfSxmLm5lZWRzUmVzaXplTGF5b3V0PWZ1bmN0aW9uKCl7dmFyIHQ9aSh0aGlzLmVsZW1lbnQpLGU9dGhpcy5zaXplJiZ0O3JldHVybiBlJiZ0LmlubmVyV2lkdGghPT10aGlzLnNpemUuaW5uZXJXaWR0aH0sZi5hZGRJdGVtcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pdGVtaXplKHQpO3JldHVybiBlLmxlbmd0aCYmKHRoaXMuaXRlbXM9dGhpcy5pdGVtcy5jb25jYXQoZSkpLGV9LGYuYXBwZW5kZWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5hZGRJdGVtcyh0KTtlLmxlbmd0aCYmKHRoaXMubGF5b3V0SXRlbXMoZSwhMCksdGhpcy5yZXZlYWwoZSkpfSxmLnByZXBlbmRlZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pdGVtaXplKHQpO2lmKGUubGVuZ3RoKXt2YXIgaT10aGlzLml0ZW1zLnNsaWNlKDApO3RoaXMuaXRlbXM9ZS5jb25jYXQoaSksdGhpcy5fcmVzZXRMYXlvdXQoKSx0aGlzLl9tYW5hZ2VTdGFtcHMoKSx0aGlzLmxheW91dEl0ZW1zKGUsITApLHRoaXMucmV2ZWFsKGUpLHRoaXMubGF5b3V0SXRlbXMoaSl9fSxmLnJldmVhbD1mdW5jdGlvbih0KXtpZih0aGlzLl9lbWl0Q29tcGxldGVPbkl0ZW1zKFwicmV2ZWFsXCIsdCksdCYmdC5sZW5ndGgpe3ZhciBlPXRoaXMudXBkYXRlU3RhZ2dlcigpO3QuZm9yRWFjaChmdW5jdGlvbih0LGkpe3Quc3RhZ2dlcihpKmUpLHQucmV2ZWFsKCl9KX19LGYuaGlkZT1mdW5jdGlvbih0KXtpZih0aGlzLl9lbWl0Q29tcGxldGVPbkl0ZW1zKFwiaGlkZVwiLHQpLHQmJnQubGVuZ3RoKXt2YXIgZT10aGlzLnVwZGF0ZVN0YWdnZXIoKTt0LmZvckVhY2goZnVuY3Rpb24odCxpKXt0LnN0YWdnZXIoaSplKSx0LmhpZGUoKX0pfX0sZi5yZXZlYWxJdGVtRWxlbWVudHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRJdGVtcyh0KTt0aGlzLnJldmVhbChlKX0sZi5oaWRlSXRlbUVsZW1lbnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0SXRlbXModCk7dGhpcy5oaWRlKGUpfSxmLmdldEl0ZW09ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0aGlzLml0ZW1zLmxlbmd0aDtlKyspe3ZhciBpPXRoaXMuaXRlbXNbZV07aWYoaS5lbGVtZW50PT10KXJldHVybiBpfX0sZi5nZXRJdGVtcz1mdW5jdGlvbih0KXt0PW4ubWFrZUFycmF5KHQpO3ZhciBlPVtdO3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5nZXRJdGVtKHQpO2kmJmUucHVzaChpKX0sdGhpcyksZX0sZi5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRJdGVtcyh0KTt0aGlzLl9lbWl0Q29tcGxldGVPbkl0ZW1zKFwicmVtb3ZlXCIsZSksZSYmZS5sZW5ndGgmJmUuZm9yRWFjaChmdW5jdGlvbih0KXt0LnJlbW92ZSgpLG4ucmVtb3ZlRnJvbSh0aGlzLml0ZW1zLHQpfSx0aGlzKX0sZi5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50LnN0eWxlO3QuaGVpZ2h0PVwiXCIsdC5wb3NpdGlvbj1cIlwiLHQud2lkdGg9XCJcIix0aGlzLml0ZW1zLmZvckVhY2goZnVuY3Rpb24odCl7dC5kZXN0cm95KCl9KSx0aGlzLnVuYmluZFJlc2l6ZSgpO3ZhciBlPXRoaXMuZWxlbWVudC5vdXRsYXllckdVSUQ7ZGVsZXRlIGNbZV0sZGVsZXRlIHRoaXMuZWxlbWVudC5vdXRsYXllckdVSUQsdSYmdS5yZW1vdmVEYXRhKHRoaXMuZWxlbWVudCx0aGlzLmNvbnN0cnVjdG9yLm5hbWVzcGFjZSl9LHIuZGF0YT1mdW5jdGlvbih0KXt0PW4uZ2V0UXVlcnlFbGVtZW50KHQpO3ZhciBlPXQmJnQub3V0bGF5ZXJHVUlEO3JldHVybiBlJiZjW2VdfSxyLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3ZhciBpPXMocik7cmV0dXJuIGkuZGVmYXVsdHM9bi5leHRlbmQoe30sci5kZWZhdWx0cyksbi5leHRlbmQoaS5kZWZhdWx0cyxlKSxpLmNvbXBhdE9wdGlvbnM9bi5leHRlbmQoe30sci5jb21wYXRPcHRpb25zKSxpLm5hbWVzcGFjZT10LGkuZGF0YT1yLmRhdGEsaS5JdGVtPXMobyksbi5odG1sSW5pdChpLHQpLHUmJnUuYnJpZGdldCYmdS5icmlkZ2V0KHQsaSksaX07dmFyIG09e21zOjEsczoxZTN9O3JldHVybiByLkl0ZW09byxyfSksZnVuY3Rpb24odCxlKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtcIm91dGxheWVyL291dGxheWVyXCIsXCJnZXQtc2l6ZS9nZXQtc2l6ZVwiXSxlKTpcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1lKHJlcXVpcmUoXCJvdXRsYXllclwiKSxyZXF1aXJlKFwiZ2V0LXNpemVcIikpOnQuTWFzb25yeT1lKHQuT3V0bGF5ZXIsdC5nZXRTaXplKX0od2luZG93LGZ1bmN0aW9uKHQsZSl7dmFyIGk9dC5jcmVhdGUoXCJtYXNvbnJ5XCIpO3JldHVybiBpLmNvbXBhdE9wdGlvbnMuZml0V2lkdGg9XCJpc0ZpdFdpZHRoXCIsaS5wcm90b3R5cGUuX3Jlc2V0TGF5b3V0PWZ1bmN0aW9uKCl7dGhpcy5nZXRTaXplKCksdGhpcy5fZ2V0TWVhc3VyZW1lbnQoXCJjb2x1bW5XaWR0aFwiLFwib3V0ZXJXaWR0aFwiKSx0aGlzLl9nZXRNZWFzdXJlbWVudChcImd1dHRlclwiLFwib3V0ZXJXaWR0aFwiKSx0aGlzLm1lYXN1cmVDb2x1bW5zKCksdGhpcy5jb2xZcz1bXTtmb3IodmFyIHQ9MDt0PHRoaXMuY29sczt0KyspdGhpcy5jb2xZcy5wdXNoKDApO3RoaXMubWF4WT0wfSxpLnByb3RvdHlwZS5tZWFzdXJlQ29sdW1ucz1mdW5jdGlvbigpe2lmKHRoaXMuZ2V0Q29udGFpbmVyV2lkdGgoKSwhdGhpcy5jb2x1bW5XaWR0aCl7dmFyIHQ9dGhpcy5pdGVtc1swXSxpPXQmJnQuZWxlbWVudDt0aGlzLmNvbHVtbldpZHRoPWkmJmUoaSkub3V0ZXJXaWR0aHx8dGhpcy5jb250YWluZXJXaWR0aH12YXIgbj10aGlzLmNvbHVtbldpZHRoKz10aGlzLmd1dHRlcixvPXRoaXMuY29udGFpbmVyV2lkdGgrdGhpcy5ndXR0ZXIscj1vL24scz1uLW8lbixhPXMmJjE+cz9cInJvdW5kXCI6XCJmbG9vclwiO3I9TWF0aFthXShyKSx0aGlzLmNvbHM9TWF0aC5tYXgociwxKX0saS5wcm90b3R5cGUuZ2V0Q29udGFpbmVyV2lkdGg9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRPcHRpb24oXCJmaXRXaWR0aFwiKSxpPXQ/dGhpcy5lbGVtZW50LnBhcmVudE5vZGU6dGhpcy5lbGVtZW50LG49ZShpKTt0aGlzLmNvbnRhaW5lcldpZHRoPW4mJm4uaW5uZXJXaWR0aH0saS5wcm90b3R5cGUuX2dldEl0ZW1MYXlvdXRQb3NpdGlvbj1mdW5jdGlvbih0KXt0LmdldFNpemUoKTt2YXIgZT10LnNpemUub3V0ZXJXaWR0aCV0aGlzLmNvbHVtbldpZHRoLGk9ZSYmMT5lP1wicm91bmRcIjpcImNlaWxcIixuPU1hdGhbaV0odC5zaXplLm91dGVyV2lkdGgvdGhpcy5jb2x1bW5XaWR0aCk7bj1NYXRoLm1pbihuLHRoaXMuY29scyk7Zm9yKHZhciBvPXRoaXMuX2dldENvbEdyb3VwKG4pLHI9TWF0aC5taW4uYXBwbHkoTWF0aCxvKSxzPW8uaW5kZXhPZihyKSxhPXt4OnRoaXMuY29sdW1uV2lkdGgqcyx5OnJ9LGg9cit0LnNpemUub3V0ZXJIZWlnaHQsdT10aGlzLmNvbHMrMS1vLmxlbmd0aCxkPTA7dT5kO2QrKyl0aGlzLmNvbFlzW3MrZF09aDtyZXR1cm4gYX0saS5wcm90b3R5cGUuX2dldENvbEdyb3VwPWZ1bmN0aW9uKHQpe2lmKDI+dClyZXR1cm4gdGhpcy5jb2xZcztmb3IodmFyIGU9W10saT10aGlzLmNvbHMrMS10LG49MDtpPm47bisrKXt2YXIgbz10aGlzLmNvbFlzLnNsaWNlKG4sbit0KTtlW25dPU1hdGgubWF4LmFwcGx5KE1hdGgsbyl9cmV0dXJuIGV9LGkucHJvdG90eXBlLl9tYW5hZ2VTdGFtcD1mdW5jdGlvbih0KXt2YXIgaT1lKHQpLG49dGhpcy5fZ2V0RWxlbWVudE9mZnNldCh0KSxvPXRoaXMuX2dldE9wdGlvbihcIm9yaWdpbkxlZnRcIikscj1vP24ubGVmdDpuLnJpZ2h0LHM9citpLm91dGVyV2lkdGgsYT1NYXRoLmZsb29yKHIvdGhpcy5jb2x1bW5XaWR0aCk7YT1NYXRoLm1heCgwLGEpO3ZhciBoPU1hdGguZmxvb3Iocy90aGlzLmNvbHVtbldpZHRoKTtoLT1zJXRoaXMuY29sdW1uV2lkdGg/MDoxLGg9TWF0aC5taW4odGhpcy5jb2xzLTEsaCk7Zm9yKHZhciB1PXRoaXMuX2dldE9wdGlvbihcIm9yaWdpblRvcFwiKSxkPSh1P24udG9wOm4uYm90dG9tKStpLm91dGVySGVpZ2h0LGw9YTtoPj1sO2wrKyl0aGlzLmNvbFlzW2xdPU1hdGgubWF4KGQsdGhpcy5jb2xZc1tsXSl9LGkucHJvdG90eXBlLl9nZXRDb250YWluZXJTaXplPWZ1bmN0aW9uKCl7dGhpcy5tYXhZPU1hdGgubWF4LmFwcGx5KE1hdGgsdGhpcy5jb2xZcyk7dmFyIHQ9e2hlaWdodDp0aGlzLm1heFl9O3JldHVybiB0aGlzLl9nZXRPcHRpb24oXCJmaXRXaWR0aFwiKSYmKHQud2lkdGg9dGhpcy5fZ2V0Q29udGFpbmVyRml0V2lkdGgoKSksdH0saS5wcm90b3R5cGUuX2dldENvbnRhaW5lckZpdFdpZHRoPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT10aGlzLmNvbHM7LS1lJiYwPT09dGhpcy5jb2xZc1tlXTspdCsrO3JldHVybih0aGlzLmNvbHMtdCkqdGhpcy5jb2x1bW5XaWR0aC10aGlzLmd1dHRlcn0saS5wcm90b3R5cGUubmVlZHNSZXNpemVMYXlvdXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRhaW5lcldpZHRoO3JldHVybiB0aGlzLmdldENvbnRhaW5lcldpZHRoKCksdCE9dGhpcy5jb250YWluZXJXaWR0aH0saX0pOyIsIi8qISBUYWJsZXNhdyAtIHYzLjAuMC1iZXRhLjQgLSAyMDE2LTEwLTEyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmlsYW1lbnRncm91cC90YWJsZXNhd1xuICogQ29weXJpZ2h0IChjKSAyMDE2IEZpbGFtZW50IEdyb3VwOyBMaWNlbnNlZCBNSVQgKi9cbjsoZnVuY3Rpb24oIHdpbiApIHtcblxuICAgIHZhciAkO1xuICAgIGlmKCAnc2hvZXN0cmluZycgaW4gd2luICkge1xuICAgICAgICAkID0gd2luLnNob2VzdHJpbmc7XG4gICAgfSBlbHNlIGlmKCAnalF1ZXJ5JyBpbiB3aW4gKSB7XG4gICAgICAgICQgPSB3aW4ualF1ZXJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvciggXCJ0YWJsZXNhdzogRE9NIGxpYnJhcnkgbm90IGZvdW5kLlwiICk7XG4gICAgfVxuXG4gICAgLy8gRE9NLXJlYWR5IGF1dG8taW5pdCBvZiBwbHVnaW5zLlxuICAgIC8vIE1hbnkgcGx1Z2lucyBiaW5kIHRvIGFuIFwiZW5oYW5jZVwiIGV2ZW50IHRvIGluaXQgdGhlbXNlbHZlcyBvbiBkb20gcmVhZHksIG9yIHdoZW4gbmV3IG1hcmt1cCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBET01cbiAgICAkKCBmdW5jdGlvbigpe1xuICAgICAgICAkKCBkb2N1bWVudCApLnRyaWdnZXIoIFwiZW5oYW5jZS50YWJsZXNhd1wiICk7XG4gICAgfSk7XG5cbn0pKCB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDogdGhpcyApOyIsIi8qISBUYWJsZXNhdyAtIHYzLjAuMC1iZXRhLjQgLSAyMDE2LTEwLTEyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmlsYW1lbnRncm91cC90YWJsZXNhd1xuICogQ29weXJpZ2h0IChjKSAyMDE2IEZpbGFtZW50IEdyb3VwOyBMaWNlbnNlZCBNSVQgKi9cbi8vIFVNRCBtb2R1bGUgZGVmaW5pdGlvblxuLy8gRnJvbTogaHR0cHM6Ly9naXRodWIuY29tL3VtZGpzL3VtZC9ibG9iL21hc3Rlci90ZW1wbGF0ZXMvanF1ZXJ5UGx1Z2luLmpzXG5cbihmdW5jdGlvbiAoZmFjdG9yeSkge1xuICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICAgICAgLy8gQU1ELiBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlLlxuICAgICAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgICAgICAvLyBOb2RlL0NvbW1vbkpTXG4gICAgICAgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oIHJvb3QsIGpRdWVyeSApIHtcbiAgICAgICAgICAgIGlmICggalF1ZXJ5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgICAgICAgICAgLy8gcmVxdWlyZSgnalF1ZXJ5JykgcmV0dXJucyBhIGZhY3RvcnkgdGhhdCByZXF1aXJlcyB3aW5kb3cgdG9cbiAgICAgICAgICAgICAgICAvLyBidWlsZCBhIGpRdWVyeSBpbnN0YW5jZSwgd2Ugbm9ybWFsaXplIGhvdyB3ZSB1c2UgbW9kdWxlc1xuICAgICAgICAgICAgICAgIC8vIHRoYXQgcmVxdWlyZSB0aGlzIHBhdHRlcm4gYnV0IHRoZSB3aW5kb3cgcHJvdmlkZWQgaXMgYSBub29wXG4gICAgICAgICAgICAgICAgLy8gaWYgaXQncyBkZWZpbmVkIChob3cganF1ZXJ5IHdvcmtzKVxuICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICAgICAgICAgIGpRdWVyeSA9IHJlcXVpcmUoJ2pxdWVyeScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGpRdWVyeSA9IHJlcXVpcmUoJ2pxdWVyeScpKHJvb3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZhY3RvcnkoalF1ZXJ5KTtcbiAgICAgICAgICAgIHJldHVybiBqUXVlcnk7XG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzXG4gICAgICAgIGZhY3RvcnkoalF1ZXJ5KTtcbiAgICB9XG59KGZ1bmN0aW9uICgkKSB7XG4gICAgdmFyIFRhYmxlc2F3LCB3aW4gPSB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDogdGhpcztcblxuICAgIC8qXG4gICAgICogdGFibGVzYXc6IEEgc2V0IG9mIHBsdWdpbnMgZm9yIHJlc3BvbnNpdmUgdGFibGVzXG4gICAgICogU3RhY2sgYW5kIENvbHVtbiBUb2dnbGUgdGFibGVzXG4gICAgICogQ29weXJpZ2h0IChjKSAyMDEzIEZpbGFtZW50IEdyb3VwLCBJbmMuXG4gICAgICogTUlUIExpY2Vuc2VcbiAgICAgKi9cblxuICAgIGlmKCB0eXBlb2YgVGFibGVzYXcgPT09IFwidW5kZWZpbmVkXCIgKSB7XG4gICAgICAgIFRhYmxlc2F3ID0ge1xuICAgICAgICAgICAgaTE4bjoge1xuICAgICAgICAgICAgICAgIG1vZGVzOiBbICdTdGFjaycsICdTd2lwZScsICdUb2dnbGUnIF0sXG4gICAgICAgICAgICAgICAgY29sdW1uczogJ0NvbDxzcGFuIGNsYXNzPVxcXCJhMTF5LXNtXFxcIj51bW48L3NwYW4+cycsXG4gICAgICAgICAgICAgICAgY29sdW1uQnRuVGV4dDogJ0NvbHVtbnMnLFxuICAgICAgICAgICAgICAgIGNvbHVtbnNEaWFsb2dFcnJvcjogJ05vIGVsaWdpYmxlIGNvbHVtbnMuJyxcbiAgICAgICAgICAgICAgICBzb3J0OiAnU29ydCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBjdXQgdGhlIG11c3RhcmRcbiAgICAgICAgICAgIG11c3RhcmQ6ICggJ3F1ZXJ5U2VsZWN0b3InIGluIGRvY3VtZW50ICkgJiZcbiAgICAgICAgICAgICggJ2hlYWQnIGluIGRvY3VtZW50ICkgJiZcbiAgICAgICAgICAgICggIXdpbmRvdy5ibGFja2JlcnJ5IHx8IHdpbmRvdy5XZWJLaXRQb2ludCApICYmXG4gICAgICAgICAgICAhd2luZG93Lm9wZXJhbWluaVxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiggIVRhYmxlc2F3LmNvbmZpZyApIHtcbiAgICAgICAgVGFibGVzYXcuY29uZmlnID0ge307XG4gICAgfVxuICAgIGlmKCBUYWJsZXNhdy5tdXN0YXJkICkge1xuICAgICAgICAkKCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgKS5hZGRDbGFzcyggJ3RhYmxlc2F3LWVuaGFuY2VkJyApO1xuICAgIH1cblxuICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHBsdWdpbk5hbWUgPSBcInRhYmxlc2F3XCIsXG4gICAgICAgICAgICBjbGFzc2VzID0ge1xuICAgICAgICAgICAgICAgIHRvb2xiYXI6IFwidGFibGVzYXctYmFyXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBldmVudHMgPSB7XG4gICAgICAgICAgICAgICAgY3JlYXRlOiBcInRhYmxlc2F3Y3JlYXRlXCIsXG4gICAgICAgICAgICAgICAgZGVzdHJveTogXCJ0YWJsZXNhd2Rlc3Ryb3lcIixcbiAgICAgICAgICAgICAgICByZWZyZXNoOiBcInRhYmxlc2F3cmVmcmVzaFwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVmYXVsdE1vZGUgPSBcInN0YWNrXCIsXG4gICAgICAgICAgICBpbml0U2VsZWN0b3IgPSBcInRhYmxlW2RhdGEtdGFibGVzYXctbW9kZV0sdGFibGVbZGF0YS10YWJsZXNhdy1zb3J0YWJsZV1cIjtcblxuICAgICAgICB2YXIgVGFibGUgPSBmdW5jdGlvbiggZWxlbWVudCApIHtcbiAgICAgICAgICAgIGlmKCAhZWxlbWVudCApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIFwiVGFibGVzYXcgcmVxdWlyZXMgYW4gZWxlbWVudC5cIiApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnRhYmxlID0gZWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMuJHRhYmxlID0gJCggZWxlbWVudCApO1xuXG4gICAgICAgICAgICB0aGlzLm1vZGUgPSB0aGlzLiR0YWJsZS5hdHRyKCBcImRhdGEtdGFibGVzYXctbW9kZVwiICkgfHwgZGVmYXVsdE1vZGU7XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIFRhYmxlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAvLyBhc3NpZ24gYW4gaWQgaWYgdGhlcmUgaXMgbm9uZVxuICAgICAgICAgICAgaWYgKCAhdGhpcy4kdGFibGUuYXR0ciggXCJpZFwiICkgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kdGFibGUuYXR0ciggXCJpZFwiLCBwbHVnaW5OYW1lICsgXCItXCIgKyBNYXRoLnJvdW5kKCBNYXRoLnJhbmRvbSgpICogMTAwMDAgKSApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVRvb2xiYXIoKTtcblxuICAgICAgICAgICAgdmFyIGNvbHN0YXJ0ID0gdGhpcy5faW5pdENlbGxzKCk7XG5cbiAgICAgICAgICAgIHRoaXMuJHRhYmxlLnRyaWdnZXIoIGV2ZW50cy5jcmVhdGUsIFsgdGhpcywgY29sc3RhcnQgXSApO1xuICAgICAgICB9O1xuXG4gICAgICAgIFRhYmxlLnByb3RvdHlwZS5faW5pdENlbGxzID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgY29sc3RhcnQsXG4gICAgICAgICAgICAgICAgdGhycyA9IHRoaXMudGFibGUucXVlcnlTZWxlY3RvckFsbCggXCJ0aGVhZCB0clwiICksXG4gICAgICAgICAgICAgICAgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgICAgICQoIHRocnMgKS5lYWNoKCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIHZhciBjb2x0YWxseSA9IDA7XG5cbiAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSAkKCB0aGlzICkuY2hpbGRyZW4oKTtcbiAgICAgICAgICAgICAgICB2YXIgY29sdW1ubG9va3VwID0gW107XG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uZWFjaCggZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNwYW4gPSBwYXJzZUludCggdGhpcy5nZXRBdHRyaWJ1dGUoIFwiY29sc3BhblwiICksIDEwICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29sdW1ubG9va3VwW2NvbHRhbGx5XSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIGNvbHN0YXJ0ID0gY29sdGFsbHkgKyAxO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmKCBzcGFuICl7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IoIHZhciBrID0gMDsgayA8IHNwYW4gLSAxOyBrKysgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x0YWxseSsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbmxvb2t1cFtjb2x0YWxseV0gPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2VsbHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgY29sdGFsbHkrKztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBhc3N1bWVzIHRoYXQgY2hpbGRyZW4oKSByZXR1cm5zIGl0cyByZXN1bHRzIGluIGRvY3VtZW50IG9yZGVyLiBqUXVlcnkgZG9lc24ndFxuICAgICAgICAgICAgICAgIC8vIHByb21pc2UgdGhhdCBpbiB0aGUgZG9jcywgYnV0IGl0J3MgYSBwcmV0dHkgc2FmZSBhc3N1bXB0aW9uLlxuICAgICAgICAgICAgICAgIHNlbGYuJHRhYmxlLmZpbmQoXCJ0clwiKS5ub3QoIHRocnNbMF0pLmVhY2goIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbGNvbHRhbGx5ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNwYW4gPSBwYXJzZUludCggdGhpcy5nZXRBdHRyaWJ1dGUoIFwiY29sc3BhblwiICksIDEwICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5sb29rdXBbY2VsbGNvbHRhbGx5XS5jZWxscy5wdXNoKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNwYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsY29sdGFsbHkgKz0gc3BhbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbGNvbHRhbGx5Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBjb2xzdGFydDtcbiAgICAgICAgfTtcblxuICAgICAgICBUYWJsZS5wcm90b3R5cGUucmVmcmVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5faW5pdENlbGxzKCk7XG5cbiAgICAgICAgICAgIHRoaXMuJHRhYmxlLnRyaWdnZXIoIGV2ZW50cy5yZWZyZXNoICk7XG4gICAgICAgIH07XG5cbiAgICAgICAgVGFibGUucHJvdG90eXBlLmNyZWF0ZVRvb2xiYXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEluc2VydCB0aGUgdG9vbGJhclxuICAgICAgICAgICAgLy8gVE9ETyBtb3ZlIHRoaXMgaW50byBhIHNlcGFyYXRlIGNvbXBvbmVudFxuICAgICAgICAgICAgdmFyICR0b29sYmFyID0gdGhpcy4kdGFibGUucHJldigpLmZpbHRlciggJy4nICsgY2xhc3Nlcy50b29sYmFyICk7XG4gICAgICAgICAgICBpZiggISR0b29sYmFyLmxlbmd0aCApIHtcbiAgICAgICAgICAgICAgICAkdG9vbGJhciA9ICQoICc8ZGl2PicgKVxuICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoIGNsYXNzZXMudG9vbGJhciApXG4gICAgICAgICAgICAgICAgICAgIC5pbnNlcnRCZWZvcmUoIHRoaXMuJHRhYmxlICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLiR0b29sYmFyID0gJHRvb2xiYXI7XG5cbiAgICAgICAgICAgIGlmKCB0aGlzLm1vZGUgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kdG9vbGJhci5hZGRDbGFzcyggJ3RhYmxlc2F3LW1vZGUtJyArIHRoaXMubW9kZSApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAvLyBEb27igJl0IHJlbW92ZSB0aGUgdG9vbGJhci4gU29tZSBvZiB0aGUgdGFibGUgZmVhdHVyZXMgYXJlIG5vdCB5ZXQgZGVzdHJveS1mcmllbmRseS5cbiAgICAgICAgICAgIHRoaXMuJHRhYmxlLnByZXYoKS5maWx0ZXIoICcuJyArIGNsYXNzZXMudG9vbGJhciApLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZS5yZXBsYWNlKCAvXFxidGFibGVzYXctbW9kZVxcLVxcdypcXGIvZ2ksICcnICk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdmFyIHRhYmxlSWQgPSB0aGlzLiR0YWJsZS5hdHRyKCAnaWQnICk7XG4gICAgICAgICAgICAkKCBkb2N1bWVudCApLm9mZiggXCIuXCIgKyB0YWJsZUlkICk7XG4gICAgICAgICAgICAkKCB3aW5kb3cgKS5vZmYoIFwiLlwiICsgdGFibGVJZCApO1xuXG4gICAgICAgICAgICAvLyBvdGhlciBwbHVnaW5zXG4gICAgICAgICAgICB0aGlzLiR0YWJsZS50cmlnZ2VyKCBldmVudHMuZGVzdHJveSwgWyB0aGlzIF0gKTtcblxuICAgICAgICAgICAgdGhpcy4kdGFibGUucmVtb3ZlRGF0YSggcGx1Z2luTmFtZSApO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIENvbGxlY3Rpb24gbWV0aG9kLlxuICAgICAgICAkLmZuWyBwbHVnaW5OYW1lIF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciAkdCA9ICQoIHRoaXMgKTtcblxuICAgICAgICAgICAgICAgIGlmKCAkdC5kYXRhKCBwbHVnaW5OYW1lICkgKXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IG5ldyBUYWJsZSggdGhpcyApO1xuICAgICAgICAgICAgICAgICR0LmRhdGEoIHBsdWdpbk5hbWUsIHRhYmxlICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICAkKCBkb2N1bWVudCApLm9uKCBcImVuaGFuY2UudGFibGVzYXdcIiwgZnVuY3Rpb24oIGUgKSB7XG4gICAgICAgICAgICAvLyBDdXQgdGhlIG11c3RhcmRcbiAgICAgICAgICAgIGlmKCBUYWJsZXNhdy5tdXN0YXJkICkge1xuICAgICAgICAgICAgICAgICQoIGUudGFyZ2V0ICkuZmluZCggaW5pdFNlbGVjdG9yIClbIHBsdWdpbk5hbWUgXSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIH0oKSk7XG5cbiAgICA7KGZ1bmN0aW9uKCl7XG5cbiAgICAgICAgdmFyIGNsYXNzZXMgPSB7XG4gICAgICAgICAgICBzdGFja1RhYmxlOiAndGFibGVzYXctc3RhY2snLFxuICAgICAgICAgICAgY2VsbExhYmVsczogJ3RhYmxlc2F3LWNlbGwtbGFiZWwnLFxuICAgICAgICAgICAgY2VsbENvbnRlbnRMYWJlbHM6ICd0YWJsZXNhdy1jZWxsLWNvbnRlbnQnXG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGRhdGEgPSB7XG4gICAgICAgICAgICBvYmo6ICd0YWJsZXNhdy1zdGFjaydcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgYXR0cnMgPSB7XG4gICAgICAgICAgICBsYWJlbGxlc3M6ICdkYXRhLXRhYmxlc2F3LW5vLWxhYmVscycsXG4gICAgICAgICAgICBoaWRlZW1wdHk6ICdkYXRhLXRhYmxlc2F3LWhpZGUtZW1wdHknXG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIFN0YWNrID0gZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG5cbiAgICAgICAgICAgIHRoaXMuJHRhYmxlID0gJCggZWxlbWVudCApO1xuXG4gICAgICAgICAgICB0aGlzLmxhYmVsbGVzcyA9IHRoaXMuJHRhYmxlLmlzKCAnWycgKyBhdHRycy5sYWJlbGxlc3MgKyAnXScgKTtcbiAgICAgICAgICAgIHRoaXMuaGlkZWVtcHR5ID0gdGhpcy4kdGFibGUuaXMoICdbJyArIGF0dHJzLmhpZGVlbXB0eSArICddJyApO1xuXG4gICAgICAgICAgICBpZiggIXRoaXMubGFiZWxsZXNzICkge1xuICAgICAgICAgICAgICAgIC8vIGFsbEhlYWRlcnMgcmVmZXJlbmNlcyBoZWFkZXJzLCBwbHVzIGFsbCBUSHMgaW4gdGhlIHRoZWFkLCB3aGljaCBtYXkgaW5jbHVkZSBzZXZlcmFsIHJvd3MsIG9yIG5vdFxuICAgICAgICAgICAgICAgIHRoaXMuYWxsSGVhZGVycyA9IHRoaXMuJHRhYmxlLmZpbmQoIFwidGhcIiApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLiR0YWJsZS5kYXRhKCBkYXRhLm9iaiwgdGhpcyApO1xuICAgICAgICB9O1xuXG4gICAgICAgIFN0YWNrLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oIGNvbHN0YXJ0ICkge1xuICAgICAgICAgICAgdGhpcy4kdGFibGUuYWRkQ2xhc3MoIGNsYXNzZXMuc3RhY2tUYWJsZSApO1xuXG4gICAgICAgICAgICBpZiggdGhpcy5sYWJlbGxlc3MgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBnZXQgaGVhZGVycyBpbiByZXZlcnNlIG9yZGVyIHNvIHRoYXQgdG9wLWxldmVsIGhlYWRlcnMgYXJlIGFwcGVuZGVkIGxhc3RcbiAgICAgICAgICAgIHZhciByZXZlcnNlSGVhZGVycyA9ICQoIHRoaXMuYWxsSGVhZGVycyApO1xuICAgICAgICAgICAgdmFyIGhpZGVlbXB0eSA9IHRoaXMuaGlkZWVtcHR5O1xuXG4gICAgICAgICAgICAvLyBjcmVhdGUgdGhlIGhpZGUvc2hvdyB0b2dnbGVzXG4gICAgICAgICAgICByZXZlcnNlSGVhZGVycy5lYWNoKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgdmFyICR0ID0gJCggdGhpcyApLFxuICAgICAgICAgICAgICAgICAgICAkY2VsbHMgPSAkKCB0aGlzLmNlbGxzICkuZmlsdGVyKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEkKCB0aGlzICkucGFyZW50KCkuaXMoIFwiW1wiICsgYXR0cnMubGFiZWxsZXNzICsgXCJdXCIgKSAmJiAoICFoaWRlZW1wdHkgfHwgISQoIHRoaXMgKS5pcyggXCI6ZW1wdHlcIiApICk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlDbGFzcyA9ICRjZWxscy5ub3QoIHRoaXMgKS5maWx0ZXIoIFwidGhlYWQgdGhcIiApLmxlbmd0aCAmJiBcIiB0YWJsZXNhdy1jZWxsLWxhYmVsLXRvcFwiLFxuICAgICAgICAgICAgICAgIC8vIFRPRE8gcmVkdWNlIGNvdXBsaW5nIHdpdGggc29ydGFibGVcbiAgICAgICAgICAgICAgICAgICAgJHNvcnRhYmxlQnV0dG9uID0gJHQuZmluZCggXCIudGFibGVzYXctc29ydGFibGUtYnRuXCIgKSxcbiAgICAgICAgICAgICAgICAgICAgaHRtbCA9ICRzb3J0YWJsZUJ1dHRvbi5sZW5ndGggPyAkc29ydGFibGVCdXR0b24uaHRtbCgpIDogJHQuaHRtbCgpO1xuXG4gICAgICAgICAgICAgICAgaWYoIGh0bWwgIT09IFwiXCIgKXtcbiAgICAgICAgICAgICAgICAgICAgaWYoIGhpZXJhcmNoeUNsYXNzICl7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlcmF0aW9uID0gcGFyc2VJbnQoICQoIHRoaXMgKS5hdHRyKCBcImNvbHNwYW5cIiApLCAxMCApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IFwiXCI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBpdGVyYXRpb24gKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSBcInRkOm50aC1jaGlsZChcIisgaXRlcmF0aW9uICtcIm4gKyBcIiArICggY29sc3RhcnQgKSArXCIpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAkY2VsbHMuZmlsdGVyKCBmaWx0ZXIgKS5wcmVwZW5kKCBcIjxiIGNsYXNzPSdcIiArIGNsYXNzZXMuY2VsbExhYmVscyArIGhpZXJhcmNoeUNsYXNzICsgXCInPlwiICsgaHRtbCArIFwiPC9iPlwiICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGNlbGxzLndyYXBJbm5lciggXCI8c3BhbiBjbGFzcz0nXCIgKyBjbGFzc2VzLmNlbGxDb250ZW50TGFiZWxzICsgXCInPjwvc3Bhbj5cIiApO1xuICAgICAgICAgICAgICAgICAgICAgICAgJGNlbGxzLnByZXBlbmQoIFwiPGIgY2xhc3M9J1wiICsgY2xhc3Nlcy5jZWxsTGFiZWxzICsgXCInPlwiICsgaHRtbCArIFwiPC9iPlwiICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgU3RhY2sucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMuJHRhYmxlLnJlbW92ZUNsYXNzKCBjbGFzc2VzLnN0YWNrVGFibGUgKTtcbiAgICAgICAgICAgIHRoaXMuJHRhYmxlLmZpbmQoICcuJyArIGNsYXNzZXMuY2VsbExhYmVscyApLnJlbW92ZSgpO1xuICAgICAgICAgICAgdGhpcy4kdGFibGUuZmluZCggJy4nICsgY2xhc3Nlcy5jZWxsQ29udGVudExhYmVscyApLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgJCggdGhpcyApLnJlcGxhY2VXaXRoKCB0aGlzLmNoaWxkTm9kZXMgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIG9uIHRhYmxlY3JlYXRlLCBpbml0XG4gICAgICAgICQoIGRvY3VtZW50ICkub24oIFwidGFibGVzYXdjcmVhdGVcIiwgZnVuY3Rpb24oIGUsIHRhYmxlc2F3LCBjb2xzdGFydCApe1xuICAgICAgICAgICAgaWYoIHRhYmxlc2F3Lm1vZGUgPT09ICdzdGFjaycgKXtcbiAgICAgICAgICAgICAgICB2YXIgdGFibGUgPSBuZXcgU3RhY2soIHRhYmxlc2F3LnRhYmxlICk7XG4gICAgICAgICAgICAgICAgdGFibGUuaW5pdCggY29sc3RhcnQgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9ICk7XG5cbiAgICAgICAgJCggZG9jdW1lbnQgKS5vbiggXCJ0YWJsZXNhd2Rlc3Ryb3lcIiwgZnVuY3Rpb24oIGUsIHRhYmxlc2F3ICl7XG5cbiAgICAgICAgICAgIGlmKCB0YWJsZXNhdy5tb2RlID09PSAnc3RhY2snICl7XG4gICAgICAgICAgICAgICAgJCggdGFibGVzYXcudGFibGUgKS5kYXRhKCBkYXRhLm9iaiApLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9ICk7XG5cbiAgICB9KCkpO1xuICAgIDsoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBwbHVnaW5OYW1lID0gXCJ0YWJsZXNhd2J0blwiLFxuICAgICAgICAgICAgbWV0aG9kcyA9IHtcbiAgICAgICAgICAgICAgICBfY3JlYXRlOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCggdGhpcyApLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKCB0aGlzIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudHJpZ2dlciggXCJiZWZvcmVjcmVhdGUuXCIgKyBwbHVnaW5OYW1lIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIHBsdWdpbk5hbWUgXSggXCJfaW5pdFwiIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudHJpZ2dlciggXCJjcmVhdGUuXCIgKyBwbHVnaW5OYW1lICk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX2luaXQ6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIHZhciBvRWwgPSAkKCB0aGlzICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWwgPSB0aGlzLmdldEVsZW1lbnRzQnlUYWdOYW1lKCBcInNlbGVjdFwiIClbIDAgXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiggc2VsICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCggdGhpcyApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCBcImJ0bi1zZWxlY3RcIiApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBwbHVnaW5OYW1lIF0oIFwiX3NlbGVjdFwiLCBzZWwgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb0VsO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX3NlbGVjdDogZnVuY3Rpb24oIHNlbCApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVwZGF0ZSA9IGZ1bmN0aW9uKCBvRWwsIHNlbCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvcHRzID0gJCggc2VsICkuZmluZCggXCJvcHRpb25cIiApO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJzcGFuXCIgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmb3VuZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC5zZXRBdHRyaWJ1dGUoIFwiYXJpYS1oaWRkZW5cIiwgXCJ0cnVlXCIgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLmlubmVySFRNTCA9IFwiJiMxNjA7XCI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3B0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggb3B0LnNlbGVjdGVkICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC5pbm5lckhUTUwgPSBvcHQudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBvRWwuY2hpbGROb2RlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBvcHRzLmxlbmd0aCA+IDAgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IoIHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwgPSBjaGlsZHJlblsgaSBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBlbCAmJiBlbC5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09PSBcIlNQQU5cIiApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9FbC5yZXBsYWNlQ2hpbGQoIGxhYmVsLCBlbCApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoICFmb3VuZCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb0VsLmluc2VydEJlZm9yZSggbGFiZWwsIG9FbC5maXJzdENoaWxkICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZSggdGhpcywgc2VsICk7XG4gICAgICAgICAgICAgICAgICAgICQoIHRoaXMgKS5vbiggXCJjaGFuZ2UgcmVmcmVzaFwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSggdGhpcywgc2VsICk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgLy8gQ29sbGVjdGlvbiBtZXRob2QuXG4gICAgICAgICQuZm5bIHBsdWdpbk5hbWUgXSA9IGZ1bmN0aW9uKCBhcnJnLCBhLCBiLCBjICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIC8vIGlmIGl0J3MgYSBtZXRob2RcbiAgICAgICAgICAgICAgICBpZiggYXJyZyAmJiB0eXBlb2YoIGFycmcgKSA9PT0gXCJzdHJpbmdcIiApe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5mblsgcGx1Z2luTmFtZSBdLnByb3RvdHlwZVsgYXJyZyBdLmNhbGwoIHRoaXMsIGEsIGIsIGMgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBkb24ndCByZS1pbml0XG4gICAgICAgICAgICAgICAgaWYoICQoIHRoaXMgKS5kYXRhKCBwbHVnaW5OYW1lICsgXCJhY3RpdmVcIiApICl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCB0aGlzICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCBpbml0XG5cbiAgICAgICAgICAgICAgICAkKCB0aGlzICkuZGF0YSggcGx1Z2luTmFtZSArIFwiYWN0aXZlXCIsIHRydWUgKTtcbiAgICAgICAgICAgICAgICAkLmZuWyBwbHVnaW5OYW1lIF0ucHJvdG90eXBlLl9jcmVhdGUuY2FsbCggdGhpcyApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gYWRkIG1ldGhvZHNcbiAgICAgICAgJC5leHRlbmQoICQuZm5bIHBsdWdpbk5hbWUgXS5wcm90b3R5cGUsIG1ldGhvZHMgKTtcblxuICAgIH0oKSk7XG4gICAgOyhmdW5jdGlvbigpe1xuXG4gICAgICAgIHZhciBDb2x1bW5Ub2dnbGUgPSBmdW5jdGlvbiggZWxlbWVudCApIHtcblxuICAgICAgICAgICAgdGhpcy4kdGFibGUgPSAkKCBlbGVtZW50ICk7XG5cbiAgICAgICAgICAgIGlmKCAhdGhpcy4kdGFibGUubGVuZ3RoICkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jbGFzc2VzID0ge1xuICAgICAgICAgICAgICAgIGNvbHVtblRvZ2dsZVRhYmxlOiAndGFibGVzYXctY29sdW1udG9nZ2xlJyxcbiAgICAgICAgICAgICAgICBjb2x1bW5CdG5Db250YWluOiAndGFibGVzYXctY29sdW1udG9nZ2xlLWJ0bndyYXAgdGFibGVzYXctYWR2YW5jZScsXG4gICAgICAgICAgICAgICAgY29sdW1uQnRuOiAndGFibGVzYXctY29sdW1udG9nZ2xlLWJ0biB0YWJsZXNhdy1uYXYtYnRuIGRvd24nLFxuICAgICAgICAgICAgICAgIHBvcHVwOiAndGFibGVzYXctY29sdW1udG9nZ2xlLXBvcHVwJyxcbiAgICAgICAgICAgICAgICBwcmlvcml0eVByZWZpeDogJ3RhYmxlc2F3LXByaW9yaXR5LScsXG4gICAgICAgICAgICAgICAgLy8gVE9ETyBkdXBsaWNhdGUgY2xhc3MsIGFsc28gaW4gdGFibGVzLmpzXG4gICAgICAgICAgICAgICAgdG9vbGJhcjogJ3RhYmxlc2F3LWJhcidcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIEV4cG9zZSBoZWFkZXJzIGFuZCBhbGxIZWFkZXJzIHByb3BlcnRpZXMgb24gdGhlIHdpZGdldFxuICAgICAgICAgICAgLy8gaGVhZGVycyByZWZlcmVuY2VzIHRoZSBUSHMgd2l0aGluIHRoZSBmaXJzdCBUUiBpbiB0aGUgdGFibGVcbiAgICAgICAgICAgIHRoaXMuaGVhZGVycyA9IHRoaXMuJHRhYmxlLmZpbmQoIFwidHJcIiApLmVxKCAwICkuZmluZCggXCJ0aFwiICk7XG5cbiAgICAgICAgICAgIHRoaXMuJHRhYmxlLmRhdGEoICd0YWJsZXNhdy1jb2x0b2dnbGUnLCB0aGlzICk7XG4gICAgICAgIH07XG5cbiAgICAgICAgQ29sdW1uVG9nZ2xlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmKCAhdGhpcy4kdGFibGUubGVuZ3RoICkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHRhYmxlSWQsXG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgJG1lbnVCdXR0b24sXG4gICAgICAgICAgICAgICAgJHBvcHVwLFxuICAgICAgICAgICAgICAgICRtZW51LFxuICAgICAgICAgICAgICAgICRidG5Db250YWluLFxuICAgICAgICAgICAgICAgIHNlbGYgPSB0aGlzO1xuXG4gICAgICAgICAgICB0aGlzLiR0YWJsZS5hZGRDbGFzcyggdGhpcy5jbGFzc2VzLmNvbHVtblRvZ2dsZVRhYmxlICk7XG5cbiAgICAgICAgICAgIHRhYmxlSWQgPSB0aGlzLiR0YWJsZS5hdHRyKCBcImlkXCIgKTtcbiAgICAgICAgICAgIGlkID0gdGFibGVJZCArIFwiLXBvcHVwXCI7XG4gICAgICAgICAgICAkYnRuQ29udGFpbiA9ICQoIFwiPGRpdiBjbGFzcz0nXCIgKyB0aGlzLmNsYXNzZXMuY29sdW1uQnRuQ29udGFpbiArIFwiJz48L2Rpdj5cIiApO1xuICAgICAgICAgICAgJG1lbnVCdXR0b24gPSAkKCBcIjxhIGhyZWY9JyNcIiArIGlkICsgXCInIGNsYXNzPSdidG4gYnRuLW1pY3JvIFwiICsgdGhpcy5jbGFzc2VzLmNvbHVtbkJ0biArXCInIGRhdGEtcG9wdXAtbGluaz5cIiArXG4gICAgICAgICAgICAgICAgXCI8c3Bhbj5cIiArIFRhYmxlc2F3LmkxOG4uY29sdW1uQnRuVGV4dCArIFwiPC9zcGFuPjwvYT5cIiApO1xuICAgICAgICAgICAgJHBvcHVwID0gJCggXCI8ZGl2IGNsYXNzPSdkaWFsb2ctdGFibGUtY29sdG9nZ2xlIFwiICsgdGhpcy5jbGFzc2VzLnBvcHVwICsgXCInIGlkPSdcIiArIGlkICsgXCInPjwvZGl2PlwiICk7XG4gICAgICAgICAgICAkbWVudSA9ICQoIFwiPGRpdiBjbGFzcz0nYnRuLWdyb3VwJz48L2Rpdj5cIiApO1xuXG4gICAgICAgICAgICB2YXIgaGFzTm9uUGVyc2lzdGVudEhlYWRlcnMgPSBmYWxzZTtcbiAgICAgICAgICAgICQoIHRoaXMuaGVhZGVycyApLm5vdCggXCJ0ZFwiICkuZWFjaCggZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCggdGhpcyApLFxuICAgICAgICAgICAgICAgICAgICBwcmlvcml0eSA9ICR0aGlzLmF0dHIoXCJkYXRhLXRhYmxlc2F3LXByaW9yaXR5XCIpLFxuICAgICAgICAgICAgICAgICAgICAkY2VsbHMgPSBzZWxmLiRnZXRDZWxscyggdGhpcyApO1xuXG4gICAgICAgICAgICAgICAgaWYoIHByaW9yaXR5ICYmIHByaW9yaXR5ICE9PSBcInBlcnNpc3RcIiApIHtcbiAgICAgICAgICAgICAgICAgICAgJGNlbGxzLmFkZENsYXNzKCBzZWxmLmNsYXNzZXMucHJpb3JpdHlQcmVmaXggKyBwcmlvcml0eSApO1xuXG4gICAgICAgICAgICAgICAgICAgICQoXCI8bGFiZWw+PGlucHV0IHR5cGU9J2NoZWNrYm94JyBjaGVja2VkPlwiICsgJHRoaXMudGV4dCgpICsgXCI8L2xhYmVsPlwiIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyggJG1lbnUgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNoaWxkcmVuKCAwIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhKCBcInRhYmxlc2F3LWhlYWRlclwiLCB0aGlzICk7XG5cbiAgICAgICAgICAgICAgICAgICAgaGFzTm9uUGVyc2lzdGVudEhlYWRlcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiggIWhhc05vblBlcnNpc3RlbnRIZWFkZXJzICkge1xuICAgICAgICAgICAgICAgICRtZW51LmFwcGVuZCggJzxsYWJlbD4nICsgVGFibGVzYXcuaTE4bi5jb2x1bW5zRGlhbG9nRXJyb3IgKyAnPC9sYWJlbD4nICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICRtZW51LmFwcGVuZFRvKCAkcG9wdXAgKTtcblxuICAgICAgICAgICAgLy8gYmluZCBjaGFuZ2UgZXZlbnQgbGlzdGVuZXJzIHRvIGlucHV0cyAtIFRPRE86IG1vdmUgdG8gYSBwcml2YXRlIG1ldGhvZD9cbiAgICAgICAgICAgICRtZW51LmZpbmQoICdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nICkub24oIFwiY2hhbmdlXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hlY2tlZCA9IGUudGFyZ2V0LmNoZWNrZWQ7XG5cbiAgICAgICAgICAgICAgICB2YXIgJGNlbGxzID0gc2VsZi4kZ2V0Q2VsbHNGcm9tQ2hlY2tib3goIGUudGFyZ2V0ICk7XG5cbiAgICAgICAgICAgICAgICAkY2VsbHNbICFjaGVja2VkID8gXCJhZGRDbGFzc1wiIDogXCJyZW1vdmVDbGFzc1wiIF0oIFwidGFibGVzYXctY2VsbC1oaWRkZW5cIiApO1xuICAgICAgICAgICAgICAgICRjZWxsc1sgY2hlY2tlZCA/IFwiYWRkQ2xhc3NcIiA6IFwicmVtb3ZlQ2xhc3NcIiBdKCBcInRhYmxlc2F3LWNlbGwtdmlzaWJsZVwiICk7XG5cbiAgICAgICAgICAgICAgICBzZWxmLiR0YWJsZS50cmlnZ2VyKCAndGFibGVzYXdjb2x1bW5zJyApO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICRtZW51QnV0dG9uLmFwcGVuZFRvKCAkYnRuQ29udGFpbiApO1xuICAgICAgICAgICAgJGJ0bkNvbnRhaW4uYXBwZW5kVG8oIHRoaXMuJHRhYmxlLnByZXYoKS5maWx0ZXIoICcuJyArIHRoaXMuY2xhc3Nlcy50b29sYmFyICkgKTtcblxuXG4gICAgICAgICAgICBmdW5jdGlvbiBjbG9zZVBvcHVwKCBldmVudCApIHtcbiAgICAgICAgICAgICAgICAvLyBDbGljayBjYW1lIGZyb20gaW5zaWRlIHRoZSBwb3B1cCwgaWdub3JlLlxuICAgICAgICAgICAgICAgIGlmKCBldmVudCAmJiAkKCBldmVudC50YXJnZXQgKS5jbG9zZXN0KCBcIi5cIiArIHNlbGYuY2xhc3Nlcy5wb3B1cCApLmxlbmd0aCApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICQoIGRvY3VtZW50ICkub2ZmKCAnY2xpY2suJyArIHRhYmxlSWQgKTtcbiAgICAgICAgICAgICAgICAkbWVudUJ1dHRvbi5yZW1vdmVDbGFzcyggJ3VwJyApLmFkZENsYXNzKCAnZG93bicgKTtcbiAgICAgICAgICAgICAgICAkYnRuQ29udGFpbi5yZW1vdmVDbGFzcyggJ3Zpc2libGUnICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBjbG9zZVRpbWVvdXQ7XG4gICAgICAgICAgICBmdW5jdGlvbiBvcGVuUG9wdXAoKSB7XG4gICAgICAgICAgICAgICAgJGJ0bkNvbnRhaW4uYWRkQ2xhc3MoICd2aXNpYmxlJyApO1xuICAgICAgICAgICAgICAgICRtZW51QnV0dG9uLnJlbW92ZUNsYXNzKCAnZG93bicgKS5hZGRDbGFzcyggJ3VwJyApO1xuXG4gICAgICAgICAgICAgICAgJCggZG9jdW1lbnQgKS5vZmYoICdjbGljay4nICsgdGFibGVJZCwgY2xvc2VQb3B1cCApO1xuXG4gICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCggY2xvc2VUaW1lb3V0ICk7XG4gICAgICAgICAgICAgICAgY2xvc2VUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICQoIGRvY3VtZW50ICkub25lKCAnY2xpY2suJyArIHRhYmxlSWQsIGNsb3NlUG9wdXAgKTtcbiAgICAgICAgICAgICAgICB9LCAxNSApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAkbWVudUJ1dHRvbi5vbiggXCJjbGljay50YWJsZXNhd1wiLCBmdW5jdGlvbiggZXZlbnQgKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIGlmKCAhJGJ0bkNvbnRhaW4uaXMoIFwiLnZpc2libGVcIiApICkge1xuICAgICAgICAgICAgICAgICAgICBvcGVuUG9wdXAoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjbG9zZVBvcHVwKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICRwb3B1cC5hcHBlbmRUbyggJGJ0bkNvbnRhaW4gKTtcblxuICAgICAgICAgICAgdGhpcy4kbWVudSA9ICRtZW51O1xuXG4gICAgICAgICAgICAkKHdpbmRvdykub24oIFwicmVzaXplLlwiICsgdGFibGVJZCwgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBzZWxmLnJlZnJlc2hUb2dnbGUoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2dnbGUoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBDb2x1bW5Ub2dnbGUucHJvdG90eXBlLiRnZXRDZWxscyA9IGZ1bmN0aW9uKCB0aCApIHtcbiAgICAgICAgICAgIHJldHVybiAkKCB0aCApLmFkZCggdGguY2VsbHMgKTtcbiAgICAgICAgfTtcblxuICAgICAgICBDb2x1bW5Ub2dnbGUucHJvdG90eXBlLiRnZXRDZWxsc0Zyb21DaGVja2JveCA9IGZ1bmN0aW9uKCBjaGVja2JveCApIHtcbiAgICAgICAgICAgIHZhciB0aCA9ICQoIGNoZWNrYm94ICkuZGF0YSggXCJ0YWJsZXNhdy1oZWFkZXJcIiApO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGdldENlbGxzKCB0aCApO1xuICAgICAgICB9O1xuXG4gICAgICAgIENvbHVtblRvZ2dsZS5wcm90b3R5cGUucmVmcmVzaFRvZ2dsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICAgICAgdGhpcy4kbWVudS5maW5kKCBcImlucHV0XCIgKS5lYWNoKCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrZWQgPSBzZWxmLiRnZXRDZWxsc0Zyb21DaGVja2JveCggdGhpcyApLmVxKCAwICkuY3NzKCBcImRpc3BsYXlcIiApID09PSBcInRhYmxlLWNlbGxcIjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIENvbHVtblRvZ2dsZS5wcm90b3R5cGUucmVmcmVzaFByaW9yaXR5ID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgICAgICQodGhpcy5oZWFkZXJzKS5ub3QoIFwidGRcIiApLmVhY2goIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQoIHRoaXMgKSxcbiAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHkgPSAkdGhpcy5hdHRyKFwiZGF0YS10YWJsZXNhdy1wcmlvcml0eVwiKSxcbiAgICAgICAgICAgICAgICAgICAgJGNlbGxzID0gJHRoaXMuYWRkKCB0aGlzLmNlbGxzICk7XG5cbiAgICAgICAgICAgICAgICBpZiggcHJpb3JpdHkgJiYgcHJpb3JpdHkgIT09IFwicGVyc2lzdFwiICkge1xuICAgICAgICAgICAgICAgICAgICAkY2VsbHMuYWRkQ2xhc3MoIHNlbGYuY2xhc3Nlcy5wcmlvcml0eVByZWZpeCArIHByaW9yaXR5ICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgQ29sdW1uVG9nZ2xlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLiR0YWJsZS5yZW1vdmVDbGFzcyggdGhpcy5jbGFzc2VzLmNvbHVtblRvZ2dsZVRhYmxlICk7XG4gICAgICAgICAgICB0aGlzLiR0YWJsZS5maW5kKCAndGgsIHRkJyApLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyICRjZWxsID0gJCggdGhpcyApO1xuICAgICAgICAgICAgICAgICRjZWxsLnJlbW92ZUNsYXNzKCAndGFibGVzYXctY2VsbC1oaWRkZW4nIClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCAndGFibGVzYXctY2VsbC12aXNpYmxlJyApO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZS5yZXBsYWNlKCAvXFxidWlcXC10YWJsZVxcLXByaW9yaXR5XFwtXFxkXFxiL2csICcnICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBvbiB0YWJsZWNyZWF0ZSwgaW5pdFxuICAgICAgICAkKCBkb2N1bWVudCApLm9uKCBcInRhYmxlc2F3Y3JlYXRlXCIsIGZ1bmN0aW9uKCBlLCB0YWJsZXNhdyApe1xuXG4gICAgICAgICAgICBpZiggdGFibGVzYXcubW9kZSA9PT0gJ2NvbHVtbnRvZ2dsZScgKXtcbiAgICAgICAgICAgICAgICB2YXIgdGFibGUgPSBuZXcgQ29sdW1uVG9nZ2xlKCB0YWJsZXNhdy50YWJsZSApO1xuICAgICAgICAgICAgICAgIHRhYmxlLmluaXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9ICk7XG5cbiAgICAgICAgJCggZG9jdW1lbnQgKS5vbiggXCJ0YWJsZXNhd2Rlc3Ryb3lcIiwgZnVuY3Rpb24oIGUsIHRhYmxlc2F3ICl7XG4gICAgICAgICAgICBpZiggdGFibGVzYXcubW9kZSA9PT0gJ2NvbHVtbnRvZ2dsZScgKXtcbiAgICAgICAgICAgICAgICAkKCB0YWJsZXNhdy50YWJsZSApLmRhdGEoICd0YWJsZXNhdy1jb2x0b2dnbGUnICkuZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9ICk7XG5cbiAgICB9KCkpO1xuICAgIDsoZnVuY3Rpb24oKSB7XG4gICAgICAgIGZ1bmN0aW9uIGdldFNvcnRWYWx1ZSggY2VsbCApIHtcbiAgICAgICAgICAgIHZhciB0ZXh0ID0gW107XG5cbiAgICAgICAgICAgICQoIGNlbGwuY2hpbGROb2RlcyApLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyICRlbCA9ICQoIHRoaXMgKTtcbiAgICAgICAgICAgICAgICBpZiggJGVsLmlzKCAnaW5wdXQsIHNlbGVjdCcgKSApIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC5wdXNoKCAkZWwudmFsKCkgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYoICRlbC5pcyggJy50YWJsZXNhdy1jZWxsLWxhYmVsJyApICkge1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQucHVzaCggKCAkZWwudGV4dCgpIHx8ICcnICkucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0ZXh0LmpvaW4oICcnICk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcGx1Z2luTmFtZSA9IFwidGFibGVzYXctc29ydGFibGVcIixcbiAgICAgICAgICAgIGluaXRTZWxlY3RvciA9IFwidGFibGVbZGF0YS1cIiArIHBsdWdpbk5hbWUgKyBcIl1cIixcbiAgICAgICAgICAgIHNvcnRhYmxlU3dpdGNoU2VsZWN0b3IgPSBcIltkYXRhLVwiICsgcGx1Z2luTmFtZSArIFwiLXN3aXRjaF1cIixcbiAgICAgICAgICAgIGF0dHJzID0ge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRDb2w6IFwiZGF0YS10YWJsZXNhdy1zb3J0YWJsZS1kZWZhdWx0LWNvbFwiLFxuICAgICAgICAgICAgICAgIG51bWVyaWNDb2w6IFwiZGF0YS10YWJsZXNhdy1zb3J0YWJsZS1udW1lcmljXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGFzc2VzID0ge1xuICAgICAgICAgICAgICAgIGhlYWQ6IHBsdWdpbk5hbWUgKyBcIi1oZWFkXCIsXG4gICAgICAgICAgICAgICAgYXNjZW5kOiBwbHVnaW5OYW1lICsgXCItYXNjZW5kaW5nXCIsXG4gICAgICAgICAgICAgICAgZGVzY2VuZDogcGx1Z2luTmFtZSArIFwiLWRlc2NlbmRpbmdcIixcbiAgICAgICAgICAgICAgICBzd2l0Y2hlcjogcGx1Z2luTmFtZSArIFwiLXN3aXRjaFwiLFxuICAgICAgICAgICAgICAgIHRhYmxlVG9vbGJhcjogJ3RhYmxlc2F3LXRvb2xiYXInLFxuICAgICAgICAgICAgICAgIHNvcnRCdXR0b246IHBsdWdpbk5hbWUgKyBcIi1idG5cIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1ldGhvZHMgPSB7XG4gICAgICAgICAgICAgICAgX2NyZWF0ZTogZnVuY3Rpb24oIG8gKXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoIHRoaXMgKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluaXQgPSAkKCB0aGlzICkuZGF0YSggcGx1Z2luTmFtZSArIFwiLWluaXRcIiApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGluaXQgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgJCggdGhpcyApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRhdGEoIHBsdWdpbk5hbWUgKyBcIi1pbml0XCIsIHRydWUgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50cmlnZ2VyKCBcImJlZm9yZWNyZWF0ZS5cIiArIHBsdWdpbk5hbWUgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgcGx1Z2luTmFtZSBdKCBcIl9pbml0XCIgLCBvIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudHJpZ2dlciggXCJjcmVhdGUuXCIgKyBwbHVnaW5OYW1lICk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX2luaXQ6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbCA9ICQoIHRoaXMgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgJHN3aXRjaGVyO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBhZGRDbGFzc1RvVGFibGUgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsLmFkZENsYXNzKCBwbHVnaW5OYW1lICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3NUb0hlYWRzID0gZnVuY3Rpb24oIGggKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2goIGggLCBmdW5jdGlvbiggaSAsIHYgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCggdiApLmFkZENsYXNzKCBjbGFzc2VzLmhlYWQgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWtlSGVhZHNBY3Rpb25hYmxlID0gZnVuY3Rpb24oIGggLCBmbiApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaCggaCAsIGZ1bmN0aW9uKCBpICwgdiApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9ICQoIFwiPGJ1dHRvbiBjbGFzcz0nXCIgKyBjbGFzc2VzLnNvcnRCdXR0b24gKyBcIicvPlwiICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIub24oIFwiY2xpY2tcIiAsIHsgY29sOiB2IH0gLCBmbiApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCB2ICkud3JhcElubmVyKCBiICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuYXBwZW5kKCBcIjxzcGFuIGNsYXNzPSd0YWJsZXNhdy1zb3J0YWJsZS1hcnJvdyc+XCIgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhck90aGVycyA9IGZ1bmN0aW9uKCBzaWJzICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKCBzaWJzICwgZnVuY3Rpb24oIGkgLCB2ICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb2wgPSAkKCB2ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5yZW1vdmVBdHRyKCBhdHRycy5kZWZhdWx0Q29sICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5yZW1vdmVDbGFzcyggY2xhc3Nlcy5hc2NlbmQgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLnJlbW92ZUNsYXNzKCBjbGFzc2VzLmRlc2NlbmQgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkc09uQWN0aW9uID0gZnVuY3Rpb24oIGUgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggJCggZS50YXJnZXQgKS5pcyggJ2FbaHJlZl0nICkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWFkID0gJCggdGhpcyApLnBhcmVudCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gZS5kYXRhLmNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U29ydFZhbHVlID0gaGVhZHMuaW5kZXgoIGhlYWRbMF0gKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyT3RoZXJzKCBoZWFkLnNpYmxpbmdzKCkgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggaGVhZC5pcyggXCIuXCIgKyBjbGFzc2VzLmRlc2NlbmQgKSApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbFsgcGx1Z2luTmFtZSBdKCBcInNvcnRCeVwiICwgdiAsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTb3J0VmFsdWUgKz0gJ19hc2MnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsWyBwbHVnaW5OYW1lIF0oIFwic29ydEJ5XCIgLCB2ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NvcnRWYWx1ZSArPSAnX2Rlc2MnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggJHN3aXRjaGVyICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3dpdGNoZXIuZmluZCggJ3NlbGVjdCcgKS52YWwoIG5ld1NvcnRWYWx1ZSApLnRyaWdnZXIoICdyZWZyZXNoJyApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVEZWZhdWx0ID0gZnVuY3Rpb24oIGhlYWRzICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKCBoZWFkcyAsIGZ1bmN0aW9uKCBpZHggLCBlbCApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgJGVsID0gJCggZWwgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoICRlbC5pcyggXCJbXCIgKyBhdHRycy5kZWZhdWx0Q29sICsgXCJdXCIgKSApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoICEkZWwuaXMoIFwiLlwiICsgY2xhc3Nlcy5kZXNjZW5kICkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsLmFkZENsYXNzKCBjbGFzc2VzLmFzY2VuZCApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkU3dpdGNoZXIgPSBmdW5jdGlvbiggaGVhZHMgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3dpdGNoZXIgPSAkKCAnPGRpdj4nICkuYWRkQ2xhc3MoIGNsYXNzZXMuc3dpdGNoZXIgKS5hZGRDbGFzcyggY2xhc3Nlcy50YWJsZVRvb2xiYXIgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBodG1sID0gWyAnPGxhYmVsPicgKyBUYWJsZXNhdy5pMThuLnNvcnQgKyAnOicgXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwucHVzaCggJzxzcGFuIGNsYXNzPVwiYnRuXCI+PHNlbGVjdD4nICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZHMuZWFjaChmdW5jdGlvbiggaiApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyICR0ID0gJCggdGhpcyApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNEZWZhdWx0Q29sID0gJHQuaXMoIFwiW1wiICsgYXR0cnMuZGVmYXVsdENvbCArIFwiXVwiICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpc0Rlc2NlbmRpbmcgPSAkdC5pcyggXCIuXCIgKyBjbGFzc2VzLmRlc2NlbmQgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGFzTnVtZXJpY0F0dHJpYnV0ZSA9ICR0LmlzKCAnW2RhdGEtc29ydGFibGUtbnVtZXJpY10nICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBudW1lcmljQ291bnQgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBvbmx5IHRoZSBmaXJzdCBmb3VyIHJvd3MgdG8gc2VlIGlmIHRoZSBjb2x1bW4gaXMgbnVtYmVycy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG51bWVyaWNDb3VudE1heCA9IDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIHRoaXMuY2VsbHMuc2xpY2UoIDAsIG51bWVyaWNDb3VudE1heCApICkuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhaXNOYU4oIHBhcnNlSW50KCBnZXRTb3J0VmFsdWUoIHRoaXMgKSwgMTAgKSApICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNDb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlzTnVtZXJpYyA9IG51bWVyaWNDb3VudCA9PT0gbnVtZXJpY0NvdW50TWF4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIWhhc051bWVyaWNBdHRyaWJ1dGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdC5hdHRyKCBcImRhdGEtc29ydGFibGUtbnVtZXJpY1wiLCBpc051bWVyaWMgPyBcIlwiIDogXCJmYWxzZVwiICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLnB1c2goICc8b3B0aW9uJyArICggaXNEZWZhdWx0Q29sICYmICFpc0Rlc2NlbmRpbmcgPyAnIHNlbGVjdGVkJyA6ICcnICkgKyAnIHZhbHVlPVwiJyArIGogKyAnX2FzY1wiPicgKyAkdC50ZXh0KCkgKyAnICcgKyAoIGlzTnVtZXJpYyA/ICcmI3gyMTkxOycgOiAnKEEtWiknICkgKyAnPC9vcHRpb24+JyApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLnB1c2goICc8b3B0aW9uJyArICggaXNEZWZhdWx0Q29sICYmIGlzRGVzY2VuZGluZyA/ICcgc2VsZWN0ZWQnIDogJycgKSArICcgdmFsdWU9XCInICsgaiArICdfZGVzY1wiPicgKyAkdC50ZXh0KCkgKyAnICcgKyAoIGlzTnVtZXJpYyA/ICcmI3gyMTkzOycgOiAnKFotQSknICkgKyAnPC9vcHRpb24+JyApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwucHVzaCggJzwvc2VsZWN0Pjwvc3Bhbj48L2xhYmVsPicgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzd2l0Y2hlci5odG1sKCBodG1sLmpvaW4oJycpICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgJHRvb2xiYXIgPSBlbC5wcmV2KCkuZmlsdGVyKCAnLnRhYmxlc2F3LWJhcicgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpcnN0Q2hpbGQgPSAkdG9vbGJhci5jaGlsZHJlbigpLmVxKCAwICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggJGZpcnN0Q2hpbGQubGVuZ3RoICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3dpdGNoZXIuaW5zZXJ0QmVmb3JlKCAkZmlyc3RDaGlsZCApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzd2l0Y2hlci5hcHBlbmRUbyggJHRvb2xiYXIgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN3aXRjaGVyLmZpbmQoICcuYnRuJyApLnRhYmxlc2F3YnRuKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN3aXRjaGVyLmZpbmQoICdzZWxlY3QnICkub24oICdjaGFuZ2UnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9ICQoIHRoaXMgKS52YWwoKS5zcGxpdCggJ18nICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkID0gaGVhZHMuZXEoIHZhbFsgMCBdICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJPdGhlcnMoIGhlYWQuc2libGluZ3MoKSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbFsgcGx1Z2luTmFtZSBdKCAnc29ydEJ5JywgaGVhZC5nZXQoIDAgKSwgdmFsWyAxIF0gPT09ICdhc2MnICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzVG9UYWJsZSgpO1xuICAgICAgICAgICAgICAgICAgICBoZWFkcyA9IGVsLmZpbmQoIFwidGhlYWQgdGhbZGF0YS1cIiArIHBsdWdpbk5hbWUgKyBcIi1jb2xdXCIgKTtcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3NUb0hlYWRzKCBoZWFkcyApO1xuICAgICAgICAgICAgICAgICAgICBtYWtlSGVhZHNBY3Rpb25hYmxlKCBoZWFkcyAsIGhlYWRzT25BY3Rpb24gKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRGVmYXVsdCggaGVhZHMgKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiggZWwuaXMoIHNvcnRhYmxlU3dpdGNoU2VsZWN0b3IgKSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZFN3aXRjaGVyKCBoZWFkcywgZWwuZmluZCgndGJvZHkgdHI6bnRoLWNoaWxkKC1uKzMpJykgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0Q29sdW1uTnVtYmVyOiBmdW5jdGlvbiggY29sICl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCBjb2wgKS5wcmV2QWxsKCkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0VGFibGVSb3dzOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCggdGhpcyApLmZpbmQoIFwidGJvZHkgdHJcIiApO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc29ydFJvd3M6IGZ1bmN0aW9uKCByb3dzICwgY29sTnVtICwgYXNjZW5kaW5nLCBjb2wgKXtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNlbGxzLCBmbiwgc29ydGVkO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZ2V0Q2VsbHMgPSBmdW5jdGlvbiggcm93cyApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxscyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaCggcm93cyAsIGZ1bmN0aW9uKCBpICwgciApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9ICQoIHIgKS5jaGlsZHJlbigpLmdldCggY29sTnVtICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGw6IGdldFNvcnRWYWx1ZSggZWxlbWVudCApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93TnVtOiBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjZWxscztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRTb3J0RnhuID0gZnVuY3Rpb24oIGFzY2VuZGluZywgZm9yY2VOdW1lcmljICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdleCA9IC9bXlxcLVxcK1xcZFxcLl0vZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggYXNjZW5kaW5nICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuID0gZnVuY3Rpb24oIGEgLCBiICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggZm9yY2VOdW1lcmljICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KCBhLmNlbGwucmVwbGFjZSggcmVnZXgsICcnICkgKSAtIHBhcnNlRmxvYXQoIGIuY2VsbC5yZXBsYWNlKCByZWdleCwgJycgKSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5jZWxsLnRvTG93ZXJDYXNlKCkgPiBiLmNlbGwudG9Mb3dlckNhc2UoKSA/IDEgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbiA9IGZ1bmN0aW9uKCBhICwgYiApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGZvcmNlTnVtZXJpYyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCggYi5jZWxsLnJlcGxhY2UoIHJlZ2V4LCAnJyApICkgLSBwYXJzZUZsb2F0KCBhLmNlbGwucmVwbGFjZSggcmVnZXgsICcnICkgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuY2VsbC50b0xvd2VyQ2FzZSgpIDwgYi5jZWxsLnRvTG93ZXJDYXNlKCkgPyAxIDogLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBseVRvUm93cyA9IGZ1bmN0aW9uKCBzb3J0ZWQgLCByb3dzICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1Jvd3MgPSBbXSwgaSwgbCwgY3VyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciggaSA9IDAsIGwgPSBzb3J0ZWQubGVuZ3RoIDsgaSA8IGwgOyBpKysgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyID0gc29ydGVkWyBpIF0ucm93TnVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSb3dzLnB1c2goIHJvd3NbY3VyXSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3Um93cztcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgY2VsbHMgPSBnZXRDZWxscyggcm93cyApO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY3VzdG9tRm4gPSAkKCBjb2wgKS5kYXRhKCAndGFibGVzYXctc29ydCcgKTtcbiAgICAgICAgICAgICAgICAgICAgZm4gPSAoIGN1c3RvbUZuICYmIHR5cGVvZiBjdXN0b21GbiA9PT0gXCJmdW5jdGlvblwiID8gY3VzdG9tRm4oIGFzY2VuZGluZyApIDogZmFsc2UgKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U29ydEZ4biggYXNjZW5kaW5nLCAkKCBjb2wgKS5pcyggJ1tkYXRhLXNvcnRhYmxlLW51bWVyaWNdJyApICYmICEkKCBjb2wgKS5pcyggJ1tkYXRhLXNvcnRhYmxlLW51bWVyaWM9XCJmYWxzZVwiXScgKSApO1xuXG4gICAgICAgICAgICAgICAgICAgIHNvcnRlZCA9IGNlbGxzLnNvcnQoIGZuICk7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MgPSBhcHBseVRvUm93cyggc29ydGVkICwgcm93cyApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm93cztcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlcGxhY2VUYWJsZVJvd3M6IGZ1bmN0aW9uKCByb3dzICl7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbCA9ICQoIHRoaXMgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBlbC5maW5kKCBcInRib2R5XCIgKTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IoIHZhciBqID0gMCwgayA9IHJvd3MubGVuZ3RoOyBqIDwgazsgaisrICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keS5hcHBlbmQoIHJvd3NbIGogXSApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtYWtlQ29sRGVmYXVsdDogZnVuY3Rpb24oIGNvbCAsIGEgKXtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSAkKCBjb2wgKTtcbiAgICAgICAgICAgICAgICAgICAgYy5hdHRyKCBhdHRycy5kZWZhdWx0Q29sICwgXCJ0cnVlXCIgKTtcbiAgICAgICAgICAgICAgICAgICAgaWYoIGEgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMucmVtb3ZlQ2xhc3MoIGNsYXNzZXMuZGVzY2VuZCApO1xuICAgICAgICAgICAgICAgICAgICAgICAgYy5hZGRDbGFzcyggY2xhc3Nlcy5hc2NlbmQgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMucmVtb3ZlQ2xhc3MoIGNsYXNzZXMuYXNjZW5kICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjLmFkZENsYXNzKCBjbGFzc2VzLmRlc2NlbmQgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc29ydEJ5OiBmdW5jdGlvbiggY29sICwgYXNjZW5kaW5nICl7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbCA9ICQoIHRoaXMgKSwgY29sTnVtLCByb3dzO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbE51bSA9IGVsWyBwbHVnaW5OYW1lIF0oIFwiZ2V0Q29sdW1uTnVtYmVyXCIgLCBjb2wgKTtcbiAgICAgICAgICAgICAgICAgICAgcm93cyA9IGVsWyBwbHVnaW5OYW1lIF0oIFwiZ2V0VGFibGVSb3dzXCIgKTtcbiAgICAgICAgICAgICAgICAgICAgcm93cyA9IGVsWyBwbHVnaW5OYW1lIF0oIFwic29ydFJvd3NcIiAsIHJvd3MgLCBjb2xOdW0gLCBhc2NlbmRpbmcsIGNvbCApO1xuICAgICAgICAgICAgICAgICAgICBlbFsgcGx1Z2luTmFtZSBdKCBcInJlcGxhY2VUYWJsZVJvd3NcIiAsIHJvd3MgKTtcbiAgICAgICAgICAgICAgICAgICAgZWxbIHBsdWdpbk5hbWUgXSggXCJtYWtlQ29sRGVmYXVsdFwiICwgY29sICwgYXNjZW5kaW5nICk7XG4gICAgICAgICAgICAgICAgICAgIGVsLnRyaWdnZXIoIFwidGFibGVzYXctc29ydGVkXCIgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgIC8vIENvbGxlY3Rpb24gbWV0aG9kLlxuICAgICAgICAkLmZuWyBwbHVnaW5OYW1lIF0gPSBmdW5jdGlvbiggYXJyZyApIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoIGFyZ3VtZW50cyAsIDEpLFxuICAgICAgICAgICAgICAgIHJldHVyblZhbDtcblxuICAgICAgICAgICAgLy8gaWYgaXQncyBhIG1ldGhvZFxuICAgICAgICAgICAgaWYoIGFycmcgJiYgdHlwZW9mKCBhcnJnICkgPT09IFwic3RyaW5nXCIgKXtcbiAgICAgICAgICAgICAgICByZXR1cm5WYWwgPSAkLmZuWyBwbHVnaW5OYW1lIF0ucHJvdG90eXBlWyBhcnJnIF0uYXBwbHkoIHRoaXNbMF0sIGFyZ3MgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHR5cGVvZiByZXR1cm5WYWwgIT09IFwidW5kZWZpbmVkXCIpPyByZXR1cm5WYWw6JCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNoZWNrIGluaXRcbiAgICAgICAgICAgIGlmKCAhJCggdGhpcyApLmRhdGEoIHBsdWdpbk5hbWUgKyBcIi1hY3RpdmVcIiApICl7XG4gICAgICAgICAgICAgICAgJCggdGhpcyApLmRhdGEoIHBsdWdpbk5hbWUgKyBcIi1hY3RpdmVcIiwgdHJ1ZSApO1xuICAgICAgICAgICAgICAgICQuZm5bIHBsdWdpbk5hbWUgXS5wcm90b3R5cGUuX2NyZWF0ZS5jYWxsKCB0aGlzICwgYXJyZyApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICQodGhpcyk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIGFkZCBtZXRob2RzXG4gICAgICAgICQuZXh0ZW5kKCAkLmZuWyBwbHVnaW5OYW1lIF0ucHJvdG90eXBlLCBtZXRob2RzICk7XG5cbiAgICAgICAgJCggZG9jdW1lbnQgKS5vbiggXCJ0YWJsZXNhd2NyZWF0ZVwiLCBmdW5jdGlvbiggZSwgVGFibGVzYXcgKSB7XG4gICAgICAgICAgICBpZiggVGFibGVzYXcuJHRhYmxlLmlzKCBpbml0U2VsZWN0b3IgKSApIHtcbiAgICAgICAgICAgICAgICBUYWJsZXNhdy4kdGFibGVbIHBsdWdpbk5hbWUgXSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIH0oKSk7XG5cbiAgICA7KGZ1bmN0aW9uKCl7XG5cbiAgICAgICAgJC5leHRlbmQoIFRhYmxlc2F3LmNvbmZpZywge1xuICAgICAgICAgICAgc3dpcGU6IHtcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsVGhyZXNob2xkOiAxNSxcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbFRocmVzaG9sZDogMzBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZnVuY3Rpb24gc3VtU3R5bGVzKCAkZWwsIHByb3BzICkge1xuICAgICAgICAgICAgdmFyIHRvdGFsID0gMDtcbiAgICAgICAgICAgIGZvciggdmFyIGogPSAwLCBrID0gcHJvcHMubGVuZ3RoOyBqIDwgazsgaisrICkge1xuICAgICAgICAgICAgICAgIHRvdGFsICs9IHBhcnNlSW50KCAkZWwuY3NzKCBwcm9wc1sgaiBdICkgfHwgMCwgMTAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0b3RhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG91dGVyV2lkdGgoIGVsICkge1xuICAgICAgICAgICAgdmFyICRlbCA9ICQoIGVsICk7XG4gICAgICAgICAgICByZXR1cm4gJGVsLndpZHRoKCkgKyBzdW1TdHlsZXMoICRlbCwgWyBcImJvcmRlci1sZWZ0LXdpZHRoXCIsIFwiYm9yZGVyLXJpZ2h0LXdpZHRoXCIgXSApO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNsYXNzZXMgPSB7XG4gICAgICAgICAgICAvLyBUT0RPIGR1cGxpY2F0ZSBjbGFzcywgYWxzbyBpbiB0YWJsZXMuanNcbiAgICAgICAgICAgIHRvb2xiYXI6IFwidGFibGVzYXctYmFyXCIsXG4gICAgICAgICAgICBoaWRlQnRuOiBcImRpc2FibGVkXCIsXG4gICAgICAgICAgICBwZXJzaXN0V2lkdGhzOiBcInRhYmxlc2F3LWZpeC1wZXJzaXN0XCIsXG4gICAgICAgICAgICBhbGxDb2x1bW5zVmlzaWJsZTogJ3RhYmxlc2F3LWFsbC1jb2xzLXZpc2libGUnXG4gICAgICAgIH07XG4gICAgICAgIHZhciBhdHRycyA9IHtcbiAgICAgICAgICAgIGRpc2FibGVUb3VjaEV2ZW50czogXCJkYXRhLXRhYmxlc2F3LW5vLXRvdWNoXCJcbiAgICAgICAgfTtcblxuICAgICAgICBmdW5jdGlvbiBjcmVhdGVTd2lwZVRhYmxlKCAkdGFibGUgKXtcblxuICAgICAgICAgICAgdmFyICRidG5zID0gJCggXCI8ZGl2IGNsYXNzPSd0YWJsZXNhdy1hZHZhbmNlJz48L2Rpdj5cIiApLFxuICAgICAgICAgICAgICAgICRwcmV2QnRuID0gJCggXCI8YSBocmVmPScjJyBjbGFzcz0ndGFibGVzYXctbmF2LWJ0biBidG4gYnRuLW1pY3JvIGxlZnQnIHRpdGxlPSdQcmV2aW91cyBDb2x1bW4nPjwvYT5cIiApLmFwcGVuZFRvKCAkYnRucyApLFxuICAgICAgICAgICAgICAgICRuZXh0QnRuID0gJCggXCI8YSBocmVmPScjJyBjbGFzcz0ndGFibGVzYXctbmF2LWJ0biBidG4gYnRuLW1pY3JvIHJpZ2h0JyB0aXRsZT0nTmV4dCBDb2x1bW4nPjwvYT5cIiApLmFwcGVuZFRvKCAkYnRucyApLFxuICAgICAgICAgICAgICAgICRoZWFkZXJDZWxscyA9ICR0YWJsZS5maW5kKCBcInRoZWFkIHRoXCIgKSxcbiAgICAgICAgICAgICAgICAkaGVhZGVyQ2VsbHNOb1BlcnNpc3QgPSAkaGVhZGVyQ2VsbHMubm90KCAnW2RhdGEtdGFibGVzYXctcHJpb3JpdHk9XCJwZXJzaXN0XCJdJyApLFxuICAgICAgICAgICAgICAgIGhlYWRlcldpZHRocyA9IFtdLFxuICAgICAgICAgICAgICAgICRoZWFkID0gJCggZG9jdW1lbnQuaGVhZCB8fCAnaGVhZCcgKSxcbiAgICAgICAgICAgICAgICB0YWJsZUlkID0gJHRhYmxlLmF0dHIoICdpZCcgKTtcblxuICAgICAgICAgICAgaWYoICEkaGVhZGVyQ2VsbHMubGVuZ3RoICkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvciggXCJ0YWJsZXNhdyBzd2lwZTogbm8gaGVhZGVyIGNlbGxzIGZvdW5kLiBBcmUgeW91IHVzaW5nIDx0aD4gaW5zaWRlIG9mIDx0aGVhZD4/XCIgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJHRhYmxlLmFkZENsYXNzKCBcInRhYmxlc2F3LXN3aXBlXCIgKTtcblxuICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGluaXRpYWwgd2lkdGhzXG4gICAgICAgICAgICAkaGVhZGVyQ2VsbHMuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSBvdXRlcldpZHRoKCB0aGlzICk7XG4gICAgICAgICAgICAgICAgaGVhZGVyV2lkdGhzLnB1c2goIHdpZHRoICk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgJGJ0bnMuYXBwZW5kVG8oICR0YWJsZS5wcmV2KCkuZmlsdGVyKCAnLnRhYmxlc2F3LWJhcicgKSApO1xuXG4gICAgICAgICAgICBpZiggIXRhYmxlSWQgKSB7XG4gICAgICAgICAgICAgICAgdGFibGVJZCA9ICd0YWJsZXN3aXBlLScgKyBNYXRoLnJvdW5kKCBNYXRoLnJhbmRvbSgpICogMTAwMDAgKTtcbiAgICAgICAgICAgICAgICAkdGFibGUuYXR0ciggJ2lkJywgdGFibGVJZCApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiAkZ2V0Q2VsbHMoIGhlYWRlckNlbGwgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQoIGhlYWRlckNlbGwuY2VsbHMgKS5hZGQoIGhlYWRlckNlbGwgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gc2hvd0NvbHVtbiggaGVhZGVyQ2VsbCApIHtcbiAgICAgICAgICAgICAgICAkZ2V0Q2VsbHMoIGhlYWRlckNlbGwgKS5yZW1vdmVDbGFzcyggJ3RhYmxlc2F3LWNlbGwtaGlkZGVuJyApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBoaWRlQ29sdW1uKCBoZWFkZXJDZWxsICkge1xuICAgICAgICAgICAgICAgICRnZXRDZWxscyggaGVhZGVyQ2VsbCApLmFkZENsYXNzKCAndGFibGVzYXctY2VsbC1oaWRkZW4nICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIHBlcnNpc3RDb2x1bW4oIGhlYWRlckNlbGwgKSB7XG4gICAgICAgICAgICAgICAgJGdldENlbGxzKCBoZWFkZXJDZWxsICkuYWRkQ2xhc3MoICd0YWJsZXNhdy1jZWxsLXBlcnNpc3QnICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGlzUGVyc2lzdGVudCggaGVhZGVyQ2VsbCApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJCggaGVhZGVyQ2VsbCApLmlzKCAnW2RhdGEtdGFibGVzYXctcHJpb3JpdHk9XCJwZXJzaXN0XCJdJyApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiB1bm1haW50YWluV2lkdGhzKCkge1xuICAgICAgICAgICAgICAgICR0YWJsZS5yZW1vdmVDbGFzcyggY2xhc3Nlcy5wZXJzaXN0V2lkdGhzICk7XG4gICAgICAgICAgICAgICAgJCggJyMnICsgdGFibGVJZCArICctcGVyc2lzdCcgKS5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gbWFpbnRhaW5XaWR0aHMoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHByZWZpeCA9ICcjJyArIHRhYmxlSWQgKyAnLnRhYmxlc2F3LXN3aXBlICcsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlcyA9IFtdLFxuICAgICAgICAgICAgICAgICAgICB0YWJsZVdpZHRoID0gJHRhYmxlLndpZHRoKCksXG4gICAgICAgICAgICAgICAgICAgIGhhc2ggPSBbXSxcbiAgICAgICAgICAgICAgICAgICAgbmV3SGFzaDtcblxuICAgICAgICAgICAgICAgICRoZWFkZXJDZWxscy5lYWNoKGZ1bmN0aW9uKCBpbmRleCApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBpZiggaXNQZXJzaXN0ZW50KCB0aGlzICkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IG91dGVyV2lkdGgoIHRoaXMgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBzYXZlIHdpZHRoIG9uIG5vbi1ncmVlZHkgY29sdW1ucyAodGFrZSB1cCBsZXNzIHRoYW4gNzUlIG9mIHRhYmxlIHdpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHdpZHRoIDwgdGFibGVXaWR0aCAqIDAuNzUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaC5wdXNoKCBpbmRleCArICctJyArIHdpZHRoICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzLnB1c2goIHByZWZpeCArICcgLnRhYmxlc2F3LWNlbGwtcGVyc2lzdDpudGgtY2hpbGQoJyArICggaW5kZXggKyAxICkgKyAnKSB7IHdpZHRoOiAnICsgd2lkdGggKyAncHg7IH0nICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBuZXdIYXNoID0gaGFzaC5qb2luKCAnXycgKTtcblxuICAgICAgICAgICAgICAgICR0YWJsZS5hZGRDbGFzcyggY2xhc3Nlcy5wZXJzaXN0V2lkdGhzICk7XG5cbiAgICAgICAgICAgICAgICB2YXIgJHN0eWxlID0gJCggJyMnICsgdGFibGVJZCArICctcGVyc2lzdCcgKTtcbiAgICAgICAgICAgICAgICAvLyBJZiBzdHlsZSBlbGVtZW50IG5vdCB5ZXQgYWRkZWQgT1IgaWYgdGhlIHdpZHRocyBoYXZlIGNoYW5nZWRcbiAgICAgICAgICAgICAgICBpZiggISRzdHlsZS5sZW5ndGggfHwgJHN0eWxlLmRhdGEoICd0YWJsZXNhdy1oYXNoJyApICE9PSBuZXdIYXNoICkge1xuICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgZXhpc3RpbmdcbiAgICAgICAgICAgICAgICAgICAgJHN0eWxlLnJlbW92ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmKCBzdHlsZXMubGVuZ3RoICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCggJzxzdHlsZT4nICsgc3R5bGVzLmpvaW4oIFwiXFxuXCIgKSArICc8L3N0eWxlPicgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCAnaWQnLCB0YWJsZUlkICsgJy1wZXJzaXN0JyApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRhdGEoICd0YWJsZXNhdy1oYXNoJywgbmV3SGFzaCApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKCAkaGVhZCApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBnZXROZXh0KCl7XG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSBbXSxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tGb3VuZDtcblxuICAgICAgICAgICAgICAgICRoZWFkZXJDZWxsc05vUGVyc2lzdC5lYWNoKGZ1bmN0aW9uKCBpICkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHQgPSAkKCB0aGlzICksXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0hpZGRlbiA9ICR0LmNzcyggXCJkaXNwbGF5XCIgKSA9PT0gXCJub25lXCIgfHwgJHQuaXMoIFwiLnRhYmxlc2F3LWNlbGwtaGlkZGVuXCIgKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiggIWlzSGlkZGVuICYmICFjaGVja0ZvdW5kICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0WyAwIF0gPSBpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoIGlzSGlkZGVuICYmIGNoZWNrRm91bmQgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0WyAxIF0gPSBpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRQcmV2KCl7XG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSBnZXROZXh0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsgbmV4dFsgMSBdIC0gMSAsIG5leHRbIDAgXSAtIDEgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gbmV4dHBhaXIoIGZ3ZCApe1xuICAgICAgICAgICAgICAgIHJldHVybiBmd2QgPyBnZXROZXh0KCkgOiBnZXRQcmV2KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGNhbkFkdmFuY2UoIHBhaXIgKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFpclsgMSBdID4gLTEgJiYgcGFpclsgMSBdIDwgJGhlYWRlckNlbGxzTm9QZXJzaXN0Lmxlbmd0aDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gbWF0Y2hlc01lZGlhKCkge1xuICAgICAgICAgICAgICAgIHZhciBtYXRjaE1lZGlhID0gJHRhYmxlLmF0dHIoIFwiZGF0YS10YWJsZXNhdy1zd2lwZS1tZWRpYVwiICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICFtYXRjaE1lZGlhIHx8ICggXCJtYXRjaE1lZGlhXCIgaW4gd2luICkgJiYgd2luLm1hdGNoTWVkaWEoIG1hdGNoTWVkaWEgKS5tYXRjaGVzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBmYWtlQnJlYWtwb2ludHMoKSB7XG4gICAgICAgICAgICAgICAgaWYoICFtYXRjaGVzTWVkaWEoKSApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhclx0Y29udGFpbmVyV2lkdGggPSAkdGFibGUucGFyZW50KCkud2lkdGgoKSxcbiAgICAgICAgICAgICAgICAgICAgcGVyc2lzdCA9IFtdLFxuICAgICAgICAgICAgICAgICAgICBzdW0gPSAwLFxuICAgICAgICAgICAgICAgICAgICBzdW1zID0gW10sXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGVOb25QZXJzaXN0YW50Q291bnQgPSAkaGVhZGVyQ2VsbHMubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgJGhlYWRlckNlbGxzLmVhY2goZnVuY3Rpb24oIGluZGV4ICkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHQgPSAkKCB0aGlzICksXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1BlcnNpc3QgPSAkdC5pcyggJ1tkYXRhLXRhYmxlc2F3LXByaW9yaXR5PVwicGVyc2lzdFwiXScgKTtcblxuICAgICAgICAgICAgICAgICAgICBwZXJzaXN0LnB1c2goIGlzUGVyc2lzdCApO1xuICAgICAgICAgICAgICAgICAgICBzdW0gKz0gaGVhZGVyV2lkdGhzWyBpbmRleCBdO1xuICAgICAgICAgICAgICAgICAgICBzdW1zLnB1c2goIHN1bSApO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGlzIHBlcnNpc3RlbnQgb3IgaXMgaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgIGlmKCBpc1BlcnNpc3QgfHwgc3VtID4gY29udGFpbmVyV2lkdGggKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlTm9uUGVyc2lzdGFudENvdW50LS07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgYXQgbGVhc3Qgb25lIGNvbHVtbiB0byBzd2lwZS5cbiAgICAgICAgICAgICAgICB2YXIgbmVlZHNOb25QZXJzaXN0ZW50Q29sdW1uID0gdmlzaWJsZU5vblBlcnNpc3RhbnRDb3VudCA9PT0gMDtcblxuICAgICAgICAgICAgICAgICRoZWFkZXJDZWxscy5lYWNoKGZ1bmN0aW9uKCBpbmRleCApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYoIHBlcnNpc3RbIGluZGV4IF0gKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciB2aXN1YWwgYm94LXNoYWRvd1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdENvbHVtbiggdGhpcyApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYoIHN1bXNbIGluZGV4IF0gPD0gY29udGFpbmVyV2lkdGggfHwgbmVlZHNOb25QZXJzaXN0ZW50Q29sdW1uICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHNOb25QZXJzaXN0ZW50Q29sdW1uID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q29sdW1uKCB0aGlzICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRlQ29sdW1uKCB0aGlzICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHVubWFpbnRhaW5XaWR0aHMoKTtcbiAgICAgICAgICAgICAgICAkdGFibGUudHJpZ2dlciggJ3RhYmxlc2F3Y29sdW1ucycgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gYWR2YW5jZSggZndkICl7XG4gICAgICAgICAgICAgICAgdmFyIHBhaXIgPSBuZXh0cGFpciggZndkICk7XG4gICAgICAgICAgICAgICAgaWYoIGNhbkFkdmFuY2UoIHBhaXIgKSApe1xuICAgICAgICAgICAgICAgICAgICBpZiggaXNOYU4oIHBhaXJbIDAgXSApICl7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggZndkICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFpclswXSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWlyWzBdID0gJGhlYWRlckNlbGxzTm9QZXJzaXN0Lmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBtYWludGFpbldpZHRocygpO1xuXG4gICAgICAgICAgICAgICAgICAgIGhpZGVDb2x1bW4oICRoZWFkZXJDZWxsc05vUGVyc2lzdC5nZXQoIHBhaXJbIDAgXSApICk7XG4gICAgICAgICAgICAgICAgICAgIHNob3dDb2x1bW4oICRoZWFkZXJDZWxsc05vUGVyc2lzdC5nZXQoIHBhaXJbIDEgXSApICk7XG5cbiAgICAgICAgICAgICAgICAgICAgJHRhYmxlLnRyaWdnZXIoICd0YWJsZXNhd2NvbHVtbnMnICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAkcHJldkJ0bi5hZGQoICRuZXh0QnRuICkub24oIFwiY2xpY2tcIiwgZnVuY3Rpb24oIGUgKXtcbiAgICAgICAgICAgICAgICBhZHZhbmNlKCAhISQoIGUudGFyZ2V0ICkuY2xvc2VzdCggJG5leHRCdG4gKS5sZW5ndGggKTtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0Q29vcmQoIGV2ZW50LCBrZXkgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICggZXZlbnQudG91Y2hlcyB8fCBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgKVsgMCBdWyBrZXkgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYoICEkdGFibGUuaXMoIFwiW1wiICsgYXR0cnMuZGlzYWJsZVRvdWNoRXZlbnRzICsgXCJdXCIgKSApIHtcblxuICAgICAgICAgICAgICAgICR0YWJsZVxuICAgICAgICAgICAgICAgICAgICAub24oIFwidG91Y2hzdGFydC5zd2lwZXRvZ2dsZVwiLCBmdW5jdGlvbiggZSApe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9yaWdpblggPSBnZXRDb29yZCggZSwgJ3BhZ2VYJyApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblkgPSBnZXRDb29yZCggZSwgJ3BhZ2VZJyApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgJCggd2luICkub2ZmKCBcInJlc2l6ZVwiLCBmYWtlQnJlYWtwb2ludHMgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgJCggdGhpcyApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9uKCBcInRvdWNobW92ZVwiLCBmdW5jdGlvbiggZSApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gZ2V0Q29vcmQoIGUsICdwYWdlWCcgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGdldENvb3JkKCBlLCAncGFnZVknICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZmcgPSBUYWJsZXNhdy5jb25maWcuc3dpcGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBNYXRoLmFicyggeCAtIG9yaWdpblggKSA+IGNmZy5ob3Jpem9udGFsVGhyZXNob2xkICYmIE1hdGguYWJzKCB5IC0gb3JpZ2luWSApIDwgY2ZnLnZlcnRpY2FsVGhyZXNob2xkICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oIFwidG91Y2hlbmQuc3dpcGV0b2dnbGVcIiwgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNmZyA9IFRhYmxlc2F3LmNvbmZpZy5zd2lwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIE1hdGguYWJzKCB5IC0gb3JpZ2luWSApIDwgY2ZnLnZlcnRpY2FsVGhyZXNob2xkICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHggLSBvcmlnaW5YIDwgLTEgKiBjZmcuaG9yaXpvbnRhbFRocmVzaG9sZCApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmFuY2UoIHRydWUgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCB4IC0gb3JpZ2luWCA+IGNmZy5ob3Jpem9udGFsVGhyZXNob2xkICl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZSggZmFsc2UgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCggd2luICkub24oIFwicmVzaXplXCIsIGZha2VCcmVha3BvaW50cyApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCB0aGlzICkub2ZmKCBcInRvdWNobW92ZSB0b3VjaGVuZFwiICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAkdGFibGVcbiAgICAgICAgICAgICAgICAub24oIFwidGFibGVzYXdjb2x1bW5zLnN3aXBldG9nZ2xlXCIsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjYW5Hb1ByZXYgPSBjYW5BZHZhbmNlKCBnZXRQcmV2KCkgKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNhbkdvTmV4dCA9IGNhbkFkdmFuY2UoIGdldE5leHQoKSApO1xuICAgICAgICAgICAgICAgICAgICAkcHJldkJ0blsgY2FuR29QcmV2ID8gXCJyZW1vdmVDbGFzc1wiIDogXCJhZGRDbGFzc1wiIF0oIGNsYXNzZXMuaGlkZUJ0biApO1xuICAgICAgICAgICAgICAgICAgICAkbmV4dEJ0blsgY2FuR29OZXh0ID8gXCJyZW1vdmVDbGFzc1wiIDogXCJhZGRDbGFzc1wiIF0oIGNsYXNzZXMuaGlkZUJ0biApO1xuXG4gICAgICAgICAgICAgICAgICAgICRwcmV2QnRuLmNsb3Nlc3QoIFwiLlwiICsgY2xhc3Nlcy50b29sYmFyIClbICFjYW5Hb1ByZXYgJiYgIWNhbkdvTmV4dCA/ICdhZGRDbGFzcycgOiAncmVtb3ZlQ2xhc3MnIF0oIGNsYXNzZXMuYWxsQ29sdW1uc1Zpc2libGUgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5vbiggXCJ0YWJsZXNhd25leHQuc3dpcGV0b2dnbGVcIiwgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgYWR2YW5jZSggdHJ1ZSApO1xuICAgICAgICAgICAgICAgIH0gKVxuICAgICAgICAgICAgICAgIC5vbiggXCJ0YWJsZXNhd3ByZXYuc3dpcGV0b2dnbGVcIiwgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgYWR2YW5jZSggZmFsc2UgKTtcbiAgICAgICAgICAgICAgICB9IClcbiAgICAgICAgICAgICAgICAub24oIFwidGFibGVzYXdkZXN0cm95LnN3aXBldG9nZ2xlXCIsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkdCA9ICQoIHRoaXMgKTtcblxuICAgICAgICAgICAgICAgICAgICAkdC5yZW1vdmVDbGFzcyggJ3RhYmxlc2F3LXN3aXBlJyApO1xuICAgICAgICAgICAgICAgICAgICAkdC5wcmV2KCkuZmlsdGVyKCAnLnRhYmxlc2F3LWJhcicgKS5maW5kKCAnLnRhYmxlc2F3LWFkdmFuY2UnICkucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICQoIHdpbiApLm9mZiggXCJyZXNpemVcIiwgZmFrZUJyZWFrcG9pbnRzICk7XG5cbiAgICAgICAgICAgICAgICAgICAgJHQub2ZmKCBcIi5zd2lwZXRvZ2dsZVwiICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAub24oIFwidGFibGVzYXdyZWZyZXNoXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBtYW51YWwgcmVmcmVzaFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJXaWR0aHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgJGhlYWRlckNlbGxzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSBvdXRlcldpZHRoKCB0aGlzICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJXaWR0aHMucHVzaCggd2lkdGggKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgZmFrZUJyZWFrcG9pbnRzKCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZha2VCcmVha3BvaW50cygpO1xuICAgICAgICAgICAgJCggd2luICkub24oIFwicmVzaXplXCIsIGZha2VCcmVha3BvaW50cyApO1xuICAgICAgICB9XG5cblxuXG4gICAgICAgIC8vIG9uIHRhYmxlY3JlYXRlLCBpbml0XG4gICAgICAgICQoIGRvY3VtZW50ICkub24oIFwidGFibGVzYXdjcmVhdGVcIiwgZnVuY3Rpb24oIGUsIHRhYmxlc2F3ICl7XG4gICAgICAgICAgICBpZiggdGFibGVzYXcubW9kZSA9PT0gJ3N3aXBlJyApe1xuICAgICAgICAgICAgICAgIGNyZWF0ZVN3aXBlVGFibGUoIHRhYmxlc2F3LiR0YWJsZSApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gKTtcblxuICAgIH0oKSk7XG5cbiAgICA7KGZ1bmN0aW9uKCl7XG5cbiAgICAgICAgdmFyIE1pbmlNYXAgPSB7XG4gICAgICAgICAgICBhdHRyOiB7XG4gICAgICAgICAgICAgICAgaW5pdDogJ2RhdGEtdGFibGVzYXctbWluaW1hcCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBmdW5jdGlvbiBjcmVhdGVNaW5pTWFwKCAkdGFibGUgKXtcblxuICAgICAgICAgICAgdmFyICRidG5zID0gJCggJzxkaXYgY2xhc3M9XCJ0YWJsZXNhdy1hZHZhbmNlIG1pbmltYXBcIj4nICksXG4gICAgICAgICAgICAgICAgJGRvdE5hdiA9ICQoICc8dWwgY2xhc3M9XCJ0YWJsZXNhdy1hZHZhbmNlLWRvdHNcIj4nICkuYXBwZW5kVG8oICRidG5zICksXG4gICAgICAgICAgICAgICAgaGlkZURvdCA9ICd0YWJsZXNhdy1hZHZhbmNlLWRvdHMtaGlkZScsXG4gICAgICAgICAgICAgICAgJGhlYWRlckNlbGxzID0gJHRhYmxlLmZpbmQoICd0aGVhZCB0aCcgKTtcblxuICAgICAgICAgICAgLy8gcG9wdWxhdGUgZG90c1xuICAgICAgICAgICAgJGhlYWRlckNlbGxzLmVhY2goZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAkZG90TmF2LmFwcGVuZCggJzxsaT48aT48L2k+PC9saT4nICk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgJGJ0bnMuYXBwZW5kVG8oICR0YWJsZS5wcmV2KCkuZmlsdGVyKCAnLnRhYmxlc2F3LWJhcicgKSApO1xuXG4gICAgICAgICAgICBmdW5jdGlvbiBzaG93TWluaW1hcCggJHRhYmxlICkge1xuICAgICAgICAgICAgICAgIHZhciBtcSA9ICR0YWJsZS5hdHRyKCBNaW5pTWFwLmF0dHIuaW5pdCApO1xuICAgICAgICAgICAgICAgIHJldHVybiAhbXEgfHwgd2luLm1hdGNoTWVkaWEgJiYgd2luLm1hdGNoTWVkaWEoIG1xICkubWF0Y2hlcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gc2hvd0hpZGVOYXYoKXtcbiAgICAgICAgICAgICAgICBpZiggIXNob3dNaW5pbWFwKCAkdGFibGUgKSApIHtcbiAgICAgICAgICAgICAgICAgICAgJGJ0bnMuY3NzKCBcImRpc3BsYXlcIiwgXCJub25lXCIgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkYnRucy5jc3MoIFwiZGlzcGxheVwiLCBcImJsb2NrXCIgKTtcblxuICAgICAgICAgICAgICAgIC8vIHNob3cvaGlkZSBkb3RzXG4gICAgICAgICAgICAgICAgdmFyIGRvdHMgPSAkZG90TmF2LmZpbmQoIFwibGlcIiApLnJlbW92ZUNsYXNzKCBoaWRlRG90ICk7XG4gICAgICAgICAgICAgICAgJHRhYmxlLmZpbmQoIFwidGhlYWQgdGhcIiApLmVhY2goZnVuY3Rpb24oaSl7XG4gICAgICAgICAgICAgICAgICAgIGlmKCAkKCB0aGlzICkuY3NzKCBcImRpc3BsYXlcIiApID09PSBcIm5vbmVcIiApe1xuICAgICAgICAgICAgICAgICAgICAgICAgZG90cy5lcSggaSApLmFkZENsYXNzKCBoaWRlRG90ICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gcnVuIG9uIGluaXQgYW5kIHJlc2l6ZVxuICAgICAgICAgICAgc2hvd0hpZGVOYXYoKTtcbiAgICAgICAgICAgICQoIHdpbiApLm9uKCBcInJlc2l6ZVwiLCBzaG93SGlkZU5hdiApO1xuXG5cbiAgICAgICAgICAgICR0YWJsZVxuICAgICAgICAgICAgICAgIC5vbiggXCJ0YWJsZXNhd2NvbHVtbnMubWluaW1hcFwiLCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICBzaG93SGlkZU5hdigpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLm9uKCBcInRhYmxlc2F3ZGVzdHJveS5taW5pbWFwXCIsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkdCA9ICQoIHRoaXMgKTtcblxuICAgICAgICAgICAgICAgICAgICAkdC5wcmV2KCkuZmlsdGVyKCAnLnRhYmxlc2F3LWJhcicgKS5maW5kKCAnLnRhYmxlc2F3LWFkdmFuY2UnICkucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICQoIHdpbiApLm9mZiggXCJyZXNpemVcIiwgc2hvd0hpZGVOYXYgKTtcblxuICAgICAgICAgICAgICAgICAgICAkdC5vZmYoIFwiLm1pbmltYXBcIiApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cblxuXG4gICAgICAgIC8vIG9uIHRhYmxlY3JlYXRlLCBpbml0XG4gICAgICAgICQoIGRvY3VtZW50ICkub24oIFwidGFibGVzYXdjcmVhdGVcIiwgZnVuY3Rpb24oIGUsIHRhYmxlc2F3ICl7XG5cbiAgICAgICAgICAgIGlmKCAoIHRhYmxlc2F3Lm1vZGUgPT09ICdzd2lwZScgfHwgdGFibGVzYXcubW9kZSA9PT0gJ2NvbHVtbnRvZ2dsZScgKSAmJiB0YWJsZXNhdy4kdGFibGUuaXMoICdbICcgKyBNaW5pTWFwLmF0dHIuaW5pdCArICddJyApICl7XG4gICAgICAgICAgICAgICAgY3JlYXRlTWluaU1hcCggdGFibGVzYXcuJHRhYmxlICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSApO1xuXG4gICAgfSgpKTtcblxuICAgIDsoZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIFMgPSB7XG4gICAgICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICAgICBpbml0OiAndGFibGVbZGF0YS10YWJsZXNhdy1tb2RlLXN3aXRjaF0nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGV4Y2x1ZGVNb2RlOiAnZGF0YS10YWJsZXNhdy1tb2RlLWV4Y2x1ZGUnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xhc3Nlczoge1xuICAgICAgICAgICAgICAgIG1haW46ICd0YWJsZXNhdy1tb2Rlc3dpdGNoJyxcbiAgICAgICAgICAgICAgICB0b29sYmFyOiAndGFibGVzYXctdG9vbGJhcidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtb2RlczogWyAnc3RhY2snLCAnc3dpcGUnLCAnY29sdW1udG9nZ2xlJyBdLFxuICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24oIHRhYmxlICkge1xuICAgICAgICAgICAgICAgIHZhciAkdGFibGUgPSAkKCB0YWJsZSApLFxuICAgICAgICAgICAgICAgICAgICBpZ25vcmVNb2RlID0gJHRhYmxlLmF0dHIoIFMuYXR0cmlidXRlcy5leGNsdWRlTW9kZSApLFxuICAgICAgICAgICAgICAgICAgICAkdG9vbGJhciA9ICR0YWJsZS5wcmV2KCkuZmlsdGVyKCAnLnRhYmxlc2F3LWJhcicgKSxcbiAgICAgICAgICAgICAgICAgICAgbW9kZVZhbCA9ICcnLFxuICAgICAgICAgICAgICAgICAgICAkc3dpdGNoZXIgPSAkKCAnPGRpdj4nICkuYWRkQ2xhc3MoIFMuY2xhc3Nlcy5tYWluICsgJyAnICsgUy5jbGFzc2VzLnRvb2xiYXIgKTtcblxuICAgICAgICAgICAgICAgIHZhciBodG1sID0gWyAnPGxhYmVsPicgKyBUYWJsZXNhdy5pMThuLmNvbHVtbnMgKyAnOicgXSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YU1vZGUgPSAkdGFibGUuYXR0ciggJ2RhdGEtdGFibGVzYXctbW9kZScgKSxcbiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZDtcblxuICAgICAgICAgICAgICAgIGh0bWwucHVzaCggJzxzcGFuIGNsYXNzPVwiYnRuXCI+PHNlbGVjdD4nICk7XG4gICAgICAgICAgICAgICAgZm9yKCB2YXIgaj0wLCBrID0gUy5tb2Rlcy5sZW5ndGg7IGo8azsgaisrICkge1xuICAgICAgICAgICAgICAgICAgICBpZiggaWdub3JlTW9kZSAmJiBpZ25vcmVNb2RlLnRvTG93ZXJDYXNlKCkgPT09IFMubW9kZXNbIGogXSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZCA9IGRhdGFNb2RlID09PSBTLm1vZGVzWyBqIF07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYoIGlzU2VsZWN0ZWQgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlVmFsID0gUy5tb2Rlc1sgaiBdO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaHRtbC5wdXNoKCAnPG9wdGlvbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgKCBpc1NlbGVjdGVkID8gJyBzZWxlY3RlZCcgOiAnJyApICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgdmFsdWU9XCInICsgUy5tb2Rlc1sgaiBdICsgJ1wiPicgKyBUYWJsZXNhdy5pMThuLm1vZGVzWyBqIF0gKyAnPC9vcHRpb24+JyApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBodG1sLnB1c2goICc8L3NlbGVjdD48L3NwYW4+PC9sYWJlbD4nICk7XG5cbiAgICAgICAgICAgICAgICAkc3dpdGNoZXIuaHRtbCggaHRtbC5qb2luKCAnJyApICk7XG5cbiAgICAgICAgICAgICAgICB2YXIgJG90aGVyVG9vbGJhckl0ZW1zID0gJHRvb2xiYXIuZmluZCggJy50YWJsZXNhdy1hZHZhbmNlJyApLmVxKCAwICk7XG4gICAgICAgICAgICAgICAgaWYoICRvdGhlclRvb2xiYXJJdGVtcy5sZW5ndGggKSB7XG4gICAgICAgICAgICAgICAgICAgICRzd2l0Y2hlci5pbnNlcnRCZWZvcmUoICRvdGhlclRvb2xiYXJJdGVtcyApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICRzd2l0Y2hlci5hcHBlbmRUbyggJHRvb2xiYXIgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAkc3dpdGNoZXIuZmluZCggJy5idG4nICkudGFibGVzYXdidG4oKTtcbiAgICAgICAgICAgICAgICAkc3dpdGNoZXIuZmluZCggJ3NlbGVjdCcgKS5vbiggJ2NoYW5nZScsIFMub25Nb2RlQ2hhbmdlICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25Nb2RlQ2hhbmdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHQgPSAkKCB0aGlzICksXG4gICAgICAgICAgICAgICAgICAgICRzd2l0Y2hlciA9ICR0LmNsb3Nlc3QoICcuJyArIFMuY2xhc3Nlcy5tYWluICksXG4gICAgICAgICAgICAgICAgICAgICR0YWJsZSA9ICR0LmNsb3Nlc3QoICcudGFibGVzYXctYmFyJyApLm5leHQoKS5lcSggMCApLFxuICAgICAgICAgICAgICAgICAgICB2YWwgPSAkdC52YWwoKTtcblxuICAgICAgICAgICAgICAgICRzd2l0Y2hlci5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAkdGFibGUuZGF0YSggJ3RhYmxlc2F3JyApLmRlc3Ryb3koKTtcblxuICAgICAgICAgICAgICAgICR0YWJsZS5hdHRyKCAnZGF0YS10YWJsZXNhdy1tb2RlJywgdmFsICk7XG4gICAgICAgICAgICAgICAgJHRhYmxlLnRhYmxlc2F3KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgJCggd2luLmRvY3VtZW50ICkub24oIFwidGFibGVzYXdjcmVhdGVcIiwgZnVuY3Rpb24oIGUsIFRhYmxlc2F3ICkge1xuICAgICAgICAgICAgaWYoIFRhYmxlc2F3LiR0YWJsZS5pcyggUy5zZWxlY3RvcnMuaW5pdCApICkge1xuICAgICAgICAgICAgICAgIFMuaW5pdCggVGFibGVzYXcudGFibGUgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICB9KSgpO1xufSkpOyIsIlxuJChkb2N1bWVudCkuZm91bmRhdGlvbigpO1xuXG4kKCBcIiN0b2dnbGUtc2lkZWJhclwiICkuY2xpY2soZnVuY3Rpb24oKSB7XG4gICQoJyNvZmZDYW52YXMnKS50b2dnbGVDbGFzcygnaXMtb3BlbicpO1xufSk7XG5cblxuJCgnLm1hc29ucnktZ3JpZCcpLm1hc29ucnkoe1xuICBpdGVtU2VsZWN0b3I6ICcuZ3JpZC1pdGVtJ1xufSk7XG5cbi8vIERhdGEgVml6IENvbG9yc1xuXG52YXIgY29sb3JEYXRhID0gW107XG4kLmVhY2goWzAsIDEsIDIsIDMsIDQsIDUsIDZdLCBmdW5jdGlvbihpZHgpIHsgY29sb3JEYXRhLnB1c2goJCgnLmNvbG9yLWRhdGEtJyArIChpZHggKyAxKSkuY3NzKCdmaWxsJykpIH0pO1xuXG4vLyBFbmQgRGF0YSBWaXogQ29sb3JzXG5cbiQoJ2JvZHknKS5vbigndG91Y2hlbmQnLCBmdW5jdGlvbigpIHtcbiAgJCgnLnNpZGUtYmFyLW1haW4nKS5jc3MoJ3dpZHRoJyAsICc0NXB4Jyk7XG59KTtcblxuJCgnLnNpZGUtYmFyLW1haW4nKS5vbigndG91Y2hlbmQnLCBmdW5jdGlvbihlKSB7XG4gIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICQodGhpcykuY3NzKCd3aWR0aCcsJzI1MHB4Jyk7XG59KTtcblxuJCh3aW5kb3cpLnNjcm9sbChmdW5jdGlvbigpIHtcbiAgICB2YXIgc2Nyb2xsID0gJCh3aW5kb3cpLnNjcm9sbFRvcCgpO1xuICAgIGlmKHNjcm9sbCA+PSA1MCkge1xuICAgICAgICAkKFwiLnNlYXJjaC1ib3hcIikuYWRkQ2xhc3MoXCJzZWFyY2gtYm94LXNtYWxsZXJcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgJChcIi5zZWFyY2gtYm94XCIpLnJlbW92ZUNsYXNzKFwic2VhcmNoLWJveC1zbWFsbGVyXCIpO1xuICAgIH1cbn0pO1xuXG4kKHdpbmRvdykuc2Nyb2xsKGZ1bmN0aW9uKCkge1xuICAgIHZhciBzY3JvbGwgPSAkKHdpbmRvdykuc2Nyb2xsVG9wKCk7XG4gICAgaWYoc2Nyb2xsID49IDUwKSB7XG4gICAgICAgICQoXCIuaGVscC1jb250ZW50XCIpLmFkZENsYXNzKFwiaGVscC1wdXNoLXRvcFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAkKFwiLmhlbHAtY29udGVudFwiKS5yZW1vdmVDbGFzcyhcImhlbHAtcHVzaC10b3BcIik7XG4gICAgfVxufSk7XG4iXX0=
